@ng-nest/ui 12.0.5 → 12.0.10
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/auto-complete/auto-complete-portal.component.d.ts +3 -3
- package/auto-complete/auto-complete.component.d.ts +6 -2
- package/auto-complete/auto-complete.property.d.ts +17 -2
- package/back-top/back-top.component.d.ts +1 -2
- package/base-form/base-form.component.d.ts +1 -1
- package/base-form/base-form.property.d.ts +48 -3
- package/bundles/ng-nest-ui-affix.umd.js +25 -21
- package/bundles/ng-nest-ui-affix.umd.js.map +1 -1
- package/bundles/ng-nest-ui-alert.umd.js +25 -21
- package/bundles/ng-nest-ui-alert.umd.js.map +1 -1
- package/bundles/ng-nest-ui-anchor.umd.js +26 -22
- package/bundles/ng-nest-ui-anchor.umd.js.map +1 -1
- package/bundles/ng-nest-ui-api.umd.js +12 -14
- package/bundles/ng-nest-ui-api.umd.js.map +1 -1
- package/bundles/ng-nest-ui-auto-complete.umd.js +74 -36
- package/bundles/ng-nest-ui-auto-complete.umd.js.map +1 -1
- package/bundles/ng-nest-ui-avatar.umd.js +25 -21
- package/bundles/ng-nest-ui-avatar.umd.js.map +1 -1
- package/bundles/ng-nest-ui-back-top.umd.js +27 -23
- package/bundles/ng-nest-ui-back-top.umd.js.map +1 -1
- package/bundles/ng-nest-ui-badge.umd.js +27 -22
- package/bundles/ng-nest-ui-badge.umd.js.map +1 -1
- package/bundles/ng-nest-ui-base-form.umd.js +67 -22
- package/bundles/ng-nest-ui-base-form.umd.js.map +1 -1
- package/bundles/ng-nest-ui-border.umd.js +12 -14
- package/bundles/ng-nest-ui-border.umd.js.map +1 -1
- package/bundles/ng-nest-ui-button.umd.js +36 -29
- package/bundles/ng-nest-ui-button.umd.js.map +1 -1
- package/bundles/ng-nest-ui-calendar.umd.js +29 -24
- package/bundles/ng-nest-ui-calendar.umd.js.map +1 -1
- package/bundles/ng-nest-ui-card.umd.js +25 -21
- package/bundles/ng-nest-ui-card.umd.js.map +1 -1
- package/bundles/ng-nest-ui-carousel.umd.js +35 -30
- package/bundles/ng-nest-ui-carousel.umd.js.map +1 -1
- package/bundles/ng-nest-ui-cascade.umd.js +94 -36
- package/bundles/ng-nest-ui-cascade.umd.js.map +1 -1
- package/bundles/ng-nest-ui-checkbox.umd.js +28 -23
- package/bundles/ng-nest-ui-checkbox.umd.js.map +1 -1
- package/bundles/ng-nest-ui-collapse.umd.js +31 -27
- package/bundles/ng-nest-ui-collapse.umd.js.map +1 -1
- package/bundles/ng-nest-ui-color-picker.umd.js +79 -44
- package/bundles/ng-nest-ui-color-picker.umd.js.map +1 -1
- package/bundles/ng-nest-ui-color.umd.js +26 -22
- package/bundles/ng-nest-ui-color.umd.js.map +1 -1
- package/bundles/ng-nest-ui-comment.umd.js +34 -29
- package/bundles/ng-nest-ui-comment.umd.js.map +1 -1
- package/bundles/ng-nest-ui-container.umd.js +46 -42
- package/bundles/ng-nest-ui-container.umd.js.map +1 -1
- package/bundles/ng-nest-ui-core.umd.js +136 -35
- package/bundles/ng-nest-ui-core.umd.js.map +1 -1
- package/bundles/ng-nest-ui-crumb.umd.js +28 -23
- package/bundles/ng-nest-ui-crumb.umd.js.map +1 -1
- package/bundles/ng-nest-ui-date-picker.umd.js +923 -176
- package/bundles/ng-nest-ui-date-picker.umd.js.map +1 -1
- package/bundles/ng-nest-ui-description.umd.js +35 -32
- package/bundles/ng-nest-ui-description.umd.js.map +1 -1
- package/bundles/ng-nest-ui-dialog.umd.js +27 -22
- package/bundles/ng-nest-ui-dialog.umd.js.map +1 -1
- package/bundles/ng-nest-ui-doc.umd.js +12 -14
- package/bundles/ng-nest-ui-doc.umd.js.map +1 -1
- package/bundles/ng-nest-ui-drawer.umd.js +27 -22
- package/bundles/ng-nest-ui-drawer.umd.js.map +1 -1
- package/bundles/ng-nest-ui-dropdown.umd.js +32 -27
- package/bundles/ng-nest-ui-dropdown.umd.js.map +1 -1
- package/bundles/ng-nest-ui-empty.umd.js +25 -21
- package/bundles/ng-nest-ui-empty.umd.js.map +1 -1
- package/bundles/ng-nest-ui-examples.umd.js +12 -14
- package/bundles/ng-nest-ui-examples.umd.js.map +1 -1
- package/bundles/ng-nest-ui-find.umd.js +45 -27
- package/bundles/ng-nest-ui-find.umd.js.map +1 -1
- package/bundles/ng-nest-ui-form.umd.js +36 -36
- package/bundles/ng-nest-ui-form.umd.js.map +1 -1
- package/bundles/ng-nest-ui-highlight.umd.js +27 -22
- package/bundles/ng-nest-ui-highlight.umd.js.map +1 -1
- package/bundles/ng-nest-ui-i18n.umd.js +545 -140
- package/bundles/ng-nest-ui-i18n.umd.js.map +1 -1
- package/bundles/ng-nest-ui-icon.umd.js +34 -29
- package/bundles/ng-nest-ui-icon.umd.js.map +1 -1
- package/bundles/ng-nest-ui-inner.umd.js +26 -22
- package/bundles/ng-nest-ui-inner.umd.js.map +1 -1
- package/bundles/ng-nest-ui-input-number.umd.js +44 -24
- package/bundles/ng-nest-ui-input-number.umd.js.map +1 -1
- package/bundles/ng-nest-ui-input.umd.js +208 -50
- package/bundles/ng-nest-ui-input.umd.js.map +1 -1
- package/bundles/ng-nest-ui-layout.umd.js +31 -27
- package/bundles/ng-nest-ui-layout.umd.js.map +1 -1
- package/bundles/ng-nest-ui-link.umd.js +25 -21
- package/bundles/ng-nest-ui-link.umd.js.map +1 -1
- package/bundles/ng-nest-ui-list.umd.js +35 -30
- package/bundles/ng-nest-ui-list.umd.js.map +1 -1
- package/bundles/ng-nest-ui-loading.umd.js +27 -22
- package/bundles/ng-nest-ui-loading.umd.js.map +1 -1
- package/bundles/ng-nest-ui-menu.umd.js +38 -31
- package/bundles/ng-nest-ui-menu.umd.js.map +1 -1
- package/bundles/ng-nest-ui-message-box.umd.js +53 -47
- package/bundles/ng-nest-ui-message-box.umd.js.map +1 -1
- package/bundles/ng-nest-ui-message.umd.js +26 -22
- package/bundles/ng-nest-ui-message.umd.js.map +1 -1
- package/bundles/ng-nest-ui-notification.umd.js +26 -22
- package/bundles/ng-nest-ui-notification.umd.js.map +1 -1
- package/bundles/ng-nest-ui-outlet.umd.js +22 -18
- package/bundles/ng-nest-ui-outlet.umd.js.map +1 -1
- package/bundles/ng-nest-ui-page-header.umd.js +25 -21
- package/bundles/ng-nest-ui-page-header.umd.js.map +1 -1
- package/bundles/ng-nest-ui-pagination.umd.js +115 -26
- package/bundles/ng-nest-ui-pagination.umd.js.map +1 -1
- package/bundles/ng-nest-ui-pattern.umd.js +12 -14
- package/bundles/ng-nest-ui-pattern.umd.js.map +1 -1
- package/bundles/ng-nest-ui-popconfirm.umd.js +25 -21
- package/bundles/ng-nest-ui-popconfirm.umd.js.map +1 -1
- package/bundles/ng-nest-ui-popover.umd.js +31 -26
- package/bundles/ng-nest-ui-popover.umd.js.map +1 -1
- package/bundles/ng-nest-ui-portal.umd.js +22 -18
- package/bundles/ng-nest-ui-portal.umd.js.map +1 -1
- package/bundles/ng-nest-ui-progress.umd.js +28 -23
- package/bundles/ng-nest-ui-progress.umd.js.map +1 -1
- package/bundles/ng-nest-ui-radio.umd.js +28 -23
- package/bundles/ng-nest-ui-radio.umd.js.map +1 -1
- package/bundles/ng-nest-ui-rate.umd.js +30 -26
- package/bundles/ng-nest-ui-rate.umd.js.map +1 -1
- package/bundles/ng-nest-ui-result.umd.js +25 -21
- package/bundles/ng-nest-ui-result.umd.js.map +1 -1
- package/bundles/ng-nest-ui-ripple.umd.js +25 -21
- package/bundles/ng-nest-ui-ripple.umd.js.map +1 -1
- package/bundles/ng-nest-ui-select.umd.js +53 -34
- package/bundles/ng-nest-ui-select.umd.js.map +1 -1
- package/bundles/ng-nest-ui-skeleton.umd.js +27 -22
- package/bundles/ng-nest-ui-skeleton.umd.js.map +1 -1
- package/bundles/ng-nest-ui-slider-select.umd.js +25 -21
- package/bundles/ng-nest-ui-slider-select.umd.js.map +1 -1
- package/bundles/ng-nest-ui-slider.umd.js +32 -29
- package/bundles/ng-nest-ui-slider.umd.js.map +1 -1
- package/bundles/ng-nest-ui-statistic.umd.js +37 -31
- package/bundles/ng-nest-ui-statistic.umd.js.map +1 -1
- package/bundles/ng-nest-ui-steps.umd.js +35 -27
- package/bundles/ng-nest-ui-steps.umd.js.map +1 -1
- package/bundles/ng-nest-ui-switch.umd.js +25 -21
- package/bundles/ng-nest-ui-switch.umd.js.map +1 -1
- package/bundles/ng-nest-ui-table.umd.js +58 -51
- package/bundles/ng-nest-ui-table.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tabs.umd.js +39 -34
- package/bundles/ng-nest-ui-tabs.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tag.umd.js +36 -21
- package/bundles/ng-nest-ui-tag.umd.js.map +1 -1
- package/bundles/ng-nest-ui-text-retract.umd.js +27 -22
- package/bundles/ng-nest-ui-text-retract.umd.js.map +1 -1
- package/bundles/ng-nest-ui-textarea.umd.js +27 -32
- package/bundles/ng-nest-ui-textarea.umd.js.map +1 -1
- package/bundles/ng-nest-ui-theme.umd.js +26 -22
- package/bundles/ng-nest-ui-theme.umd.js.map +1 -1
- package/bundles/ng-nest-ui-time-ago.umd.js +12 -14
- package/bundles/ng-nest-ui-time-ago.umd.js.map +1 -1
- package/bundles/ng-nest-ui-time-picker.umd.js +87 -46
- package/bundles/ng-nest-ui-time-picker.umd.js.map +1 -1
- package/bundles/ng-nest-ui-time-range.umd.js +22 -18
- package/bundles/ng-nest-ui-time-range.umd.js.map +1 -1
- package/bundles/ng-nest-ui-timeline.umd.js +28 -23
- package/bundles/ng-nest-ui-timeline.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tooltip.umd.js +31 -26
- package/bundles/ng-nest-ui-tooltip.umd.js.map +1 -1
- package/bundles/ng-nest-ui-transfer.umd.js +28 -23
- package/bundles/ng-nest-ui-transfer.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tree-file.umd.js +25 -21
- package/bundles/ng-nest-ui-tree-file.umd.js.map +1 -1
- package/bundles/ng-nest-ui-tree.umd.js +39 -34
- package/bundles/ng-nest-ui-tree.umd.js.map +1 -1
- package/bundles/ng-nest-ui-typography.umd.js +25 -21
- package/bundles/ng-nest-ui-typography.umd.js.map +1 -1
- package/bundles/ng-nest-ui-upload.umd.js +32 -27
- package/bundles/ng-nest-ui-upload.umd.js.map +1 -1
- package/bundles/ng-nest-ui.umd.js +83 -243
- package/bundles/ng-nest-ui.umd.js.map +1 -1
- package/button/buttons.component.d.ts +1 -1
- package/calendar/calendar.component.d.ts +2 -2
- package/carousel/carousel.component.d.ts +1 -1
- package/cascade/cascade-portal.component.d.ts +13 -7
- package/cascade/cascade.component.d.ts +7 -1
- package/cascade/cascade.property.d.ts +33 -3
- package/checkbox/checkbox.component.d.ts +1 -1
- package/color/color.component.d.ts +2 -2
- package/color-picker/color-picker-portal.component.d.ts +3 -3
- package/color-picker/color-picker.component.d.ts +10 -4
- package/color-picker/color-picker.property.d.ts +12 -2
- package/comment/comment.component.d.ts +1 -1
- package/core/config/config.d.ts +39 -0
- package/core/functions/clone-deep.d.ts +1 -0
- package/core/functions/drop.d.ts +1 -0
- package/core/functions/flex.d.ts +1 -1
- package/core/functions/has-in.d.ts +1 -0
- package/core/functions/order-by.d.ts +1 -0
- package/core/functions/public-api.d.ts +5 -0
- package/core/functions/remove.d.ts +1 -0
- package/core/services/reuse-strategy.service.d.ts +1 -1
- package/crumb/crumb.component.d.ts +1 -1
- package/date-picker/date-picker-portal.component.d.ts +10 -12
- package/date-picker/date-picker.component.d.ts +5 -5
- package/date-picker/date-picker.module.d.ts +12 -10
- package/date-picker/date-picker.property.d.ts +169 -8
- package/date-picker/date-range-portal.component.d.ts +65 -0
- package/date-picker/date-range.component.d.ts +74 -0
- package/date-picker/picker-date.component.d.ts +13 -4
- package/date-picker/picker-month.component.d.ts +6 -3
- package/date-picker/picker-year.component.d.ts +4 -2
- package/date-picker/public-api.d.ts +2 -0
- package/description/description.component.d.ts +2 -4
- package/dropdown/dropdown-portal.component.d.ts +1 -3
- package/dropdown/dropdown.component.d.ts +2 -2
- package/esm2015/affix/affix.component.js +3 -3
- package/esm2015/affix/affix.module.js +4 -4
- package/esm2015/affix/affix.property.js +3 -3
- package/esm2015/alert/alert.component.js +4 -4
- package/esm2015/alert/alert.module.js +4 -4
- package/esm2015/alert/alert.property.js +3 -3
- package/esm2015/anchor/anchor.component.js +5 -5
- package/esm2015/anchor/anchor.module.js +4 -4
- package/esm2015/anchor/anchor.property.js +4 -4
- package/esm2015/api/api.component.js +3 -3
- package/esm2015/api/api.module.js +4 -4
- package/esm2015/auto-complete/auto-complete-portal.component.js +6 -6
- package/esm2015/auto-complete/auto-complete.component.js +29 -12
- package/esm2015/auto-complete/auto-complete.module.js +4 -4
- package/esm2015/auto-complete/auto-complete.property.js +22 -5
- package/esm2015/avatar/avatar.component.js +3 -3
- package/esm2015/avatar/avatar.module.js +4 -4
- package/esm2015/avatar/avatar.property.js +3 -3
- package/esm2015/back-top/back-top.component.js +6 -6
- package/esm2015/back-top/back-top.module.js +4 -4
- package/esm2015/back-top/back-top.property.js +3 -3
- package/esm2015/badge/badge.component.js +6 -5
- package/esm2015/badge/badge.module.js +4 -4
- package/esm2015/badge/badge.property.js +3 -3
- package/esm2015/base-form/base-form.component.js +5 -5
- package/esm2015/base-form/base-form.module.js +4 -4
- package/esm2015/base-form/base-form.property.js +46 -5
- package/esm2015/border/border.component.js +3 -3
- package/esm2015/border/border.module.js +4 -4
- package/esm2015/button/button.component.js +10 -7
- package/esm2015/button/button.module.js +4 -4
- package/esm2015/button/button.property.js +6 -6
- package/esm2015/button/buttons.component.js +4 -4
- package/esm2015/calendar/calendar.component.js +8 -7
- package/esm2015/calendar/calendar.module.js +4 -4
- package/esm2015/calendar/calendar.property.js +3 -3
- package/esm2015/card/card.component.js +3 -3
- package/esm2015/card/card.module.js +4 -4
- package/esm2015/card/card.property.js +3 -3
- package/esm2015/carousel/carousel-panel.component.js +4 -4
- package/esm2015/carousel/carousel.component.js +8 -7
- package/esm2015/carousel/carousel.module.js +4 -4
- package/esm2015/carousel/carousel.property.js +6 -6
- package/esm2015/cascade/cascade-portal.component.js +23 -11
- package/esm2015/cascade/cascade.component.js +25 -9
- package/esm2015/cascade/cascade.module.js +4 -4
- package/esm2015/cascade/cascade.property.js +28 -5
- package/esm2015/checkbox/checkbox.component.js +7 -6
- package/esm2015/checkbox/checkbox.module.js +4 -4
- package/esm2015/checkbox/checkbox.property.js +4 -4
- package/esm2015/collapse/collapse-panel.component.js +4 -4
- package/esm2015/collapse/collapse.component.js +3 -3
- package/esm2015/collapse/collapse.module.js +4 -4
- package/esm2015/collapse/collapse.property.js +6 -6
- package/esm2015/color/color.component.js +5 -5
- package/esm2015/color/color.module.js +4 -4
- package/esm2015/color/color.property.js +3 -3
- package/esm2015/color-picker/color-picker-portal.component.js +5 -5
- package/esm2015/color-picker/color-picker.component.js +33 -14
- package/esm2015/color-picker/color-picker.module.js +4 -4
- package/esm2015/color-picker/color-picker.property.js +16 -5
- package/esm2015/comment/comment-reply.component.js +3 -3
- package/esm2015/comment/comment.component.js +7 -6
- package/esm2015/comment/comment.module.js +4 -4
- package/esm2015/comment/comment.property.js +6 -6
- package/esm2015/container/aside.component.js +3 -3
- package/esm2015/container/container.component.js +5 -5
- package/esm2015/container/container.module.js +4 -4
- package/esm2015/container/container.property.js +12 -12
- package/esm2015/container/footer.component.js +3 -3
- package/esm2015/container/header.component.js +3 -3
- package/esm2015/container/main.component.js +3 -3
- package/esm2015/core/animation/fade.js +1 -1
- package/esm2015/core/config/config.js +1 -1
- package/esm2015/core/config/config.service.js +3 -3
- package/esm2015/core/functions/clone-deep.js +12 -0
- package/esm2015/core/functions/drop.js +8 -0
- package/esm2015/core/functions/flex.js +18 -7
- package/esm2015/core/functions/has-in.js +4 -0
- package/esm2015/core/functions/order-by.js +31 -0
- package/esm2015/core/functions/public-api.js +6 -1
- package/esm2015/core/functions/remove.js +15 -0
- package/esm2015/core/services/http.service.js +5 -5
- package/esm2015/core/services/preloading-strategy.service.js +5 -5
- package/esm2015/core/services/reuse-strategy.service.js +2 -2
- package/esm2015/core/services/storage.service.js +3 -3
- package/esm2015/core/theme/theme.service.js +3 -3
- package/esm2015/crumb/crumb.component.js +7 -6
- package/esm2015/crumb/crumb.module.js +4 -4
- package/esm2015/crumb/crumb.property.js +3 -3
- package/esm2015/date-picker/date-picker-portal.component.js +24 -43
- package/esm2015/date-picker/date-picker.component.js +24 -23
- package/esm2015/date-picker/date-picker.module.js +31 -11
- package/esm2015/date-picker/date-picker.property.js +190 -19
- package/esm2015/date-picker/date-range-portal.component.js +208 -0
- package/esm2015/date-picker/date-range.component.js +307 -0
- package/esm2015/date-picker/picker-date.component.js +50 -15
- package/esm2015/date-picker/picker-month.component.js +25 -9
- package/esm2015/date-picker/picker-year.component.js +21 -9
- package/esm2015/date-picker/public-api.js +3 -1
- package/esm2015/description/description-item.component.js +4 -4
- package/esm2015/description/description.component.js +8 -9
- package/esm2015/description/description.module.js +4 -4
- package/esm2015/description/description.property.js +6 -6
- package/esm2015/dialog/dialog.component.js +6 -5
- package/esm2015/dialog/dialog.module.js +4 -4
- package/esm2015/dialog/dialog.property.js +4 -4
- package/esm2015/doc/doc.component.js +3 -3
- package/esm2015/doc/doc.module.js +4 -4
- package/esm2015/drawer/drawer.component.js +6 -5
- package/esm2015/drawer/drawer.module.js +4 -4
- package/esm2015/drawer/drawer.property.js +3 -3
- package/esm2015/dropdown/dropdown-portal.component.js +5 -5
- package/esm2015/dropdown/dropdown.component.js +7 -6
- package/esm2015/dropdown/dropdown.module.js +4 -4
- package/esm2015/dropdown/dropdown.property.js +3 -3
- package/esm2015/empty/empty.component.js +3 -3
- package/esm2015/empty/empty.module.js +4 -4
- package/esm2015/empty/empty.property.js +3 -3
- package/esm2015/examples/examples.component.js +3 -3
- package/esm2015/examples/examples.module.js +4 -4
- package/esm2015/find/find.component.js +13 -10
- package/esm2015/find/find.module.js +4 -4
- package/esm2015/find/find.property.js +16 -5
- package/esm2015/form/control.component.js +4 -4
- package/esm2015/form/form.component.js +9 -8
- package/esm2015/form/form.module.js +4 -4
- package/esm2015/form/form.property.js +8 -13
- package/esm2015/highlight/highlight.component.js +6 -5
- package/esm2015/highlight/highlight.module.js +4 -4
- package/esm2015/highlight/highlight.property.js +4 -4
- package/esm2015/i18n/i18n.directive.js +6 -5
- package/esm2015/i18n/i18n.module.js +4 -4
- package/esm2015/i18n/i18n.pipe.js +3 -3
- package/esm2015/i18n/i18n.property.js +1 -1
- package/esm2015/i18n/i18n.service.js +3 -3
- package/esm2015/i18n/languages/ar_EG.js +11 -3
- package/esm2015/i18n/languages/bg_BG.js +11 -3
- package/esm2015/i18n/languages/ca_ES.js +11 -3
- package/esm2015/i18n/languages/cs_CZ.js +11 -3
- package/esm2015/i18n/languages/da_DK.js +11 -3
- package/esm2015/i18n/languages/de_DE.js +11 -3
- package/esm2015/i18n/languages/el_GR.js +11 -3
- package/esm2015/i18n/languages/en_GB.js +11 -3
- package/esm2015/i18n/languages/en_US.js +11 -3
- package/esm2015/i18n/languages/es_ES.js +11 -3
- package/esm2015/i18n/languages/et_EE.js +11 -3
- package/esm2015/i18n/languages/fa_IR.js +11 -3
- package/esm2015/i18n/languages/fi_FI.js +11 -3
- package/esm2015/i18n/languages/fr_BE.js +10 -2
- package/esm2015/i18n/languages/fr_FR.js +11 -3
- package/esm2015/i18n/languages/he_IL.js +11 -3
- package/esm2015/i18n/languages/hi_IN.js +11 -3
- package/esm2015/i18n/languages/hr_HR.js +11 -3
- package/esm2015/i18n/languages/hu_HU.js +11 -3
- package/esm2015/i18n/languages/hy_AM.js +11 -3
- package/esm2015/i18n/languages/id_ID.js +11 -3
- package/esm2015/i18n/languages/is_IS.js +11 -3
- package/esm2015/i18n/languages/it_IT.js +11 -3
- package/esm2015/i18n/languages/ja_JP.js +11 -3
- package/esm2015/i18n/languages/ka_GE.js +11 -3
- package/esm2015/i18n/languages/kn_IN.js +11 -3
- package/esm2015/i18n/languages/ko_KR.js +11 -3
- package/esm2015/i18n/languages/ku_IQ.js +11 -3
- package/esm2015/i18n/languages/lv_LV.js +11 -3
- package/esm2015/i18n/languages/mn_MN.js +11 -3
- package/esm2015/i18n/languages/ms_MY.js +11 -3
- package/esm2015/i18n/languages/nb_NO.js +11 -3
- package/esm2015/i18n/languages/ne_NP.js +11 -3
- package/esm2015/i18n/languages/nl_BE.js +11 -3
- package/esm2015/i18n/languages/nl_NL.js +11 -3
- package/esm2015/i18n/languages/pl_PL.js +11 -3
- package/esm2015/i18n/languages/pt_BR.js +11 -3
- package/esm2015/i18n/languages/pt_PT.js +11 -3
- package/esm2015/i18n/languages/ro_RO.js +11 -3
- package/esm2015/i18n/languages/ru_RU.js +11 -3
- package/esm2015/i18n/languages/sk_SK.js +11 -3
- package/esm2015/i18n/languages/sl_SI.js +11 -3
- package/esm2015/i18n/languages/sr_RS.js +11 -3
- package/esm2015/i18n/languages/sv_SE.js +11 -3
- package/esm2015/i18n/languages/ta_IN.js +11 -3
- package/esm2015/i18n/languages/th_TH.js +29 -21
- package/esm2015/i18n/languages/tr_TR.js +11 -3
- package/esm2015/i18n/languages/uk_UA.js +11 -3
- package/esm2015/i18n/languages/vi_VN.js +11 -3
- package/esm2015/i18n/languages/zh_CN.js +10 -3
- package/esm2015/i18n/languages/zh_TW.js +10 -3
- package/esm2015/icon/icon.component.js +7 -6
- package/esm2015/icon/icon.module.js +4 -4
- package/esm2015/icon/icon.property.js +3 -3
- package/esm2015/icon/icon.service.js +6 -6
- package/esm2015/inner/inner.component.js +5 -5
- package/esm2015/inner/inner.module.js +4 -4
- package/esm2015/inner/inner.property.js +3 -3
- package/esm2015/input/input-group.component.js +26 -0
- package/esm2015/input/input.component.js +60 -15
- package/esm2015/input/input.module.js +11 -9
- package/esm2015/input/input.property.js +77 -22
- package/esm2015/input/public-api.js +2 -1
- package/esm2015/input-number/input-number.component.js +9 -5
- package/esm2015/input-number/input-number.module.js +7 -6
- package/esm2015/input-number/input-number.property.js +17 -5
- package/esm2015/layout/col.component.js +3 -3
- package/esm2015/layout/layout.module.js +4 -4
- package/esm2015/layout/layout.property.js +6 -6
- package/esm2015/layout/row.component.js +3 -3
- package/esm2015/link/link.component.js +3 -3
- package/esm2015/link/link.module.js +4 -4
- package/esm2015/link/link.property.js +3 -3
- package/esm2015/list/list-option.component.js +3 -3
- package/esm2015/list/list.component.js +8 -7
- package/esm2015/list/list.module.js +4 -4
- package/esm2015/list/list.property.js +7 -7
- package/esm2015/loading/loading.component.js +6 -5
- package/esm2015/loading/loading.module.js +4 -4
- package/esm2015/loading/loading.property.js +3 -3
- package/esm2015/menu/menu-node.component.js +4 -4
- package/esm2015/menu/menu.component.js +11 -8
- package/esm2015/menu/menu.module.js +4 -4
- package/esm2015/menu/menu.property.js +6 -6
- package/esm2015/message/message.component.js +5 -5
- package/esm2015/message/message.module.js +4 -4
- package/esm2015/message/message.service.js +3 -3
- package/esm2015/message-box/message-box.component.js +20 -24
- package/esm2015/message-box/message-box.module.js +4 -4
- package/esm2015/message-box/message-box.service.js +10 -8
- package/esm2015/notification/notification.component.js +5 -5
- package/esm2015/notification/notification.module.js +4 -4
- package/esm2015/notification/notification.property.js +1 -1
- package/esm2015/notification/notification.service.js +3 -3
- package/esm2015/outlet/outlet.directive.js +3 -3
- package/esm2015/outlet/outlet.module.js +4 -4
- package/esm2015/page-header/page-header.component.js +3 -3
- package/esm2015/page-header/page-header.module.js +4 -4
- package/esm2015/page-header/page-header.property.js +3 -3
- package/esm2015/pagination/pagination.component.js +45 -7
- package/esm2015/pagination/pagination.module.js +10 -6
- package/esm2015/pagination/pagination.property.js +52 -4
- package/esm2015/pattern/pattern.component.js +3 -3
- package/esm2015/pattern/pattern.module.js +4 -4
- package/esm2015/popconfirm/popconfirm.component.js +3 -3
- package/esm2015/popconfirm/popconfirm.module.js +4 -4
- package/esm2015/popconfirm/popconfirm.property.js +3 -3
- package/esm2015/popover/popover-portal.component.js +4 -4
- package/esm2015/popover/popover.directive.js +7 -6
- package/esm2015/popover/popover.module.js +4 -4
- package/esm2015/popover/popover.property.js +3 -3
- package/esm2015/portal/portal.module.js +4 -4
- package/esm2015/portal/portal.service.js +3 -3
- package/esm2015/progress/progress.component.js +7 -6
- package/esm2015/progress/progress.module.js +4 -4
- package/esm2015/progress/progress.property.js +3 -3
- package/esm2015/radio/radio.component.js +7 -6
- package/esm2015/radio/radio.module.js +4 -4
- package/esm2015/radio/radio.property.js +4 -4
- package/esm2015/rate/rate.component.js +9 -9
- package/esm2015/rate/rate.module.js +4 -4
- package/esm2015/rate/rate.property.js +3 -3
- package/esm2015/result/result.component.js +3 -3
- package/esm2015/result/result.module.js +4 -4
- package/esm2015/result/result.property.js +3 -3
- package/esm2015/ripple/ripple.directive.js +4 -4
- package/esm2015/ripple/ripple.module.js +4 -4
- package/esm2015/ripple/ripple.property.js +4 -4
- package/esm2015/select/select-portal.component.js +6 -6
- package/esm2015/select/select.component.js +15 -11
- package/esm2015/select/select.module.js +4 -4
- package/esm2015/select/select.property.js +15 -4
- package/esm2015/skeleton/skeleton.component.js +6 -5
- package/esm2015/skeleton/skeleton.module.js +4 -4
- package/esm2015/skeleton/skeleton.property.js +3 -3
- package/esm2015/slider/slider.component.js +11 -12
- package/esm2015/slider/slider.module.js +4 -4
- package/esm2015/slider/slider.property.js +3 -3
- package/esm2015/slider-select/slider-select.component.js +3 -3
- package/esm2015/slider-select/slider-select.module.js +4 -4
- package/esm2015/slider-select/slider-select.property.js +3 -3
- package/esm2015/statistic/countdown.component.js +8 -7
- package/esm2015/statistic/statistic.component.js +6 -5
- package/esm2015/statistic/statistic.module.js +4 -4
- package/esm2015/statistic/statistic.property.js +6 -6
- package/esm2015/steps/steps.component.js +9 -7
- package/esm2015/steps/steps.module.js +7 -6
- package/esm2015/steps/steps.property.js +6 -4
- package/esm2015/switch/switch.component.js +3 -3
- package/esm2015/switch/switch.module.js +4 -4
- package/esm2015/switch/switch.property.js +3 -3
- package/esm2015/table/drag.directive.js +5 -5
- package/esm2015/table/table-body.component.js +7 -6
- package/esm2015/table/table-foot.component.js +4 -4
- package/esm2015/table/table-head.component.js +7 -6
- package/esm2015/table/table.component.js +9 -8
- package/esm2015/table/table.module.js +4 -4
- package/esm2015/table/table.property.js +13 -13
- package/esm2015/tabs/tab-content.component.js +3 -3
- package/esm2015/tabs/tab.component.js +4 -4
- package/esm2015/tabs/tabs.component.js +9 -8
- package/esm2015/tabs/tabs.module.js +4 -4
- package/esm2015/tabs/tabs.property.js +6 -6
- package/esm2015/tag/tag.component.js +10 -5
- package/esm2015/tag/tag.module.js +4 -4
- package/esm2015/tag/tag.property.js +10 -4
- package/esm2015/text-retract/text-retract.component.js +6 -5
- package/esm2015/text-retract/text-retract.module.js +4 -4
- package/esm2015/text-retract/text-retract.property.js +3 -3
- package/esm2015/textarea/textarea.component.js +6 -5
- package/esm2015/textarea/textarea.module.js +4 -4
- package/esm2015/textarea/textarea.property.js +4 -14
- package/esm2015/theme/theme.component.js +5 -5
- package/esm2015/theme/theme.module.js +4 -4
- package/esm2015/theme/theme.property.js +4 -4
- package/esm2015/time-ago/time-ago.module.js +4 -4
- package/esm2015/time-ago/time-ago.pipe.js +3 -3
- package/esm2015/time-picker/time-picker-frame.component.js +22 -12
- package/esm2015/time-picker/time-picker-portal.component.js +5 -5
- package/esm2015/time-picker/time-picker.component.js +31 -15
- package/esm2015/time-picker/time-picker.module.js +4 -4
- package/esm2015/time-picker/time-picker.property.js +16 -5
- package/esm2015/time-range/time-range.module.js +4 -4
- package/esm2015/time-range/time-range.pipe.js +3 -3
- package/esm2015/timeline/timeline.component.js +7 -6
- package/esm2015/timeline/timeline.module.js +4 -4
- package/esm2015/timeline/timeline.property.js +3 -3
- package/esm2015/tooltip/tooltip-portal.component.js +4 -4
- package/esm2015/tooltip/tooltip.directive.js +7 -6
- package/esm2015/tooltip/tooltip.module.js +4 -4
- package/esm2015/tooltip/tooltip.property.js +4 -4
- package/esm2015/transfer/transfer.component.js +7 -6
- package/esm2015/transfer/transfer.module.js +4 -4
- package/esm2015/transfer/transfer.property.js +3 -3
- package/esm2015/tree/tree-node.component.js +5 -5
- package/esm2015/tree/tree.component.js +11 -10
- package/esm2015/tree/tree.module.js +4 -4
- package/esm2015/tree/tree.property.js +7 -7
- package/esm2015/tree-file/tree-file.component.js +3 -3
- package/esm2015/tree-file/tree-file.module.js +4 -4
- package/esm2015/tree-file/tree-file.property.js +3 -3
- package/esm2015/typography/typography.component.js +3 -3
- package/esm2015/typography/typography.module.js +4 -4
- package/esm2015/typography/typography.property.js +3 -3
- package/esm2015/upload/upload-portal.component.js +5 -5
- package/esm2015/upload/upload.component.js +7 -6
- package/esm2015/upload/upload.module.js +4 -4
- package/esm2015/upload/upload.property.js +3 -3
- package/fesm2015/ng-nest-ui-affix.js +10 -10
- package/fesm2015/ng-nest-ui-alert.js +10 -10
- package/fesm2015/ng-nest-ui-alert.js.map +1 -1
- package/fesm2015/ng-nest-ui-anchor.js +11 -11
- package/fesm2015/ng-nest-ui-anchor.js.map +1 -1
- package/fesm2015/ng-nest-ui-api.js +7 -7
- package/fesm2015/ng-nest-ui-auto-complete.js +59 -25
- package/fesm2015/ng-nest-ui-auto-complete.js.map +1 -1
- package/fesm2015/ng-nest-ui-avatar.js +10 -10
- package/fesm2015/ng-nest-ui-back-top.js +12 -12
- package/fesm2015/ng-nest-ui-back-top.js.map +1 -1
- package/fesm2015/ng-nest-ui-badge.js +12 -11
- package/fesm2015/ng-nest-ui-badge.js.map +1 -1
- package/fesm2015/ng-nest-ui-base-form.js +53 -12
- package/fesm2015/ng-nest-ui-base-form.js.map +1 -1
- package/fesm2015/ng-nest-ui-border.js +7 -7
- package/fesm2015/ng-nest-ui-button.js +22 -19
- package/fesm2015/ng-nest-ui-button.js.map +1 -1
- package/fesm2015/ng-nest-ui-calendar.js +14 -13
- package/fesm2015/ng-nest-ui-calendar.js.map +1 -1
- package/fesm2015/ng-nest-ui-card.js +10 -10
- package/fesm2015/ng-nest-ui-carousel.js +20 -19
- package/fesm2015/ng-nest-ui-carousel.js.map +1 -1
- package/fesm2015/ng-nest-ui-cascade.js +80 -28
- package/fesm2015/ng-nest-ui-cascade.js.map +1 -1
- package/fesm2015/ng-nest-ui-checkbox.js +13 -12
- package/fesm2015/ng-nest-ui-checkbox.js.map +1 -1
- package/fesm2015/ng-nest-ui-collapse.js +16 -16
- package/fesm2015/ng-nest-ui-collapse.js.map +1 -1
- package/fesm2015/ng-nest-ui-color-picker.js +55 -24
- package/fesm2015/ng-nest-ui-color-picker.js.map +1 -1
- package/fesm2015/ng-nest-ui-color.js +11 -11
- package/fesm2015/ng-nest-ui-color.js.map +1 -1
- package/fesm2015/ng-nest-ui-comment.js +19 -18
- package/fesm2015/ng-nest-ui-comment.js.map +1 -1
- package/fesm2015/ng-nest-ui-container.js +32 -32
- package/fesm2015/ng-nest-ui-container.js.map +1 -1
- package/fesm2015/ng-nest-ui-core.js +106 -25
- package/fesm2015/ng-nest-ui-core.js.map +1 -1
- package/fesm2015/ng-nest-ui-crumb.js +13 -12
- package/fesm2015/ng-nest-ui-crumb.js.map +1 -1
- package/fesm2015/ng-nest-ui-date-picker.js +876 -156
- package/fesm2015/ng-nest-ui-date-picker.js.map +1 -1
- package/fesm2015/ng-nest-ui-description.js +21 -22
- package/fesm2015/ng-nest-ui-description.js.map +1 -1
- package/fesm2015/ng-nest-ui-dialog.js +12 -11
- package/fesm2015/ng-nest-ui-dialog.js.map +1 -1
- package/fesm2015/ng-nest-ui-doc.js +7 -7
- package/fesm2015/ng-nest-ui-drawer.js +12 -11
- package/fesm2015/ng-nest-ui-drawer.js.map +1 -1
- package/fesm2015/ng-nest-ui-dropdown.js +17 -16
- package/fesm2015/ng-nest-ui-dropdown.js.map +1 -1
- package/fesm2015/ng-nest-ui-empty.js +10 -10
- package/fesm2015/ng-nest-ui-examples.js +7 -7
- package/fesm2015/ng-nest-ui-find.js +31 -17
- package/fesm2015/ng-nest-ui-find.js.map +1 -1
- package/fesm2015/ng-nest-ui-form.js +22 -26
- package/fesm2015/ng-nest-ui-form.js.map +1 -1
- package/fesm2015/ng-nest-ui-highlight.js +12 -11
- package/fesm2015/ng-nest-ui-highlight.js.map +1 -1
- package/fesm2015/ng-nest-ui-i18n.js +540 -133
- package/fesm2015/ng-nest-ui-i18n.js.map +1 -1
- package/fesm2015/ng-nest-ui-icon.js +18 -18
- package/fesm2015/ng-nest-ui-icon.js.map +1 -1
- package/fesm2015/ng-nest-ui-inner.js +11 -11
- package/fesm2015/ng-nest-ui-inner.js.map +1 -1
- package/fesm2015/ng-nest-ui-input-number.js +31 -14
- package/fesm2015/ng-nest-ui-input-number.js.map +1 -1
- package/fesm2015/ng-nest-ui-input.js +164 -42
- package/fesm2015/ng-nest-ui-input.js.map +1 -1
- package/fesm2015/ng-nest-ui-layout.js +16 -16
- package/fesm2015/ng-nest-ui-link.js +10 -10
- package/fesm2015/ng-nest-ui-list.js +20 -19
- package/fesm2015/ng-nest-ui-list.js.map +1 -1
- package/fesm2015/ng-nest-ui-loading.js +12 -11
- package/fesm2015/ng-nest-ui-loading.js.map +1 -1
- package/fesm2015/ng-nest-ui-menu.js +23 -20
- package/fesm2015/ng-nest-ui-menu.js.map +1 -1
- package/fesm2015/ng-nest-ui-message-box.js +32 -34
- package/fesm2015/ng-nest-ui-message-box.js.map +1 -1
- package/fesm2015/ng-nest-ui-message.js +11 -11
- package/fesm2015/ng-nest-ui-message.js.map +1 -1
- package/fesm2015/ng-nest-ui-notification.js +11 -11
- package/fesm2015/ng-nest-ui-notification.js.map +1 -1
- package/fesm2015/ng-nest-ui-outlet.js +7 -7
- package/fesm2015/ng-nest-ui-page-header.js +10 -10
- package/fesm2015/ng-nest-ui-pagination.js +104 -14
- package/fesm2015/ng-nest-ui-pagination.js.map +1 -1
- package/fesm2015/ng-nest-ui-pattern.js +7 -7
- package/fesm2015/ng-nest-ui-popconfirm.js +10 -10
- package/fesm2015/ng-nest-ui-popover.js +16 -15
- package/fesm2015/ng-nest-ui-popover.js.map +1 -1
- package/fesm2015/ng-nest-ui-portal.js +7 -7
- package/fesm2015/ng-nest-ui-progress.js +13 -12
- package/fesm2015/ng-nest-ui-progress.js.map +1 -1
- package/fesm2015/ng-nest-ui-radio.js +13 -12
- package/fesm2015/ng-nest-ui-radio.js.map +1 -1
- package/fesm2015/ng-nest-ui-rate.js +15 -15
- package/fesm2015/ng-nest-ui-rate.js.map +1 -1
- package/fesm2015/ng-nest-ui-result.js +10 -10
- package/fesm2015/ng-nest-ui-ripple.js +10 -10
- package/fesm2015/ng-nest-ui-ripple.js.map +1 -1
- package/fesm2015/ng-nest-ui-select.js +37 -22
- package/fesm2015/ng-nest-ui-select.js.map +1 -1
- package/fesm2015/ng-nest-ui-skeleton.js +12 -11
- package/fesm2015/ng-nest-ui-skeleton.js.map +1 -1
- package/fesm2015/ng-nest-ui-slider-select.js +10 -10
- package/fesm2015/ng-nest-ui-slider.js +17 -18
- package/fesm2015/ng-nest-ui-slider.js.map +1 -1
- package/fesm2015/ng-nest-ui-statistic.js +22 -20
- package/fesm2015/ng-nest-ui-statistic.js.map +1 -1
- package/fesm2015/ng-nest-ui-steps.js +19 -14
- package/fesm2015/ng-nest-ui-steps.js.map +1 -1
- package/fesm2015/ng-nest-ui-switch.js +10 -10
- package/fesm2015/ng-nest-ui-table.js +43 -40
- package/fesm2015/ng-nest-ui-table.js.map +1 -1
- package/fesm2015/ng-nest-ui-tabs.js +24 -23
- package/fesm2015/ng-nest-ui-tabs.js.map +1 -1
- package/fesm2015/ng-nest-ui-tag.js +22 -11
- package/fesm2015/ng-nest-ui-tag.js.map +1 -1
- package/fesm2015/ng-nest-ui-text-retract.js +12 -11
- package/fesm2015/ng-nest-ui-text-retract.js.map +1 -1
- package/fesm2015/ng-nest-ui-textarea.js +12 -21
- package/fesm2015/ng-nest-ui-textarea.js.map +1 -1
- package/fesm2015/ng-nest-ui-theme.js +11 -11
- package/fesm2015/ng-nest-ui-theme.js.map +1 -1
- package/fesm2015/ng-nest-ui-time-ago.js +7 -7
- package/fesm2015/ng-nest-ui-time-picker.js +73 -36
- package/fesm2015/ng-nest-ui-time-picker.js.map +1 -1
- package/fesm2015/ng-nest-ui-time-range.js +7 -7
- package/fesm2015/ng-nest-ui-timeline.js +13 -12
- package/fesm2015/ng-nest-ui-timeline.js.map +1 -1
- package/fesm2015/ng-nest-ui-tooltip.js +16 -15
- package/fesm2015/ng-nest-ui-tooltip.js.map +1 -1
- package/fesm2015/ng-nest-ui-transfer.js +13 -12
- package/fesm2015/ng-nest-ui-transfer.js.map +1 -1
- package/fesm2015/ng-nest-ui-tree-file.js +10 -10
- package/fesm2015/ng-nest-ui-tree.js +24 -23
- package/fesm2015/ng-nest-ui-tree.js.map +1 -1
- package/fesm2015/ng-nest-ui-typography.js +10 -10
- package/fesm2015/ng-nest-ui-upload.js +17 -16
- package/fesm2015/ng-nest-ui-upload.js.map +1 -1
- package/find/find.component.d.ts +1 -1
- package/find/find.property.d.ts +22 -2
- package/form/control.component.d.ts +1 -1
- package/form/form.component.d.ts +1 -1
- package/form/form.property.d.ts +6 -6
- package/i18n/i18n.property.d.ts +3 -0
- package/i18n/languages/ar_EG.d.ts +8 -0
- package/i18n/languages/bg_BG.d.ts +8 -0
- package/i18n/languages/ca_ES.d.ts +8 -0
- package/i18n/languages/cs_CZ.d.ts +8 -0
- package/i18n/languages/da_DK.d.ts +8 -0
- package/i18n/languages/de_DE.d.ts +8 -0
- package/i18n/languages/el_GR.d.ts +8 -0
- package/i18n/languages/en_GB.d.ts +8 -0
- package/i18n/languages/en_US.d.ts +8 -0
- package/i18n/languages/es_ES.d.ts +8 -0
- package/i18n/languages/et_EE.d.ts +8 -0
- package/i18n/languages/fa_IR.d.ts +8 -0
- package/i18n/languages/fi_FI.d.ts +8 -0
- package/i18n/languages/fr_BE.d.ts +8 -0
- package/i18n/languages/fr_FR.d.ts +8 -0
- package/i18n/languages/he_IL.d.ts +8 -0
- package/i18n/languages/hi_IN.d.ts +8 -0
- package/i18n/languages/hr_HR.d.ts +8 -0
- package/i18n/languages/hu_HU.d.ts +8 -0
- package/i18n/languages/hy_AM.d.ts +8 -0
- package/i18n/languages/id_ID.d.ts +8 -0
- package/i18n/languages/is_IS.d.ts +8 -0
- package/i18n/languages/it_IT.d.ts +8 -0
- package/i18n/languages/ja_JP.d.ts +8 -0
- package/i18n/languages/ka_GE.d.ts +8 -0
- package/i18n/languages/kn_IN.d.ts +8 -0
- package/i18n/languages/ko_KR.d.ts +8 -0
- package/i18n/languages/ku_IQ.d.ts +8 -0
- package/i18n/languages/lv_LV.d.ts +8 -0
- package/i18n/languages/mn_MN.d.ts +8 -0
- package/i18n/languages/ms_MY.d.ts +8 -0
- package/i18n/languages/nb_NO.d.ts +8 -0
- package/i18n/languages/ne_NP.d.ts +8 -0
- package/i18n/languages/nl_BE.d.ts +8 -0
- package/i18n/languages/nl_NL.d.ts +8 -0
- package/i18n/languages/pl_PL.d.ts +8 -0
- package/i18n/languages/pt_BR.d.ts +8 -0
- package/i18n/languages/pt_PT.d.ts +8 -0
- package/i18n/languages/ro_RO.d.ts +8 -0
- package/i18n/languages/ru_RU.d.ts +8 -0
- package/i18n/languages/sk_SK.d.ts +8 -0
- package/i18n/languages/sl_SI.d.ts +8 -0
- package/i18n/languages/sr_RS.d.ts +8 -0
- package/i18n/languages/sv_SE.d.ts +8 -0
- package/i18n/languages/ta_IN.d.ts +8 -0
- package/i18n/languages/th_TH.d.ts +8 -0
- package/i18n/languages/tr_TR.d.ts +8 -0
- package/i18n/languages/uk_UA.d.ts +8 -0
- package/i18n/languages/vi_VN.d.ts +8 -0
- package/i18n/languages/zh_CN.d.ts +7 -0
- package/i18n/languages/zh_TW.d.ts +7 -0
- package/inner/inner.component.d.ts +1 -1
- package/input/input-group.component.d.ts +13 -0
- package/input/input.component.d.ts +10 -3
- package/input/input.module.d.ts +7 -5
- package/input/input.property.d.ts +79 -14
- package/input/public-api.d.ts +1 -0
- package/input-number/input-number.component.d.ts +3 -0
- package/input-number/input-number.module.d.ts +4 -3
- package/input-number/input-number.property.d.ts +12 -2
- package/list/list.component.d.ts +2 -2
- package/menu/menu.component.d.ts +1 -1
- package/message/message.component.d.ts +1 -1
- package/message-box/message-box.component.d.ts +2 -1
- package/notification/notification.component.d.ts +1 -1
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +5 -1
- package/pagination/pagination.module.d.ts +7 -3
- package/pagination/pagination.property.d.ts +49 -3
- package/radio/radio.component.d.ts +1 -1
- package/rate/rate.component.d.ts +5 -5
- package/select/select-portal.component.d.ts +3 -3
- package/select/select.component.d.ts +1 -1
- package/select/select.property.d.ts +12 -2
- package/slider/slider.component.d.ts +1 -1
- package/steps/steps.component.d.ts +1 -1
- package/steps/steps.module.d.ts +2 -1
- package/steps/steps.property.d.ts +7 -2
- package/table/table-body.component.d.ts +1 -1
- package/table/table-head.component.d.ts +1 -1
- package/table/table.component.d.ts +1 -1
- package/table/table.property.d.ts +10 -0
- package/tag/tag.component.d.ts +2 -1
- package/tag/tag.property.d.ts +6 -1
- package/textarea/textarea.property.d.ts +1 -6
- package/theme/theme.component.d.ts +1 -1
- package/time-picker/time-picker-frame.component.d.ts +4 -0
- package/time-picker/time-picker-portal.component.d.ts +3 -3
- package/time-picker/time-picker.component.d.ts +5 -3
- package/time-picker/time-picker.property.d.ts +12 -2
- package/timeline/timeline.component.d.ts +1 -1
- package/transfer/transfer.component.d.ts +1 -1
- package/tree/tree-node.component.d.ts +1 -1
- package/tree/tree.component.d.ts +1 -1
- package/upload/upload.component.d.ts +3 -3
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener } from '@angular/core';
|
|
2
|
+
import { XDateRangePortalPrefix } from './date-picker.property';
|
|
3
|
+
import { XIsEmpty, XConnectBaseAnimation, XAddDays, XAddMonths } from '@ng-nest/ui/core';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { takeUntil, map } from 'rxjs/operators';
|
|
6
|
+
import { DatePipe, LowerCasePipe } from '@angular/common';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@ng-nest/ui/i18n";
|
|
10
|
+
import * as i3 from "./picker-date.component";
|
|
11
|
+
import * as i4 from "@ng-nest/ui/button";
|
|
12
|
+
export class XDateRangePortalComponent {
|
|
13
|
+
constructor(datePipe, lowerCasePipe, cdr, i18n) {
|
|
14
|
+
this.datePipe = datePipe;
|
|
15
|
+
this.lowerCasePipe = lowerCasePipe;
|
|
16
|
+
this.cdr = cdr;
|
|
17
|
+
this.i18n = i18n;
|
|
18
|
+
this.type = 'date';
|
|
19
|
+
this.display = new Date();
|
|
20
|
+
this.startDisplay = new Date();
|
|
21
|
+
this.endDisplay = XAddMonths(this.startDisplay, 1);
|
|
22
|
+
this.value = [];
|
|
23
|
+
this.locale = {};
|
|
24
|
+
this.preset = [];
|
|
25
|
+
this._unSubject = new Subject();
|
|
26
|
+
}
|
|
27
|
+
done(event) {
|
|
28
|
+
this.animating(false);
|
|
29
|
+
event.toState === 'void' && this.destroyPortal();
|
|
30
|
+
}
|
|
31
|
+
start() {
|
|
32
|
+
this.animating(true);
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
|
|
36
|
+
this.value = x;
|
|
37
|
+
this.init();
|
|
38
|
+
});
|
|
39
|
+
this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
|
|
40
|
+
this.placement = x;
|
|
41
|
+
this.cdr.detectChanges();
|
|
42
|
+
});
|
|
43
|
+
this.i18n.localeChange
|
|
44
|
+
.pipe(map((x) => x.datePicker), takeUntil(this._unSubject))
|
|
45
|
+
.subscribe((x) => {
|
|
46
|
+
this.locale = x;
|
|
47
|
+
this.cdr.markForCheck();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
ngAfterViewInit() {
|
|
51
|
+
this.init();
|
|
52
|
+
}
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
this._unSubject.next();
|
|
55
|
+
this._unSubject.unsubscribe();
|
|
56
|
+
}
|
|
57
|
+
init() {
|
|
58
|
+
if (!XIsEmpty(this.value)) {
|
|
59
|
+
this.setDefault();
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.value = [];
|
|
63
|
+
this.model = this.display;
|
|
64
|
+
this.startModel = this.model;
|
|
65
|
+
this.endModel = XAddMonths(this.model, 1);
|
|
66
|
+
}
|
|
67
|
+
this.time = this.model.getTime();
|
|
68
|
+
this._type = this.type;
|
|
69
|
+
this.setDisplay(this.model);
|
|
70
|
+
this.cdr.detectChanges();
|
|
71
|
+
}
|
|
72
|
+
stopPropagation(event) {
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
}
|
|
75
|
+
setDefault() {
|
|
76
|
+
const date = new Date();
|
|
77
|
+
this.model = date;
|
|
78
|
+
if (this.value.length > 0) {
|
|
79
|
+
this.startModel = new Date(this.value[0]);
|
|
80
|
+
this.startDisplay = this.startModel;
|
|
81
|
+
}
|
|
82
|
+
if (this.value.length > 1) {
|
|
83
|
+
this.endModel = new Date(this.value[1]);
|
|
84
|
+
this.endDisplay = this.endModel;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
setDisplay(date) {
|
|
88
|
+
this.display = new Date(date.getFullYear(), date.getMonth(), 1);
|
|
89
|
+
this.startDisplay = this.display;
|
|
90
|
+
this.endDisplay = XAddMonths(this.display, 1);
|
|
91
|
+
}
|
|
92
|
+
dateChange(date) {
|
|
93
|
+
let time = date.getTime();
|
|
94
|
+
if (this.value.length === 0) {
|
|
95
|
+
this.value.push(time);
|
|
96
|
+
this.startNodeEmit(date);
|
|
97
|
+
}
|
|
98
|
+
else if (this.value.length === 1) {
|
|
99
|
+
if (time > this.value[0]) {
|
|
100
|
+
this.value.push(time);
|
|
101
|
+
this.endNodeEmit(date);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.value.unshift(time);
|
|
105
|
+
this.startNodeEmit(date);
|
|
106
|
+
this.endNodeEmit(new Date(this.value[1]));
|
|
107
|
+
}
|
|
108
|
+
this.nodeEmit(this.value.map((x) => new Date(x)));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
typeChange(type) {
|
|
112
|
+
this.type = type;
|
|
113
|
+
this.cdr.detectChanges();
|
|
114
|
+
}
|
|
115
|
+
monthChange(date) {
|
|
116
|
+
this.setDisplay(date);
|
|
117
|
+
if (this._type === 'month') {
|
|
118
|
+
this.model = date;
|
|
119
|
+
// this.nodeEmit(date);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.type = this._type;
|
|
123
|
+
}
|
|
124
|
+
this.cdr.detectChanges();
|
|
125
|
+
}
|
|
126
|
+
yearChange(date) {
|
|
127
|
+
this.setDisplay(date);
|
|
128
|
+
if (this._type === 'year') {
|
|
129
|
+
this.model = date;
|
|
130
|
+
// this.nodeEmit(date);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.type = 'month';
|
|
134
|
+
}
|
|
135
|
+
this.cdr.detectChanges();
|
|
136
|
+
}
|
|
137
|
+
yearStartChange(number) {
|
|
138
|
+
this.startYear = number;
|
|
139
|
+
this.cdr.detectChanges();
|
|
140
|
+
}
|
|
141
|
+
nextMonth(num) {
|
|
142
|
+
let date = new Date(this.display);
|
|
143
|
+
date.setMonth(date.getMonth() + num);
|
|
144
|
+
this.setDisplay(date);
|
|
145
|
+
this.cdr.detectChanges();
|
|
146
|
+
}
|
|
147
|
+
nextYear(num) {
|
|
148
|
+
let date = new Date(this.display);
|
|
149
|
+
date.setFullYear(date.getFullYear() + num);
|
|
150
|
+
this.setDisplay(date);
|
|
151
|
+
this.cdr.detectChanges();
|
|
152
|
+
}
|
|
153
|
+
nextYears(num) {
|
|
154
|
+
this.startYear += num;
|
|
155
|
+
let date = new Date(this.display);
|
|
156
|
+
date.setFullYear(this.startYear);
|
|
157
|
+
this.setDisplay(date);
|
|
158
|
+
this.cdr.detectChanges();
|
|
159
|
+
}
|
|
160
|
+
getLocaleMonth(date) {
|
|
161
|
+
return this.locale[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL'))];
|
|
162
|
+
}
|
|
163
|
+
onToday() {
|
|
164
|
+
this.dateChange(new Date());
|
|
165
|
+
}
|
|
166
|
+
onYesterday() {
|
|
167
|
+
this.dateChange(XAddDays(new Date(), -1));
|
|
168
|
+
}
|
|
169
|
+
onTomorrow() {
|
|
170
|
+
this.dateChange(XAddDays(new Date(), 1));
|
|
171
|
+
}
|
|
172
|
+
onPresetFunc(item) {
|
|
173
|
+
this.dateChange(item.func());
|
|
174
|
+
}
|
|
175
|
+
selectTime(time) {
|
|
176
|
+
this.time = time.getTime();
|
|
177
|
+
// this.nodeEmit(this.setModel(this.model, time), false);
|
|
178
|
+
this.cdr.detectChanges();
|
|
179
|
+
}
|
|
180
|
+
setModel(date, time) {
|
|
181
|
+
this.model = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds());
|
|
182
|
+
return this.model;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** @nocollapse */ XDateRangePortalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XDateRangePortalComponent, deps: [{ token: i1.DatePipe }, { token: i1.LowerCasePipe }, { token: i0.ChangeDetectorRef }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
186
|
+
/** @nocollapse */ XDateRangePortalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: XDateRangePortalComponent, selector: "x-date-range-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DatePipe, LowerCasePipe], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type }}\" [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div class=\"x-date-range-portal-header\">\r\n <ng-container *ngTemplateOutlet=\"startDateHeaderTpl\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"endDateHeaderTpl\"></ng-container>\r\n </div>\r\n <div class=\"x-date-range-portal-body\">\r\n <x-picker-date\r\n class=\"x-date-range-portal-start\"\r\n [display]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n class=\"x-date-range-portal-end\"\r\n [display]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #startDateHeaderTpl>\r\n <x-button icon=\"fto-chevrons-left\" size=\"small\" onlyIcon (click)=\"nextYear(-1)\"></x-button>\r\n <x-button icon=\"fto-chevron-left\" size=\"small\" onlyIcon (click)=\"nextMonth(-1)\"></x-button>\r\n <div class=\"x-date-range-portal-year-month\">\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeChange('year')\">{{ startDisplay | date: 'yyyy' }}{{ locale.year }}</x-button>\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeChange('month')\">{{ getLocaleMonth(startDisplay) }}</x-button>\r\n </div>\r\n <x-button icon=\"fto-chevron-right\" size=\"small\" onlyIcon style=\"visibility: hidden\"></x-button>\r\n <x-button icon=\"fto-chevrons-right\" size=\"small\" onlyIcon style=\"visibility: hidden\"></x-button>\r\n</ng-template>\r\n\r\n<ng-template #endDateHeaderTpl>\r\n <x-button icon=\"fto-chevrons-left\" size=\"small\" onlyIcon (click)=\"nextYear(-1)\" style=\"visibility: hidden\"></x-button>\r\n <x-button icon=\"fto-chevron-left\" size=\"small\" onlyIcon (click)=\"nextMonth(-1)\" style=\"visibility: hidden\"></x-button>\r\n <div class=\"x-date-range-portal-year-month\">\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeChange('year')\">{{ endDisplay | date: 'yyyy' }}{{ locale.year }}</x-button>\r\n <x-button type=\"text\" size=\"small\" (click)=\"typeChange('month')\">{{ getLocaleMonth(endDisplay) }}</x-button>\r\n </div>\r\n <x-button icon=\"fto-chevron-right\" size=\"small\" onlyIcon (click)=\"nextMonth(1)\"></x-button>\r\n <x-button icon=\"fto-chevrons-right\" size=\"small\" onlyIcon (click)=\"nextYear(1)\"></x-button>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column;font-size:var(--x-font-size-small)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal-content{display:flex}.x-date-range-portal-header{display:flex;align-items:center;justify-content:space-between;padding:.4rem;border-bottom:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-button{flex:1}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{padding:.4rem;display:flex}.x-date-range-portal-start{flex:1;margin-right:.4rem}.x-date-range-portal-end{flex:1;margin-left:.4rem}.x-date-range-portal-footer{display:flex;justify-content:flex-end;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column}.x-date-range-portal-time-label{padding:.4rem;text-align:center;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:var(--x-border-width) 0 0 var(--x-border-width);box-shadow:none}\n"], components: [{ type: i3.XPickerDateComponent, selector: "x-picker-date" }, { type: i4.XButtonComponent, selector: "x-button" }], directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "date": i1.DatePipe }, animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XDateRangePortalComponent, decorators: [{
|
|
188
|
+
type: Component,
|
|
189
|
+
args: [{
|
|
190
|
+
selector: `${XDateRangePortalPrefix}`,
|
|
191
|
+
templateUrl: './date-range-portal.component.html',
|
|
192
|
+
styleUrls: ['./date-range-portal.component.scss'],
|
|
193
|
+
encapsulation: ViewEncapsulation.None,
|
|
194
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
195
|
+
animations: [XConnectBaseAnimation],
|
|
196
|
+
providers: [DatePipe, LowerCasePipe]
|
|
197
|
+
}]
|
|
198
|
+
}], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i1.LowerCasePipe }, { type: i0.ChangeDetectorRef }, { type: i2.XI18nService }]; }, propDecorators: { placement: [{
|
|
199
|
+
type: HostBinding,
|
|
200
|
+
args: ['@x-connect-base-animation']
|
|
201
|
+
}], done: [{
|
|
202
|
+
type: HostListener,
|
|
203
|
+
args: ['@x-connect-base-animation.done', ['$event']]
|
|
204
|
+
}], start: [{
|
|
205
|
+
type: HostListener,
|
|
206
|
+
args: ['@x-connect-base-animation.start', ['$event']]
|
|
207
|
+
}] } });
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFzQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQXNCLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBWTFELE1BQU0sT0FBTyx5QkFBeUI7SUFpQ3BDLFlBQW1CLFFBQWtCLEVBQVMsYUFBNEIsRUFBUyxHQUFzQixFQUFTLElBQWtCO1FBQWpILGFBQVEsR0FBUixRQUFRLENBQVU7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBYztRQXZCcEksU0FBSSxHQUFvQixNQUFNLENBQUM7UUFDL0IsWUFBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFLckIsaUJBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hD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QVEsQ0FBQyxJQUFVLEVBQUUsSUFBVTtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDbEksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7O3lJQTNNVSx5QkFBeUI7NkhBQXpCLHlCQUF5Qiw0T0FGekIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLDBCQ3pCdEMscWdGQThDQSw4akVEdEJjLENBQUMscUJBQXFCLENBQUM7MkZBR3hCLHlCQUF5QjtrQkFUckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsR0FBRyxzQkFBc0IsRUFBRTtvQkFDckMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7b0JBQ2pELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ25DLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7aUJBQ3JDO3NMQUVrRCxTQUFTO3NCQUF6RCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFDb0IsSUFBSTtzQkFBL0QsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJRyxLQUFLO3NCQUFqRSxZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYRGF0ZVJhbmdlUG9ydGFsUHJlZml4LCBYRGF0ZVBpY2tlclByZXNldCwgWERhdGVQaWNrZXJUeXBlIH0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYQ29ubmVjdEJhc2VBbmltYXRpb24sIFhQb3NpdGlvblRvcEJvdHRvbSwgWEFkZERheXMsIFhBZGRNb250aHMgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UsIFhJMThuRGF0ZVBpY2tlciB9IGZyb20gJ0BuZy1uZXN0L3VpL2kxOG4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQb3J0YWxQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UtcG9ydGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbWENvbm5lY3RCYXNlQW5pbWF0aW9uXSxcclxuICBwcm92aWRlcnM6IFtEYXRlUGlwZSwgTG93ZXJDYXNlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhEYXRlUmFuZ2VQb3J0YWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQEhvc3RCaW5kaW5nKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uJykgcHVibGljIHBsYWNlbWVudCE6IFhQb3NpdGlvblRvcEJvdHRvbTtcclxuICBASG9zdExpc3RlbmVyKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uLmRvbmUnLCBbJyRldmVudCddKSBkb25lKGV2ZW50OiB7IHRvU3RhdGU6IGFueSB9KSB7XHJcbiAgICB0aGlzLmFuaW1hdGluZyhmYWxzZSk7XHJcbiAgICBldmVudC50b1N0YXRlID09PSAndm9pZCcgJiYgdGhpcy5kZXN0cm95UG9ydGFsKCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uc3RhcnQnLCBbJyRldmVudCddKSBzdGFydCgpIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgdHlwZTogWERhdGVQaWNrZXJUeXBlID0gJ2RhdGUnO1xyXG4gIGRpc3BsYXkgPSBuZXcgRGF0ZSgpO1xyXG4gIG1vZGVsITogRGF0ZTtcclxuICBzdGFydE1vZGVsITogRGF0ZTtcclxuICBlbmRNb2RlbCE6IERhdGU7XHJcbiAgc3RhcnRZZWFyITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZW5kRGlzcGxheTogRGF0ZSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIDEpO1xyXG4gIHZhbHVlOiBudW1iZXJbXSA9IFtdO1xyXG4gIHZhbHVlQ2hhbmdlITogU3ViamVjdDxudW1iZXJbXT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgYW5pbWF0aW5nITogRnVuY3Rpb247XHJcbiAgY2xvc2VQb3J0YWwhOiBGdW5jdGlvbjtcclxuICBkZXN0cm95UG9ydGFsITogRnVuY3Rpb247XHJcbiAgbm9kZUVtaXQhOiAoZGF0ZTogRGF0ZVtdLCBzdXJlPzogYm9vbGVhbikgPT4gdm9pZDtcclxuICBzdGFydE5vZGVFbWl0ITogKGRhdGU6IERhdGUpID0+IHZvaWQ7XHJcbiAgZW5kTm9kZUVtaXQhOiAoZGF0ZTogRGF0ZSkgPT4gdm9pZDtcclxuICBsb2NhbGU6IFhJMThuRGF0ZVBpY2tlciA9IHt9O1xyXG4gIHRpbWUhOiBudW1iZXI7XHJcbiAgcHJlc2V0OiBYRGF0ZVBpY2tlclByZXNldFtdID0gW107XHJcbiAgcHJpdmF0ZSBfdHlwZSE6IFhEYXRlUGlja2VyVHlwZTtcclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLCBwdWJsaWMgbG93ZXJDYXNlUGlwZTogTG93ZXJDYXNlUGlwZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBpMThuOiBYSTE4blNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHg7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnBsYWNlbWVudCA9IHg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gW107XHJcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmRpc3BsYXk7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbCA9IHRoaXMubW9kZWw7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwgPSBYQWRkTW9udGhzKHRoaXMubW9kZWwsIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50aW1lID0gdGhpcy5tb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB0aGlzLl90eXBlID0gdGhpcy50eXBlO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KHRoaXMubW9kZWwpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0KCkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLm1vZGVsID0gZGF0ZTtcclxuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdGFydE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVswXSk7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gdGhpcy5zdGFydE1vZGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmVuZE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVsxXSk7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZW5kTW9kZWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gWEFkZE1vbnRocyh0aGlzLmRpc3BsYXksIDEpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgdGltZSA9IGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMudmFsdWUucHVzaCh0aW1lKTtcclxuICAgICAgdGhpcy5zdGFydE5vZGVFbWl0KGRhdGUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBpZiAodGltZSA+IHRoaXMudmFsdWVbMF0pIHtcclxuICAgICAgICB0aGlzLnZhbHVlLnB1c2godGltZSk7XHJcbiAgICAgICAgdGhpcy5lbmROb2RlRW1pdChkYXRlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbHVlLnVuc2hpZnQodGltZSk7XHJcbiAgICAgICAgdGhpcy5zdGFydE5vZGVFbWl0KGRhdGUpO1xyXG4gICAgICAgIHRoaXMuZW5kTm9kZUVtaXQobmV3IERhdGUodGhpcy52YWx1ZVsxXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZUVtaXQodGhpcy52YWx1ZS5tYXAoKHgpID0+IG5ldyBEYXRlKHgpKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG1vbnRoQ2hhbmdlKGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSBkYXRlO1xyXG4gICAgICAvLyB0aGlzLm5vZGVFbWl0KGRhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50eXBlID0gdGhpcy5fdHlwZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UoZGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLm1vZGVsID0gZGF0ZTtcclxuICAgICAgLy8gdGhpcy5ub2RlRW1pdChkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHlwZSA9ICdtb250aCc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB5ZWFyU3RhcnRDaGFuZ2UobnVtYmVyOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc3RhcnRZZWFyID0gbnVtYmVyO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcihudW06IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRpc3BsYXkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhciArPSBudW07XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHRoaXMuc3RhcnRZZWFyKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBvblRvZGF5KCkge1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlKG5ldyBEYXRlKCkpO1xyXG4gIH1cclxuXHJcbiAgb25ZZXN0ZXJkYXkoKSB7XHJcbiAgICB0aGlzLmRhdGVDaGFuZ2UoWEFkZERheXMobmV3IERhdGUoKSwgLTEpKTtcclxuICB9XHJcblxyXG4gIG9uVG9tb3Jyb3coKSB7XHJcbiAgICB0aGlzLmRhdGVDaGFuZ2UoWEFkZERheXMobmV3IERhdGUoKSwgMSkpO1xyXG4gIH1cclxuXHJcbiAgb25QcmVzZXRGdW5jKGl0ZW06IFhEYXRlUGlja2VyUHJlc2V0KSB7XHJcbiAgICB0aGlzLmRhdGVDaGFuZ2UoaXRlbS5mdW5jKCkpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGltZSh0aW1lOiBEYXRlKSB7XHJcbiAgICB0aGlzLnRpbWUgPSB0aW1lLmdldFRpbWUoKTtcclxuICAgIC8vIHRoaXMubm9kZUVtaXQodGhpcy5zZXRNb2RlbCh0aGlzLm1vZGVsLCB0aW1lKSwgZmFsc2UpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9kZWwoZGF0ZTogRGF0ZSwgdGltZTogRGF0ZSkge1xyXG4gICAgdGhpcy5tb2RlbCA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgdGltZS5nZXRIb3VycygpLCB0aW1lLmdldE1pbnV0ZXMoKSwgdGltZS5nZXRTZWNvbmRzKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsIHt7IHR5cGUgfX1cIiBbbmdTd2l0Y2hdPVwidHlwZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtaGVhZGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGFydERhdGVIZWFkZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVuZERhdGVIZWFkZXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgW2Rpc3BsYXldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICBbbW9kZWxdPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICBbZGlzcGxheV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3N0YXJ0RGF0ZUhlYWRlclRwbD5cclxuICA8eC1idXR0b24gaWNvbj1cImZ0by1jaGV2cm9ucy1sZWZ0XCIgc2l6ZT1cInNtYWxsXCIgb25seUljb24gKGNsaWNrKT1cIm5leHRZZWFyKC0xKVwiPjwveC1idXR0b24+XHJcbiAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbi1sZWZ0XCIgc2l6ZT1cInNtYWxsXCIgb25seUljb24gKGNsaWNrKT1cIm5leHRNb250aCgtMSlcIj48L3gtYnV0dG9uPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXllYXItbW9udGhcIj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwidGV4dFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJ0eXBlQ2hhbmdlKCd5ZWFyJylcIj57eyBzdGFydERpc3BsYXkgfCBkYXRlOiAneXl5eScgfX17eyBsb2NhbGUueWVhciB9fTwveC1idXR0b24+XHJcbiAgICA8eC1idXR0b24gdHlwZT1cInRleHRcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwidHlwZUNoYW5nZSgnbW9udGgnKVwiPnt7IGdldExvY2FsZU1vbnRoKHN0YXJ0RGlzcGxheSkgfX08L3gtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDx4LWJ1dHRvbiBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiPjwveC1idXR0b24+XHJcbiAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbnMtcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiPjwveC1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2VuZERhdGVIZWFkZXJUcGw+XHJcbiAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbnMtbGVmdFwiIHNpemU9XCJzbWFsbFwiIG9ubHlJY29uIChjbGljayk9XCJuZXh0WWVhcigtMSlcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiPjwveC1idXR0b24+XHJcbiAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbi1sZWZ0XCIgc2l6ZT1cInNtYWxsXCIgb25seUljb24gKGNsaWNrKT1cIm5leHRNb250aCgtMSlcIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlblwiPjwveC1idXR0b24+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwteWVhci1tb250aFwiPlxyXG4gICAgPHgtYnV0dG9uIHR5cGU9XCJ0ZXh0XCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cInR5cGVDaGFuZ2UoJ3llYXInKVwiPnt7IGVuZERpc3BsYXkgfCBkYXRlOiAneXl5eScgfX17eyBsb2NhbGUueWVhciB9fTwveC1idXR0b24+XHJcbiAgICA8eC1idXR0b24gdHlwZT1cInRleHRcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwidHlwZUNoYW5nZSgnbW9udGgnKVwiPnt7IGdldExvY2FsZU1vbnRoKGVuZERpc3BsYXkpIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8eC1idXR0b24gaWNvbj1cImZ0by1jaGV2cm9uLXJpZ2h0XCIgc2l6ZT1cInNtYWxsXCIgb25seUljb24gKGNsaWNrKT1cIm5leHRNb250aCgxKVwiPjwveC1idXR0b24+XHJcbiAgPHgtYnV0dG9uIGljb249XCJmdG8tY2hldnJvbnMtcmlnaHRcIiBzaXplPVwic21hbGxcIiBvbmx5SWNvbiAoY2xpY2spPVwibmV4dFllYXIoMSlcIj48L3gtYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { XPortalConnectedPosition } from '@ng-nest/ui/portal';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
4
|
+
import { XDateRangePrefix, XDateRangeProperty } from './date-picker.property';
|
|
5
|
+
import { XIsEmpty, XIsDate, XIsNumber, XIsChange, XClearClass, XIsString, XIsUndefined } from '@ng-nest/ui/core';
|
|
6
|
+
import { DatePipe } from '@angular/common';
|
|
7
|
+
import { takeUntil } from 'rxjs/operators';
|
|
8
|
+
import { XValueAccessor } from '@ng-nest/ui/base-form';
|
|
9
|
+
import { XDateRangePortalComponent } from './date-range-portal.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@ng-nest/ui/core";
|
|
12
|
+
import * as i2 from "@ng-nest/ui/portal";
|
|
13
|
+
import * as i3 from "@angular/common";
|
|
14
|
+
import * as i4 from "@angular/cdk/overlay";
|
|
15
|
+
import * as i5 from "@ng-nest/ui/input";
|
|
16
|
+
import * as i6 from "@ng-nest/ui/icon";
|
|
17
|
+
import * as i7 from "@angular/forms";
|
|
18
|
+
export class XDateRangeComponent extends XDateRangeProperty {
|
|
19
|
+
constructor(renderer, configService, cdr, portalService, viewContainerRef, datePipe, overlay) {
|
|
20
|
+
super();
|
|
21
|
+
this.renderer = renderer;
|
|
22
|
+
this.configService = configService;
|
|
23
|
+
this.cdr = cdr;
|
|
24
|
+
this.portalService = portalService;
|
|
25
|
+
this.viewContainerRef = viewContainerRef;
|
|
26
|
+
this.datePipe = datePipe;
|
|
27
|
+
this.overlay = overlay;
|
|
28
|
+
this.modelType = 'date';
|
|
29
|
+
this.isInput = false;
|
|
30
|
+
this.enter = false;
|
|
31
|
+
this.inputClearable = false;
|
|
32
|
+
this.animating = false;
|
|
33
|
+
this.displayValue = [];
|
|
34
|
+
this.icon = 'fto-calendar';
|
|
35
|
+
this.maxNodes = 6;
|
|
36
|
+
this.protalTobottom = true;
|
|
37
|
+
this.valueChange = new Subject();
|
|
38
|
+
this.dataChange = new Subject();
|
|
39
|
+
this.positionChange = new Subject();
|
|
40
|
+
this.closeSubject = new Subject();
|
|
41
|
+
this.startDisplay = '';
|
|
42
|
+
this.endDisplay = '';
|
|
43
|
+
this.startActive = false;
|
|
44
|
+
this.endActive = false;
|
|
45
|
+
this._unSubject = new Subject();
|
|
46
|
+
}
|
|
47
|
+
get getRequired() {
|
|
48
|
+
return this.required && XIsEmpty(this.value);
|
|
49
|
+
}
|
|
50
|
+
writeValue(value) {
|
|
51
|
+
if (XIsUndefined(value))
|
|
52
|
+
value = [];
|
|
53
|
+
if (value.length > 0) {
|
|
54
|
+
if (XIsDate(value[0])) {
|
|
55
|
+
this.modelType = 'date';
|
|
56
|
+
this.numberValue = value.getTime();
|
|
57
|
+
}
|
|
58
|
+
else if (XIsNumber(value[0])) {
|
|
59
|
+
this.modelType = 'number';
|
|
60
|
+
this.numberValue = value;
|
|
61
|
+
}
|
|
62
|
+
else if (XIsString(value[0])) {
|
|
63
|
+
this.modelType = 'string';
|
|
64
|
+
const valueTime = value.map((x) => new Date(x).getTime());
|
|
65
|
+
this.numberValue = !isNaN(valueTime[0]) ? valueTime : [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this.value = value;
|
|
69
|
+
this.setDisplayValue(this.numberValue);
|
|
70
|
+
this.valueChange.next(this.numberValue);
|
|
71
|
+
this.cdr.detectChanges();
|
|
72
|
+
}
|
|
73
|
+
ngOnInit() {
|
|
74
|
+
this.setFlex(this.dateRange.nativeElement, this.renderer, this.justify, this.align, this.direction);
|
|
75
|
+
this.setFormat();
|
|
76
|
+
this.setClassMap();
|
|
77
|
+
this.setSubject();
|
|
78
|
+
}
|
|
79
|
+
ngAfterViewInit() {
|
|
80
|
+
this.setPortal();
|
|
81
|
+
}
|
|
82
|
+
ngOnChanges(changes) {
|
|
83
|
+
const { type } = changes;
|
|
84
|
+
if (XIsChange(type)) {
|
|
85
|
+
this.setFormat();
|
|
86
|
+
this.setDisplayValue(this.numberValue);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
ngOnDestroy() {
|
|
90
|
+
this._unSubject.next();
|
|
91
|
+
this._unSubject.unsubscribe();
|
|
92
|
+
}
|
|
93
|
+
setSubject() {
|
|
94
|
+
this.closeSubject.pipe(takeUntil(this._unSubject)).subscribe(() => {
|
|
95
|
+
this.closePortal();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
setFormat() {
|
|
99
|
+
if (this.format !== 'yyyy-MM-dd')
|
|
100
|
+
return;
|
|
101
|
+
if (this.type === 'date') {
|
|
102
|
+
this.format = 'yyyy-MM-dd';
|
|
103
|
+
}
|
|
104
|
+
else if (this.type === 'year') {
|
|
105
|
+
this.format = 'yyyy';
|
|
106
|
+
}
|
|
107
|
+
else if (this.type === 'month') {
|
|
108
|
+
this.format = 'yyyy-MM';
|
|
109
|
+
}
|
|
110
|
+
else if (this.type === 'date-time') {
|
|
111
|
+
this.format = 'yyyy-MM-dd HH:mm:ss';
|
|
112
|
+
}
|
|
113
|
+
else if (this.type === 'date-hour') {
|
|
114
|
+
this.format = 'yyyy-MM-dd HH';
|
|
115
|
+
}
|
|
116
|
+
else if (this.type === 'date-minute') {
|
|
117
|
+
this.format = 'yyyy-MM-dd HH:mm';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
menter() {
|
|
121
|
+
if (this.disabled)
|
|
122
|
+
return;
|
|
123
|
+
this.enter = true;
|
|
124
|
+
if (!XIsEmpty(this.numberValue)) {
|
|
125
|
+
this.icon = '';
|
|
126
|
+
this.inputClearable = true;
|
|
127
|
+
this.cdr.detectChanges();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
mleave() {
|
|
131
|
+
if (this.disabled)
|
|
132
|
+
return;
|
|
133
|
+
this.enter = false;
|
|
134
|
+
if (this.inputClearable) {
|
|
135
|
+
this.icon = 'fto-calendar';
|
|
136
|
+
this.inputClearable = false;
|
|
137
|
+
this.cdr.detectChanges();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
clearEmit() {
|
|
141
|
+
this.value = [];
|
|
142
|
+
this.numberValue = [];
|
|
143
|
+
this.displayValue = [];
|
|
144
|
+
this.mleave();
|
|
145
|
+
this.valueChange.next(this.numberValue);
|
|
146
|
+
this.modelChange();
|
|
147
|
+
}
|
|
148
|
+
modelChange() {
|
|
149
|
+
if (this.onChange) {
|
|
150
|
+
this.onChange(this.getValue());
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
getValue() {
|
|
154
|
+
return this.modelType === 'date'
|
|
155
|
+
? this.numberValue.map((x) => new Date(x))
|
|
156
|
+
: this.modelType === 'string'
|
|
157
|
+
? this.numberValue.map((x) => this.datePipe.transform(x, this.format))
|
|
158
|
+
: this.numberValue;
|
|
159
|
+
}
|
|
160
|
+
portalAttached() {
|
|
161
|
+
var _a, _b;
|
|
162
|
+
return (_b = (_a = this.portal) === null || _a === void 0 ? void 0 : _a.overlayRef) === null || _b === void 0 ? void 0 : _b.hasAttached();
|
|
163
|
+
}
|
|
164
|
+
closePortal() {
|
|
165
|
+
var _a, _b;
|
|
166
|
+
if (this.portalAttached()) {
|
|
167
|
+
(_b = (_a = this.portal) === null || _a === void 0 ? void 0 : _a.overlayRef) === null || _b === void 0 ? void 0 : _b.detach();
|
|
168
|
+
this.active = false;
|
|
169
|
+
this.cdr.detectChanges();
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
destroyPortal() {
|
|
175
|
+
var _a, _b;
|
|
176
|
+
(_b = (_a = this.portal) === null || _a === void 0 ? void 0 : _a.overlayRef) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
177
|
+
}
|
|
178
|
+
showPortal($event, type) {
|
|
179
|
+
var _a;
|
|
180
|
+
$event.stopPropagation();
|
|
181
|
+
if (this.disabled || this.animating)
|
|
182
|
+
return;
|
|
183
|
+
this.active = true;
|
|
184
|
+
this.startActive = type === 'start';
|
|
185
|
+
this.endActive = type === 'end';
|
|
186
|
+
const config = {
|
|
187
|
+
backdropClass: '',
|
|
188
|
+
positionStrategy: this.setPlacement(),
|
|
189
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition()
|
|
190
|
+
};
|
|
191
|
+
this.setPosition(config);
|
|
192
|
+
this.portal = this.portalService.attach({
|
|
193
|
+
content: XDateRangePortalComponent,
|
|
194
|
+
viewContainerRef: this.viewContainerRef,
|
|
195
|
+
overlayConfig: config
|
|
196
|
+
});
|
|
197
|
+
(_a = this.portal.overlayRef) === null || _a === void 0 ? void 0 : _a.outsidePointerEvents().pipe(takeUntil(this._unSubject)).subscribe(() => {
|
|
198
|
+
this.setDisplayValue(this.numberValue);
|
|
199
|
+
this.closeSubject.next();
|
|
200
|
+
});
|
|
201
|
+
this.setInstance();
|
|
202
|
+
}
|
|
203
|
+
setPosition(config) {
|
|
204
|
+
let position = config.positionStrategy;
|
|
205
|
+
position.positionChanges.pipe(takeUntil(this._unSubject)).subscribe((pos) => {
|
|
206
|
+
const place = XPortalConnectedPosition.get(pos.connectionPair);
|
|
207
|
+
place !== this.placement && this.positionChange.next(place);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
setInstance() {
|
|
211
|
+
var _a;
|
|
212
|
+
let componentRef = (_a = this.portal) === null || _a === void 0 ? void 0 : _a.componentRef;
|
|
213
|
+
if (!componentRef)
|
|
214
|
+
return;
|
|
215
|
+
Object.assign(componentRef.instance, {
|
|
216
|
+
type: this.type,
|
|
217
|
+
value: this.numberValue,
|
|
218
|
+
placement: this.placement,
|
|
219
|
+
preset: this.preset,
|
|
220
|
+
valueChange: this.valueChange,
|
|
221
|
+
positionChange: this.positionChange,
|
|
222
|
+
closePortal: () => this.closeSubject.next(),
|
|
223
|
+
destroyPortal: () => this.destroyPortal(),
|
|
224
|
+
nodeEmit: (dates, sure = true) => this.onNodeClick(dates, sure),
|
|
225
|
+
startNodeEmit: (node) => this.startNodeClick(node),
|
|
226
|
+
endNodeEmit: (node) => this.endNodeClick(node),
|
|
227
|
+
animating: (ing) => (this.animating = ing)
|
|
228
|
+
});
|
|
229
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
230
|
+
}
|
|
231
|
+
startNodeClick(node) {
|
|
232
|
+
this.startDisplay = this.datePipe.transform(node, this.format);
|
|
233
|
+
this.cdr.detectChanges();
|
|
234
|
+
}
|
|
235
|
+
endNodeClick(node) {
|
|
236
|
+
this.endDisplay = this.datePipe.transform(node, this.format);
|
|
237
|
+
this.cdr.detectChanges();
|
|
238
|
+
}
|
|
239
|
+
onNodeClick(dates, sure = true) {
|
|
240
|
+
this.isInput = false;
|
|
241
|
+
if (sure) {
|
|
242
|
+
this.numberValue = dates.map((x) => x.getTime());
|
|
243
|
+
this.value = this.getValue();
|
|
244
|
+
this.setDisplayValue(this.numberValue);
|
|
245
|
+
this.closeSubject.next();
|
|
246
|
+
this.modelChange();
|
|
247
|
+
this.nodeEmit.emit(this.numberValue);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
this.setDisplayValue(dates.map((x) => x.getTime()));
|
|
251
|
+
this.cdr.markForCheck();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
onInput() {
|
|
255
|
+
this.isInput = true;
|
|
256
|
+
}
|
|
257
|
+
setDisplayValue(dateNumber) {
|
|
258
|
+
// if (this.isInput && isNaN(this.startDisplay) && !isNaN(Date.parse(this.displayValue))) {
|
|
259
|
+
// this.displayValue = this.datePipe.transform(this.displayValue, this.format);
|
|
260
|
+
// this.numberValue = new Date(this.displayValue).getTime();
|
|
261
|
+
// this.value = this.getValue();
|
|
262
|
+
// this.modelChange();
|
|
263
|
+
// this.isInput = false;
|
|
264
|
+
// } else {
|
|
265
|
+
this.displayValue = dateNumber.map((x) => this.datePipe.transform(x, this.format));
|
|
266
|
+
// }
|
|
267
|
+
}
|
|
268
|
+
setPlacement() {
|
|
269
|
+
return this.portalService.setPlacement({
|
|
270
|
+
elementRef: this.inputGroup.elementRef,
|
|
271
|
+
placement: [this.placement, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
|
|
272
|
+
transformOriginOn: 'x-date-range-portal'
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
setPortal() {
|
|
276
|
+
var _a, _b;
|
|
277
|
+
this.portalAttached() && ((_b = (_a = this.portal) === null || _a === void 0 ? void 0 : _a.overlayRef) === null || _b === void 0 ? void 0 : _b.updatePositionStrategy(this.setPlacement()));
|
|
278
|
+
}
|
|
279
|
+
setClassMap() {
|
|
280
|
+
XClearClass(this.labelMap);
|
|
281
|
+
this.labelMap[`x-text-align-${this.labelAlign}`] = this.labelAlign ? true : false;
|
|
282
|
+
}
|
|
283
|
+
formControlChanges() {
|
|
284
|
+
this.ngOnInit();
|
|
285
|
+
this.cdr.detectChanges();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/** @nocollapse */ XDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XDateRangeComponent, deps: [{ token: i0.Renderer2 }, { token: i1.XConfigService }, { token: i0.ChangeDetectorRef }, { token: i2.XPortalService }, { token: i0.ViewContainerRef }, { token: i3.DatePipe }, { token: i4.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
289
|
+
/** @nocollapse */ XDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: XDateRangeComponent, selector: "x-date-range", providers: [XValueAccessor(XDateRangeComponent), DatePipe], viewQueries: [{ propertyName: "dateRange", first: true, predicate: ["dateRange"], descendants: true, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #dateRange class=\"x-date-range\" [class.x-date-range-active]=\"active\">\r\n <div class=\"x-date-range-row\">\r\n <x-input-group #inputGroup class=\"x-date-range-group\" bordered=\"false\" (click)=\"showPortal($event)\">\r\n <x-input\r\n #inputStartCom\r\n type=\"text\"\r\n placeholder=\"\u5F00\u59CB\u65E5\u671F\"\r\n [(active)]=\"startActive\"\r\n (click)=\"showPortal($event, 'start')\"\r\n [(ngModel)]=\"startDisplay\"\r\n ></x-input>\r\n <x-icon type=\"fto-arrow-right\"></x-icon>\r\n <x-input\r\n #inputEndCom\r\n type=\"text\"\r\n placeholder=\"\u7ED3\u675F\u65E5\u671F\"\r\n [(active)]=\"endActive\"\r\n (click)=\"showPortal($event, 'end')\"\r\n [(ngModel)]=\"endDisplay\"\r\n ></x-input>\r\n <x-icon [type]=\"icon\"></x-icon>\r\n </x-input-group>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";x-date-range{display:inline-block}.x-date-range{margin:0;padding:0;width:100%}.x-date-range-row{flex:1;display:flex;align-items:center}.x-date-range-group{display:inline-flex;flex:1;width:100%;font-size:var(--x-font-size);background-color:var(--x-background);background-image:none;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) transparent;transition:all var(--x-animation-duration-slow)}.x-date-range-group .x-input-group{display:flex;align-items:center}.x-date-range-group .x-input-group>x-icon{color:var(--x-text-400);transition:all var(--x-animation-duration-base);z-index:2;padding:.4rem}.x-date-range-group .x-input-group>x-input{width:6rem}.x-date-range-group .x-input-group>x-input input{padding-left:0!important;padding-right:0!important;margin-left:.4rem;margin-right:.4rem}.x-date-range-group .x-input-group>x-input.x-input-active input{background-color:gray}.x-date-range-group:hover{border-color:var(--x-primary-300)}.x-date-range-active .x-date-range-group{border-color:var(--x-primary)}\n"], components: [{ type: i5.XInputGroupComponent, selector: "x-input-group" }, { type: i5.XInputComponent, selector: "x-input" }, { type: i6.XIconComponent, selector: "x-icon" }], directives: [{ type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: XDateRangeComponent, decorators: [{
|
|
291
|
+
type: Component,
|
|
292
|
+
args: [{
|
|
293
|
+
selector: `${XDateRangePrefix}`,
|
|
294
|
+
templateUrl: './date-range.component.html',
|
|
295
|
+
styleUrls: ['./date-range.component.scss'],
|
|
296
|
+
encapsulation: ViewEncapsulation.None,
|
|
297
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
298
|
+
providers: [XValueAccessor(XDateRangeComponent), DatePipe]
|
|
299
|
+
}]
|
|
300
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.XConfigService }, { type: i0.ChangeDetectorRef }, { type: i2.XPortalService }, { type: i0.ViewContainerRef }, { type: i3.DatePipe }, { type: i4.Overlay }]; }, propDecorators: { dateRange: [{
|
|
301
|
+
type: ViewChild,
|
|
302
|
+
args: ['dateRange', { static: true }]
|
|
303
|
+
}], inputGroup: [{
|
|
304
|
+
type: ViewChild,
|
|
305
|
+
args: ['inputGroup', { static: true }]
|
|
306
|
+
}] } });
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9kYXRlLXBpY2tlci9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL2RhdGUtcGlja2VyL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBTXZCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEcsT0FBTyxFQUNMLFFBQVEsRUFDUixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUVULFlBQVksRUFFYixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFVMUUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQXFEekQsWUFDUyxRQUFtQixFQUNuQixhQUE2QixFQUM1QixHQUFzQixFQUN0QixhQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsT0FBZ0I7UUFFeEIsS0FBSyxFQUFFLENBQUM7UUFSRCxhQUFRLEdB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aUJBQzNEO3NRQUUyQyxTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0csVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWFBvcnRhbFNlcnZpY2UsIFhQb3J0YWxPdmVybGF5UmVmLCBYUG9ydGFsQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAbmctbmVzdC91aS9wb3J0YWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYRGF0ZVBpY2tlck1vZGVsVHlwZSwgWERhdGVSYW5nZVByZWZpeCwgWERhdGVSYW5nZVByb3BlcnR5IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWElzRGF0ZSxcclxuICBYSXNOdW1iZXIsXHJcbiAgWElzQ2hhbmdlLFxyXG4gIFhDb3JuZXIsXHJcbiAgWENsZWFyQ2xhc3MsXHJcbiAgWElzU3RyaW5nLFxyXG4gIFhDb25maWdTZXJ2aWNlLFxyXG4gIFhJc1VuZGVmaW5lZCxcclxuICBYQm9vbGVhblxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYSW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBYVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhEYXRlUmFuZ2VQb3J0YWxDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcG9ydGFsLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WERhdGVSYW5nZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtYVmFsdWVBY2Nlc3NvcihYRGF0ZVJhbmdlQ29tcG9uZW50KSwgRGF0ZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYRGF0ZVJhbmdlQ29tcG9uZW50IGV4dGVuZHMgWERhdGVSYW5nZVByb3BlcnR5IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVSYW5nZScsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGVSYW5nZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRHcm91cCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0R3JvdXAhOiBYSW5wdXRHcm91cENvbXBvbmVudDtcclxuXHJcbiAgbW9kZWxUeXBlOiBYRGF0ZVBpY2tlck1vZGVsVHlwZSA9ICdkYXRlJztcclxuICBudW1iZXJWYWx1ZSE6IG51bWJlcltdO1xyXG4gIGlzSW5wdXQgPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGdldFJlcXVpcmVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWlyZWQgJiYgWElzRW1wdHkodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmIChYSXNVbmRlZmluZWQodmFsdWUpKSB2YWx1ZSA9IFtdO1xyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKFhJc0RhdGUodmFsdWVbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFR5cGUgPSAnZGF0ZSc7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9IHZhbHVlLmdldFRpbWUoKTtcclxuICAgICAgfSBlbHNlIGlmIChYSXNOdW1iZXIodmFsdWVbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbFR5cGUgPSAnbnVtYmVyJztcclxuICAgICAgICB0aGlzLm51bWJlclZhbHVlID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gJ3N0cmluZyc7XHJcbiAgICAgICAgY29uc3QgdmFsdWVUaW1lID0gdmFsdWUubWFwKCh4OiBzdHJpbmcpID0+IG5ldyBEYXRlKHgpLmdldFRpbWUoKSk7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWx1ZSA9ICFpc05hTih2YWx1ZVRpbWVbMF0pID8gdmFsdWVUaW1lIDogW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbnB1dENsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuaW1hdGluZyA9IGZhbHNlO1xyXG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuICBwb3J0YWwhOiBYUG9ydGFsT3ZlcmxheVJlZjxYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50PjtcclxuICBpY29uOiBzdHJpbmcgPSAnZnRvLWNhbGVuZGFyJztcclxuICBib3ghOiBET01SZWN0O1xyXG4gIHByb3RhbEhlaWdodCE6IG51bWJlcjtcclxuICBtYXhOb2RlczogbnVtYmVyID0gNjtcclxuICBwcm90YWxUb2JvdHRvbTogYm9vbGVhbiA9IHRydWU7XHJcbiAgdmFsdWVDaGFuZ2U6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZGF0YUNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBwb3NpdGlvbkNoYW5nZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBjbG9zZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHN0YXJ0RGlzcGxheTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XHJcbiAgZW5kRGlzcGxheTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XHJcbiAgc3RhcnRBY3RpdmU6IFhCb29sZWFuID0gZmFsc2U7XHJcbiAgZW5kQWN0aXZlOiBYQm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHBvcnRhbFNlcnZpY2U6IFhQb3J0YWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0RmxleCh0aGlzLmRhdGVSYW5nZS5uYXRpdmVFbGVtZW50LCB0aGlzLnJlbmRlcmVyLCB0aGlzLmp1c3RpZnksIHRoaXMuYWxpZ24sIHRoaXMuZGlyZWN0aW9uKTtcclxuICAgIHRoaXMuc2V0Rm9ybWF0KCk7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0UG9ydGFsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHR5cGUgfSA9IGNoYW5nZXM7XHJcbiAgICBpZiAoWElzQ2hhbmdlKHR5cGUpKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybWF0KCk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJqZWN0KCkge1xyXG4gICAgdGhpcy5jbG9zZVN1YmplY3QucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZVBvcnRhbCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtYXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgIT09ICd5eXl5LU1NLWRkJykgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLmZvcm1hdCA9ICd5eXl5JztcclxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0nO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLWhvdXInKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEgnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdkYXRlLW1pbnV0ZScpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtZW50ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5lbnRlciA9IHRydWU7XHJcbiAgICBpZiAoIVhJc0VtcHR5KHRoaXMubnVtYmVyVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuaWNvbiA9ICcnO1xyXG4gICAgICB0aGlzLmlucHV0Q2xlYXJhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWxlYXZlKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMuZW50ZXIgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmlucHV0Q2xlYXJhYmxlKSB7XHJcbiAgICAgIHRoaXMuaWNvbiA9ICdmdG8tY2FsZW5kYXInO1xyXG4gICAgICB0aGlzLmlucHV0Q2xlYXJhYmxlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyRW1pdCgpIHtcclxuICAgIHRoaXMudmFsdWUgPSBbXTtcclxuICAgIHRoaXMubnVtYmVyVmFsdWUgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gW107XHJcbiAgICB0aGlzLm1sZWF2ZSgpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgbW9kZWxDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZ2V0VmFsdWUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsVHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgID8gdGhpcy5udW1iZXJWYWx1ZS5tYXAoKHgpID0+IG5ldyBEYXRlKHgpKVxyXG4gICAgICA6IHRoaXMubW9kZWxUeXBlID09PSAnc3RyaW5nJ1xyXG4gICAgICA/IHRoaXMubnVtYmVyVmFsdWUubWFwKCh4KSA9PiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh4LCB0aGlzLmZvcm1hdCkpXHJcbiAgICAgIDogdGhpcy5udW1iZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIHBvcnRhbEF0dGFjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VQb3J0YWwoKSB7XHJcbiAgICBpZiAodGhpcy5wb3J0YWxBdHRhY2hlZCgpKSB7XHJcbiAgICAgIHRoaXMucG9ydGFsPy5vdmVybGF5UmVmPy5kZXRhY2goKTtcclxuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3lQb3J0YWwoKSB7XHJcbiAgICB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1BvcnRhbCgkZXZlbnQ6IEV2ZW50LCB0eXBlPzogJ3N0YXJ0JyB8ICdlbmQnKSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmFuaW1hdGluZykgcmV0dXJuO1xyXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGFydEFjdGl2ZSA9IHR5cGUgPT09ICdzdGFydCc7XHJcbiAgICB0aGlzLmVuZEFjdGl2ZSA9IHR5cGUgPT09ICdlbmQnO1xyXG4gICAgY29uc3QgY29uZmlnOiBPdmVybGF5Q29uZmlnID0ge1xyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnJyxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5zZXRQbGFjZW1lbnQoKSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2V0UG9zaXRpb24oY29uZmlnKTtcclxuICAgIHRoaXMucG9ydGFsID0gdGhpcy5wb3J0YWxTZXJ2aWNlLmF0dGFjaCh7XHJcbiAgICAgIGNvbnRlbnQ6IFhEYXRlUmFuZ2VQb3J0YWxDb21wb25lbnQsXHJcbiAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcclxuICAgICAgb3ZlcmxheUNvbmZpZzogY29uZmlnXHJcbiAgICB9KTtcclxuICAgIHRoaXMucG9ydGFsLm92ZXJsYXlSZWZcclxuICAgICAgPy5vdXRzaWRlUG9pbnRlckV2ZW50cygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldERpc3BsYXlWYWx1ZSh0aGlzLm51bWJlclZhbHVlKTtcclxuICAgICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZXRJbnN0YW5jZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24oY29uZmlnOiBPdmVybGF5Q29uZmlnKSB7XHJcbiAgICBsZXQgcG9zaXRpb24gPSBjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3k7XHJcbiAgICBwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKChwb3M6IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSkgPT4ge1xyXG4gICAgICBjb25zdCBwbGFjZSA9IFhQb3J0YWxDb25uZWN0ZWRQb3NpdGlvbi5nZXQocG9zLmNvbm5lY3Rpb25QYWlyKSBhcyBYQ29ybmVyO1xyXG4gICAgICBwbGFjZSAhPT0gdGhpcy5wbGFjZW1lbnQgJiYgdGhpcy5wb3NpdGlvbkNoYW5nZS5uZXh0KHBsYWNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5zdGFuY2UoKSB7XHJcbiAgICBsZXQgY29tcG9uZW50UmVmID0gdGhpcy5wb3J0YWw/LmNvbXBvbmVudFJlZjtcclxuICAgIGlmICghY29tcG9uZW50UmVmKSByZXR1cm47XHJcbiAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudFJlZi5pbnN0YW5jZSwge1xyXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXHJcbiAgICAgIHZhbHVlOiB0aGlzLm51bWJlclZhbHVlLFxyXG4gICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxyXG4gICAgICBwcmVzZXQ6IHRoaXMucHJlc2V0LFxyXG4gICAgICB2YWx1ZUNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZSxcclxuICAgICAgcG9zaXRpb25DaGFuZ2U6IHRoaXMucG9zaXRpb25DaGFuZ2UsXHJcbiAgICAgIGNsb3NlUG9ydGFsOiAoKSA9PiB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCksXHJcbiAgICAgIGRlc3Ryb3lQb3J0YWw6ICgpID0+IHRoaXMuZGVzdHJveVBvcnRhbCgpLFxyXG4gICAgICBub2RlRW1pdDogKGRhdGVzOiBEYXRlW10sIHN1cmUgPSB0cnVlKSA9PiB0aGlzLm9uTm9kZUNsaWNrKGRhdGVzLCBzdXJlKSxcclxuICAgICAgc3RhcnROb2RlRW1pdDogKG5vZGU6IERhdGUpID0+IHRoaXMuc3RhcnROb2RlQ2xpY2sobm9kZSksXHJcbiAgICAgIGVuZE5vZGVFbWl0OiAobm9kZTogRGF0ZSkgPT4gdGhpcy5lbmROb2RlQ2xpY2sobm9kZSksXHJcbiAgICAgIGFuaW1hdGluZzogKGluZzogYm9vbGVhbikgPT4gKHRoaXMuYW5pbWF0aW5nID0gaW5nKVxyXG4gICAgfSk7XHJcbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnROb2RlQ2xpY2sobm9kZTogRGF0ZSkge1xyXG4gICAgdGhpcy5zdGFydERpc3BsYXkgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShub2RlLCB0aGlzLmZvcm1hdCkgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZW5kTm9kZUNsaWNrKG5vZGU6IERhdGUpIHtcclxuICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5vZGUsIHRoaXMuZm9ybWF0KSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk5vZGVDbGljayhkYXRlczogRGF0ZVtdLCBzdXJlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5pc0lucHV0ID0gZmFsc2U7XHJcbiAgICBpZiAoc3VyZSkge1xyXG4gICAgICB0aGlzLm51bWJlclZhbHVlID0gZGF0ZXMubWFwKCh4KSA9PiB4LmdldFRpbWUoKSk7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheVZhbHVlKHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KCk7XHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UoKTtcclxuICAgICAgdGhpcy5ub2RlRW1pdC5lbWl0KHRoaXMubnVtYmVyVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXREaXNwbGF5VmFsdWUoZGF0ZXMubWFwKCh4KSA9PiB4LmdldFRpbWUoKSkpO1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoKSB7XHJcbiAgICB0aGlzLmlzSW5wdXQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzcGxheVZhbHVlKGRhdGVOdW1iZXI6IG51bWJlcltdKSB7XHJcbiAgICAvLyBpZiAodGhpcy5pc0lucHV0ICYmIGlzTmFOKHRoaXMuc3RhcnREaXNwbGF5KSAmJiAhaXNOYU4oRGF0ZS5wYXJzZSh0aGlzLmRpc3BsYXlWYWx1ZSkpKSB7XHJcbiAgICAvLyAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kaXNwbGF5VmFsdWUsIHRoaXMuZm9ybWF0KTtcclxuICAgIC8vICAgdGhpcy5udW1iZXJWYWx1ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheVZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAvLyAgIHRoaXMudmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XHJcbiAgICAvLyAgIHRoaXMubW9kZWxDaGFuZ2UoKTtcclxuICAgIC8vICAgdGhpcy5pc0lucHV0ID0gZmFsc2U7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBkYXRlTnVtYmVyLm1hcCgoeCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oeCwgdGhpcy5mb3JtYXQpKSBhcyBzdHJpbmdbXTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHNldFBsYWNlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnBvcnRhbFNlcnZpY2Uuc2V0UGxhY2VtZW50KHtcclxuICAgICAgZWxlbWVudFJlZjogdGhpcy5pbnB1dEdyb3VwLmVsZW1lbnRSZWYsXHJcbiAgICAgIHBsYWNlbWVudDogW3RoaXMucGxhY2VtZW50IGFzIFhDb3JuZXIsICdib3R0b20tc3RhcnQnLCAnYm90dG9tLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wLWVuZCddLFxyXG4gICAgICB0cmFuc2Zvcm1PcmlnaW5PbjogJ3gtZGF0ZS1yYW5nZS1wb3J0YWwnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBvcnRhbCgpIHtcclxuICAgIHRoaXMucG9ydGFsQXR0YWNoZWQoKSAmJiB0aGlzLnBvcnRhbD8ub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLnNldFBsYWNlbWVudCgpKTtcclxuICB9XHJcblxyXG4gIHNldENsYXNzTWFwKCkge1xyXG4gICAgWENsZWFyQ2xhc3ModGhpcy5sYWJlbE1hcCk7XHJcbiAgICB0aGlzLmxhYmVsTWFwW2B4LXRleHQtYWxpZ24tJHt0aGlzLmxhYmVsQWxpZ259YF0gPSB0aGlzLmxhYmVsQWxpZ24gPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmb3JtQ29udHJvbENoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2RhdGVSYW5nZSBjbGFzcz1cIngtZGF0ZS1yYW5nZVwiIFtjbGFzcy54LWRhdGUtcmFuZ2UtYWN0aXZlXT1cImFjdGl2ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2Utcm93XCI+XHJcbiAgICA8eC1pbnB1dC1ncm91cCAjaW5wdXRHcm91cCBjbGFzcz1cIngtZGF0ZS1yYW5nZS1ncm91cFwiIGJvcmRlcmVkPVwiZmFsc2VcIiAoY2xpY2spPVwic2hvd1BvcnRhbCgkZXZlbnQpXCI+XHJcbiAgICAgIDx4LWlucHV0XHJcbiAgICAgICAgI2lucHV0U3RhcnRDb21cclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCLlvIDlp4vml6XmnJ9cIlxyXG4gICAgICAgIFsoYWN0aXZlKV09XCJzdGFydEFjdGl2ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNob3dQb3J0YWwoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICA+PC94LWlucHV0PlxyXG4gICAgICA8eC1pY29uIHR5cGU9XCJmdG8tYXJyb3ctcmlnaHRcIj48L3gtaWNvbj5cclxuICAgICAgPHgtaW5wdXRcclxuICAgICAgICAjaW5wdXRFbmRDb21cclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCLnu5PmnZ/ml6XmnJ9cIlxyXG4gICAgICAgIFsoYWN0aXZlKV09XCJlbmRBY3RpdmVcIlxyXG4gICAgICAgIChjbGljayk9XCJzaG93UG9ydGFsKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICA+PC94LWlucHV0PlxyXG4gICAgICA8eC1pY29uIFt0eXBlXT1cImljb25cIj48L3gtaWNvbj5cclxuICAgIDwveC1pbnB1dC1ncm91cD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|