@fundamental-ngx/core 0.43.41 → 0.43.43

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.
@@ -1,8 +1,8 @@
1
- import { ElementRef } from '@angular/core';
1
+ import { ElementRef, OnChanges, OnDestroy } from '@angular/core';
2
2
  import { Nullable } from '@fundamental-ngx/cdk/utils';
3
3
  import * as i0 from "@angular/core";
4
4
  export type BusyIndicatorSize = 's' | 'm' | 'l';
5
- export declare class BusyIndicatorComponent {
5
+ export declare class BusyIndicatorComponent implements OnChanges, OnDestroy {
6
6
  private _elementRef;
7
7
  /** Whether to display the loading indicator animation. */
8
8
  loading: boolean;
@@ -18,15 +18,23 @@ export declare class BusyIndicatorComponent {
18
18
  label: string;
19
19
  /** Aria live attribute value. */
20
20
  ariaLive: Nullable<'assertive' | 'polite' | 'off'>;
21
+ /** Whether to stop mouse wheel events when the busy indicator is displayed via loading="true". */
22
+ preventWheelEvents: boolean;
21
23
  /** @hidden */
22
24
  fakeFocusElement: ElementRef;
23
25
  /** @hidden */
24
26
  constructor(_elementRef: ElementRef);
27
+ /** @hidden */
28
+ ngOnChanges(): void;
29
+ /** @hidden */
30
+ ngOnDestroy(): void;
25
31
  /** @hidden If focus escapes busy container focus element after wrapped content */
26
32
  hostFocusChangeHandler(event: KeyboardEvent): void;
27
33
  /** @hidden If busy container is navigated as "previous focusable element",
28
34
  * focus busy indicator to prevent from focusing wrapped content */
29
35
  fakeElementFocusHandler(event: FocusEvent): void;
36
+ /** @hidden */
37
+ private _wheelListener;
30
38
  static ɵfac: i0.ɵɵFactoryDeclaration<BusyIndicatorComponent, never>;
31
- static ɵcmp: i0.ɵɵComponentDeclaration<BusyIndicatorComponent, "fd-busy-indicator", never, { "loading": "loading"; "size": "size"; "block": "block"; "ariaLabel": "ariaLabel"; "title": "title"; "label": "label"; "ariaLive": "ariaLive"; }, {}, never, ["*"], false, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<BusyIndicatorComponent, "fd-busy-indicator", never, { "loading": "loading"; "size": "size"; "block": "block"; "ariaLabel": "ariaLabel"; "title": "title"; "label": "label"; "ariaLive": "ariaLive"; "preventWheelEvents": "preventWheelEvents"; }, {}, never, ["*"], false, never>;
32
40
  }
@@ -14,6 +14,29 @@ export class BusyIndicatorComponent {
14
14
  this.block = false;
15
15
  /** Aria live attribute value. */
16
16
  this.ariaLive = null;
17
+ /** Whether to stop mouse wheel events when the busy indicator is displayed via loading="true". */
18
+ this.preventWheelEvents = false;
19
+ /** @hidden */
20
+ this._wheelListener = (event) => {
21
+ if (this.preventWheelEvents && this.loading) {
22
+ event.preventDefault();
23
+ event.stopImmediatePropagation();
24
+ }
25
+ };
26
+ }
27
+ /** @hidden */
28
+ ngOnChanges() {
29
+ if (this.preventWheelEvents) {
30
+ this._elementRef.nativeElement.addEventListener('wheel', this._wheelListener, {
31
+ passive: false
32
+ });
33
+ }
34
+ }
35
+ /** @hidden */
36
+ ngOnDestroy() {
37
+ this._elementRef.nativeElement.removeEventListener('wheel', this._wheelListener, {
38
+ passive: false
39
+ });
17
40
  }
18
41
  /** @hidden If focus escapes busy container focus element after wrapped content */
19
42
  hostFocusChangeHandler(event) {
@@ -31,12 +54,12 @@ export class BusyIndicatorComponent {
31
54
  }
32
55
  }
33
56
  BusyIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BusyIndicatorComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
34
- BusyIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: { loading: "loading", size: "size", block: "block", ariaLabel: "ariaLabel", title: "title", label: "label", ariaLive: "ariaLive" }, host: { listeners: { "keydown": "hostFocusChangeHandler($event)" }, properties: { "attr.role": "loading ? 'progressbar' : 'presentation'", "attr.tabindex": "loading ? 0 : -1", "attr.aria-busy": "loading", "attr.aria-live": "ariaLive", "attr.aria-label": "ariaLabel", "attr.title": "title", "class.fd-busy-indicator__container": "true", "class.fd-busy-indicator__container--inline": "!block" } }, providers: [
57
+ BusyIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: { loading: "loading", size: "size", block: "block", ariaLabel: "ariaLabel", title: "title", label: "label", ariaLive: "ariaLive", preventWheelEvents: "preventWheelEvents" }, host: { listeners: { "keydown": "hostFocusChangeHandler($event)" }, properties: { "attr.role": "loading ? 'progressbar' : 'presentation'", "attr.tabindex": "loading ? 0 : -1", "attr.aria-busy": "loading", "attr.aria-live": "ariaLive", "attr.aria-label": "ariaLabel", "attr.title": "title", "class.fd-busy-indicator__container": "true", "class.fd-busy-indicator__container--inline": "!block" } }, providers: [
35
58
  {
36
59
  provide: FD_BUSY_INDICATOR_COMPONENT,
37
60
  useExisting: BusyIndicatorComponent
38
61
  }
39
- ], viewQueries: [{ propertyName: "fakeFocusElement", first: true, predicate: ["fakeFocusElement"], descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\n\n<ng-container *ngIf=\"loading\">\n <div\n #busyIndicator\n class=\"fd-busy-indicator\"\n [class.fd-busy-indicator--l]=\"size === 'l'\"\n [class.fd-busy-indicator--m]=\"size === 'm'\"\n [class.fd-busy-indicator--s]=\"size === 's'\"\n >\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n </div>\n\n <span *ngIf=\"label\" class=\"fd-busy-indicator-extended__label\">{{ label }}</span>\n\n <div class=\"fd-busy-indicator__overlay\"></div>\n\n <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-busy-indicator{--Dot_Color:var(--fdBusy_Indicator_Dot_Color);--Dot_Size:.5rem;-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:0;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;text-align:center}.fd-busy-indicator--contrast{--Dot_Color:var(--fdBusy_Indicator_Dot_Contrast_Color)}.fd-busy-indicator--m{--Dot_Size:1rem}.fd-busy-indicator--l{--Dot_Size:2rem}.fd-busy-indicator:after,.fd-busy-indicator:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator-extended{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;justify-content:center}.fd-busy-indicator-extended.fd-busy-indicator-extended--message-toast{-webkit-box-shadow:var(--sapContent_Shadow2);background-color:var(--sapPageFooter_Background);box-shadow:var(--sapContent_Shadow2);max-width:23.125rem;text-shadow:var(--sapContent_TextShadow);width:23.125rem}.fd-busy-indicator-extended__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0;text-align:center}.fd-busy-indicator-extended__label:after,.fd-busy-indicator-extended__label:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle{-webkit-box-sizing:border-box;animation:grow 1.6s cubic-bezier(.32,.06,.85,1.11) infinite;background-color:currentColor;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--Dot_Size);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:var(--Dot_Size)}.fd-busy-indicator__circle:after,.fd-busy-indicator__circle:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle:nth-child(2){animation-delay:.2s}.fd-busy-indicator__circle:nth-child(3){animation-delay:.4s}@keyframes grow{0%,50%,to{transform:scale(.5)}25%{transform:scale(1)}}*+.fd-busy-indicator,*+.fd-busy-indicator+.fd-busy-indicator-extended__label{white-space:nowrap;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}*+.fd-busy-indicator+.fd-busy-indicator-extended__label{z-index:2;transform:translate(-50%,50%)!important}.fd-busy-indicator:first-child~.fd-busy-indicator__overlay{background-color:transparent}.fd-busy-indicator{z-index:2}.fd-busy-indicator__container{display:block;position:relative}.fd-busy-indicator__container:focus{outline-width:var(--sapContent_FocusWidth, .0625rem);outline-color:var(--sapContent_FocusColor, #000);outline-style:var(--sapContent_FocusStyle, dotted)}.fd-busy-indicator__container[tabindex=\"-1\"]{outline:none}.fd-busy-indicator__container--inline{display:inline-block}.fd-busy-indicator__overlay{position:absolute;inset:0;z-index:1;background-color:var(--sapBaseColor);opacity:.72}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
62
+ ], viewQueries: [{ propertyName: "fakeFocusElement", first: true, predicate: ["fakeFocusElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<ng-container *ngIf=\"loading\">\n <div\n #busyIndicator\n class=\"fd-busy-indicator\"\n [class.fd-busy-indicator--l]=\"size === 'l'\"\n [class.fd-busy-indicator--m]=\"size === 'm'\"\n [class.fd-busy-indicator--s]=\"size === 's'\"\n >\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n </div>\n\n <span *ngIf=\"label\" class=\"fd-busy-indicator-extended__label\">{{ label }}</span>\n\n <div class=\"fd-busy-indicator__overlay\"></div>\n\n <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-busy-indicator{--Dot_Color:var(--fdBusy_Indicator_Dot_Color);--Dot_Size:.5rem;-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:0;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;text-align:center}.fd-busy-indicator--contrast{--Dot_Color:var(--fdBusy_Indicator_Dot_Contrast_Color)}.fd-busy-indicator--m{--Dot_Size:1rem}.fd-busy-indicator--l{--Dot_Size:2rem}.fd-busy-indicator:after,.fd-busy-indicator:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator-extended{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;justify-content:center}.fd-busy-indicator-extended.fd-busy-indicator-extended--message-toast{-webkit-box-shadow:var(--sapContent_Shadow2);background-color:var(--sapPageFooter_Background);box-shadow:var(--sapContent_Shadow2);max-width:23.125rem;text-shadow:var(--sapContent_TextShadow);width:23.125rem}.fd-busy-indicator-extended__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0;text-align:center}.fd-busy-indicator-extended__label:after,.fd-busy-indicator-extended__label:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle{-webkit-box-sizing:border-box;animation:grow 1.6s cubic-bezier(.32,.06,.85,1.11) infinite;background-color:currentColor;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--Dot_Size);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:var(--Dot_Size)}.fd-busy-indicator__circle:after,.fd-busy-indicator__circle:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle:nth-child(2){animation-delay:.2s}.fd-busy-indicator__circle:nth-child(3){animation-delay:.4s}@keyframes grow{0%,50%,to{transform:scale(.5)}25%{transform:scale(1)}}*+.fd-busy-indicator,*+.fd-busy-indicator+.fd-busy-indicator-extended__label{white-space:nowrap;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}*+.fd-busy-indicator+.fd-busy-indicator-extended__label{z-index:2;transform:translate(-50%,50%)!important}.fd-busy-indicator:first-child~.fd-busy-indicator__overlay{background-color:transparent}.fd-busy-indicator{z-index:2}.fd-busy-indicator__container{display:block;position:relative}.fd-busy-indicator__container:focus{outline-width:var(--sapContent_FocusWidth, .0625rem);outline-color:var(--sapContent_FocusColor, #000);outline-style:var(--sapContent_FocusStyle, dotted)}.fd-busy-indicator__container[tabindex=\"-1\"]{outline:none}.fd-busy-indicator__container--inline{display:inline-block}.fd-busy-indicator__overlay{position:absolute;inset:0;z-index:1;background-color:var(--sapBaseColor);opacity:.72}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
40
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BusyIndicatorComponent, decorators: [{
41
64
  type: Component,
42
65
  args: [{ selector: 'fd-busy-indicator', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -68,6 +91,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
68
91
  type: Input
69
92
  }], ariaLive: [{
70
93
  type: Input
94
+ }], preventWheelEvents: [{
95
+ type: Input
71
96
  }], fakeFocusElement: [{
72
97
  type: ViewChild,
73
98
  args: ['fakeFocusElement']
@@ -75,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
75
100
  type: HostListener,
76
101
  args: ['keydown', ['$event']]
77
102
  }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnVzeS1pbmRpY2F0b3IvYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnVzeS1pbmRpY2F0b3IvYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBMkJ2RCxNQUFNLE9BQU8sc0JBQXNCO0lBaUMvQixjQUFjO0lBQ2QsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUE3QjNDLGdFQUFnRTtRQUVoRSxTQUFJLEdBQXNCLEdBQUcsQ0FBQztRQUU5Qiw2Q0FBNkM7UUFFN0MsVUFBSyxHQUFHLEtBQUssQ0FBQztRQWNkLGlDQUFpQztRQUVqQyxhQUFRLEdBQTZDLElBQUksQ0FBQztJQU9aLENBQUM7SUFFL0Msa0ZBQWtGO0lBRWxGLHNCQUFzQixDQUFDLEtBQW9CO1FBQ3ZDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFRDt1RUFDbUU7SUFDbkUsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDeEUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs7bUhBbkRRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9rQkFqQnBCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFdBQVcsRUFBRSxzQkFBc0I7U0FDdEM7S0FDSixnSkMzQkwsdXdCQXFCQTsyRkRrQmEsc0JBQXNCO2tCQXZCbEMsU0FBUzsrQkFDSSxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsMkJBQTJCOzRCQUNwQyxXQUFXLHdCQUF3Qjt5QkFDdEM7cUJBQ0osUUFDSzt3QkFDRixhQUFhLEVBQUUsMENBQTBDO3dCQUN6RCxpQkFBaUIsRUFBRSxrQkFBa0I7d0JBQ3JDLGtCQUFrQixFQUFFLFNBQVM7d0JBQzdCLGtCQUFrQixFQUFFLFVBQVU7d0JBQzlCLG1CQUFtQixFQUFFLFdBQVc7d0JBQ2hDLGNBQWMsRUFBRSxPQUFPO3dCQUN2QixzQ0FBc0MsRUFBRSxNQUFNO3dCQUM5Qyw4Q0FBOEMsRUFBRSxRQUFRO3FCQUMzRDtpR0FLRCxPQUFPO3NCQUROLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQVE3QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVEFCIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEZEX0JVU1lfSU5ESUNBVE9SX0NPTVBPTkVOVCB9IGZyb20gJy4vdG9rZW5zJztcblxuZXhwb3J0IHR5cGUgQnVzeUluZGljYXRvclNpemUgPSAncycgfCAnbScgfCAnbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtYnVzeS1pbmRpY2F0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXN5LWluZGljYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9CVVNZX0lORElDQVRPUl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQnVzeUluZGljYXRvckNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5yb2xlXSc6IFwibG9hZGluZyA/ICdwcm9ncmVzc2JhcicgOiAncHJlc2VudGF0aW9uJ1wiLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2xvYWRpbmcgPyAwIDogLTEnLFxuICAgICAgICAnW2F0dHIuYXJpYS1idXN5XSc6ICdsb2FkaW5nJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGl2ZV0nOiAnYXJpYUxpdmUnLFxuICAgICAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsJyxcbiAgICAgICAgJ1thdHRyLnRpdGxlXSc6ICd0aXRsZScsXG4gICAgICAgICdbY2xhc3MuZmQtYnVzeS1pbmRpY2F0b3JfX2NvbnRhaW5lcl0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MuZmQtYnVzeS1pbmRpY2F0b3JfX2NvbnRhaW5lci0taW5saW5lXSc6ICchYmxvY2snXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IHtcbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBsb2FkaW5nIGluZGljYXRvciBhbmltYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuXG4gICAgLyoqIFRoZSBzaXplIG9mIHRoZSBsb2FkaW5nIGluZGljYXRvciwgZGVmYXVsdCB3aWxsIGJlIG1lZGl1bSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2l6ZTogQnVzeUluZGljYXRvclNpemUgPSAnbSc7XG5cbiAgICAvKiogV2hldGhlciB0byB1c2UgbG9hZGVyIGFzIGJsb2NrIGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGJsb2NrID0gZmFsc2U7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBhdHRyaWJ1dGUgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogdGl0bGUgYXR0cmlidXRlIHZhbHVlIGZvciB0b29sdGlwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBhZGQgbG9hZGluZyBsYWJlbCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxpdmUgYXR0cmlidXRlIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxpdmU6IE51bGxhYmxlPCdhc3NlcnRpdmUnIHwgJ3BvbGl0ZScgfCAnb2ZmJz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdmYWtlRm9jdXNFbGVtZW50JylcbiAgICBmYWtlRm9jdXNFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gSWYgZm9jdXMgZXNjYXBlcyBidXN5IGNvbnRhaW5lciBmb2N1cyBlbGVtZW50IGFmdGVyIHdyYXBwZWQgY29udGVudCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhvc3RGb2N1c0NoYW5nZUhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZyAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZmFrZUZvY3VzRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBJZiBidXN5IGNvbnRhaW5lciBpcyBuYXZpZ2F0ZWQgYXMgXCJwcmV2aW91cyBmb2N1c2FibGUgZWxlbWVudFwiLFxuICAgICAqIGZvY3VzIGJ1c3kgaW5kaWNhdG9yIHRvIHByZXZlbnQgZnJvbSBmb2N1c2luZyB3cmFwcGVkIGNvbnRlbnQgKi9cbiAgICBmYWtlRWxlbWVudEZvY3VzSGFuZGxlcihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nICYmIGV2ZW50LnJlbGF0ZWRUYXJnZXQgIT09IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICA8ZGl2XG4gICAgICAgICNidXN5SW5kaWNhdG9yXG4gICAgICAgIGNsYXNzPVwiZmQtYnVzeS1pbmRpY2F0b3JcIlxuICAgICAgICBbY2xhc3MuZmQtYnVzeS1pbmRpY2F0b3ItLWxdPVwic2l6ZSA9PT0gJ2wnXCJcbiAgICAgICAgW2NsYXNzLmZkLWJ1c3ktaW5kaWNhdG9yLS1tXT1cInNpemUgPT09ICdtJ1wiXG4gICAgICAgIFtjbGFzcy5mZC1idXN5LWluZGljYXRvci0tc109XCJzaXplID09PSAncydcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWJ1c3ktaW5kaWNhdG9yX19jaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWJ1c3ktaW5kaWNhdG9yX19jaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWJ1c3ktaW5kaWNhdG9yX19jaXJjbGVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxzcGFuICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cImZkLWJ1c3ktaW5kaWNhdG9yLWV4dGVuZGVkX19sYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuXG4gICAgPGRpdiBjbGFzcz1cImZkLWJ1c3ktaW5kaWNhdG9yX19vdmVybGF5XCI+PC9kaXY+XG5cbiAgICA8ZGl2ICNmYWtlRm9jdXNFbGVtZW50IHRhYmluZGV4PVwiMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChmb2N1c2luKT1cImZha2VFbGVtZW50Rm9jdXNIYW5kbGVyKCRldmVudClcIj48L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnVzeS1pbmRpY2F0b3IvYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnVzeS1pbmRpY2F0b3IvYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBMkJ2RCxNQUFNLE9BQU8sc0JBQXNCO0lBcUMvQixjQUFjO0lBQ2QsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFqQzNDLGdFQUFnRTtRQUVoRSxTQUFJLEdBQXNCLEdBQUcsQ0FBQztRQUU5Qiw2Q0FBNkM7UUFFN0MsVUFBSyxHQUFHLEtBQUssQ0FBQztRQWNkLGlDQUFpQztRQUVqQyxhQUFRLEdBQTZDLElBQUksQ0FBQztRQUUxRCxrR0FBa0c7UUFFbEcsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBMEMzQixjQUFjO1FBQ04sbUJBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQVEsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDO0lBekM0QyxDQUFDO0lBRS9DLGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQzFFLE9BQU8sRUFBRSxLQUFLO2FBQ2pCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDN0UsT0FBTyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtGQUFrRjtJQUVsRixzQkFBc0IsQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0M7SUFDTCxDQUFDO0lBRUQ7dUVBQ21FO0lBQ25FLHVCQUF1QixDQUFDLEtBQWlCO1FBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQ3hFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7O21IQXZFUSxzQkFBc0I7dUdBQXRCLHNCQUFzQiw4bUJBakJwQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxXQUFXLEVBQUUsc0JBQXNCO1NBQ3RDO0tBQ0oscUtDN0JMLHV3QkFxQkE7MkZEb0JhLHNCQUFzQjtrQkF2QmxDLFNBQVM7K0JBQ0ksbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDJCQUEyQjs0QkFDcEMsV0FBVyx3QkFBd0I7eUJBQ3RDO3FCQUNKLFFBQ0s7d0JBQ0YsYUFBYSxFQUFFLDBDQUEwQzt3QkFDekQsaUJBQWlCLEVBQUUsa0JBQWtCO3dCQUNyQyxrQkFBa0IsRUFBRSxTQUFTO3dCQUM3QixrQkFBa0IsRUFBRSxVQUFVO3dCQUM5QixtQkFBbUIsRUFBRSxXQUFXO3dCQUNoQyxjQUFjLEVBQUUsT0FBTzt3QkFDdkIsc0NBQXNDLEVBQUUsTUFBTTt3QkFDOUMsOENBQThDLEVBQUUsUUFBUTtxQkFDM0Q7aUdBS0QsT0FBTztzQkFETixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBd0I3QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBUQUIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRkRfQlVTWV9JTkRJQ0FUT1JfQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBCdXN5SW5kaWNhdG9yU2l6ZSA9ICdzJyB8ICdtJyB8ICdsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1idXN5LWluZGljYXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2J1c3ktaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9idXN5LWluZGljYXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0JVU1lfSU5ESUNBVE9SX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBCdXN5SW5kaWNhdG9yQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnJvbGVdJzogXCJsb2FkaW5nID8gJ3Byb2dyZXNzYmFyJyA6ICdwcmVzZW50YXRpb24nXCIsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnbG9hZGluZyA/IDAgOiAtMScsXG4gICAgICAgICdbYXR0ci5hcmlhLWJ1c3ldJzogJ2xvYWRpbmcnLFxuICAgICAgICAnW2F0dHIuYXJpYS1saXZlXSc6ICdhcmlhTGl2ZScsXG4gICAgICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdhcmlhTGFiZWwnLFxuICAgICAgICAnW2F0dHIudGl0bGVdJzogJ3RpdGxlJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1idXN5LWluZGljYXRvcl9fY29udGFpbmVyXSc6ICd0cnVlJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1idXN5LWluZGljYXRvcl9fY29udGFpbmVyLS1pbmxpbmVdJzogJyFibG9jaydcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgbG9hZGluZyBpbmRpY2F0b3IgYW5pbWF0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9hZGluZzogYm9vbGVhbjtcblxuICAgIC8qKiBUaGUgc2l6ZSBvZiB0aGUgbG9hZGluZyBpbmRpY2F0b3IsIGRlZmF1bHQgd2lsbCBiZSBtZWRpdW0gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IEJ1c3lJbmRpY2F0b3JTaXplID0gJ20nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gdXNlIGxvYWRlciBhcyBibG9jayBlbGVtZW50ICovXG4gICAgQElucHV0KClcbiAgICBibG9jayA9IGZhbHNlO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgYXR0cmlidXRlIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIHRpdGxlIGF0dHJpYnV0ZSB2YWx1ZSBmb3IgdG9vbHRpcC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogYWRkIGxvYWRpbmcgbGFiZWwgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQXJpYSBsaXZlIGF0dHJpYnV0ZSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMaXZlOiBOdWxsYWJsZTwnYXNzZXJ0aXZlJyB8ICdwb2xpdGUnIHwgJ29mZic+ID0gbnVsbDtcblxuICAgIC8qKiBXaGV0aGVyIHRvIHN0b3AgbW91c2Ugd2hlZWwgZXZlbnRzIHdoZW4gdGhlIGJ1c3kgaW5kaWNhdG9yIGlzIGRpc3BsYXllZCB2aWEgbG9hZGluZz1cInRydWVcIi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByZXZlbnRXaGVlbEV2ZW50cyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdmYWtlRm9jdXNFbGVtZW50JylcbiAgICBmYWtlRm9jdXNFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmVudFdoZWVsRXZlbnRzKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl93aGVlbExpc3RlbmVyLCB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fd2hlZWxMaXN0ZW5lciwge1xuICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gSWYgZm9jdXMgZXNjYXBlcyBidXN5IGNvbnRhaW5lciBmb2N1cyBlbGVtZW50IGFmdGVyIHdyYXBwZWQgY29udGVudCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhvc3RGb2N1c0NoYW5nZUhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZyAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZmFrZUZvY3VzRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBJZiBidXN5IGNvbnRhaW5lciBpcyBuYXZpZ2F0ZWQgYXMgXCJwcmV2aW91cyBmb2N1c2FibGUgZWxlbWVudFwiLFxuICAgICAqIGZvY3VzIGJ1c3kgaW5kaWNhdG9yIHRvIHByZXZlbnQgZnJvbSBmb2N1c2luZyB3cmFwcGVkIGNvbnRlbnQgKi9cbiAgICBmYWtlRWxlbWVudEZvY3VzSGFuZGxlcihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nICYmIGV2ZW50LnJlbGF0ZWRUYXJnZXQgIT09IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfd2hlZWxMaXN0ZW5lciA9IChldmVudDogV2hlZWxFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcmV2ZW50V2hlZWxFdmVudHMgJiYgdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgIDxkaXZcbiAgICAgICAgI2J1c3lJbmRpY2F0b3JcbiAgICAgICAgY2xhc3M9XCJmZC1idXN5LWluZGljYXRvclwiXG4gICAgICAgIFtjbGFzcy5mZC1idXN5LWluZGljYXRvci0tbF09XCJzaXplID09PSAnbCdcIlxuICAgICAgICBbY2xhc3MuZmQtYnVzeS1pbmRpY2F0b3ItLW1dPVwic2l6ZSA9PT0gJ20nXCJcbiAgICAgICAgW2NsYXNzLmZkLWJ1c3ktaW5kaWNhdG9yLS1zXT1cInNpemUgPT09ICdzJ1wiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtYnVzeS1pbmRpY2F0b3JfX2NpcmNsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtYnVzeS1pbmRpY2F0b3JfX2NpcmNsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtYnVzeS1pbmRpY2F0b3JfX2NpcmNsZVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHNwYW4gKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwiZmQtYnVzeS1pbmRpY2F0b3ItZXh0ZW5kZWRfX2xhYmVsXCI+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtYnVzeS1pbmRpY2F0b3JfX292ZXJsYXlcIj48L2Rpdj5cblxuICAgIDxkaXYgI2Zha2VGb2N1c0VsZW1lbnQgdGFiaW5kZXg9XCIwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGZvY3VzaW4pPVwiZmFrZUVsZW1lbnRGb2N1c0hhbmRsZXIoJGV2ZW50KVwiPjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -42,7 +42,7 @@ export class CarouselItemComponent {
42
42
  }
43
43
  }
44
44
  CarouselItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CarouselItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
45
- CarouselItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CarouselItemComponent, selector: "fd-carousel-item", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", loading: "loading", title: "title", initialHeight: "initialHeight", initialWidth: "initialWidth", value: "value" }, host: { properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "attr.title": "this.title", "class.fd-carousel__item": "this.carouselItem", "class.fd-carousel__item--active": "this.carouselItemActive", "style.visibility": "this._visibility" } }, ngImport: i0, template: "<fd-busy-indicator [loading]=\"loading\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", dependencies: [{ kind: "component", type: i1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
+ CarouselItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CarouselItemComponent, selector: "fd-carousel-item", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", loading: "loading", title: "title", initialHeight: "initialHeight", initialWidth: "initialWidth", value: "value" }, host: { properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "attr.title": "this.title", "class.fd-carousel__item": "this.carouselItem", "class.fd-carousel__item--active": "this.carouselItemActive", "style.visibility": "this._visibility" } }, ngImport: i0, template: "<fd-busy-indicator [loading]=\"loading\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", dependencies: [{ kind: "component", type: i1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive", "preventWheelEvents"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CarouselItemComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{ selector: 'fd-carousel-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<fd-busy-indicator [loading]=\"loading\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n" }]
@@ -34,7 +34,7 @@ DialogBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
34
34
  provide: FD_DIALOG_BODY_COMPONENT,
35
35
  useExisting: DialogBodyComponent
36
36
  }
37
- ], hostDirectives: [{ directive: i3.ScrollbarDirective }], ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"fd-dialog__loader\" *ngIf=\"dialogRef.onLoading | async\">\n <fd-busy-indicator [loading]=\"true\" size=\"l\"></fd-busy-indicator>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
37
+ ], hostDirectives: [{ directive: i3.ScrollbarDirective }], ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"fd-dialog__loader\" *ngIf=\"dialogRef.onLoading | async\">\n <fd-busy-indicator [loading]=\"true\" size=\"l\"></fd-busy-indicator>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive", "preventWheelEvents"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
38
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DialogBodyComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'fd-dialog-body', host: {
@@ -17,6 +17,29 @@ class BusyIndicatorComponent {
17
17
  this.block = false;
18
18
  /** Aria live attribute value. */
19
19
  this.ariaLive = null;
20
+ /** Whether to stop mouse wheel events when the busy indicator is displayed via loading="true". */
21
+ this.preventWheelEvents = false;
22
+ /** @hidden */
23
+ this._wheelListener = (event) => {
24
+ if (this.preventWheelEvents && this.loading) {
25
+ event.preventDefault();
26
+ event.stopImmediatePropagation();
27
+ }
28
+ };
29
+ }
30
+ /** @hidden */
31
+ ngOnChanges() {
32
+ if (this.preventWheelEvents) {
33
+ this._elementRef.nativeElement.addEventListener('wheel', this._wheelListener, {
34
+ passive: false
35
+ });
36
+ }
37
+ }
38
+ /** @hidden */
39
+ ngOnDestroy() {
40
+ this._elementRef.nativeElement.removeEventListener('wheel', this._wheelListener, {
41
+ passive: false
42
+ });
20
43
  }
21
44
  /** @hidden If focus escapes busy container focus element after wrapped content */
22
45
  hostFocusChangeHandler(event) {
@@ -34,12 +57,12 @@ class BusyIndicatorComponent {
34
57
  }
35
58
  }
36
59
  BusyIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BusyIndicatorComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
37
- BusyIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: { loading: "loading", size: "size", block: "block", ariaLabel: "ariaLabel", title: "title", label: "label", ariaLive: "ariaLive" }, host: { listeners: { "keydown": "hostFocusChangeHandler($event)" }, properties: { "attr.role": "loading ? 'progressbar' : 'presentation'", "attr.tabindex": "loading ? 0 : -1", "attr.aria-busy": "loading", "attr.aria-live": "ariaLive", "attr.aria-label": "ariaLabel", "attr.title": "title", "class.fd-busy-indicator__container": "true", "class.fd-busy-indicator__container--inline": "!block" } }, providers: [
60
+ BusyIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: { loading: "loading", size: "size", block: "block", ariaLabel: "ariaLabel", title: "title", label: "label", ariaLive: "ariaLive", preventWheelEvents: "preventWheelEvents" }, host: { listeners: { "keydown": "hostFocusChangeHandler($event)" }, properties: { "attr.role": "loading ? 'progressbar' : 'presentation'", "attr.tabindex": "loading ? 0 : -1", "attr.aria-busy": "loading", "attr.aria-live": "ariaLive", "attr.aria-label": "ariaLabel", "attr.title": "title", "class.fd-busy-indicator__container": "true", "class.fd-busy-indicator__container--inline": "!block" } }, providers: [
38
61
  {
39
62
  provide: FD_BUSY_INDICATOR_COMPONENT,
40
63
  useExisting: BusyIndicatorComponent
41
64
  }
42
- ], viewQueries: [{ propertyName: "fakeFocusElement", first: true, predicate: ["fakeFocusElement"], descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\n\n<ng-container *ngIf=\"loading\">\n <div\n #busyIndicator\n class=\"fd-busy-indicator\"\n [class.fd-busy-indicator--l]=\"size === 'l'\"\n [class.fd-busy-indicator--m]=\"size === 'm'\"\n [class.fd-busy-indicator--s]=\"size === 's'\"\n >\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n </div>\n\n <span *ngIf=\"label\" class=\"fd-busy-indicator-extended__label\">{{ label }}</span>\n\n <div class=\"fd-busy-indicator__overlay\"></div>\n\n <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-busy-indicator{--Dot_Color:var(--fdBusy_Indicator_Dot_Color);--Dot_Size:.5rem;-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:0;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;text-align:center}.fd-busy-indicator--contrast{--Dot_Color:var(--fdBusy_Indicator_Dot_Contrast_Color)}.fd-busy-indicator--m{--Dot_Size:1rem}.fd-busy-indicator--l{--Dot_Size:2rem}.fd-busy-indicator:after,.fd-busy-indicator:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator-extended{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;justify-content:center}.fd-busy-indicator-extended.fd-busy-indicator-extended--message-toast{-webkit-box-shadow:var(--sapContent_Shadow2);background-color:var(--sapPageFooter_Background);box-shadow:var(--sapContent_Shadow2);max-width:23.125rem;text-shadow:var(--sapContent_TextShadow);width:23.125rem}.fd-busy-indicator-extended__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0;text-align:center}.fd-busy-indicator-extended__label:after,.fd-busy-indicator-extended__label:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle{-webkit-box-sizing:border-box;animation:grow 1.6s cubic-bezier(.32,.06,.85,1.11) infinite;background-color:currentColor;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--Dot_Size);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:var(--Dot_Size)}.fd-busy-indicator__circle:after,.fd-busy-indicator__circle:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle:nth-child(2){animation-delay:.2s}.fd-busy-indicator__circle:nth-child(3){animation-delay:.4s}@keyframes grow{0%,50%,to{transform:scale(.5)}25%{transform:scale(1)}}*+.fd-busy-indicator,*+.fd-busy-indicator+.fd-busy-indicator-extended__label{white-space:nowrap;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}*+.fd-busy-indicator+.fd-busy-indicator-extended__label{z-index:2;transform:translate(-50%,50%)!important}.fd-busy-indicator:first-child~.fd-busy-indicator__overlay{background-color:transparent}.fd-busy-indicator{z-index:2}.fd-busy-indicator__container{display:block;position:relative}.fd-busy-indicator__container:focus{outline-width:var(--sapContent_FocusWidth, .0625rem);outline-color:var(--sapContent_FocusColor, #000);outline-style:var(--sapContent_FocusStyle, dotted)}.fd-busy-indicator__container[tabindex=\"-1\"]{outline:none}.fd-busy-indicator__container--inline{display:inline-block}.fd-busy-indicator__overlay{position:absolute;inset:0;z-index:1;background-color:var(--sapBaseColor);opacity:.72}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
65
+ ], viewQueries: [{ propertyName: "fakeFocusElement", first: true, predicate: ["fakeFocusElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<ng-container *ngIf=\"loading\">\n <div\n #busyIndicator\n class=\"fd-busy-indicator\"\n [class.fd-busy-indicator--l]=\"size === 'l'\"\n [class.fd-busy-indicator--m]=\"size === 'm'\"\n [class.fd-busy-indicator--s]=\"size === 's'\"\n >\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n </div>\n\n <span *ngIf=\"label\" class=\"fd-busy-indicator-extended__label\">{{ label }}</span>\n\n <div class=\"fd-busy-indicator__overlay\"></div>\n\n <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-busy-indicator{--Dot_Color:var(--fdBusy_Indicator_Dot_Color);--Dot_Size:.5rem;-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:0;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;text-align:center}.fd-busy-indicator--contrast{--Dot_Color:var(--fdBusy_Indicator_Dot_Contrast_Color)}.fd-busy-indicator--m{--Dot_Size:1rem}.fd-busy-indicator--l{--Dot_Size:2rem}.fd-busy-indicator:after,.fd-busy-indicator:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator-extended{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;justify-content:center}.fd-busy-indicator-extended.fd-busy-indicator-extended--message-toast{-webkit-box-shadow:var(--sapContent_Shadow2);background-color:var(--sapPageFooter_Background);box-shadow:var(--sapContent_Shadow2);max-width:23.125rem;text-shadow:var(--sapContent_TextShadow);width:23.125rem}.fd-busy-indicator-extended__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0;text-align:center}.fd-busy-indicator-extended__label:after,.fd-busy-indicator-extended__label:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle{-webkit-box-sizing:border-box;animation:grow 1.6s cubic-bezier(.32,.06,.85,1.11) infinite;background-color:currentColor;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--Dot_Color);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--Dot_Size);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:var(--Dot_Size)}.fd-busy-indicator__circle:after,.fd-busy-indicator__circle:before{box-sizing:inherit;font-size:inherit}.fd-busy-indicator__circle:nth-child(2){animation-delay:.2s}.fd-busy-indicator__circle:nth-child(3){animation-delay:.4s}@keyframes grow{0%,50%,to{transform:scale(.5)}25%{transform:scale(1)}}*+.fd-busy-indicator,*+.fd-busy-indicator+.fd-busy-indicator-extended__label{white-space:nowrap;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}*+.fd-busy-indicator+.fd-busy-indicator-extended__label{z-index:2;transform:translate(-50%,50%)!important}.fd-busy-indicator:first-child~.fd-busy-indicator__overlay{background-color:transparent}.fd-busy-indicator{z-index:2}.fd-busy-indicator__container{display:block;position:relative}.fd-busy-indicator__container:focus{outline-width:var(--sapContent_FocusWidth, .0625rem);outline-color:var(--sapContent_FocusColor, #000);outline-style:var(--sapContent_FocusStyle, dotted)}.fd-busy-indicator__container[tabindex=\"-1\"]{outline:none}.fd-busy-indicator__container--inline{display:inline-block}.fd-busy-indicator__overlay{position:absolute;inset:0;z-index:1;background-color:var(--sapBaseColor);opacity:.72}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
43
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BusyIndicatorComponent, decorators: [{
44
67
  type: Component,
45
68
  args: [{ selector: 'fd-busy-indicator', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -71,6 +94,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
71
94
  type: Input
72
95
  }], ariaLive: [{
73
96
  type: Input
97
+ }], preventWheelEvents: [{
98
+ type: Input
74
99
  }], fakeFocusElement: [{
75
100
  type: ViewChild,
76
101
  args: ['fakeFocusElement']
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-busy-indicator.mjs","sources":["../../../../libs/core/src/lib/busy-indicator/tokens.ts","../../../../libs/core/src/lib/busy-indicator/busy-indicator.component.ts","../../../../libs/core/src/lib/busy-indicator/busy-indicator.component.html","../../../../libs/core/src/lib/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.ts","../../../../libs/core/src/lib/busy-indicator/busy-indicator.module.ts","../../../../libs/core/src/lib/busy-indicator/fundamental-ngx-core-busy-indicator.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_BUSY_INDICATOR_COMPONENT = new InjectionToken('FdBusyIndicatorComponent');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { TAB } from '@angular/cdk/keycodes';\nimport { FD_BUSY_INDICATOR_COMPONENT } from './tokens';\n\nexport type BusyIndicatorSize = 's' | 'm' | 'l';\n\n@Component({\n selector: 'fd-busy-indicator',\n templateUrl: './busy-indicator.component.html',\n styleUrls: ['./busy-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_BUSY_INDICATOR_COMPONENT,\n useExisting: BusyIndicatorComponent\n }\n ],\n host: {\n '[attr.role]': \"loading ? 'progressbar' : 'presentation'\",\n '[attr.tabindex]': 'loading ? 0 : -1',\n '[attr.aria-busy]': 'loading',\n '[attr.aria-live]': 'ariaLive',\n '[attr.aria-label]': 'ariaLabel',\n '[attr.title]': 'title',\n '[class.fd-busy-indicator__container]': 'true',\n '[class.fd-busy-indicator__container--inline]': '!block'\n }\n})\nexport class BusyIndicatorComponent {\n /** Whether to display the loading indicator animation. */\n @Input()\n loading: boolean;\n\n /** The size of the loading indicator, default will be medium */\n @Input()\n size: BusyIndicatorSize = 'm';\n\n /** Whether to use loader as block element */\n @Input()\n block = false;\n\n /** Aria label attribute value. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** title attribute value for tooltip. */\n @Input()\n title: string;\n\n /** add loading label value */\n @Input()\n label: string;\n\n /** Aria live attribute value. */\n @Input()\n ariaLive: Nullable<'assertive' | 'polite' | 'off'> = null;\n\n /** @hidden */\n @ViewChild('fakeFocusElement')\n fakeFocusElement: ElementRef;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden If focus escapes busy container focus element after wrapped content */\n @HostListener('keydown', ['$event'])\n hostFocusChangeHandler(event: KeyboardEvent): void {\n if (this.loading && KeyUtil.isKeyCode(event, TAB) && !event.shiftKey) {\n this.fakeFocusElement.nativeElement.focus();\n }\n }\n\n /** @hidden If busy container is navigated as \"previous focusable element\",\n * focus busy indicator to prevent from focusing wrapped content */\n fakeElementFocusHandler(event: FocusEvent): void {\n if (this.loading && event.relatedTarget !== this._elementRef.nativeElement) {\n event.stopPropagation();\n this._elementRef.nativeElement.focus();\n }\n }\n}\n","<ng-content></ng-content>\n\n<ng-container *ngIf=\"loading\">\n <div\n #busyIndicator\n class=\"fd-busy-indicator\"\n [class.fd-busy-indicator--l]=\"size === 'l'\"\n [class.fd-busy-indicator--m]=\"size === 'm'\"\n [class.fd-busy-indicator--s]=\"size === 's'\"\n >\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n </div>\n\n <span *ngIf=\"label\" class=\"fd-busy-indicator-extended__label\">{{ label }}</span>\n\n <div class=\"fd-busy-indicator__overlay\"></div>\n\n <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n</ng-container>\n","import { AfterContentInit, ContentChild, Directive, ElementRef } from '@angular/core';\nimport { BusyIndicatorComponent } from '../busy-indicator.component';\nimport { FD_BUSY_INDICATOR_COMPONENT } from '../tokens';\n\nconst messageToastClass = 'fd-message-toast';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-busy-indicator-extended]'\n})\nexport class BusyIndicatorExtendedDirective implements AfterContentInit {\n /** @hidden */\n @ContentChild(FD_BUSY_INDICATOR_COMPONENT)\n busyIndicator: BusyIndicatorComponent;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._appendCssToParent();\n }\n\n /** @hidden */\n private _appendCssToParent(): void {\n const hasLabel = this.busyIndicator.label;\n if (!hasLabel) {\n return;\n }\n const classList = this.elementRef.nativeElement.parentElement?.classList;\n if (classList) {\n classList.add('fd-busy-indicator-extended');\n if (classList.contains(messageToastClass)) {\n classList.add('fd-busy-indicator-extended--message-toast');\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BusyIndicatorComponent } from './busy-indicator.component';\nimport { BusyIndicatorExtendedDirective } from './busy-indicator-extended/busy-indicator-extended.directive';\n\n@NgModule({\n declarations: [BusyIndicatorComponent, BusyIndicatorExtendedDirective],\n exports: [BusyIndicatorComponent, BusyIndicatorExtendedDirective],\n imports: [CommonModule]\n})\nexport class BusyIndicatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-busy-indicator.mjs","sources":["../../../../libs/core/src/lib/busy-indicator/tokens.ts","../../../../libs/core/src/lib/busy-indicator/busy-indicator.component.ts","../../../../libs/core/src/lib/busy-indicator/busy-indicator.component.html","../../../../libs/core/src/lib/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.ts","../../../../libs/core/src/lib/busy-indicator/busy-indicator.module.ts","../../../../libs/core/src/lib/busy-indicator/fundamental-ngx-core-busy-indicator.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_BUSY_INDICATOR_COMPONENT = new InjectionToken('FdBusyIndicatorComponent');\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { TAB } from '@angular/cdk/keycodes';\nimport { FD_BUSY_INDICATOR_COMPONENT } from './tokens';\n\nexport type BusyIndicatorSize = 's' | 'm' | 'l';\n\n@Component({\n selector: 'fd-busy-indicator',\n templateUrl: './busy-indicator.component.html',\n styleUrls: ['./busy-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_BUSY_INDICATOR_COMPONENT,\n useExisting: BusyIndicatorComponent\n }\n ],\n host: {\n '[attr.role]': \"loading ? 'progressbar' : 'presentation'\",\n '[attr.tabindex]': 'loading ? 0 : -1',\n '[attr.aria-busy]': 'loading',\n '[attr.aria-live]': 'ariaLive',\n '[attr.aria-label]': 'ariaLabel',\n '[attr.title]': 'title',\n '[class.fd-busy-indicator__container]': 'true',\n '[class.fd-busy-indicator__container--inline]': '!block'\n }\n})\nexport class BusyIndicatorComponent implements OnChanges, OnDestroy {\n /** Whether to display the loading indicator animation. */\n @Input()\n loading: boolean;\n\n /** The size of the loading indicator, default will be medium */\n @Input()\n size: BusyIndicatorSize = 'm';\n\n /** Whether to use loader as block element */\n @Input()\n block = false;\n\n /** Aria label attribute value. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** title attribute value for tooltip. */\n @Input()\n title: string;\n\n /** add loading label value */\n @Input()\n label: string;\n\n /** Aria live attribute value. */\n @Input()\n ariaLive: Nullable<'assertive' | 'polite' | 'off'> = null;\n\n /** Whether to stop mouse wheel events when the busy indicator is displayed via loading=\"true\". */\n @Input()\n preventWheelEvents = false;\n\n /** @hidden */\n @ViewChild('fakeFocusElement')\n fakeFocusElement: ElementRef;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnChanges(): void {\n if (this.preventWheelEvents) {\n this._elementRef.nativeElement.addEventListener('wheel', this._wheelListener, {\n passive: false\n });\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._elementRef.nativeElement.removeEventListener('wheel', this._wheelListener, {\n passive: false\n });\n }\n\n /** @hidden If focus escapes busy container focus element after wrapped content */\n @HostListener('keydown', ['$event'])\n hostFocusChangeHandler(event: KeyboardEvent): void {\n if (this.loading && KeyUtil.isKeyCode(event, TAB) && !event.shiftKey) {\n this.fakeFocusElement.nativeElement.focus();\n }\n }\n\n /** @hidden If busy container is navigated as \"previous focusable element\",\n * focus busy indicator to prevent from focusing wrapped content */\n fakeElementFocusHandler(event: FocusEvent): void {\n if (this.loading && event.relatedTarget !== this._elementRef.nativeElement) {\n event.stopPropagation();\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _wheelListener = (event: WheelEvent): void => {\n if (this.preventWheelEvents && this.loading) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n}\n","<ng-content></ng-content>\n\n<ng-container *ngIf=\"loading\">\n <div\n #busyIndicator\n class=\"fd-busy-indicator\"\n [class.fd-busy-indicator--l]=\"size === 'l'\"\n [class.fd-busy-indicator--m]=\"size === 'm'\"\n [class.fd-busy-indicator--s]=\"size === 's'\"\n >\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n <div class=\"fd-busy-indicator__circle\"></div>\n </div>\n\n <span *ngIf=\"label\" class=\"fd-busy-indicator-extended__label\">{{ label }}</span>\n\n <div class=\"fd-busy-indicator__overlay\"></div>\n\n <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n</ng-container>\n","import { AfterContentInit, ContentChild, Directive, ElementRef } from '@angular/core';\nimport { BusyIndicatorComponent } from '../busy-indicator.component';\nimport { FD_BUSY_INDICATOR_COMPONENT } from '../tokens';\n\nconst messageToastClass = 'fd-message-toast';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-busy-indicator-extended]'\n})\nexport class BusyIndicatorExtendedDirective implements AfterContentInit {\n /** @hidden */\n @ContentChild(FD_BUSY_INDICATOR_COMPONENT)\n busyIndicator: BusyIndicatorComponent;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._appendCssToParent();\n }\n\n /** @hidden */\n private _appendCssToParent(): void {\n const hasLabel = this.busyIndicator.label;\n if (!hasLabel) {\n return;\n }\n const classList = this.elementRef.nativeElement.parentElement?.classList;\n if (classList) {\n classList.add('fd-busy-indicator-extended');\n if (classList.contains(messageToastClass)) {\n classList.add('fd-busy-indicator-extended--message-toast');\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BusyIndicatorComponent } from './busy-indicator.component';\nimport { BusyIndicatorExtendedDirective } from './busy-indicator-extended/busy-indicator-extended.directive';\n\n@NgModule({\n declarations: [BusyIndicatorComponent, BusyIndicatorExtendedDirective],\n exports: [BusyIndicatorComponent, BusyIndicatorExtendedDirective],\n imports: [CommonModule]\n})\nexport class BusyIndicatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -491,7 +491,7 @@ class CarouselItemComponent {
491
491
  }
492
492
  }
493
493
  CarouselItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CarouselItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
494
- CarouselItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CarouselItemComponent, selector: "fd-carousel-item", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", loading: "loading", title: "title", initialHeight: "initialHeight", initialWidth: "initialWidth", value: "value" }, host: { properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "attr.title": "this.title", "class.fd-carousel__item": "this.carouselItem", "class.fd-carousel__item--active": "this.carouselItemActive", "style.visibility": "this._visibility" } }, ngImport: i0, template: "<fd-busy-indicator [loading]=\"loading\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", dependencies: [{ kind: "component", type: i1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
494
+ CarouselItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CarouselItemComponent, selector: "fd-carousel-item", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", loading: "loading", title: "title", initialHeight: "initialHeight", initialWidth: "initialWidth", value: "value" }, host: { properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "attr.title": "this.title", "class.fd-carousel__item": "this.carouselItem", "class.fd-carousel__item--active": "this.carouselItemActive", "style.visibility": "this._visibility" } }, ngImport: i0, template: "<fd-busy-indicator [loading]=\"loading\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", dependencies: [{ kind: "component", type: i1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive", "preventWheelEvents"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
495
495
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CarouselItemComponent, decorators: [{
496
496
  type: Component,
497
497
  args: [{ selector: 'fd-carousel-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<fd-busy-indicator [loading]=\"loading\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n" }]