@koobiq/components 18.35.0 → 18.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion.component.d.ts +1 -1
- package/app-switcher/_app-switcher-theme.scss +34 -0
- package/app-switcher/app-switcher-animations.d.ts +5 -0
- package/app-switcher/app-switcher-dropdown-app.d.ts +11 -0
- package/app-switcher/app-switcher-dropdown-app.scss +85 -0
- package/app-switcher/app-switcher-dropdown-site.d.ts +9 -0
- package/app-switcher/app-switcher-dropdown-site.scss +53 -0
- package/app-switcher/app-switcher.d.ts +191 -0
- package/app-switcher/app-switcher.module.d.ts +10 -0
- package/app-switcher/app-switcher.scss +64 -0
- package/app-switcher/index.d.ts +1 -0
- package/app-switcher/kbq-app-switcher-list-item.d.ts +16 -0
- package/app-switcher/kbq-app-switcher-list-item.scss +180 -0
- package/app-switcher/public-api.d.ts +6 -0
- package/badge/badge.component.d.ts +1 -1
- package/badge/badge.component.scss +2 -0
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/button/button.component.d.ts +2 -2
- package/core/common-behaviors/clipboard.d.ts +1 -1
- package/core/common-behaviors/color.d.ts +5 -5
- package/core/common-behaviors/focus-monitor.d.ts +19 -0
- package/core/common-behaviors/hovered.d.ts +13 -0
- package/core/common-behaviors/index.d.ts +4 -0
- package/core/common-behaviors/orientation.d.ts +4 -0
- package/core/common-behaviors/read-state.d.ts +12 -0
- package/core/locales/en-US.d.ts +62 -0
- package/core/locales/es-LA.d.ts +62 -0
- package/core/locales/fa-IR.d.ts +62 -0
- package/core/locales/locale-service.d.ts +434 -0
- package/core/locales/pt-BR.d.ts +62 -0
- package/core/locales/ru-RU.d.ts +62 -0
- package/core/locales/tk-TM.d.ts +62 -0
- package/core/locales/types.d.ts +22 -0
- package/core/locales/zh-CN.d.ts +62 -0
- package/core/navbar/rectangle-item.d.ts +1 -1
- package/core/option/action.d.ts +1 -1
- package/core/option/option.d.ts +1 -1
- package/core/pop-up/constants.d.ts +2 -1
- package/core/pop-up/pop-up-trigger.d.ts +3 -3
- package/core/pop-up/pop-up.d.ts +2 -1
- package/core/select/common.d.ts +3 -0
- package/core/select/constants.d.ts +5 -0
- package/core/styles/common/_select.scss +5 -0
- package/core/utils/dom.d.ts +1 -6
- package/divider/divider.scss +1 -0
- package/dropdown/dropdown.component.d.ts +5 -1
- package/dropdown/dropdown.module.d.ts +1 -1
- package/esm2022/accordion/accordion-content.mjs +3 -3
- package/esm2022/accordion/accordion-header.mjs +3 -3
- package/esm2022/accordion/accordion-item.mjs +3 -3
- package/esm2022/accordion/accordion-trigger.component.mjs +3 -3
- package/esm2022/accordion/accordion.component.mjs +5 -5
- package/esm2022/accordion/accordion.module.mjs +4 -4
- package/esm2022/actions-panel/actions-panel-container.mjs +3 -3
- package/esm2022/actions-panel/actions-panel.mjs +3 -3
- package/esm2022/actions-panel/module.mjs +4 -4
- package/esm2022/alert/alert.component.mjs +12 -12
- package/esm2022/alert/alert.module.mjs +4 -4
- package/esm2022/app-switcher/app-switcher-animations.mjs +18 -0
- package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +75 -0
- package/esm2022/app-switcher/app-switcher-dropdown-site.mjs +60 -0
- package/esm2022/app-switcher/app-switcher.mjs +446 -0
- package/esm2022/app-switcher/app-switcher.module.mjs +45 -0
- package/esm2022/app-switcher/index.mjs +2 -0
- package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +84 -0
- package/esm2022/app-switcher/koobiq-components-app-switcher.mjs +5 -0
- package/esm2022/app-switcher/public-api.mjs +7 -0
- package/esm2022/autocomplete/autocomplete-origin.directive.mjs +3 -3
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +3 -3
- package/esm2022/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/autocomplete/autocomplete.module.mjs +4 -4
- package/esm2022/badge/badge.component.mjs +11 -11
- package/esm2022/badge/badge.module.mjs +4 -4
- package/esm2022/breadcrumbs/breadcrumbs.mjs +17 -17
- package/esm2022/breadcrumbs/breadcrumbs.module.mjs +4 -4
- package/esm2022/button/button.component.mjs +7 -7
- package/esm2022/button/button.dropdown-trigger.directive.mjs +3 -3
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/button-toggle/button-toggle.component.mjs +6 -6
- package/esm2022/button-toggle/button-toggle.module.mjs +4 -4
- package/esm2022/checkbox/checkbox-module.mjs +4 -4
- package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
- package/esm2022/checkbox/checkbox.mjs +3 -3
- package/esm2022/clamped-text/clamped-text.mjs +3 -3
- package/esm2022/clamped-text/module.mjs +4 -4
- package/esm2022/code-block/code-block-highlight.mjs +7 -7
- package/esm2022/code-block/code-block.mjs +4 -4
- package/esm2022/code-block/code-block.module.mjs +4 -4
- package/esm2022/content-panel/content-panel.mjs +24 -24
- package/esm2022/content-panel/module.mjs +4 -4
- package/esm2022/content-panel/resizable.mjs +6 -6
- package/esm2022/core/common-behaviors/clipboard.mjs +4 -4
- package/esm2022/core/common-behaviors/color.mjs +6 -7
- package/esm2022/core/common-behaviors/common-module.mjs +4 -4
- package/esm2022/core/common-behaviors/focus-monitor.mjs +37 -0
- package/esm2022/core/common-behaviors/hovered.mjs +31 -0
- package/esm2022/core/common-behaviors/index.mjs +5 -1
- package/esm2022/core/common-behaviors/orientation.mjs +2 -0
- package/esm2022/core/common-behaviors/read-state.mjs +33 -0
- package/esm2022/core/error/error-state-matcher.mjs +9 -9
- package/esm2022/core/form-field/field-sizing-content.mjs +3 -3
- package/esm2022/core/formatters/date/formatter.mjs +3 -3
- package/esm2022/core/formatters/date/formatter.pipe.mjs +78 -78
- package/esm2022/core/formatters/filesize/formatter.mjs +3 -3
- package/esm2022/core/formatters/index.mjs +4 -4
- package/esm2022/core/formatters/number/formatter.mjs +12 -12
- package/esm2022/core/forms/forms-module.mjs +4 -4
- package/esm2022/core/forms/forms.directive.mjs +6 -6
- package/esm2022/core/highlight/highlight.pipe.mjs +3 -3
- package/esm2022/core/highlight/index.mjs +4 -4
- package/esm2022/core/line/line.mjs +7 -7
- package/esm2022/core/locales/en-US.mjs +105 -1
- package/esm2022/core/locales/es-LA.mjs +105 -1
- package/esm2022/core/locales/fa-IR.mjs +75 -1
- package/esm2022/core/locales/locale-service.mjs +3 -3
- package/esm2022/core/locales/locale-service.module.mjs +4 -4
- package/esm2022/core/locales/pt-BR.mjs +105 -1
- package/esm2022/core/locales/ru-RU.mjs +119 -1
- package/esm2022/core/locales/tk-TM.mjs +105 -1
- package/esm2022/core/locales/types.mjs +1 -1
- package/esm2022/core/locales/zh-CN.mjs +63 -1
- package/esm2022/core/navbar/rectangle-item.mjs +7 -6
- package/esm2022/core/option/action-container.mjs +3 -3
- package/esm2022/core/option/action.mjs +4 -4
- package/esm2022/core/option/optgroup.mjs +3 -3
- package/esm2022/core/option/option-module.mjs +4 -4
- package/esm2022/core/option/option.mjs +4 -4
- package/esm2022/core/pop-up/constants.mjs +2 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +6 -6
- package/esm2022/core/pop-up/pop-up.mjs +4 -4
- package/esm2022/core/select/common.mjs +27 -17
- package/esm2022/core/select/constants.mjs +6 -1
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
- package/esm2022/core/services/measure-scrollbar.service.mjs +3 -3
- package/esm2022/core/services/theme.service.mjs +3 -3
- package/esm2022/core/utils/dom.mjs +2 -8
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +3 -3
- package/esm2022/datepicker/calendar-header.component.mjs +3 -3
- package/esm2022/datepicker/calendar.component.mjs +3 -3
- package/esm2022/datepicker/datepicker-input.directive.mjs +6 -6
- package/esm2022/datepicker/datepicker-intl.mjs +3 -3
- package/esm2022/datepicker/datepicker-module.mjs +4 -4
- package/esm2022/datepicker/datepicker-toggle.component.mjs +9 -9
- package/esm2022/datepicker/datepicker.component.mjs +6 -6
- package/esm2022/datepicker/month-view.component.mjs +3 -3
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/divider/divider.module.mjs +4 -4
- package/esm2022/dl/dl.component.mjs +9 -9
- package/esm2022/dl/dl.module.mjs +4 -4
- package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
- package/esm2022/dropdown/dropdown-item.component.mjs +3 -3
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +5 -5
- package/esm2022/dropdown/dropdown.component.mjs +18 -8
- package/esm2022/dropdown/dropdown.module.mjs +14 -10
- package/esm2022/dynamic-translation/dynamic-translation.mjs +9 -9
- package/esm2022/dynamic-translation/module.mjs +4 -4
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +7 -7
- package/esm2022/empty-state/empty-state.component.mjs +15 -15
- package/esm2022/empty-state/empty-state.module.mjs +4 -4
- package/esm2022/file-upload/file-drop.mjs +3 -3
- package/esm2022/file-upload/file-upload.mjs +1 -1
- package/esm2022/file-upload/file-upload.module.mjs +4 -4
- package/esm2022/file-upload/multiple-file-upload.component.mjs +19 -8
- package/esm2022/file-upload/single-file-upload.component.mjs +13 -5
- package/esm2022/filter-bar/filter-bar-button.mjs +3 -3
- package/esm2022/filter-bar/filter-bar.mjs +3 -3
- package/esm2022/filter-bar/filter-bar.module.mjs +4 -4
- package/esm2022/filter-bar/filter-refresher.mjs +3 -3
- package/esm2022/filter-bar/filter-reset.mjs +3 -3
- package/esm2022/filter-bar/filter-search.mjs +3 -3
- package/esm2022/filter-bar/filters.mjs +4 -4
- package/esm2022/filter-bar/pipe-add.mjs +5 -5
- package/esm2022/filter-bar/pipe.directive.mjs +3 -3
- package/esm2022/filter-bar/pipes/base-pipe.mjs +7 -7
- package/esm2022/filter-bar/pipes/pipe-button.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +12 -7
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +12 -7
- package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-state.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-title.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +6 -6
- package/esm2022/form-field/cleaner.mjs +3 -3
- package/esm2022/form-field/error.mjs +3 -3
- package/esm2022/form-field/fieldset.mjs +11 -11
- package/esm2022/form-field/form-field.mjs +11 -11
- package/esm2022/form-field/form-field.module.mjs +4 -4
- package/esm2022/form-field/hint.mjs +3 -3
- package/esm2022/form-field/label.mjs +3 -3
- package/esm2022/form-field/password-hint.mjs +3 -3
- package/esm2022/form-field/password-toggle.mjs +7 -7
- package/esm2022/form-field/prefix.mjs +3 -3
- package/esm2022/form-field/reactive-password-hint.mjs +3 -3
- package/esm2022/form-field/stepper.mjs +3 -3
- package/esm2022/form-field/suffix.mjs +3 -3
- package/esm2022/form-field/validate.directive.mjs +3 -3
- package/esm2022/icon/icon-button.component.mjs +3 -3
- package/esm2022/icon/icon-item.component.mjs +3 -3
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +4 -4
- package/esm2022/inline-edit/index.mjs +3 -0
- package/esm2022/inline-edit/inline-edit.mjs +378 -0
- package/esm2022/inline-edit/koobiq-components-inline-edit.mjs +5 -0
- package/esm2022/inline-edit/module.mjs +25 -0
- package/esm2022/input/input-number-validators.mjs +6 -6
- package/esm2022/input/input-number.mjs +4 -4
- package/esm2022/input/input-password.mjs +4 -4
- package/esm2022/input/input.mjs +7 -7
- package/esm2022/input/input.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +6 -6
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/list-selection.component.mjs +10 -10
- package/esm2022/list/list.component.mjs +6 -6
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
- package/esm2022/loader-overlay/loader-overlay.module.mjs +4 -4
- package/esm2022/markdown/markdown.component.mjs +5 -5
- package/esm2022/markdown/markdown.module.mjs +4 -4
- package/esm2022/markdown/markdown.service.mjs +3 -3
- package/esm2022/modal/css-unit.pipe.mjs +3 -3
- package/esm2022/modal/modal-control.service.mjs +3 -3
- package/esm2022/modal/modal.component.mjs +4 -4
- package/esm2022/modal/modal.directive.mjs +12 -12
- package/esm2022/modal/modal.module.mjs +4 -4
- package/esm2022/modal/modal.service.mjs +3 -3
- package/esm2022/navbar/navbar-item.component.mjs +49 -38
- package/esm2022/navbar/navbar.component.mjs +10 -10
- package/esm2022/navbar/navbar.module.mjs +4 -4
- package/esm2022/navbar/vertical-navbar.component.mjs +4 -4
- package/esm2022/navbar-ic/navbar-ic-header.mjs +7 -7
- package/esm2022/navbar-ic/navbar-ic-item.mjs +30 -38
- package/esm2022/navbar-ic/navbar-ic.mjs +18 -13
- package/esm2022/navbar-ic/navbar-ic.module.mjs +4 -4
- package/esm2022/notification-center/index.mjs +2 -0
- package/esm2022/notification-center/koobiq-components-notification-center.mjs +5 -0
- package/esm2022/notification-center/notification-center-animations.mjs +18 -0
- package/esm2022/notification-center/notification-center.mjs +353 -0
- package/esm2022/notification-center/notification-center.module.mjs +38 -0
- package/esm2022/notification-center/notification-center.service.mjs +127 -0
- package/esm2022/notification-center/notification-item.mjs +70 -0
- package/esm2022/notification-center/public-api.mjs +5 -0
- package/esm2022/overflow-items/module.mjs +4 -4
- package/esm2022/overflow-items/overflow-items.mjs +95 -41
- package/esm2022/popover/popover-confirm.component.mjs +10 -10
- package/esm2022/popover/popover.component.mjs +18 -13
- package/esm2022/popover/popover.module.mjs +4 -4
- package/esm2022/progress-bar/progress-bar.component.mjs +9 -9
- package/esm2022/progress-bar/progress-bar.module.mjs +4 -4
- package/esm2022/progress-spinner/progress-spinner.component.mjs +9 -9
- package/esm2022/progress-spinner/progress-spinner.module.mjs +4 -4
- package/esm2022/radio/radio.component.mjs +6 -6
- package/esm2022/radio/radio.module.mjs +4 -4
- package/esm2022/risk-level/risk-level.component.mjs +3 -3
- package/esm2022/risk-level/risk-level.module.mjs +4 -4
- package/esm2022/scrollbar/scrollbar.component.mjs +3 -3
- package/esm2022/scrollbar/scrollbar.directive.mjs +3 -3
- package/esm2022/scrollbar/scrollbar.module.mjs +4 -4
- package/esm2022/search-expandable/index.mjs +2 -0
- package/esm2022/search-expandable/koobiq-components-search-expandable.mjs +5 -0
- package/esm2022/search-expandable/public-api.mjs +3 -0
- package/esm2022/search-expandable/search-expandable.mjs +177 -0
- package/esm2022/search-expandable/search-expandable.module.mjs +18 -0
- package/esm2022/select/select-option.directive.mjs +3 -3
- package/esm2022/select/select.component.mjs +37 -10
- package/esm2022/select/select.module.mjs +4 -4
- package/esm2022/sidebar/sidebar.component.mjs +9 -9
- package/esm2022/sidebar/sidebar.module.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
- package/esm2022/sidepanel/sidepanel-directives.mjs +15 -15
- package/esm2022/sidepanel/sidepanel.module.mjs +4 -4
- package/esm2022/sidepanel/sidepanel.service.mjs +3 -3
- package/esm2022/split-button/index.mjs +2 -0
- package/esm2022/split-button/koobiq-components-split-button.mjs +5 -0
- package/esm2022/split-button/public-api.mjs +3 -0
- package/esm2022/split-button/split-button.mjs +92 -0
- package/esm2022/split-button/split-button.module.mjs +18 -0
- package/esm2022/splitter/splitter.component.mjs +13 -13
- package/esm2022/splitter/splitter.module.mjs +4 -4
- package/esm2022/table/table.component.mjs +6 -6
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/tabs/paginated-tab-header.mjs +4 -4
- package/esm2022/tabs/tab-body.component.mjs +6 -6
- package/esm2022/tabs/tab-content.directive.mjs +3 -3
- package/esm2022/tabs/tab-group.component.mjs +15 -15
- package/esm2022/tabs/tab-header.component.mjs +4 -4
- package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
- package/esm2022/tabs/tab-label.directive.mjs +3 -3
- package/esm2022/tabs/tab-nav-bar.mjs +10 -10
- package/esm2022/tabs/tab.component.mjs +3 -3
- package/esm2022/tabs/tabs.module.mjs +4 -4
- package/esm2022/tags/tag-input.mjs +17 -11
- package/esm2022/tags/tag-list.component.mjs +236 -194
- package/esm2022/tags/tag.component.mjs +209 -138
- package/esm2022/tags/tag.module.mjs +4 -4
- package/esm2022/textarea/textarea.component.mjs +5 -5
- package/esm2022/textarea/textarea.module.mjs +4 -4
- package/esm2022/time-range/constants.mjs +21 -0
- package/esm2022/time-range/index.mjs +8 -0
- package/esm2022/time-range/koobiq-components-time-range.mjs +5 -0
- package/esm2022/time-range/module.mjs +36 -0
- package/esm2022/time-range/time-range-editor.mjs +219 -0
- package/esm2022/time-range/time-range-title-as-form-field.mjs +59 -0
- package/esm2022/time-range/time-range-title.mjs +112 -0
- package/esm2022/time-range/time-range.mjs +229 -0
- package/esm2022/time-range/time-range.service.mjs +189 -0
- package/esm2022/time-range/types.mjs +2 -0
- package/esm2022/timepicker/timepicker.directive.mjs +4 -4
- package/esm2022/timepicker/timepicker.module.mjs +4 -4
- package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
- package/esm2022/timezone/timezone-option.component.mjs +3 -3
- package/esm2022/timezone/timezone-option.directive.mjs +3 -3
- package/esm2022/timezone/timezone-select.component.mjs +9 -9
- package/esm2022/timezone/timezone.module.mjs +4 -4
- package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
- package/esm2022/title/title.directive.mjs +3 -3
- package/esm2022/title/title.module.mjs +4 -4
- package/esm2022/toast/toast-container.component.mjs +3 -3
- package/esm2022/toast/toast.component.mjs +20 -14
- package/esm2022/toast/toast.module.mjs +4 -4
- package/esm2022/toast/toast.service.mjs +5 -4
- package/esm2022/toast/toast.type.mjs +1 -1
- package/esm2022/toggle/toggle.component.mjs +3 -3
- package/esm2022/toggle/toggle.module.mjs +4 -4
- package/esm2022/tooltip/tooltip.component.mjs +19 -19
- package/esm2022/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/top-bar/module.mjs +4 -4
- package/esm2022/top-bar/top-bar.mjs +9 -9
- package/esm2022/tree/node.mjs +3 -3
- package/esm2022/tree/outlet.mjs +3 -3
- package/esm2022/tree/padding.directive.mjs +3 -3
- package/esm2022/tree/toggle.mjs +16 -12
- package/esm2022/tree/tree-base.mjs +7 -7
- package/esm2022/tree/tree-option.component.mjs +5 -9
- package/esm2022/tree/tree-selection.component.mjs +4 -4
- package/esm2022/tree/tree.mjs +3 -3
- package/esm2022/tree/tree.module.mjs +4 -4
- package/esm2022/tree-select/tree-select.component.mjs +54 -14
- package/esm2022/tree-select/tree-select.module.mjs +4 -4
- package/esm2022/username/module.mjs +4 -4
- package/esm2022/username/username.mjs +15 -15
- package/esm2022/username/username.pipe.mjs +8 -8
- package/fesm2022/koobiq-components-accordion.mjs +20 -20
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-app-switcher.mjs +704 -0
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -0
- package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
- package/fesm2022/koobiq-components-badge.mjs +14 -14
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +20 -20
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
- package/fesm2022/koobiq-components-button.mjs +13 -13
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +10 -10
- package/fesm2022/koobiq-components-clamped-text.mjs +7 -7
- package/fesm2022/koobiq-components-code-block.mjs +13 -13
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +34 -34
- package/fesm2022/koobiq-components-core.mjs +1032 -263
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +40 -40
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +8 -8
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dropdown.mjs +39 -25
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +36 -18
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +96 -86
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +60 -60
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +13 -13
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +407 -0
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -0
- package/fesm2022/koobiq-components-input.mjs +22 -22
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +10 -10
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +12 -12
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +28 -28
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +53 -56
- package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +65 -54
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +586 -0
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -0
- package/fesm2022/koobiq-components-overflow-items.mjs +98 -44
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +30 -25
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-search-expandable.mjs +199 -0
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -0
- package/fesm2022/koobiq-components-select.mjs +43 -16
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +25 -25
- package/fesm2022/koobiq-components-split-button.mjs +114 -0
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-tabs.mjs +52 -52
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +461 -346
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +8 -8
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +840 -0
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -0
- package/fesm2022/koobiq-components-timepicker.mjs +7 -7
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +24 -24
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +28 -21
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +7 -7
- package/fesm2022/koobiq-components-tooltip.mjs +22 -22
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-tree-select.mjs +57 -17
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +44 -44
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +27 -27
- package/file-upload/_file-upload-theme.scss +1 -1
- package/file-upload/file-upload.d.ts +1 -1
- package/file-upload/multiple-file-upload.component.d.ts +1 -0
- package/file-upload/single-file-upload.component.d.ts +1 -0
- package/filter-bar/pipes/base-pipe.d.ts +1 -1
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +1 -0
- package/form-field/fieldset-tokens.scss +1 -1
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.d.ts +1 -1
- package/form-field/form-field.scss +1 -9
- package/form-field/password-toggle.d.ts +1 -1
- package/icon/icon.component.d.ts +2 -2
- package/inline-edit/index.d.ts +2 -0
- package/inline-edit/inline-edit-tokens.scss +8 -0
- package/inline-edit/inline-edit.d.ts +136 -0
- package/inline-edit/inline-edit.scss +208 -0
- package/inline-edit/module.d.ts +7 -0
- package/input/input-number.d.ts +1 -1
- package/input/input-password.d.ts +2 -2
- package/input/input.d.ts +2 -2
- package/link/link.component.d.ts +3 -3
- package/list/list-selection.component.d.ts +1 -1
- package/loader-overlay/loader-overlay.component.d.ts +1 -1
- package/markdown/_markdown-theme.scss +1 -1
- package/markdown/markdown-tokens.scss +1 -0
- package/markdown/markdown.scss +8 -0
- package/modal/modal.component.d.ts +1 -1
- package/navbar/navbar-item.component.d.ts +3 -2
- package/navbar/navbar.component.d.ts +4 -4
- package/navbar/vertical-navbar.component.d.ts +2 -2
- package/navbar-ic/navbar-ic-header.d.ts +1 -1
- package/navbar-ic/navbar-ic-item.d.ts +2 -2
- package/navbar-ic/navbar-ic.d.ts +4 -2
- package/notification-center/_notification-center-theme.scss +27 -0
- package/notification-center/index.d.ts +1 -0
- package/notification-center/notification-center-animations.d.ts +5 -0
- package/notification-center/notification-center.d.ts +153 -0
- package/notification-center/notification-center.module.d.ts +7 -0
- package/notification-center/notification-center.scss +126 -0
- package/notification-center/notification-center.service.d.ts +72 -0
- package/notification-center/notification-item.d.ts +27 -0
- package/notification-center/notification-item.scss +157 -0
- package/notification-center/public-api.d.ts +4 -0
- package/overflow-items/overflow-items.d.ts +23 -9
- package/package.json +46 -10
- package/popover/popover.component.d.ts +5 -1
- package/popover/popover.scss +15 -7
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +5 -5
- package/search-expandable/index.d.ts +1 -0
- package/search-expandable/public-api.d.ts +2 -0
- package/search-expandable/search-expandable.d.ts +70 -0
- package/search-expandable/search-expandable.module.d.ts +7 -0
- package/search-expandable/search-expandable.scss +21 -0
- package/select/select.component.d.ts +38 -3
- package/split-button/_split-button-theme.scss +59 -0
- package/split-button/index.d.ts +1 -0
- package/split-button/public-api.d.ts +2 -0
- package/split-button/split-button.d.ts +31 -0
- package/split-button/split-button.module.d.ts +7 -0
- package/split-button/split-button.scss +83 -0
- package/splitter/splitter.component.d.ts +5 -5
- package/tabs/paginated-tab-header.d.ts +1 -1
- package/tabs/tab-header.component.d.ts +2 -2
- package/tabs/tab-label-wrapper.directive.d.ts +2 -2
- package/tabs/tab-nav-bar.d.ts +3 -3
- package/tags/_tag-theme.scss +21 -15
- package/tags/tag-input.d.ts +2 -0
- package/tags/tag-list.component.d.ts +133 -45
- package/tags/tag-list.scss +11 -0
- package/tags/tag-tokens.scss +17 -1
- package/tags/tag.component.d.ts +79 -20
- package/tags/tag.scss +9 -0
- package/textarea/textarea.component.d.ts +2 -2
- package/time-range/constants.d.ts +8 -0
- package/time-range/index.d.ts +7 -0
- package/time-range/module.d.ts +10 -0
- package/time-range/time-range-editor.d.ts +67 -0
- package/time-range/time-range-title-as-form-field.d.ts +40 -0
- package/time-range/time-range-title.d.ts +18 -0
- package/time-range/time-range.d.ts +75 -0
- package/time-range/time-range.scss +66 -0
- package/time-range/time-range.service.d.ts +29 -0
- package/time-range/types.d.ts +43 -0
- package/timepicker/timepicker.directive.d.ts +2 -2
- package/toast/toast.component.d.ts +6 -4
- package/toast/toast.component.scss +11 -1
- package/toast/toast.service.d.ts +1 -0
- package/toast/toast.type.d.ts +1 -0
- package/tree/toggle.d.ts +1 -1
- package/tree/tree-base.d.ts +2 -2
- package/tree/tree-option.component.d.ts +1 -1
- package/tree/tree-selection.component.d.ts +1 -1
- package/tree-select/tree-select.component.d.ts +44 -3
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { EventEmitter, inject, Injectable } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { DateAdapter, DateFormatter } from '@koobiq/components/core';
|
|
4
|
+
import { KbqToastService } from '@koobiq/components/toast';
|
|
5
|
+
import { BehaviorSubject, combineLatestWith, merge } from 'rxjs';
|
|
6
|
+
import { map } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export const maxUnreadItemsLength = 99;
|
|
9
|
+
export class KbqNotificationCenterService {
|
|
10
|
+
/** Notification items */
|
|
11
|
+
get items() {
|
|
12
|
+
return this.originalItems.value;
|
|
13
|
+
}
|
|
14
|
+
set items(values) {
|
|
15
|
+
this.originalItems.next(this.setReadState(this.setIds(values)));
|
|
16
|
+
}
|
|
17
|
+
/** Number of unread notifications */
|
|
18
|
+
get unreadItemsCounter() {
|
|
19
|
+
return this.originalItems.pipe(map((items) => items.filter((item) => item.read === false).length)).pipe(combineLatestWith(this.onRead), map(([value]) => {
|
|
20
|
+
if (value < maxUnreadItemsLength) {
|
|
21
|
+
return value ? value.toString() : '';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return `${maxUnreadItemsLength}+`;
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
/** true if there are no notifications. */
|
|
29
|
+
get isEmpty() {
|
|
30
|
+
return this.originalItems.value.length === 0;
|
|
31
|
+
}
|
|
32
|
+
constructor() {
|
|
33
|
+
/** @docs-private */
|
|
34
|
+
this.adapter = inject(DateAdapter);
|
|
35
|
+
/** @docs-private */
|
|
36
|
+
this.formatter = inject(DateFormatter);
|
|
37
|
+
/** @docs-private */
|
|
38
|
+
this.toastService = inject(KbqToastService);
|
|
39
|
+
/** @docs-private */
|
|
40
|
+
this.silentMode = new BehaviorSubject(false);
|
|
41
|
+
/** @docs-private */
|
|
42
|
+
this.loadingMode = new BehaviorSubject(false);
|
|
43
|
+
/** @docs-private */
|
|
44
|
+
this.errorMode = new BehaviorSubject(false);
|
|
45
|
+
/** @docs-private */
|
|
46
|
+
this.onRead = new BehaviorSubject(null);
|
|
47
|
+
/** Triggers an event when the user presses the reload button. */
|
|
48
|
+
this.onReload = new EventEmitter();
|
|
49
|
+
this.originalItems = new BehaviorSubject([]);
|
|
50
|
+
/** @docs-private */
|
|
51
|
+
this.groupedItems = this.originalItems.pipe(map((items) => {
|
|
52
|
+
const result = {};
|
|
53
|
+
items.map((item) => this.makeGroup(item, result));
|
|
54
|
+
return Object.values(result).reverse();
|
|
55
|
+
}));
|
|
56
|
+
/** Emits an event whenever the changes. */
|
|
57
|
+
this.changes = merge(this.silentMode, this.loadingMode, this.errorMode, this.originalItems, this.onRead);
|
|
58
|
+
this.makeGroup = (item, groups) => {
|
|
59
|
+
const parsedDate = this.adapter.parse(item.date, '');
|
|
60
|
+
const groupId = this.adapter.format(parsedDate, 'yyyyMMdd');
|
|
61
|
+
const groupTitle = this.formatter.absoluteLongDate(parsedDate);
|
|
62
|
+
if (groups[groupId]) {
|
|
63
|
+
groups[groupId].items.unshift(item);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
groups[groupId] = {
|
|
67
|
+
title: groupTitle,
|
|
68
|
+
items: [item]
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
this.toastService?.read.pipe(takeUntilDestroyed()).subscribe((toastData) => {
|
|
73
|
+
const item = this.items.find((item) => item.id === toastData?.id);
|
|
74
|
+
if (item && !item.read) {
|
|
75
|
+
item.read = true;
|
|
76
|
+
this.onRead.next(toastData);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** Set silent mode */
|
|
81
|
+
setSilentMode(value) {
|
|
82
|
+
this.silentMode.next(value);
|
|
83
|
+
}
|
|
84
|
+
/** Set loading mode */
|
|
85
|
+
setLoadingMode(value) {
|
|
86
|
+
this.loadingMode.next(value);
|
|
87
|
+
}
|
|
88
|
+
/** Set error mode */
|
|
89
|
+
setErrorMode(value) {
|
|
90
|
+
this.errorMode.next(value);
|
|
91
|
+
}
|
|
92
|
+
/** Push new notification item in center */
|
|
93
|
+
push(item) {
|
|
94
|
+
this.setReadState(this.setIds([item]));
|
|
95
|
+
if (!this.silentMode.value) {
|
|
96
|
+
this.toastService.show(item);
|
|
97
|
+
}
|
|
98
|
+
return this.originalItems.next([...this.originalItems.value, item]);
|
|
99
|
+
}
|
|
100
|
+
/** Remove notification item */
|
|
101
|
+
remove(removedItem) {
|
|
102
|
+
this.originalItems.next(this.originalItems.value.filter((item) => removedItem !== item));
|
|
103
|
+
}
|
|
104
|
+
/** Remove group of notification items */
|
|
105
|
+
removeGroup(group) {
|
|
106
|
+
this.originalItems.next(this.originalItems.value.filter((item) => !group.items.includes(item)));
|
|
107
|
+
}
|
|
108
|
+
/** Remove all notification items */
|
|
109
|
+
removeAll() {
|
|
110
|
+
this.originalItems.next([]);
|
|
111
|
+
}
|
|
112
|
+
setIds(items) {
|
|
113
|
+
items.forEach((item) => (item.id = item.id ?? new Date().getTime().toString()));
|
|
114
|
+
return items;
|
|
115
|
+
}
|
|
116
|
+
setReadState(items) {
|
|
117
|
+
items.forEach((item) => (item.read = item.read ?? false));
|
|
118
|
+
return items;
|
|
119
|
+
}
|
|
120
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNotificationCenterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
121
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNotificationCenterService, providedIn: 'root' }); }
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNotificationCenterService, decorators: [{
|
|
124
|
+
type: Injectable,
|
|
125
|
+
args: [{ providedIn: 'root' }]
|
|
126
|
+
}], ctorParameters: () => [] });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNlbnRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9ub3RpZmljYXRpb24tY2VudGVyL25vdGlmaWNhdGlvbi1jZW50ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQWdCLGVBQWUsRUFBaUIsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBbUJyQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFPdkMsTUFBTSxPQUFPLDRCQUE0QjtJQW9DckMseUJBQXlCO0lBQ3pCLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE1BQTZCO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDWixJQUFJLEtBQUssR0FBRyxvQkFBb0IsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sR0FBRyxvQkFBb0IsR0FBRyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEO1FBL0RBLG9CQUFvQjtRQUNILFlBQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0Msb0JBQW9CO1FBQ0gsY0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxvQkFBb0I7UUFDSCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4RCxvQkFBb0I7UUFDWCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsb0JBQW9CO1FBQ1gsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxvQkFBb0I7UUFDWCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsb0JBQW9CO1FBQ1gsV0FBTSxHQUFHLElBQUksZUFBZSxDQUE2QixJQUFJLENBQUMsQ0FBQztRQUV4RSxpRUFBaUU7UUFDeEQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckMsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUEyQixDQUFDLENBQUM7UUFFekUsb0JBQW9CO1FBQ1gsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDM0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDVixNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFDO1lBRTFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFbEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFFRiwyQ0FBMkM7UUFDbEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQW1GckcsY0FBUyxHQUFHLENBQUMsSUFBeUIsRUFBRSxNQUE4QixFQUFFLEVBQUU7WUFDOUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUvRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHO29CQUNkLEtBQUssRUFBRSxVQUFVO29CQUNqQixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ2hCLENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBakVFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRWxFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFFakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBZ0MsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsYUFBYSxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixjQUFjLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLFlBQVksQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsSUFBSSxDQUFDLElBQXlCO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxXQUFnQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsV0FBVyxDQUFDLEtBQTRCO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxTQUFTO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQWlCTyxNQUFNLENBQUMsS0FBNEI7UUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEYsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUE0QjtRQUM3QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRTFELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7a0lBOUlRLDRCQUE0QjtzSUFBNUIsNEJBQTRCLGNBRGYsTUFBTTs7NEZBQ25CLDRCQUE0QjtrQkFEeEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5qZWN0YWJsZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxVG9hc3REYXRhLCBLYnFUb2FzdFNlcnZpY2UsIEticVRvYXN0U3R5bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0V2l0aCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBLYnFOb3RpZmljYXRpb25JdGVtIGV4dGVuZHMgT21pdDxLYnFUb2FzdERhdGEsICdjbG9zZUJ1dHRvbic+IHtcbiAgICBpZD86IHN0cmluZztcblxuICAgIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gICAgc3R5bGU/OiBzdHJpbmcgfCBLYnFUb2FzdFN0eWxlO1xuXG4gICAgaWNvbj86IGJvb2xlYW4gfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgICBpY29uQ2xhc3M/OiBzdHJpbmc7XG4gICAgY2FwdGlvbj86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgY29udGVudD86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICAgIGFjdGlvbnM/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIGRhdGU6IHN0cmluZztcbiAgICByZWFkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IG1heFVucmVhZEl0ZW1zTGVuZ3RoID0gOTk7XG5cbnR5cGUgS2JxTm90aWZpY2F0aW9uc0dyb3VwID0geyB0aXRsZTogc3RyaW5nOyBpdGVtczogS2JxTm90aWZpY2F0aW9uSXRlbVtdIH07XG5cbnR5cGUgS2JxTm90aWZpY2F0aW9uc0dyb3VwcyA9IFJlY29yZDxzdHJpbmcsIEticU5vdGlmaWNhdGlvbnNHcm91cD47XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgS2JxTm90aWZpY2F0aW9uQ2VudGVyU2VydmljZSB7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXIgPSBpbmplY3QoRGF0ZUFkYXB0ZXIpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXR0ZXIgPSBpbmplY3QoRGF0ZUZvcm1hdHRlcik7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0U2VydmljZSA9IGluamVjdChLYnFUb2FzdFNlcnZpY2UpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBzaWxlbnRNb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBsb2FkaW5nTW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVhZG9ubHkgZXJyb3JNb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBvblJlYWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEticU5vdGlmaWNhdGlvbkl0ZW0gfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBUcmlnZ2VycyBhbiBldmVudCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIHJlbG9hZCBidXR0b24uICovXG4gICAgcmVhZG9ubHkgb25SZWxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIG9yaWdpbmFsSXRlbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdIGFzIEticU5vdGlmaWNhdGlvbkl0ZW1bXSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlYWRvbmx5IGdyb3VwZWRJdGVtcyA9IHRoaXMub3JpZ2luYWxJdGVtcy5waXBlKFxuICAgICAgICBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IEticU5vdGlmaWNhdGlvbnNHcm91cHMgPSB7fTtcblxuICAgICAgICAgICAgaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLm1ha2VHcm91cChpdGVtLCByZXN1bHQpKTtcblxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzdWx0KS5yZXZlcnNlKCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qKiBFbWl0cyBhbiBldmVudCB3aGVuZXZlciB0aGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBjaGFuZ2VzID0gbWVyZ2UodGhpcy5zaWxlbnRNb2RlLCB0aGlzLmxvYWRpbmdNb2RlLCB0aGlzLmVycm9yTW9kZSwgdGhpcy5vcmlnaW5hbEl0ZW1zLCB0aGlzLm9uUmVhZCk7XG5cbiAgICAvKiogTm90aWZpY2F0aW9uIGl0ZW1zICovXG4gICAgZ2V0IGl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW5hbEl0ZW1zLnZhbHVlO1xuICAgIH1cblxuICAgIHNldCBpdGVtcyh2YWx1ZXM6IEticU5vdGlmaWNhdGlvbkl0ZW1bXSkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsSXRlbXMubmV4dCh0aGlzLnNldFJlYWRTdGF0ZSh0aGlzLnNldElkcyh2YWx1ZXMpKSk7XG4gICAgfVxuXG4gICAgLyoqIE51bWJlciBvZiB1bnJlYWQgbm90aWZpY2F0aW9ucyAqL1xuICAgIGdldCB1bnJlYWRJdGVtc0NvdW50ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxJdGVtcy5waXBlKG1hcCgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5yZWFkID09PSBmYWxzZSkubGVuZ3RoKSkucGlwZShcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMub25SZWFkKSxcbiAgICAgICAgICAgIG1hcCgoW3ZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IG1heFVucmVhZEl0ZW1zTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7bWF4VW5yZWFkSXRlbXNMZW5ndGh9K2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogdHJ1ZSBpZiB0aGVyZSBhcmUgbm8gbm90aWZpY2F0aW9ucy4gKi9cbiAgICBnZXQgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxJdGVtcy52YWx1ZS5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlPy5yZWFkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgodG9hc3REYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0b2FzdERhdGE/LmlkKTtcblxuICAgICAgICAgICAgaWYgKGl0ZW0gJiYgIWl0ZW0ucmVhZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0ucmVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVhZC5uZXh0KHRvYXN0RGF0YSBhcyBLYnFOb3RpZmljYXRpb25JdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBzaWxlbnQgbW9kZSAqL1xuICAgIHNldFNpbGVudE1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zaWxlbnRNb2RlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgbG9hZGluZyBtb2RlICovXG4gICAgc2V0TG9hZGluZ01vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9kZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGVycm9yIG1vZGUgKi9cbiAgICBzZXRFcnJvck1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5lcnJvck1vZGUubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIFB1c2ggbmV3IG5vdGlmaWNhdGlvbiBpdGVtIGluIGNlbnRlciAqL1xuICAgIHB1c2goaXRlbTogS2JxTm90aWZpY2F0aW9uSXRlbSkge1xuICAgICAgICB0aGlzLnNldFJlYWRTdGF0ZSh0aGlzLnNldElkcyhbaXRlbV0pKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2lsZW50TW9kZS52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyhpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9yaWdpbmFsSXRlbXMubmV4dChbLi4udGhpcy5vcmlnaW5hbEl0ZW1zLnZhbHVlLCBpdGVtXSk7XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZSBub3RpZmljYXRpb24gaXRlbSAqL1xuICAgIHJlbW92ZShyZW1vdmVkSXRlbTogS2JxTm90aWZpY2F0aW9uSXRlbSkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsSXRlbXMubmV4dCh0aGlzLm9yaWdpbmFsSXRlbXMudmFsdWUuZmlsdGVyKChpdGVtKSA9PiByZW1vdmVkSXRlbSAhPT0gaXRlbSkpO1xuICAgIH1cblxuICAgIC8qKiBSZW1vdmUgZ3JvdXAgb2Ygbm90aWZpY2F0aW9uIGl0ZW1zICovXG4gICAgcmVtb3ZlR3JvdXAoZ3JvdXA6IEticU5vdGlmaWNhdGlvbnNHcm91cCkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsSXRlbXMubmV4dCh0aGlzLm9yaWdpbmFsSXRlbXMudmFsdWUuZmlsdGVyKChpdGVtKSA9PiAhZ3JvdXAuaXRlbXMuaW5jbHVkZXMoaXRlbSkpKTtcbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlIGFsbCBub3RpZmljYXRpb24gaXRlbXMgKi9cbiAgICByZW1vdmVBbGwoKSB7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJdGVtcy5uZXh0KFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VHcm91cCA9IChpdGVtOiBLYnFOb3RpZmljYXRpb25JdGVtLCBncm91cHM6IEticU5vdGlmaWNhdGlvbnNHcm91cHMpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IHRoaXMuYWRhcHRlci5wYXJzZShpdGVtLmRhdGUsICcnKTtcbiAgICAgICAgY29uc3QgZ3JvdXBJZCA9IHRoaXMuYWRhcHRlci5mb3JtYXQocGFyc2VkRGF0ZSwgJ3l5eXlNTWRkJyk7XG4gICAgICAgIGNvbnN0IGdyb3VwVGl0bGUgPSB0aGlzLmZvcm1hdHRlci5hYnNvbHV0ZUxvbmdEYXRlKHBhcnNlZERhdGUpO1xuXG4gICAgICAgIGlmIChncm91cHNbZ3JvdXBJZF0pIHtcbiAgICAgICAgICAgIGdyb3Vwc1tncm91cElkXS5pdGVtcy51bnNoaWZ0KGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ3JvdXBzW2dyb3VwSWRdID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBncm91cFRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbaXRlbV1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzZXRJZHMoaXRlbXM6IEticU5vdGlmaWNhdGlvbkl0ZW1bXSkge1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5pZCA9IGl0ZW0uaWQgPz8gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKSkpO1xuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlYWRTdGF0ZShpdGVtczogS2JxTm90aWZpY2F0aW9uSXRlbVtdKSB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLnJlYWQgPSBpdGVtLnJlYWQgPz8gZmFsc2UpKTtcblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, inject, Input, TemplateRef, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { KbqButtonModule } from '@koobiq/components/button';
|
|
5
|
+
import { DateAdapter, KbqReadStateDirective, PopUpPlacements, ThemePalette } from '@koobiq/components/core';
|
|
6
|
+
import { KbqIconModule } from '@koobiq/components/icon';
|
|
7
|
+
import { KbqTitleModule } from '@koobiq/components/title';
|
|
8
|
+
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
9
|
+
import { filter } from 'rxjs/operators';
|
|
10
|
+
import { KbqNotificationCenterComponent } from './notification-center';
|
|
11
|
+
import { KbqNotificationCenterService } from './notification-center.service';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@koobiq/components/core";
|
|
14
|
+
import * as i2 from "@koobiq/components/icon";
|
|
15
|
+
import * as i3 from "@koobiq/components/title";
|
|
16
|
+
import * as i4 from "@koobiq/components/button";
|
|
17
|
+
let id = 0;
|
|
18
|
+
/** @docs-private */
|
|
19
|
+
export class KbqNotificationItemComponent {
|
|
20
|
+
get style() {
|
|
21
|
+
return {
|
|
22
|
+
[`kbq-notification-item_${this.data.style}`]: !!this.data.style
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
get data() {
|
|
26
|
+
return this._data;
|
|
27
|
+
}
|
|
28
|
+
set data(value) {
|
|
29
|
+
this._data = value;
|
|
30
|
+
this.time = this.adapter.format(this.adapter.parse(value.date, ''), 'HH:mm');
|
|
31
|
+
}
|
|
32
|
+
constructor() {
|
|
33
|
+
this.adapter = inject(DateAdapter);
|
|
34
|
+
this.service = inject(KbqNotificationCenterService);
|
|
35
|
+
this.readStateDirective = inject(KbqReadStateDirective, { host: true });
|
|
36
|
+
this.center = inject(KbqNotificationCenterComponent, { host: true });
|
|
37
|
+
this.popUpPlacements = PopUpPlacements;
|
|
38
|
+
this.themePalette = ThemePalette;
|
|
39
|
+
this.id = id++;
|
|
40
|
+
this.$implicit = this;
|
|
41
|
+
this.readStateDirective.read
|
|
42
|
+
.pipe(filter((value) => value), takeUntilDestroyed())
|
|
43
|
+
.subscribe(() => {
|
|
44
|
+
this.data.read = true;
|
|
45
|
+
this.service.onRead.next(this.data);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
isTemplateRef(value) {
|
|
49
|
+
return value instanceof TemplateRef;
|
|
50
|
+
}
|
|
51
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNotificationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: KbqNotificationItemComponent, isStandalone: true, selector: "kbq-notification-item", inputs: { data: "data" }, host: { properties: { "class": "style" }, classAttribute: "kbq-notification-item" }, hostDirectives: [{ directive: i1.KbqReadStateDirective }], ngImport: i0, template: "@if (data.icon) {\n <div class=\"kbq-notification-item__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-info-circle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-check-circle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-exclamation-triangle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-exclamation-triangle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n }\n } @else if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-notification-item__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-notification-item__title\"\n [class.kbq-notification-item__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.title)) {\n <p>{{ data.title }}</p>\n }\n\n <div class=\"kbq-notification-item-time\" [class.kbq-notification-item-time_read]=\"data.read\">\n <div class=\"kbq-notification-item-time__value\">{{ time }}</div>\n <i class=\"kbq-notification-item-time__state\" kbq-icon=\"kbq-circle-xs_16\" [color]=\"'theme'\"></i>\n </div>\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-notification-item__text]=\"data.title\"\n [class.kbq-notification-item__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.caption)) {\n {{ data.caption }}\n }\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-notification-item__content\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.content)) {\n {{ data.content }}\n }\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-notification-item__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.actions)) {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n<button\n kbq-button\n class=\"kbq-notification-item__remove-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltipArrow]=\"false\"\n [kbqTooltip]=\"center.localeData.remove\"\n [kbqPlacement]=\"popUpPlacements.Right\"\n (click)=\"service.remove(data)\"\n>\n <i kbq-icon=\"kbq-trash_16\"></i>\n</button>\n", styles: [".kbq-notification-item{display:flex;box-sizing:border-box;position:relative;border-radius:var(--kbq-size-s);height:auto;margin-left:var(--kbq-size-m);margin-right:var(--kbq-size-m)}.kbq-notification-item:hover .kbq-notification-item-time{visibility:hidden}.kbq-notification-item:hover .kbq-notification-item__remove-button{display:block}.kbq-notification-item__icon-container{flex-shrink:0;width:var(--kbq-size-l);max-width:var(--kbq-size-l);height:var(--kbq-size-l);max-height:var(--kbq-size-l);margin-right:var(--kbq-size-s);padding-left:var(--kbq-size-m);padding-top:14px}.kbq-notification-item__container{display:flex;flex-direction:column;flex:1;padding-top:var(--kbq-size-m);padding-right:var(--kbq-size-l);padding-bottom:var(--kbq-size-m);overflow:hidden}.kbq-notification-item__title{display:flex;flex-direction:row;justify-content:space-between;overflow:hidden;text-overflow:ellipsis}.kbq-notification-item__title>p{margin:0;overflow:hidden;text-overflow:ellipsis}.kbq-notification-item__title.kbq-notification-item__title_with-content{margin-bottom:var(--kbq-size-xxs)}.kbq-notification-item-time{display:flex;flex-direction:row;height:var(--kbq-size-xl);align-items:center;padding-left:22px}.kbq-notification-item-time .kbq-notification-item-time__value{margin-right:var(--kbq-size-3xs)}.kbq-notification-item-time.kbq-notification-item-time_read .kbq-notification-item-time__state{display:none}.kbq-notification-item__text{display:flex;flex:1;align-items:center}.kbq-notification-item__content{display:flex;flex-direction:column;white-space:pre-wrap}.kbq-notification-item__actions{display:flex;padding-top:var(--kbq-size-s);gap:var(--kbq-size-m)}.kbq-notification-item__remove-button{position:absolute;top:var(--kbq-size-xs);right:var(--kbq-size-s);display:none}.kbq-notification-item{background:var(--kbq-background-card)}.kbq-notification-item .kbq-notification-item__title{color:var(--kbq-foreground-contrast)}.kbq-notification-item .kbq-notification-item__text,.kbq-notification-item .kbq-notification-item-time.kbq-notification-item-time_read .kbq-notification-item-time__value{color:var(--kbq-foreground-contrast-secondary)}.kbq-notification-item:hover{background:var(--kbq-states-background-transparent-hover)}.kbq-notification-item{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-notification-item .kbq-notification-item-time{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: i3.KbqTitleDirective, selector: "[kbq-title]", exportAs: ["kbqTitle"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i4.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i4.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqNotificationItemComponent, decorators: [{
|
|
55
|
+
type: Component,
|
|
56
|
+
args: [{ standalone: true, imports: [
|
|
57
|
+
NgTemplateOutlet,
|
|
58
|
+
KbqIconModule,
|
|
59
|
+
NgClass,
|
|
60
|
+
KbqTitleModule,
|
|
61
|
+
KbqButtonModule,
|
|
62
|
+
KbqTooltipTrigger
|
|
63
|
+
], selector: 'kbq-notification-item', host: {
|
|
64
|
+
class: 'kbq-notification-item',
|
|
65
|
+
'[class]': 'style'
|
|
66
|
+
}, hostDirectives: [KbqReadStateDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (data.icon) {\n <div class=\"kbq-notification-item__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-info-circle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-check-circle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-exclamation-triangle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-exclamation-triangle_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n }\n } @else if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-notification-item__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-notification-item__title\"\n [class.kbq-notification-item__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.title)) {\n <p>{{ data.title }}</p>\n }\n\n <div class=\"kbq-notification-item-time\" [class.kbq-notification-item-time_read]=\"data.read\">\n <div class=\"kbq-notification-item-time__value\">{{ time }}</div>\n <i class=\"kbq-notification-item-time__state\" kbq-icon=\"kbq-circle-xs_16\" [color]=\"'theme'\"></i>\n </div>\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-notification-item__text]=\"data.title\"\n [class.kbq-notification-item__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.caption)) {\n {{ data.caption }}\n }\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-notification-item__content\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.content)) {\n {{ data.content }}\n }\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-notification-item__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.actions)) {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n<button\n kbq-button\n class=\"kbq-notification-item__remove-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltipArrow]=\"false\"\n [kbqTooltip]=\"center.localeData.remove\"\n [kbqPlacement]=\"popUpPlacements.Right\"\n (click)=\"service.remove(data)\"\n>\n <i kbq-icon=\"kbq-trash_16\"></i>\n</button>\n", styles: [".kbq-notification-item{display:flex;box-sizing:border-box;position:relative;border-radius:var(--kbq-size-s);height:auto;margin-left:var(--kbq-size-m);margin-right:var(--kbq-size-m)}.kbq-notification-item:hover .kbq-notification-item-time{visibility:hidden}.kbq-notification-item:hover .kbq-notification-item__remove-button{display:block}.kbq-notification-item__icon-container{flex-shrink:0;width:var(--kbq-size-l);max-width:var(--kbq-size-l);height:var(--kbq-size-l);max-height:var(--kbq-size-l);margin-right:var(--kbq-size-s);padding-left:var(--kbq-size-m);padding-top:14px}.kbq-notification-item__container{display:flex;flex-direction:column;flex:1;padding-top:var(--kbq-size-m);padding-right:var(--kbq-size-l);padding-bottom:var(--kbq-size-m);overflow:hidden}.kbq-notification-item__title{display:flex;flex-direction:row;justify-content:space-between;overflow:hidden;text-overflow:ellipsis}.kbq-notification-item__title>p{margin:0;overflow:hidden;text-overflow:ellipsis}.kbq-notification-item__title.kbq-notification-item__title_with-content{margin-bottom:var(--kbq-size-xxs)}.kbq-notification-item-time{display:flex;flex-direction:row;height:var(--kbq-size-xl);align-items:center;padding-left:22px}.kbq-notification-item-time .kbq-notification-item-time__value{margin-right:var(--kbq-size-3xs)}.kbq-notification-item-time.kbq-notification-item-time_read .kbq-notification-item-time__state{display:none}.kbq-notification-item__text{display:flex;flex:1;align-items:center}.kbq-notification-item__content{display:flex;flex-direction:column;white-space:pre-wrap}.kbq-notification-item__actions{display:flex;padding-top:var(--kbq-size-s);gap:var(--kbq-size-m)}.kbq-notification-item__remove-button{position:absolute;top:var(--kbq-size-xs);right:var(--kbq-size-s);display:none}.kbq-notification-item{background:var(--kbq-background-card)}.kbq-notification-item .kbq-notification-item__title{color:var(--kbq-foreground-contrast)}.kbq-notification-item .kbq-notification-item__text,.kbq-notification-item .kbq-notification-item-time.kbq-notification-item-time_read .kbq-notification-item-time__value{color:var(--kbq-foreground-contrast-secondary)}.kbq-notification-item:hover{background:var(--kbq-states-background-transparent-hover)}.kbq-notification-item{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-notification-item .kbq-notification-item-time{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n"] }]
|
|
67
|
+
}], ctorParameters: () => [], propDecorators: { data: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL25vdGlmaWNhdGlvbi1jZW50ZXIvbm90aWZpY2F0aW9uLWl0ZW0udHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL25vdGlmaWNhdGlvbi1jZW50ZXIvbm90aWZpY2F0aW9uLWl0ZW0uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDRCQUE0QixFQUF1QixNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFFbEcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRVgsb0JBQW9CO0FBc0JwQixNQUFNLE9BQU8sNEJBQTRCO0lBZXJDLElBQUksS0FBSztRQUNMLE9BQU87WUFDSCxDQUFDLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztTQUNsRSxDQUFDO0lBQ04sQ0FBQztJQUVELElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBMEI7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFJRDtRQWpDaUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixZQUFPLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUF3QixxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLFdBQU0sR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV6RSxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUU1QyxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixPQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUEwQk4sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUk7YUFDdkIsSUFBSSxDQUNELE1BQU0sQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ2pDLGtCQUFrQixFQUFFLENBQ3ZCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUV0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFLO1FBQ2YsT0FBTyxLQUFLLFlBQVksV0FBVyxDQUFDO0lBQ3hDLENBQUM7a0lBbkRRLDRCQUE0QjtzSEFBNUIsNEJBQTRCLDJQQ3BDekMsc3VJQWtIQSx3eEdEaEdRLGdCQUFnQixtSkFDaEIsYUFBYSw0SUFDYixPQUFPLG1GQUNQLGNBQWMsa0lBQ2QsZUFBZSxnT0FDZixpQkFBaUI7OzRGQWFaLDRCQUE0QjtrQkFyQnhDLFNBQVM7aUNBQ00sSUFBSSxXQUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixpQkFBaUI7cUJBQ3BCLFlBQ1MsdUJBQXVCLFFBRzNCO3dCQUNGLEtBQUssRUFBRSx1QkFBdUI7d0JBQzlCLFNBQVMsRUFBRSxPQUFPO3FCQUNyQixrQkFDZSxDQUFDLHFCQUFxQixDQUFDLG1CQUN0Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3dEQXdCakMsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEticUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIEticVJlYWRTdGF0ZURpcmVjdGl2ZSwgUG9wVXBQbGFjZW1lbnRzLCBUaGVtZVBhbGV0dGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFJY29uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxVGl0bGVNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGl0bGUnO1xuaW1wb3J0IHsgS2JxVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLYnFOb3RpZmljYXRpb25DZW50ZXJDb21wb25lbnQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1jZW50ZXInO1xuaW1wb3J0IHsgS2JxTm90aWZpY2F0aW9uQ2VudGVyU2VydmljZSwgS2JxTm90aWZpY2F0aW9uSXRlbSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLWNlbnRlci5zZXJ2aWNlJztcblxubGV0IGlkID0gMDtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBLYnFJY29uTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBLYnFUaXRsZU1vZHVsZSxcbiAgICAgICAgS2JxQnV0dG9uTW9kdWxlLFxuICAgICAgICBLYnFUb29sdGlwVHJpZ2dlclxuICAgIF0sXG4gICAgc2VsZWN0b3I6ICdrYnEtbm90aWZpY2F0aW9uLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24taXRlbS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24taXRlbS5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1ub3RpZmljYXRpb24taXRlbScsXG4gICAgICAgICdbY2xhc3NdJzogJ3N0eWxlJ1xuICAgIH0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtLYnFSZWFkU3RhdGVEaXJlY3RpdmVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxTm90aWZpY2F0aW9uSXRlbUNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGFwdGVyID0gaW5qZWN0KERhdGVBZGFwdGVyKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChLYnFOb3RpZmljYXRpb25DZW50ZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVhZFN0YXRlRGlyZWN0aXZlID0gaW5qZWN0PEticVJlYWRTdGF0ZURpcmVjdGl2ZT4oS2JxUmVhZFN0YXRlRGlyZWN0aXZlLCB7IGhvc3Q6IHRydWUgfSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNlbnRlciA9IGluamVjdChLYnFOb3RpZmljYXRpb25DZW50ZXJDb21wb25lbnQsIHsgaG9zdDogdHJ1ZSB9KTtcblxuICAgIHByb3RlY3RlZCBwb3BVcFBsYWNlbWVudHMgPSBQb3BVcFBsYWNlbWVudHM7XG5cbiAgICB0aGVtZVBhbGV0dGUgPSBUaGVtZVBhbGV0dGU7XG4gICAgaWQgPSBpZCsrO1xuXG4gICAgdGltZTogc3RyaW5nO1xuXG4gICAgJGltcGxpY2l0O1xuXG4gICAgZ2V0IHN0eWxlKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW2BrYnEtbm90aWZpY2F0aW9uLWl0ZW1fJHt0aGlzLmRhdGEuc3R5bGV9YF06ICEhdGhpcy5kYXRhLnN0eWxlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGF0YSgpOiBLYnFOb3RpZmljYXRpb25JdGVtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgc2V0IGRhdGEodmFsdWU6IEticU5vdGlmaWNhdGlvbkl0ZW0pIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMudGltZSA9IHRoaXMuYWRhcHRlci5mb3JtYXQodGhpcy5hZGFwdGVyLnBhcnNlKHZhbHVlLmRhdGUsICcnKSwgJ0hIOm1tJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGF0YTogS2JxTm90aWZpY2F0aW9uSXRlbTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLiRpbXBsaWNpdCA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5yZWFkU3RhdGVEaXJlY3RpdmUucmVhZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh2YWx1ZTogYm9vbGVhbikgPT4gdmFsdWUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEucmVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uub25SZWFkLm5leHQodGhpcy5kYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzVGVtcGxhdGVSZWYodmFsdWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxufVxuIiwiQGlmIChkYXRhLmljb24pIHtcbiAgICA8ZGl2IGNsYXNzPVwia2JxLW5vdGlmaWNhdGlvbi1pdGVtX19pY29uLWNvbnRhaW5lciBsYXlvdXQtcm93IGxheW91dC1hbGlnbi1zdGFydC1zdGFydFwiPlxuICAgICAgICBAaWYgKGRhdGEuaWNvbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgQHN3aXRjaCAoZGF0YS5zdHlsZSkge1xuICAgICAgICAgICAgICAgIEBjYXNlICgnY29udHJhc3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICBrYnEtaWNvbj1cImticS1pbmZvLWNpcmNsZV8xNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1ub3RpZmljYXRpb24taXRlbV9faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJGFueShkYXRhLnN0eWxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlICgnc3VjY2VzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGticS1pY29uPVwia2JxLWNoZWNrLWNpcmNsZV8xNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1ub3RpZmljYXRpb24taXRlbV9faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJGFueShkYXRhLnN0eWxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLmljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlICgnd2FybmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGticS1pY29uPVwia2JxLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXzE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLW5vdGlmaWNhdGlvbi1pdGVtX19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCIkYW55KGRhdGEuc3R5bGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGNhc2UgKCdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGticS1pY29uPVwia2JxLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXzE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLW5vdGlmaWNhdGlvbi1pdGVtX19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCIkYW55KGRhdGEuc3R5bGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuaWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2UgaWYgKGlzVGVtcGxhdGVSZWYoZGF0YS5pY29uKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGRhdGEuaWNvbilcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQgfVwiIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cblxuPGRpdiBjbGFzcz1cImticS1ub3RpZmljYXRpb24taXRlbV9fY29udGFpbmVyXCI+XG4gICAgQGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGticS10aXRsZVxuICAgICAgICAgICAgY2xhc3M9XCJrYnEtbm90aWZpY2F0aW9uLWl0ZW1fX3RpdGxlXCJcbiAgICAgICAgICAgIFtjbGFzcy5rYnEtbm90aWZpY2F0aW9uLWl0ZW1fX3RpdGxlX3dpdGgtY29udGVudF09XCJkYXRhLmNhcHRpb24gfHwgZGF0YS5jb250ZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpc1RlbXBsYXRlUmVmKGRhdGEudGl0bGUpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGRhdGEudGl0bGUpXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0IH1cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICghaXNUZW1wbGF0ZVJlZihkYXRhLnRpdGxlKSkge1xuICAgICAgICAgICAgICAgIDxwPnt7IGRhdGEudGl0bGUgfX08L3A+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtbm90aWZpY2F0aW9uLWl0ZW0tdGltZVwiIFtjbGFzcy5rYnEtbm90aWZpY2F0aW9uLWl0ZW0tdGltZV9yZWFkXT1cImRhdGEucmVhZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtbm90aWZpY2F0aW9uLWl0ZW0tdGltZV9fdmFsdWVcIj57eyB0aW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtbm90aWZpY2F0aW9uLWl0ZW0tdGltZV9fc3RhdGVcIiBrYnEtaWNvbj1cImticS1jaXJjbGUteHNfMTZcIiBbY29sb3JdPVwiJ3RoZW1lJ1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGRhdGEuY2FwdGlvbikge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBrYnEtdGl0bGVcbiAgICAgICAgICAgIFtjbGFzcy5rYnEtbm90aWZpY2F0aW9uLWl0ZW1fX3RleHRdPVwiZGF0YS50aXRsZVwiXG4gICAgICAgICAgICBbY2xhc3Mua2JxLW5vdGlmaWNhdGlvbi1pdGVtX190aXRsZV09XCIhZGF0YS50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXNUZW1wbGF0ZVJlZihkYXRhLmNhcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGRhdGEuY2FwdGlvbilcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQgfVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKCFpc1RlbXBsYXRlUmVmKGRhdGEuY2FwdGlvbikpIHtcbiAgICAgICAgICAgICAgICB7eyBkYXRhLmNhcHRpb24gfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChkYXRhLmNvbnRlbnQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1ub3RpZmljYXRpb24taXRlbV9fY29udGVudFwiPlxuICAgICAgICAgICAgQGlmIChpc1RlbXBsYXRlUmVmKGRhdGEuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoZGF0YS5jb250ZW50KVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdCB9XCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWlzVGVtcGxhdGVSZWYoZGF0YS5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgIHt7IGRhdGEuY29udGVudCB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGRhdGEuYWN0aW9ucykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLW5vdGlmaWNhdGlvbi1pdGVtX19hY3Rpb25zXCI+XG4gICAgICAgICAgICBAaWYgKGlzVGVtcGxhdGVSZWYoZGF0YS5hY3Rpb25zKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShkYXRhLmFjdGlvbnMpXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0IH1cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICghaXNUZW1wbGF0ZVJlZihkYXRhLmFjdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAge3sgZGF0YS5hY3Rpb25zIH19XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG48YnV0dG9uXG4gICAga2JxLWJ1dHRvblxuICAgIGNsYXNzPVwia2JxLW5vdGlmaWNhdGlvbi1pdGVtX19yZW1vdmUtYnV0dG9uXCJcbiAgICBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgW2NvbG9yXT1cIidjb250cmFzdCdcIlxuICAgIFtrYnFUb29sdGlwQXJyb3ddPVwiZmFsc2VcIlxuICAgIFtrYnFUb29sdGlwXT1cImNlbnRlci5sb2NhbGVEYXRhLnJlbW92ZVwiXG4gICAgW2ticVBsYWNlbWVudF09XCJwb3BVcFBsYWNlbWVudHMuUmlnaHRcIlxuICAgIChjbGljayk9XCJzZXJ2aWNlLnJlbW92ZShkYXRhKVwiXG4+XG4gICAgPGkga2JxLWljb249XCJrYnEtdHJhc2hfMTZcIj48L2k+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './notification-center';
|
|
2
|
+
export * from './notification-center-animations';
|
|
3
|
+
export * from './notification-center.module';
|
|
4
|
+
export * from './notification-center.service';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLWNlbnRlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbi1jZW50ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tY2VudGVyLWFuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tY2VudGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbi1jZW50ZXIuc2VydmljZSc7XG4iXX0=
|
|
@@ -7,15 +7,15 @@ const COMPONENTS = [
|
|
|
7
7
|
KbqOverflowItemsResult
|
|
8
8
|
];
|
|
9
9
|
export class KbqOverflowItemsModule {
|
|
10
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
11
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
10
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOverflowItemsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqOverflowItemsModule, imports: [KbqOverflowItems,
|
|
12
12
|
KbqOverflowItem,
|
|
13
13
|
KbqOverflowItemsResult], exports: [KbqOverflowItems,
|
|
14
14
|
KbqOverflowItem,
|
|
15
15
|
KbqOverflowItemsResult] }); }
|
|
16
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
16
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOverflowItemsModule }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOverflowItemsModule, decorators: [{
|
|
19
19
|
type: NgModule,
|
|
20
20
|
args: [{
|
|
21
21
|
imports: COMPONENTS,
|