@agorapulse/ui-components 18.1.1 → 18.1.3

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.
Files changed (28) hide show
  1. package/action-dropdown/action-dropdown-trigger.directive.d.ts +17 -0
  2. package/action-dropdown/action-dropdown.component.d.ts +85 -0
  3. package/{popover-menu → action-dropdown}/index.d.ts +1 -1
  4. package/action-dropdown/public_api.d.ts +2 -0
  5. package/agorapulse-ui-components-18.1.3.tgz +0 -0
  6. package/esm2022/action-dropdown/action-dropdown-trigger.directive.mjs +54 -0
  7. package/esm2022/action-dropdown/action-dropdown.component.mjs +270 -0
  8. package/esm2022/action-dropdown/agorapulse-ui-components-action-dropdown.mjs +5 -0
  9. package/esm2022/action-dropdown/public_api.mjs +3 -0
  10. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +16 -6
  11. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +329 -0
  12. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -0
  13. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +16 -15
  14. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  15. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +4 -2
  16. package/package.json +13 -13
  17. package/agorapulse-ui-components-18.1.1.tgz +0 -0
  18. package/esm2022/nav-selector/nav-selector-leaf-action/nav-selector-leaf-action.component.mjs +0 -13
  19. package/esm2022/popover-menu/agorapulse-ui-components-popover-menu.mjs +0 -5
  20. package/esm2022/popover-menu/popover-menu-trigger.directive.mjs +0 -58
  21. package/esm2022/popover-menu/popover-menu.component.mjs +0 -207
  22. package/esm2022/popover-menu/public_api.mjs +0 -3
  23. package/fesm2022/agorapulse-ui-components-popover-menu.mjs +0 -270
  24. package/fesm2022/agorapulse-ui-components-popover-menu.mjs.map +0 -1
  25. package/nav-selector/nav-selector-leaf-action/nav-selector-leaf-action.component.d.ts +0 -7
  26. package/popover-menu/popover-menu-trigger.directive.d.ts +0 -15
  27. package/popover-menu/popover-menu.component.d.ts +0 -47
  28. package/popover-menu/public_api.d.ts +0 -2
