@koobiq/components 18.22.0 → 18.23.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/alert/_alert-theme.scss +4 -0
- package/alert/alert-tokens.scss +1 -1
- package/alert/alert.component.d.ts +8 -2
- package/checkbox/checkbox.d.ts +6 -6
- package/core/animation/animation.d.ts +5 -2
- package/core/common-behaviors/checkbox.d.ts +5 -0
- package/core/common-behaviors/index.d.ts +1 -0
- package/core/pop-up/pop-up-trigger.d.ts +9 -1
- package/core/utils/utils.d.ts +2 -0
- package/esm2022/actions-panel/actions-panel-container.mjs +1 -1
- package/esm2022/actions-panel/actions-panel.mjs +1 -1
- package/esm2022/alert/alert.component.mjs +11 -5
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +1 -1
- package/esm2022/breadcrumbs/breadcrumbs.mjs +1 -1
- package/esm2022/button-toggle/button-toggle.component.mjs +1 -1
- package/esm2022/checkbox/checkbox.mjs +5 -5
- package/esm2022/code-block/code-block-highlight.mjs +1 -1
- package/esm2022/code-block/code-block.mjs +1 -1
- package/esm2022/core/animation/animation.mjs +4 -1
- package/esm2022/core/common-behaviors/checkbox.mjs +2 -0
- package/esm2022/core/common-behaviors/color.mjs +1 -1
- package/esm2022/core/common-behaviors/index.mjs +2 -1
- package/esm2022/core/formatters/number/formatter.mjs +1 -1
- package/esm2022/core/forms/validators.mjs +1 -1
- package/esm2022/core/line/line.mjs +1 -1
- package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +26 -11
- package/esm2022/core/pop-up/pop-up.mjs +1 -4
- package/esm2022/core/select/common.mjs +1 -1
- package/esm2022/core/services/measure-scrollbar.service.mjs +1 -1
- package/esm2022/core/utils/utils.mjs +5 -1
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +1 -1
- package/esm2022/datepicker/datepicker-input.directive.mjs +1 -1
- package/esm2022/datepicker/datepicker.component.mjs +1 -1
- package/esm2022/datepicker/month-view.component.mjs +1 -1
- package/esm2022/dropdown/dropdown-item.component.mjs +1 -1
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +1 -1
- package/esm2022/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +1 -1
- package/esm2022/file-upload/file-drop.mjs +1 -1
- package/esm2022/file-upload/file-upload.mjs +1 -1
- package/esm2022/file-upload/single-file-upload.component.mjs +1 -1
- package/esm2022/filter-bar/filter-bar-button.mjs +2 -1
- package/esm2022/filter-bar/filter-bar.mjs +14 -1
- package/esm2022/filter-bar/filter-bar.module.mjs +5 -3
- package/esm2022/filter-bar/filter-bar.types.mjs +27 -2
- package/esm2022/filter-bar/filter-reset.mjs +15 -5
- package/esm2022/filter-bar/filter-search.mjs +18 -5
- package/esm2022/filter-bar/filters.mjs +22 -6
- package/esm2022/filter-bar/pipe-add.mjs +10 -1
- package/esm2022/filter-bar/pipe.directive.mjs +7 -25
- package/esm2022/filter-bar/pipes/base-pipe.mjs +23 -3
- package/esm2022/filter-bar/pipes/pipe-button.mjs +12 -6
- package/esm2022/filter-bar/pipes/pipe-date.mjs +26 -8
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +27 -8
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +6 -1
- package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -1
- package/esm2022/filter-bar/pipes/pipe-state.mjs +2 -1
- package/esm2022/filter-bar/pipes/pipe-text.mjs +7 -3
- package/esm2022/filter-bar/pipes/pipe-title.mjs +2 -1
- package/esm2022/form-field/form-field.mjs +1 -1
- package/esm2022/form-field/validate.directive.mjs +1 -1
- package/esm2022/input/input-number.mjs +1 -1
- package/esm2022/list/list-selection.component.mjs +1 -1
- package/esm2022/markdown/markdown.component.mjs +2 -2
- package/esm2022/modal/modal.component.mjs +1 -1
- package/esm2022/modal/modal.service.mjs +1 -1
- package/esm2022/navbar/navbar.component.mjs +9 -12
- package/esm2022/navbar/vertical-navbar.component.mjs +9 -13
- package/esm2022/overflow-items/overflow-items.mjs +1 -1
- package/esm2022/popover/popover-confirm.component.mjs +1 -1
- package/esm2022/radio/radio.component.mjs +3 -3
- package/esm2022/scrollbar/scrollbar.component.mjs +1 -1
- package/esm2022/scrollbar/scrollbar.directive.mjs +1 -1
- package/esm2022/select/select.component.mjs +1 -1
- package/esm2022/sidepanel/sidepanel.service.mjs +1 -1
- package/esm2022/splitter/splitter.component.mjs +1 -1
- package/esm2022/tabs/paginated-tab-header.mjs +1 -1
- package/esm2022/tabs/tab-body.component.mjs +1 -1
- package/esm2022/tabs/tab-group.component.mjs +1 -1
- package/esm2022/tags/tag-input.mjs +1 -1
- package/esm2022/tags/tag-list.component.mjs +1 -1
- package/esm2022/tags/tag.component.mjs +1 -1
- package/esm2022/textarea/textarea.component.mjs +1 -1
- package/esm2022/timepicker/timepicker.directive.mjs +1 -1
- package/esm2022/toggle/toggle.component.mjs +95 -16
- package/esm2022/tree/control/base-tree-control.mjs +1 -1
- package/esm2022/tree/control/flat-tree-control.filters.mjs +1 -1
- package/esm2022/tree/control/nested-tree-control.mjs +1 -1
- package/esm2022/tree/data-source/flat-data-source.mjs +1 -1
- package/esm2022/tree/padding.directive.mjs +1 -1
- package/esm2022/tree/tree-base.mjs +1 -1
- package/esm2022/tree/tree-selection.component.mjs +1 -1
- package/esm2022/tree-select/tree-select.component.mjs +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +10 -4
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +4 -4
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +33 -15
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +1470 -1322
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +2 -2
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +15 -22
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +2 -2
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +94 -15
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/filter-bar/filter-bar-button.d.ts +1 -0
- package/filter-bar/filter-bar.d.ts +14 -0
- package/filter-bar/filter-bar.types.d.ts +13 -3
- package/filter-bar/filter-reset.d.ts +6 -2
- package/filter-bar/filter-search.d.ts +17 -10
- package/filter-bar/filters.d.ts +26 -11
- package/filter-bar/pipe-add.d.ts +10 -0
- package/filter-bar/pipe.directive.d.ts +5 -5
- package/filter-bar/pipes/base-pipe.d.ts +28 -2
- package/filter-bar/pipes/pipe-button.d.ts +6 -1
- package/filter-bar/pipes/pipe-date.d.ts +30 -10
- package/filter-bar/pipes/pipe-date.scss +29 -27
- package/filter-bar/pipes/pipe-datetime.d.ts +31 -10
- package/filter-bar/pipes/pipe-multi-select.d.ts +7 -0
- package/filter-bar/pipes/pipe-select.d.ts +7 -0
- package/filter-bar/pipes/pipe-state.d.ts +1 -0
- package/filter-bar/pipes/pipe-text.d.ts +5 -0
- package/link/_link-theme.scss +14 -0
- package/markdown/markdown.scss +0 -4
- package/navbar/navbar.component.d.ts +2 -2
- package/navbar/vertical-navbar.component.d.ts +3 -3
- package/package.json +5 -5
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/radio/radio.scss +0 -1
- package/schematics/ng-add/index.js +3 -3
- package/toggle/_toggle-theme.scss +12 -3
- package/toggle/toggle-tokens.scss +2 -2
- package/toggle/toggle.component.d.ts +22 -4
- package/toggle/toggle.scss +37 -0
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { ruRULocaleData } from '@koobiq/components/core';
|
|
3
|
-
|
|
3
|
+
import { KbqPipeDateComponent } from './pipes/pipe-date';
|
|
4
|
+
import { KbqPipeDatetimeComponent } from './pipes/pipe-datetime';
|
|
5
|
+
import { KbqPipeMultiSelectComponent } from './pipes/pipe-multi-select';
|
|
6
|
+
import { KbqPipeSelectComponent } from './pipes/pipe-select';
|
|
7
|
+
import { KbqPipeTextComponent } from './pipes/pipe-text';
|
|
8
|
+
/**default configuration of filter-bar */
|
|
4
9
|
export const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION = ruRULocaleData.filterBar;
|
|
10
|
+
/** Injection Token for providing configuration of filter-bar */
|
|
11
|
+
export const KBQ_FILTER_BAR_CONFIGURATION = new InjectionToken('KbqFilterBarConfiguration');
|
|
12
|
+
/** Injection Token for providing pipes in filter-bar */
|
|
13
|
+
export const KBQ_FILTER_BAR_PIPES = new InjectionToken('kbq-filter-bar-pipes');
|
|
14
|
+
/** Utility provider for `KBQ_FILTER_BAR_PIPES`. */
|
|
15
|
+
export const kbqFilterBarPipesProvider = () => {
|
|
16
|
+
return {
|
|
17
|
+
provide: KBQ_FILTER_BAR_PIPES,
|
|
18
|
+
useValue: new Map(defaultFilterBarPipes)
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
/** list of pipe types available out of the box */
|
|
5
22
|
export var KbqPipeTypes;
|
|
6
23
|
(function (KbqPipeTypes) {
|
|
7
24
|
KbqPipeTypes["Text"] = "text";
|
|
@@ -10,4 +27,12 @@ export var KbqPipeTypes;
|
|
|
10
27
|
KbqPipeTypes["Date"] = "date";
|
|
11
28
|
KbqPipeTypes["Datetime"] = "datetime";
|
|
12
29
|
})(KbqPipeTypes || (KbqPipeTypes = {}));
|
|
13
|
-
|
|
30
|
+
/** list of pipes available out of the box. */
|
|
31
|
+
export const defaultFilterBarPipes = [
|
|
32
|
+
[KbqPipeTypes.Text, KbqPipeTextComponent],
|
|
33
|
+
[KbqPipeTypes.Select, KbqPipeSelectComponent],
|
|
34
|
+
[KbqPipeTypes.MultiSelect, KbqPipeMultiSelectComponent],
|
|
35
|
+
[KbqPipeTypes.Date, KbqPipeDateComponent],
|
|
36
|
+
[KbqPipeTypes.Datetime, KbqPipeDatetimeComponent]
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RCx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztBQUU3RSxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUU1Rix3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQU0sc0JBQXNCLENBQUMsQ0FBQztBQUVwRixtREFBbUQ7QUFDbkQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBYSxFQUFFO0lBQ3BELE9BQU87UUFDSCxPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBa0IscUJBQXFCLENBQUM7S0FDNUQsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLGtEQUFrRDtBQUNsRCxNQUFNLENBQU4sSUFBWSxZQU1YO0FBTkQsV0FBWSxZQUFZO0lBQ3BCLDZCQUFhLENBQUE7SUFDYixpQ0FBaUIsQ0FBQTtJQUNqQiwyQ0FBMkIsQ0FBQTtJQUMzQiw2QkFBYSxDQUFBO0lBQ2IscUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQU5XLFlBQVksS0FBWixZQUFZLFFBTXZCO0FBSUQsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUF3QjtJQUN0RCxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7SUFDekMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLHNCQUFzQixDQUFDO0lBQzdDLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsQ0FBQztJQUN2RCxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7SUFDekMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLHdCQUF3QixDQUFDO0NBRXBELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBydVJVTG9jYWxlRGF0YSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticUZpbHRlckJhciB9IGZyb20gJy4vZmlsdGVyLWJhcic7XG5pbXBvcnQgeyBLYnFQaXBlRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vcGlwZXMvcGlwZS1kYXRlJztcbmltcG9ydCB7IEticVBpcGVEYXRldGltZUNvbXBvbmVudCB9IGZyb20gJy4vcGlwZXMvcGlwZS1kYXRldGltZSc7XG5pbXBvcnQgeyBLYnFQaXBlTXVsdGlTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3BpcGVzL3BpcGUtbXVsdGktc2VsZWN0JztcbmltcG9ydCB7IEticVBpcGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3BpcGVzL3BpcGUtc2VsZWN0JztcbmltcG9ydCB7IEticVBpcGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9waXBlcy9waXBlLXRleHQnO1xuXG4vKipkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgZmlsdGVyLWJhciAqL1xuZXhwb3J0IGNvbnN0IEtCUV9GSUxURVJfQkFSX0RFRkFVTFRfQ09ORklHVVJBVElPTiA9IHJ1UlVMb2NhbGVEYXRhLmZpbHRlckJhcjtcblxuLyoqIEluamVjdGlvbiBUb2tlbiBmb3IgcHJvdmlkaW5nIGNvbmZpZ3VyYXRpb24gb2YgZmlsdGVyLWJhciAqL1xuZXhwb3J0IGNvbnN0IEtCUV9GSUxURVJfQkFSX0NPTkZJR1VSQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0ticUZpbHRlckJhckNvbmZpZ3VyYXRpb24nKTtcblxuLyoqIEluamVjdGlvbiBUb2tlbiBmb3IgcHJvdmlkaW5nIHBpcGVzIGluIGZpbHRlci1iYXIgKi9cbmV4cG9ydCBjb25zdCBLQlFfRklMVEVSX0JBUl9QSVBFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdrYnEtZmlsdGVyLWJhci1waXBlcycpO1xuXG4vKiogVXRpbGl0eSBwcm92aWRlciBmb3IgYEtCUV9GSUxURVJfQkFSX1BJUEVTYC4gKi9cbmV4cG9ydCBjb25zdCBrYnFGaWx0ZXJCYXJQaXBlc1Byb3ZpZGVyID0gKCk6IFByb3ZpZGVyID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBLQlFfRklMVEVSX0JBUl9QSVBFUyxcbiAgICAgICAgdXNlVmFsdWU6IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPihkZWZhdWx0RmlsdGVyQmFyUGlwZXMpXG4gICAgfTtcbn07XG5cbi8qKiBsaXN0IG9mIHBpcGUgdHlwZXMgYXZhaWxhYmxlIG91dCBvZiB0aGUgYm94ICovXG5leHBvcnQgZW51bSBLYnFQaXBlVHlwZXMge1xuICAgIFRleHQgPSAndGV4dCcsXG4gICAgU2VsZWN0ID0gJ3NlbGVjdCcsXG4gICAgTXVsdGlTZWxlY3QgPSAnbXVsdGlzZWxlY3QnLFxuICAgIERhdGUgPSAnZGF0ZScsXG4gICAgRGF0ZXRpbWUgPSAnZGF0ZXRpbWUnXG59XG5cbmV4cG9ydCB0eXBlIEticVBpcGVUeXBlID0gYCR7S2JxUGlwZVR5cGVzfWAgfCBzdHJpbmc7XG5cbi8qKiBsaXN0IG9mIHBpcGVzIGF2YWlsYWJsZSBvdXQgb2YgdGhlIGJveC4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyQmFyUGlwZXM6IFtzdHJpbmcsIHVua25vd25dW10gPSBbXG4gICAgW0ticVBpcGVUeXBlcy5UZXh0LCBLYnFQaXBlVGV4dENvbXBvbmVudF0sXG4gICAgW0ticVBpcGVUeXBlcy5TZWxlY3QsIEticVBpcGVTZWxlY3RDb21wb25lbnRdLFxuICAgIFtLYnFQaXBlVHlwZXMuTXVsdGlTZWxlY3QsIEticVBpcGVNdWx0aVNlbGVjdENvbXBvbmVudF0sXG4gICAgW0ticVBpcGVUeXBlcy5EYXRlLCBLYnFQaXBlRGF0ZUNvbXBvbmVudF0sXG4gICAgW0ticVBpcGVUeXBlcy5EYXRldGltZSwgS2JxUGlwZURhdGV0aW1lQ29tcG9uZW50XVxuXG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIEticURhdGVUaW1lVmFsdWUge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgc3RhcnQ/OiBzdHJpbmc7XG4gICAgZW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEticVNlbGVjdFZhbHVlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxRmlsdGVyIHtcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICBwaXBlczogS2JxUGlwZVtdO1xuXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgY2hhbmdlZDogYm9vbGVhbjtcbiAgICAvLyB0aGlzIGlzIGJ1c2luZXNzIGxvZ2ljIHN0YXRlIChsaWtlIGEgZmxhZylcbiAgICBzYXZlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYnFQaXBlIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdHlwZTogS2JxUGlwZVR5cGU7XG4gICAgdmFsdWU6IHVua25vd24gfCBudWxsO1xuXG4gICAgc2VhcmNoPzogYm9vbGVhbjtcblxuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIGNsZWFuYWJsZTogYm9vbGVhbjtcbiAgICByZW1vdmFibGU6IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxUGlwZURhdGE8Vj4gZXh0ZW5kcyBLYnFQaXBlIHtcbiAgICB2YWx1ZTogViB8IG51bGw7XG5cbiAgICBzZWFyY2g/OiBib29sZWFuO1xuICAgIG9wZW5PbkFkZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxUGlwZVRlbXBsYXRlIGV4dGVuZHMgT21pdDxLYnFQaXBlLCAndmFsdWUnPiB7XG4gICAgdmFsdWVzPzogdW5rbm93bltdO1xuICAgIHZhbHVlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEticVNhdmVGaWx0ZXJFcnJvciB7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICBuYW1lQWxyZWFkeUV4aXN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2JxU2F2ZUZpbHRlckV2ZW50IHtcbiAgICBmaWx0ZXI6IEticUZpbHRlciB8IG51bGw7XG4gICAgZmlsdGVyQmFyOiBLYnFGaWx0ZXJCYXI7XG59XG4iXX0=
|
|
@@ -5,14 +5,24 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
import * as i1 from "@koobiq/components/button";
|
|
6
6
|
export class KbqFilterReset {
|
|
7
7
|
constructor() {
|
|
8
|
+
/** KbqFilterBar instance */
|
|
8
9
|
this.filterBar = inject(KbqFilterBar);
|
|
9
10
|
/** Event that is generated whenever the user reset a filter. */
|
|
10
11
|
this.onResetFilter = new EventEmitter();
|
|
11
12
|
}
|
|
13
|
+
/** localized data
|
|
14
|
+
* @docs-private */
|
|
15
|
+
get localeData() {
|
|
16
|
+
return this.filterBar.configuration.reset.buttonName;
|
|
17
|
+
}
|
|
18
|
+
resetFilter() {
|
|
19
|
+
this.onResetFilter.emit(this.filterBar.filter);
|
|
20
|
+
this.filterBar.changes.next();
|
|
21
|
+
}
|
|
12
22
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFilterReset, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
23
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: KbqFilterReset, isStandalone: true, selector: "kbq-filter-reset", outputs: { onResetFilter: "onResetFilter" }, host: { classAttribute: "kbq-filter-reset" }, ngImport: i0, template: `
|
|
14
|
-
<button [color]="'theme'" [kbqStyle]="'transparent'" (click)="
|
|
15
|
-
<ng-content>{{
|
|
24
|
+
<button [color]="'theme'" [kbqStyle]="'transparent'" (click)="resetFilter()" kbq-button>
|
|
25
|
+
<ng-content>{{ localeData }}</ng-content>
|
|
16
26
|
</button>
|
|
17
27
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18
28
|
}
|
|
@@ -22,8 +32,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
22
32
|
standalone: true,
|
|
23
33
|
selector: 'kbq-filter-reset',
|
|
24
34
|
template: `
|
|
25
|
-
<button [color]="'theme'" [kbqStyle]="'transparent'" (click)="
|
|
26
|
-
<ng-content>{{
|
|
35
|
+
<button [color]="'theme'" [kbqStyle]="'transparent'" (click)="resetFilter()" kbq-button>
|
|
36
|
+
<ng-content>{{ localeData }}</ng-content>
|
|
27
37
|
</button>
|
|
28
38
|
`,
|
|
29
39
|
host: {
|
|
@@ -35,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
35
45
|
}], propDecorators: { onResetFilter: [{
|
|
36
46
|
type: Output
|
|
37
47
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJlc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlci1yZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFpQjVDLE1BQU0sT0FBTyxjQUFjO0lBZDNCO1FBZUksNEJBQTRCO1FBQ1gsY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVsRCxnRUFBZ0U7UUFDN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztLQWEzRTtJQVhHO3VCQUNtQjtJQUNuQixJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDekQsQ0FBQztJQUVTLFdBQVc7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFPLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO2lJQWpCUSxjQUFjO3FIQUFkLGNBQWMsdUtBWGI7Ozs7S0FJVCwyREFLUyxlQUFlOzsyRkFFaEIsY0FBYztrQkFkMUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7O0tBSVQ7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxrQkFBa0I7cUJBQzVCO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzdCOzhCQU1zQixhQUFhO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2JxQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBLYnFGaWx0ZXJCYXIgfSBmcm9tICcuL2ZpbHRlci1iYXInO1xuaW1wb3J0IHsgS2JxRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXItYmFyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2ticS1maWx0ZXItcmVzZXQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxidXR0b24gW2NvbG9yXT1cIid0aGVtZSdcIiBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIga2JxLWJ1dHRvbj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50Pnt7IGxvY2FsZURhdGEgfX08L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1maWx0ZXItcmVzZXQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbS2JxQnV0dG9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBLYnFGaWx0ZXJSZXNldCB7XG4gICAgLyoqIEticUZpbHRlckJhciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyQmFyID0gaW5qZWN0KEticUZpbHRlckJhcik7XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIHVzZXIgcmVzZXQgYSBmaWx0ZXIuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uUmVzZXRGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbHRlciB8IG51bGw+KCk7XG5cbiAgICAvKiogbG9jYWxpemVkIGRhdGFcbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgZ2V0IGxvY2FsZURhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckJhci5jb25maWd1cmF0aW9uLnJlc2V0LmJ1dHRvbk5hbWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0RmlsdGVyKCkge1xuICAgICAgICB0aGlzLm9uUmVzZXRGaWx0ZXIuZW1pdCh0aGlzLmZpbHRlckJhci5maWx0ZXIhKTtcblxuICAgICAgICB0aGlzLmZpbHRlckJhci5jaGFuZ2VzLm5leHQoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -16,12 +16,22 @@ import * as i4 from "@koobiq/components/form-field";
|
|
|
16
16
|
import * as i5 from "@koobiq/components/input";
|
|
17
17
|
import * as i6 from "@angular/forms";
|
|
18
18
|
export class KbqFilterBarSearch {
|
|
19
|
+
/** localized data
|
|
20
|
+
* @docs-private */
|
|
21
|
+
get localeData() {
|
|
22
|
+
return this.filterBar.configuration.search;
|
|
23
|
+
}
|
|
19
24
|
constructor() {
|
|
25
|
+
/** KbqFilterBar instance */
|
|
20
26
|
this.filterBar = inject(KbqFilterBar);
|
|
21
27
|
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
28
|
+
/** control for search */
|
|
22
29
|
this.searchControl = new UntypedFormControl();
|
|
30
|
+
/** Whether the search active */
|
|
23
31
|
this.isSearchActive = false;
|
|
32
|
+
/** event that is generated whenever a user performs a search. */
|
|
24
33
|
this.onSearch = new EventEmitter();
|
|
34
|
+
/** @docs-private */
|
|
25
35
|
this.onReset = () => {
|
|
26
36
|
this.changeDetectorRef.markForCheck();
|
|
27
37
|
};
|
|
@@ -32,16 +42,19 @@ export class KbqFilterBarSearch {
|
|
|
32
42
|
this.isSearchActive = true;
|
|
33
43
|
setTimeout(() => this.input.focus());
|
|
34
44
|
}
|
|
45
|
+
/** @docs-private */
|
|
35
46
|
onBlur() {
|
|
36
47
|
if (this.searchControl.value)
|
|
37
48
|
return;
|
|
38
49
|
this.onEscape();
|
|
39
50
|
}
|
|
51
|
+
/** @docs-private */
|
|
40
52
|
onEscape() {
|
|
41
53
|
this.isSearchActive = false;
|
|
42
54
|
this.button.focusViaKeyboard();
|
|
43
55
|
this.tooltip.hide();
|
|
44
56
|
}
|
|
57
|
+
/** @docs-private */
|
|
45
58
|
onClear() {
|
|
46
59
|
this.isSearchActive = false;
|
|
47
60
|
setTimeout(() => {
|
|
@@ -57,7 +70,7 @@ export class KbqFilterBarSearch {
|
|
|
57
70
|
[kbqStyle]="'transparent'"
|
|
58
71
|
(click)="openSearch()"
|
|
59
72
|
kbq-button
|
|
60
|
-
kbqTooltip="{{
|
|
73
|
+
kbqTooltip="{{ localeData.tooltip }}"
|
|
61
74
|
>
|
|
62
75
|
<i kbq-icon="kbq-magnifying-glass_16"></i>
|
|
63
76
|
</button>
|
|
@@ -71,7 +84,7 @@ export class KbqFilterBarSearch {
|
|
|
71
84
|
(keydown.escape)="onEscape()"
|
|
72
85
|
autocomplete="off"
|
|
73
86
|
kbqInput
|
|
74
|
-
placeholder="{{
|
|
87
|
+
placeholder="{{ localeData.placeholder }}"
|
|
75
88
|
/>
|
|
76
89
|
|
|
77
90
|
<kbq-cleaner (click)="onClear()" />
|
|
@@ -87,7 +100,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
87
100
|
[kbqStyle]="'transparent'"
|
|
88
101
|
(click)="openSearch()"
|
|
89
102
|
kbq-button
|
|
90
|
-
kbqTooltip="{{
|
|
103
|
+
kbqTooltip="{{ localeData.tooltip }}"
|
|
91
104
|
>
|
|
92
105
|
<i kbq-icon="kbq-magnifying-glass_16"></i>
|
|
93
106
|
</button>
|
|
@@ -101,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
101
114
|
(keydown.escape)="onEscape()"
|
|
102
115
|
autocomplete="off"
|
|
103
116
|
kbqInput
|
|
104
|
-
placeholder="{{
|
|
117
|
+
placeholder="{{ localeData.placeholder }}"
|
|
105
118
|
/>
|
|
106
119
|
|
|
107
120
|
<kbq-cleaner (click)="onClear()" />
|
|
@@ -129,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
129
142
|
}], onSearch: [{
|
|
130
143
|
type: Output
|
|
131
144
|
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItc2VhcmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFnRDVDLE1BQU0sT0FBTyxrQkFBa0I7SUFlM0I7dUJBQ21CO0lBQ25CLElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7SUFLRDtRQXZCQSw0QkFBNEI7UUFDWCxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBTS9ELHlCQUF5QjtRQUN6QixrQkFBYSxHQUF1QixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFFN0QsZ0NBQWdDO1FBQ2hDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBUWhDLGlFQUFpRTtRQUM5QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQXlDekQsb0JBQW9CO1FBQ3BCLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDO1FBekNFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixNQUFNO1FBQ0YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRXJDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE9BQU87UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztpSUE3RFEsa0JBQWtCO3FIQUFsQixrQkFBa0IsMk5BS2hCLFFBQVEseUVBQ1IsU0FBUywwRUFDVCxpQkFBaUIsZ0RBbERsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EwQlQsME9BS0csZ0JBQWdCLDhCQUNoQixlQUFlLCtOQUNmLGdCQUFnQix3Y0FDaEIsYUFBYSwySUFDYixrQkFBa0IsOHRCQUNsQixjQUFjLGdQQUNkLG1CQUFtQjs7MkZBTWQsa0JBQWtCO2tCQTlDOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sd0NBQXdDLFlBQ3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDTCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3RCLFFBQ0s7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjtxQkFDN0I7d0RBTzRCLEtBQUs7c0JBQWpDLFNBQVM7dUJBQUMsUUFBUTtnQkFDVyxNQUFNO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBQ2tCLE9BQU87c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWVULFFBQVE7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLYnFCdXR0b24sIEticUJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgS2JxRGl2aWRlck1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kaXZpZGVyJztcbmltcG9ydCB7IEticUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFJbnB1dCwgS2JxSW5wdXRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgS2JxVG9vbFRpcE1vZHVsZSwgS2JxVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBLYnFGaWx0ZXJCYXIgfSBmcm9tICcuL2ZpbHRlci1iYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAna2JxLWZpbHRlci1zZWFyY2gsIFtrYnEtZmlsdGVyLXNlYXJjaF0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtjbGFzcy5rYnEtZmlsdGVyX2hpZGRlbl09XCJpc1NlYXJjaEFjdGl2ZVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgICAgICBba2JxU3R5bGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblNlYXJjaCgpXCJcbiAgICAgICAgICAgIGticS1idXR0b25cbiAgICAgICAgICAgIGticVRvb2x0aXA9XCJ7eyBsb2NhbGVEYXRhLnRvb2x0aXAgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1tYWduaWZ5aW5nLWdsYXNzXzE2XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8a2JxLWZvcm0tZmllbGQgW2NsYXNzLmticS1maWx0ZXJfaGlkZGVuXT1cIiFpc1NlYXJjaEFjdGl2ZVwiPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtbWFnbmlmeWluZy1nbGFzc18xNlwiIGticVByZWZpeD48L2k+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cIm9uRXNjYXBlKClcIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAga2JxSW5wdXRcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGxvY2FsZURhdGEucGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGticS1jbGVhbmVyIChjbGljayk9XCJvbkNsZWFyKClcIiAvPlxuICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuICAgIGAsXG4gICAgc3R5bGVVcmw6ICdmaWx0ZXItc2VhcmNoLnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBLYnFEaXZpZGVyTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticVRvb2xUaXBNb2R1bGUsXG4gICAgICAgIEticUljb25Nb2R1bGUsXG4gICAgICAgIEticUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgS2JxSW5wdXRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtZmlsdGVyLXNlYXJjaCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUZpbHRlckJhclNlYXJjaCB7XG4gICAgLyoqIEticUZpbHRlckJhciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyQmFyID0gaW5qZWN0KEticUZpbHRlckJhcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBAVmlld0NoaWxkKEticUlucHV0KSBwcml2YXRlIGlucHV0OiBLYnFJbnB1dDtcbiAgICBAVmlld0NoaWxkKEticUJ1dHRvbikgcHJpdmF0ZSBidXR0b246IEticUJ1dHRvbjtcbiAgICBAVmlld0NoaWxkKEticVRvb2x0aXBUcmlnZ2VyKSBwcml2YXRlIHRvb2x0aXA6IEticVRvb2x0aXBUcmlnZ2VyO1xuXG4gICAgLyoqIGNvbnRyb2wgZm9yIHNlYXJjaCAqL1xuICAgIHNlYXJjaENvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBzZWFyY2ggYWN0aXZlICovXG4gICAgaXNTZWFyY2hBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBsb2NhbGl6ZWQgZGF0YVxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgbG9jYWxlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQmFyLmNvbmZpZ3VyYXRpb24uc2VhcmNoO1xuICAgIH1cblxuICAgIC8qKiBldmVudCB0aGF0IGlzIGdlbmVyYXRlZCB3aGVuZXZlciBhIHVzZXIgcGVyZm9ybXMgYSBzZWFyY2guICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5vblNlYXJjaCk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuZmlsdGVyUmVzZXQ/Lm9uUmVzZXRGaWx0ZXIucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHRoaXMub25SZXNldCk7XG4gICAgfVxuXG4gICAgb3BlblNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlucHV0LmZvY3VzKCkpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5vbkVzY2FwZSgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25Fc2NhcGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmJ1dHRvbi5mb2N1c1ZpYUtleWJvYXJkKCk7XG5cbiAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uQ2xlYXIoKSB7XG4gICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25SZXNldCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xufVxuIl19
|
|
@@ -28,8 +28,9 @@ import * as i8 from "@koobiq/components/popover";
|
|
|
28
28
|
import * as i9 from "@koobiq/components/core";
|
|
29
29
|
import * as i10 from "@koobiq/components/alert";
|
|
30
30
|
export class KbqFilters {
|
|
31
|
+
/** header of popover. Depends on the mode */
|
|
31
32
|
get popoverHeader() {
|
|
32
|
-
return this.saveNewFilter ?
|
|
33
|
+
return this.saveNewFilter ? this.localeData.saveAsNew : this.localeData.saveChanges;
|
|
33
34
|
}
|
|
34
35
|
/** Component state. true if opened dropdown or popup */
|
|
35
36
|
get opened() {
|
|
@@ -43,13 +44,25 @@ export class KbqFilters {
|
|
|
43
44
|
get isEmpty() {
|
|
44
45
|
return this.filters.length === 0;
|
|
45
46
|
}
|
|
47
|
+
/** localized data
|
|
48
|
+
* @docs-private */
|
|
49
|
+
get localeData() {
|
|
50
|
+
return this.filterBar.configuration.filters;
|
|
51
|
+
}
|
|
46
52
|
constructor() {
|
|
53
|
+
/** @docs-private */
|
|
47
54
|
this.placements = PopUpPlacements;
|
|
48
|
-
|
|
49
|
-
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
55
|
+
/** @docs-private */
|
|
50
56
|
this.styles = KbqButtonStyles;
|
|
57
|
+
/** @docs-private */
|
|
51
58
|
this.colors = KbqComponentColors;
|
|
59
|
+
/** KbqFilterBar instance */
|
|
60
|
+
this.filterBar = inject(KbqFilterBar);
|
|
61
|
+
/** @docs-private */
|
|
62
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
63
|
+
/** control for search filter */
|
|
52
64
|
this.searchControl = new UntypedFormControl();
|
|
65
|
+
/** @docs-private */
|
|
53
66
|
this.popoverSize = PopUpSizes.Medium;
|
|
54
67
|
this.showFilterSavingError = false;
|
|
55
68
|
/** Event that is generated whenever the user selects a filter. */
|
|
@@ -133,9 +146,11 @@ export class KbqFilters {
|
|
|
133
146
|
this.saveNewFilter = false;
|
|
134
147
|
this.preparePopover();
|
|
135
148
|
}
|
|
149
|
+
/** @docs-private */
|
|
136
150
|
stopEventPropagation(event) {
|
|
137
151
|
event.stopPropagation();
|
|
138
152
|
}
|
|
153
|
+
/** @docs-private */
|
|
139
154
|
searchKeydownHandler(event) {
|
|
140
155
|
if (event.key === 'Escape') {
|
|
141
156
|
this.closePopover();
|
|
@@ -144,6 +159,7 @@ export class KbqFilters {
|
|
|
144
159
|
this.stopEventPropagation(event);
|
|
145
160
|
}
|
|
146
161
|
}
|
|
162
|
+
/** @docs-private */
|
|
147
163
|
onDropdownOpen() {
|
|
148
164
|
setTimeout(() => this.search.nativeElement.focus());
|
|
149
165
|
}
|
|
@@ -168,7 +184,7 @@ export class KbqFilters {
|
|
|
168
184
|
: this.filters;
|
|
169
185
|
}
|
|
170
186
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFilters, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
171
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqFilters, isStandalone: true, selector: "kbq-filters", inputs: { filters: "filters" }, outputs: { onSelectFilter: "onSelectFilter", onSave: "onSave", onChangeFilter: "onChangeFilter", onSaveAsNew: "onSaveAsNew", onRemoveFilter: "onRemoveFilter", onResetFilterChanges: "onResetFilterChanges" }, host: { classAttribute: "kbq-filters" }, viewQueries: [{ propertyName: "button", first: true, predicate: KbqButton, descendants: true }, { propertyName: "popover", first: true, predicate: KbqPopoverTrigger, descendants: true }, { propertyName: "dropdown", first: true, predicate: KbqDropdownTrigger, descendants: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "newFilterName", first: true, predicate: ["newFilterName"], descendants: true }], exportAs: ["kbqFilters"], ngImport: i0, template: "<button\n kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqTrigger]=\"'manual'\"\n [ngClass]=\"{ 'kbq-active': opened }\"\n (dropdownClosed)=\"searchControl.setValue('')\"\n (dropdownOpened)=\"onDropdownOpen()\"\n>\n <span #kbqTitleText class=\"kbq-filters__filter-name\">\n @if (filter?.name) {\n {{ filter!.name }}\n } @else {\n <ng-content>\n <i kbq-icon=\"kbq-list_16\"></i>\n {{ filterBar.configuration.filters.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n kbqTooltip=\"{{ filterBar.configuration.filters.saveNewFilterTooltip }}\"\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n >\n <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n </button>\n\n <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n <kbq-form-field kbqFormFieldWithoutBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n #search\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ filterBar.configuration.filters.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (click)=\"stopEventPropagation($event)\"\n (keydown)=\"searchKeydownHandler($event)\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <kbq-divider />\n\n @for (filter of filteredOptions | async; track filter) {\n <button\n kbq-dropdown-item\n kbq-title\n [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n (click)=\"selectFilter(filter)\"\n >\n {{ filter.name }}\n </button>\n } @empty {\n <button kbq-dropdown-item [disabled]=\"true\">\n {{ filterBar.configuration.filters.searchEmptyResult }}\n </button>\n }\n\n <kbq-divider />\n </div>\n\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ filterBar.configuration.filters.saveAsNewFilter }}\n </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n <button\n kbq-dropdown-item\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n (click)=\"saveChanges()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n {{ filterBar.configuration.filters.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i class=\"kbq kbq-icon kbq-icon-button kbq-circle-xs_16 kbq-warning layout-margin-left-xs\"></i>\n }\n </button>\n }\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ filterBar.configuration.filters.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ filterBar.configuration.filters.change }}\n </button>\n }\n\n @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n <kbq-divider />\n }\n\n @if (filterBar.isSavedAndChanged) {\n <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n <i kbq-icon=\"kbq-xmark-circle_16\"></i>\n {{ filterBar.configuration.filters.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"this.onRemoveFilter.next(this.filter!)\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ filterBar.configuration.filters.remove }}\n </button>\n }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n @if (showFilterSavingError) {\n <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n {{ filterSavingErrorText }}\n </kbq-alert>\n }\n <div class=\"kbq-form-vertical\">\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label\">{{ filterBar.configuration.filters.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input #newFilterName kbqInput type=\"text\" [formControl]=\"filterName\" />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-hint [color]=\"'error'\">{{ filterBar.configuration.filters.error }}</kbq-hint>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button kbq-button class=\"layout-margin-right-l\" [color]=\"'contrast'\" [kbqStyle]=\"'filled'\" (click)=\"saveAsNew()\">\n {{ filterBar.configuration.filters.saveButton }}\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" [kbqStyle]=\"'filled'\" (click)=\"closePopover()\">\n {{ filterBar.configuration.filters.cancelButton }}\n </button>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-filters{display:flex}.kbq-filters>.kbq-button{max-width:320px}.kbq-filters>.kbq-button .kbq-button-wrapper{width:100%}.kbq-filters>.kbq-button .kbq-icon{margin-right:var(--kbq-size-xxs)}.kbq-filters .kbq-filters__filter-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-filters .kbq-filter-bar__separator{align-self:center;height:var(--kbq-size-m)!important;margin-left:calc(var(--kbq-size-s) + var(--kbq-size-xs))!important;margin-right:var(--kbq-size-xs)!important}.kbq-filters .kbq-filter-bar__arrow{align-self:center;margin-left:var(--kbq-size-s)}.kbq-filters .kbq-button.kbq-button_changed-filter{border-bottom-right-radius:unset;border-top-right-radius:unset}.kbq-filters .kbq-button-icon{margin-left:-1px;border-bottom-left-radius:unset;border-top-left-radius:unset}.kbq-filters .kbq-button_changed-saved-filter:before{content:\"\";position:absolute;right:-4px;top:-4px;width:var(--kbq-size-s);height:var(--kbq-size-s);border:2px solid var(--kbq-background-bg);border-radius:var(--kbq-size-xs);background:var(--kbq-icon-warning)}.kbq-filters .kbq-button:not(:hover,.kbq-active)+.kbq-button_action:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:var(--kbq-size-m);background:var(--kbq-line-contrast-less)}.kbq-filters__save-as-new-filter-popover .kbq-popover__container{width:400px}.kbq-filters__save-as-new-filter-popover .kbq-popover__content{padding:var(--kbq-size-s) var(--kbq-size-xxl)}.kbq-filters__dropdown .kbq-dropdown-item{padding-right:var(--kbq-size-s)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i2.KbqButtonDropdownTrigger, selector: "[kbq-button][kbqDropdownTriggerFor]" }, { kind: "ngmodule", type: KbqDropdownModule }, { kind: "component", type: i3.KbqDropdown, selector: "kbq-dropdown", inputs: ["navigationWithWrap", "xPosition", "yPosition", "overlapTriggerY", "overlapTriggerX", "hasBackdrop", "class", "backdropClass"], outputs: ["closed"], exportAs: ["kbqDropdown"] }, { kind: "component", type: i3.KbqDropdownItem, selector: "kbq-dropdown-item, [kbq-dropdown-item]", inputs: ["disabled"], exportAs: ["kbqDropdownItem"] }, { kind: "directive", type: i3.KbqDropdownTrigger, selector: "[kbqDropdownTriggerFor]", inputs: ["kbqDropdownTriggerData", "openByArrowDown", "kbqDropdownTriggerRestoreFocus", "kbqDropdownTriggerFor"], outputs: ["dropdownOpened", "dropdownClosed"], exportAs: ["kbqDropdownTrigger"] }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "component", type: i4.KbqDivider, selector: "kbq-divider", inputs: ["vertical", "inset", "paddings"] }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: i5.KbqTitleDirective, selector: "[kbq-title]", exportAs: ["kbqTitle"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "component", type: i6.KbqFormField, selector: "kbq-form-field", exportAs: ["kbqFormField"] }, { kind: "directive", type: i6.KbqFormFieldWithoutBorders, selector: "kbq-form-field[kbqFormFieldWithoutBorders]", exportAs: ["kbqFormFieldWithoutBorders"] }, { kind: "component", type: i6.KbqHint, selector: "kbq-hint", inputs: ["id", "fillTextOff", "compact"], exportAs: ["kbqHint"] }, { kind: "directive", type: i6.KbqPrefix, selector: "[kbqPrefix]" }, { kind: "component", type: i6.KbqCleaner, selector: "kbq-cleaner", exportAs: ["kbqCleaner"] }, { kind: "directive", type: i6.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i6.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i7.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: KbqFilterBarButton, selector: "[kbqFilterBarButton]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "ngmodule", type: KbqPopoverModule }, { kind: "directive", type: i8.KbqPopoverTrigger, selector: "[kbqPopover]", inputs: ["kbqPopoverVisible", "kbqPopoverPlacement", "kbqPopoverPlacementPriority", "hasBackdrop", "kbqPopoverHeader", "kbqPopoverContent", "kbqPopoverFooter", "kbqPopoverDisabled", "kbqTrigger", "kbqPopoverSize", "kbqPopoverClass", "hasCloseButton", "closeOnScroll", "backdropClass", "kbqPopoverArrow", "kbqPopoverOffset"], outputs: ["kbqPopoverPlacementChange", "kbqPopoverVisibleChange"], exportAs: ["kbqPopover"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: KbqFormsModule }, { kind: "directive", type: i9.KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", exportAs: ["kbqForm"] }, { kind: "directive", type: i9.KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", exportAs: ["kbqFormElement"] }, { kind: "ngmodule", type: KbqAlertModule }, { kind: "component", type: i10.KbqAlert, selector: "kbq-alert", inputs: ["compact", "alertStyle", "alertColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
187
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqFilters, isStandalone: true, selector: "kbq-filters", inputs: { filters: "filters" }, outputs: { onSelectFilter: "onSelectFilter", onSave: "onSave", onChangeFilter: "onChangeFilter", onSaveAsNew: "onSaveAsNew", onRemoveFilter: "onRemoveFilter", onResetFilterChanges: "onResetFilterChanges" }, host: { classAttribute: "kbq-filters" }, viewQueries: [{ propertyName: "button", first: true, predicate: KbqButton, descendants: true }, { propertyName: "popover", first: true, predicate: KbqPopoverTrigger, descendants: true }, { propertyName: "dropdown", first: true, predicate: KbqDropdownTrigger, descendants: true }, { propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "newFilterName", first: true, predicate: ["newFilterName"], descendants: true }], exportAs: ["kbqFilters"], ngImport: i0, template: "<button\n kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqTrigger]=\"'manual'\"\n [ngClass]=\"{ 'kbq-active': opened }\"\n (dropdownClosed)=\"searchControl.setValue('')\"\n (dropdownOpened)=\"onDropdownOpen()\"\n>\n <span #kbqTitleText class=\"kbq-filters__filter-name\">\n @if (filter?.name) {\n {{ filter!.name }}\n } @else {\n <ng-content>\n <i kbq-icon=\"kbq-list_16\"></i>\n {{ localeData.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n kbqTooltip=\"{{ localeData.saveNewFilterTooltip }}\"\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n >\n <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n </button>\n\n <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n <kbq-form-field kbqFormFieldWithoutBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n #search\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (click)=\"stopEventPropagation($event)\"\n (keydown)=\"searchKeydownHandler($event)\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <kbq-divider />\n\n @for (filter of filteredOptions | async; track filter) {\n <button\n kbq-dropdown-item\n kbq-title\n [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n (click)=\"selectFilter(filter)\"\n >\n {{ filter.name }}\n </button>\n } @empty {\n <button kbq-dropdown-item [disabled]=\"true\">\n {{ localeData.searchEmptyResult }}\n </button>\n }\n\n <kbq-divider />\n </div>\n\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNewFilter }}\n </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n <button\n kbq-dropdown-item\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n (click)=\"saveChanges()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n {{ localeData.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i class=\"kbq kbq-icon kbq-icon-button kbq-circle-xs_16 kbq-warning layout-margin-left-xs\"></i>\n }\n </button>\n }\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ localeData.change }}\n </button>\n }\n\n @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n <kbq-divider />\n }\n\n @if (filterBar.isSavedAndChanged) {\n <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n <i kbq-icon=\"kbq-xmark-circle_16\"></i>\n {{ localeData.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"this.onRemoveFilter.next(this.filter!)\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ localeData.remove }}\n </button>\n }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n @if (showFilterSavingError) {\n <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n {{ filterSavingErrorText }}\n </kbq-alert>\n }\n <div class=\"kbq-form-vertical\">\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label\">{{ localeData.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input #newFilterName kbqInput type=\"text\" [formControl]=\"filterName\" />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-hint [color]=\"'error'\">{{ localeData.error }}</kbq-hint>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button kbq-button class=\"layout-margin-right-l\" [color]=\"'contrast'\" [kbqStyle]=\"'filled'\" (click)=\"saveAsNew()\">\n {{ localeData.saveButton }}\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" [kbqStyle]=\"'filled'\" (click)=\"closePopover()\">\n {{ localeData.cancelButton }}\n </button>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-filters{display:flex}.kbq-filters>.kbq-button{max-width:320px}.kbq-filters>.kbq-button .kbq-button-wrapper{width:100%}.kbq-filters>.kbq-button .kbq-icon{margin-right:var(--kbq-size-xxs)}.kbq-filters .kbq-filters__filter-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-filters .kbq-filter-bar__separator{align-self:center;height:var(--kbq-size-m)!important;margin-left:calc(var(--kbq-size-s) + var(--kbq-size-xs))!important;margin-right:var(--kbq-size-xs)!important}.kbq-filters .kbq-filter-bar__arrow{align-self:center;margin-left:var(--kbq-size-s)}.kbq-filters .kbq-button.kbq-button_changed-filter{border-bottom-right-radius:unset;border-top-right-radius:unset}.kbq-filters .kbq-button-icon{margin-left:-1px;border-bottom-left-radius:unset;border-top-left-radius:unset}.kbq-filters .kbq-button_changed-saved-filter:before{content:\"\";position:absolute;right:-4px;top:-4px;width:var(--kbq-size-s);height:var(--kbq-size-s);border:2px solid var(--kbq-background-bg);border-radius:var(--kbq-size-xs);background:var(--kbq-icon-warning)}.kbq-filters .kbq-button:not(:hover,.kbq-active)+.kbq-button_action:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:var(--kbq-size-m);background:var(--kbq-line-contrast-less)}.kbq-filters__save-as-new-filter-popover .kbq-popover__container{width:400px}.kbq-filters__save-as-new-filter-popover .kbq-popover__content{padding:var(--kbq-size-s) var(--kbq-size-xxl)}.kbq-filters__dropdown .kbq-dropdown-item{padding-right:var(--kbq-size-s)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i2.KbqButtonDropdownTrigger, selector: "[kbq-button][kbqDropdownTriggerFor]" }, { kind: "ngmodule", type: KbqDropdownModule }, { kind: "component", type: i3.KbqDropdown, selector: "kbq-dropdown", inputs: ["navigationWithWrap", "xPosition", "yPosition", "overlapTriggerY", "overlapTriggerX", "hasBackdrop", "class", "backdropClass"], outputs: ["closed"], exportAs: ["kbqDropdown"] }, { kind: "component", type: i3.KbqDropdownItem, selector: "kbq-dropdown-item, [kbq-dropdown-item]", inputs: ["disabled"], exportAs: ["kbqDropdownItem"] }, { kind: "directive", type: i3.KbqDropdownTrigger, selector: "[kbqDropdownTriggerFor]", inputs: ["kbqDropdownTriggerData", "openByArrowDown", "kbqDropdownTriggerRestoreFocus", "kbqDropdownTriggerFor"], outputs: ["dropdownOpened", "dropdownClosed"], exportAs: ["kbqDropdownTrigger"] }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "component", type: i4.KbqDivider, selector: "kbq-divider", inputs: ["vertical", "inset", "paddings"] }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqTitleModule }, { kind: "directive", type: i5.KbqTitleDirective, selector: "[kbq-title]", exportAs: ["kbqTitle"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "component", type: i6.KbqFormField, selector: "kbq-form-field", exportAs: ["kbqFormField"] }, { kind: "directive", type: i6.KbqFormFieldWithoutBorders, selector: "kbq-form-field[kbqFormFieldWithoutBorders]", exportAs: ["kbqFormFieldWithoutBorders"] }, { kind: "component", type: i6.KbqHint, selector: "kbq-hint", inputs: ["id", "fillTextOff", "compact"], exportAs: ["kbqHint"] }, { kind: "directive", type: i6.KbqPrefix, selector: "[kbqPrefix]" }, { kind: "component", type: i6.KbqCleaner, selector: "kbq-cleaner", exportAs: ["kbqCleaner"] }, { kind: "directive", type: i6.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "directive", type: i6.KbqTrim, selector: "[kbqInput], [kbqTextarea]", exportAs: ["KbqTrim"] }, { kind: "ngmodule", type: KbqInputModule }, { kind: "directive", type: i7.KbqInput, selector: "input[kbqInput],input[kbqNumberInput]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "type", "value"], exportAs: ["kbqInput"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: KbqFilterBarButton, selector: "[kbqFilterBarButton]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "ngmodule", type: KbqPopoverModule }, { kind: "directive", type: i8.KbqPopoverTrigger, selector: "[kbqPopover]", inputs: ["kbqPopoverVisible", "kbqPopoverPlacement", "kbqPopoverPlacementPriority", "hasBackdrop", "kbqPopoverHeader", "kbqPopoverContent", "kbqPopoverFooter", "kbqPopoverDisabled", "kbqTrigger", "kbqPopoverSize", "kbqPopoverClass", "hasCloseButton", "closeOnScroll", "backdropClass", "kbqPopoverArrow", "kbqPopoverOffset"], outputs: ["kbqPopoverPlacementChange", "kbqPopoverVisibleChange"], exportAs: ["kbqPopover"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: KbqFormsModule }, { kind: "directive", type: i9.KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", exportAs: ["kbqForm"] }, { kind: "directive", type: i9.KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", exportAs: ["kbqFormElement"] }, { kind: "ngmodule", type: KbqAlertModule }, { kind: "component", type: i10.KbqAlert, selector: "kbq-alert", inputs: ["compact", "alertStyle", "alertColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
172
188
|
}
|
|
173
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFilters, decorators: [{
|
|
174
190
|
type: Component,
|
|
@@ -191,7 +207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
191
207
|
FormsModule,
|
|
192
208
|
KbqFormsModule,
|
|
193
209
|
KbqAlertModule
|
|
194
|
-
], template: "<button\n kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqTrigger]=\"'manual'\"\n [ngClass]=\"{ 'kbq-active': opened }\"\n (dropdownClosed)=\"searchControl.setValue('')\"\n (dropdownOpened)=\"onDropdownOpen()\"\n>\n <span #kbqTitleText class=\"kbq-filters__filter-name\">\n @if (filter?.name) {\n {{ filter!.name }}\n } @else {\n <ng-content>\n <i kbq-icon=\"kbq-list_16\"></i>\n {{ filterBar.configuration.filters.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n kbqTooltip=\"{{ filterBar.configuration.filters.saveNewFilterTooltip }}\"\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n >\n <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n </button>\n\n <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n <kbq-form-field kbqFormFieldWithoutBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n #search\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ filterBar.configuration.filters.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (click)=\"stopEventPropagation($event)\"\n (keydown)=\"searchKeydownHandler($event)\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <kbq-divider />\n\n @for (filter of filteredOptions | async; track filter) {\n <button\n kbq-dropdown-item\n kbq-title\n [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n (click)=\"selectFilter(filter)\"\n >\n {{ filter.name }}\n </button>\n } @empty {\n <button kbq-dropdown-item [disabled]=\"true\">\n {{ filterBar.configuration.filters.searchEmptyResult }}\n </button>\n }\n\n <kbq-divider />\n </div>\n\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ filterBar.configuration.filters.saveAsNewFilter }}\n </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n <button\n kbq-dropdown-item\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n (click)=\"saveChanges()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n {{ filterBar.configuration.filters.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i class=\"kbq kbq-icon kbq-icon-button kbq-circle-xs_16 kbq-warning layout-margin-left-xs\"></i>\n }\n </button>\n }\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ filterBar.configuration.filters.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ filterBar.configuration.filters.change }}\n </button>\n }\n\n @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n <kbq-divider />\n }\n\n @if (filterBar.isSavedAndChanged) {\n <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n <i kbq-icon=\"kbq-xmark-circle_16\"></i>\n {{ filterBar.configuration.filters.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"this.onRemoveFilter.next(this.filter!)\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ filterBar.configuration.filters.remove }}\n </button>\n }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n @if (showFilterSavingError) {\n <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n {{ filterSavingErrorText }}\n </kbq-alert>\n }\n <div class=\"kbq-form-vertical\">\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label\">{{ filterBar.configuration.filters.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input #newFilterName kbqInput type=\"text\" [formControl]=\"filterName\" />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-hint [color]=\"'error'\">{{ filterBar.configuration.filters.error }}</kbq-hint>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button kbq-button class=\"layout-margin-right-l\" [color]=\"'contrast'\" [kbqStyle]=\"'filled'\" (click)=\"saveAsNew()\">\n {{ filterBar.configuration.filters.saveButton }}\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" [kbqStyle]=\"'filled'\" (click)=\"closePopover()\">\n {{ filterBar.configuration.filters.cancelButton }}\n </button>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-filters{display:flex}.kbq-filters>.kbq-button{max-width:320px}.kbq-filters>.kbq-button .kbq-button-wrapper{width:100%}.kbq-filters>.kbq-button .kbq-icon{margin-right:var(--kbq-size-xxs)}.kbq-filters .kbq-filters__filter-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-filters .kbq-filter-bar__separator{align-self:center;height:var(--kbq-size-m)!important;margin-left:calc(var(--kbq-size-s) + var(--kbq-size-xs))!important;margin-right:var(--kbq-size-xs)!important}.kbq-filters .kbq-filter-bar__arrow{align-self:center;margin-left:var(--kbq-size-s)}.kbq-filters .kbq-button.kbq-button_changed-filter{border-bottom-right-radius:unset;border-top-right-radius:unset}.kbq-filters .kbq-button-icon{margin-left:-1px;border-bottom-left-radius:unset;border-top-left-radius:unset}.kbq-filters .kbq-button_changed-saved-filter:before{content:\"\";position:absolute;right:-4px;top:-4px;width:var(--kbq-size-s);height:var(--kbq-size-s);border:2px solid var(--kbq-background-bg);border-radius:var(--kbq-size-xs);background:var(--kbq-icon-warning)}.kbq-filters .kbq-button:not(:hover,.kbq-active)+.kbq-button_action:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:var(--kbq-size-m);background:var(--kbq-line-contrast-less)}.kbq-filters__save-as-new-filter-popover .kbq-popover__container{width:400px}.kbq-filters__save-as-new-filter-popover .kbq-popover__content{padding:var(--kbq-size-s) var(--kbq-size-xxl)}.kbq-filters__dropdown .kbq-dropdown-item{padding-right:var(--kbq-size-s)}\n"] }]
|
|
210
|
+
], template: "<button\n kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqTrigger]=\"'manual'\"\n [ngClass]=\"{ 'kbq-active': opened }\"\n (dropdownClosed)=\"searchControl.setValue('')\"\n (dropdownOpened)=\"onDropdownOpen()\"\n>\n <span #kbqTitleText class=\"kbq-filters__filter-name\">\n @if (filter?.name) {\n {{ filter!.name }}\n } @else {\n <ng-content>\n <i kbq-icon=\"kbq-list_16\"></i>\n {{ localeData.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n kbqTooltip=\"{{ localeData.saveNewFilterTooltip }}\"\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n >\n <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n </button>\n\n <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n <kbq-form-field kbqFormFieldWithoutBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n #search\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n [formControl]=\"searchControl\"\n (click)=\"stopEventPropagation($event)\"\n (keydown)=\"searchKeydownHandler($event)\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <kbq-divider />\n\n @for (filter of filteredOptions | async; track filter) {\n <button\n kbq-dropdown-item\n kbq-title\n [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n (click)=\"selectFilter(filter)\"\n >\n {{ filter.name }}\n </button>\n } @empty {\n <button kbq-dropdown-item [disabled]=\"true\">\n {{ localeData.searchEmptyResult }}\n </button>\n }\n\n <kbq-divider />\n </div>\n\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNewFilter }}\n </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n <button\n kbq-dropdown-item\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n (click)=\"saveChanges()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n {{ localeData.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i class=\"kbq kbq-icon kbq-icon-button kbq-circle-xs_16 kbq-warning layout-margin-left-xs\"></i>\n }\n </button>\n }\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ localeData.change }}\n </button>\n }\n\n @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n <kbq-divider />\n }\n\n @if (filterBar.isSavedAndChanged) {\n <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n <i kbq-icon=\"kbq-xmark-circle_16\"></i>\n {{ localeData.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"this.onRemoveFilter.next(this.filter!)\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ localeData.remove }}\n </button>\n }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n @if (showFilterSavingError) {\n <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n {{ filterSavingErrorText }}\n </kbq-alert>\n }\n <div class=\"kbq-form-vertical\">\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label\">{{ localeData.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input #newFilterName kbqInput type=\"text\" [formControl]=\"filterName\" />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-hint [color]=\"'error'\">{{ localeData.error }}</kbq-hint>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button kbq-button class=\"layout-margin-right-l\" [color]=\"'contrast'\" [kbqStyle]=\"'filled'\" (click)=\"saveAsNew()\">\n {{ localeData.saveButton }}\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" [kbqStyle]=\"'filled'\" (click)=\"closePopover()\">\n {{ localeData.cancelButton }}\n </button>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-filters{display:flex}.kbq-filters>.kbq-button{max-width:320px}.kbq-filters>.kbq-button .kbq-button-wrapper{width:100%}.kbq-filters>.kbq-button .kbq-icon{margin-right:var(--kbq-size-xxs)}.kbq-filters .kbq-filters__filter-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-filters .kbq-filter-bar__separator{align-self:center;height:var(--kbq-size-m)!important;margin-left:calc(var(--kbq-size-s) + var(--kbq-size-xs))!important;margin-right:var(--kbq-size-xs)!important}.kbq-filters .kbq-filter-bar__arrow{align-self:center;margin-left:var(--kbq-size-s)}.kbq-filters .kbq-button.kbq-button_changed-filter{border-bottom-right-radius:unset;border-top-right-radius:unset}.kbq-filters .kbq-button-icon{margin-left:-1px;border-bottom-left-radius:unset;border-top-left-radius:unset}.kbq-filters .kbq-button_changed-saved-filter:before{content:\"\";position:absolute;right:-4px;top:-4px;width:var(--kbq-size-s);height:var(--kbq-size-s);border:2px solid var(--kbq-background-bg);border-radius:var(--kbq-size-xs);background:var(--kbq-icon-warning)}.kbq-filters .kbq-button:not(:hover,.kbq-active)+.kbq-button_action:not(:hover,.kbq-active):after{content:\"\";position:absolute;left:0;top:10px;width:1px;height:var(--kbq-size-m);background:var(--kbq-line-contrast-less)}.kbq-filters__save-as-new-filter-popover .kbq-popover__container{width:400px}.kbq-filters__save-as-new-filter-popover .kbq-popover__content{padding:var(--kbq-size-s) var(--kbq-size-xxl)}.kbq-filters__dropdown .kbq-dropdown-item{padding-right:var(--kbq-size-s)}\n"] }]
|
|
195
211
|
}], ctorParameters: () => [], propDecorators: { button: [{
|
|
196
212
|
type: ViewChild,
|
|
197
213
|
args: [KbqButton]
|
|
@@ -222,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
222
238
|
}], onResetFilterChanges: [{
|
|
223
239
|
type: Output
|
|
224
240
|
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXJzLnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlcnMuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FB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WSxjQUFjO3NCQUFoQyxNQUFNO2dCQUVZLG9CQUFvQjtzQkFBdEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEticUFsZXJ0TW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2FsZXJ0JztcbmltcG9ydCB7IEticUJ1dHRvbiwgS2JxQnV0dG9uTW9kdWxlLCBLYnFCdXR0b25TdHlsZXMgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEticUNvbXBvbmVudENvbG9ycywgS2JxRm9ybXNNb2R1bGUsIFBvcFVwUGxhY2VtZW50cywgUG9wVXBTaXplcyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURpdmlkZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGl2aWRlcic7XG5pbXBvcnQgeyBLYnFEcm9wZG93bk1vZHVsZSwgS2JxRHJvcGRvd25UcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEticUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEticUljb24gfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBLYnFJbnB1dE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pbnB1dCc7XG5pbXBvcnQgeyBLYnFQb3BvdmVyTW9kdWxlLCBLYnFQb3BvdmVyVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEticVRpdGxlTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3RpdGxlJztcbmltcG9ydCB7IEticVRvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEticUZpbHRlckJhciB9IGZyb20gJy4vZmlsdGVyLWJhcic7XG5pbXBvcnQgeyBLYnFGaWx0ZXJCYXJCdXR0b24gfSBmcm9tICcuL2ZpbHRlci1iYXItYnV0dG9uJztcbmltcG9ydCB7IEticUZpbHRlciwgS2JxU2F2ZUZpbHRlckVycm9yLCBLYnFTYXZlRmlsdGVyRXZlbnQgfSBmcm9tICcuL2ZpbHRlci1iYXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGV4cG9ydEFzOiAna2JxRmlsdGVycycsXG4gICAgc2VsZWN0b3I6ICdrYnEtZmlsdGVycycsXG4gICAgdGVtcGxhdGVVcmw6ICdmaWx0ZXJzLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydmaWx0ZXJzLnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtZmlsdGVycydcbiAgICB9LFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgS2JxQnV0dG9uTW9kdWxlLFxuICAgICAgICBLYnFEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgS2JxRGl2aWRlck1vZHVsZSxcbiAgICAgICAgS2JxSWNvbixcbiAgICAgICAgS2JxVGl0bGVNb2R1bGUsXG4gICAgICAgIEticUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgS2JxSW5wdXRNb2R1bGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEticUZpbHRlckJhckJ1dHRvbixcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBLYnFUb29sdGlwVHJpZ2dlcixcbiAgICAgICAgS2JxUG9wb3Zlck1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEticUZvcm1zTW9kdWxlLFxuICAgICAgICBLYnFBbGVydE1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRmlsdGVycyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsYWNlbWVudHMgPSBQb3BVcFBsYWNlbWVudHM7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyQmFyID0gaW5qZWN0KEticUZpbHRlckJhcik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIEBWaWV3Q2hpbGQoS2JxQnV0dG9uKSBidXR0b246IEticUJ1dHRvbjtcbiAgICBAVmlld0NoaWxkKEticVBvcG92ZXJUcmlnZ2VyKSBwb3BvdmVyOiBLYnFQb3BvdmVyVHJpZ2dlcjtcbiAgICBAVmlld0NoaWxkKEticURyb3Bkb3duVHJpZ2dlcikgZHJvcGRvd246IEticURyb3Bkb3duVHJpZ2dlcjtcbiAgICBAVmlld0NoaWxkKCdzZWFyY2gnKSBzZWFyY2g6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnbmV3RmlsdGVyTmFtZScpIG5ld0ZpbHRlck5hbWU6IEVsZW1lbnRSZWY7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3R5bGVzID0gS2JxQnV0dG9uU3R5bGVzO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb2xvcnMgPSBLYnFDb21wb25lbnRDb2xvcnM7XG5cbiAgICBzZWFyY2hDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gICAgZmlsdGVyZWRPcHRpb25zOiBPYnNlcnZhYmxlPEticUZpbHRlcltdPjtcblxuICAgIHBvcG92ZXJTaXplID0gUG9wVXBTaXplcy5NZWRpdW07XG5cbiAgICBmaWx0ZXJOYW1lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICBzYXZlTmV3RmlsdGVyOiBib29sZWFuO1xuICAgIHNob3dGaWx0ZXJTYXZpbmdFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGZpbHRlclNhdmluZ0Vycm9yVGV4dDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZmlsdGVyczogS2JxRmlsdGVyW107XG5cbiAgICAvKiogRXZlbnQgdGhhdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIHVzZXIgc2VsZWN0cyBhIGZpbHRlci4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25TZWxlY3RGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbHRlcj4oKTtcbiAgICAvKiogRXZlbnQgdGhhdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIHVzZXIgc2F2ZSBhIGZpbHRlci4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFTYXZlRmlsdGVyRXZlbnQ+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgZ2VuZXJhdGVkIHdoZW5ldmVyIHRoZSB1c2VyIGNoYW5nZSBhIGZpbHRlci4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25DaGFuZ2VGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEticVNhdmVGaWx0ZXJFdmVudD4oKTtcbiAgICAvKiogRXZlbnQgdGhhdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIHVzZXIgc2F2ZXMgYSBmaWx0ZXIgYXMgbmV3LiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblNhdmVBc05ldyA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxU2F2ZUZpbHRlckV2ZW50PigpO1xuICAgIC8qKiBFdmVudCB0aGF0IGlzIGdlbmVyYXRlZCB3aGVuZXZlciB0aGUgdXNlciByZW1vdmUgYSBmaWx0ZXIuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uUmVtb3ZlRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWx0ZXI+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgZ2VuZXJhdGVkIHdoZW5ldmVyIHRoZSB1c2VyIHJlc2V0IGEgZmlsdGVyIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uUmVzZXRGaWx0ZXJDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWx0ZXIgfCBudWxsPigpO1xuXG4gICAgZ2V0IHBvcG92ZXJIZWFkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZU5ld0ZpbHRlciA/ICfQndC+0LLRi9C5INGE0LjQu9GM0YLRgCcgOiAn0JjQt9C80LXQvdC40YLRjCDRhNC40LvRjNGC0YAnO1xuICAgIH1cblxuICAgIC8qKiBDb21wb25lbnQgc3RhdGUuIHRydWUgaWYgb3BlbmVkIGRyb3Bkb3duIG9yIHBvcHVwICovXG4gICAgZ2V0IG9wZW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wb3Zlcj8uaXNPcGVuIHx8IHRoaXMuZHJvcGRvd24/Lm9wZW5lZDtcbiAgICB9XG5cbiAgICAvKiogU2VsZWN0ZWQgZmlsdGVyICovXG4gICAgZ2V0IGZpbHRlcigpOiBLYnFGaWx0ZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQmFyLmZpbHRlcjtcbiAgICB9XG5cbiAgICAvKiogQ29tcG9uZW50IHN0YXRlLiBUcnVlIGlmICdmaWx0ZXJzJyBpbnB1dCBjb250YWlucyBubyBlbGVtZW50cy4gKi9cbiAgICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmFyLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgICAgICAgb2YodGhpcy5maWx0ZXJzKSxcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKHZhbHVlKSA9PiB0aGlzLmdldEZpbHRlcmVkT3B0aW9ucyh2YWx1ZSkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNlbGVjdEZpbHRlcihmaWx0ZXI6IEticUZpbHRlcikge1xuICAgICAgICB0aGlzLmZpbHRlckJhci5pbnRlcm5hbEZpbHRlckNoYW5nZXMubmV4dChzdHJ1Y3R1cmVkQ2xvbmUoZmlsdGVyKSk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuc2F2ZUZpbHRlclN0YXRlKCk7XG4gICAgICAgIHRoaXMub25TZWxlY3RGaWx0ZXIubmV4dChmaWx0ZXIpO1xuICAgIH1cblxuICAgIHNhdmVDaGFuZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsdGVyQmFyLmZpbHRlcikgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyQmFyLmZpbHRlci5zYXZlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZmlsdGVyQmFyLmZpbHRlci5jaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuc2F2ZUZpbHRlclN0YXRlKCk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuaW50ZXJuYWxGaWx0ZXJDaGFuZ2VzLm5leHQodGhpcy5maWx0ZXJCYXIuZmlsdGVyKTtcblxuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHsgZmlsdGVyOiB0aGlzLmZpbHRlckJhci5maWx0ZXIsIGZpbHRlckJhcjogdGhpcy5maWx0ZXJCYXIgfSk7XG4gICAgfVxuXG4gICAgc2F2ZUFzTmV3KCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJOYW1lLmludmFsaWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5maWx0ZXJOYW1lLnZhbHVlIHx8ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLnNhdmVOZXdGaWx0ZXIpIHtcbiAgICAgICAgICAgIC8vIEB0b2RvIGRlZmF1bHQgZmlsdGVyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBzdHJ1Y3R1cmVkQ2xvbmU8S2JxRmlsdGVyPih0aGlzLmZpbHRlciBhcyBLYnFGaWx0ZXIpIHx8IHsgcGlwZXM6IFtdIH07XG5cbiAgICAgICAgICAgIGZpbHRlci5uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIGZpbHRlci5zYXZlZCA9IHRydWU7XG4gICAgICAgICAgICBmaWx0ZXIuY2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLm9uU2F2ZUFzTmV3LmVtaXQoeyBmaWx0ZXIsIGZpbHRlckJhcjogdGhpcy5maWx0ZXJCYXIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckJhci5maWx0ZXIhLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJCYXIuZmlsdGVyIS5zYXZlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckJhci5maWx0ZXIhLmNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh7IGZpbHRlcjogdGhpcy5maWx0ZXJCYXIuZmlsdGVyLCBmaWx0ZXJCYXI6IHRoaXMuZmlsdGVyQmFyIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd0Vycm9yKGVycm9yPzogS2JxU2F2ZUZpbHRlckVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvcj8ubmFtZUFscmVhZHlFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyTmFtZS5zZXRFcnJvcnMoeyBmaWx0ZXJOYW1lQWxyZWFkeUV4aXN0OiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93RmlsdGVyU2F2aW5nRXJyb3IgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyU2F2aW5nRXJyb3JUZXh0ID0gZXJyb3I/LnRleHQgPz8gdGhpcy5maWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLmVycm9ySGludDtcbiAgICB9XG5cbiAgICByZXN0b3JlRm9jdXMoKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJlcGFyZVBvcG92ZXIoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KHRoaXMuZmlsdGVyPy5uYW1lIHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblxuICAgICAgICB0aGlzLmZpbHRlck5hbWUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiAodGhpcy5zaG93RmlsdGVyU2F2aW5nRXJyb3IgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMucG9wb3Zlci5zaG93KCk7XG5cbiAgICAgICAgbWVyZ2UoLi4udGhpcy5wb3BvdmVyLmRlZmF1bHRDbG9zaW5nQWN0aW9ucygpKS5zdWJzY3JpYmUodGhpcy5jbG9zZVBvcG92ZXIpO1xuICAgICAgICB0aGlzLnBvcG92ZXIudmlzaWJsZUNoYW5nZS5waXBlKGZpbHRlcigoc3RhdGUpID0+ICFzdGF0ZSkpLnN1YnNjcmliZSh0aGlzLmNsb3NlUG9wb3Zlcik7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm5ld0ZpbHRlck5hbWUubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG5cbiAgICBvcGVuU2F2ZUFzTmV3RmlsdGVyUG9wb3ZlcigpIHtcbiAgICAgICAgdGhpcy5zYXZlTmV3RmlsdGVyID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnByZXBhcmVQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgb3BlbkNoYW5nZUZpbHRlck5hbWVQb3BvdmVyKCkge1xuICAgICAgICB0aGlzLnNhdmVOZXdGaWx0ZXIgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnByZXBhcmVQb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgY2xvc2VQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBvcG92ZXIuaGlkZSgpO1xuXG4gICAgICAgIHRoaXMucmVzdG9yZUZvY3VzKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSk7XG4gICAgfTtcblxuICAgIHN0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBzZWFyY2hLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bk9wZW4oKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWFyY2gubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG5cbiAgICByZXNldEZpbHRlckNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmFyLnJlc2V0RmlsdGVyQ2hhbmdlZFN0YXRlKCk7XG5cbiAgICAgICAgdGhpcy5vblJlc2V0RmlsdGVyQ2hhbmdlcy5lbWl0KHRoaXMuZmlsdGVyISk7XG4gICAgfVxuXG4gICAgLyoqIEhpZGUgdGhlIHBvcHVwIGFuZCByZXN0b3JlIGZvY3VzLlxuICAgICAqIFVzZSB0aGlzIG1ldGhvZCBpbiB0aGUgb25TYXZlLCBvblNhdmVBc05ldywgb3Igb25DaGFuZ2VGaWx0ZXIgZXZlbnRzIGFmdGVyIHRoZSBkYXRhIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzYXZlZC4gKi9cbiAgICBmaWx0ZXJTYXZlZFN1Y2Nlc3NmdWxseSgpIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyLmhpZGUoKTtcbiAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogU2hvd3MgYW4gZXJyb3IuIFVzZSB0aGlzIG1ldGhvZCBpbiB0aGUgb25TYXZlLCBvblNhdmVBc05ldywgb3Igb25DaGFuZ2VGaWx0ZXIgZXZlbnRzIGlmIHNhdmluZyBkYXRhIGZhaWxlZC4gKi9cbiAgICBmaWx0ZXJTYXZlZFVuc3VjY2Vzc2Z1bGx5KGVycm9yPzogS2JxU2F2ZUZpbHRlckVycm9yKSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbHRlcmVkT3B0aW9ucyh2YWx1ZSk6IEticUZpbHRlcltdIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoRmlsdGVyID0gdmFsdWUgJiYgdmFsdWUubmV3ID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gc2VhcmNoRmlsdGVyXG4gICAgICAgICAgICA/IHRoaXMuZmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hGaWx0ZXIudG9Mb3dlckNhc2UoKSkpXG4gICAgICAgICAgICA6IHRoaXMuZmlsdGVycztcbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAga2JxLWJ1dHRvblxuICAgIGticS10aXRsZVxuICAgIGticUZpbHRlckJhckJ1dHRvblxuICAgIGticVBvcG92ZXJcbiAgICBba2JxRHJvcGRvd25UcmlnZ2VyRm9yXT1cInNhdmVkRmlsdGVyc1wiXG4gICAgW2ticVBvcG92ZXJBcnJvd109XCJmYWxzZVwiXG4gICAgW2ticVBvcG92ZXJDbGFzc109XCIna2JxLWZpbHRlcnNfX3NhdmUtYXMtbmV3LWZpbHRlci1wb3BvdmVyJ1wiXG4gICAgW2ticVBvcG92ZXJDb250ZW50XT1cInNhdmVBc05ld1BvcG92ZXJDb250ZW50XCJcbiAgICBba2JxUG9wb3ZlckZvb3Rlcl09XCJzYXZlQXNOZXdQb3BvdmVyRm9vdGVyXCJcbiAgICBba2JxUG9wb3ZlckhlYWRlcl09XCJzYXZlQXNOZXdQb3BvdmVySGVhZGVyXCJcbiAgICBba2JxUG9wb3ZlclBsYWNlbWVudF09XCJwbGFjZW1lbnRzLkJvdHRvbUxlZnRcIlxuICAgIFtrYnFQb3BvdmVyUGxhY2VtZW50UHJpb3JpdHldPVwiW3BsYWNlbWVudHMuQm90dG9tTGVmdCwgcGxhY2VtZW50cy5Ub3BMZWZ0XVwiXG4gICAgW2ticVBvcG92ZXJTaXplXT1cInBvcG92ZXJTaXplXCJcbiAgICBba2JxVHJpZ2dlcl09XCInbWFudWFsJ1wiXG4gICAgW25nQ2xhc3NdPVwieyAna2JxLWFjdGl2ZSc6IG9wZW5lZCB9XCJcbiAgICAoZHJvcGRvd25DbG9zZWQpPVwic2VhcmNoQ29udHJvbC5zZXRWYWx1ZSgnJylcIlxuICAgIChkcm9wZG93bk9wZW5lZCk9XCJvbkRyb3Bkb3duT3BlbigpXCJcbj5cbiAgICA8c3BhbiAja2JxVGl0bGVUZXh0IGNsYXNzPVwia2JxLWZpbHRlcnNfX2ZpbHRlci1uYW1lXCI+XG4gICAgICAgIEBpZiAoZmlsdGVyPy5uYW1lKSB7XG4gICAgICAgICAgICB7eyBmaWx0ZXIhLm5hbWUgfX1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8bmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1saXN0XzE2XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7IGZpbHRlckJhci5jb25maWd1cmF0aW9uLmZpbHRlcnMuZGVmYXVsdE5hbWUgfX1cbiAgICAgICAgICAgIDwvbmctY29udGVudD5cbiAgICAgICAgfVxuICAgIDwvc3Bhbj5cbjwvYnV0dG9uPlxuXG5AaWYgKGZpbHRlckJhci5pc0NoYW5nZWQgJiYgIWZpbHRlckJhci5pc1NhdmVkKSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBrYnEtYnV0dG9uXG4gICAgICAgIGticUZpbHRlckJhckJ1dHRvblxuICAgICAgICBrYnFUb29sdGlwPVwie3sgZmlsdGVyQmFyLmNvbmZpZ3VyYXRpb24uZmlsdGVycy5zYXZlTmV3RmlsdGVyVG9vbHRpcCB9fVwiXG4gICAgICAgIGNsYXNzPVwia2JxLWJ1dHRvbl9hY3Rpb25cIlxuICAgICAgICBbY29sb3JdPVwiY29sb3JzLkVtcHR5XCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5TYXZlQXNOZXdGaWx0ZXJQb3BvdmVyKClcIlxuICAgID5cbiAgICAgICAgPGkga2JxLWljb249XCJrYnEtZmxvcHB5LWRpc2tfMTZcIj48L2k+XG4gICAgPC9idXR0b24+XG59XG5cbkBpZiAoZmlsdGVyQmFyLmlzU2F2ZWQpIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGticS1idXR0b25cbiAgICAgICAga2JxRmlsdGVyQmFyQnV0dG9uXG4gICAgICAgIGNsYXNzPVwia2JxLWJ1dHRvbl9hY3Rpb25cIlxuICAgICAgICBbY29sb3JdPVwiY29sb3JzLkVtcHR5XCJcbiAgICAgICAgW2ticURyb3Bkb3duVHJpZ2dlckZvcl09XCJmaWx0ZXJBY3Rpb25zXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAna2JxLWJ1dHRvbl9jaGFuZ2VkLXNhdmVkLWZpbHRlcic6IGZpbHRlckJhci5pc1NhdmVkQW5kQ2hhbmdlZCB9XCJcbiAgICA+XG4gICAgICAgIDxpIGticS1pY29uPVwia2JxLWVsbGlwc2lzLXZlcnRpY2FsXzE2XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGkga2JxLWljb249XCJrYnEtY2hldnJvbi1yaWdodC1zXzE2XCIgY2xhc3M9XCJrYnEtZmlsdGVyLWJhcl9fYXJyb3dcIiBbY29sb3JdPVwiJ3RoZW1lJ1wiPjwvaT5cbn0gQGVsc2Uge1xuICAgIDxrYnEtZGl2aWRlciBjbGFzcz1cImticS1maWx0ZXItYmFyX19zZXBhcmF0b3JcIiBbdmVydGljYWxdPVwidHJ1ZVwiIC8+XG59XG5cbjxrYnEtZHJvcGRvd24gI3NhdmVkRmlsdGVycz1cImticURyb3Bkb3duXCIgW2NsYXNzXT1cIidrYnEtZmlsdGVyc19fZHJvcGRvd24nXCI+XG4gICAgPGRpdiBbc3R5bGUuZGlzcGxheV09XCJpc0VtcHR5ID8gJ25vbmUnIDogJ2luaXRpYWwnXCI+XG4gICAgICAgIDxrYnEtZm9ybS1maWVsZCBrYnFGb3JtRmllbGRXaXRob3V0Qm9yZGVycz5cbiAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLW1hZ25pZnlpbmctZ2xhc3NfMTZcIiBrYnFQcmVmaXg+PC9pPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjc2VhcmNoXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBrYnFJbnB1dFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgZmlsdGVyQmFyLmNvbmZpZ3VyYXRpb24uZmlsdGVycy5zZWFyY2hQbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzdG9wRXZlbnRQcm9wYWdhdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzZWFyY2hLZXlkb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8a2JxLWNsZWFuZXIgLz5cbiAgICAgICAgPC9rYnEtZm9ybS1maWVsZD5cblxuICAgICAgICA8a2JxLWRpdmlkZXIgLz5cblxuICAgICAgICBAZm9yIChmaWx0ZXIgb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmM7IHRyYWNrIGZpbHRlcikge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGticS1kcm9wZG93bi1pdGVtXG4gICAgICAgICAgICAgICAga2JxLXRpdGxlXG4gICAgICAgICAgICAgICAgW2NsYXNzLmticS1zZWxlY3RlZF09XCJmaWx0ZXJCYXIuZmlsdGVyPy5uYW1lID09PSBmaWx0ZXIubmFtZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEZpbHRlcihmaWx0ZXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBmaWx0ZXIubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVtcHR5IHtcbiAgICAgICAgICAgIDxidXR0b24ga2JxLWRyb3Bkb3duLWl0ZW0gW2Rpc2FibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmaWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLnNlYXJjaEVtcHR5UmVzdWx0IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxrYnEtZGl2aWRlciAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBrYnEtZHJvcGRvd24taXRlbSAoY2xpY2spPVwib3BlblNhdmVBc05ld0ZpbHRlclBvcG92ZXIoKVwiPlxuICAgICAgICA8aSBrYnEtaWNvbj1cImticS1wbHVzXzE2XCI+PC9pPlxuICAgICAgICB7eyBmaWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLnNhdmVBc05ld0ZpbHRlciB9fVxuICAgIDwvYnV0dG9uPlxuPC9rYnEtZHJvcGRvd24+XG5cbjxrYnEtZHJvcGRvd24gI2ZpbHRlckFjdGlvbnM9XCJrYnFEcm9wZG93blwiIFtjbGFzc109XCIna2JxLWZpbHRlcnNfX2Ryb3Bkb3duJ1wiPlxuICAgIEBpZiAoZmlsdGVyQmFyLmlzU2F2ZWRBbmRDaGFuZ2VkICYmICFmaWx0ZXJCYXIuaXNSZWFkT25seSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrYnEtZHJvcGRvd24taXRlbVxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAna2JxLWJ1dHRvbl9jaGFuZ2VkLXNhdmVkLWZpbHRlcic6IGZpbHRlckJhci5pc1NhdmVkQW5kQ2hhbmdlZCB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzYXZlQ2hhbmdlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtZmxvcHB5LWRpc2tfMTZcIj48L2k+XG4gICAgICAgICAgICB7eyBmaWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLnNhdmVDaGFuZ2VzIH19XG4gICAgICAgICAgICBAaWYgKGZpbHRlckJhci5pc1NhdmVkQW5kQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwia2JxIGticS1pY29uIGticS1pY29uLWJ1dHRvbiBrYnEtY2lyY2xlLXhzXzE2IGticS13YXJuaW5nIGxheW91dC1tYXJnaW4tbGVmdC14c1wiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIDxidXR0b24ga2JxLWRyb3Bkb3duLWl0ZW0gKGNsaWNrKT1cIm9wZW5TYXZlQXNOZXdGaWx0ZXJQb3BvdmVyKClcIj5cbiAgICAgICAgPGkga2JxLWljb249XCJrYnEtcGx1c18xNlwiPjwvaT5cbiAgICAgICAge3sgZmlsdGVyQmFyLmNvbmZpZ3VyYXRpb24uZmlsdGVycy5zYXZlQXNOZXcgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIEBpZiAoIWZpbHRlckJhci5pc1JlYWRPbmx5KSB7XG4gICAgICAgIDxidXR0b24ga2JxLWRyb3Bkb3duLWl0ZW0gKGNsaWNrKT1cIm9wZW5DaGFuZ2VGaWx0ZXJOYW1lUG9wb3ZlcigpXCI+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1wZW5jaWxfMTZcIj48L2k+XG4gICAgICAgICAgICB7eyBmaWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLmNoYW5nZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAaWYgKGZpbHRlckJhci5pc1NhdmVkQW5kQ2hhbmdlZCB8fCAhZmlsdGVyQmFyLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgPGticS1kaXZpZGVyIC8+XG4gICAgfVxuXG4gICAgQGlmIChmaWx0ZXJCYXIuaXNTYXZlZEFuZENoYW5nZWQpIHtcbiAgICAgICAgPGJ1dHRvbiBrYnEtZHJvcGRvd24taXRlbSAoY2xpY2spPVwicmVzZXRGaWx0ZXJDaGFuZ2VzKClcIj5cbiAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXhtYXJrLWNpcmNsZV8xNlwiPjwvaT5cbiAgICAgICAgICAgIHt7IGZpbHRlckJhci5jb25maWd1cmF0aW9uLmZpbHRlcnMucmVzZXRDaGFuZ2VzIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKCFmaWx0ZXJCYXIuaXNSZWFkT25seSkge1xuICAgICAgICA8YnV0dG9uIGticS1kcm9wZG93bi1pdGVtIChjbGljayk9XCJ0aGlzLm9uUmVtb3ZlRmlsdGVyLm5leHQodGhpcy5maWx0ZXIhKVwiPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtdHJhc2hfMTZcIj48L2k+XG4gICAgICAgICAgICB7eyBmaWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLnJlbW92ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2ticS1kcm9wZG93bj5cblxuPG5nLXRlbXBsYXRlICNzYXZlQXNOZXdQb3BvdmVySGVhZGVyPnt7IHBvcG92ZXJIZWFkZXIgfX08L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NhdmVBc05ld1BvcG92ZXJDb250ZW50PlxuICAgIEBpZiAoc2hvd0ZpbHRlclNhdmluZ0Vycm9yKSB7XG4gICAgICAgIDxrYnEtYWxlcnQgY2xhc3M9XCJsYXlvdXQtbWFyZ2luLWJvdHRvbS1tXCIgW2FsZXJ0Q29sb3JdPVwiJ2Vycm9yJ1wiIFthbGVydFN0eWxlXT1cIidjb2xvcmVkJ1wiIFtjb21wYWN0XT1cInRydWVcIj5cbiAgICAgICAgICAgIHt7IGZpbHRlclNhdmluZ0Vycm9yVGV4dCB9fVxuICAgICAgICA8L2ticS1hbGVydD5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImticS1mb3JtLXZlcnRpY2FsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZm9ybV9fcm93XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJrYnEtZm9ybV9fbGFiZWxcIj57eyBmaWx0ZXJCYXIuY29uZmlndXJhdGlvbi5maWx0ZXJzLm5hbWUgfX08L2xhYmVsPlxuXG4gICAgICAgICAgICA8a2JxLWZvcm0tZmllbGQgY2xhc3M9XCJrYnEtZm9ybV9fY29udHJvbFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjbmV3RmlsdGVyTmFtZSBrYnFJbnB1dCB0eXBlPVwidGV4dFwiIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJOYW1lXCIgLz5cblxuICAgICAgICAgICAgICAgIEBpZiAoZmlsdGVyTmFtZS5oYXNFcnJvcignZmlsdGVyTmFtZUFscmVhZHlFeGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxrYnEtaGludCBbY29sb3JdPVwiJ2Vycm9yJ1wiPnt7IGZpbHRlckJhci5jb25maWd1cmF0aW9uLmZpbHRlcnMuZXJyb3IgfX08L2ticS1oaW50PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzYXZlQXNOZXdQb3BvdmVyRm9vdGVyPlxuICAgIDxidXR0b24ga2JxLWJ1dHRvbiBjbGFzcz1cImxheW91dC1tYXJnaW4tcmlnaHQtbFwiIFtjb2xvcl09XCInY29udHJhc3QnXCIgW2ticVN0eWxlXT1cIidmaWxsZWQnXCIgKGNsaWNrKT1cInNhdmVBc05ldygpXCI+XG4gICAgICAgIHt7IGZpbHRlckJhci5jb25maWd1cmF0aW9uLmZpbHRlcnMuc2F2ZUJ1dHRvbiB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24ga2JxLWJ1dHRvbiBbY29sb3JdPVwiJ2NvbnRyYXN0LWZhZGUnXCIgW2ticVN0eWxlXT1cIidmaWxsZWQnXCIgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCI+XG4gICAgICAgIHt7IGZpbHRlckJhci5jb25maWd1cmF0aW9uLmZpbHRlcnMuY2FuY2VsQnV0dG9uIH19XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXJzLnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlcnMuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FB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LFNBQVM7Z0JBQ2tCLE9BQU87c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNXLFFBQVE7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNBLE1BQU07c0JBQWxDLFNBQVM7dUJBQUMsUUFBUTtnQkFDaUIsYUFBYTtzQkFBaEQsU0FBUzt1QkFBQyxlQUFlO2dCQW1CakIsT0FBTztzQkFBZixLQUFLO2dCQUdhLGNBQWM7c0JBQWhDLE1BQU07Z0JBRVksTUFBTTtzQkFBeEIsTUFBTTtnQkFFWSxjQUFjO3NCQUFoQyxNQUFNO2dCQUVZLFdBQVc7c0JBQTdCLE1BQU07Z0JBRVksY0FBYztzQkFBaEMsTUFBTTtnQkFFWSxvQkFBb0I7c0JBQXRDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLYnFBbGVydE1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9hbGVydCc7XG5pbXBvcnQgeyBLYnFCdXR0b24sIEticUJ1dHRvbk1vZHVsZSwgS2JxQnV0dG9uU3R5bGVzIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBLYnFDb21wb25lbnRDb2xvcnMsIEticUZvcm1zTW9kdWxlLCBQb3BVcFBsYWNlbWVudHMsIFBvcFVwU2l6ZXMgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFEaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2RpdmlkZXInO1xuaW1wb3J0IHsgS2JxRHJvcGRvd25Nb2R1bGUsIEticURyb3Bkb3duVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBLYnFGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxSW5wdXRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgS2JxUG9wb3Zlck1vZHVsZSwgS2JxUG9wb3ZlclRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBLYnFUaXRsZU1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90aXRsZSc7XG5pbXBvcnQgeyBLYnFUb29sdGlwVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLYnFGaWx0ZXJCYXIgfSBmcm9tICcuL2ZpbHRlci1iYXInO1xuaW1wb3J0IHsgS2JxRmlsdGVyQmFyQnV0dG9uIH0gZnJvbSAnLi9maWx0ZXItYmFyLWJ1dHRvbic7XG5pbXBvcnQgeyBLYnFGaWx0ZXIsIEticVNhdmVGaWx0ZXJFcnJvciwgS2JxU2F2ZUZpbHRlckV2ZW50IH0gZnJvbSAnLi9maWx0ZXItYmFyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBleHBvcnRBczogJ2ticUZpbHRlcnMnLFxuICAgIHNlbGVjdG9yOiAna2JxLWZpbHRlcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnZmlsdGVycy5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZmlsdGVycy5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWZpbHRlcnMnXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEticUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgS2JxRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIEticURpdmlkZXJNb2R1bGUsXG4gICAgICAgIEticUljb24sXG4gICAgICAgIEticVRpdGxlTW9kdWxlLFxuICAgICAgICBLYnFGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIEticUlucHV0TW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBLYnFGaWx0ZXJCYXJCdXR0b24sXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgS2JxVG9vbHRpcFRyaWdnZXIsXG4gICAgICAgIEticVBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBLYnFGb3Jtc01vZHVsZSxcbiAgICAgICAgS2JxQWxlcnRNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEticUZpbHRlcnMgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsYWNlbWVudHMgPSBQb3BVcFBsYWNlbWVudHM7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3R5bGVzID0gS2JxQnV0dG9uU3R5bGVzO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbG9ycyA9IEticUNvbXBvbmVudENvbG9ycztcblxuICAgIC8qKiBLYnFGaWx0ZXJCYXIgaW5zdGFuY2UgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyQmFyID0gaW5qZWN0KEticUZpbHRlckJhcik7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgQFZpZXdDaGlsZChLYnFCdXR0b24pIHByaXZhdGUgYnV0dG9uOiBLYnFCdXR0b247XG4gICAgQFZpZXdDaGlsZChLYnFQb3BvdmVyVHJpZ2dlcikgcHJpdmF0ZSBwb3BvdmVyOiBLYnFQb3BvdmVyVHJpZ2dlcjtcbiAgICBAVmlld0NoaWxkKEticURyb3Bkb3duVHJpZ2dlcikgcHJpdmF0ZSBkcm9wZG93bjogS2JxRHJvcGRvd25UcmlnZ2VyO1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaCcpIHByaXZhdGUgc2VhcmNoOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ25ld0ZpbHRlck5hbWUnKSBwcml2YXRlIG5ld0ZpbHRlck5hbWU6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogY29udHJvbCBmb3Igc2VhcmNoIGZpbHRlciAqL1xuICAgIHNlYXJjaENvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgICAvKiogZmlsdGVyZWQgYnkgc2VhcmNoIGZpbHRlcnMgKi9cbiAgICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8S2JxRmlsdGVyW10+O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwb3BvdmVyU2l6ZSA9IFBvcFVwU2l6ZXMuTWVkaXVtO1xuXG4gICAgLyoqIG5ldyBmaWx0ZXIgbmFtZSBmb3Igc2F2aW5nICovXG4gICAgZmlsdGVyTmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKiogdHJ1ZSBpZiBzYXZpbmcgYSBuZXcgZmlsdGVyLCBmYWxzZSBpZiBzYXZpbmcgY2hhbmdlcyBpbiBmaWx0ZXIgKi9cbiAgICBzYXZlTmV3RmlsdGVyOiBib29sZWFuO1xuXG4gICAgc2hvd0ZpbHRlclNhdmluZ0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgZmlsdGVyU2F2aW5nRXJyb3JUZXh0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBmaWx0ZXJzOiBLYnFGaWx0ZXJbXTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIGdlbmVyYXRlZCB3aGVuZXZlciB0aGUgdXNlciBzZWxlY3RzIGEgZmlsdGVyLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblNlbGVjdEZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxRmlsdGVyPigpO1xuICAgIC8qKiBFdmVudCB0aGF0IGlzIGdlbmVyYXRlZCB3aGVuZXZlciB0aGUgdXNlciBzYXZlIGEgZmlsdGVyLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEticVNhdmVGaWx0ZXJFdmVudD4oKTtcbiAgICAvKiogRXZlbnQgdGhhdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIHVzZXIgY2hhbmdlIGEgZmlsdGVyLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvbkNoYW5nZUZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxU2F2ZUZpbHRlckV2ZW50PigpO1xuICAgIC8qKiBFdmVudCB0aGF0IGlzIGdlbmVyYXRlZCB3aGVuZXZlciB0aGUgdXNlciBzYXZlcyBhIGZpbHRlciBhcyBuZXcuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uU2F2ZUFzTmV3ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFTYXZlRmlsdGVyRXZlbnQ+KCk7XG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgZ2VuZXJhdGVkIHdoZW5ldmVyIHRoZSB1c2VyIHJlbW92ZSBhIGZpbHRlci4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25SZW1vdmVGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbHRlcj4oKTtcbiAgICAvKiogRXZlbnQgdGhhdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIHVzZXIgcmVzZXQgYSBmaWx0ZXIgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25SZXNldEZpbHRlckNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPEticUZpbHRlciB8IG51bGw+KCk7XG5cbiAgICAvKiogaGVhZGVyIG9mIHBvcG92ZXIuIERlcGVuZHMgb24gdGhlIG1vZGUgKi9cbiAgICBnZXQgcG9wb3ZlckhlYWRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlTmV3RmlsdGVyID8gdGhpcy5sb2NhbGVEYXRhLnNhdmVBc05ldyA6IHRoaXMubG9jYWxlRGF0YS5zYXZlQ2hhbmdlcztcbiAgICB9XG5cbiAgICAvKiogQ29tcG9uZW50IHN0YXRlLiB0cnVlIGlmIG9wZW5lZCBkcm9wZG93biBvciBwb3B1cCAqL1xuICAgIGdldCBvcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcG92ZXI/LmlzT3BlbiB8fCB0aGlzLmRyb3Bkb3duPy5vcGVuZWQ7XG4gICAgfVxuXG4gICAgLyoqIFNlbGVjdGVkIGZpbHRlciAqL1xuICAgIGdldCBmaWx0ZXIoKTogS2JxRmlsdGVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckJhci5maWx0ZXI7XG4gICAgfVxuXG4gICAgLyoqIENvbXBvbmVudCBzdGF0ZS4gVHJ1ZSBpZiAnZmlsdGVycycgaW5wdXQgY29udGFpbnMgbm8gZWxlbWVudHMuICovXG4gICAgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBsb2NhbGl6ZWQgZGF0YVxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgbG9jYWxlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyQmFyLmNvbmZpZ3VyYXRpb24uZmlsdGVycztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gbWVyZ2UoXG4gICAgICAgICAgICBvZih0aGlzLmZpbHRlcnMpLFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgodmFsdWUpID0+IHRoaXMuZ2V0RmlsdGVyZWRPcHRpb25zKHZhbHVlKSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2VsZWN0RmlsdGVyKGZpbHRlcjogS2JxRmlsdGVyKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQmFyLmludGVybmFsRmlsdGVyQ2hhbmdlcy5uZXh0KHN0cnVjdHVyZWRDbG9uZShmaWx0ZXIpKTtcblxuICAgICAgICB0aGlzLmZpbHRlckJhci5zYXZlRmlsdGVyU3RhdGUoKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdEZpbHRlci5uZXh0KGZpbHRlcik7XG4gICAgfVxuXG4gICAgc2F2ZUNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJCYXIuZmlsdGVyKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuZmlsdGVyLnNhdmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5maWx0ZXJCYXIuZmlsdGVyLmNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmZpbHRlckJhci5zYXZlRmlsdGVyU3RhdGUoKTtcblxuICAgICAgICB0aGlzLmZpbHRlckJhci5pbnRlcm5hbEZpbHRlckNoYW5nZXMubmV4dCh0aGlzLmZpbHRlckJhci5maWx0ZXIpO1xuXG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQoeyBmaWx0ZXI6IHRoaXMuZmlsdGVyQmFyLmZpbHRlciwgZmlsdGVyQmFyOiB0aGlzLmZpbHRlckJhciB9KTtcbiAgICB9XG5cbiAgICBzYXZlQXNOZXcoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlck5hbWUuaW52YWxpZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmZpbHRlck5hbWUudmFsdWUgfHwgJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuc2F2ZU5ld0ZpbHRlcikge1xuICAgICAgICAgICAgLy8gQHRvZG8gZGVmYXVsdCBmaWx0ZXJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHN0cnVjdHVyZWRDbG9uZTxLYnFGaWx0ZXI+KHRoaXMuZmlsdGVyIGFzIEticUZpbHRlcikgfHwgeyBwaXBlczogW10gfTtcblxuICAgICAgICAgICAgZmlsdGVyLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgZmlsdGVyLnNhdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpbHRlci5jaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMub25TYXZlQXNOZXcuZW1pdCh7IGZpbHRlciwgZmlsdGVyQmFyOiB0aGlzLmZpbHRlckJhciB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQmFyLmZpbHRlciEubmFtZSA9IG5hbWU7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckJhci5maWx0ZXIhLnNhdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQmFyLmZpbHRlciEuY2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHsgZmlsdGVyOiB0aGlzLmZpbHRlckJhci5maWx0ZXIsIGZpbHRlckJhcjogdGhpcy5maWx0ZXJCYXIgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93RXJyb3IoZXJyb3I/OiBLYnFTYXZlRmlsdGVyRXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yPy5uYW1lQWxyZWFkeUV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJOYW1lLnNldEVycm9ycyh7IGZpbHRlck5hbWVBbHJlYWR5RXhpc3Q6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dGaWx0ZXJTYXZpbmdFcnJvciA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJTYXZpbmdFcnJvclRleHQgPSBlcnJvcj8udGV4dCA/PyB0aGlzLmZpbHRlckJhci5jb25maWd1cmF0aW9uLmZpbHRlcnMuZXJyb3JIaW50O1xuICAgIH1cblxuICAgIHJlc3RvcmVGb2N1cygpIHtcbiAgICAgICAgdGhpcy5idXR0b24uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcmVwYXJlUG9wb3ZlcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJOYW1lID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4odGhpcy5maWx0ZXI/Lm5hbWUgfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyTmFtZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+ICh0aGlzLnNob3dGaWx0ZXJTYXZpbmdFcnJvciA9IGZhbHNlKSk7XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyLnNob3coKTtcblxuICAgICAgICBtZXJnZSguLi50aGlzLnBvcG92ZXIuZGVmYXVsdENsb3NpbmdBY3Rpb25zKCkpLnN1YnNjcmliZSh0aGlzLmNsb3NlUG9wb3Zlcik7XG4gICAgICAgIHRoaXMucG9wb3Zlci52aXNpYmxlQ2hhbmdlLnBpcGUoZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlKSkuc3Vic2NyaWJlKHRoaXMuY2xvc2VQb3BvdmVyKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubmV3RmlsdGVyTmFtZS5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xuICAgIH1cblxuICAgIG9wZW5TYXZlQXNOZXdGaWx0ZXJQb3BvdmVyKCkge1xuICAgICAgICB0aGlzLnNhdmVOZXdGaWx0ZXIgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucHJlcGFyZVBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBvcGVuQ2hhbmdlRmlsdGVyTmFtZVBvcG92ZXIoKSB7XG4gICAgICAgIHRoaXMuc2F2ZU5ld0ZpbHRlciA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMucHJlcGFyZVBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBjbG9zZVBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucG9wb3Zlci5oaWRlKCk7XG5cbiAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZWFyY2hLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvbkRyb3Bkb3duT3BlbigpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xuICAgIH1cblxuICAgIHJlc2V0RmlsdGVyQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCYXIucmVzZXRGaWx0ZXJDaGFuZ2VkU3RhdGUoKTtcblxuICAgICAgICB0aGlzLm9uUmVzZXRGaWx0ZXJDaGFuZ2VzLmVtaXQodGhpcy5maWx0ZXIhKTtcbiAgICB9XG5cbiAgICAvKiogSGlkZSB0aGUgcG9wdXAgYW5kIHJlc3RvcmUgZm9jdXMuXG4gICAgICogVXNlIHRoaXMgbWV0aG9kIGluIHRoZSBvblNhdmUsIG9uU2F2ZUFzTmV3LCBvciBvbkNoYW5nZUZpbHRlciBldmVudHMgYWZ0ZXIgdGhlIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNhdmVkLiAqL1xuICAgIGZpbHRlclNhdmVkU3VjY2Vzc2Z1bGx5KCkge1xuICAgICAgICB0aGlzLnBvcG92ZXIuaGlkZSgpO1xuICAgICAgICB0aGlzLnJlc3RvcmVGb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBTaG93cyBhbiBlcnJvci4gVXNlIHRoaXMgbWV0aG9kIGluIHRoZSBvblNhdmUsIG9uU2F2ZUFzTmV3LCBvciBvbkNoYW5nZUZpbHRlciBldmVudHMgaWYgc2F2aW5nIGRhdGEgZmFpbGVkLiAqL1xuICAgIGZpbHRlclNhdmVkVW5zdWNjZXNzZnVsbHkoZXJyb3I/OiBLYnFTYXZlRmlsdGVyRXJyb3IpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmlsdGVyZWRPcHRpb25zKHZhbHVlKTogS2JxRmlsdGVyW10ge1xuICAgICAgICBjb25zdCBzZWFyY2hGaWx0ZXIgPSB2YWx1ZSAmJiB2YWx1ZS5uZXcgPyB2YWx1ZS52YWx1ZSA6IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBzZWFyY2hGaWx0ZXJcbiAgICAgICAgICAgID8gdGhpcy5maWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaEZpbHRlci50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgICAgIDogdGhpcy5maWx0ZXJzO1xuICAgIH1cbn1cbiIsIjxidXR0b25cbiAgICBrYnEtYnV0dG9uXG4gICAga2JxLXRpdGxlXG4gICAga2JxRmlsdGVyQmFyQnV0dG9uXG4gICAga2JxUG9wb3ZlclxuICAgIFtrYnFEcm9wZG93blRyaWdnZXJGb3JdPVwic2F2ZWRGaWx0ZXJzXCJcbiAgICBba2JxUG9wb3ZlckFycm93XT1cImZhbHNlXCJcbiAgICBba2JxUG9wb3ZlckNsYXNzXT1cIidrYnEtZmlsdGVyc19fc2F2ZS1hcy1uZXctZmlsdGVyLXBvcG92ZXInXCJcbiAgICBba2JxUG9wb3ZlckNvbnRlbnRdPVwic2F2ZUFzTmV3UG9wb3ZlckNvbnRlbnRcIlxuICAgIFtrYnFQb3BvdmVyRm9vdGVyXT1cInNhdmVBc05ld1BvcG92ZXJGb290ZXJcIlxuICAgIFtrYnFQb3BvdmVySGVhZGVyXT1cInNhdmVBc05ld1BvcG92ZXJIZWFkZXJcIlxuICAgIFtrYnFQb3BvdmVyUGxhY2VtZW50XT1cInBsYWNlbWVudHMuQm90dG9tTGVmdFwiXG4gICAgW2ticVBvcG92ZXJQbGFjZW1lbnRQcmlvcml0eV09XCJbcGxhY2VtZW50cy5Cb3R0b21MZWZ0LCBwbGFjZW1lbnRzLlRvcExlZnRdXCJcbiAgICBba2JxUG9wb3ZlclNpemVdPVwicG9wb3ZlclNpemVcIlxuICAgIFtrYnFUcmlnZ2VyXT1cIidtYW51YWwnXCJcbiAgICBbbmdDbGFzc109XCJ7ICdrYnEtYWN0aXZlJzogb3BlbmVkIH1cIlxuICAgIChkcm9wZG93bkNsb3NlZCk9XCJzZWFyY2hDb250cm9sLnNldFZhbHVlKCcnKVwiXG4gICAgKGRyb3Bkb3duT3BlbmVkKT1cIm9uRHJvcGRvd25PcGVuKClcIlxuPlxuICAgIDxzcGFuICNrYnFUaXRsZVRleHQgY2xhc3M9XCJrYnEtZmlsdGVyc19fZmlsdGVyLW5hbWVcIj5cbiAgICAgICAgQGlmIChmaWx0ZXI/Lm5hbWUpIHtcbiAgICAgICAgICAgIHt7IGZpbHRlciEubmFtZSB9fVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWxpc3RfMTZcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgbG9jYWxlRGF0YS5kZWZhdWx0TmFtZSB9fVxuICAgICAgICAgICAgPC9uZy1jb250ZW50PlxuICAgICAgICB9XG4gICAgPC9zcGFuPlxuPC9idXR0b24+XG5cbkBpZiAoZmlsdGVyQmFyLmlzQ2hhbmdlZCAmJiAhZmlsdGVyQmFyLmlzU2F2ZWQpIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGticS1idXR0b25cbiAgICAgICAga2JxRmlsdGVyQmFyQnV0dG9uXG4gICAgICAgIGticVRvb2x0aXA9XCJ7eyBsb2NhbGVEYXRhLnNhdmVOZXdGaWx0ZXJUb29sdGlwIH19XCJcbiAgICAgICAgY2xhc3M9XCJrYnEtYnV0dG9uX2FjdGlvblwiXG4gICAgICAgIFtjb2xvcl09XCJjb2xvcnMuRW1wdHlcIlxuICAgICAgICAoY2xpY2spPVwib3BlblNhdmVBc05ld0ZpbHRlclBvcG92ZXIoKVwiXG4gICAgPlxuICAgICAgICA8aSBrYnEtaWNvbj1cImticS1mbG9wcHktZGlza18xNlwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbn1cblxuQGlmIChmaWx0ZXJCYXIuaXNTYXZlZCkge1xuICAgIDxidXR0b25cbiAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICBrYnFGaWx0ZXJCYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJrYnEtYnV0dG9uX2FjdGlvblwiXG4gICAgICAgIFtjb2xvcl09XCJjb2xvcnMuRW1wdHlcIlxuICAgICAgICBba2JxRHJvcGRvd25UcmlnZ2VyRm9yXT1cImZpbHRlckFjdGlvbnNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdrYnEtYnV0dG9uX2NoYW5nZWQtc2F2ZWQtZmlsdGVyJzogZmlsdGVyQmFyLmlzU2F2ZWRBbmRDaGFuZ2VkIH1cIlxuICAgID5cbiAgICAgICAgPGkga2JxLWljb249XCJrYnEtZWxsaXBzaXMtdmVydGljYWxfMTZcIj48L2k+XG4gICAgPC9idXR0b24+XG5cbiAgICA8aSBrYnEtaWNvbj1cImticS1jaGV2cm9uLXJpZ2h0LXNfMTZcIiBjbGFzcz1cImticS1maWx0ZXItYmFyX19hcnJvd1wiIFtjb2xvcl09XCIndGhlbWUnXCI+PC9pPlxufSBAZWxzZSB7XG4gICAgPGticS1kaXZpZGVyIGNsYXNzPVwia2JxLWZpbHRlci1iYXJfX3NlcGFyYXRvclwiIFt2ZXJ0aWNhbF09XCJ0cnVlXCIgLz5cbn1cblxuPGticS1kcm9wZG93biAjc2F2ZWRGaWx0ZXJzPVwia2JxRHJvcGRvd25cIiBbY2xhc3NdPVwiJ2ticS1maWx0ZXJzX19kcm9wZG93bidcIj5cbiAgICA8ZGl2IFtzdHlsZS5kaXNwbGF5XT1cImlzRW1wdHkgPyAnbm9uZScgOiAnaW5pdGlhbCdcIj5cbiAgICAgICAgPGticS1mb3JtLWZpZWxkIGticUZvcm1GaWVsZFdpdGhvdXRCb3JkZXJzPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtbWFnbmlmeWluZy1nbGFzc18xNlwiIGticVByZWZpeD48L2k+XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNzZWFyY2hcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIGticUlucHV0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBsb2NhbGVEYXRhLnNlYXJjaFBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN0b3BFdmVudFByb3BhZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInNlYXJjaEtleWRvd25IYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxrYnEtY2xlYW5lciAvPlxuICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxrYnEtZGl2aWRlciAvPlxuXG4gICAgICAgIEBmb3IgKGZpbHRlciBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luYzsgdHJhY2sgZmlsdGVyKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAga2JxLWRyb3Bkb3duLWl0ZW1cbiAgICAgICAgICAgICAgICBrYnEtdGl0bGVcbiAgICAgICAgICAgICAgICBbY2xhc3Mua2JxLXNlbGVjdGVkXT1cImZpbHRlckJhci5maWx0ZXI/Lm5hbWUgPT09IGZpbHRlci5uYW1lXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmlsdGVyKGZpbHRlcilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGZpbHRlci5uYW1lIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgPGJ1dHRvbiBrYnEtZHJvcGRvd24taXRlbSBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IGxvY2FsZURhdGEuc2VhcmNoRW1wdHlSZXN1bHQgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgPGticS1kaXZpZGVyIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIGticS1kcm9wZG93bi1pdGVtIChjbGljayk9XCJvcGVuU2F2ZUFzTmV3RmlsdGVyUG9wb3ZlcigpXCI+XG4gICAgICAgIDxpIGticS1pY29uPVwia2JxLXBsdXNfMTZcIj48L2k+XG4gICAgICAgIHt7IGxvY2FsZURhdGEuc2F2ZUFzTmV3RmlsdGVyIH19XG4gICAgPC9idXR0b24+XG48L2ticS1kcm9wZG93bj5cblxuPGticS1kcm9wZG93biAjZmlsdGVyQWN0aW9ucz1cImticURyb3Bkb3duXCIgW2NsYXNzXT1cIidrYnEtZmlsdGVyc19fZHJvcGRvd24nXCI+XG4gICAgQGlmIChmaWx0ZXJCYXIuaXNTYXZlZEFuZENoYW5nZWQgJiYgIWZpbHRlckJhci5pc1JlYWRPbmx5KSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGticS1kcm9wZG93bi1pdGVtXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdrYnEtYnV0dG9uX2NoYW5nZWQtc2F2ZWQtZmlsdGVyJzogZmlsdGVyQmFyLmlzU2F2ZWRBbmRDaGFuZ2VkIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS1mbG9wcHktZGlza18xNlwiPjwvaT5cbiAgICAgICAgICAgIHt7IGxvY2FsZURhdGEuc2F2ZUNoYW5nZXMgfX1cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyQmFyLmlzU2F2ZWRBbmRDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEga2JxLWljb24ga2JxLWljb24tYnV0dG9uIGticS1jaXJjbGUteHNfMTYga2JxLXdhcm5pbmcgbGF5b3V0LW1hcmdpbi1sZWZ0LXhzXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgPGJ1dHRvbiBrYnEtZHJvcGRvd24taXRlbSAoY2xpY2spPVwib3BlblNhdmVBc05ld0ZpbHRlclBvcG92ZXIoKVwiPlxuICAgICAgICA8aSBrYnEtaWNvbj1cImticS1wbHVzXzE2XCI+PC9pPlxuICAgICAgICB7eyBsb2NhbGVEYXRhLnNhdmVBc05ldyB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgQGlmICghZmlsdGVyQmFyLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgPGJ1dHRvbiBrYnEtZHJvcGRvd24taXRlbSAoY2xpY2spPVwib3BlbkNoYW5nZUZpbHRlck5hbWVQb3BvdmVyKClcIj5cbiAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXBlbmNpbF8xNlwiPjwvaT5cbiAgICAgICAgICAgIHt7IGxvY2FsZURhdGEuY2hhbmdlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBpZiAoZmlsdGVyQmFyLmlzU2F2ZWRBbmRDaGFuZ2VkIHx8ICFmaWx0ZXJCYXIuaXNSZWFkT25seSkge1xuICAgICAgICA8a2JxLWRpdmlkZXIgLz5cbiAgICB9XG5cbiAgICBAaWYgKGZpbHRlckJhci5pc1NhdmVkQW5kQ2hhbmdlZCkge1xuICAgICAgICA8YnV0dG9uIGticS1kcm9wZG93bi1pdGVtIChjbGljayk9XCJyZXNldEZpbHRlckNoYW5nZXMoKVwiPlxuICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEteG1hcmstY2lyY2xlXzE2XCI+PC9pPlxuICAgICAgICAgICAge3sgbG9jYWxlRGF0YS5yZXNldENoYW5nZXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoIWZpbHRlckJhci5pc1JlYWRPbmx5KSB7XG4gICAgICAgIDxidXR0b24ga2JxLWRyb3Bkb3duLWl0ZW0gKGNsaWNrKT1cInRoaXMub25SZW1vdmVGaWx0ZXIubmV4dCh0aGlzLmZpbHRlciEpXCI+XG4gICAgICAgICAgICA8aSBrYnEtaWNvbj1cImticS10cmFzaF8xNlwiPjwvaT5cbiAgICAgICAgICAgIHt7IGxvY2FsZURhdGEucmVtb3ZlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwva2JxLWRyb3Bkb3duPlxuXG48bmctdGVtcGxhdGUgI3NhdmVBc05ld1BvcG92ZXJIZWFkZXI+e3sgcG9wb3ZlckhlYWRlciB9fTwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2F2ZUFzTmV3UG9wb3ZlckNvbnRlbnQ+XG4gICAgQGlmIChzaG93RmlsdGVyU2F2aW5nRXJyb3IpIHtcbiAgICAgICAgPGticS1hbGVydCBjbGFzcz1cImxheW91dC1tYXJnaW4tYm90dG9tLW1cIiBbYWxlcnRDb2xvcl09XCInZXJyb3InXCIgW2FsZXJ0U3R5bGVdPVwiJ2NvbG9yZWQnXCIgW2NvbXBhY3RdPVwidHJ1ZVwiPlxuICAgICAgICAgICAge3sgZmlsdGVyU2F2aW5nRXJyb3JUZXh0IH19XG4gICAgICAgIDwva2JxLWFsZXJ0PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwia2JxLWZvcm0tdmVydGljYWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImticS1mb3JtX19yb3dcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImticS1mb3JtX19sYWJlbFwiPnt7IGxvY2FsZURhdGEubmFtZSB9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgIDxrYnEtZm9ybS1maWVsZCBjbGFzcz1cImticS1mb3JtX19jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0ICNuZXdGaWx0ZXJOYW1lIGticUlucHV0IHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cImZpbHRlck5hbWVcIiAvPlxuXG4gICAgICAgICAgICAgICAgQGlmIChmaWx0ZXJOYW1lLmhhc0Vycm9yKCdmaWx0ZXJOYW1lQWxyZWFkeUV4aXN0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgPGticS1oaW50IFtjb2xvcl09XCInZXJyb3InXCI+e3sgbG9jYWxlRGF0YS5lcnJvciB9fTwva2JxLWhpbnQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9rYnEtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NhdmVBc05ld1BvcG92ZXJGb290ZXI+XG4gICAgPGJ1dHRvbiBrYnEtYnV0dG9uIGNsYXNzPVwibGF5b3V0LW1hcmdpbi1yaWdodC1sXCIgW2NvbG9yXT1cIidjb250cmFzdCdcIiBba2JxU3R5bGVdPVwiJ2ZpbGxlZCdcIiAoY2xpY2spPVwic2F2ZUFzTmV3KClcIj5cbiAgICAgICAge3sgbG9jYWxlRGF0YS5zYXZlQnV0dG9uIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBrYnEtYnV0dG9uIFtjb2xvcl09XCInY29udHJhc3QtZmFkZSdcIiBba2JxU3R5bGVdPVwiJ2ZpbGxlZCdcIiAoY2xpY2spPVwiY2xvc2VQb3BvdmVyKClcIj5cbiAgICAgICAge3sgbG9jYWxlRGF0YS5jYW5jZWxCdXR0b24gfX1cbiAgICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|