ngx-tethys 18.1.0-next.0 → 18.1.0-next.1
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/CHANGELOG.md +9 -0
- package/action/action.component.d.ts +1 -2
- package/affix/affix.component.d.ts +2 -4
- package/anchor/anchor-link.component.d.ts +2 -4
- package/anchor/anchor.component.d.ts +1 -4
- package/arrow-switcher/arrow-switcher.component.d.ts +1 -2
- package/autocomplete/autocomplete.component.d.ts +1 -2
- package/autocomplete/autocomplete.trigger.directive.d.ts +3 -5
- package/autocomplete/overlay/autocomplete-container.component.d.ts +4 -4
- package/autocomplete/overlay/autocomplete.service.d.ts +3 -5
- package/avatar/avatar.component.d.ts +1 -3
- package/avatar/avatar.pipe.d.ts +0 -2
- package/back-top/back-top.component.d.ts +2 -4
- package/badge/badge.component.d.ts +5 -14
- package/breadcrumb/breadcrumb-item.component.d.ts +1 -2
- package/breadcrumb/breadcrumb.component.d.ts +1 -2
- package/button/button.component.d.ts +1 -2
- package/calendar/calendar-header.component.d.ts +1 -2
- package/calendar/calendar.component.d.ts +1 -2
- package/carousel/carousel-item.directive.d.ts +1 -2
- package/carousel/carousel.component.d.ts +1 -4
- package/carousel/carousel.service.d.ts +1 -2
- package/cascader/cascader.component.d.ts +4 -4
- package/checkbox/checkbox.component.d.ts +0 -2
- package/collapse/collapse-item.component.d.ts +2 -4
- package/color-picker/color-picker-panel.component.d.ts +2 -3
- package/color-picker/color-picker.component.d.ts +2 -4
- package/color-picker/coordinates.directive.d.ts +1 -2
- package/color-picker/parts/alpha/alpha.component.d.ts +1 -2
- package/color-picker/parts/hue/hue.component.d.ts +1 -2
- package/color-picker/parts/saturation/saturation.component.d.ts +1 -2
- package/copy/copy.directive.d.ts +0 -2
- package/core/click-positioner.d.ts +0 -2
- package/core/scroll.d.ts +1 -2
- package/core/update-host-class.service.d.ts +1 -2
- package/date-picker/abstract-picker.component.d.ts +1 -1
- package/date-picker/abstract-picker.directive.d.ts +2 -3
- package/date-picker/base-picker.component.d.ts +2 -3
- package/date-picker/date-picker.component.d.ts +2 -2
- package/date-picker/date-picker.directive.d.ts +1 -3
- package/date-picker/date-picker.service.d.ts +2 -2
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -2
- package/date-picker/lib/calendar/calendar-header.component.d.ts +0 -1
- package/date-picker/lib/date/date-header.component.d.ts +0 -3
- package/date-picker/lib/date/date-table.component.d.ts +1 -3
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -2
- package/date-picker/lib/decade/decade-header.component.d.ts +1 -1
- package/date-picker/lib/month/month-header.component.d.ts +0 -3
- package/date-picker/lib/month/month-table.component.d.ts +1 -2
- package/date-picker/lib/popups/date-popup.component.d.ts +1 -3
- package/date-picker/lib/popups/inner-popup.component.d.ts +1 -4
- package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -2
- package/date-picker/lib/year/year-header.component.d.ts +0 -1
- package/date-picker/month-picker.component.d.ts +2 -2
- package/date-picker/picker.component.d.ts +1 -3
- package/date-picker/picker.pipes.d.ts +0 -3
- package/date-picker/quarter-picker.component.d.ts +2 -2
- package/date-picker/range-picker.component.d.ts +2 -2
- package/date-picker/range-picker.directive.d.ts +2 -3
- package/date-picker/week-picker.component.d.ts +2 -2
- package/date-picker/year-picker.component.d.ts +2 -2
- package/date-range/date-range.component.d.ts +1 -3
- package/date-range/optional-dates/optional-dates.component.d.ts +0 -2
- package/dialog/body/dialog-body.component.d.ts +0 -2
- package/dialog/confirm/confirm.component.d.ts +2 -3
- package/dialog/dialog-container.component.d.ts +4 -5
- package/dialog/dialog.service.d.ts +4 -4
- package/dialog/footer/dialog-footer.component.d.ts +2 -2
- package/dialog/header/dialog-header.component.d.ts +2 -6
- package/dot/dot.component.d.ts +1 -2
- package/drag-drop/drag-content.directive.d.ts +2 -3
- package/drag-drop/drag-handle.directive.d.ts +2 -3
- package/drag-drop/drag.directive.d.ts +4 -5
- package/drag-drop/drop-container.directive.d.ts +6 -3
- package/dropdown/dropdown-active.directive.d.ts +3 -4
- package/dropdown/dropdown-menu-item.directive.d.ts +1 -2
- package/dropdown/dropdown-submenu.component.d.ts +1 -3
- package/dropdown/dropdown.directive.d.ts +3 -5
- package/empty/empty.component.d.ts +6 -6
- package/esm2022/action/action.component.mjs +18 -18
- package/esm2022/affix/affix.component.mjs +11 -14
- package/esm2022/anchor/anchor-link.component.mjs +9 -10
- package/esm2022/anchor/anchor.component.mjs +11 -16
- package/esm2022/arrow-switcher/arrow-switcher.component.mjs +22 -22
- package/esm2022/autocomplete/autocomplete.component.mjs +7 -7
- package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +30 -37
- package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +11 -15
- package/esm2022/autocomplete/overlay/autocomplete.service.mjs +14 -21
- package/esm2022/avatar/avatar.component.mjs +24 -25
- package/esm2022/avatar/avatar.pipe.mjs +6 -7
- package/esm2022/back-top/back-top.component.mjs +11 -15
- package/esm2022/badge/badge.component.mjs +6 -6
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
- package/esm2022/breadcrumb/breadcrumb.component.mjs +12 -12
- package/esm2022/button/button.component.mjs +12 -12
- package/esm2022/calendar/calendar-header.component.mjs +12 -12
- package/esm2022/calendar/calendar.component.mjs +12 -12
- package/esm2022/carousel/carousel-item.directive.mjs +7 -6
- package/esm2022/carousel/carousel.component.mjs +10 -12
- package/esm2022/carousel/carousel.service.mjs +7 -9
- package/esm2022/cascader/cascader.component.mjs +11 -16
- package/esm2022/checkbox/checkbox.component.mjs +7 -9
- package/esm2022/collapse/collapse-item.component.mjs +18 -21
- package/esm2022/color-picker/color-picker-panel.component.mjs +11 -12
- package/esm2022/color-picker/color-picker.component.mjs +10 -11
- package/esm2022/color-picker/coordinates.directive.mjs +10 -10
- package/esm2022/color-picker/parts/alpha/alpha.component.mjs +6 -6
- package/esm2022/color-picker/parts/hue/hue.component.mjs +6 -6
- package/esm2022/color-picker/parts/saturation/saturation.component.mjs +9 -9
- package/esm2022/copy/copy.directive.mjs +8 -12
- package/esm2022/core/click-positioner.mjs +6 -7
- package/esm2022/core/scroll.mjs +7 -9
- package/esm2022/core/store/store.mjs +1 -1
- package/esm2022/core/update-host-class.service.mjs +6 -6
- package/esm2022/date-picker/abstract-picker.component.mjs +5 -5
- package/esm2022/date-picker/abstract-picker.directive.mjs +42 -44
- package/esm2022/date-picker/base-picker.component.mjs +26 -26
- package/esm2022/date-picker/date-picker.component.mjs +6 -6
- package/esm2022/date-picker/date-picker.directive.mjs +6 -8
- package/esm2022/date-picker/date-picker.service.mjs +6 -10
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -5
- package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +6 -7
- package/esm2022/date-picker/lib/date/date-header.component.mjs +3 -9
- package/esm2022/date-picker/lib/date/date-table.component.mjs +7 -9
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +12 -12
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +5 -8
- package/esm2022/date-picker/lib/month/month-header.component.mjs +3 -9
- package/esm2022/date-picker/lib/month/month-table.component.mjs +6 -7
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +12 -13
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +12 -13
- package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +6 -7
- package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -9
- package/esm2022/date-picker/month-picker.component.mjs +6 -7
- package/esm2022/date-picker/picker.component.mjs +21 -22
- package/esm2022/date-picker/picker.pipes.mjs +10 -11
- package/esm2022/date-picker/quarter-picker.component.mjs +6 -7
- package/esm2022/date-picker/range-picker.component.mjs +6 -7
- package/esm2022/date-picker/range-picker.directive.mjs +6 -8
- package/esm2022/date-picker/week-picker.component.mjs +6 -7
- package/esm2022/date-picker/year-picker.component.mjs +6 -7
- package/esm2022/date-range/date-range.component.mjs +14 -15
- package/esm2022/date-range/optional-dates/optional-dates.component.mjs +8 -9
- package/esm2022/dialog/body/dialog-body.component.mjs +11 -12
- package/esm2022/dialog/confirm/confirm.component.mjs +10 -14
- package/esm2022/dialog/dialog-container.component.mjs +13 -18
- package/esm2022/dialog/dialog.service.mjs +10 -17
- package/esm2022/dialog/footer/dialog-footer.component.mjs +7 -11
- package/esm2022/dialog/header/dialog-header.component.mjs +14 -19
- package/esm2022/dot/dot.component.mjs +7 -7
- package/esm2022/drag-drop/drag-content.directive.mjs +7 -9
- package/esm2022/drag-drop/drag-handle.directive.mjs +7 -9
- package/esm2022/drag-drop/drag.directive.mjs +13 -16
- package/esm2022/drag-drop/drop-container.directive.mjs +13 -13
- package/esm2022/dropdown/dropdown-active.directive.mjs +9 -12
- package/esm2022/dropdown/dropdown-menu-item.directive.mjs +12 -12
- package/esm2022/dropdown/dropdown-submenu.component.mjs +9 -10
- package/esm2022/dropdown/dropdown.directive.mjs +12 -10
- package/esm2022/empty/empty.component.mjs +14 -17
- package/esm2022/flexible-text/flexible-text.component.mjs +16 -17
- package/esm2022/form/form-group-error/form-group-error.component.mjs +9 -12
- package/esm2022/form/form-group-label.directive.mjs +9 -10
- package/esm2022/form/form-group.component.mjs +15 -19
- package/esm2022/form/form-submit.directive.mjs +6 -7
- package/esm2022/form/form-validator-loader.mjs +1 -1
- package/esm2022/form/form-validator.service.mjs +12 -13
- package/esm2022/form/form.directive.mjs +11 -16
- package/esm2022/form/from-group-footer/form-group-footer.component.mjs +10 -16
- package/esm2022/form/validator/unique-validator.directive.mjs +7 -10
- package/esm2022/fullscreen/fullscreen.component.mjs +10 -11
- package/esm2022/fullscreen/fullscreen.service.mjs +7 -10
- package/esm2022/grid/thy-col.directive.mjs +9 -14
- package/esm2022/grid/thy-grid-item.component.mjs +8 -14
- package/esm2022/grid/thy-grid.component.mjs +7 -8
- package/esm2022/guider/guider.directive.mjs +8 -9
- package/esm2022/guider/guider.service.mjs +12 -19
- package/esm2022/icon/icon-registry.mjs +11 -16
- package/esm2022/icon/icon.component.mjs +8 -9
- package/esm2022/image/image-group.component.mjs +7 -7
- package/esm2022/image/image.directive.mjs +11 -12
- package/esm2022/image/image.service.mjs +8 -14
- package/esm2022/image/preview/image-preview.component.mjs +34 -38
- package/esm2022/input/input-count.component.mjs +7 -10
- package/esm2022/input/input-group.component.mjs +12 -13
- package/esm2022/input/input-search.component.mjs +7 -7
- package/esm2022/input/input.component.mjs +14 -14
- package/esm2022/input/input.directive.mjs +12 -17
- package/esm2022/input-number/input-number.component.mjs +6 -6
- package/esm2022/layout/sidebar.component.mjs +45 -51
- package/esm2022/list/selection/selection-list.mjs +25 -25
- package/esm2022/loading/loading.component.mjs +8 -8
- package/esm2022/mention/mention.directive.mjs +9 -14
- package/esm2022/mention/suggestions/suggestions.component.mjs +8 -9
- package/esm2022/menu/group/menu-group.component.mjs +34 -35
- package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -16
- package/esm2022/menu/item/menu-item.component.mjs +6 -6
- package/esm2022/message/abstract/abstract-message-container.component.mjs +5 -5
- package/esm2022/message/abstract/abstract-message.component.mjs +6 -6
- package/esm2022/message/message-container.component.mjs +9 -11
- package/esm2022/message/message-queue.service.mjs +6 -8
- package/esm2022/message/message.component.mjs +7 -7
- package/esm2022/message/message.service.mjs +10 -11
- package/esm2022/nav/icon-nav/icon-nav.component.mjs +6 -6
- package/esm2022/nav/nav-ink-bar.directive.mjs +9 -14
- package/esm2022/nav/nav-item.directive.mjs +8 -11
- package/esm2022/nav/nav.component.mjs +32 -33
- package/esm2022/nav/nav.pipe.mjs +6 -7
- package/esm2022/notify/notify-container.component.mjs +8 -11
- package/esm2022/notify/notify-queue.service.mjs +6 -8
- package/esm2022/notify/notify.component.mjs +7 -7
- package/esm2022/notify/notify.service.mjs +11 -12
- package/esm2022/pagination/pagination.component.mjs +38 -43
- package/esm2022/pagination/pagination.pipe.mjs +6 -7
- package/esm2022/popover/header/popover-header.component.mjs +12 -14
- package/esm2022/popover/popover-container.component.mjs +11 -13
- package/esm2022/popover/popover.directive.mjs +13 -12
- package/esm2022/popover/popover.service.mjs +14 -26
- package/esm2022/progress/progress-strip.component.mjs +10 -13
- package/esm2022/property/property-item.component.mjs +10 -13
- package/esm2022/property-operation/property-operation.component.mjs +24 -25
- package/esm2022/radio/button/radio-button.component.mjs +9 -15
- package/esm2022/radio/group/radio-group.component.mjs +17 -17
- package/esm2022/radio/radio.component.mjs +8 -14
- package/esm2022/rate/rate.component.mjs +6 -6
- package/esm2022/resizable/resizable.directive.mjs +10 -12
- package/esm2022/resizable/resizable.service.mjs +7 -9
- package/esm2022/resizable/resize-handle.component.mjs +7 -8
- package/esm2022/segment/segment-item.component.mjs +12 -15
- package/esm2022/segment/segment.component.mjs +26 -26
- package/esm2022/select/custom-select/custom-select.component.mjs +14 -28
- package/esm2022/select/native-select/native-select.component.mjs +6 -6
- package/esm2022/shared/base-form-check.component.mjs +7 -8
- package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +7 -7
- package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -10
- package/esm2022/shared/directives/thy-contextmenu.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-enter.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-scroll.directive.mjs +21 -21
- package/esm2022/shared/directives/thy-show.mjs +11 -11
- package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +7 -5
- package/esm2022/shared/directives/view-outlet.directive.mjs +7 -7
- package/esm2022/shared/ng-transclude.directive.mjs +6 -5
- package/esm2022/shared/option/group/option-group.component.mjs +10 -10
- package/esm2022/shared/option/list-option/list-option.component.mjs +12 -19
- package/esm2022/shared/option/option.component.mjs +9 -19
- package/esm2022/shared/select/select-control/select-control.component.mjs +23 -23
- package/esm2022/skeleton/skeleton-circle.component.mjs +7 -15
- package/esm2022/skeleton/skeleton-rectangle.component.mjs +7 -15
- package/esm2022/slide/drawer/drawer-container.directive.mjs +6 -6
- package/esm2022/slide/slide-container.component.mjs +12 -16
- package/esm2022/slide/slide-header/slide-header.component.mjs +10 -11
- package/esm2022/slide/slide-ref.service.mjs +1 -1
- package/esm2022/slide/slide.service.mjs +8 -12
- package/esm2022/slider/slider.component.mjs +8 -8
- package/esm2022/space/space.component.mjs +13 -13
- package/esm2022/statistic/statistic.component.mjs +20 -20
- package/esm2022/stepper/step.component.mjs +6 -11
- package/esm2022/stepper/stepper-button.directive.mjs +10 -11
- package/esm2022/strength/strength.component.mjs +11 -12
- package/esm2022/switch/switch.component.mjs +6 -6
- package/esm2022/table/table-column.component.mjs +58 -63
- package/esm2022/table/table-skeleton.component.mjs +32 -32
- package/esm2022/table/table.component.mjs +16 -24
- package/esm2022/tabs/tabs.component.mjs +19 -19
- package/esm2022/tag/tag.component.mjs +22 -22
- package/esm2022/time-picker/inner/inner-time-picker.component.mjs +10 -9
- package/esm2022/time-picker/time-picker-panel.component.mjs +27 -27
- package/esm2022/time-picker/time-picker.component.mjs +29 -29
- package/esm2022/timeline/timeline-item.component.mjs +12 -13
- package/esm2022/timeline/timeline.component.mjs +7 -8
- package/esm2022/tooltip/tooltip.component.mjs +14 -14
- package/esm2022/tooltip/tooltip.directive.mjs +11 -10
- package/esm2022/tooltip/tooltip.service.mjs +9 -13
- package/esm2022/transfer/transfer-list.component.mjs +6 -6
- package/esm2022/tree/tree-node.component.mjs +13 -17
- package/esm2022/tree/tree.component.mjs +86 -90
- package/esm2022/tree-select/tree-select.component.mjs +22 -27
- package/esm2022/typography/bg-color.directive.mjs +9 -9
- package/esm2022/typography/text-color.directive.mjs +9 -9
- package/esm2022/upload/file-drop.directive.mjs +1 -1
- package/esm2022/upload/file-select-base.mjs +5 -6
- package/esm2022/upload/file-select.component.mjs +4 -3
- package/esm2022/upload/upload.service.mjs +6 -7
- package/esm2022/version.mjs +2 -2
- package/esm2022/watermark/watermark.directive.mjs +12 -12
- package/fesm2022/ngx-tethys-action.mjs +17 -17
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +12 -14
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +19 -22
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +21 -21
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +59 -71
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +27 -27
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +12 -15
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +5 -5
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +16 -16
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +11 -11
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +21 -21
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +20 -21
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +11 -15
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +6 -7
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +17 -19
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +44 -42
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +8 -12
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +14 -16
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +192 -216
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +20 -20
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +56 -72
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +6 -6
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +33 -37
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +39 -37
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +15 -15
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +16 -17
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +67 -82
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +14 -17
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +20 -29
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +17 -23
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +18 -22
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +57 -62
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +5 -5
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +46 -53
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +45 -50
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +24 -24
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +7 -7
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +16 -21
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +51 -52
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +33 -35
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +55 -64
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +26 -29
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +44 -49
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +48 -54
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +9 -12
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +24 -24
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +11 -11
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +29 -35
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +5 -5
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +22 -25
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +35 -38
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +20 -34
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +128 -143
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +11 -25
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +30 -34
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +7 -7
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +13 -13
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +19 -19
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +13 -18
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +11 -11
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +5 -5
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +103 -115
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +19 -19
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +21 -21
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +61 -58
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +16 -16
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +32 -33
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +5 -5
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +23 -28
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +96 -102
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +15 -15
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +11 -12
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +12 -12
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/flexible-text/flexible-text.component.d.ts +1 -3
- package/form/form-group-error/form-group-error.component.d.ts +1 -3
- package/form/form-group-label.directive.d.ts +0 -2
- package/form/form-group.component.d.ts +1 -4
- package/form/form-submit.directive.d.ts +0 -2
- package/form/form-validator.service.d.ts +0 -2
- package/form/form.directive.d.ts +4 -4
- package/form/from-group-footer/form-group-footer.component.d.ts +2 -4
- package/form/validator/unique-validator.directive.d.ts +1 -4
- package/fullscreen/fullscreen.component.d.ts +0 -2
- package/fullscreen/fullscreen.service.d.ts +0 -2
- package/grid/thy-col.directive.d.ts +1 -2
- package/grid/thy-grid-item.component.d.ts +2 -4
- package/grid/thy-grid.component.d.ts +1 -3
- package/guider/guider.directive.d.ts +1 -3
- package/guider/guider.service.d.ts +0 -7
- package/icon/icon-registry.d.ts +1 -3
- package/icon/icon.component.d.ts +1 -3
- package/image/image-group.component.d.ts +1 -2
- package/image/image.directive.d.ts +1 -3
- package/image/image.service.d.ts +2 -2
- package/image/preview/image-preview.component.d.ts +1 -4
- package/input/input-count.component.d.ts +3 -4
- package/input/input-group.component.d.ts +1 -3
- package/input/input-search.component.d.ts +2 -2
- package/input/input.component.d.ts +1 -2
- package/input/input.directive.d.ts +2 -3
- package/input-number/input-number.component.d.ts +2 -2
- package/layout/sidebar.component.d.ts +44 -13
- package/list/selection/selection-list.d.ts +1 -2
- package/loading/loading.component.d.ts +0 -2
- package/loading/styles/loading.scss +3 -1
- package/mention/mention.directive.d.ts +4 -5
- package/mention/suggestions/suggestions.component.d.ts +2 -3
- package/menu/group/menu-group.component.d.ts +12 -26
- package/menu/item/action/menu-item-action.component.d.ts +2 -3
- package/menu/item/menu-item.component.d.ts +1 -2
- package/message/abstract/abstract-message-container.component.d.ts +1 -2
- package/message/abstract/abstract-message.component.d.ts +2 -2
- package/message/message-container.component.d.ts +1 -3
- package/message/message-queue.service.d.ts +1 -2
- package/message/message.component.d.ts +1 -3
- package/message/message.service.d.ts +3 -5
- package/nav/icon-nav/icon-nav.component.d.ts +2 -2
- package/nav/nav-ink-bar.directive.d.ts +2 -4
- package/nav/nav-item.directive.d.ts +3 -4
- package/nav/nav.component.d.ts +1 -3
- package/nav/nav.pipe.d.ts +0 -2
- package/notify/notify-container.component.d.ts +1 -3
- package/notify/notify-queue.service.d.ts +1 -2
- package/notify/notify.component.d.ts +2 -3
- package/notify/notify.service.d.ts +1 -4
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +7 -19
- package/pagination/pagination.pipe.d.ts +0 -2
- package/popover/header/popover-header.component.d.ts +0 -3
- package/popover/popover-container.component.d.ts +3 -4
- package/popover/popover.directive.d.ts +2 -5
- package/popover/popover.service.d.ts +4 -6
- package/progress/progress-strip.component.d.ts +0 -1
- package/property/property-item.component.d.ts +6 -6
- package/property-operation/property-operation.component.d.ts +1 -3
- package/radio/button/radio-button.component.d.ts +2 -5
- package/radio/group/radio-group.component.d.ts +1 -2
- package/radio/radio.component.d.ts +2 -3
- package/rate/rate.component.d.ts +2 -2
- package/resizable/resizable.directive.d.ts +2 -4
- package/resizable/resizable.service.d.ts +2 -2
- package/resizable/resize-handle.component.d.ts +1 -3
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +4 -5
- package/segment/segment.component.d.ts +1 -2
- package/select/custom-select/custom-select.component.d.ts +5 -5
- package/select/native-select/native-select.component.d.ts +1 -1
- package/shared/base-form-check.component.d.ts +1 -1
- package/shared/directives/string-or-template-outlet.directive.d.ts +1 -2
- package/shared/directives/thy-autofocus.directive.d.ts +0 -2
- package/shared/directives/thy-contextmenu.directive.d.ts +1 -2
- package/shared/directives/thy-ctrl-enter.directive.d.ts +1 -2
- package/shared/directives/thy-enter.directive.d.ts +1 -2
- package/shared/directives/thy-scroll.directive.d.ts +1 -2
- package/shared/directives/thy-show.d.ts +1 -2
- package/shared/directives/thy-stop-propagation.directive.d.ts +2 -2
- package/shared/directives/view-outlet.directive.d.ts +1 -2
- package/shared/ng-transclude.directive.d.ts +1 -1
- package/shared/option/group/option-group.component.d.ts +1 -2
- package/shared/option/list-option/list-option.component.d.ts +5 -10
- package/shared/option/option.component.d.ts +5 -5
- package/shared/select/select-control/select-control.component.d.ts +1 -2
- package/skeleton/skeleton-circle.component.d.ts +1 -4
- package/skeleton/skeleton-rectangle.component.d.ts +5 -5
- package/slide/drawer/drawer-container.directive.d.ts +1 -2
- package/slide/slide-container.component.d.ts +3 -4
- package/slide/slide-header/slide-header.component.d.ts +0 -2
- package/slide/slide.service.d.ts +3 -3
- package/slider/slider.component.d.ts +2 -2
- package/space/space.component.d.ts +1 -2
- package/statistic/statistic.component.d.ts +1 -2
- package/stepper/step.component.d.ts +1 -2
- package/stepper/stepper-button.directive.d.ts +0 -3
- package/strength/strength.component.d.ts +0 -1
- package/switch/switch.component.d.ts +1 -1
- package/table/table-column.component.d.ts +32 -8
- package/table/table-skeleton.component.d.ts +3 -12
- package/table/table.component.d.ts +3 -5
- package/tabs/tabs.component.d.ts +1 -2
- package/tag/tag.component.d.ts +7 -3
- package/time-picker/inner/inner-time-picker.component.d.ts +2 -4
- package/time-picker/time-picker-panel.component.d.ts +1 -2
- package/time-picker/time-picker.component.d.ts +1 -2
- package/timeline/timeline-item.component.d.ts +1 -3
- package/timeline/timeline.component.d.ts +1 -3
- package/tooltip/tooltip.component.d.ts +1 -2
- package/tooltip/tooltip.directive.d.ts +6 -9
- package/tooltip/tooltip.service.d.ts +2 -4
- package/transfer/transfer-list.component.d.ts +1 -2
- package/tree/tree-node.component.d.ts +5 -21
- package/tree/tree.component.d.ts +1 -2
- package/tree-select/tree-select.component.d.ts +5 -6
- package/typography/bg-color.directive.d.ts +0 -2
- package/typography/text-color.directive.d.ts +1 -2
- package/upload/file-select-base.d.ts +2 -3
- package/upload/file-select.component.d.ts +1 -0
- package/upload/upload.service.d.ts +0 -2
- package/watermark/watermark.directive.d.ts +1 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Input, inject } from '@angular/core';
|
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { ThyButton } from 'ngx-tethys/button';
|
|
5
5
|
import { ThyIcon } from 'ngx-tethys/icon';
|
|
@@ -11,6 +11,14 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
* @private
|
|
12
12
|
*/
|
|
13
13
|
export class DateCarousel {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
16
|
+
this.className = 'thy-date-picker-advanced-carousel';
|
|
17
|
+
this.selectableData = {};
|
|
18
|
+
this.selectedValue = [];
|
|
19
|
+
this.initialized = false;
|
|
20
|
+
this.selectedValueChange$ = new Subject();
|
|
21
|
+
}
|
|
14
22
|
set defaultValue(value) {
|
|
15
23
|
this.dateGranularity = value.dateGranularity;
|
|
16
24
|
this.buildSelectableData(value.begin);
|
|
@@ -23,14 +31,6 @@ export class DateCarousel {
|
|
|
23
31
|
}
|
|
24
32
|
this.initialized = true;
|
|
25
33
|
}
|
|
26
|
-
constructor(cdr) {
|
|
27
|
-
this.cdr = cdr;
|
|
28
|
-
this.className = 'thy-date-picker-advanced-carousel';
|
|
29
|
-
this.selectableData = {};
|
|
30
|
-
this.selectedValue = [];
|
|
31
|
-
this.initialized = false;
|
|
32
|
-
this.selectedValueChange$ = new Subject();
|
|
33
|
-
}
|
|
34
34
|
ngOnInit() {
|
|
35
35
|
this.selectedValueChange$.subscribe(() => {
|
|
36
36
|
if (this.selectedValue.length) {
|
|
@@ -356,7 +356,7 @@ export class DateCarousel {
|
|
|
356
356
|
ngOnDestroy() {
|
|
357
357
|
this.selectedValueChange$.complete();
|
|
358
358
|
}
|
|
359
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DateCarousel, deps: [
|
|
359
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DateCarousel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
360
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: DateCarousel, isStandalone: true, selector: "date-carousel", inputs: { activeDate: "activeDate" }, host: { properties: { "class": "this.className" } }, providers: [
|
|
361
361
|
{
|
|
362
362
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -374,10 +374,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
374
374
|
useExisting: forwardRef(() => DateCarousel)
|
|
375
375
|
}
|
|
376
376
|
], standalone: true, imports: [NgTemplateOutlet, ThyButton, ThyIcon, NgClass, DatePickerAdvancedShowYearTipPipe], template: "<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: '\u5E74\u4EFD', type: 'year', selectableData: selectableData.year }\"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: '\u5B63\u5EA6', type: 'quarter', selectableData: selectableData.quarter }\"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: '\u6708\u4EFD', type: 'month', selectableData: selectableData.month }\"></ng-container>\n\n<ng-template #carouselItem let-title=\"title\" let-selectableData=\"selectableData\" let-type=\"type\">\n <div class=\"carousel-item carousel-item-{{ type }}\">\n <p class=\"carousel-item-title\">{{ title }}</p>\n <div class=\"carousel-item-content\">\n <button thyButton=\"outline-default\" thySize=\"sm\" class=\"right-space\" (click)=\"prevClick(type)\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </button>\n @for (item of selectableData; track $index) {\n <div\n class=\"selectable-button right-space\"\n (click)=\"selectDate(type, item)\"\n (mouseenter)=\"onMouseenter($event, type, item)\"\n (mouseleave)=\"onMouseleave($event, type, item)\"\n [ngClass]=\"item.classMap\">\n @if (item | showYearTip: type) {\n <span class=\"year-tip\">{{ item?.startValue?.getYear() }}</span>\n }\n @if (item.isInRange && isSelected(item)) {\n <thy-icon thyIconName=\"close\"></thy-icon>\n }\n @if (item.isInRange && !isSelected(item)) {\n <thy-icon thyIconName=\"plus\"></thy-icon>\n }\n @if (!item.isInRange) {\n <span>{{ item?.content }}</span>\n }\n </div>\n }\n <button thyButton=\"outline-default\" thySize=\"sm\" (click)=\"nextClick(type)\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
377
|
-
}],
|
|
377
|
+
}], propDecorators: { className: [{
|
|
378
378
|
type: HostBinding,
|
|
379
379
|
args: ['class']
|
|
380
380
|
}], activeDate: [{
|
|
381
381
|
type: Input
|
|
382
382
|
}] } });
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDekksT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR3ZFOztHQUVHO0FBZ0JILE1BQU0sT0FBTyxZQUFZO0lBS3JCLElBQUksWUFBWSxDQUFDLEtBQXlCO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsTUFB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LFlBQVk7a0dBQVosWUFBWSx1SkFWVjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQzlDO1NBQ0osMEJDekJMLDA2REEyQ0EsNENEaEJjLGdCQUFnQixvSkFBRSxTQUFTLG9MQUFFLE9BQU8sc01BQUUsT0FBTywrRUFBRSxpQ0FBaUM7OzJGQUVqRixZQUFZO2tCQWZ4QixTQUFTOytCQUVJLGVBQWUsbUJBRVIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7eUJBQzlDO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUNBQWlDLENBQUM7c0ZBR3JFLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFFWCxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5QnV0dG9uIH0gZnJvbSAnbmd4LXRldGh5cy9idXR0b24nO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZHZhbmNlZFNlbGVjdGFibGVDZWxsLCBSYW5nZUFkdmFuY2VkVmFsdWUgfSBmcm9tICcuLi8uLi9pbm5lci10eXBlcyc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQWR2YW5jZWRTaG93WWVhclRpcFBpcGUgfSBmcm9tICcuLi8uLi9waWNrZXIucGlwZXMnO1xuaW1wb3J0IHsgVGh5RGF0ZUdyYW51bGFyaXR5IH0gZnJvbSAnLi4vLi4vc3RhbmRhcmQtdHlwZXMnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdkYXRlLWNhcm91c2VsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlQ2Fyb3VzZWwpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIFRoeUJ1dHRvbiwgVGh5SWNvbiwgTmdDbGFzcywgRGF0ZVBpY2tlckFkdmFuY2VkU2hvd1llYXJUaXBQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlQ2Fyb3VzZWwgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGh5LWRhdGUtcGlja2VyLWFkdmFuY2VkLWNhcm91c2VsJztcblxuICAgIEBJbnB1dCgpIGFjdGl2ZURhdGU6IFRpbnlEYXRlO1xuXG4gICAgc2V0IGRlZmF1bHRWYWx1ZSh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gdmFsdWUuZGF0ZUdyYW51bGFyaXR5O1xuICAgICAgICB0aGlzLmJ1aWxkU2VsZWN0YWJsZURhdGEodmFsdWUuYmVnaW4pO1xuXG4gICAgICAgIGlmICh2YWx1ZS5iZWdpbiAmJiB2YWx1ZS5lbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlU2VsZWN0VmFsdWUgPSB0aGlzLmdldFNob3VsZEJlVG9nZ2xlVmFsdWUodmFsdWUuYmVnaW4sIHZhbHVlLmVuZCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCguLi5zaG91bGRCZVNlbGVjdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3QodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2VsZWN0YWJsZURhdGE6IHsgeWVhcj86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXTsgcXVhcnRlcj86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXTsgbW9udGg/OiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10gfSA9IHt9O1xuXG4gICAgZGF0ZUdyYW51bGFyaXR5OiBUaHlEYXRlR3JhbnVsYXJpdHk7XG5cbiAgICBzZWxlY3RlZFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10gPSBbXTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRWYWx1ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxSYW5nZUFkdmFuY2VkVmFsdWU+KCk7XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBSYW5nZUFkdmFuY2VkVmFsdWUpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSA9PiB2b2lkO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZFNlbGVjdGFibGVEYXRhKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXT8uc3RhcnRWYWx1ZSwgdGhpcy5kYXRlR3JhbnVsYXJpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS55ZWFyLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVHcmFudWxhcml0eTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUdyYW51bGFyaXR5OiB0aGlzLmRhdGVHcmFudWxhcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBzZWxjdGVkVmFsdWVbMF0/LnN0YXJ0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHNlbGN0ZWRWYWx1ZVtzZWxjdGVkVmFsdWUubGVuZ3RoIC0gMV0/LmVuZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgZ2V0Q2xhc3NNYXAoY2VsbDogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW2BhY3RpdmVgXTogdGhpcy5pc1NlbGVjdGVkKGNlbGwpLFxuICAgICAgICAgICAgW2BpbmRldGVybWluYXRlYF06IHRoaXMuaXNDZWxsSW5kZXRlcm1pbmF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIGNlbGwpLFxuICAgICAgICAgICAgW2B0eXBlLWFjdGl2ZWBdOiB0aGlzLmlzVHlwZUFjdGl2ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIGNlbGwpLFxuICAgICAgICAgICAgWydpbi1ob3Zlci1yYW5nZSddOiBjZWxsLmlzSW5SYW5nZSxcbiAgICAgICAgICAgIFsnb3V0LXJhbmdlJ106IGNlbGwuaXNPdXRSYW5nZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlzVHlwZUFjdGl2ZShvcmlnaW5hbFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10sIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFZhbHVlPy5sZW5ndGggJiYgb3JpZ2luYWxWYWx1ZVswXS50eXBlID09PSB2YWx1ZS50eXBlO1xuICAgIH1cblxuICAgIGlzQ2VsbEluZGV0ZXJtaW5hdGUob3JpZ2luYWxWYWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdLCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZVswXT8udHlwZSA9PT0gdmFsdWUudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWVbMF0/LnR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIW9yaWdpbmFsVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVZZWFyKHZhbHVlLnN0YXJ0VmFsdWUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICd5ZWFyJ1xuICAgICAgICAgICAgICAgICAgICA/ICEhb3JpZ2luYWxWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5zdGFydFZhbHVlLmlzU2FtZVllYXIodmFsdWUuc3RhcnRWYWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIDogISFvcmlnaW5hbFZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLnN0YXJ0VmFsdWUuaXNTYW1lUXVhcnRlcih2YWx1ZS5zdGFydFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVEYXkodmFsdWUuc3RhcnRWYWx1ZSkpICYmIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID09PSB2YWx1ZS50eXBlO1xuICAgIH1cblxuICAgIGlzU2VsZWN0RW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09IDA7XG4gICAgfVxuXG4gICAgc2VsZWN0U29ydCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRWYWx1ZS5nZXRUaW1lKCkgLSBiLnN0YXJ0VmFsdWUuZ2V0VGltZSgpKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoLi4udmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUucHVzaCguLi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdFNvcnQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgZGVzZWxlY3QoLi4udmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLmZpbHRlcihzZWxlY3RlZCA9PiAhc2VsZWN0ZWQuc3RhcnRWYWx1ZS5pc1NhbWVEYXkoaXRlbS5zdGFydFZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdFNvcnQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3QoaGlkZGVuPzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbXTtcbiAgICAgICAgaWYgKCFoaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZSQubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2hvdWxkQmVUb2dnbGVWYWx1ZShiZWdpbjogVGlueURhdGUsIGVuZDogVGlueURhdGUpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSA9IFtdO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuZGF0ZUdyYW51bGFyaXR5KSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9ICd5ZWFyJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lWWVhcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVZZWFyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVllYXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVZZWFyKGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luID0gYmVnaW4uYWRkWWVhcnMoMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlWWVhcihiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gJ21vbnRoJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lTW9udGgoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVNb250aChlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGJlZ2luLmFkZE1vbnRocygxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVNb250aChiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSAncXVhcnRlcic7XG4gICAgICAgICAgICAgICAgaWYgKGJlZ2luLmlzU2FtZVF1YXJ0ZXIoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihiZWdpbikpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICghYmVnaW4uaXNTYW1lUXVhcnRlcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGJlZ2luLmFkZFF1YXJ0ZXJzKDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBidWlsZFNlbGVjdGFibGVEYXRhKHN0YXJ0RGF0ZTogVGlueURhdGUsIGV4Y2x1ZGVHcmFudWxhcml0eT86IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBjb25zdCBidWlsZEdyYW51bGFyaXR5ID0gWyd5ZWFyJywgJ21vbnRoJywgJ3F1YXJ0ZXInXS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBleGNsdWRlR3JhbnVsYXJpdHkpO1xuICAgICAgICBidWlsZEdyYW51bGFyaXR5LmZvckVhY2goZ3JhbnVsYXJpdHkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChncmFudWxhcml0eSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIgPSBbLi4uQXJyYXkoMykua2V5cygpXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RhYmxlWWVhcihzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnF1YXJ0ZXIgPSBbLi4uQXJyYXkoNCkua2V5cygpXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IFsuLi5BcnJheSg0KS5rZXlzKCldLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGFibGVNb250aChzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZVllYXIoY3VycmVudERhdGU6IFRpbnlEYXRlLCBwcmVPck5leHRjb3VudDogbnVtYmVyID0gMCk6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwge1xuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlIHx8IHRoaXMuYWN0aXZlRGF0ZSB8fCBuZXcgVGlueURhdGUoKS5zdGFydE9mWWVhcigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3llYXInLFxuICAgICAgICAgICAgY29udGVudDogYCR7Y3VycmVudERhdGUuYWRkWWVhcnMocHJlT3JOZXh0Y291bnQpLmdldFllYXIoKX1gLFxuICAgICAgICAgICAgc3RhcnRWYWx1ZTogY3VycmVudERhdGUuc3RhcnRPZlllYXIoKS5hZGRZZWFycyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZZZWFyKCkuYWRkWWVhcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgY2xhc3NNYXA6IHt9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoY3VycmVudERhdGU6IFRpbnlEYXRlLCBwcmVPck5leHRjb3VudDogbnVtYmVyID0gMCk6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwge1xuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlIHx8IHRoaXMuYWN0aXZlRGF0ZSB8fCBuZXcgVGlueURhdGUoKS5zdGFydE9mUXVhcnRlcigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3F1YXJ0ZXInLFxuICAgICAgICAgICAgY29udGVudDogYFEke2N1cnJlbnREYXRlLmFkZFF1YXJ0ZXJzKHByZU9yTmV4dGNvdW50KS5nZXRRdWFydGVyKCl9YCxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGN1cnJlbnREYXRlLnN0YXJ0T2ZRdWFydGVyKCkuYWRkUXVhcnRlcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgZW5kVmFsdWU6IGN1cnJlbnREYXRlLmVuZE9mUXVhcnRlcigpLmFkZFF1YXJ0ZXJzKHByZU9yTmV4dGNvdW50KSxcbiAgICAgICAgICAgIGNsYXNzTWFwOiB7fVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldFNlbGVjdGFibGVNb250aChjdXJyZW50RGF0ZTogVGlueURhdGUsIHByZU9yTmV4dGNvdW50OiBudW1iZXIgPSAwKTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCB7XG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGUgfHwgdGhpcy5hY3RpdmVEYXRlIHx8IG5ldyBUaW55RGF0ZSgpLnN0YXJ0T2ZNb250aCgpO1xuICAgICAgICBjb25zdCBjZWxsOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsID0ge1xuICAgICAgICAgICAgdHlwZTogJ21vbnRoJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGAke2N1cnJlbnREYXRlLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCkuZ2V0TW9udGgoKSArIDF95pyIYCxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGN1cnJlbnREYXRlLnN0YXJ0T2ZNb250aCgpLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZNb250aCgpLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBjbGFzc01hcDoge31cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgfVxuXG4gICAgcHJldkNsaWNrKHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IHRoaXMuc2VsZWN0YWJsZURhdGEueWVhci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKGl0ZW0uc3RhcnRWYWx1ZSwgLTEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlciA9IHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGl0ZW0uc3RhcnRWYWx1ZSwgLTIpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoID0gdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aC5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVNb250aChpdGVtLnN0YXJ0VmFsdWUsIC0yKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgbmV4dENsaWNrKHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IHRoaXMuc2VsZWN0YWJsZURhdGEueWVhci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKGl0ZW0uc3RhcnRWYWx1ZSwgMSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyID0gdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyLm1hcChpdGVtID0+IHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoaXRlbS5zdGFydFZhbHVlLCAyKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IHRoaXMuc2VsZWN0YWJsZURhdGEubW9udGgubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoaXRlbS5zdGFydFZhbHVlLCAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0RGF0ZSh0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHksIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLmlzT3V0UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZUdyYW51bGFyaXR5ID09PSB2YWx1ZS50eXBlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJhbmdlU3RhcnQsIHJhbmdlRW5kIH0gPSB0aGlzLmdldEFjdHVhbFN0YXJ0QW5kRW5kKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlU2VsZWN0VmFsdWUgPSB0aGlzLmdldFNob3VsZEJlVG9nZ2xlVmFsdWUocmFuZ2VTdGFydCwgcmFuZ2VFbmQpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoLi4uc2hvdWxkQmVTZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gdHlwZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3QodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b2dnbGVTZWxlY3QodmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0VmFsdWUuaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXS5zdGFydFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gb25seSBkZXNlbGVjdCBmaXJzdCBvbmVcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZGVzZWxlY3QgY3VycmVudCBhbmQgYWxsIGFmdGVyIGN1cnJlbnRcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSB2YWx1ZS5zdGFydFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VFbmQgPSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCAtIDFdLmVuZFZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVEZXNlbGVjdFZhbHVlID0gdGhpcy5nZXRTaG91bGRCZVRvZ2dsZVZhbHVlKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QoLi4uc2hvdWxkQmVEZXNlbGVjdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VlbnRlcihldmVudDogRXZlbnQsIHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSwgdmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpIHx8IHRoaXMuZGF0ZUdyYW51bGFyaXR5ICE9PSB0eXBlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmlzSW5SYW5nZSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc1NhbWVEYXkodGhpcy5zZWxlY3RlZFZhbHVlWzBdLnN0YXJ0VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuaXNPdXRSYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSB2YWx1ZS5zdGFydFZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goKGl0ZW06IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPj0gcmFuZ2VTdGFydC5nZXRUaW1lKCkgJiYgaXRlbS5zdGFydFZhbHVlLmdldFRpbWUoKSA8IHJhbmdlRW5kLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc091dFJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNPdXRSYW5nZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IHJhbmdlU3RhcnQsIHJhbmdlRW5kIH0gPSB0aGlzLmdldEFjdHVhbFN0YXJ0QW5kRW5kKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaCgoaXRlbTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnN0YXJ0VmFsdWUuZ2V0VGltZSgpID49IHJhbmdlU3RhcnQuZ2V0VGltZSgpICYmIGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPCByYW5nZUVuZC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc0luUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgb25Nb3VzZWxlYXZlKGV2ZW50OiBFdmVudCwgdHlwZTogVGh5RGF0ZUdyYW51bGFyaXR5LCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBpZiAodmFsdWUuaXNJblJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5pc0luUmFuZ2UgPSBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZS5pc091dFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5pc091dFJhbmdlID0gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICB9XG5cbiAgICBnZXRBY3R1YWxTdGFydEFuZEVuZCh2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFN0YXJ0ID0gdGhpcy5zZWxlY3RlZFZhbHVlWzBdLnN0YXJ0VmFsdWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgbGV0IHJhbmdlU3RhcnQ6IFRpbnlEYXRlLCByYW5nZUVuZDogVGlueURhdGU7XG4gICAgICAgIGlmICh2YWx1ZS5zdGFydFZhbHVlLmlzQmVmb3JlRGF5KHNlbGVjdGVkU3RhcnQpKSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gdmFsdWUuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gc2VsZWN0ZWRTdGFydDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc0FmdGVyRGF5KHNlbGVjdGVkRW5kKSkge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IHNlbGVjdGVkRW5kO1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSB2YWx1ZS5lbmRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByYW5nZVN0YXJ0LCByYW5nZUVuZCB9O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdUZW1wbGF0ZU91dGxldD1cImNhcm91c2VsSXRlbTsgY29udGV4dDogeyB0aXRsZTogJ+W5tOS7vScsIHR5cGU6ICd5ZWFyJywgc2VsZWN0YWJsZURhdGE6IHNlbGVjdGFibGVEYXRhLnllYXIgfVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2Fyb3VzZWxJdGVtOyBjb250ZXh0OiB7IHRpdGxlOiAn5a2j5bqmJywgdHlwZTogJ3F1YXJ0ZXInLCBzZWxlY3RhYmxlRGF0YTogc2VsZWN0YWJsZURhdGEucXVhcnRlciB9XCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJvdXNlbEl0ZW07IGNvbnRleHQ6IHsgdGl0bGU6ICfmnIjku70nLCB0eXBlOiAnbW9udGgnLCBzZWxlY3RhYmxlRGF0YTogc2VsZWN0YWJsZURhdGEubW9udGggfVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Nhcm91c2VsSXRlbSBsZXQtdGl0bGU9XCJ0aXRsZVwiIGxldC1zZWxlY3RhYmxlRGF0YT1cInNlbGVjdGFibGVEYXRhXCIgbGV0LXR5cGU9XCJ0eXBlXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGNhcm91c2VsLWl0ZW0te3sgdHlwZSB9fVwiPlxuICAgIDxwIGNsYXNzPVwiY2Fyb3VzZWwtaXRlbS10aXRsZVwiPnt7IHRpdGxlIH19PC9wPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtLWNvbnRlbnRcIj5cbiAgICAgIDxidXR0b24gdGh5QnV0dG9uPVwib3V0bGluZS1kZWZhdWx0XCIgdGh5U2l6ZT1cInNtXCIgY2xhc3M9XCJyaWdodC1zcGFjZVwiIChjbGljayk9XCJwcmV2Q2xpY2sodHlwZSlcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdFwiPjwvdGh5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIEBmb3IgKGl0ZW0gb2Ygc2VsZWN0YWJsZURhdGE7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RhYmxlLWJ1dHRvbiByaWdodC1zcGFjZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUodHlwZSwgaXRlbSlcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VlbnRlcigkZXZlbnQsIHR5cGUsIGl0ZW0pXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlbGVhdmUoJGV2ZW50LCB0eXBlLCBpdGVtKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc01hcFwiPlxuICAgICAgICAgIEBpZiAoaXRlbSB8IHNob3dZZWFyVGlwOiB0eXBlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInllYXItdGlwXCI+e3sgaXRlbT8uc3RhcnRWYWx1ZT8uZ2V0WWVhcigpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0uaXNJblJhbmdlICYmIGlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImNsb3NlXCI+PC90aHktaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpdGVtLmlzSW5SYW5nZSAmJiAhaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGx1c1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIWl0ZW0uaXNJblJhbmdlKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtPy5jb250ZW50IH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8YnV0dG9uIHRoeUJ1dHRvbj1cIm91dGxpbmUtZGVmYXVsdFwiIHRoeVNpemU9XCJzbVwiIChjbGljayk9XCJuZXh0Q2xpY2sodHlwZSlcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHRcIj48L3RoeS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
383
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RhdGUtY2Fyb3VzZWwvZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHdkU7O0dBRUc7QUFnQkgsTUFBTSxPQUFPLFlBQVk7SUFmekI7UUFnQlksUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWxCLGNBQVMsR0FBRyxtQ0FBbUMsQ0FBQztRQWlCdEUsbUJBQWMsR0FBOEcsRUFBRSxDQUFDO1FBSS9ILGtCQUFhLEdBQTZCLEVBQUUsQ0FBQztRQUVyQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQix5QkFBb0IsR0FBRyxJ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QUFDOzhHQXBYUSxZQUFZO2tHQUFaLFlBQVksdUpBVlY7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUM5QztTQUNKLDBCQ25DTCwwNkRBMkNBLDRDRE5jLGdCQUFnQixvSkFBRSxTQUFTLG9MQUFFLE9BQU8sc01BQUUsT0FBTywrRUFBRSxpQ0FBaUM7OzJGQUVqRixZQUFZO2tCQWZ4QixTQUFTOytCQUVJLGVBQWUsbUJBRVIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7eUJBQzlDO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUNBQWlDLENBQUM7OEJBS3JFLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFFWCxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5QnV0dG9uIH0gZnJvbSAnbmd4LXRldGh5cy9idXR0b24nO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZHZhbmNlZFNlbGVjdGFibGVDZWxsLCBSYW5nZUFkdmFuY2VkVmFsdWUgfSBmcm9tICcuLi8uLi9pbm5lci10eXBlcyc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQWR2YW5jZWRTaG93WWVhclRpcFBpcGUgfSBmcm9tICcuLi8uLi9waWNrZXIucGlwZXMnO1xuaW1wb3J0IHsgVGh5RGF0ZUdyYW51bGFyaXR5IH0gZnJvbSAnLi4vLi4vc3RhbmRhcmQtdHlwZXMnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdkYXRlLWNhcm91c2VsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlQ2Fyb3VzZWwpXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIFRoeUJ1dHRvbiwgVGh5SWNvbiwgTmdDbGFzcywgRGF0ZVBpY2tlckFkdmFuY2VkU2hvd1llYXJUaXBQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlQ2Fyb3VzZWwgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGh5LWRhdGUtcGlja2VyLWFkdmFuY2VkLWNhcm91c2VsJztcblxuICAgIEBJbnB1dCgpIGFjdGl2ZURhdGU6IFRpbnlEYXRlO1xuXG4gICAgc2V0IGRlZmF1bHRWYWx1ZSh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gdmFsdWUuZGF0ZUdyYW51bGFyaXR5O1xuICAgICAgICB0aGlzLmJ1aWxkU2VsZWN0YWJsZURhdGEodmFsdWUuYmVnaW4pO1xuXG4gICAgICAgIGlmICh2YWx1ZS5iZWdpbiAmJiB2YWx1ZS5lbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlU2VsZWN0VmFsdWUgPSB0aGlzLmdldFNob3VsZEJlVG9nZ2xlVmFsdWUodmFsdWUuYmVnaW4sIHZhbHVlLmVuZCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCguLi5zaG91bGRCZVNlbGVjdFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3QodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgc2VsZWN0YWJsZURhdGE6IHsgeWVhcj86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXTsgcXVhcnRlcj86IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXTsgbW9udGg/OiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10gfSA9IHt9O1xuXG4gICAgZGF0ZUdyYW51bGFyaXR5OiBUaHlEYXRlR3JhbnVsYXJpdHk7XG5cbiAgICBzZWxlY3RlZFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10gPSBbXTtcblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRWYWx1ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxSYW5nZUFkdmFuY2VkVmFsdWU+KCk7XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBSYW5nZUFkdmFuY2VkVmFsdWUpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKSA9PiB2b2lkO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZFNlbGVjdGFibGVEYXRhKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXT8uc3RhcnRWYWx1ZSwgdGhpcy5kYXRlR3JhbnVsYXJpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS55ZWFyLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVHcmFudWxhcml0eTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUdyYW51bGFyaXR5OiB0aGlzLmRhdGVHcmFudWxhcml0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luOiBzZWxjdGVkVmFsdWVbMF0/LnN0YXJ0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IHNlbGN0ZWRWYWx1ZVtzZWxjdGVkVmFsdWUubGVuZ3RoIC0gMV0/LmVuZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogUmFuZ2VBZHZhbmNlZFZhbHVlKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgZ2V0Q2xhc3NNYXAoY2VsbDogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW2BhY3RpdmVgXTogdGhpcy5pc1NlbGVjdGVkKGNlbGwpLFxuICAgICAgICAgICAgW2BpbmRldGVybWluYXRlYF06IHRoaXMuaXNDZWxsSW5kZXRlcm1pbmF0ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIGNlbGwpLFxuICAgICAgICAgICAgW2B0eXBlLWFjdGl2ZWBdOiB0aGlzLmlzVHlwZUFjdGl2ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIGNlbGwpLFxuICAgICAgICAgICAgWydpbi1ob3Zlci1yYW5nZSddOiBjZWxsLmlzSW5SYW5nZSxcbiAgICAgICAgICAgIFsnb3V0LXJhbmdlJ106IGNlbGwuaXNPdXRSYW5nZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlzVHlwZUFjdGl2ZShvcmlnaW5hbFZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsW10sIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFZhbHVlPy5sZW5ndGggJiYgb3JpZ2luYWxWYWx1ZVswXS50eXBlID09PSB2YWx1ZS50eXBlO1xuICAgIH1cblxuICAgIGlzQ2VsbEluZGV0ZXJtaW5hdGUob3JpZ2luYWxWYWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbFtdLCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZVswXT8udHlwZSA9PT0gdmFsdWUudHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWVbMF0/LnR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIW9yaWdpbmFsVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVZZWFyKHZhbHVlLnN0YXJ0VmFsdWUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICd5ZWFyJ1xuICAgICAgICAgICAgICAgICAgICA/ICEhb3JpZ2luYWxWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5zdGFydFZhbHVlLmlzU2FtZVllYXIodmFsdWUuc3RhcnRWYWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIDogISFvcmlnaW5hbFZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLnN0YXJ0VmFsdWUuaXNTYW1lUXVhcnRlcih2YWx1ZS5zdGFydFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUuZmluZChpdGVtID0+IGl0ZW0uc3RhcnRWYWx1ZS5pc1NhbWVEYXkodmFsdWUuc3RhcnRWYWx1ZSkpICYmIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID09PSB2YWx1ZS50eXBlO1xuICAgIH1cblxuICAgIGlzU2VsZWN0RW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09IDA7XG4gICAgfVxuXG4gICAgc2VsZWN0U29ydCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRWYWx1ZS5nZXRUaW1lKCkgLSBiLnN0YXJ0VmFsdWUuZ2V0VGltZSgpKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoLi4udmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUucHVzaCguLi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdFNvcnQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgZGVzZWxlY3QoLi4udmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlLmZpbHRlcihzZWxlY3RlZCA9PiAhc2VsZWN0ZWQuc3RhcnRWYWx1ZS5pc1NhbWVEYXkoaXRlbS5zdGFydFZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdFNvcnQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQ2hhbmdlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3QoaGlkZGVuPzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbXTtcbiAgICAgICAgaWYgKCFoaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZSQubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2hvdWxkQmVUb2dnbGVWYWx1ZShiZWdpbjogVGlueURhdGUsIGVuZDogVGlueURhdGUpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGxbXSA9IFtdO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuZGF0ZUdyYW51bGFyaXR5KSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9ICd5ZWFyJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lWWVhcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVZZWFyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVllYXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVZZWFyKGVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luID0gYmVnaW4uYWRkWWVhcnMoMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlWWVhcihiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gJ21vbnRoJztcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4uaXNTYW1lTW9udGgoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFiZWdpbi5pc1NhbWVNb250aChlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGJlZ2luLmFkZE1vbnRocygxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVNb250aChiZWdpbikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSAncXVhcnRlcic7XG4gICAgICAgICAgICAgICAgaWYgKGJlZ2luLmlzU2FtZVF1YXJ0ZXIoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlLnB1c2godGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihiZWdpbikpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUucHVzaCh0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGJlZ2luKSk7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICghYmVnaW4uaXNTYW1lUXVhcnRlcihlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiA9IGJlZ2luLmFkZFF1YXJ0ZXJzKDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZS5wdXNoKHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoYmVnaW4pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBidWlsZFNlbGVjdGFibGVEYXRhKHN0YXJ0RGF0ZTogVGlueURhdGUsIGV4Y2x1ZGVHcmFudWxhcml0eT86IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBjb25zdCBidWlsZEdyYW51bGFyaXR5ID0gWyd5ZWFyJywgJ21vbnRoJywgJ3F1YXJ0ZXInXS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBleGNsdWRlR3JhbnVsYXJpdHkpO1xuICAgICAgICBidWlsZEdyYW51bGFyaXR5LmZvckVhY2goZ3JhbnVsYXJpdHkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChncmFudWxhcml0eSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnllYXIgPSBbLi4uQXJyYXkoMykua2V5cygpXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RhYmxlWWVhcihzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLnF1YXJ0ZXIgPSBbLi4uQXJyYXkoNCkua2V5cygpXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RhYmxlUXVhcnRlcihzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IFsuLi5BcnJheSg0KS5rZXlzKCldLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGFibGVNb250aChzdGFydERhdGUsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZVllYXIoY3VycmVudERhdGU6IFRpbnlEYXRlLCBwcmVPck5leHRjb3VudDogbnVtYmVyID0gMCk6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwge1xuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlIHx8IHRoaXMuYWN0aXZlRGF0ZSB8fCBuZXcgVGlueURhdGUoKS5zdGFydE9mWWVhcigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3llYXInLFxuICAgICAgICAgICAgY29udGVudDogYCR7Y3VycmVudERhdGUuYWRkWWVhcnMocHJlT3JOZXh0Y291bnQpLmdldFllYXIoKX1gLFxuICAgICAgICAgICAgc3RhcnRWYWx1ZTogY3VycmVudERhdGUuc3RhcnRPZlllYXIoKS5hZGRZZWFycyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZZZWFyKCkuYWRkWWVhcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgY2xhc3NNYXA6IHt9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoY3VycmVudERhdGU6IFRpbnlEYXRlLCBwcmVPck5leHRjb3VudDogbnVtYmVyID0gMCk6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwge1xuICAgICAgICBjdXJyZW50RGF0ZSA9IGN1cnJlbnREYXRlIHx8IHRoaXMuYWN0aXZlRGF0ZSB8fCBuZXcgVGlueURhdGUoKS5zdGFydE9mUXVhcnRlcigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3F1YXJ0ZXInLFxuICAgICAgICAgICAgY29udGVudDogYFEke2N1cnJlbnREYXRlLmFkZFF1YXJ0ZXJzKHByZU9yTmV4dGNvdW50KS5nZXRRdWFydGVyKCl9YCxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGN1cnJlbnREYXRlLnN0YXJ0T2ZRdWFydGVyKCkuYWRkUXVhcnRlcnMocHJlT3JOZXh0Y291bnQpLFxuICAgICAgICAgICAgZW5kVmFsdWU6IGN1cnJlbnREYXRlLmVuZE9mUXVhcnRlcigpLmFkZFF1YXJ0ZXJzKHByZU9yTmV4dGNvdW50KSxcbiAgICAgICAgICAgIGNsYXNzTWFwOiB7fVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldFNlbGVjdGFibGVNb250aChjdXJyZW50RGF0ZTogVGlueURhdGUsIHByZU9yTmV4dGNvdW50OiBudW1iZXIgPSAwKTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCB7XG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGUgfHwgdGhpcy5hY3RpdmVEYXRlIHx8IG5ldyBUaW55RGF0ZSgpLnN0YXJ0T2ZNb250aCgpO1xuICAgICAgICBjb25zdCBjZWxsOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsID0ge1xuICAgICAgICAgICAgdHlwZTogJ21vbnRoJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGAke2N1cnJlbnREYXRlLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCkuZ2V0TW9udGgoKSArIDF95pyIYCxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGN1cnJlbnREYXRlLnN0YXJ0T2ZNb250aCgpLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBlbmRWYWx1ZTogY3VycmVudERhdGUuZW5kT2ZNb250aCgpLmFkZE1vbnRocyhwcmVPck5leHRjb3VudCksXG4gICAgICAgICAgICBjbGFzc01hcDoge31cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgfVxuXG4gICAgcHJldkNsaWNrKHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IHRoaXMuc2VsZWN0YWJsZURhdGEueWVhci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKGl0ZW0uc3RhcnRWYWx1ZSwgLTEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlciA9IHRoaXMuc2VsZWN0YWJsZURhdGEucXVhcnRlci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVRdWFydGVyKGl0ZW0uc3RhcnRWYWx1ZSwgLTIpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhLm1vbnRoID0gdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aC5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVNb250aChpdGVtLnN0YXJ0VmFsdWUsIC0yKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgbmV4dENsaWNrKHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGEueWVhciA9IHRoaXMuc2VsZWN0YWJsZURhdGEueWVhci5tYXAoaXRlbSA9PiB0aGlzLmdldFNlbGVjdGFibGVZZWFyKGl0ZW0uc3RhcnRWYWx1ZSwgMSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyID0gdGhpcy5zZWxlY3RhYmxlRGF0YS5xdWFydGVyLm1hcChpdGVtID0+IHRoaXMuZ2V0U2VsZWN0YWJsZVF1YXJ0ZXIoaXRlbS5zdGFydFZhbHVlLCAyKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YS5tb250aCA9IHRoaXMuc2VsZWN0YWJsZURhdGEubW9udGgubWFwKGl0ZW0gPT4gdGhpcy5nZXRTZWxlY3RhYmxlTW9udGgoaXRlbS5zdGFydFZhbHVlLCAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0RGF0ZSh0eXBlOiBUaHlEYXRlR3JhbnVsYXJpdHksIHZhbHVlOiBBZHZhbmNlZFNlbGVjdGFibGVDZWxsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLmlzT3V0UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVHcmFudWxhcml0eSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlR3JhbnVsYXJpdHkgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZUdyYW51bGFyaXR5ID09PSB2YWx1ZS50eXBlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJhbmdlU3RhcnQsIHJhbmdlRW5kIH0gPSB0aGlzLmdldEFjdHVhbFN0YXJ0QW5kRW5kKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlU2VsZWN0VmFsdWUgPSB0aGlzLmdldFNob3VsZEJlVG9nZ2xlVmFsdWUocmFuZ2VTdGFydCwgcmFuZ2VFbmQpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoLi4uc2hvdWxkQmVTZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUdyYW51bGFyaXR5ID0gdHlwZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3QodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b2dnbGVTZWxlY3QodmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0VmFsdWUuaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWRWYWx1ZVswXS5zdGFydFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gb25seSBkZXNlbGVjdCBmaXJzdCBvbmVcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZGVzZWxlY3QgY3VycmVudCBhbmQgYWxsIGFmdGVyIGN1cnJlbnRcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSB2YWx1ZS5zdGFydFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VFbmQgPSB0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCAtIDFdLmVuZFZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVEZXNlbGVjdFZhbHVlID0gdGhpcy5nZXRTaG91bGRCZVRvZ2dsZVZhbHVlKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QoLi4uc2hvdWxkQmVEZXNlbGVjdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VlbnRlcihldmVudDogRXZlbnQsIHR5cGU6IFRoeURhdGVHcmFudWxhcml0eSwgdmFsdWU6IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RFbXB0eSgpIHx8IHRoaXMuZGF0ZUdyYW51bGFyaXR5ICE9PSB0eXBlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmlzSW5SYW5nZSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc1NhbWVEYXkodGhpcy5zZWxlY3RlZFZhbHVlWzBdLnN0YXJ0VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuaXNPdXRSYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSB2YWx1ZS5zdGFydFZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goKGl0ZW06IEFkdmFuY2VkU2VsZWN0YWJsZUNlbGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPj0gcmFuZ2VTdGFydC5nZXRUaW1lKCkgJiYgaXRlbS5zdGFydFZhbHVlLmdldFRpbWUoKSA8IHJhbmdlRW5kLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc091dFJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNPdXRSYW5nZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB7IHJhbmdlU3RhcnQsIHJhbmdlRW5kIH0gPSB0aGlzLmdldEFjdHVhbFN0YXJ0QW5kRW5kKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZURhdGFbdHlwZV0uZm9yRWFjaCgoaXRlbTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnN0YXJ0VmFsdWUuZ2V0VGltZSgpID49IHJhbmdlU3RhcnQuZ2V0VGltZSgpICYmIGl0ZW0uc3RhcnRWYWx1ZS5nZXRUaW1lKCkgPCByYW5nZUVuZC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc0luUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNJblJhbmdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlRGF0YVt0eXBlXS5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGl0ZW0pKSk7XG4gICAgfVxuXG4gICAgb25Nb3VzZWxlYXZlKGV2ZW50OiBFdmVudCwgdHlwZTogVGh5RGF0ZUdyYW51bGFyaXR5LCB2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBpZiAodmFsdWUuaXNJblJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5pc0luUmFuZ2UgPSBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZS5pc091dFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5pc091dFJhbmdlID0gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGFibGVEYXRhW3R5cGVdLmZvckVhY2goaXRlbSA9PiAoaXRlbS5jbGFzc01hcCA9IHRoaXMuZ2V0Q2xhc3NNYXAoaXRlbSkpKTtcbiAgICB9XG5cbiAgICBnZXRBY3R1YWxTdGFydEFuZEVuZCh2YWx1ZTogQWR2YW5jZWRTZWxlY3RhYmxlQ2VsbCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFN0YXJ0ID0gdGhpcy5zZWxlY3RlZFZhbHVlWzBdLnN0YXJ0VmFsdWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlW3RoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggLSAxXS5lbmRWYWx1ZTtcbiAgICAgICAgbGV0IHJhbmdlU3RhcnQ6IFRpbnlEYXRlLCByYW5nZUVuZDogVGlueURhdGU7XG4gICAgICAgIGlmICh2YWx1ZS5zdGFydFZhbHVlLmlzQmVmb3JlRGF5KHNlbGVjdGVkU3RhcnQpKSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gdmFsdWUuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIHJhbmdlRW5kID0gc2VsZWN0ZWRTdGFydDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuc3RhcnRWYWx1ZS5pc0FmdGVyRGF5KHNlbGVjdGVkRW5kKSkge1xuICAgICAgICAgICAgcmFuZ2VTdGFydCA9IHNlbGVjdGVkRW5kO1xuICAgICAgICAgICAgcmFuZ2VFbmQgPSB2YWx1ZS5lbmRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByYW5nZVN0YXJ0LCByYW5nZUVuZCB9O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdUZW1wbGF0ZU91dGxldD1cImNhcm91c2VsSXRlbTsgY29udGV4dDogeyB0aXRsZTogJ+W5tOS7vScsIHR5cGU6ICd5ZWFyJywgc2VsZWN0YWJsZURhdGE6IHNlbGVjdGFibGVEYXRhLnllYXIgfVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyXG4gICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2Fyb3VzZWxJdGVtOyBjb250ZXh0OiB7IHRpdGxlOiAn5a2j5bqmJywgdHlwZTogJ3F1YXJ0ZXInLCBzZWxlY3RhYmxlRGF0YTogc2VsZWN0YWJsZURhdGEucXVhcnRlciB9XCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJvdXNlbEl0ZW07IGNvbnRleHQ6IHsgdGl0bGU6ICfmnIjku70nLCB0eXBlOiAnbW9udGgnLCBzZWxlY3RhYmxlRGF0YTogc2VsZWN0YWJsZURhdGEubW9udGggfVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Nhcm91c2VsSXRlbSBsZXQtdGl0bGU9XCJ0aXRsZVwiIGxldC1zZWxlY3RhYmxlRGF0YT1cInNlbGVjdGFibGVEYXRhXCIgbGV0LXR5cGU9XCJ0eXBlXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGNhcm91c2VsLWl0ZW0te3sgdHlwZSB9fVwiPlxuICAgIDxwIGNsYXNzPVwiY2Fyb3VzZWwtaXRlbS10aXRsZVwiPnt7IHRpdGxlIH19PC9wPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtLWNvbnRlbnRcIj5cbiAgICAgIDxidXR0b24gdGh5QnV0dG9uPVwib3V0bGluZS1kZWZhdWx0XCIgdGh5U2l6ZT1cInNtXCIgY2xhc3M9XCJyaWdodC1zcGFjZVwiIChjbGljayk9XCJwcmV2Q2xpY2sodHlwZSlcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdFwiPjwvdGh5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIEBmb3IgKGl0ZW0gb2Ygc2VsZWN0YWJsZURhdGE7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RhYmxlLWJ1dHRvbiByaWdodC1zcGFjZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUodHlwZSwgaXRlbSlcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VlbnRlcigkZXZlbnQsIHR5cGUsIGl0ZW0pXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlbGVhdmUoJGV2ZW50LCB0eXBlLCBpdGVtKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc01hcFwiPlxuICAgICAgICAgIEBpZiAoaXRlbSB8IHNob3dZZWFyVGlwOiB0eXBlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInllYXItdGlwXCI+e3sgaXRlbT8uc3RhcnRWYWx1ZT8uZ2V0WWVhcigpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGl0ZW0uaXNJblJhbmdlICYmIGlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImNsb3NlXCI+PC90aHktaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpdGVtLmlzSW5SYW5nZSAmJiAhaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGx1c1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoIWl0ZW0uaXNJblJhbmdlKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtPy5jb250ZW50IH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8YnV0dG9uIHRoeUJ1dHRvbj1cIm91dGxpbmUtZGVmYXVsdFwiIHRoeVNpemU9XCJzbVwiIChjbGljayk9XCJuZXh0Q2xpY2sodHlwZSlcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHRcIj48L3RoeS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { DateHelperService } from '../../../date-picker/date-helper.service';
|
|
3
2
|
import { CalendarHeader } from '../calendar/calendar-header.component';
|
|
4
3
|
import { ThyIcon } from 'ngx-tethys/icon';
|
|
5
4
|
import { NgClass } from '@angular/common';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../../../date-picker/date-helper.service";
|
|
8
6
|
/**
|
|
9
7
|
* @private
|
|
10
8
|
*/
|
|
11
9
|
export class DecadeHeader extends CalendarHeader {
|
|
12
|
-
constructor(
|
|
13
|
-
super(
|
|
14
|
-
this.dateHelper = dateHelper;
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
15
12
|
}
|
|
16
13
|
get startYear() {
|
|
17
14
|
return parseInt(`${this.value.getYear() / 100}`, 10) * 100;
|
|
@@ -35,11 +32,11 @@ export class DecadeHeader extends CalendarHeader {
|
|
|
35
32
|
}
|
|
36
33
|
];
|
|
37
34
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DecadeHeader, deps: [
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DecadeHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
36
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: DecadeHeader, isStandalone: true, selector: "decade-header", usesInheritance: true, ngImport: i0, template: "<div class=\"{{ prefixCls }}-header\">\n <div style=\"position: relative\">\n <a\n class=\"{{ prefixCls }}-prev-year-btn\"\n [ngClass]=\"showSuperPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superPrevious()\"\n title=\"\u4E0A\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-left\"></thy-icon>\n </a>\n <a class=\"{{ prefixCls }}-prev-month-btn\" [ngClass]=\"showPreBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"previous()\" title=\"\u4E0A\u6708\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </a>\n\n <span class=\"{{ prefixCls }}-my-select\">\n @for (selector of selectors; track $index) {\n <a class=\"{{ selector.className }}\" role=\"button\" (click)=\"selectorClick($event, selector)\" title=\"{{ selector.title || null }}\">\n {{ selector.label }}\n </a>\n }\n </span>\n\n <a class=\"{{ prefixCls }}-next-month-btn\" [ngClass]=\"showNextBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"next()\" title=\"\u4E0B\u4E2A\u6708\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-next-year-btn\"\n [ngClass]=\"showSuperNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superNext()\"\n title=\"\u4E0B\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-right\"></thy-icon>\n </a>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40
37
|
}
|
|
41
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DecadeHeader, decorators: [{
|
|
42
39
|
type: Component,
|
|
43
40
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'decade-header', standalone: true, imports: [NgClass, ThyIcon], template: "<div class=\"{{ prefixCls }}-header\">\n <div style=\"position: relative\">\n <a\n class=\"{{ prefixCls }}-prev-year-btn\"\n [ngClass]=\"showSuperPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superPrevious()\"\n title=\"\u4E0A\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-left\"></thy-icon>\n </a>\n <a class=\"{{ prefixCls }}-prev-month-btn\" [ngClass]=\"showPreBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"previous()\" title=\"\u4E0A\u6708\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </a>\n\n <span class=\"{{ prefixCls }}-my-select\">\n @for (selector of selectors; track $index) {\n <a class=\"{{ selector.className }}\" role=\"button\" (click)=\"selectorClick($event, selector)\" title=\"{{ selector.title || null }}\">\n {{ selector.label }}\n </a>\n }\n </span>\n\n <a class=\"{{ prefixCls }}-next-month-btn\" [ngClass]=\"showNextBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"next()\" title=\"\u4E0B\u4E2A\u6708\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-next-year-btn\"\n [ngClass]=\"showSuperNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superNext()\"\n title=\"\u4E0B\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-right\"></thy-icon>\n </a>\n </div>\n</div>\n" }]
|
|
44
|
-
}], ctorParameters: () => [
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
}], ctorParameters: () => [] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWRlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL2RlY2FkZS9kZWNhZGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUxQzs7R0FFRztBQVNILE1BQU0sT0FBTyxZQUFhLFNBQVEsY0FBYztJQUc1QztRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELElBQUksU0FBUztRQUNULE9BQU8sUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU87WUFDSDtnQkFDSSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxhQUFhO2dCQUN6QyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztnQkFDakIsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQzdDO1NBQ0osQ0FBQztJQUNOLENBQUM7OEdBL0JRLFlBQVk7a0dBQVosWUFBWSxnR0NsQnpCLDY1Q0FtQ0EsNENEbkJjLE9BQU8sb0ZBQUUsT0FBTzs7MkZBRWpCLFlBQVk7a0JBUnhCLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUVyQyxlQUFlLGNBRWIsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRlSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RhdGUtcGlja2VyL2RhdGUtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJIZWFkZXIsIFBhbmVsU2VsZWN0b3IgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RlY2FkZS1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi4vY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBUaHlJY29uXVxufSlcbmV4cG9ydCBjbGFzcyBEZWNhZGVIZWFkZXIgZXh0ZW5kcyBDYWxlbmRhckhlYWRlciB7XG4gICAgZGF0ZUhlbHBlcjogRGF0ZUhlbHBlclNlcnZpY2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgZ2V0IHN0YXJ0WWVhcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoYCR7dGhpcy52YWx1ZS5nZXRZZWFyKCkgLyAxMDB9YCwgMTApICogMTAwO1xuICAgIH1cblxuICAgIGdldCBlbmRZZWFyKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0WWVhciArIDk5O1xuICAgIH1cblxuICAgIHN1cGVyUHJldmlvdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlVmFsdWUodGhpcy52YWx1ZS5hZGRZZWFycygtMTAwKSk7XG4gICAgfVxuXG4gICAgc3VwZXJOZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZVZhbHVlKHRoaXMudmFsdWUuYWRkWWVhcnMoMTAwKSk7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0b3JzKCk6IFBhbmVsU2VsZWN0b3JbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHt0aGlzLnByZWZpeENsc30tZGVjYWRlLWJ0bmAsXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBgJHt0aGlzLnN0YXJ0WWVhcn0tJHt0aGlzLmVuZFllYXJ9YFxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0taGVhZGVyXCI+XG4gIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcHJldi15ZWFyLWJ0blwiXG4gICAgICBbbmdDbGFzc109XCJzaG93U3VwZXJQcmVCdG4gPyAnZC1ibG9jaycgOiAnZC1ub25lJ1wiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzdXBlclByZXZpb3VzKClcIlxuICAgICAgdGl0bGU9XCLkuIrkuIDlubRcIj5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLWRvdWJsZS1sZWZ0XCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gICAgPGEgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tcHJldi1tb250aC1idG5cIiBbbmdDbGFzc109XCJzaG93UHJlQnRuID8gJ2QtYmxvY2snIDogJ2Qtbm9uZSdcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIiB0aXRsZT1cIuS4iuaciFwiPlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdFwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbXktc2VsZWN0XCI+XG4gICAgICBAZm9yIChzZWxlY3RvciBvZiBzZWxlY3RvcnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8YSBjbGFzcz1cInt7IHNlbGVjdG9yLmNsYXNzTmFtZSB9fVwiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwic2VsZWN0b3JDbGljaygkZXZlbnQsIHNlbGVjdG9yKVwiIHRpdGxlPVwie3sgc2VsZWN0b3IudGl0bGUgfHwgbnVsbCB9fVwiPlxuICAgICAgICAgIHt7IHNlbGVjdG9yLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG5cbiAgICA8YSBjbGFzcz1cInt7IHByZWZpeENscyB9fS1uZXh0LW1vbnRoLWJ0blwiIFtuZ0NsYXNzXT1cInNob3dOZXh0QnRuID8gJ2QtYmxvY2snIDogJ2Qtbm9uZSdcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm5leHQoKVwiIHRpdGxlPVwi5LiL5Liq5pyIXCI+XG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodFwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuICAgIDxhXG4gICAgICBjbGFzcz1cInt7IHByZWZpeENscyB9fS1uZXh0LXllYXItYnRuXCJcbiAgICAgIFtuZ0NsYXNzXT1cInNob3dTdXBlck5leHRCdG4gPyAnZC1ibG9jaycgOiAnZC1ub25lJ1wiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzdXBlck5leHQoKVwiXG4gICAgICB0aXRsZT1cIuS4i+S4gOW5tFwiPlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtZG91YmxlLXJpZ2h0XCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { DateHelperService } from '../../../date-picker/date-helper.service';
|
|
3
2
|
import { CalendarHeader } from '../calendar/calendar-header.component';
|
|
4
3
|
import { ThyIcon } from 'ngx-tethys/icon';
|
|
5
4
|
import { NgClass } from '@angular/common';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../../../date-picker/date-helper.service";
|
|
8
6
|
/**
|
|
9
7
|
* @private
|
|
10
8
|
*/
|
|
11
9
|
export class MonthHeader extends CalendarHeader {
|
|
12
|
-
constructor(dateHelper) {
|
|
13
|
-
super(dateHelper);
|
|
14
|
-
this.dateHelper = dateHelper;
|
|
15
|
-
}
|
|
16
10
|
getSelectors() {
|
|
17
11
|
let yearFormat = 'yyyy年';
|
|
18
12
|
return [
|
|
@@ -23,11 +17,11 @@ export class MonthHeader extends CalendarHeader {
|
|
|
23
17
|
}
|
|
24
18
|
];
|
|
25
19
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MonthHeader, deps:
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MonthHeader, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
21
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MonthHeader, isStandalone: true, selector: "month-header", usesInheritance: true, ngImport: i0, template: "<div class=\"{{ prefixCls }}-header\">\n <div style=\"position: relative\">\n <a\n class=\"{{ prefixCls }}-prev-year-btn\"\n [ngClass]=\"showSuperPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superPrevious()\"\n title=\"\u4E0A\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-left\"></thy-icon>\n </a>\n <a class=\"{{ prefixCls }}-prev-month-btn\" [ngClass]=\"showPreBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"previous()\" title=\"\u4E0A\u6708\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </a>\n\n <span class=\"{{ prefixCls }}-my-select\">\n @for (selector of selectors; track $index) {\n <a class=\"{{ selector.className }}\" role=\"button\" (click)=\"selectorClick($event, selector)\" title=\"{{ selector.title || null }}\">\n {{ selector.label }}\n </a>\n }\n </span>\n\n <a class=\"{{ prefixCls }}-next-month-btn\" [ngClass]=\"showNextBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"next()\" title=\"\u4E0B\u4E2A\u6708\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-next-year-btn\"\n [ngClass]=\"showSuperNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superNext()\"\n title=\"\u4E0B\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-right\"></thy-icon>\n </a>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
22
|
}
|
|
29
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MonthHeader, decorators: [{
|
|
30
24
|
type: Component,
|
|
31
25
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'month-header', standalone: true, imports: [NgClass, ThyIcon], template: "<div class=\"{{ prefixCls }}-header\">\n <div style=\"position: relative\">\n <a\n class=\"{{ prefixCls }}-prev-year-btn\"\n [ngClass]=\"showSuperPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superPrevious()\"\n title=\"\u4E0A\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-left\"></thy-icon>\n </a>\n <a class=\"{{ prefixCls }}-prev-month-btn\" [ngClass]=\"showPreBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"previous()\" title=\"\u4E0A\u6708\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </a>\n\n <span class=\"{{ prefixCls }}-my-select\">\n @for (selector of selectors; track $index) {\n <a class=\"{{ selector.className }}\" role=\"button\" (click)=\"selectorClick($event, selector)\" title=\"{{ selector.title || null }}\">\n {{ selector.label }}\n </a>\n }\n </span>\n\n <a class=\"{{ prefixCls }}-next-month-btn\" [ngClass]=\"showNextBtn ? 'd-block' : 'd-none'\" role=\"button\" (click)=\"next()\" title=\"\u4E0B\u4E2A\u6708\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-next-year-btn\"\n [ngClass]=\"showSuperNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superNext()\"\n title=\"\u4E0B\u4E00\u5E74\">\n <thy-icon thyIconName=\"angle-double-right\"></thy-icon>\n </a>\n </div>\n</div>\n" }]
|
|
32
|
-
}]
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
}] });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9saWIvbW9udGgvbW9udGgtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUxQzs7R0FFRztBQVNILE1BQU0sT0FBTyxXQUFZLFNBQVEsY0FBYztJQUMzQyxZQUFZO1FBQ1IsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLE9BQU87WUFDSDtnQkFDSSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxZQUFZO2dCQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQzthQUN6QztTQUNKLENBQUM7SUFDTixDQUFDOzhHQVZRLFdBQVc7a0dBQVgsV0FBVywrRkNqQnhCLDY1Q0FtQ0EsNENEcEJjLE9BQU8sb0ZBQUUsT0FBTzs7MkZBRWpCLFdBQVc7a0JBUnZCLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUVyQyxjQUFjLGNBRVosSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRlLXBpY2tlci9kYXRlLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFySGVhZGVyLCBQYW5lbFNlbGVjdG9yIH0gZnJvbSAnLi4vY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdtb250aC1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi4vY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBUaHlJY29uXVxufSlcbmV4cG9ydCBjbGFzcyBNb250aEhlYWRlciBleHRlbmRzIENhbGVuZGFySGVhZGVyIHtcbiAgICBnZXRTZWxlY3RvcnMoKTogUGFuZWxTZWxlY3RvcltdIHtcbiAgICAgICAgbGV0IHllYXJGb3JtYXQgPSAneXl5eeW5tCc7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHt0aGlzLnByZWZpeENsc30tbW9udGgtYnRuYCxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLmNoYW5nZVBhbmVsKCd5ZWFyJyksXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZm9ybWF0RGF0ZVRpbWUoeWVhckZvcm1hdClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWhlYWRlclwiPlxuICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XG4gICAgPGFcbiAgICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXByZXYteWVhci1idG5cIlxuICAgICAgW25nQ2xhc3NdPVwic2hvd1N1cGVyUHJlQnRuID8gJ2QtYmxvY2snIDogJ2Qtbm9uZSdcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic3VwZXJQcmV2aW91cygpXCJcbiAgICAgIHRpdGxlPVwi5LiK5LiA5bm0XCI+XG4gICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1kb3VibGUtbGVmdFwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuICAgIDxhIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LXByZXYtbW9udGgtYnRuXCIgW25nQ2xhc3NdPVwic2hvd1ByZUJ0biA/ICdkLWJsb2NrJyA6ICdkLW5vbmUnXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJwcmV2aW91cygpXCIgdGl0bGU9XCLkuIrmnIhcIj5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLWxlZnRcIj48L3RoeS1pY29uPlxuICAgIDwvYT5cblxuICAgIDxzcGFuIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LW15LXNlbGVjdFwiPlxuICAgICAgQGZvciAoc2VsZWN0b3Igb2Ygc2VsZWN0b3JzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGEgY2xhc3M9XCJ7eyBzZWxlY3Rvci5jbGFzc05hbWUgfX1cIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNlbGVjdG9yQ2xpY2soJGV2ZW50LCBzZWxlY3RvcilcIiB0aXRsZT1cInt7IHNlbGVjdG9yLnRpdGxlIHx8IG51bGwgfX1cIj5cbiAgICAgICAgICB7eyBzZWxlY3Rvci5sYWJlbCB9fVxuICAgICAgICA8L2E+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuXG4gICAgPGEgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbmV4dC1tb250aC1idG5cIiBbbmdDbGFzc109XCJzaG93TmV4dEJ0biA/ICdkLWJsb2NrJyA6ICdkLW5vbmUnXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJuZXh0KClcIiB0aXRsZT1cIuS4i+S4quaciFwiPlxuICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHRcIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbmV4dC15ZWFyLWJ0blwiXG4gICAgICBbbmdDbGFzc109XCJzaG93U3VwZXJOZXh0QnRuID8gJ2QtYmxvY2snIDogJ2Qtbm9uZSdcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic3VwZXJOZXh0KClcIlxuICAgICAgdGl0bGU9XCLkuIvkuIDlubRcIj5cbiAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLWRvdWJsZS1yaWdodFwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
2
|
import { TinyDate } from 'ngx-tethys/util';
|
|
3
3
|
import { DateHelperService } from '../../date-helper.service';
|
|
4
4
|
import { CalendarTable } from '../calendar/calendar-table.component';
|
|
5
5
|
import { NgClass } from '@angular/common';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../../date-helper.service";
|
|
8
7
|
/**
|
|
9
8
|
* @private
|
|
10
9
|
*/
|
|
11
10
|
export class MonthTable extends CalendarTable {
|
|
12
|
-
constructor(
|
|
11
|
+
constructor() {
|
|
13
12
|
super();
|
|
14
|
-
this.dateHelper =
|
|
13
|
+
this.dateHelper = inject(DateHelperService);
|
|
15
14
|
this.MAX_ROW = 4;
|
|
16
15
|
this.MAX_COL = 3;
|
|
17
16
|
}
|
|
@@ -87,11 +86,11 @@ export class MonthTable extends CalendarTable {
|
|
|
87
86
|
[`${this.prefixCls}-month-panel-current-cell`]: new TinyDate().getYear() === this.activeDate.getYear() && cell.value.getMonth() === new TinyDate().getMonth()
|
|
88
87
|
};
|
|
89
88
|
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MonthTable, deps: [
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MonthTable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
90
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MonthTable, isStandalone: true, selector: "month-table", exportAs: ["monthTable"], usesInheritance: true, ngImport: i0, template: "<table class=\"{{ prefixCls }}-month-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-month-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (monthCell of row.dateCells; track trackByBodyColumn($index, monthCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ monthCell.title }}\"\n (click)=\"monthCellClick($event, monthCell)\"\n [ngClass]=\"monthCell.classMap\"\n >\n @switch (prefixCls) {\n @case ('thy-calendar') {\n <div class=\"{{ prefixCls }}-month-panel-month\">{{ monthCell.content }}</div>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
92
91
|
}
|
|
93
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MonthTable, decorators: [{
|
|
94
93
|
type: Component,
|
|
95
94
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'month-table', exportAs: 'monthTable', standalone: true, imports: [NgClass], template: "<table class=\"{{ prefixCls }}-month-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-month-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (monthCell of row.dateCells; track trackByBodyColumn($index, monthCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ monthCell.title }}\"\n (click)=\"monthCellClick($event, monthCell)\"\n [ngClass]=\"monthCell.classMap\"\n >\n @switch (prefixCls) {\n @case ('thy-calendar') {\n <div class=\"{{ prefixCls }}-month-panel-month\">{{ monthCell.content }}</div>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n" }]
|
|
96
|
-
}], ctorParameters: () => [
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2xpYi9tb250aC9tb250aC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL21vbnRoL21vbnRoLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUUxQzs7R0FFRztBQVVILE1BQU0sT0FBTyxVQUFXLFNBQVEsYUFBYTtJQUt6QyxZQUFvQixVQUE2QjtRQUM3QyxLQUFLLEVBQUUsQ0FBQztRQURRLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBSmpELFlBQU8sR0FBRyxDQUFDLENBQUM7UUFFWixZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBSVosQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVk7UUFDUixNQUFNLE1BQU0sR0FB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QUFDLE1BQU0sWUFFckMsYUFBYSxZQUNiLFlBQVksY0FFVixJQUFJLFdBQ1AsQ0FBQyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRpbnlEYXRlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IERhdGVIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhclRhYmxlIH0gZnJvbSAnLi4vY2FsZW5kYXIvY2FsZW5kYXItdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVDZWxsLCBEYXRlQm9keVJvdyB9IGZyb20gJy4uL2RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ21vbnRoLXRhYmxlJyxcbiAgICBleHBvcnRBczogJ21vbnRoVGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnbW9udGgtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nQ2xhc3NdXG59KVxuZXhwb3J0IGNsYXNzIE1vbnRoVGFibGUgZXh0ZW5kcyBDYWxlbmRhclRhYmxlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBNQVhfUk9XID0gNDtcblxuICAgIE1BWF9DT0wgPSAzO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlSGVscGVyOiBEYXRlSGVscGVyU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hvb3NlTW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5hY3RpdmVEYXRlLnNldE1vbnRoKG1vbnRoKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIG1ha2VIZWFkUm93KCk6IERhdGVDZWxsW10ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbWFrZUJvZHlSb3dzKCk6IERhdGVCb2R5Um93W10ge1xuICAgICAgICBjb25zdCBtb250aHM6IERhdGVCb2R5Um93W10gPSBbXTtcbiAgICAgICAgbGV0IG1vbnRoVmFsdWUgPSAwO1xuICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgdGhpcy5NQVhfUk9XOyByb3dJbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCByb3c6IERhdGVCb2R5Um93ID0ge1xuICAgICAgICAgICAgICAgIGRhdGVDZWxsczogW10sXG4gICAgICAgICAgICAgICAgdHJhY2tCeUluZGV4OiByb3dJbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAobGV0IGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCB0aGlzLk1BWF9DT0w7IGNvbEluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb250aCA9IHRoaXMuYWN0aXZlRGF0ZS5zZXRNb250aChtb250aFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZERhdGUgPyB0aGlzLmRpc2FibGVkRGF0ZSh0aGlzLmFjdGl2ZURhdGUuc2V0TW9udGgobW9udGhWYWx1ZSkubmF0aXZlRGF0ZSkgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5kYXRlSGVscGVyLmZvcm1hdChtb250aC5uYXRpdmVEYXRlLCAnTU1NTScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGw6IERhdGVDZWxsID0ge1xuICAgICAgICAgICAgICAgICAgICB0cmFja0J5SW5kZXg6IGNvbEluZGV4LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbW9udGgubmF0aXZlRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTWFwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBtb250aC5pc1NhbWVNb250aCh0aGlzLnZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gdGhpcy5jaG9vc2VNb250aChjZWxsLnZhbHVlLmdldE1vbnRoKCkpLFxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI6ICgpID0+IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZENlbGxQcm9wZXJ0eShjZWxsLCBtb250aCk7XG4gICAgICAgICAgICAgICAgcm93LmRhdGVDZWxscy5wdXNoKGNlbGwpO1xuICAgICAgICAgICAgICAgIG1vbnRoVmFsdWUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vbnRocy5wdXNoKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vbnRocztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZENlbGxQcm9wZXJ0eShjZWxsOiBEYXRlQ2VsbCwgbW9udGg6IFRpbnlEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydFNlbGVjdGVkLCBlbmRTZWxlY3RlZF0gPSB0aGlzLnNlbGVjdGVkVmFsdWU7XG4gICAgICAgICAgICBpZiAoc3RhcnRTZWxlY3RlZD8uaXNTYW1lTW9udGgobW9udGgpKSB7XG4gICAgICAgICAgICAgICAgY2VsbC5pc1NlbGVjdGVkU3RhcnREYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjZWxsLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kU2VsZWN0ZWQ/LmlzU2FtZU1vbnRoKG1vbnRoKSkge1xuICAgICAgICAgICAgICAgIGNlbGwuaXNTZWxlY3RlZEVuZERhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNlbGwuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNlbGwuaXNTdGFydFNpbmdsZSA9IHN0YXJ0U2VsZWN0ZWQgJiYgIWVuZFNlbGVjdGVkO1xuICAgICAgICAgICAgY2VsbC5pc0VuZFNpbmdsZSA9ICFzdGFydFNlbGVjdGVkICYmICEhZW5kU2VsZWN0ZWQ7XG4gICAgICAgICAgICBjZWxsLmlzSW5SYW5nZSA9IHN0YXJ0U2VsZWN0ZWQ/LmlzQmVmb3JlTW9udGgobW9udGgpICYmIG1vbnRoPy5pc0JlZm9yZU1vbnRoKGVuZFNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb250aC5pc1NhbWVNb250aCh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgY2VsbC5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjZWxsLmNsYXNzTWFwID0gdGhpcy5nZXRDbGFzc01hcChjZWxsKTtcbiAgICB9XG5cbiAgICBtb250aENlbGxDbGljayhldmVudDogRXZlbnQsIG1vbnRoQ2VsbDogRGF0ZUNlbGwpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybiBtb250aENlbGwuaXNEaXNhYmxlZCA/IG51bGwgOiBtb250aENlbGwub25DbGljaygpO1xuICAgIH1cblxuICAgIGdldENsYXNzTWFwKGNlbGw6IERhdGVDZWxsKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tb250aC1wYW5lbC1jZWxsYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1vbnRoLXBhbmVsLWNlbGwtZGlzYWJsZWRgXTogY2VsbC5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tb250aC1wYW5lbC1zZWxlY3RlZC1jZWxsYF06IGNlbGwuaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30taW4tcmFuZ2UtY2VsbGBdOiAhIWNlbGwuaXNJblJhbmdlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tb250aC1wYW5lbC1jdXJyZW50LWNlbGxgXTpcbiAgICAgICAgICAgICAgICBuZXcgVGlueURhdGUoKS5nZXRZZWFyKCkgPT09IHRoaXMuYWN0aXZlRGF0ZS5nZXRZZWFyKCkgJiYgY2VsbC52YWx1ZS5nZXRNb250aCgpID09PSBuZXcgVGlueURhdGUoKS5nZXRNb250aCgpXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHRhYmxlIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LW1vbnRoLXBhbmVsLXRhYmxlXCIgY2VsbFNwYWNpbmc9XCIwXCIgcm9sZT1cImdyaWRcIj5cbiAgPHRib2R5IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LW1vbnRoLXBhbmVsLXRib2R5XCI+XG4gICAgQGZvciAocm93IG9mIGJvZHlSb3dzOyB0cmFjayB0cmFja0J5Qm9keVJvdygkaW5kZXgsIHJvdykpIHtcbiAgICAgIDx0ciByb2xlPVwicm93XCI+XG4gICAgICAgIEBmb3IgKG1vbnRoQ2VsbCBvZiByb3cuZGF0ZUNlbGxzOyB0cmFjayB0cmFja0J5Qm9keUNvbHVtbigkaW5kZXgsIG1vbnRoQ2VsbCkpIHtcbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7IG1vbnRoQ2VsbC50aXRsZSB9fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibW9udGhDZWxsQ2xpY2soJGV2ZW50LCBtb250aENlbGwpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm1vbnRoQ2VsbC5jbGFzc01hcFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICBAc3dpdGNoIChwcmVmaXhDbHMpIHtcbiAgICAgICAgICAgICAgQGNhc2UgKCd0aHktY2FsZW5kYXInKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInt7IHByZWZpeENscyB9fS1tb250aC1wYW5lbC1tb250aFwiPnt7IG1vbnRoQ2VsbC5jb250ZW50IH19PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
|
|
95
|
+
}], ctorParameters: () => [] });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2xpYi9tb250aC9tb250aC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvbGliL21vbnRoL21vbnRoLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUxQzs7R0FFRztBQVVILE1BQU0sT0FBTyxVQUFXLFNBQVEsYUFBYTtJQU96QztRQUNJLEtBQUssRUFBRSxDQUFDO1FBUEosZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9DLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFFWixZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBSVosQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVk7UUFDUixN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QUNXLHVCQUF1QixDQUFDLE1BQU0sWUFFckMsYUFBYSxZQUNiLFlBQVksY0FFVixJQUFJLFdBQ1AsQ0FBQyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkNoYW5nZXMsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGlueURhdGUgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRlLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyVGFibGUgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUNlbGwsIERhdGVCb2R5Um93IH0gZnJvbSAnLi4vZGF0ZS90eXBlcyc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnbW9udGgtdGFibGUnLFxuICAgIGV4cG9ydEFzOiAnbW9udGhUYWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICdtb250aC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgTW9udGhUYWJsZSBleHRlbmRzIENhbGVuZGFyVGFibGUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgZGF0ZUhlbHBlciA9IGluamVjdChEYXRlSGVscGVyU2VydmljZSk7XG5cbiAgICBNQVhfUk9XID0gNDtcblxuICAgIE1BWF9DT0wgPSAzO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaG9vc2VNb250aChtb250aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFjdGl2ZURhdGUuc2V0TW9udGgobW9udGgpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgbWFrZUhlYWRSb3coKTogRGF0ZUNlbGxbXSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBtYWtlQm9keVJvd3MoKTogRGF0ZUJvZHlSb3dbXSB7XG4gICAgICAgIGNvbnN0IG1vbnRoczogRGF0ZUJvZHlSb3dbXSA9IFtdO1xuICAgICAgICBsZXQgbW9udGhWYWx1ZSA9IDA7XG4gICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLk1BWF9ST1c7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdzogRGF0ZUJvZHlSb3cgPSB7XG4gICAgICAgICAgICAgICAgZGF0ZUNlbGxzOiBbXSxcbiAgICAgICAgICAgICAgICB0cmFja0J5SW5kZXg6IHJvd0luZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHRoaXMuTUFYX0NPTDsgY29sSW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5hY3RpdmVEYXRlLnNldE1vbnRoKG1vbnRoVmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkRGF0ZSA/IHRoaXMuZGlzYWJsZWREYXRlKHRoaXMuYWN0aXZlRGF0ZS5zZXRNb250aChtb250aFZhbHVlKS5uYXRpdmVEYXRlKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmRhdGVIZWxwZXIuZm9ybWF0KG1vbnRoLm5hdGl2ZURhdGUsICdNTU1NJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbDogRGF0ZUNlbGwgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnlJbmRleDogY29sSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtb250aC5uYXRpdmVEYXRlLFxuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NNYXA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IG1vbnRoLmlzU2FtZU1vbnRoKHRoaXMudmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLmNob29zZU1vbnRoKGNlbGwudmFsdWUuZ2V0TW9udGgoKSksXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4ge31cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2VsbFByb3BlcnR5KGNlbGwsIG1vbnRoKTtcbiAgICAgICAgICAgICAgICByb3cuZGF0ZUNlbGxzLnB1c2goY2VsbCk7XG4gICAgICAgICAgICAgICAgbW9udGhWYWx1ZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbW9udGhzLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9udGhzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQ2VsbFByb3BlcnR5KGNlbGw6IERhdGVDZWxsLCBtb250aDogVGlueURhdGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0U2VsZWN0ZWQsIGVuZFNlbGVjdGVkXSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICAgIGlmIChzdGFydFNlbGVjdGVkPy5pc1NhbWVNb250aChtb250aCkpIHtcbiAgICAgICAgICAgICAgICBjZWxsLmlzU2VsZWN0ZWRTdGFydERhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNlbGwuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmRTZWxlY3RlZD8uaXNTYW1lTW9udGgobW9udGgpKSB7XG4gICAgICAgICAgICAgICAgY2VsbC5pc1NlbGVjdGVkRW5kRGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2VsbC5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2VsbC5pc1N0YXJ0U2luZ2xlID0gc3RhcnRTZWxlY3RlZCAmJiAhZW5kU2VsZWN0ZWQ7XG4gICAgICAgICAgICBjZWxsLmlzRW5kU2luZ2xlID0gIXN0YXJ0U2VsZWN0ZWQgJiYgISFlbmRTZWxlY3RlZDtcbiAgICAgICAgICAgIGNlbGwuaXNJblJhbmdlID0gc3RhcnRTZWxlY3RlZD8uaXNCZWZvcmVNb250aChtb250aCkgJiYgbW9udGg/LmlzQmVmb3JlTW9udGgoZW5kU2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vbnRoLmlzU2FtZU1vbnRoKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICBjZWxsLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNlbGwuY2xhc3NNYXAgPSB0aGlzLmdldENsYXNzTWFwKGNlbGwpO1xuICAgIH1cblxuICAgIG1vbnRoQ2VsbENsaWNrKGV2ZW50OiBFdmVudCwgbW9udGhDZWxsOiBEYXRlQ2VsbCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIG1vbnRoQ2VsbC5pc0Rpc2FibGVkID8gbnVsbCA6IG1vbnRoQ2VsbC5vbkNsaWNrKCk7XG4gICAgfVxuXG4gICAgZ2V0Q2xhc3NNYXAoY2VsbDogRGF0ZUNlbGwpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1vbnRoLXBhbmVsLWNlbGxgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tbW9udGgtcGFuZWwtY2VsbC1kaXNhYmxlZGBdOiBjZWxsLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1vbnRoLXBhbmVsLXNlbGVjdGVkLWNlbGxgXTogY2VsbC5pc1NlbGVjdGVkLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1pbi1yYW5nZS1jZWxsYF06ICEhY2VsbC5pc0luUmFuZ2UsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1vbnRoLXBhbmVsLWN1cnJlbnQtY2VsbGBdOlxuICAgICAgICAgICAgICAgIG5ldyBUaW55RGF0ZSgpLmdldFllYXIoKSA9PT0gdGhpcy5hY3RpdmVEYXRlLmdldFllYXIoKSAmJiBjZWxsLnZhbHVlLmdldE1vbnRoKCkgPT09IG5ldyBUaW55RGF0ZSgpLmdldE1vbnRoKClcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbW9udGgtcGFuZWwtdGFibGVcIiBjZWxsU3BhY2luZz1cIjBcIiByb2xlPVwiZ3JpZFwiPlxuICA8dGJvZHkgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tbW9udGgtcGFuZWwtdGJvZHlcIj5cbiAgICBAZm9yIChyb3cgb2YgYm9keVJvd3M7IHRyYWNrIHRyYWNrQnlCb2R5Um93KCRpbmRleCwgcm93KSkge1xuICAgICAgPHRyIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgQGZvciAobW9udGhDZWxsIG9mIHJvdy5kYXRlQ2VsbHM7IHRyYWNrIHRyYWNrQnlCb2R5Q29sdW1uKCRpbmRleCwgbW9udGhDZWxsKSkge1xuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgbW9udGhDZWxsLnRpdGxlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJtb250aENlbGxDbGljaygkZXZlbnQsIG1vbnRoQ2VsbClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwibW9udGhDZWxsLmNsYXNzTWFwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIEBzd2l0Y2ggKHByZWZpeENscykge1xuICAgICAgICAgICAgICBAY2FzZSAoJ3RoeS1jYWxlbmRhcicpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LW1vbnRoLXBhbmVsLW1vbnRoXCI+e3sgbW9udGhDZWxsLmNvbnRlbnQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgfVxuICA8L3Rib2R5PlxuPC90YWJsZT5cbiJdfQ==
|