@@ -0,0 +1,17 @@
1
+ import { ActionDropdownComponent } from './action-dropdown.component';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Directive that turns any element into a trigger for an ActionDropdown component.
5
+ * Handles click and keyboard interactions to open/close the dropdown.
6
+ */
7
+ export declare class ActionDropdownTriggerDirective {
8
+ private readonly elementRef;
9
+ /** Reference to the ActionDropdown component that this trigger controls */
10
+ apActionDropdownTrigger: import("@angular/core").InputSignal<ActionDropdownComponent>;
11
+ /** Handles click events to toggle the dropdown */
12
+ onClick(event: MouseEvent): void;
13
+ /** Handles keyboard events for accessibility (Enter, Space, Arrow Down, Escape) */
14
+ onKeyDown(event: KeyboardEvent): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionDropdownTriggerDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ActionDropdownTriggerDirective, "[apActionDropdownTrigger]", never, { "apActionDropdownTrigger": { "alias": "apActionDropdownTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
17
+ }
@@ -0,0 +1,85 @@
1
+ import { agorapulseSymbol, SymbolColor } from '@agorapulse/ui-symbol';
2
+ import { TemplateRef } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export interface ActionDropdownItem {
5
+ /** Unique identifier for the item */
6
+ name?: string;
7
+ /** Display text for the item */
8
+ label?: string;
9
+ /** Secondary text displayed below the label */
10
+ description?: string;
11
+ /** Text displayed in a badge next to the item */
12
+ badgeLabel?: string;
13
+ /** Whether to show a feature lock icon */
14
+ featureLockEnabled?: boolean;
15
+ /** Whether to apply red styling for destructive actions */
16
+ redModeEnabled?: boolean;
17
+ /** Tooltip text displayed when hovering over the item */
18
+ itemTooltipText?: string;
19
+ /** Icon symbol identifier displayed at the start of the item */
20
+ startSymbolId?: agorapulseSymbol;
21
+ /** Color theme for the start symbol */
22
+ startSymbolColor?: SymbolColor;
23
+ /** Tooltip text for the start symbol */
24
+ startSymbolTooltipText?: string;
25
+ /** Icon symbol identifier displayed at the end of the item */
26
+ endSymbolId?: agorapulseSymbol;
27
+ /** Tooltip text for the end symbol */
28
+ endSymbolTooltipText?: string;
29
+ /** Whether the item is disabled and non-interactive */
30
+ disabled?: boolean;
31
+ /** Whether to render this item as a visual divider */
32
+ divider?: boolean;
33
+ }
34
+ /**
35
+ * A dropdown component that displays a list of actionable items with support for icons,
36
+ * badges, tooltips, and keyboard navigation.
37
+ */
38
+ export declare class ActionDropdownComponent {
39
+ private readonly elementRef;
40
+ private readonly overlay;
41
+ private readonly positionBuilder;
42
+ private readonly viewContainerRef;
43
+ actionDropdownTemplate: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
44
+ trigger: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
45
+ /** Array of items to display in the dropdown menu */
46
+ items: import("@angular/core").InputSignal<ActionDropdownItem[]>;
47
+ /** Whether the dropdown is disabled and cannot be opened */
48
+ disabled: import("@angular/core").InputSignal<boolean>;
49
+ /** Whether to enable large mode styling for the dropdown */
50
+ largeModeEnabled: import("@angular/core").InputSignal<boolean>;
51
+ /** Whether to show a backdrop that closes the dropdown when clicked */
52
+ showBackdrop: import("@angular/core").InputSignal<boolean>;
53
+ /** Custom width for the dropdown menu in pixels */
54
+ customWidth: import("@angular/core").InputSignal<number | null>;
55
+ /** Default position for the dropdown relative to the trigger element */
56
+ defaultPosition: import("@angular/core").InputSignal<"left" | "right">;
57
+ /** Emits when a dropdown item is clicked */
58
+ itemClick: import("@angular/core").OutputEmitterRef<ActionDropdownItem>;
59
+ /** Emits when the dropdown menu is opened */
60
+ opened: import("@angular/core").OutputEmitterRef<void>;
61
+ /** Emits when the dropdown menu is closed */
62
+ closed: import("@angular/core").OutputEmitterRef<void>;
63
+ private overlayRef;
64
+ private portal;
65
+ protected readonly isOpen: import("@angular/core").WritableSignal<boolean>;
66
+ protected readonly focusedIndex: import("@angular/core").WritableSignal<number>;
67
+ protected readonly itemsWithoutDividers: import("@angular/core").Signal<ActionDropdownItem[]>;
68
+ constructor();
69
+ /** Opens the dropdown menu at the specified trigger element or component's element */
70
+ open(triggerElement?: HTMLElement): void;
71
+ /** Closes the dropdown menu and cleans up overlay resources */
72
+ close(): void;
73
+ /** Toggles the dropdown menu open or closed state */
74
+ toggle(triggerElement?: HTMLElement): void;
75
+ /** Handles item click events, emitting the selected item and closing the dropdown */
76
+ onItemClick(item: ActionDropdownItem): void;
77
+ /** Handles keyboard navigation within the dropdown menu */
78
+ onKeyDown(event: KeyboardEvent): void;
79
+ /** Creates positioning strategy for the overlay based on trigger element and default position */
80
+ private createPositionStrategy;
81
+ /** Sets up keyboard event handling for the opened dropdown */
82
+ private setupKeyboardNavigation;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionDropdownComponent, never>;
84
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionDropdownComponent, "ap-action-dropdown", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "largeModeEnabled": { "alias": "largeModeEnabled"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "customWidth": { "alias": "customWidth"; "required": false; "isSignal": true; }; "defaultPosition": { "alias": "defaultPosition"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "opened": "opened"; "closed": "closed"; }, ["trigger"], never, true, never>;
85
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
- /// <amd-module name="@agorapulse/ui-components/popover-menu" />
4
+ /// <amd-module name="@agorapulse/ui-components/action-dropdown" />
5
5
  export * from './public_api';
@@ -0,0 +1,2 @@
1
+ export { ActionDropdownTriggerDirective } from './action-dropdown-trigger.directive';
2
+ export { ActionDropdownComponent, ActionDropdownItem } from './action-dropdown.component';
@@ -0,0 +1,54 @@
1
+ import { Directive, ElementRef, HostListener, inject, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Directive that turns any element into a trigger for an ActionDropdown component.
5
+ * Handles click and keyboard interactions to open/close the dropdown.
6
+ */
7
+ export class ActionDropdownTriggerDirective {
8
+ elementRef = inject((ElementRef));
9
+ /** Reference to the ActionDropdown component that this trigger controls */
10
+ apActionDropdownTrigger = input.required();
11
+ /** Handles click events to toggle the dropdown */
12
+ onClick(event) {
13
+ event.preventDefault();
14
+ event.stopPropagation();
15
+ const actionDropdown = this.apActionDropdownTrigger();
16
+ if (actionDropdown) {
17
+ actionDropdown.toggle(this.elementRef.nativeElement);
18
+ }
19
+ }
20
+ /** Handles keyboard events for accessibility (Enter, Space, Arrow Down, Escape) */
21
+ onKeyDown(event) {
22
+ const actionDropdown = this.apActionDropdownTrigger();
23
+ if (actionDropdown) {
24
+ switch (event.key) {
25
+ case 'Enter':
26
+ case ' ':
27
+ case 'ArrowDown':
28
+ event.preventDefault();
29
+ actionDropdown.open(this.elementRef.nativeElement);
30
+ break;
31
+ case 'Escape':
32
+ event.preventDefault();
33
+ actionDropdown.close();
34
+ break;
35
+ }
36
+ }
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionDropdownTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.9", type: ActionDropdownTriggerDirective, isStandalone: true, selector: "[apActionDropdownTrigger]", inputs: { apActionDropdownTrigger: { classPropertyName: "apActionDropdownTrigger", publicName: "apActionDropdownTrigger", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionDropdownTriggerDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{
44
+ selector: '[apActionDropdownTrigger]',
45
+ standalone: true,
46
+ }]
47
+ }], propDecorators: { onClick: [{
48
+ type: HostListener,
49
+ args: ['click', ['$event']]
50
+ }], onKeyDown: [{
51
+ type: HostListener,
52
+ args: ['keydown', ['$event']]
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRyb3Bkb3duLXRyaWdnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL2FjdGlvbi1kcm9wZG93bi9zcmMvYWN0aW9uLWRyb3Bkb3duLXRyaWdnZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUduRjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sOEJBQThCO0lBQ3RCLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUU5RCwyRUFBMkU7SUFDM0UsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBMkIsQ0FBQztJQUVwRSxrREFBa0Q7SUFFbEQsT0FBTyxDQUFDLEtBQWlCO1FBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDdEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQixjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNMLENBQUM7SUFFRCxtRkFBbUY7SUFFbkYsU0FBUyxDQUFDLEtBQW9CO1FBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3RELElBQUksY0FBYyxFQUFFLENBQUM7WUFDakIsUUFBUSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssT0FBTyxDQUFDO2dCQUNiLEtBQUssR0FBRyxDQUFDO2dCQUNULEtBQUssV0FBVztvQkFDWixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbkQsTUFBTTtnQkFFVixLQUFLLFFBQVE7b0JBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLE1BQU07WUFDZCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7dUdBckNRLDhCQUE4QjsyRkFBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUoxQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFTRyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWFqQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbkRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50JztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdGhhdCB0dXJucyBhbnkgZWxlbWVudCBpbnRvIGEgdHJpZ2dlciBmb3IgYW4gQWN0aW9uRHJvcGRvd24gY29tcG9uZW50LlxuICogSGFuZGxlcyBjbGljayBhbmQga2V5Ym9hcmQgaW50ZXJhY3Rpb25zIHRvIG9wZW4vY2xvc2UgdGhlIGRyb3Bkb3duLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1thcEFjdGlvbkRyb3Bkb3duVHJpZ2dlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbkRyb3Bkb3duVHJpZ2dlckRpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIEFjdGlvbkRyb3Bkb3duIGNvbXBvbmVudCB0aGF0IHRoaXMgdHJpZ2dlciBjb250cm9scyAqL1xuICAgIGFwQWN0aW9uRHJvcGRvd25UcmlnZ2VyID0gaW5wdXQucmVxdWlyZWQ8QWN0aW9uRHJvcGRvd25Db21wb25lbnQ+KCk7XG5cbiAgICAvKiogSGFuZGxlcyBjbGljayBldmVudHMgdG8gdG9nZ2xlIHRoZSBkcm9wZG93biAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IGFjdGlvbkRyb3Bkb3duID0gdGhpcy5hcEFjdGlvbkRyb3Bkb3duVHJpZ2dlcigpO1xuICAgICAgICBpZiAoYWN0aW9uRHJvcGRvd24pIHtcbiAgICAgICAgICAgIGFjdGlvbkRyb3Bkb3duLnRvZ2dsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgZm9yIGFjY2Vzc2liaWxpdHkgKEVudGVyLCBTcGFjZSwgQXJyb3cgRG93biwgRXNjYXBlKSAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3Rpb25Ecm9wZG93biA9IHRoaXMuYXBBY3Rpb25Ecm9wZG93blRyaWdnZXIoKTtcbiAgICAgICAgaWYgKGFjdGlvbkRyb3Bkb3duKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25Ecm9wZG93bi5vcGVuKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25Ecm9wZG93bi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,270 @@
1
+ import { BadgeComponent } from '@agorapulse/ui-components/badge';
2
+ import { TooltipDirective } from '@agorapulse/ui-components/tooltip';
3
+ import { apFeatureLock, apInfo, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';
4
+ import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
5
+ import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { CommonModule } from '@angular/common';
7
+ import { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, inject, input, output, signal, viewChild, ViewContainerRef, } from '@angular/core';
8
+ import { take } from 'rxjs/operators';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * A dropdown component that displays a list of actionable items with support for icons,
12
+ * badges, tooltips, and keyboard navigation.
13
+ */
14
+ export class ActionDropdownComponent {
15
+ elementRef = inject(ElementRef);
16
+ overlay = inject(Overlay);
17
+ positionBuilder = inject(OverlayPositionBuilder);
18
+ viewContainerRef = inject(ViewContainerRef);
19
+ actionDropdownTemplate = viewChild('actionDropdownTemplate');
20
+ trigger = contentChild('trigger');
21
+ /** Array of items to display in the dropdown menu */
22
+ items = input([]);
23
+ /** Whether the dropdown is disabled and cannot be opened */
24
+ disabled = input(false);
25
+ /** Whether to enable large mode styling for the dropdown */
26
+ largeModeEnabled = input(false);
27
+ /** Whether to show a backdrop that closes the dropdown when clicked */
28
+ showBackdrop = input(true);
29
+ /** Custom width for the dropdown menu in pixels */
30
+ customWidth = input(null);
31
+ /** Default position for the dropdown relative to the trigger element */
32
+ defaultPosition = input('right');
33
+ /** Emits when a dropdown item is clicked */
34
+ itemClick = output();
35
+ /** Emits when the dropdown menu is opened */
36
+ opened = output();
37
+ /** Emits when the dropdown menu is closed */
38
+ closed = output();
39
+ overlayRef = null;
40
+ portal = null;
41
+ isOpen = signal(false);
42
+ focusedIndex = signal(-1);
43
+ itemsWithoutDividers = computed(() => this.items().filter(item => !item.divider));
44
+ constructor() {
45
+ // Set up keyboard navigation when dropdown opens
46
+ effect(() => {
47
+ if (this.isOpen()) {
48
+ this.setupKeyboardNavigation();
49
+ }
50
+ });
51
+ }
52
+ /** Opens the dropdown menu at the specified trigger element or component's element */
53
+ open(triggerElement) {
54
+ const actionDropdownTemplate = this.actionDropdownTemplate();
55
+ if (this.disabled() || this.isOpen() || !actionDropdownTemplate) {
56
+ return;
57
+ }
58
+ const target = triggerElement || this.elementRef.nativeElement;
59
+ if (this.overlayRef) {
60
+ this.overlayRef.dispose();
61
+ }
62
+ const positionStrategy = this.createPositionStrategy(target);
63
+ this.overlayRef = this.overlay.create({
64
+ positionStrategy,
65
+ hasBackdrop: this.showBackdrop(),
66
+ backdropClass: '',
67
+ panelClass: '',
68
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
69
+ });
70
+ this.portal = new TemplatePortal(actionDropdownTemplate, this.viewContainerRef);
71
+ this.overlayRef.attach(this.portal);
72
+ this.isOpen.set(true);
73
+ this.focusedIndex.set(-1);
74
+ this.opened.emit();
75
+ this.overlayRef
76
+ .backdropClick()
77
+ .pipe(take(1))
78
+ .subscribe(() => {
79
+ this.close();
80
+ });
81
+ this.overlayRef
82
+ .keydownEvents()
83
+ .pipe(take(1))
84
+ .subscribe((event) => {
85
+ if (event.key === 'Escape') {
86
+ this.close();
87
+ }
88
+ });
89
+ }
90
+ /** Closes the dropdown menu and cleans up overlay resources */
91
+ close() {
92
+ if (!this.isOpen()) {
93
+ return;
94
+ }
95
+ if (this.overlayRef) {
96
+ this.overlayRef.dispose();
97
+ this.overlayRef = null;
98
+ }
99
+ this.portal = null;
100
+ this.isOpen.set(false);
101
+ this.focusedIndex.set(-1);
102
+ this.closed.emit();
103
+ }
104
+ /** Toggles the dropdown menu open or closed state */
105
+ toggle(triggerElement) {
106
+ if (this.isOpen()) {
107
+ this.close();
108
+ }
109
+ else {
110
+ this.open(triggerElement);
111
+ }
112
+ }
113
+ /** Handles item click events, emitting the selected item and closing the dropdown */
114
+ onItemClick(item) {
115
+ if (item.disabled) {
116
+ return;
117
+ }
118
+ this.itemClick.emit(item);
119
+ this.close();
120
+ }
121
+ /** Handles keyboard navigation within the dropdown menu */
122
+ onKeyDown(event) {
123
+ const items = this.itemsWithoutDividers();
124
+ const currentIndex = this.focusedIndex();
125
+ let nextIndex;
126
+ let prevIndex;
127
+ switch (event.key) {
128
+ case 'ArrowDown':
129
+ event.preventDefault();
130
+ nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;
131
+ this.focusedIndex.set(nextIndex);
132
+ break;
133
+ case 'ArrowUp':
134
+ event.preventDefault();
135
+ prevIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;
136
+ this.focusedIndex.set(prevIndex);
137
+ break;
138
+ case 'Enter':
139
+ case ' ':
140
+ event.preventDefault();
141
+ if (currentIndex >= 0 && currentIndex < items.length) {
142
+ this.onItemClick(items[currentIndex]);
143
+ }
144
+ break;
145
+ case 'Escape':
146
+ event.preventDefault();
147
+ this.close();
148
+ break;
149
+ case 'Tab':
150
+ event.preventDefault();
151
+ if (event.shiftKey) {
152
+ // Shift+Tab - move to previous item
153
+ prevIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;
154
+ this.focusedIndex.set(prevIndex);
155
+ }
156
+ else {
157
+ // Tab - move to next item
158
+ nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;
159
+ this.focusedIndex.set(nextIndex);
160
+ }
161
+ break;
162
+ }
163
+ }
164
+ /** Creates positioning strategy for the overlay based on trigger element and default position */
165
+ createPositionStrategy(target) {
166
+ const defaultPosition = this.defaultPosition();
167
+ const gap = 4;
168
+ const positions = defaultPosition === 'right'
169
+ ? [
170
+ // Bottom-right (default) - left border aligns with left side of trigger
171
+ {
172
+ originX: 'start',
173
+ originY: 'bottom',
174
+ overlayX: 'start',
175
+ overlayY: 'top',
176
+ offsetX: 0,
177
+ offsetY: gap,
178
+ },
179
+ // Bottom-left (if not enough space on right) - right border aligns with right side of trigger
180
+ {
181
+ originX: 'end',
182
+ originY: 'bottom',
183
+ overlayX: 'end',
184
+ overlayY: 'top',
185
+ offsetX: 0,
186
+ offsetY: gap,
187
+ },
188
+ // Top-right (if not enough space below) - left border aligns with left side of trigger
189
+ {
190
+ originX: 'start',
191
+ originY: 'top',
192
+ overlayX: 'start',
193
+ overlayY: 'bottom',
194
+ offsetX: 0,
195
+ offsetY: -gap,
196
+ },
197
+ // Top-left (if not enough space below and on right) - right border aligns with right side of trigger
198
+ {
199
+ originX: 'end',
200
+ originY: 'top',
201
+ overlayX: 'end',
202
+ overlayY: 'bottom',
203
+ offsetX: 0,
204
+ offsetY: -gap,
205
+ },
206
+ ]
207
+ : [
208
+ // Bottom-left (default) - right border aligns with right side of trigger
209
+ {
210
+ originX: 'end',
211
+ originY: 'bottom',
212
+ overlayX: 'end',
213
+ overlayY: 'top',
214
+ offsetX: 0,
215
+ offsetY: gap,
216
+ },
217
+ // Bottom-right (if not enough space on left) - left border aligns with left side of trigger
218
+ {
219
+ originX: 'start',
220
+ originY: 'bottom',
221
+ overlayX: 'start',
222
+ overlayY: 'top',
223
+ offsetX: 0,
224
+ offsetY: gap,
225
+ },
226
+ // Top-left (if not enough space below) - right border aligns with right side of trigger
227
+ {
228
+ originX: 'end',
229
+ originY: 'top',
230
+ overlayX: 'end',
231
+ overlayY: 'bottom',
232
+ offsetX: 0,
233
+ offsetY: -gap,
234
+ },
235
+ // Top-right (if not enough space below and on left) - left border aligns with left side of trigger
236
+ {
237
+ originX: 'start',
238
+ originY: 'top',
239
+ overlayX: 'start',
240
+ overlayY: 'bottom',
241
+ offsetX: 0,
242
+ offsetY: -gap,
243
+ },
244
+ ];
245
+ return this.positionBuilder
246
+ .flexibleConnectedTo(target)
247
+ .withPositions(positions)
248
+ .withFlexibleDimensions(true)
249
+ .withPush(true)
250
+ .withGrowAfterOpen(true)
251
+ .withViewportMargin(8);
252
+ }
253
+ /** Sets up keyboard event handling for the opened dropdown */
254
+ setupKeyboardNavigation() {
255
+ if (!this.overlayRef) {
256
+ return;
257
+ }
258
+ const keydownEvents = this.overlayRef.keydownEvents();
259
+ keydownEvents.subscribe((event) => {
260
+ this.onKeyDown(event);
261
+ });
262
+ }
263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: ActionDropdownComponent, isStandalone: true, selector: "ap-action-dropdown", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, largeModeEnabled: { classPropertyName: "largeModeEnabled", publicName: "largeModeEnabled", isSignal: true, isRequired: false, transformFunction: null }, showBackdrop: { classPropertyName: "showBackdrop", publicName: "showBackdrop", isSignal: true, isRequired: false, transformFunction: null }, customWidth: { classPropertyName: "customWidth", publicName: "customWidth", isSignal: true, isRequired: false, transformFunction: null }, defaultPosition: { classPropertyName: "defaultPosition", publicName: "defaultPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", opened: "opened", closed: "closed" }, providers: [withSymbols(apInfo, apFeatureLock)], queries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "actionDropdownTemplate", first: true, predicate: ["actionDropdownTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #actionDropdownTemplate>\n <!-- Action dropdown -->\n <div\n class=\"ap-action-dropdown__content\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'Action dropdown'\"\n [class.ap-action-dropdown__content--default]=\"!largeModeEnabled() && !customWidth()\"\n [class.ap-action-dropdown__content--large]=\"largeModeEnabled()\"\n [style.width]=\"customWidth() ? customWidth() + 'px' : undefined\"\n (keydown)=\"onKeyDown($event)\">\n <!-- Action dropdown items -->\n @for (item of items(); track item.label) {\n <!-- Divider -->\n @if (item.divider) {\n <div\n class=\"ap-action-dropdown__divider\"\n role=\"separator\"></div>\n } @else {\n <!-- Action dropdown item -->\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"ap-action-dropdown__item\"\n [class.ap-action-dropdown__item--has-description]=\"item.description\"\n [class.ap-action-dropdown__item--disabled]=\"item.disabled\"\n [class.ap-action-dropdown__item--focused]=\"focusedIndex() === $index\"\n [class.ap-action-dropdown__item--red-mode]=\"item.redModeEnabled\"\n [class.ap-action-dropdown__item--feature-lock]=\"item.featureLockEnabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.itemTooltipText\"\n (click)=\"onItemClick(item)\">\n <!-- Start icon -->\n @if (item.startSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-start-icon\"\n size=\"sm\"\n [color]=\"item.startSymbolColor ? item.startSymbolColor : item.redModeEnabled ? 'red' : 'basic-grey'\"\n [symbolId]=\"item.startSymbolId\"\n [apTooltip]=\"item.startSymbolTooltipText\" />\n }\n <!-- Label -->\n <div class=\"ap-action-dropdown__item-text-container\">\n <div class=\"ap-action-dropdown__item-label-container\">\n <div\n class=\"ap-action-dropdown__item-label\"\n [class.ap-action-dropdown__item-label--bold]=\"item.description\">\n {{ item.label }}\n </div>\n <!-- Badge -->\n @if (item.badgeLabel) {\n <ap-badge color=\"blue\">\n {{ item.badgeLabel }}\n </ap-badge>\n }\n </div>\n <!-- Description -->\n <div class=\"ap-action-dropdown__item-description\">{{ item.description }}</div>\n </div>\n <!-- End icon -->\n @if (item.endSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"#858FA1\"\n [symbolId]=\"item.endSymbolId\"\n [apTooltip]=\"item.endSymbolTooltipText\" />\n }\n <!-- Feature lock icon -->\n @if (item.featureLockEnabled) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"purple\"\n symbolId=\"feature-lock\" />\n }\n </button>\n }\n }\n </div>\n</ng-template>\n", styles: [".ap-action-dropdown__content{background-color:var(--comp-action-dropdown-background-color);border:1px solid var(--comp-action-dropdown-border-color);border-radius:var(--comp-action-dropdown-border-radius);box-shadow:var(--comp-action-dropdown-box-shadow);padding:var(--comp-action-dropdown-padding);outline:none;overflow:hidden;z-index:1000}.ap-action-dropdown__content.ap-action-dropdown__content--default{width:250px}.ap-action-dropdown__content.ap-action-dropdown__content--large{width:340px}.ap-action-dropdown__content:focus{outline:2px solid var(--comp-action-dropdown-item-background-color-focused);outline-offset:2px}.ap-action-dropdown__item{display:flex;align-items:center;width:100%;height:40px;padding:var(--comp-action-dropdown-item-padding);border:none;background:transparent;color:var(--comp-action-dropdown-item-text-color);cursor:pointer;font-family:Averta;font-size:var(--comp-action-dropdown-item-text-size);line-height:var(--comp-action-dropdown-item-text-line-height);text-align:left;transition:background-color .2s ease,color .2s ease}.ap-action-dropdown__item:hover{background-color:var(--comp-action-dropdown-item-background-color-hover)}.ap-action-dropdown__item:focus{outline:none;background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--has-description{height:auto;min-height:50px}.ap-action-dropdown__item.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled{cursor:not-allowed;opacity:.4}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode{color:var(--comp-action-dropdown-item-text-color-red-mode)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:hover{background-color:var(--comp-action-dropdown-item-background-color-red-mode-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:focus{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:hover{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:focus{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled:hover{background-color:transparent}.ap-action-dropdown__item .ap-action-dropdown__item-start-icon{margin-right:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-end-icon{margin-left:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container{display:flex;flex-direction:column;flex:1;min-width:0}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container{display:flex;align-items:center;gap:var(--comp-action-dropdown-item-label-spacing);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label.ap-action-dropdown__item-label--bold{font-weight:var(--ref-font-weight-bold)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-description{color:var(--comp-action-dropdown-item-description-color);font-size:var(--comp-action-dropdown-item-description-size);line-height:var(--comp-action-dropdown-item-description-line-height)}.ap-action-dropdown__divider{height:1px;background-color:var(--comp-action-dropdown-divider-color);margin:var(--comp-action-dropdown-divider-margin)}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
265
+ }
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ActionDropdownComponent, decorators: [{
267
+ type: Component,
268
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-action-dropdown', standalone: true, imports: [BadgeComponent, CommonModule, SymbolComponent, TooltipDirective], providers: [withSymbols(apInfo, apFeatureLock)], template: "<ng-template #actionDropdownTemplate>\n <!-- Action dropdown -->\n <div\n class=\"ap-action-dropdown__content\"\n role=\"menu\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'Action dropdown'\"\n [class.ap-action-dropdown__content--default]=\"!largeModeEnabled() && !customWidth()\"\n [class.ap-action-dropdown__content--large]=\"largeModeEnabled()\"\n [style.width]=\"customWidth() ? customWidth() + 'px' : undefined\"\n (keydown)=\"onKeyDown($event)\">\n <!-- Action dropdown items -->\n @for (item of items(); track item.label) {\n <!-- Divider -->\n @if (item.divider) {\n <div\n class=\"ap-action-dropdown__divider\"\n role=\"separator\"></div>\n } @else {\n <!-- Action dropdown item -->\n <button\n type=\"button\"\n role=\"menuitem\"\n class=\"ap-action-dropdown__item\"\n [class.ap-action-dropdown__item--has-description]=\"item.description\"\n [class.ap-action-dropdown__item--disabled]=\"item.disabled\"\n [class.ap-action-dropdown__item--focused]=\"focusedIndex() === $index\"\n [class.ap-action-dropdown__item--red-mode]=\"item.redModeEnabled\"\n [class.ap-action-dropdown__item--feature-lock]=\"item.featureLockEnabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.itemTooltipText\"\n (click)=\"onItemClick(item)\">\n <!-- Start icon -->\n @if (item.startSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-start-icon\"\n size=\"sm\"\n [color]=\"item.startSymbolColor ? item.startSymbolColor : item.redModeEnabled ? 'red' : 'basic-grey'\"\n [symbolId]=\"item.startSymbolId\"\n [apTooltip]=\"item.startSymbolTooltipText\" />\n }\n <!-- Label -->\n <div class=\"ap-action-dropdown__item-text-container\">\n <div class=\"ap-action-dropdown__item-label-container\">\n <div\n class=\"ap-action-dropdown__item-label\"\n [class.ap-action-dropdown__item-label--bold]=\"item.description\">\n {{ item.label }}\n </div>\n <!-- Badge -->\n @if (item.badgeLabel) {\n <ap-badge color=\"blue\">\n {{ item.badgeLabel }}\n </ap-badge>\n }\n </div>\n <!-- Description -->\n <div class=\"ap-action-dropdown__item-description\">{{ item.description }}</div>\n </div>\n <!-- End icon -->\n @if (item.endSymbolId) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"#858FA1\"\n [symbolId]=\"item.endSymbolId\"\n [apTooltip]=\"item.endSymbolTooltipText\" />\n }\n <!-- Feature lock icon -->\n @if (item.featureLockEnabled) {\n <ap-symbol\n class=\"ap-action-dropdown__item-end-icon\"\n size=\"sm\"\n color=\"purple\"\n symbolId=\"feature-lock\" />\n }\n </button>\n }\n }\n </div>\n</ng-template>\n", styles: [".ap-action-dropdown__content{background-color:var(--comp-action-dropdown-background-color);border:1px solid var(--comp-action-dropdown-border-color);border-radius:var(--comp-action-dropdown-border-radius);box-shadow:var(--comp-action-dropdown-box-shadow);padding:var(--comp-action-dropdown-padding);outline:none;overflow:hidden;z-index:1000}.ap-action-dropdown__content.ap-action-dropdown__content--default{width:250px}.ap-action-dropdown__content.ap-action-dropdown__content--large{width:340px}.ap-action-dropdown__content:focus{outline:2px solid var(--comp-action-dropdown-item-background-color-focused);outline-offset:2px}.ap-action-dropdown__item{display:flex;align-items:center;width:100%;height:40px;padding:var(--comp-action-dropdown-item-padding);border:none;background:transparent;color:var(--comp-action-dropdown-item-text-color);cursor:pointer;font-family:Averta;font-size:var(--comp-action-dropdown-item-text-size);line-height:var(--comp-action-dropdown-item-text-line-height);text-align:left;transition:background-color .2s ease,color .2s ease}.ap-action-dropdown__item:hover{background-color:var(--comp-action-dropdown-item-background-color-hover)}.ap-action-dropdown__item:focus{outline:none;background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--has-description{height:auto;min-height:50px}.ap-action-dropdown__item.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled{cursor:not-allowed;opacity:.4}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode{color:var(--comp-action-dropdown-item-text-color-red-mode)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:hover{background-color:var(--comp-action-dropdown-item-background-color-red-mode-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode:focus{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--red-mode.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-red-mode-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:hover{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-hover)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock:focus{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--feature-lock.ap-action-dropdown__item--focused{background-color:var(--comp-action-dropdown-item-background-color-feature-lock-focused)}.ap-action-dropdown__item.ap-action-dropdown__item--disabled:hover{background-color:transparent}.ap-action-dropdown__item .ap-action-dropdown__item-start-icon{margin-right:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-end-icon{margin-left:var(--comp-action-dropdown-item-icon-spacing)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container{display:flex;flex-direction:column;flex:1;min-width:0}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container{display:flex;align-items:center;gap:var(--comp-action-dropdown-item-label-spacing);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-label-container .ap-action-dropdown__item-label.ap-action-dropdown__item-label--bold{font-weight:var(--ref-font-weight-bold)}.ap-action-dropdown__item .ap-action-dropdown__item-text-container .ap-action-dropdown__item-description{color:var(--comp-action-dropdown-item-description-color);font-size:var(--comp-action-dropdown-item-description-size);line-height:var(--comp-action-dropdown-item-description-line-height)}.ap-action-dropdown__divider{height:1px;background-color:var(--comp-action-dropdown-divider-color);margin:var(--comp-action-dropdown-divider-margin)}\n"] }]
269
+ }], ctorParameters: () => [] });
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hY3Rpb24tZHJvcGRvd24vc3JjL2FjdGlvbi1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYWN0aW9uLWRyb3Bkb3duL3NyYy9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sRUFBZSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0gsT0FBTyxFQUF3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBaUN0Qzs7O0dBR0c7QUFVSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2YsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLGVBQWUs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QztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt1R0ExUlEsdUJBQXVCOzJGQUF2Qix1QkFBdUIscTlCQUZyQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsNFJDakVuRCwwaElBa0ZBLDJ1SURsQmMsY0FBYyx1RUFBRSxZQUFZLCtCQUFFLGVBQWUsc0hBQUUsZ0JBQWdCOzsyRkFHaEUsdUJBQXVCO2tCQVRuQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsb0JBQW9CLGNBR2xCLElBQUksV0FDUCxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLGFBQy9ELENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IGFnb3JhcHVsc2VTeW1ib2wsIGFwRmVhdHVyZUxvY2ssIGFwSW5mbywgU3ltYm9sQ29sb3IsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheVBvc2l0aW9uQnVpbGRlciwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgY29udGVudENoaWxkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRHJvcGRvd25JdGVtIHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBpdGVtICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKiogRGlzcGxheSB0ZXh0IGZvciB0aGUgaXRlbSAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIC8qKiBTZWNvbmRhcnkgdGV4dCBkaXNwbGF5ZWQgYmVsb3cgdGhlIGxhYmVsICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgZGlzcGxheWVkIGluIGEgYmFkZ2UgbmV4dCB0byB0aGUgaXRlbSAqL1xuICAgIGJhZGdlTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyBhIGZlYXR1cmUgbG9jayBpY29uICovXG4gICAgZmVhdHVyZUxvY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKiogV2hldGhlciB0byBhcHBseSByZWQgc3R5bGluZyBmb3IgZGVzdHJ1Y3RpdmUgYWN0aW9ucyAqL1xuICAgIHJlZE1vZGVFbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKiogVG9vbHRpcCB0ZXh0IGRpc3BsYXllZCB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIGl0ZW0gKi9cbiAgICBpdGVtVG9vbHRpcFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIEljb24gc3ltYm9sIGlkZW50aWZpZXIgZGlzcGxheWVkIGF0IHRoZSBzdGFydCBvZiB0aGUgaXRlbSAqL1xuICAgIHN0YXJ0U3ltYm9sSWQ/OiBhZ29yYXB1bHNlU3ltYm9sO1xuICAgIC8qKiBDb2xvciB0aGVtZSBmb3IgdGhlIHN0YXJ0IHN5bWJvbCAqL1xuICAgIHN0YXJ0U3ltYm9sQ29sb3I/OiBTeW1ib2xDb2xvcjtcbiAgICAvKiogVG9vbHRpcCB0ZXh0IGZvciB0aGUgc3RhcnQgc3ltYm9sICovXG4gICAgc3RhcnRTeW1ib2xUb29sdGlwVGV4dD86IHN0cmluZztcbiAgICAvKiogSWNvbiBzeW1ib2wgaWRlbnRpZmllciBkaXNwbGF5ZWQgYXQgdGhlIGVuZCBvZiB0aGUgaXRlbSAqL1xuICAgIGVuZFN5bWJvbElkPzogYWdvcmFwdWxzZVN5bWJvbDtcbiAgICAvKiogVG9vbHRpcCB0ZXh0IGZvciB0aGUgZW5kIHN5bWJvbCAqL1xuICAgIGVuZFN5bWJvbFRvb2x0aXBUZXh0Pzogc3RyaW5nO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBpdGVtIGlzIGRpc2FibGVkIGFuZCBub24taW50ZXJhY3RpdmUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgLyoqIFdoZXRoZXIgdG8gcmVuZGVyIHRoaXMgaXRlbSBhcyBhIHZpc3VhbCBkaXZpZGVyICovXG4gICAgZGl2aWRlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBkcm9wZG93biBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIGxpc3Qgb2YgYWN0aW9uYWJsZSBpdGVtcyB3aXRoIHN1cHBvcnQgZm9yIGljb25zLFxuICogYmFkZ2VzLCB0b29sdGlwcywgYW5kIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtYWN0aW9uLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCYWRnZUNvbXBvbmVudCwgQ29tbW9uTW9kdWxlLCBTeW1ib2xDb21wb25lbnQsIFRvb2x0aXBEaXJlY3RpdmVdLFxuICAgIHByb3ZpZGVyczogW3dpdGhTeW1ib2xzKGFwSW5mbywgYXBGZWF0dXJlTG9jayldLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Ecm9wZG93bkNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvc2l0aW9uQnVpbGRlciA9IGluamVjdChPdmVybGF5UG9zaXRpb25CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBhY3Rpb25Ecm9wZG93blRlbXBsYXRlID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignYWN0aW9uRHJvcGRvd25UZW1wbGF0ZScpO1xuICAgIHRyaWdnZXIgPSBjb250ZW50Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd0cmlnZ2VyJyk7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICAgIGl0ZW1zID0gaW5wdXQ8QWN0aW9uRHJvcGRvd25JdGVtW10+KFtdKTtcbiAgICAvKiogV2hldGhlciB0aGUgZHJvcGRvd24gaXMgZGlzYWJsZWQgYW5kIGNhbm5vdCBiZSBvcGVuZWQgKi9cbiAgICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgbGFyZ2UgbW9kZSBzdHlsaW5nIGZvciB0aGUgZHJvcGRvd24gKi9cbiAgICBsYXJnZU1vZGVFbmFibGVkID0gaW5wdXQoZmFsc2UpO1xuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgYSBiYWNrZHJvcCB0aGF0IGNsb3NlcyB0aGUgZHJvcGRvd24gd2hlbiBjbGlja2VkICovXG4gICAgc2hvd0JhY2tkcm9wID0gaW5wdXQodHJ1ZSk7XG4gICAgLyoqIEN1c3RvbSB3aWR0aCBmb3IgdGhlIGRyb3Bkb3duIG1lbnUgaW4gcGl4ZWxzICovXG4gICAgY3VzdG9tV2lkdGggPSBpbnB1dDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgICAvKiogRGVmYXVsdCBwb3NpdGlvbiBmb3IgdGhlIGRyb3Bkb3duIHJlbGF0aXZlIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgKi9cbiAgICBkZWZhdWx0UG9zaXRpb24gPSBpbnB1dDwncmlnaHQnIHwgJ2xlZnQnPigncmlnaHQnKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGEgZHJvcGRvd24gaXRlbSBpcyBjbGlja2VkICovXG4gICAgaXRlbUNsaWNrID0gb3V0cHV0PEFjdGlvbkRyb3Bkb3duSXRlbT4oKTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSBpcyBvcGVuZWQgKi9cbiAgICBvcGVuZWQgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSBpcyBjbG9zZWQgKi9cbiAgICBjbG9zZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvY3VzZWRJbmRleCA9IHNpZ25hbCgtMSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGl0ZW1zV2l0aG91dERpdmlkZXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpdmlkZXIpKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBTZXQgdXAga2V5Ym9hcmQgbmF2aWdhdGlvbiB3aGVuIGRyb3Bkb3duIG9wZW5zXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBLZXlib2FyZE5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBkcm9wZG93biBtZW51IGF0IHRoZSBzcGVjaWZpZWQgdHJpZ2dlciBlbGVtZW50IG9yIGNvbXBvbmVudCdzIGVsZW1lbnQgKi9cbiAgICBvcGVuKHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSA9IHRoaXMuYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc09wZW4oKSB8fCAhYWN0aW9uRHJvcGRvd25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdHJpZ2dlckVsZW1lbnQgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3kodGFyZ2V0KTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdGhpcy5zaG93QmFja2Ryb3AoKSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICcnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJycsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChhY3Rpb25Ecm9wZG93blRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMucG9ydGFsKTtcblxuICAgICAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgICAgIC5rZXlkb3duRXZlbnRzKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBkcm9wZG93biBtZW51IGFuZCBjbGVhbnMgdXAgb3ZlcmxheSByZXNvdXJjZXMgKi9cbiAgICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9ydGFsID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KC0xKTtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBkcm9wZG93biBtZW51IG9wZW4gb3IgY2xvc2VkIHN0YXRlICovXG4gICAgdG9nZ2xlKHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3Blbih0cmlnZ2VyRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSGFuZGxlcyBpdGVtIGNsaWNrIGV2ZW50cywgZW1pdHRpbmcgdGhlIHNlbGVjdGVkIGl0ZW0gYW5kIGNsb3NpbmcgdGhlIGRyb3Bkb3duICovXG4gICAgb25JdGVtQ2xpY2soaXRlbTogQWN0aW9uRHJvcGRvd25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xuXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlcyBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGhpbiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXNXaXRob3V0RGl2aWRlcnMoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5mb2N1c2VkSW5kZXgoKTtcbiAgICAgICAgbGV0IG5leHRJbmRleDogbnVtYmVyO1xuICAgICAgICBsZXQgcHJldkluZGV4OiBudW1iZXI7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggPCBpdGVtcy5sZW5ndGggLSAxID8gY3VycmVudEluZGV4ICsgMSA6IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcHJldkluZGV4ID0gY3VycmVudEluZGV4ID4gMCA/IGN1cnJlbnRJbmRleCAtIDEgOiBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPj0gMCAmJiBjdXJyZW50SW5kZXggPCBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhpdGVtc1tjdXJyZW50SW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hpZnQrVGFiIC0gbW92ZSB0byBwcmV2aW91cyBpdGVtXG4gICAgICAgICAgICAgICAgICAgIHByZXZJbmRleCA9IGN1cnJlbnRJbmRleCA+IDAgPyBjdXJyZW50SW5kZXggLSAxIDogaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGFiIC0gbW92ZSB0byBuZXh0IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IDwgaXRlbXMubGVuZ3RoIC0gMSA/IGN1cnJlbnRJbmRleCArIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleC5zZXQobmV4dEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlcyBwb3NpdGlvbmluZyBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXkgYmFzZWQgb24gdHJpZ2dlciBlbGVtZW50IGFuZCBkZWZhdWx0IHBvc2l0aW9uICovXG4gICAgcHJpdmF0ZSBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KHRhcmdldDogSFRNTEVsZW1lbnQpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBkZWZhdWx0UG9zaXRpb24gPSB0aGlzLmRlZmF1bHRQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBnYXAgPSA0O1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9XG4gICAgICAgICAgICBkZWZhdWx0UG9zaXRpb24gPT09ICdyaWdodCdcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tcmlnaHQgKGRlZmF1bHQpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tbGVmdCAoaWYgbm90IGVub3VnaCBzcGFjZSBvbiByaWdodCkgLSByaWdodCBib3JkZXIgYWxpZ25zIHdpdGggcmlnaHQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AtcmlnaHQgKGlmIG5vdCBlbm91Z2ggc3BhY2UgYmVsb3cpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgLy8gVG9wLWxlZnQgKGlmIG5vdCBlbm91Z2ggc3BhY2UgYmVsb3cgYW5kIG9uIHJpZ2h0KSAtIHJpZ2h0IGJvcmRlciBhbGlnbnMgd2l0aCByaWdodCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1nYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tbGVmdCAoZGVmYXVsdCkgLSByaWdodCBib3JkZXIgYWxpZ25zIHdpdGggcmlnaHQgc2lkZSBvZiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBnYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20tcmlnaHQgKGlmIG5vdCBlbm91Z2ggc3BhY2Ugb24gbGVmdCkgLSBsZWZ0IGJvcmRlciBhbGlnbnMgd2l0aCBsZWZ0IHNpZGUgb2YgdHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IGdhcCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcC1sZWZ0IChpZiBub3QgZW5vdWdoIHNwYWNlIGJlbG93KSAtIHJpZ2h0IGJvcmRlciBhbGlnbnMgd2l0aCByaWdodCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1nYXAsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AtcmlnaHQgKGlmIG5vdCBlbm91Z2ggc3BhY2UgYmVsb3cgYW5kIG9uIGxlZnQpIC0gbGVmdCBib3JkZXIgYWxpZ25zIHdpdGggbGVmdCBzaWRlIG9mIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtZ2FwLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uQnVpbGRlclxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGFyZ2V0KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgICAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKHRydWUpXG4gICAgICAgICAgICAud2l0aFZpZXdwb3J0TWFyZ2luKDgpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIHVwIGtleWJvYXJkIGV2ZW50IGhhbmRsaW5nIGZvciB0aGUgb3BlbmVkIGRyb3Bkb3duICovXG4gICAgcHJpdmF0ZSBzZXR1cEtleWJvYXJkTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleWRvd25FdmVudHMgPSB0aGlzLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpO1xuXG4gICAgICAgIGtleWRvd25FdmVudHMuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbktleURvd24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2FjdGlvbkRyb3Bkb3duVGVtcGxhdGU+XG4gICAgPCEtLSBBY3Rpb24gZHJvcGRvd24gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9fY29udGVudFwiXG4gICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FjdGlvbiBkcm9wZG93bidcIlxuICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19jb250ZW50LS1kZWZhdWx0XT1cIiFsYXJnZU1vZGVFbmFibGVkKCkgJiYgIWN1c3RvbVdpZHRoKClcIlxuICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19jb250ZW50LS1sYXJnZV09XCJsYXJnZU1vZGVFbmFibGVkKClcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiY3VzdG9tV2lkdGgoKSA/IGN1c3RvbVdpZHRoKCkgKyAncHgnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBBY3Rpb24gZHJvcGRvd24gaXRlbXMgLS0+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgPCEtLSBEaXZpZGVyIC0tPlxuICAgICAgICAgICAgQGlmIChpdGVtLmRpdmlkZXIpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19kaXZpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInNlcGFyYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gZHJvcGRvd24gaXRlbSAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLWhhcy1kZXNjcmlwdGlvbl09XCJpdGVtLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFwLWFjdGlvbi1kcm9wZG93bl9faXRlbS0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLWZvY3VzZWRdPVwiZm9jdXNlZEluZGV4KCkgPT09ICRpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tLXJlZC1tb2RlXT1cIml0ZW0ucmVkTW9kZUVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLS1mZWF0dXJlLWxvY2tdPVwiaXRlbS5mZWF0dXJlTG9ja0VuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthcFRvb2x0aXBdPVwiaXRlbS5pdGVtVG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGFydCBpY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc3RhcnRTeW1ib2xJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLXN0YXJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uc3RhcnRTeW1ib2xDb2xvciA/IGl0ZW0uc3RhcnRTeW1ib2xDb2xvciA6IGl0ZW0ucmVkTW9kZUVuYWJsZWQgPyAncmVkJyA6ICdiYXNpYy1ncmV5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N5bWJvbElkXT1cIml0ZW0uc3RhcnRTeW1ib2xJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwVG9vbHRpcF09XCJpdGVtLnN0YXJ0U3ltYm9sVG9vbHRpcFRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWwgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tdGV4dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwLWFjdGlvbi1kcm9wZG93bl9faXRlbS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tbGFiZWwtLWJvbGRdPVwiaXRlbS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCYWRnZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2VMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2UgY29sb3I9XCJibHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmJhZGdlTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGVzY3JpcHRpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXAtYWN0aW9uLWRyb3Bkb3duX19pdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmQgaWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmVuZFN5bWJvbElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZW5kLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCIjODU4RkExXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ltYm9sSWRdPVwiaXRlbS5lbmRTeW1ib2xJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwVG9vbHRpcF09XCJpdGVtLmVuZFN5bWJvbFRvb2x0aXBUZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmUgbG9jayBpY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZmVhdHVyZUxvY2tFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcC1hY3Rpb24tZHJvcGRvd25fX2l0ZW0tZW5kLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwdXJwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiZmVhdHVyZS1sb2NrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdvcmFwdWxzZS11aS1jb21wb25lbnRzLWFjdGlvbi1kcm9wZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hY3Rpb24tZHJvcGRvd24vc3JjL2Fnb3JhcHVsc2UtdWktY29tcG9uZW50cy1hY3Rpb24tZHJvcGRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { ActionDropdownTriggerDirective } from './action-dropdown-trigger.directive';
2
+ export { ActionDropdownComponent } from './action-dropdown.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hY3Rpb24tZHJvcGRvd24vc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFzQixNQUFNLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQWN0aW9uRHJvcGRvd25UcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9hY3Rpb24tZHJvcGRvd24tdHJpZ2dlci5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQWN0aW9uRHJvcGRvd25Db21wb25lbnQsIEFjdGlvbkRyb3Bkb3duSXRlbSB9IGZyb20gJy4vYWN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudCc7XG4iXX0=