@odx/angular 12.22.1 → 12.22.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @odx/angular
2
2
 
3
+ ## 12.22.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 86e59a9: Fixed tooltip reapearing on modal close
8
+
9
+ ## 12.22.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 1d14e22: Added example for how to handle a wider table
14
+
3
15
  ## 12.22.1
4
16
 
5
17
  ### Patch Changes
@@ -29,6 +29,7 @@ export declare class ModalService {
29
29
  private readonly openModals;
30
30
  private readonly injector;
31
31
  private readonly dynamicViewService;
32
+ private readonly document;
32
33
  /**
33
34
  * An observable that emits the current value of the openModals subject.
34
35
  *
@@ -18,7 +18,7 @@ export declare class TooltipDirective implements OnInit, OnChanges, OnDestroy {
18
18
  private readonly ngZone;
19
19
  private connectedOverlayRef;
20
20
  private tooltipOptions;
21
- private ignoreBrowserTabSwitchFocus;
21
+ private ignoreNextTooltipTrigger;
22
22
  protected tooltipId: string | null;
23
23
  readonly element: import("@angular/core").ElementRef<HTMLElement>;
24
24
  /**
@@ -1,4 +1,4 @@
1
- import { Location } from '@angular/common';
1
+ import { DOCUMENT, Location } from '@angular/common';
2
2
  import { inject, Injectable, Injector } from '@angular/core';
3
3
  import { DynamicViewService } from '@odx/angular/cdk/dynamic-view';
4
4
  import { deepmerge } from '@odx/angular/internal';
@@ -39,6 +39,7 @@ export class ModalService {
39
39
  this.openModals = new Queue();
40
40
  this.injector = inject(Injector);
41
41
  this.dynamicViewService = inject(DynamicViewService);
42
+ this.document = inject(DOCUMENT);
42
43
  /**
43
44
  * An observable that emits the current value of the openModals subject.
44
45
  *
@@ -102,6 +103,7 @@ export class ModalService {
102
103
  const onDestroy = async () => {
103
104
  dialog?.classList.add('is-hidden');
104
105
  await waitForAnimations(dialog);
106
+ this.document.dispatchEvent(new Event('ODXModalOnBeforeClosed'));
105
107
  dialog?.close();
106
108
  this.openModals.remove(modalRef);
107
109
  viewRef.destroy();
@@ -118,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
118
120
  type: Injectable,
119
121
  args: [{ providedIn: 'root' }]
120
122
  }], ctorParameters: () => [{ type: i1.Location }] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBc0Msa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUF1RCxRQUFRLEVBQUUsU0FBUyxFQUFhLE1BQU0sVUFBVSxDQUFDOzs7QUFDL0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxZQUFZO0lBYXZCLFlBQVksUUFBa0I7UUFaYixXQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUNuQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLE1B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Q0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLEVBQUUsV0FBVyxJQUFJLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMUdVLFlBQVk7bUhBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50LCBEeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZGVmZXJGbiwgZ2V0VW5pcXVlSWQsIFF1ZXVlLCB3YWl0Rm9yQW5pbWF0aW9ucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzaWNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBwcm92aWRlTW9kYWxSZWYgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RNb2RhbENvbmZpZyB9IGZyb20gJy4vbW9kYWwuY29uZmlnJztcbmltcG9ydCB7IEJhc2ljTW9kYWxPcHRpb25zLCBHZXRNb2RhbEFjdGlvbkRhdGEsIE1vZGFsT3B0aW9ucywgTW9kYWxSZWYsIE1vZGFsU2l6ZSwgTW9kYWxUeXBlIH0gZnJvbSAnLi9tb2RlbHMnO1xuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBtb2RhbCBkaWFsb2dzIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uIEl0IHN1cHBvcnRzIGNyZWF0aW5nLCBvcGVuaW5nLFxuICogYW5kIGRpc21pc3NpbmcgbW9kYWxzIGR5bmFtaWNhbGx5LCB3aXRoIGNvbXByZWhlbnNpdmUgb3B0aW9ucyBmb3IgY3VzdG9taXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXG4gKiBVdGlsaXplcyBBbmd1bGFyJ3MgZHluYW1pYyB2aWV3IG1hbmFnZW1lbnQgdG8gaW5zdGFudGlhdGUgYW5kIHJlbmRlciBtb2RhbHMgYXMgbmVlZGVkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gRXhhbXBsZSBvZiB1c2luZyBNb2RhbFNlcnZpY2UgdG8gb3BlbiBhIG1vZGFsXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSB7fVxuICpcbiAqIG9wZW5Nb2RhbCgpIHtcbiAqICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE15TW9kYWxDb250ZW50Q29tcG9uZW50LCB7XG4gKiAgICAgZGF0YTogeyBzb21lRGF0YTogJ3Rlc3QnIH0sXG4gKiAgICAgc2l6ZTogTW9kYWxTaXplLlNNQUxMLFxuICogICB9KTtcbiAqXG4gKiAgIG1vZGFsUmVmLm9uQ2xvc2UkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKCdNb2RhbCBjbG9zZWQgd2l0aCByZXN1bHQ6JywgcmVzdWx0KTtcbiAqICAgfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdE1vZGFsQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3Blbk1vZGFscyA9IG5ldyBRdWV1ZTxNb2RhbFJlZj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZHluYW1pY1ZpZXdTZXJ2aWNlID0gaW5qZWN0KER5bmFtaWNWaWV3U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgb3Blbk1vZGFscyBzdWJqZWN0LlxuICAgKlxuICAgKiBAZW1pdHMge01vZGFsUmVmW119IG9wZW5Nb2RhbHMkIC0gVGhlIGN1cnJlbnQgYXJyYXkgb2Ygb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFscyQgPSB0aGlzLm9wZW5Nb2RhbHMudmFsdWUkO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgIGxvY2F0aW9uLm9uVXJsQ2hhbmdlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgICBpZiAobW9kYWxSZWYub3B0aW9ucy5kaXNtaXNzT25OYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgbW9kYWxSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBvcGVuIG1vZGFscy5cbiAgICovXG4gIHB1YmxpYyBkaXNtaXNzQWxsKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgbW9kYWxSZWYuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vZGFsIHJlZmVyZW5jZSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbC5cbiAgICogQHRlbXBsYXRlIFJlc3VsdCBUaGUgdHlwZSBvZiByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIG1vZGFsLlxuICAgKiBAcGFyYW0ge01vZGFsT3B0aW9uc1snaWQnXX0gaWQgVGhlIElEIG9mIHRoZSBtb2RhbC5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsfSAtIFRoZSBtb2RhbCByZWZlcmVuY2UgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQnlJZDxEYXRhID0gdW5rbm93biwgUmVzdWx0ID0gdW5rbm93bj4oaWQ6IE1vZGFsT3B0aW9uc1snaWQnXSk6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuTW9kYWxzLmdldChpZCkgYXMgTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAcGFyYW0ge0RhdGF9IG1vZGFsIC0gVGhlIGJhc2ljIG1vZGFsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7UGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+IHwgdW5kZWZpbmVkfSBvcHRpb25zIC0gQWRkaXRpb25hbCBtb2RhbCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gVGhlIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGU8RGF0YSBleHRlbmRzIEJhc2ljTW9kYWxPcHRpb25zLCBSZXN1bHQgPSBHZXRNb2RhbEFjdGlvbkRhdGE8RGF0YT4+KG1vZGFsOiBEYXRhLCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+KTogTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgcHVibGljIGNyZWF0ZShtb2RhbDogQmFzaWNNb2RhbE9wdGlvbnMsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpOiBNb2RhbFJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbihCYXNpY01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBtb2RhbCxcbiAgICAgIHNpemU6IE1vZGFsU2l6ZS5TTUFMTCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgb3BlbnMgYSBuZXcgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbnMuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAdGVtcGxhdGUgVCAtIFRoZSBjb250ZW50IHR5cGUgb2YgdGhlIG1vZGFsLCBlaXRoZXIgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge01vZGFsVHlwZTxULCBEYXRhLCBSZXN1bHQ+IHwgVGVtcGxhdGVSZWY8VD59IGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwsIGVpdGhlciBhcyBhIGBUZW1wbGF0ZVJlZmAgb3IgYSBjb21wb25lbnQgdHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZGFsLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gQSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IG9wZW5lZCBtb2RhbCwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBhbmQgY29udHJvbCBvdmVyIHRoZSBtb2RhbCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBvcGVuPERhdGEsIFJlc3VsdCwgVD4oY29udGVudDogVGVtcGxhdGVSZWY8VD4sIG9wdGlvbnM/OiBQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj4pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+O1xuICBwdWJsaWMgb3BlbjxEYXRhLCBSZXN1bHQsIFQgPSB1bmtub3duPihjb250ZW50OiBNb2RhbFR5cGU8VCwgRGF0YSwgUmVzdWx0Piwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+Pik6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIHB1YmxpYyBvcGVuKGNvbnRlbnQ6IE1vZGFsVHlwZTx1bmtub3duPiB8IFRlbXBsYXRlUmVmPHVua25vd24+LCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM+KTogTW9kYWxSZWYge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy5jb25maWcsIHsgaWQ6IGdldFVuaXF1ZUlkKCdvZHgtbW9kYWwnKSB9LCBvcHRpb25zID8/IHt9KSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgaWYgKHRoaXMuZ2V0TW9kYWxCeUlkKG1lcmdlZE9wdGlvbnMuaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgTW9kYWwgd2l0aCBJRCAke21lcmdlZE9wdGlvbnMuaWR9IGFscmVhZHkgb3BlbmApO1xuICAgIH1cbiAgICBjb25zdCBtb2RhbFJlZiA9IG5ldyBNb2RhbFJlZihtZXJnZWRPcHRpb25zLCAocmVmKSA9PiB0aGlzLm9wZW5Nb2RhbHMuaXNGaXJzdChyZWYpKTtcbiAgICB0aGlzLmF0dGFjaE1vZGFsKG1vZGFsUmVmLCBjb250ZW50KTtcbiAgICB0aGlzLm9wZW5Nb2RhbHMuYWRkKG1vZGFsUmVmKTtcbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1vZGFsKG1vZGFsUmVmOiBNb2RhbFJlZiwgY29udGVudDogRXhjbHVkZTxEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLmR5bmFtaWNWaWV3U2VydmljZS5jcmVhdGVWaWV3KE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjb250ZXh0OiB7IGNvbnRlbnQgfSxcbiAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtwcm92aWRlTW9kYWxSZWYobW9kYWxSZWYpXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICBob3N0OiBtb2RhbFJlZi5vcHRpb25zLmhvc3QsXG4gICAgfSk7XG4gICAgY29uc3QgZGlhbG9nID0gdmlld1JlZi5nZXRFbGVtZW50KCkgYXMgSFRNTERpYWxvZ0VsZW1lbnQ7XG4gICAgY29uc3Qgb25EZXN0cm95ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgZGlhbG9nPy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JBbmltYXRpb25zKGRpYWxvZyk7XG4gICAgICBkaWFsb2c/LmNsb3NlKCk7XG4gICAgICB0aGlzLm9wZW5Nb2RhbHMucmVtb3ZlKG1vZGFsUmVmKTtcbiAgICAgIHZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH07XG5cbiAgICBtb2RhbFJlZi5vbkRlc3Ryb3kkLnBpcGUoZmluYWxpemUob25EZXN0cm95KSkuc3Vic2NyaWJlKCk7XG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBkaWFsb2c/LmlzQ29ubmVjdGVkICYmIGRpYWxvZz8uc2hvd01vZGFsKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQXNDLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBdUQsUUFBUSxFQUFFLFNBQVMsRUFBYSxNQUFNLFVBQVUsQ0FBQzs7O0FBQy9HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQWN2QixZQUFZLFFBQWtCO1FBYmIsV0FBTSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFZLENBQUM7UUFDbkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1Qix1QkFB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QUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDakUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxRCxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxFQUFFLFdBQVcsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTVHVSxZQUFZO21IQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb250ZW50LCBEeW5hbWljVGV4dENvbnRlbnQsIER5bmFtaWNWaWV3U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWZlckZuLCBnZXRVbmlxdWVJZCwgUXVldWUsIHdhaXRGb3JBbmltYXRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNpY01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IHByb3ZpZGVNb2RhbFJlZiB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IGluamVjdE1vZGFsQ29uZmlnIH0gZnJvbSAnLi9tb2RhbC5jb25maWcnO1xuaW1wb3J0IHsgQmFzaWNNb2RhbE9wdGlvbnMsIEdldE1vZGFsQWN0aW9uRGF0YSwgTW9kYWxPcHRpb25zLCBNb2RhbFJlZiwgTW9kYWxTaXplLCBNb2RhbFR5cGUgfSBmcm9tICcuL21vZGVscyc7XG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIG1vZGFsIGRpYWxvZ3Mgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSXQgc3VwcG9ydHMgY3JlYXRpbmcsIG9wZW5pbmcsXG4gKiBhbmQgZGlzbWlzc2luZyBtb2RhbHMgZHluYW1pY2FsbHksIHdpdGggY29tcHJlaGVuc2l2ZSBvcHRpb25zIGZvciBjdXN0b21pemF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudC5cbiAqIFV0aWxpemVzIEFuZ3VsYXIncyBkeW5hbWljIHZpZXcgbWFuYWdlbWVudCB0byBpbnN0YW50aWF0ZSBhbmQgcmVuZGVyIG1vZGFscyBhcyBuZWVkZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBFeGFtcGxlIG9mIHVzaW5nIE1vZGFsU2VydmljZSB0byBvcGVuIGEgbW9kYWxcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UpIHt9XG4gKlxuICogb3Blbk1vZGFsKCkge1xuICogICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTXlNb2RhbENvbnRlbnRDb21wb25lbnQsIHtcbiAqICAgICBkYXRhOiB7IHNvbWVEYXRhOiAndGVzdCcgfSxcbiAqICAgICBzaXplOiBNb2RhbFNpemUuU01BTEwsXG4gKiAgIH0pO1xuICpcbiAqICAgbW9kYWxSZWYub25DbG9zZSQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ01vZGFsIGNsb3NlZCB3aXRoIHJlc3VsdDonLCByZXN1bHQpO1xuICogICB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0TW9kYWxDb25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcGVuTW9kYWxzID0gbmV3IFF1ZXVlPE1vZGFsUmVmPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkeW5hbWljVmlld1NlcnZpY2UgPSBpbmplY3QoRHluYW1pY1ZpZXdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgb3Blbk1vZGFscyBzdWJqZWN0LlxuICAgKlxuICAgKiBAZW1pdHMge01vZGFsUmVmW119IG9wZW5Nb2RhbHMkIC0gVGhlIGN1cnJlbnQgYXJyYXkgb2Ygb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFscyQgPSB0aGlzLm9wZW5Nb2RhbHMudmFsdWUkO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgIGxvY2F0aW9uLm9uVXJsQ2hhbmdlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgICBpZiAobW9kYWxSZWYub3B0aW9ucy5kaXNtaXNzT25OYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgbW9kYWxSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBvcGVuIG1vZGFscy5cbiAgICovXG4gIHB1YmxpYyBkaXNtaXNzQWxsKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgbW9kYWxSZWYuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vZGFsIHJlZmVyZW5jZSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbC5cbiAgICogQHRlbXBsYXRlIFJlc3VsdCBUaGUgdHlwZSBvZiByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIG1vZGFsLlxuICAgKiBAcGFyYW0ge01vZGFsT3B0aW9uc1snaWQnXX0gaWQgVGhlIElEIG9mIHRoZSBtb2RhbC5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsfSAtIFRoZSBtb2RhbCByZWZlcmVuY2UgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQnlJZDxEYXRhID0gdW5rbm93biwgUmVzdWx0ID0gdW5rbm93bj4oaWQ6IE1vZGFsT3B0aW9uc1snaWQnXSk6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuTW9kYWxzLmdldChpZCkgYXMgTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAcGFyYW0ge0RhdGF9IG1vZGFsIC0gVGhlIGJhc2ljIG1vZGFsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7UGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+IHwgdW5kZWZpbmVkfSBvcHRpb25zIC0gQWRkaXRpb25hbCBtb2RhbCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gVGhlIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGU8RGF0YSBleHRlbmRzIEJhc2ljTW9kYWxPcHRpb25zLCBSZXN1bHQgPSBHZXRNb2RhbEFjdGlvbkRhdGE8RGF0YT4+KG1vZGFsOiBEYXRhLCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+KTogTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgcHVibGljIGNyZWF0ZShtb2RhbDogQmFzaWNNb2RhbE9wdGlvbnMsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpOiBNb2RhbFJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbihCYXNpY01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBtb2RhbCxcbiAgICAgIHNpemU6IE1vZGFsU2l6ZS5TTUFMTCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgb3BlbnMgYSBuZXcgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbnMuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAdGVtcGxhdGUgVCAtIFRoZSBjb250ZW50IHR5cGUgb2YgdGhlIG1vZGFsLCBlaXRoZXIgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge01vZGFsVHlwZTxULCBEYXRhLCBSZXN1bHQ+IHwgVGVtcGxhdGVSZWY8VD59IGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwsIGVpdGhlciBhcyBhIGBUZW1wbGF0ZVJlZmAgb3IgYSBjb21wb25lbnQgdHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZGFsLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gQSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IG9wZW5lZCBtb2RhbCwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBhbmQgY29udHJvbCBvdmVyIHRoZSBtb2RhbCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBvcGVuPERhdGEsIFJlc3VsdCwgVD4oY29udGVudDogVGVtcGxhdGVSZWY8VD4sIG9wdGlvbnM/OiBQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj4pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+O1xuICBwdWJsaWMgb3BlbjxEYXRhLCBSZXN1bHQsIFQgPSB1bmtub3duPihjb250ZW50OiBNb2RhbFR5cGU8VCwgRGF0YSwgUmVzdWx0Piwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+Pik6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIHB1YmxpYyBvcGVuKGNvbnRlbnQ6IE1vZGFsVHlwZTx1bmtub3duPiB8IFRlbXBsYXRlUmVmPHVua25vd24+LCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM+KTogTW9kYWxSZWYge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy5jb25maWcsIHsgaWQ6IGdldFVuaXF1ZUlkKCdvZHgtbW9kYWwnKSB9LCBvcHRpb25zID8/IHt9KSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgaWYgKHRoaXMuZ2V0TW9kYWxCeUlkKG1lcmdlZE9wdGlvbnMuaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgTW9kYWwgd2l0aCBJRCAke21lcmdlZE9wdGlvbnMuaWR9IGFscmVhZHkgb3BlbmApO1xuICAgIH1cbiAgICBjb25zdCBtb2RhbFJlZiA9IG5ldyBNb2RhbFJlZihtZXJnZWRPcHRpb25zLCAocmVmKSA9PiB0aGlzLm9wZW5Nb2RhbHMuaXNGaXJzdChyZWYpKTtcbiAgICB0aGlzLmF0dGFjaE1vZGFsKG1vZGFsUmVmLCBjb250ZW50KTtcbiAgICB0aGlzLm9wZW5Nb2RhbHMuYWRkKG1vZGFsUmVmKTtcbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1vZGFsKG1vZGFsUmVmOiBNb2RhbFJlZiwgY29udGVudDogRXhjbHVkZTxEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLmR5bmFtaWNWaWV3U2VydmljZS5jcmVhdGVWaWV3KE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjb250ZXh0OiB7IGNvbnRlbnQgfSxcbiAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtwcm92aWRlTW9kYWxSZWYobW9kYWxSZWYpXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICBob3N0OiBtb2RhbFJlZi5vcHRpb25zLmhvc3QsXG4gICAgfSk7XG4gICAgY29uc3QgZGlhbG9nID0gdmlld1JlZi5nZXRFbGVtZW50KCkgYXMgSFRNTERpYWxvZ0VsZW1lbnQ7XG4gICAgY29uc3Qgb25EZXN0cm95ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgZGlhbG9nPy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JBbmltYXRpb25zKGRpYWxvZyk7XG4gICAgICB0aGlzLmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdPRFhNb2RhbE9uQmVmb3JlQ2xvc2VkJykpO1xuICAgICAgZGlhbG9nPy5jbG9zZSgpO1xuICAgICAgdGhpcy5vcGVuTW9kYWxzLnJlbW92ZShtb2RhbFJlZik7XG4gICAgICB2aWV3UmVmLmRlc3Ryb3koKTtcbiAgICB9O1xuXG4gICAgbW9kYWxSZWYub25EZXN0cm95JC5waXBlKGZpbmFsaXplKG9uRGVzdHJveSkpLnN1YnNjcmliZSgpO1xuICAgIGRlZmVyRm4oKCkgPT4ge1xuICAgICAgZGlhbG9nPy5pc0Nvbm5lY3RlZCAmJiBkaWFsb2c/LnNob3dNb2RhbCgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -43,7 +43,7 @@ let TooltipDirective = class TooltipDirective {
43
43
  this.ngZone = inject(NgZone);
44
44
  this.connectedOverlayRef = null;
45
45
  this.tooltipOptions = injectTooltipConfig();
46
- this.ignoreBrowserTabSwitchFocus = false;
46
+ this.ignoreNextTooltipTrigger = false;
47
47
  this.tooltipId = null;
48
48
  this.element = injectElement();
49
49
  /**
@@ -137,17 +137,18 @@ let TooltipDirective = class TooltipDirective {
137
137
  this.eventManager.destroyListeners();
138
138
  this.ngZone.runOutsideAngular(() => {
139
139
  this.eventManager.register([openEvent, 'focusin'], (event) => {
140
- if (this.ignoreBrowserTabSwitchFocus && event?.type === 'focusin') {
141
- this.ignoreBrowserTabSwitchFocus = false;
140
+ if (this.ignoreNextTooltipTrigger && event?.type === 'focusin') {
141
+ this.ignoreNextTooltipTrigger = false;
142
142
  return;
143
143
  }
144
144
  this.showTrigger$$.next();
145
145
  });
146
146
  this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());
147
147
  this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');
148
- this.eventManager.register(['visibilitychange'], () => {
149
- if (this.document.visibilityState === 'hidden') {
150
- this.ignoreBrowserTabSwitchFocus = true;
148
+ this.eventManager.register(['ODXModalOnBeforeClosed', 'visibilitychange'], (event) => {
149
+ // Set the ignore flag when the modal is about to close or when the browser's tab/window becomes inactive
150
+ if (event?.type === 'ODXModalOnBeforeClosed' || this.document.visibilityState === 'hidden') {
151
+ this.ignoreNextTooltipTrigger = true;
151
152
  }
152
153
  }, 'document');
153
154
  });
@@ -179,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
179
180
  type: Input,
180
181
  args: [{ alias: 'odxTooltipVisible', transform: booleanAttribute }]
181
182
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90b29sdGlwL3NyYy9saWIvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxHLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQWEsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRXZEOzs7O0dBSUc7QUFHSSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQW1DM0I7Ozs7O09BS0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUFpRDtRQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FB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O3NCQURiLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5UmVmLCBDb25uZWN0ZWRPdmVybGF5U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY29ubmVjdGVkLW92ZXJsYXknO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWxheVVudGlsIH0gZnJvbSAnQG9keC9hbmd1bGFyL3J4anMnO1xuaW1wb3J0IHsgRXZlbnRNYW5hZ2VyLCBnZXRVbmlxdWVJZCwgaGFzQ2hhbmdlZCwgaW5qZWN0RWxlbWVudCwgTmdDaGFuZ2VzLCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlLCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHJlc29sdmVUb29sdGlwVHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucywgVG9vbHRpcFNpemUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RUb29sdGlwQ29uZmlnIH0gZnJvbSAnLi90b29sdGlwLmNvbmZpZyc7XG5cbi8qKlxuICogVG9vbHRpcERpcmVjdGl2ZSBtYW5hZ2VzIHRvb2x0aXBzIGZvciBob3N0IGVsZW1lbnRzIGJ5IGNyZWF0aW5nIG92ZXJsYXkgY29tcG9uZW50cyBkeW5hbWljYWxseS5cbiAqIEl0IHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdWNoIGFzIGNvbnRlbnQsIGRlbGF5IHRpbWluZ3MsIHZpc2liaWxpdHksIGFuZCB0b29sdGlwIHNpemluZy5cbiAqIFRoaXMgZGlyZWN0aXZlIHVzZXMgQW5ndWxhcidzIGNvbm5lY3RlZCBvdmVybGF5IHN5c3RlbSB0byBwb3NpdGlvbiBhbmQgbWFuYWdlIHRvb2x0aXAgdmlzaWJpbGl0eS5cbiAqL1xuQENTU0NvbXBvbmVudCgndG9vbHRpcC1ob3N0JylcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tvZHhUb29sdGlwXScsIGV4cG9ydEFzOiAnb2R4VG9vbHRpcCcsIHByb3ZpZGVyczogW0V2ZW50TWFuYWdlcl0sIGhvc3Q6IHsgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ3Rvb2x0aXBJZCcgfSB9KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudE1hbmFnZXIgPSBpbmplY3QoRXZlbnRNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWRPdmVybGF5U2VydmljZSA9IGluamVjdChDb25uZWN0ZWRPdmVybGF5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1RyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlkZVRyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBwcml2YXRlIGNvbm5lY3RlZE92ZXJsYXlSZWY6IENvbm5lY3RlZE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucyA9IGluamVjdFRvb2x0aXBDb25maWcoKTtcbiAgcHJpdmF0ZSBpZ25vcmVCcm93c2VyVGFiU3dpdGNoRm9jdXMgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgdG9vbHRpcElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIElucHV0IGZvciBkeW5hbWljIGNvbnRlbnQgdG8gZGlzcGxheSBpbiB0aGUgdG9vbHRpcC5cbiAgICogVGhpcyBjb250ZW50IGlzIHJlYWN0aXZlIGFuZCBjYW4gY2hhbmdlIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY0NvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoJ29keFRvb2x0aXAnKVxuICBwdWJsaWMgY29udGVudD86IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIFR5cGU8dW5rbm93bj4+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgZGlzYWJsZWQuIEEgZGlzYWJsZWQgdG9vbHRpcCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdvZHhUb29sdGlwRGlzYWJsZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRvb2x0aXAuXG4gICAqIEl0IGFsbG93cyBzZXR0aW5nIHZhcmlvdXMgYmVoYXZpb3JzIGxpa2UgZGVsYXkgYW5kIHBvc2l0aW9uaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBJbnB1dCgnb2R4VG9vbHRpcE9wdGlvbnMnKVxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IFBhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy50b29sdGlwT3B0aW9ucywgdmFsdWUpIGFzIFRvb2x0aXBPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpemUgb2YgdGhlIHRvb2x0aXAuXG4gICAqXG4gICAqIEB0eXBlIHtUb29sdGlwU2l6ZX1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KCdvZHhUb29sdGlwU2l6ZScpXG4gIHB1YmxpYyBzaXplPzogVG9vbHRpcFNpemUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHRvb2x0aXAuXG4gICAqIFVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljYWxseSB0b2dnbGluZyB0aGUgdG9vbHRpcCBkaXNwbGF5LlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnb2R4VG9vbHRpcFZpc2libGUnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHZpc2libGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkT3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gICAgY29uc3Qgc2hvdyQgPSB0aGlzLnNob3dUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5pc09wZW4pLFxuICAgICAgZGVsYXlVbnRpbCgoKSA9PiB0aGlzLnRvb2x0aXBPcHRpb25zLmRlbGF5SW4sIHRoaXMuaGlkZVRyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93KCkpLFxuICAgICk7XG4gICAgY29uc3QgaGlkZSQgPSB0aGlzLmhpZGVUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzT3BlbiksXG4gICAgICBkZWxheVVudGlsKCgpID0+IHRoaXMudG9vbHRpcE9wdGlvbnMuZGVsYXlPdXQsIHRoaXMuc2hvd1RyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5oaWRlKCkpLFxuICAgICk7XG4gICAgbWVyZ2Uoc2hvdyQsIGhpZGUkKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogTmdDaGFuZ2VzPFRvb2x0aXBEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ2Rpc2FibGVkJykgJiYgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnY29udGVudCcsICdzaXplJ10pKSB7XG4gICAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWY/LnVwZGF0ZSh7IGNvbnRleHQ6IHsgY29udGVudDogdGhpcy5jb250ZW50LCBzaXplOiB0aGlzLnNpemUgfSB9KTtcbiAgICB9XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ29wdGlvbnMnKSkge1xuICAgICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy51cGRhdGUodGhpcy50b29sdGlwT3B0aW9ucyk7XG4gICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZpc2libGUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSB0b29sdGlwLCBjcmVhdGluZyBhbmQgYXR0YWNoaW5nIHRoZSBvdmVybGF5IHRvIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb250ZW50KSByZXR1cm47XG4gICAgdGhpcy50b29sdGlwSWQgPSBnZXRVbmlxdWVJZCgnb2R4LXRvb2x0aXAnKTtcbiAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWYgPSB0aGlzLmNvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlLmNyZWF0ZU92ZXJsYXkoXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHtcbiAgICAgICAgLi4udGhpcy50b29sdGlwT3B0aW9ucyxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6ICdvZHgtdG9vbHRpcC1vdmVybGF5JyxcbiAgICAgICAgY29udGVudDogVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgY29udGV4dDogeyBjb250ZW50OiB0aGlzLmNvbnRlbnQsIHNpemU6IHRoaXMuc2l6ZSA/PyB0aGlzLnRvb2x0aXBPcHRpb25zLnNpemUsIGlkOiB0aGlzLnRvb2x0aXBJZCB9LFxuICAgICAgICBzaG93QXJyb3c6IHRydWUsXG4gICAgICAgIGVuYWJsZUZhbGxiYWNrOiB0cnVlLFxuICAgICAgICBub25JbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7IGhvc3Q6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgdG9vbHRpcCwgZGV0YWNoaW5nIHRoZSBvdmVybGF5IGZyb20gdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBoaWRlKGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoKCF0aGlzLmlzT3BlbiB8fCAodGhpcy52aXNpYmxlICYmICF0aGlzLmRpc2FibGVkKSkgJiYgIWZvcmNlKSByZXR1cm47XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy5jbG9zZShmb3JjZSk7XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmID0gbnVsbDtcbiAgICB0aGlzLnRvb2x0aXBJZCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IFtvcGVuRXZlbnQsIGNsb3NlRXZlbnRdID0gcmVzb2x2ZVRvb2x0aXBUcmlnZ2VyRXZlbnRzKHRoaXMudG9vbHRpcE9wdGlvbnMudHJpZ2dlcik7XG4gICAgdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveUxpc3RlbmVycygpO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyLnJlZ2lzdGVyKFtvcGVuRXZlbnQsICdmb2N1c2luJ10sIChldmVudDogRXZlbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaWdub3JlQnJvd3NlclRhYlN3aXRjaEZvY3VzICYmIGV2ZW50Py50eXBlID09PSAnZm9jdXNpbicpIHtcbiAgICAgICAgICB0aGlzLmlnbm9yZUJyb3dzZXJUYWJTd2l0Y2hGb2N1cyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dUcmlnZ2VyJCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihbY2xvc2VFdmVudCwgJ2ZvY3Vzb3V0J10sICgpID0+IHRoaXMuaGlkZVRyaWdnZXIkJC5uZXh0KCkpO1xuICAgICAgdGhpcy5ldmVudE1hbmFnZXIucmVnaXN0ZXIoWydrZXl1cC5lc2MnXSwgKCkgPT4gdGhpcy5oaWRlVHJpZ2dlciQkLm5leHQoKSwgJ2RvY3VtZW50Jyk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihcbiAgICAgICAgWyd2aXNpYmlsaXR5Y2hhbmdlJ10sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICB0aGlzLmlnbm9yZUJyb3dzZXJUYWJTd2l0Y2hGb2N1cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnZG9jdW1lbnQnLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90b29sdGlwL3NyYy9saWIvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxHLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQWEsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRXZEOzs7O0dBSUc7QUFHSSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQW1DM0I7Ozs7O09BS0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUFpRDtRQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FB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RGpCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVluQixJQUFJO3NCQURWLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVdoQixPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5UmVmLCBDb25uZWN0ZWRPdmVybGF5U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY29ubmVjdGVkLW92ZXJsYXknO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWxheVVudGlsIH0gZnJvbSAnQG9keC9hbmd1bGFyL3J4anMnO1xuaW1wb3J0IHsgRXZlbnRNYW5hZ2VyLCBnZXRVbmlxdWVJZCwgaGFzQ2hhbmdlZCwgaW5qZWN0RWxlbWVudCwgTmdDaGFuZ2VzLCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlLCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHJlc29sdmVUb29sdGlwVHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucywgVG9vbHRpcFNpemUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RUb29sdGlwQ29uZmlnIH0gZnJvbSAnLi90b29sdGlwLmNvbmZpZyc7XG5cbi8qKlxuICogVG9vbHRpcERpcmVjdGl2ZSBtYW5hZ2VzIHRvb2x0aXBzIGZvciBob3N0IGVsZW1lbnRzIGJ5IGNyZWF0aW5nIG92ZXJsYXkgY29tcG9uZW50cyBkeW5hbWljYWxseS5cbiAqIEl0IHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdWNoIGFzIGNvbnRlbnQsIGRlbGF5IHRpbWluZ3MsIHZpc2liaWxpdHksIGFuZCB0b29sdGlwIHNpemluZy5cbiAqIFRoaXMgZGlyZWN0aXZlIHVzZXMgQW5ndWxhcidzIGNvbm5lY3RlZCBvdmVybGF5IHN5c3RlbSB0byBwb3NpdGlvbiBhbmQgbWFuYWdlIHRvb2x0aXAgdmlzaWJpbGl0eS5cbiAqL1xuQENTU0NvbXBvbmVudCgndG9vbHRpcC1ob3N0JylcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tvZHhUb29sdGlwXScsIGV4cG9ydEFzOiAnb2R4VG9vbHRpcCcsIHByb3ZpZGVyczogW0V2ZW50TWFuYWdlcl0sIGhvc3Q6IHsgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ3Rvb2x0aXBJZCcgfSB9KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudE1hbmFnZXIgPSBpbmplY3QoRXZlbnRNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWRPdmVybGF5U2VydmljZSA9IGluamVjdChDb25uZWN0ZWRPdmVybGF5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1RyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlkZVRyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBwcml2YXRlIGNvbm5lY3RlZE92ZXJsYXlSZWY6IENvbm5lY3RlZE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucyA9IGluamVjdFRvb2x0aXBDb25maWcoKTtcbiAgcHJpdmF0ZSBpZ25vcmVOZXh0VG9vbHRpcFRyaWdnZXIgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgdG9vbHRpcElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIElucHV0IGZvciBkeW5hbWljIGNvbnRlbnQgdG8gZGlzcGxheSBpbiB0aGUgdG9vbHRpcC5cbiAgICogVGhpcyBjb250ZW50IGlzIHJlYWN0aXZlIGFuZCBjYW4gY2hhbmdlIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY0NvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoJ29keFRvb2x0aXAnKVxuICBwdWJsaWMgY29udGVudD86IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIFR5cGU8dW5rbm93bj4+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgZGlzYWJsZWQuIEEgZGlzYWJsZWQgdG9vbHRpcCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdvZHhUb29sdGlwRGlzYWJsZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRvb2x0aXAuXG4gICAqIEl0IGFsbG93cyBzZXR0aW5nIHZhcmlvdXMgYmVoYXZpb3JzIGxpa2UgZGVsYXkgYW5kIHBvc2l0aW9uaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBJbnB1dCgnb2R4VG9vbHRpcE9wdGlvbnMnKVxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IFBhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy50b29sdGlwT3B0aW9ucywgdmFsdWUpIGFzIFRvb2x0aXBPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpemUgb2YgdGhlIHRvb2x0aXAuXG4gICAqXG4gICAqIEB0eXBlIHtUb29sdGlwU2l6ZX1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KCdvZHhUb29sdGlwU2l6ZScpXG4gIHB1YmxpYyBzaXplPzogVG9vbHRpcFNpemUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHRvb2x0aXAuXG4gICAqIFVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljYWxseSB0b2dnbGluZyB0aGUgdG9vbHRpcCBkaXNwbGF5LlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnb2R4VG9vbHRpcFZpc2libGUnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHZpc2libGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkT3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gICAgY29uc3Qgc2hvdyQgPSB0aGlzLnNob3dUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5pc09wZW4pLFxuICAgICAgZGVsYXlVbnRpbCgoKSA9PiB0aGlzLnRvb2x0aXBPcHRpb25zLmRlbGF5SW4sIHRoaXMuaGlkZVRyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93KCkpLFxuICAgICk7XG4gICAgY29uc3QgaGlkZSQgPSB0aGlzLmhpZGVUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzT3BlbiksXG4gICAgICBkZWxheVVudGlsKCgpID0+IHRoaXMudG9vbHRpcE9wdGlvbnMuZGVsYXlPdXQsIHRoaXMuc2hvd1RyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5oaWRlKCkpLFxuICAgICk7XG4gICAgbWVyZ2Uoc2hvdyQsIGhpZGUkKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogTmdDaGFuZ2VzPFRvb2x0aXBEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ2Rpc2FibGVkJykgJiYgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnY29udGVudCcsICdzaXplJ10pKSB7XG4gICAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWY/LnVwZGF0ZSh7IGNvbnRleHQ6IHsgY29udGVudDogdGhpcy5jb250ZW50LCBzaXplOiB0aGlzLnNpemUgfSB9KTtcbiAgICB9XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ29wdGlvbnMnKSkge1xuICAgICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy51cGRhdGUodGhpcy50b29sdGlwT3B0aW9ucyk7XG4gICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZpc2libGUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSB0b29sdGlwLCBjcmVhdGluZyBhbmQgYXR0YWNoaW5nIHRoZSBvdmVybGF5IHRvIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb250ZW50KSByZXR1cm47XG4gICAgdGhpcy50b29sdGlwSWQgPSBnZXRVbmlxdWVJZCgnb2R4LXRvb2x0aXAnKTtcbiAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWYgPSB0aGlzLmNvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlLmNyZWF0ZU92ZXJsYXkoXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHtcbiAgICAgICAgLi4udGhpcy50b29sdGlwT3B0aW9ucyxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6ICdvZHgtdG9vbHRpcC1vdmVybGF5JyxcbiAgICAgICAgY29udGVudDogVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgY29udGV4dDogeyBjb250ZW50OiB0aGlzLmNvbnRlbnQsIHNpemU6IHRoaXMuc2l6ZSA/PyB0aGlzLnRvb2x0aXBPcHRpb25zLnNpemUsIGlkOiB0aGlzLnRvb2x0aXBJZCB9LFxuICAgICAgICBzaG93QXJyb3c6IHRydWUsXG4gICAgICAgIGVuYWJsZUZhbGxiYWNrOiB0cnVlLFxuICAgICAgICBub25JbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7IGhvc3Q6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgdG9vbHRpcCwgZGV0YWNoaW5nIHRoZSBvdmVybGF5IGZyb20gdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBoaWRlKGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoKCF0aGlzLmlzT3BlbiB8fCAodGhpcy52aXNpYmxlICYmICF0aGlzLmRpc2FibGVkKSkgJiYgIWZvcmNlKSByZXR1cm47XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy5jbG9zZShmb3JjZSk7XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmID0gbnVsbDtcbiAgICB0aGlzLnRvb2x0aXBJZCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IFtvcGVuRXZlbnQsIGNsb3NlRXZlbnRdID0gcmVzb2x2ZVRvb2x0aXBUcmlnZ2VyRXZlbnRzKHRoaXMudG9vbHRpcE9wdGlvbnMudHJpZ2dlcik7XG4gICAgdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveUxpc3RlbmVycygpO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyLnJlZ2lzdGVyKFtvcGVuRXZlbnQsICdmb2N1c2luJ10sIChldmVudDogRXZlbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaWdub3JlTmV4dFRvb2x0aXBUcmlnZ2VyICYmIGV2ZW50Py50eXBlID09PSAnZm9jdXNpbicpIHtcbiAgICAgICAgICB0aGlzLmlnbm9yZU5leHRUb29sdGlwVHJpZ2dlciA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dUcmlnZ2VyJCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihbY2xvc2VFdmVudCwgJ2ZvY3Vzb3V0J10sICgpID0+IHRoaXMuaGlkZVRyaWdnZXIkJC5uZXh0KCkpO1xuICAgICAgdGhpcy5ldmVudE1hbmFnZXIucmVnaXN0ZXIoWydrZXl1cC5lc2MnXSwgKCkgPT4gdGhpcy5oaWRlVHJpZ2dlciQkLm5leHQoKSwgJ2RvY3VtZW50Jyk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihcbiAgICAgICAgWydPRFhNb2RhbE9uQmVmb3JlQ2xvc2VkJywgJ3Zpc2liaWxpdHljaGFuZ2UnXSxcbiAgICAgICAgKGV2ZW50PzogRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBTZXQgdGhlIGlnbm9yZSBmbGFnIHdoZW4gdGhlIG1vZGFsIGlzIGFib3V0IHRvIGNsb3NlIG9yIHdoZW4gdGhlIGJyb3dzZXIncyB0YWIvd2luZG93IGJlY29tZXMgaW5hY3RpdmVcbiAgICAgICAgICBpZiAoZXZlbnQ/LnR5cGUgPT09ICdPRFhNb2RhbE9uQmVmb3JlQ2xvc2VkJyB8fCB0aGlzLmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgIHRoaXMuaWdub3JlTmV4dFRvb2x0aXBUcmlnZ2VyID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdkb2N1bWVudCcsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -13,6 +13,7 @@ import { ActionGroupComponent } from '@odx/angular/components/action-group';
13
13
  import { IconComponent, IconSet } from '@odx/angular/components/icon';
14
14
  import { A11yModule } from '@odx/angular/cdk/a11y';
15
15
  import * as i1$1 from '@angular/common';
16
+ import { DOCUMENT } from '@angular/common';
16
17
  import { ButtonGroupComponent } from '@odx/angular/components/button-group';
17
18
 
18
19
  const ModalHeroVariant = {
@@ -610,6 +611,7 @@ class ModalService {
610
611
  this.openModals = new Queue();
611
612
  this.injector = inject(Injector);
612
613
  this.dynamicViewService = inject(DynamicViewService);
614
+ this.document = inject(DOCUMENT);
613
615
  /**
614
616
  * An observable that emits the current value of the openModals subject.
615
617
  *
@@ -673,6 +675,7 @@ class ModalService {
673
675
  const onDestroy = async () => {
674
676
  dialog?.classList.add('is-hidden');
675
677
  await waitForAnimations(dialog);
678
+ this.document.dispatchEvent(new Event('ODXModalOnBeforeClosed'));
676
679
  dialog?.close();
677
680
  this.openModals.remove(modalRef);
678
681
  viewRef.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-modal.mjs","sources":["../../../../libs/angular/components/modal/src/lib/models/modal-hero-variant.ts","../../../../libs/angular/components/modal/src/lib/models/modal-ref.ts","../../../../libs/angular/components/modal/src/lib/models/modal-size.ts","../../../../libs/angular/components/modal/src/lib/models/modal-variant.ts","../../../../libs/angular/components/modal/src/lib/helpers/inject-modal-ref.ts","../../../../libs/angular/components/modal/src/lib/helpers/provide-modal-ref.ts","../../../../libs/angular/components/modal/src/lib/directives/modal-close.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/modal-content.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/modal-dismiss.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/prevent-form-method-dialog.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/prevent-method-dialog.directive.ts","../../../../libs/angular/components/modal/src/lib/components/modal-footer/modal-footer.component.ts","../../../../libs/angular/components/modal/src/lib/components/modal-footer/modal-footer.component.html","../../../../libs/angular/components/modal/src/lib/components/modal-header/modal-header.component.ts","../../../../libs/angular/components/modal/src/lib/components/modal-header/modal-header.component.html","../../../../libs/angular/components/modal/src/lib/components/modal-hero/modal-hero.component.ts","../../../../libs/angular/components/modal/src/lib/components/modal-hero/modal-hero.component.html","../../../../libs/angular/components/modal/src/lib/components/basic-modal/basic-modal.component.ts","../../../../libs/angular/components/modal/src/lib/components/basic-modal/basic-modal.component.html","../../../../libs/angular/components/modal/src/lib/modal.component.ts","../../../../libs/angular/components/modal/src/lib/modal.component.html","../../../../libs/angular/components/modal/src/lib/modal.config.ts","../../../../libs/angular/components/modal/src/lib/modal.service.ts","../../../../libs/angular/components/modal/src/lib/modal.directive.ts","../../../../libs/angular/components/modal/src/lib/modal.module.ts","../../../../libs/angular/components/modal/src/odx-angular-components-modal.ts"],"sourcesContent":["export type ModalHeroVariant = (typeof ModalHeroVariant)[keyof typeof ModalHeroVariant];\n\nexport const ModalHeroVariant = {\n PRIMARY: 'primary',\n SUCCESS: 'success',\n CONFIRMATION: 'confirmation',\n DANGER: 'danger',\n} as const;\n","import { Controller } from '@odx/angular';\nimport { deepmerge } from '@odx/angular/internal';\nimport { share, Subject } from 'rxjs';\nimport { ModalOptions } from './modal-options';\n\n/**\n * A reference to a dynamically created modal, providing methods to manipulate, close, or update the modal's state\n * and options.\n * This class extends the `Controller` base class from `@odx/angular`, adding modal-specific functionalities like\n * handling closures and dismissals.\n *\n * @template Data - The type of data passed to the modal.\n * @template Result - The type of the result emitted when the modal is closed.\n *\n * @see {Controller}\n */\nexport class ModalRef<Data = unknown, Result = unknown> extends Controller {\n private readonly onClose$$ = new Subject<Result>();\n private readonly onDismiss$$ = new Subject<void>();\n\n /** An observable that emits when the modal is closed with a result. */\n public readonly onClose$ = this.onClose$$.pipe(share({ resetOnRefCountZero: true }));\n\n /** An observable that emits when the modal is dismissed without a result. */\n public readonly onDismiss$ = this.onDismiss$$.pipe(share({ resetOnRefCountZero: true }));\n\n /** An observable that merges the onClose$ and onDismiss$ streams for cases when any kind of teardown is needed. */\n public readonly onDestroy$ = deepmerge(this.onClose$, this.onDismiss$);\n\n /** A method that returns whether the modal is currently active. */\n public readonly isActive: () => boolean;\n\n /** Gets the unique identifier for the modal instance.\n *\n * @returns {string} The unique identifier for the modal instance.\n */\n public get id(): string {\n return this.options.id;\n }\n\n /** Gets the ARIA label ID for the modal title, based on the modal's ID.\n *\n * @returns {string} The ARIA label ID for the modal title.\n */\n public get modalTitleId(): string {\n return `${this.options.id}-title`;\n }\n\n /** Gets the data passed to the modal. This is useful for modal initialization.\n *\n * @returns {Data} The data passed to the modal.\n */\n public get data(): Data {\n return this.internalOptions.data;\n }\n\n /** Gets the current options for the modal. These options include configurations.\n *\n * @template Data - The type of data passed to the modal.\n * @returns {ModalOptions<Data>} The current options for the modal.\n */\n public get options(): ModalOptions<Data> {\n return this.internalOptions;\n }\n\n constructor(\n private internalOptions: ModalOptions<Data>,\n isActive: (modalRef: ModalRef<Data, Result>) => boolean,\n ) {\n super();\n this.isActive = () => isActive(this);\n }\n\n /**\n * Updates the modal's options.\n *\n * @param {Partial<ModalOptions<Data>>} options A partial set of options to update.\n */\n public update(options: Partial<ModalOptions<Data>>): void {\n this.internalOptions = deepmerge(this.internalOptions, options) as ModalOptions<Data>;\n this.triggerControllerChange();\n }\n\n /**\n * Dismisses the modal. This does not result in an output value.\n *\n * @param {boolean} [force=false] Whether to force dismissal regardless of the `canDismiss` condition.\n */\n public dismiss(force = false): void {\n if (!force && !this.isActive()) return;\n if (this.options.canDismiss?.(this.data) === false) return;\n this.onDismiss$$.next();\n this.destroy();\n }\n\n /**\n * Closes the modal with a result.\n *\n * @param {Result} result The result to emit when the modal closes.\n */\n public close(result: Result): void {\n if (!this.isActive()) return;\n if (this.options.canClose?.(this.data) === false) return;\n this.onClose$$.next(result);\n this.destroy();\n }\n\n /** Completes the onClose and onDismiss streams and cleans up resources. */\n public destroy(): void {\n this.onClose$$.complete();\n this.onDismiss$$.complete();\n }\n}\n","export type ModalSize = (typeof ModalSize)[keyof typeof ModalSize];\n\nexport const ModalSize = {\n XSMALL: 'xsmall',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","export type ModalVariant = typeof ModalVariant[keyof typeof ModalVariant];\n\nexport const ModalVariant = {\n DEFAULT: 'default',\n SIDESHEET: 'sidesheet',\n} as const;\n","import { inject } from '@angular/core';\nimport { ModalRef } from '../models';\n\n/**\n * Utility function to inject a reference to a modal. This function simplifies the injection process by typing the `ModalRef` to the specific data and result expected by the consumer.\n *\n * This approach abstracts away Angular's inject function, providing direct access to the modal reference with the correct type. It is commonly used in components or services that interact with a modal dialog to manipulate its data, close it, or perform other related actions.\n *\n * @template Data The type of data passed to the modal.\n * @template Result The type of result expected when the modal closes.\n * @returns {ModalRef<Data, Result>} A strongly typed reference to the modal.\n *\n * @example\n * ```ts\n * // Injecting a modal reference in a component or service:\n * const modalRef = injectModalRef<SomeDataType, SomeResultType>();\n *\n * // Using the modal reference to close the modal and return a result:\n * modalRef.close(someResult);\n *\n * // Accessing the data provided to the modal:\n * const modalData = modalRef.data;\n * ```\n */\nexport function injectModalRef<Data, Result = unknown>(): ModalRef<Data, Result> {\n return inject(ModalRef<Data, Result>);\n}\n","import { ValueProvider } from '@angular/core';\nimport { ModalRef } from '../models';\n\n/**\n * Provides a configuration for the Angular dependency injection system to inject a specific instance of `ModalRef`.\n * This function is particularly useful when you want to configure a provider for a `ModalRef` within an Angular module or component.\n *\n * @template D The data type expected by the modal.\n * @template R The result type that the modal will produce.\n * @param {ModalRef<D, R>} modalRef An instance of `ModalRef` to be provided.\n * @returns {ValueProvider} An Angular value provider that can be used in module or component providers arrays.\n */\nexport function provideModalRef<D = unknown, R = unknown>(modalRef: ModalRef<D, R>): ValueProvider {\n return { provide: ModalRef, useValue: modalRef };\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { injectModalRef } from '../helpers';\n\n/**\n * A directive that enables an element to close or dismiss a modal when clicked.\n * It can be used on any element within a modal to trigger the close or dismiss action, optionally passing a result back to the modal opener.\n *\n * The directive accepts an input value that determines the result to be passed back on modal close. If no value is provided, or it's explicitly set to `null`,\n * the modal is dismissed without sending a result. If the input value is `undefined`, the modal is dismissed via the `dismiss` method without passing any result.\n *\n * @template T - The type of the result to be emitted when the modal closes. Defaults to `unknown`.\n *\n * @example\n * Closing a modal and passing a result:\n * ```html\n * <button [odxModalClose]=\"myResult\">Close and send result</button>\n * ```\n *\n * Simply dismissing a modal without passing a result:\n * ```html\n * <button odxModalClose>Dismiss</button>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[odxModalClose]',\n})\nexport class ModalCloseDirective<T = unknown> {\n private readonly modalRef = injectModalRef();\n\n /**\n * Represents the result to be passed back to the modal opener when the modal is closed.\n * @template T - The type of the result returned.\n */\n @Input('odxModalClose')\n public result?: T | null = null;\n\n @HostListener('click')\n protected onClick(): void {\n const result = this.result === '' ? null : this.result;\n\n if (result === undefined) {\n this.modalRef.dismiss();\n } else {\n this.modalRef.close(result ?? null);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * Represents a directive for the content of a modal.\n */\n@CSSComponent('modal__content')\n@Directive({\n standalone: true,\n selector: 'odx-modal-content',\n})\nexport class ModalContentDirective {\n public readonly element = injectElement();\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectModalRef } from '../helpers';\n\n/**\n * A directive that enables an element to dismiss a modal when clicked. This can be applied\n * to any clickable element within a modal, such as buttons or links, to provide a declarative\n * approach to dismissing the modal.\n *\n * Utilizes `injectModalRef` to access the modal reference associated with the containing modal,\n * enabling the directive to call the `dismiss` method on the modal reference upon the click event.\n *\n * @example\n * Dismissing a modal using the odxModalDismiss directive on a button:\n * ```html\n * <button odxModalDismiss>Cancel</button>\n * ```\n *\n * This directive simplifies modal dismissal by removing the need for manually wiring click events\n * to dismiss methods in the component class, thereby enhancing template readability and maintainability.\n */\n@Directive({\n standalone: true,\n selector: '[odxModalDismiss]',\n})\nexport class ModalDismissDirective {\n private readonly modalRef = injectModalRef();\n\n @HostListener('click')\n protected onClick(): void {\n this.modalRef.dismiss();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n/**\n * Directive that prevents the default form method behavior on submit buttons inside an HTML Dialog form.\n */\n@Directive({\n standalone: true,\n selector: '[formmethod=dialog]',\n})\nexport class PreventFormMethodDialogDirective {\n @HostListener('click', ['$event'])\n protected onClick(event: Event): void {\n event.preventDefault();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n/**\n * Directive that prevents the default form submission behavior inside an HTML Dialog form.\n */\n@Directive({\n standalone: true,\n selector: 'form[method=dialog]',\n})\nexport class PreventMethodDialogDirective {\n @HostListener('submit', ['$event'])\n protected onFormSubmit(event: Event): void {\n event.preventDefault();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * Represents the footer component of a modal.\n */\n@CSSComponent('modal__footer')\n@Component({\n standalone: true,\n selector: 'odx-modal-footer',\n templateUrl: './modal-footer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalFooterComponent {\n public readonly element = injectElement();\n}\n","<ng-content />\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChild, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { AreaHeaderComponent, AreaHeaderSize } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { ModalDismissDirective } from '../../directives';\nimport { injectModalRef } from '../../helpers';\n\n/**\n * Represents the header component of a modal.\n */\n@CSSComponent('modal__header')\n@Component({\n standalone: true,\n selector: 'odx-modal-header',\n templateUrl: './modal-header.component.html',\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, ModalDismissDirective],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalHeaderComponent implements AfterContentInit {\n protected readonly modalRef = injectModalRef();\n\n public readonly element = injectElement();\n\n /**\n * The area header component associated with the modal header.\n *\n * @type {AreaHeaderComponent | undefined}\n */\n @ContentChild(AreaHeaderComponent)\n public areaHeaderComponent?: AreaHeaderComponent;\n\n constructor() {\n detectControllerChanges(this.modalRef).subscribe();\n }\n\n public ngAfterContentInit(): void {\n if (this.areaHeaderComponent) {\n this.areaHeaderComponent.size = AreaHeaderSize.MEDIUM;\n }\n }\n}\n","<ng-content select=\"odx-area-header\" />\n@if (modalRef.options.dismissable) {\n <odx-action-group class=\"odx-modal__dismiss\">\n <button odxButton odxModalDismiss><odx-icon name=\"close\" iconSet=\"core\" /></button>\n </odx-action-group>\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent, IconSet } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { ModalDismissDirective } from '../../directives';\nimport { injectModalRef } from '../../helpers';\nimport { ModalHeroVariant } from '../../models';\n\n/**\n * Represents a modal hero component.\n */\n@CSSComponent('modal-hero')\n@Component({\n selector: 'odx-modal-hero',\n standalone: true,\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, ModalDismissDirective],\n templateUrl: './modal-hero.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalHeroComponent {\n public readonly element = injectElement();\n\n /**\n * The modal reference of the modal hero component.\n *\n * @type {ModalRef}\n */\n public readonly modalRef = injectModalRef();\n\n /**\n * The icon of the modal hero component.\n *\n * @type {string}\n */\n @Input()\n public icon?: string | null;\n\n /**\n * The icon set of the modal hero component.\n *\n * @type {IconSet}\n * @default IconSet.CORE\n */\n @Input()\n public iconSet: IconSet = IconSet.CORE;\n\n /**\n * The variant of the modal hero component.\n *\n * @type {ModalHeroVariant | null}\n */\n @CSSModifier()\n @Input()\n public variant?: ModalHeroVariant | null;\n\n constructor() {\n detectControllerChanges(this.modalRef).subscribe();\n }\n}\n","@if (icon) {\n <odx-icon class=\"odx-modal-hero__icon\" [name]=\"icon\" [iconSet]=\"iconSet\" size=\"xlarge\" />\n}\n\n<div class=\"odx-modal-hero__title odx-heading-4\">\n <ng-content />\n</div>\n@if (modalRef.options.dismissable) {\n <odx-action-group class=\"odx-modal-hero__dismiss\">\n <button odxButton odxModalDismiss>\n <odx-icon name=\"close\" iconSet=\"core\" />\n </button>\n </odx-action-group>\n}\n","import { ChangeDetectionStrategy, Component, inject, Injector, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { AreaHeaderComponent } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { ModalCloseDirective, ModalContentDirective } from '../../directives';\nimport { injectModalRef } from '../../helpers';\nimport { BasicModalOptions, GetModalActionData, Modal } from '../../models';\nimport { ModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from '../modal-header/modal-header.component';\nimport { ModalHeroComponent } from '../modal-hero/modal-hero.component';\n\n/**\n * Represents a basic modal component that can be used to display dynamic content, handle modal actions, and interact\n * with other components through dependency injection. It includes common modal features such as headers, footers, and dynamic content areas.\n * This component uses the `ModalRef` to manage its state and interactions.\n *\n * The `BasicModalComponent` is designed to be flexible and reusable for various modal dialog needs within an application.\n *\n * @template Result The expected result type that the modal might produce, typically used when the modal closes.\n */\n@Component({\n selector: 'odx-basic-modal',\n standalone: true,\n imports: [\n CoreModule,\n DynamicViewDirective,\n ButtonComponent,\n AreaHeaderComponent,\n ModalHeaderComponent,\n ModalHeroComponent,\n ModalFooterComponent,\n ModalContentDirective,\n ModalCloseDirective,\n ],\n templateUrl: './basic-modal.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BasicModalComponent<Result = unknown> implements Modal<BasicModalOptions<Result>, GetModalActionData<BasicModalOptions<Result>>> {\n protected readonly injector = inject(Injector);\n\n /**\n * The reference to the modal.\n *\n * @type {ModalRef<BasicModalOptions<Result>>}\n */\n public readonly modalRef = injectModalRef<BasicModalOptions<Result>, GetModalActionData<BasicModalOptions<Result>>>();\n\n protected get data(): BasicModalOptions<Result> {\n return this.modalRef.data;\n }\n}\n","@if (data.heroIcon; as icon) {\n <odx-modal-hero [icon]=\"icon\" [variant]=\"data.heroVariant\">\n <ng-template [odxDynamicView]=\"data.title\" />\n </odx-modal-hero>\n} @else {\n <odx-modal-header>\n <odx-area-header>\n <ng-template [odxDynamicView]=\"data.title\" />\n </odx-area-header>\n </odx-modal-header>\n}\n\n<odx-modal-content>\n <ng-template [odxDynamicView]=\"data.content\" [odxDynamicViewInjector]=\"injector\" />\n</odx-modal-content>\n\n<odx-modal-footer>\n @for (action of data.actions; track $index) {\n <button odxButton [variant]=\"action.variant\" [odxModalClose]=\"action.data\">\n {{ action.label }}\n </button>\n }\n</odx-modal-footer>\n","import { ChangeDetectionStrategy, Component, HostListener, Injector, Input, OnChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicContent, DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { NgChanges, hasChanged, injectElement, isTemplateRef } from '@odx/angular/utils';\nimport { injectModalRef } from './helpers';\n\n/**\n * A component that represents a modal dialog with dynamic content and customizable animations.\n * It supports both modal and sidesheet variants with configurable animations for each type.\n */\n@CSSComponent('modal')\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'dialog[odx-dialog-modal]',\n templateUrl: './modal.component.html',\n imports: [A11yModule, CoreModule, DynamicViewDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'modalRef.options.id',\n '[attr.aria-labelledby]': 'modalRef.modalTitleId',\n '[attr.role]': '\"dialog\"',\n },\n})\nexport class ModalComponent implements OnChanges {\n protected readonly modalRef = injectModalRef();\n protected readonly injector = inject(Injector);\n protected readonly context = { $implicit: this.modalRef };\n\n public readonly element = injectElement<HTMLDialogElement>();\n\n /**\n * Size of the modal as a CSS modifier based on modal options.\n *\n * @type {ModalSize}\n */\n @CSSModifier()\n public size = this.modalRef.options.size;\n\n /**\n * Variant of the modal as a CSS modifier that influences animation choices.\n *\n * @type {ModalVariant}\n */\n @CSSModifier()\n public variant = this.modalRef.options.variant;\n\n /**\n * Boolean that indicates if the content is a component type rather than a template.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n public withComponent = false;\n\n /**\n * Dynamic content to be loaded into the modal. Excludes simple textual content\n * to enable complex Angular components or templates.\n *\n * @type {Exclude<DynamicContent, DynamicTextContent>}\n */\n @Input()\n public content!: Exclude<DynamicContent, DynamicTextContent>;\n\n constructor() {\n detectControllerChanges(this.modalRef).subscribe(() => {\n this.size = this.modalRef.options.size;\n });\n }\n\n public ngOnChanges(changes: NgChanges<ModalComponent>): void {\n if (hasChanged(changes, 'content', false)) {\n this.withComponent = !isTemplateRef(this.content);\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected preventNativeDismiss(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.modalRef.options.dismissable && this.modalRef.destroy();\n }\n }\n\n @HostListener('cancel', ['$event'])\n @HostListener('close', ['$event'])\n protected handleDialogClose({ target }: KeyboardEvent): void {\n if (target === this.element.nativeElement) this.modalRef.dismiss();\n }\n}\n","<div\n [odxClickOutsideActive]=\"modalRef.isActive() && modalRef.options.dismissable && modalRef.options.interactiveBackdrop\"\n (odxClickOutside)=\"modalRef.dismiss()\"\n class=\"odx-modal__container\"\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewContext]=\"withComponent ? {} : context\" [odxDynamicViewInjector]=\"injector\" />\n</div>\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { ModalInstanceOptions, ModalSize } from './models';\nimport { ModalVariant } from './models/modal-variant';\n\nexport type ModalConfig = Omit<ModalInstanceOptions, 'id' | 'host' | 'data'>;\n\n/**\n * Utilizes `createConfigTokens` to create configuration tokens and utility functions for managing modal configurations.\n * This setup enables easy injection and provision of default global settings for modals throughout the application,\n * fostering consistency and ease of customization.\n *\n * The generated tokens and functions include:\n * - `ModalDefaultConfig`: The default configuration values for modals.\n * - `ModalConfig`: An Angular `InjectionToken` for injecting modal configuration into components or services.\n * - `injectModalConfig`: A utility function for retrieving the current modal configuration, considering any overrides.\n * - `provideModalConfig`: A function that allows specifying overrides to the default modal configuration.\n *\n * @example\n * ```ts\n * // Example of providing a custom modal configuration in an Angular module\n * @NgModule({\n * providers: [\n * provideModalConfig({\n * size: ModalSize.LARGE,\n * dismissable: false\n * })\n * ]\n * })\n * class AppModule {}\n *\n * // Example of injecting modal configuration in a component\n * @Component({...})\n * export class MyComponent {\n * constructor(@Inject(ModalConfig) private modalConfig: ModalConfig) {\n * console.log(this.modalConfig.size); // Outputs the size from the provided or default configuration\n * }\n * }\n * ```\n */\nexport const { ModalDefaultConfig, ModalConfig, injectModalConfig, provideModalConfig } = createConfigTokens('Modal', '@odx/angular/components/modal', {\n dismissable: true,\n size: ModalSize.MEDIUM,\n dismissOnNavigation: true,\n interactiveBackdrop: true,\n variant: ModalVariant.DEFAULT,\n} as ModalConfig);\n","import { Location } from '@angular/common';\nimport { inject, Injectable, Injector, TemplateRef } from '@angular/core';\nimport { DynamicContent, DynamicTextContent, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deepmerge } from '@odx/angular/internal';\nimport { deferFn, getUniqueId, Queue, waitForAnimations } from '@odx/angular/utils';\nimport { finalize } from 'rxjs';\nimport { BasicModalComponent } from './components';\nimport { provideModalRef } from './helpers';\nimport { ModalComponent } from './modal.component';\nimport { injectModalConfig } from './modal.config';\nimport { BasicModalOptions, GetModalActionData, ModalOptions, ModalRef, ModalSize, ModalType } from './models';\n/**\n * Service for managing modal dialogs within the application. It supports creating, opening,\n * and dismissing modals dynamically, with comprehensive options for customization and lifecycle management.\n * Utilizes Angular's dynamic view management to instantiate and render modals as needed.\n *\n * @example\n * ```ts\n * // Example of using ModalService to open a modal\n * constructor(private modalService: ModalService) {}\n *\n * openModal() {\n * const modalRef = this.modalService.open(MyModalContentComponent, {\n * data: { someData: 'test' },\n * size: ModalSize.SMALL,\n * });\n *\n * modalRef.onClose$.subscribe(result => {\n * console.log('Modal closed with result:', result);\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly config = injectModalConfig();\n private readonly openModals = new Queue<ModalRef>();\n private readonly injector = inject(Injector);\n private readonly dynamicViewService = inject(DynamicViewService);\n\n /**\n * An observable that emits the current value of the openModals subject.\n *\n * @emits {ModalRef[]} openModals$ - The current array of open modals.\n */\n public readonly openModals$ = this.openModals.value$;\n\n constructor(location: Location) {\n location.onUrlChange(() => {\n for (const modalRef of this.openModals.toArray()) {\n if (modalRef.options.dismissOnNavigation) {\n modalRef.destroy();\n }\n }\n });\n }\n\n /**\n * Dismisses all open modals.\n */\n public dismissAll(): void {\n for (const modalRef of this.openModals.toArray()) {\n modalRef.dismiss();\n }\n }\n\n /**\n * Retrieves the modal reference by its ID.\n *\n * @template Data The type of data passed to the modal.\n * @template Result The type of result returned by the modal.\n * @param {ModalOptions['id']} id The ID of the modal.\n * @returns {ModalRef<Data, Result> | null} - The modal reference if found, otherwise null.\n */\n public getModalById<Data = unknown, Result = unknown>(id: ModalOptions['id']): ModalRef<Data, Result> | null {\n return this.openModals.get(id) as ModalRef<Data, Result>;\n }\n\n /**\n * Creates a modal with the specified options.\n * @template Data - The type of data passed to the modal for use in its content.\n * @template Result - The type of result expected when the modal is closed.\n * @param {Data} modal - The basic modal options.\n * @param {Partial<ModalOptions<Data>> | undefined} options - Additional modal options.\n * @returns {ModalRef<Data, Result>} The reference to the created modal.\n */\n public create<Data extends BasicModalOptions, Result = GetModalActionData<Data>>(modal: Data, options?: Partial<ModalOptions<Data>>): ModalRef<Data, Result>;\n public create(modal: BasicModalOptions, options?: ModalOptions): ModalRef {\n return this.open(BasicModalComponent, {\n data: modal,\n size: ModalSize.SMALL,\n ...options,\n });\n }\n\n /**\n * Creates and opens a new modal with the specified content and options.\n *\n * @template Data - The type of data passed to the modal for use in its content.\n * @template Result - The type of result expected when the modal is closed.\n * @template T - The content type of the modal, either a `TemplateRef` or a component.\n * @param {ModalType<T, Data, Result> | TemplateRef<T>} content - The content of the modal, either as a `TemplateRef` or a component type.\n * @param {Partial<ModalOptions<Data>>} [options] - Optional configuration options for the modal.\n * @returns {ModalRef<Data, Result>} A reference to the newly opened modal, allowing interaction with and control over the modal instance.\n */\n public open<Data, Result, T>(content: TemplateRef<T>, options?: Partial<ModalOptions<Data>>): ModalRef<Data, Result>;\n public open<Data, Result, T = unknown>(content: ModalType<T, Data, Result>, options?: Partial<ModalOptions<Data>>): ModalRef<Data, Result>;\n public open(content: ModalType<unknown> | TemplateRef<unknown>, options?: Partial<ModalOptions>): ModalRef {\n const mergedOptions = deepmerge(this.config, { id: getUniqueId('odx-modal') }, options ?? {}) as ModalOptions;\n if (this.getModalById(mergedOptions.id)) {\n throw Error(`Modal with ID ${mergedOptions.id} already open`);\n }\n const modalRef = new ModalRef(mergedOptions, (ref) => this.openModals.isFirst(ref));\n this.attachModal(modalRef, content);\n this.openModals.add(modalRef);\n return modalRef;\n }\n\n private attachModal(modalRef: ModalRef, content: Exclude<DynamicContent, DynamicTextContent>): void {\n const viewRef = this.dynamicViewService.createView(ModalComponent, {\n context: { content },\n injector: Injector.create({\n providers: [provideModalRef(modalRef)],\n parent: this.injector,\n }),\n host: modalRef.options.host,\n });\n const dialog = viewRef.getElement() as HTMLDialogElement;\n const onDestroy = async () => {\n dialog?.classList.add('is-hidden');\n await waitForAnimations(dialog);\n dialog?.close();\n this.openModals.remove(modalRef);\n viewRef.destroy();\n };\n\n modalRef.onDestroy$.pipe(finalize(onDestroy)).subscribe();\n deferFn(() => {\n dialog?.isConnected && dialog?.showModal();\n });\n }\n}\n","import { Directive, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, TemplateRef } from '@angular/core';\nimport { hasChanged, NgChanges } from '@odx/angular/utils';\nimport { ModalService } from './modal.service';\nimport { ModalOptions, ModalRef } from './models';\n\n/**\n * A directive that simplifies the creation and management of modals directly from Angular templates.\n * It allows for declarative modal instantiation with full control over modal options, and supports\n * capturing modal close and dismiss events.\n *\n * Usage:\n * Apply `odxModal` to an `<ng-template>` element and bind it to modal options.\n */\n@Directive({\n standalone: true,\n selector: 'ng-template[odxModal]',\n exportAs: 'odxModal',\n})\nexport class ModalDirective implements OnChanges, OnDestroy {\n private readonly modalService = inject(ModalService);\n private modalRef: ModalRef | null = null;\n\n protected readonly template = inject(TemplateRef);\n\n /**\n * Options for the modal directive.\n *\n * @type {Partial<ModalOptions> | '' | null}\n */\n @Input('odxModal')\n public modalOptions?: Partial<ModalOptions> | '' | null;\n\n /**\n * Event emitter for closing the modal.\n *\n * @emits {any} The result of the modal close event.\n */\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('odxModalClose')\n public modalClose = new EventEmitter();\n\n /**\n * Event emitter for dismissing the modal.\n *\n * @emits {any} The result of the modal dismiss event.\n */\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('odxModalDismiss')\n public modalDismiss = new EventEmitter();\n\n public ngOnChanges(changes: NgChanges<ModalDirective>): void {\n if (hasChanged(changes, 'modalOptions') && this.modalOptions) {\n this.modalRef?.update(this.modalOptions);\n }\n }\n\n public ngOnDestroy() {\n this.dismiss();\n }\n\n /**\n * Opens the modal based on the provided template and options. Binds modal result and dismissal outputs to EventEmitter properties.\n */\n public open(): void {\n this.modalRef = this.modalService.open(this.template, this.modalOptions || {});\n this.modalRef.onClose$.subscribe((result) => this.modalClose.next(result));\n this.modalRef.onDismiss$.subscribe((result) => this.modalDismiss.next(result));\n }\n\n /**\n * Dismisses the currently opened modal.\n */\n public dismiss(): void {\n this.modalRef?.dismiss();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { ButtonGroupComponent } from '@odx/angular/components/button-group';\nimport { ModalFooterComponent, ModalHeaderComponent, ModalHeroComponent } from './components';\nimport {\n ModalCloseDirective,\n ModalContentDirective,\n ModalDismissDirective,\n PreventFormMethodDialogDirective,\n PreventMethodDialogDirective,\n} from './directives';\nimport { ModalComponent } from './modal.component';\nimport { ModalDirective } from './modal.directive';\n\nconst modules = [\n ModalComponent,\n ModalHeaderComponent,\n ModalHeroComponent,\n ModalFooterComponent,\n ModalDirective,\n ModalCloseDirective,\n ModalContentDirective,\n ModalDismissDirective,\n PreventMethodDialogDirective,\n PreventFormMethodDialogDirective,\n];\n\n@NgModule({\n imports: [ButtonComponent, ButtonGroupComponent, ...modules],\n exports: [CoreModule, AreaHeaderModule, ButtonComponent, ButtonGroupComponent, ...modules],\n})\nexport class ModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-modal.mjs","sources":["../../../../libs/angular/components/modal/src/lib/models/modal-hero-variant.ts","../../../../libs/angular/components/modal/src/lib/models/modal-ref.ts","../../../../libs/angular/components/modal/src/lib/models/modal-size.ts","../../../../libs/angular/components/modal/src/lib/models/modal-variant.ts","../../../../libs/angular/components/modal/src/lib/helpers/inject-modal-ref.ts","../../../../libs/angular/components/modal/src/lib/helpers/provide-modal-ref.ts","../../../../libs/angular/components/modal/src/lib/directives/modal-close.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/modal-content.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/modal-dismiss.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/prevent-form-method-dialog.directive.ts","../../../../libs/angular/components/modal/src/lib/directives/prevent-method-dialog.directive.ts","../../../../libs/angular/components/modal/src/lib/components/modal-footer/modal-footer.component.ts","../../../../libs/angular/components/modal/src/lib/components/modal-footer/modal-footer.component.html","../../../../libs/angular/components/modal/src/lib/components/modal-header/modal-header.component.ts","../../../../libs/angular/components/modal/src/lib/components/modal-header/modal-header.component.html","../../../../libs/angular/components/modal/src/lib/components/modal-hero/modal-hero.component.ts","../../../../libs/angular/components/modal/src/lib/components/modal-hero/modal-hero.component.html","../../../../libs/angular/components/modal/src/lib/components/basic-modal/basic-modal.component.ts","../../../../libs/angular/components/modal/src/lib/components/basic-modal/basic-modal.component.html","../../../../libs/angular/components/modal/src/lib/modal.component.ts","../../../../libs/angular/components/modal/src/lib/modal.component.html","../../../../libs/angular/components/modal/src/lib/modal.config.ts","../../../../libs/angular/components/modal/src/lib/modal.service.ts","../../../../libs/angular/components/modal/src/lib/modal.directive.ts","../../../../libs/angular/components/modal/src/lib/modal.module.ts","../../../../libs/angular/components/modal/src/odx-angular-components-modal.ts"],"sourcesContent":["export type ModalHeroVariant = (typeof ModalHeroVariant)[keyof typeof ModalHeroVariant];\n\nexport const ModalHeroVariant = {\n PRIMARY: 'primary',\n SUCCESS: 'success',\n CONFIRMATION: 'confirmation',\n DANGER: 'danger',\n} as const;\n","import { Controller } from '@odx/angular';\nimport { deepmerge } from '@odx/angular/internal';\nimport { share, Subject } from 'rxjs';\nimport { ModalOptions } from './modal-options';\n\n/**\n * A reference to a dynamically created modal, providing methods to manipulate, close, or update the modal's state\n * and options.\n * This class extends the `Controller` base class from `@odx/angular`, adding modal-specific functionalities like\n * handling closures and dismissals.\n *\n * @template Data - The type of data passed to the modal.\n * @template Result - The type of the result emitted when the modal is closed.\n *\n * @see {Controller}\n */\nexport class ModalRef<Data = unknown, Result = unknown> extends Controller {\n private readonly onClose$$ = new Subject<Result>();\n private readonly onDismiss$$ = new Subject<void>();\n\n /** An observable that emits when the modal is closed with a result. */\n public readonly onClose$ = this.onClose$$.pipe(share({ resetOnRefCountZero: true }));\n\n /** An observable that emits when the modal is dismissed without a result. */\n public readonly onDismiss$ = this.onDismiss$$.pipe(share({ resetOnRefCountZero: true }));\n\n /** An observable that merges the onClose$ and onDismiss$ streams for cases when any kind of teardown is needed. */\n public readonly onDestroy$ = deepmerge(this.onClose$, this.onDismiss$);\n\n /** A method that returns whether the modal is currently active. */\n public readonly isActive: () => boolean;\n\n /** Gets the unique identifier for the modal instance.\n *\n * @returns {string} The unique identifier for the modal instance.\n */\n public get id(): string {\n return this.options.id;\n }\n\n /** Gets the ARIA label ID for the modal title, based on the modal's ID.\n *\n * @returns {string} The ARIA label ID for the modal title.\n */\n public get modalTitleId(): string {\n return `${this.options.id}-title`;\n }\n\n /** Gets the data passed to the modal. This is useful for modal initialization.\n *\n * @returns {Data} The data passed to the modal.\n */\n public get data(): Data {\n return this.internalOptions.data;\n }\n\n /** Gets the current options for the modal. These options include configurations.\n *\n * @template Data - The type of data passed to the modal.\n * @returns {ModalOptions<Data>} The current options for the modal.\n */\n public get options(): ModalOptions<Data> {\n return this.internalOptions;\n }\n\n constructor(\n private internalOptions: ModalOptions<Data>,\n isActive: (modalRef: ModalRef<Data, Result>) => boolean,\n ) {\n super();\n this.isActive = () => isActive(this);\n }\n\n /**\n * Updates the modal's options.\n *\n * @param {Partial<ModalOptions<Data>>} options A partial set of options to update.\n */\n public update(options: Partial<ModalOptions<Data>>): void {\n this.internalOptions = deepmerge(this.internalOptions, options) as ModalOptions<Data>;\n this.triggerControllerChange();\n }\n\n /**\n * Dismisses the modal. This does not result in an output value.\n *\n * @param {boolean} [force=false] Whether to force dismissal regardless of the `canDismiss` condition.\n */\n public dismiss(force = false): void {\n if (!force && !this.isActive()) return;\n if (this.options.canDismiss?.(this.data) === false) return;\n this.onDismiss$$.next();\n this.destroy();\n }\n\n /**\n * Closes the modal with a result.\n *\n * @param {Result} result The result to emit when the modal closes.\n */\n public close(result: Result): void {\n if (!this.isActive()) return;\n if (this.options.canClose?.(this.data) === false) return;\n this.onClose$$.next(result);\n this.destroy();\n }\n\n /** Completes the onClose and onDismiss streams and cleans up resources. */\n public destroy(): void {\n this.onClose$$.complete();\n this.onDismiss$$.complete();\n }\n}\n","export type ModalSize = (typeof ModalSize)[keyof typeof ModalSize];\n\nexport const ModalSize = {\n XSMALL: 'xsmall',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","export type ModalVariant = typeof ModalVariant[keyof typeof ModalVariant];\n\nexport const ModalVariant = {\n DEFAULT: 'default',\n SIDESHEET: 'sidesheet',\n} as const;\n","import { inject } from '@angular/core';\nimport { ModalRef } from '../models';\n\n/**\n * Utility function to inject a reference to a modal. This function simplifies the injection process by typing the `ModalRef` to the specific data and result expected by the consumer.\n *\n * This approach abstracts away Angular's inject function, providing direct access to the modal reference with the correct type. It is commonly used in components or services that interact with a modal dialog to manipulate its data, close it, or perform other related actions.\n *\n * @template Data The type of data passed to the modal.\n * @template Result The type of result expected when the modal closes.\n * @returns {ModalRef<Data, Result>} A strongly typed reference to the modal.\n *\n * @example\n * ```ts\n * // Injecting a modal reference in a component or service:\n * const modalRef = injectModalRef<SomeDataType, SomeResultType>();\n *\n * // Using the modal reference to close the modal and return a result:\n * modalRef.close(someResult);\n *\n * // Accessing the data provided to the modal:\n * const modalData = modalRef.data;\n * ```\n */\nexport function injectModalRef<Data, Result = unknown>(): ModalRef<Data, Result> {\n return inject(ModalRef<Data, Result>);\n}\n","import { ValueProvider } from '@angular/core';\nimport { ModalRef } from '../models';\n\n/**\n * Provides a configuration for the Angular dependency injection system to inject a specific instance of `ModalRef`.\n * This function is particularly useful when you want to configure a provider for a `ModalRef` within an Angular module or component.\n *\n * @template D The data type expected by the modal.\n * @template R The result type that the modal will produce.\n * @param {ModalRef<D, R>} modalRef An instance of `ModalRef` to be provided.\n * @returns {ValueProvider} An Angular value provider that can be used in module or component providers arrays.\n */\nexport function provideModalRef<D = unknown, R = unknown>(modalRef: ModalRef<D, R>): ValueProvider {\n return { provide: ModalRef, useValue: modalRef };\n}\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { injectModalRef } from '../helpers';\n\n/**\n * A directive that enables an element to close or dismiss a modal when clicked.\n * It can be used on any element within a modal to trigger the close or dismiss action, optionally passing a result back to the modal opener.\n *\n * The directive accepts an input value that determines the result to be passed back on modal close. If no value is provided, or it's explicitly set to `null`,\n * the modal is dismissed without sending a result. If the input value is `undefined`, the modal is dismissed via the `dismiss` method without passing any result.\n *\n * @template T - The type of the result to be emitted when the modal closes. Defaults to `unknown`.\n *\n * @example\n * Closing a modal and passing a result:\n * ```html\n * <button [odxModalClose]=\"myResult\">Close and send result</button>\n * ```\n *\n * Simply dismissing a modal without passing a result:\n * ```html\n * <button odxModalClose>Dismiss</button>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[odxModalClose]',\n})\nexport class ModalCloseDirective<T = unknown> {\n private readonly modalRef = injectModalRef();\n\n /**\n * Represents the result to be passed back to the modal opener when the modal is closed.\n * @template T - The type of the result returned.\n */\n @Input('odxModalClose')\n public result?: T | null = null;\n\n @HostListener('click')\n protected onClick(): void {\n const result = this.result === '' ? null : this.result;\n\n if (result === undefined) {\n this.modalRef.dismiss();\n } else {\n this.modalRef.close(result ?? null);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * Represents a directive for the content of a modal.\n */\n@CSSComponent('modal__content')\n@Directive({\n standalone: true,\n selector: 'odx-modal-content',\n})\nexport class ModalContentDirective {\n public readonly element = injectElement();\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectModalRef } from '../helpers';\n\n/**\n * A directive that enables an element to dismiss a modal when clicked. This can be applied\n * to any clickable element within a modal, such as buttons or links, to provide a declarative\n * approach to dismissing the modal.\n *\n * Utilizes `injectModalRef` to access the modal reference associated with the containing modal,\n * enabling the directive to call the `dismiss` method on the modal reference upon the click event.\n *\n * @example\n * Dismissing a modal using the odxModalDismiss directive on a button:\n * ```html\n * <button odxModalDismiss>Cancel</button>\n * ```\n *\n * This directive simplifies modal dismissal by removing the need for manually wiring click events\n * to dismiss methods in the component class, thereby enhancing template readability and maintainability.\n */\n@Directive({\n standalone: true,\n selector: '[odxModalDismiss]',\n})\nexport class ModalDismissDirective {\n private readonly modalRef = injectModalRef();\n\n @HostListener('click')\n protected onClick(): void {\n this.modalRef.dismiss();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n/**\n * Directive that prevents the default form method behavior on submit buttons inside an HTML Dialog form.\n */\n@Directive({\n standalone: true,\n selector: '[formmethod=dialog]',\n})\nexport class PreventFormMethodDialogDirective {\n @HostListener('click', ['$event'])\n protected onClick(event: Event): void {\n event.preventDefault();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n/**\n * Directive that prevents the default form submission behavior inside an HTML Dialog form.\n */\n@Directive({\n standalone: true,\n selector: 'form[method=dialog]',\n})\nexport class PreventMethodDialogDirective {\n @HostListener('submit', ['$event'])\n protected onFormSubmit(event: Event): void {\n event.preventDefault();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * Represents the footer component of a modal.\n */\n@CSSComponent('modal__footer')\n@Component({\n standalone: true,\n selector: 'odx-modal-footer',\n templateUrl: './modal-footer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalFooterComponent {\n public readonly element = injectElement();\n}\n","<ng-content />\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChild, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { AreaHeaderComponent, AreaHeaderSize } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { ModalDismissDirective } from '../../directives';\nimport { injectModalRef } from '../../helpers';\n\n/**\n * Represents the header component of a modal.\n */\n@CSSComponent('modal__header')\n@Component({\n standalone: true,\n selector: 'odx-modal-header',\n templateUrl: './modal-header.component.html',\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, ModalDismissDirective],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalHeaderComponent implements AfterContentInit {\n protected readonly modalRef = injectModalRef();\n\n public readonly element = injectElement();\n\n /**\n * The area header component associated with the modal header.\n *\n * @type {AreaHeaderComponent | undefined}\n */\n @ContentChild(AreaHeaderComponent)\n public areaHeaderComponent?: AreaHeaderComponent;\n\n constructor() {\n detectControllerChanges(this.modalRef).subscribe();\n }\n\n public ngAfterContentInit(): void {\n if (this.areaHeaderComponent) {\n this.areaHeaderComponent.size = AreaHeaderSize.MEDIUM;\n }\n }\n}\n","<ng-content select=\"odx-area-header\" />\n@if (modalRef.options.dismissable) {\n <odx-action-group class=\"odx-modal__dismiss\">\n <button odxButton odxModalDismiss><odx-icon name=\"close\" iconSet=\"core\" /></button>\n </odx-action-group>\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent, IconSet } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { ModalDismissDirective } from '../../directives';\nimport { injectModalRef } from '../../helpers';\nimport { ModalHeroVariant } from '../../models';\n\n/**\n * Represents a modal hero component.\n */\n@CSSComponent('modal-hero')\n@Component({\n selector: 'odx-modal-hero',\n standalone: true,\n imports: [CoreModule, ActionGroupComponent, ButtonComponent, IconComponent, ModalDismissDirective],\n templateUrl: './modal-hero.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalHeroComponent {\n public readonly element = injectElement();\n\n /**\n * The modal reference of the modal hero component.\n *\n * @type {ModalRef}\n */\n public readonly modalRef = injectModalRef();\n\n /**\n * The icon of the modal hero component.\n *\n * @type {string}\n */\n @Input()\n public icon?: string | null;\n\n /**\n * The icon set of the modal hero component.\n *\n * @type {IconSet}\n * @default IconSet.CORE\n */\n @Input()\n public iconSet: IconSet = IconSet.CORE;\n\n /**\n * The variant of the modal hero component.\n *\n * @type {ModalHeroVariant | null}\n */\n @CSSModifier()\n @Input()\n public variant?: ModalHeroVariant | null;\n\n constructor() {\n detectControllerChanges(this.modalRef).subscribe();\n }\n}\n","@if (icon) {\n <odx-icon class=\"odx-modal-hero__icon\" [name]=\"icon\" [iconSet]=\"iconSet\" size=\"xlarge\" />\n}\n\n<div class=\"odx-modal-hero__title odx-heading-4\">\n <ng-content />\n</div>\n@if (modalRef.options.dismissable) {\n <odx-action-group class=\"odx-modal-hero__dismiss\">\n <button odxButton odxModalDismiss>\n <odx-icon name=\"close\" iconSet=\"core\" />\n </button>\n </odx-action-group>\n}\n","import { ChangeDetectionStrategy, Component, inject, Injector, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { AreaHeaderComponent } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { ModalCloseDirective, ModalContentDirective } from '../../directives';\nimport { injectModalRef } from '../../helpers';\nimport { BasicModalOptions, GetModalActionData, Modal } from '../../models';\nimport { ModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from '../modal-header/modal-header.component';\nimport { ModalHeroComponent } from '../modal-hero/modal-hero.component';\n\n/**\n * Represents a basic modal component that can be used to display dynamic content, handle modal actions, and interact\n * with other components through dependency injection. It includes common modal features such as headers, footers, and dynamic content areas.\n * This component uses the `ModalRef` to manage its state and interactions.\n *\n * The `BasicModalComponent` is designed to be flexible and reusable for various modal dialog needs within an application.\n *\n * @template Result The expected result type that the modal might produce, typically used when the modal closes.\n */\n@Component({\n selector: 'odx-basic-modal',\n standalone: true,\n imports: [\n CoreModule,\n DynamicViewDirective,\n ButtonComponent,\n AreaHeaderComponent,\n ModalHeaderComponent,\n ModalHeroComponent,\n ModalFooterComponent,\n ModalContentDirective,\n ModalCloseDirective,\n ],\n templateUrl: './basic-modal.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BasicModalComponent<Result = unknown> implements Modal<BasicModalOptions<Result>, GetModalActionData<BasicModalOptions<Result>>> {\n protected readonly injector = inject(Injector);\n\n /**\n * The reference to the modal.\n *\n * @type {ModalRef<BasicModalOptions<Result>>}\n */\n public readonly modalRef = injectModalRef<BasicModalOptions<Result>, GetModalActionData<BasicModalOptions<Result>>>();\n\n protected get data(): BasicModalOptions<Result> {\n return this.modalRef.data;\n }\n}\n","@if (data.heroIcon; as icon) {\n <odx-modal-hero [icon]=\"icon\" [variant]=\"data.heroVariant\">\n <ng-template [odxDynamicView]=\"data.title\" />\n </odx-modal-hero>\n} @else {\n <odx-modal-header>\n <odx-area-header>\n <ng-template [odxDynamicView]=\"data.title\" />\n </odx-area-header>\n </odx-modal-header>\n}\n\n<odx-modal-content>\n <ng-template [odxDynamicView]=\"data.content\" [odxDynamicViewInjector]=\"injector\" />\n</odx-modal-content>\n\n<odx-modal-footer>\n @for (action of data.actions; track $index) {\n <button odxButton [variant]=\"action.variant\" [odxModalClose]=\"action.data\">\n {{ action.label }}\n </button>\n }\n</odx-modal-footer>\n","import { ChangeDetectionStrategy, Component, HostListener, Injector, Input, OnChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicContent, DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { NgChanges, hasChanged, injectElement, isTemplateRef } from '@odx/angular/utils';\nimport { injectModalRef } from './helpers';\n\n/**\n * A component that represents a modal dialog with dynamic content and customizable animations.\n * It supports both modal and sidesheet variants with configurable animations for each type.\n */\n@CSSComponent('modal')\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'dialog[odx-dialog-modal]',\n templateUrl: './modal.component.html',\n imports: [A11yModule, CoreModule, DynamicViewDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'modalRef.options.id',\n '[attr.aria-labelledby]': 'modalRef.modalTitleId',\n '[attr.role]': '\"dialog\"',\n },\n})\nexport class ModalComponent implements OnChanges {\n protected readonly modalRef = injectModalRef();\n protected readonly injector = inject(Injector);\n protected readonly context = { $implicit: this.modalRef };\n\n public readonly element = injectElement<HTMLDialogElement>();\n\n /**\n * Size of the modal as a CSS modifier based on modal options.\n *\n * @type {ModalSize}\n */\n @CSSModifier()\n public size = this.modalRef.options.size;\n\n /**\n * Variant of the modal as a CSS modifier that influences animation choices.\n *\n * @type {ModalVariant}\n */\n @CSSModifier()\n public variant = this.modalRef.options.variant;\n\n /**\n * Boolean that indicates if the content is a component type rather than a template.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n public withComponent = false;\n\n /**\n * Dynamic content to be loaded into the modal. Excludes simple textual content\n * to enable complex Angular components or templates.\n *\n * @type {Exclude<DynamicContent, DynamicTextContent>}\n */\n @Input()\n public content!: Exclude<DynamicContent, DynamicTextContent>;\n\n constructor() {\n detectControllerChanges(this.modalRef).subscribe(() => {\n this.size = this.modalRef.options.size;\n });\n }\n\n public ngOnChanges(changes: NgChanges<ModalComponent>): void {\n if (hasChanged(changes, 'content', false)) {\n this.withComponent = !isTemplateRef(this.content);\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected preventNativeDismiss(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.modalRef.options.dismissable && this.modalRef.destroy();\n }\n }\n\n @HostListener('cancel', ['$event'])\n @HostListener('close', ['$event'])\n protected handleDialogClose({ target }: KeyboardEvent): void {\n if (target === this.element.nativeElement) this.modalRef.dismiss();\n }\n}\n","<div\n [odxClickOutsideActive]=\"modalRef.isActive() && modalRef.options.dismissable && modalRef.options.interactiveBackdrop\"\n (odxClickOutside)=\"modalRef.dismiss()\"\n class=\"odx-modal__container\"\n>\n <ng-template [odxDynamicView]=\"content\" [odxDynamicViewContext]=\"withComponent ? {} : context\" [odxDynamicViewInjector]=\"injector\" />\n</div>\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { ModalInstanceOptions, ModalSize } from './models';\nimport { ModalVariant } from './models/modal-variant';\n\nexport type ModalConfig = Omit<ModalInstanceOptions, 'id' | 'host' | 'data'>;\n\n/**\n * Utilizes `createConfigTokens` to create configuration tokens and utility functions for managing modal configurations.\n * This setup enables easy injection and provision of default global settings for modals throughout the application,\n * fostering consistency and ease of customization.\n *\n * The generated tokens and functions include:\n * - `ModalDefaultConfig`: The default configuration values for modals.\n * - `ModalConfig`: An Angular `InjectionToken` for injecting modal configuration into components or services.\n * - `injectModalConfig`: A utility function for retrieving the current modal configuration, considering any overrides.\n * - `provideModalConfig`: A function that allows specifying overrides to the default modal configuration.\n *\n * @example\n * ```ts\n * // Example of providing a custom modal configuration in an Angular module\n * @NgModule({\n * providers: [\n * provideModalConfig({\n * size: ModalSize.LARGE,\n * dismissable: false\n * })\n * ]\n * })\n * class AppModule {}\n *\n * // Example of injecting modal configuration in a component\n * @Component({...})\n * export class MyComponent {\n * constructor(@Inject(ModalConfig) private modalConfig: ModalConfig) {\n * console.log(this.modalConfig.size); // Outputs the size from the provided or default configuration\n * }\n * }\n * ```\n */\nexport const { ModalDefaultConfig, ModalConfig, injectModalConfig, provideModalConfig } = createConfigTokens('Modal', '@odx/angular/components/modal', {\n dismissable: true,\n size: ModalSize.MEDIUM,\n dismissOnNavigation: true,\n interactiveBackdrop: true,\n variant: ModalVariant.DEFAULT,\n} as ModalConfig);\n","import { DOCUMENT, Location } from '@angular/common';\nimport { inject, Injectable, Injector, TemplateRef } from '@angular/core';\nimport { DynamicContent, DynamicTextContent, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deepmerge } from '@odx/angular/internal';\nimport { deferFn, getUniqueId, Queue, waitForAnimations } from '@odx/angular/utils';\nimport { finalize } from 'rxjs';\nimport { BasicModalComponent } from './components';\nimport { provideModalRef } from './helpers';\nimport { ModalComponent } from './modal.component';\nimport { injectModalConfig } from './modal.config';\nimport { BasicModalOptions, GetModalActionData, ModalOptions, ModalRef, ModalSize, ModalType } from './models';\n/**\n * Service for managing modal dialogs within the application. It supports creating, opening,\n * and dismissing modals dynamically, with comprehensive options for customization and lifecycle management.\n * Utilizes Angular's dynamic view management to instantiate and render modals as needed.\n *\n * @example\n * ```ts\n * // Example of using ModalService to open a modal\n * constructor(private modalService: ModalService) {}\n *\n * openModal() {\n * const modalRef = this.modalService.open(MyModalContentComponent, {\n * data: { someData: 'test' },\n * size: ModalSize.SMALL,\n * });\n *\n * modalRef.onClose$.subscribe(result => {\n * console.log('Modal closed with result:', result);\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n private readonly config = injectModalConfig();\n private readonly openModals = new Queue<ModalRef>();\n private readonly injector = inject(Injector);\n private readonly dynamicViewService = inject(DynamicViewService);\n private readonly document = inject(DOCUMENT);\n\n /**\n * An observable that emits the current value of the openModals subject.\n *\n * @emits {ModalRef[]} openModals$ - The current array of open modals.\n */\n public readonly openModals$ = this.openModals.value$;\n\n constructor(location: Location) {\n location.onUrlChange(() => {\n for (const modalRef of this.openModals.toArray()) {\n if (modalRef.options.dismissOnNavigation) {\n modalRef.destroy();\n }\n }\n });\n }\n\n /**\n * Dismisses all open modals.\n */\n public dismissAll(): void {\n for (const modalRef of this.openModals.toArray()) {\n modalRef.dismiss();\n }\n }\n\n /**\n * Retrieves the modal reference by its ID.\n *\n * @template Data The type of data passed to the modal.\n * @template Result The type of result returned by the modal.\n * @param {ModalOptions['id']} id The ID of the modal.\n * @returns {ModalRef<Data, Result> | null} - The modal reference if found, otherwise null.\n */\n public getModalById<Data = unknown, Result = unknown>(id: ModalOptions['id']): ModalRef<Data, Result> | null {\n return this.openModals.get(id) as ModalRef<Data, Result>;\n }\n\n /**\n * Creates a modal with the specified options.\n * @template Data - The type of data passed to the modal for use in its content.\n * @template Result - The type of result expected when the modal is closed.\n * @param {Data} modal - The basic modal options.\n * @param {Partial<ModalOptions<Data>> | undefined} options - Additional modal options.\n * @returns {ModalRef<Data, Result>} The reference to the created modal.\n */\n public create<Data extends BasicModalOptions, Result = GetModalActionData<Data>>(modal: Data, options?: Partial<ModalOptions<Data>>): ModalRef<Data, Result>;\n public create(modal: BasicModalOptions, options?: ModalOptions): ModalRef {\n return this.open(BasicModalComponent, {\n data: modal,\n size: ModalSize.SMALL,\n ...options,\n });\n }\n\n /**\n * Creates and opens a new modal with the specified content and options.\n *\n * @template Data - The type of data passed to the modal for use in its content.\n * @template Result - The type of result expected when the modal is closed.\n * @template T - The content type of the modal, either a `TemplateRef` or a component.\n * @param {ModalType<T, Data, Result> | TemplateRef<T>} content - The content of the modal, either as a `TemplateRef` or a component type.\n * @param {Partial<ModalOptions<Data>>} [options] - Optional configuration options for the modal.\n * @returns {ModalRef<Data, Result>} A reference to the newly opened modal, allowing interaction with and control over the modal instance.\n */\n public open<Data, Result, T>(content: TemplateRef<T>, options?: Partial<ModalOptions<Data>>): ModalRef<Data, Result>;\n public open<Data, Result, T = unknown>(content: ModalType<T, Data, Result>, options?: Partial<ModalOptions<Data>>): ModalRef<Data, Result>;\n public open(content: ModalType<unknown> | TemplateRef<unknown>, options?: Partial<ModalOptions>): ModalRef {\n const mergedOptions = deepmerge(this.config, { id: getUniqueId('odx-modal') }, options ?? {}) as ModalOptions;\n if (this.getModalById(mergedOptions.id)) {\n throw Error(`Modal with ID ${mergedOptions.id} already open`);\n }\n const modalRef = new ModalRef(mergedOptions, (ref) => this.openModals.isFirst(ref));\n this.attachModal(modalRef, content);\n this.openModals.add(modalRef);\n return modalRef;\n }\n\n private attachModal(modalRef: ModalRef, content: Exclude<DynamicContent, DynamicTextContent>): void {\n const viewRef = this.dynamicViewService.createView(ModalComponent, {\n context: { content },\n injector: Injector.create({\n providers: [provideModalRef(modalRef)],\n parent: this.injector,\n }),\n host: modalRef.options.host,\n });\n const dialog = viewRef.getElement() as HTMLDialogElement;\n const onDestroy = async () => {\n dialog?.classList.add('is-hidden');\n await waitForAnimations(dialog);\n this.document.dispatchEvent(new Event('ODXModalOnBeforeClosed'));\n dialog?.close();\n this.openModals.remove(modalRef);\n viewRef.destroy();\n };\n\n modalRef.onDestroy$.pipe(finalize(onDestroy)).subscribe();\n deferFn(() => {\n dialog?.isConnected && dialog?.showModal();\n });\n }\n}\n","import { Directive, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, TemplateRef } from '@angular/core';\nimport { hasChanged, NgChanges } from '@odx/angular/utils';\nimport { ModalService } from './modal.service';\nimport { ModalOptions, ModalRef } from './models';\n\n/**\n * A directive that simplifies the creation and management of modals directly from Angular templates.\n * It allows for declarative modal instantiation with full control over modal options, and supports\n * capturing modal close and dismiss events.\n *\n * Usage:\n * Apply `odxModal` to an `<ng-template>` element and bind it to modal options.\n */\n@Directive({\n standalone: true,\n selector: 'ng-template[odxModal]',\n exportAs: 'odxModal',\n})\nexport class ModalDirective implements OnChanges, OnDestroy {\n private readonly modalService = inject(ModalService);\n private modalRef: ModalRef | null = null;\n\n protected readonly template = inject(TemplateRef);\n\n /**\n * Options for the modal directive.\n *\n * @type {Partial<ModalOptions> | '' | null}\n */\n @Input('odxModal')\n public modalOptions?: Partial<ModalOptions> | '' | null;\n\n /**\n * Event emitter for closing the modal.\n *\n * @emits {any} The result of the modal close event.\n */\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('odxModalClose')\n public modalClose = new EventEmitter();\n\n /**\n * Event emitter for dismissing the modal.\n *\n * @emits {any} The result of the modal dismiss event.\n */\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('odxModalDismiss')\n public modalDismiss = new EventEmitter();\n\n public ngOnChanges(changes: NgChanges<ModalDirective>): void {\n if (hasChanged(changes, 'modalOptions') && this.modalOptions) {\n this.modalRef?.update(this.modalOptions);\n }\n }\n\n public ngOnDestroy() {\n this.dismiss();\n }\n\n /**\n * Opens the modal based on the provided template and options. Binds modal result and dismissal outputs to EventEmitter properties.\n */\n public open(): void {\n this.modalRef = this.modalService.open(this.template, this.modalOptions || {});\n this.modalRef.onClose$.subscribe((result) => this.modalClose.next(result));\n this.modalRef.onDismiss$.subscribe((result) => this.modalDismiss.next(result));\n }\n\n /**\n * Dismisses the currently opened modal.\n */\n public dismiss(): void {\n this.modalRef?.dismiss();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { ButtonGroupComponent } from '@odx/angular/components/button-group';\nimport { ModalFooterComponent, ModalHeaderComponent, ModalHeroComponent } from './components';\nimport {\n ModalCloseDirective,\n ModalContentDirective,\n ModalDismissDirective,\n PreventFormMethodDialogDirective,\n PreventMethodDialogDirective,\n} from './directives';\nimport { ModalComponent } from './modal.component';\nimport { ModalDirective } from './modal.directive';\n\nconst modules = [\n ModalComponent,\n ModalHeaderComponent,\n ModalHeroComponent,\n ModalFooterComponent,\n ModalDirective,\n ModalCloseDirective,\n ModalContentDirective,\n ModalDismissDirective,\n PreventMethodDialogDirective,\n PreventFormMethodDialogDirective,\n];\n\n@NgModule({\n imports: [ButtonComponent, ButtonGroupComponent, ...modules],\n exports: [CoreModule, AreaHeaderModule, ButtonComponent, ButtonGroupComponent, ...modules],\n})\nexport class ModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -157,7 +157,7 @@ let TooltipDirective = class TooltipDirective {
157
157
  this.ngZone = inject(NgZone);
158
158
  this.connectedOverlayRef = null;
159
159
  this.tooltipOptions = injectTooltipConfig();
160
- this.ignoreBrowserTabSwitchFocus = false;
160
+ this.ignoreNextTooltipTrigger = false;
161
161
  this.tooltipId = null;
162
162
  this.element = injectElement();
163
163
  /**
@@ -251,17 +251,18 @@ let TooltipDirective = class TooltipDirective {
251
251
  this.eventManager.destroyListeners();
252
252
  this.ngZone.runOutsideAngular(() => {
253
253
  this.eventManager.register([openEvent, 'focusin'], (event) => {
254
- if (this.ignoreBrowserTabSwitchFocus && event?.type === 'focusin') {
255
- this.ignoreBrowserTabSwitchFocus = false;
254
+ if (this.ignoreNextTooltipTrigger && event?.type === 'focusin') {
255
+ this.ignoreNextTooltipTrigger = false;
256
256
  return;
257
257
  }
258
258
  this.showTrigger$$.next();
259
259
  });
260
260
  this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());
261
261
  this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');
262
- this.eventManager.register(['visibilitychange'], () => {
263
- if (this.document.visibilityState === 'hidden') {
264
- this.ignoreBrowserTabSwitchFocus = true;
262
+ this.eventManager.register(['ODXModalOnBeforeClosed', 'visibilitychange'], (event) => {
263
+ // Set the ignore flag when the modal is about to close or when the browser's tab/window becomes inactive
264
+ if (event?.type === 'ODXModalOnBeforeClosed' || this.document.visibilityState === 'hidden') {
265
+ this.ignoreNextTooltipTrigger = true;
265
266
  }
266
267
  }, 'document');
267
268
  });
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-tooltip.mjs","sources":["../../../../libs/angular/components/tooltip/src/lib/helpers/resolve-tooltip-trigger-events.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-size.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-options.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.config.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.html","../../../../libs/angular/components/tooltip/src/lib/tooltip.directive.ts","../../../../libs/angular/components/tooltip/src/odx-angular-components-tooltip.ts"],"sourcesContent":["import { TooltipTrigger } from '../models';\n\n/**\n * @internal\n * Resolves the appropriate event names for the provided tooltip trigger.\n *\n * @param {TooltipTrigger} trigger - The trigger to resolve.\n * @returns {[string, string | null]} - The event names for the trigger.\n */\nexport function resolveTooltipTriggerEvents(trigger: TooltipTrigger): [string, string | null] {\n if (trigger === 'click') {\n return ['click', null];\n } else {\n return ['mouseenter', 'mouseleave'];\n }\n}\n","export type TooltipSize = typeof TooltipSize[keyof typeof TooltipSize];\n\nexport const TooltipSize = {\n AUTO: 'auto',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","import { ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\nimport { TooltipSize } from './tooltip-size';\nimport { TooltipTrigger } from './tooltip-trigger';\n\nexport interface TooltipOptions extends Pick<ConnectedOverlayOptions, 'position' | 'matchReferenceWidth'> {\n trigger: TooltipTrigger;\n delayIn: number;\n delayOut: number;\n size: TooltipSize;\n}\n\nexport const DefaultTooltipOptions: TooltipOptions = {\n matchReferenceWidth: false,\n size: TooltipSize.AUTO,\n trigger: 'hover',\n position: 'top',\n delayIn: 0,\n delayOut: 0,\n};\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { DefaultTooltipOptions, TooltipOptions } from './models';\n\nexport type TooltipConfig = TooltipOptions;\n\n/**\n * Utility functions generated by `createConfigTokens` to handle injection and provision of `TooltipConfig`.\n * These include tokens and functions to access and provide the default configuration for tooltips.\n *\n * `TooltipDefaultConfig` provides the default settings for tooltips.\n * `TooltipConfig` is a token that can be used to inject tooltip configuration settings.\n * `injectTooltipConfig` is a function that retrieves the current tooltip configuration.\n * `provideTooltipConfig` is a function used to specify a custom configuration for tooltips.\n *\n * @example\n * ```ts\n * // In module providers:\n * providers: [\n * provideTooltipConfig({ // ... global module configuration }),\n * ]\n *\n * // In a component or service:\n * constructor(@Inject(TooltipConfig) private readonly config: TooltipConfig) {}\n *\n * // Or using the `injectTooltipConfig` function:\n * @Component({ ... })\n * export class MyComponent {\n * private readonly config = injectTooltipConfig();\n * }\n * ```\n */\nexport const { TooltipDefaultConfig, TooltipConfig, injectTooltipConfig, provideTooltipConfig } = createConfigTokens(\n 'Tooltip',\n '@odx/angular/components/tooltip',\n {\n ...DefaultTooltipOptions,\n } as TooltipConfig,\n);\n","import { ChangeDetectionStrategy, Component, inject, Injector, Input, Type, ViewEncapsulation } from '@angular/core';\nimport { DynamicContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { TooltipSize } from './models';\nimport { injectTooltipConfig } from './tooltip.config';\n\n/**\n /**\n * TooltipComponent displays contextual information related to an element when the user hovers over\n * or focuses on the element. It supports dynamic content and can be styled with different sizes.\n *\n * The component uses dynamic content rendering to provide flexible display options including text,\n * templates, or even other Angular components, making it highly customizable.\n */\n@CSSComponent('tooltip')\n@Component({\n standalone: true,\n selector: 'odx-tooltip',\n imports: [DynamicViewDirective],\n templateUrl: './tooltip.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n role: 'tooltip',\n },\n})\nexport class TooltipComponent {\n private readonly config = injectTooltipConfig();\n protected readonly injector = inject(Injector);\n public readonly element = injectElement();\n\n /**\n * The ID attribute of the tooltip, used for accessibility purposes to link the tooltip with its owner element.\n *\n * @type {string | null}\n * @default null\n */\n @Input()\n public id: string | null = null;\n\n /**\n * The content to be displayed within the tooltip. This can be text, a template reference, or a dynamic component.\n *\n * @type {DynamicContent | null}\n */\n @Input()\n public content?: Exclude<DynamicContent, Type<unknown>> | null;\n\n /**\n * Determines the size of the tooltip. It can adjust based on the content size or be set to specific dimensions.\n * The size influences the CSS class applied to the tooltip, allowing for custom styles.\n *\n * @type {TooltipSize}\n * @default TooltipSize.AUTO from the configuration\n */\n @CSSModifier()\n @Input()\n public size: TooltipSize = this.config.size;\n}\n","<ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\" />\n","import { DOCUMENT } from '@angular/common';\nimport { booleanAttribute, Directive, inject, Injector, Input, NgZone, OnChanges, OnDestroy, OnInit, Type } from '@angular/core';\nimport { ConnectedOverlayRef, ConnectedOverlayService } from '@odx/angular/cdk/connected-overlay';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, deepmerge } from '@odx/angular/internal';\nimport { delayUntil } from '@odx/angular/rxjs';\nimport { EventManager, getUniqueId, hasChanged, injectElement, NgChanges, untilDestroyed } from '@odx/angular/utils';\nimport { filter, merge, Subject, tap } from 'rxjs';\nimport { resolveTooltipTriggerEvents } from './helpers';\nimport { TooltipOptions, TooltipSize } from './models';\nimport { TooltipComponent } from './tooltip.component';\nimport { injectTooltipConfig } from './tooltip.config';\n\n/**\n * TooltipDirective manages tooltips for host elements by creating overlay components dynamically.\n * It provides configuration options such as content, delay timings, visibility, and tooltip sizing.\n * This directive uses Angular's connected overlay system to position and manage tooltip visibility.\n */\n@CSSComponent('tooltip-host')\n@Directive({ standalone: true, selector: '[odxTooltip]', exportAs: 'odxTooltip', providers: [EventManager], host: { '[attr.aria-describedby]': 'tooltipId' } })\nexport class TooltipDirective implements OnInit, OnChanges, OnDestroy {\n private readonly eventManager = inject(EventManager);\n private readonly connectedOverlayService = inject(ConnectedOverlayService);\n private readonly showTrigger$$ = new Subject<void>();\n private readonly hideTrigger$$ = new Subject<void>();\n private readonly document = inject(DOCUMENT);\n private readonly injector = inject(Injector);\n private readonly ngZone = inject(NgZone);\n\n private connectedOverlayRef: ConnectedOverlayRef | null = null;\n private tooltipOptions = injectTooltipConfig();\n private ignoreBrowserTabSwitchFocus = false;\n\n protected tooltipId: string | null = null;\n public readonly element = injectElement();\n\n /**\n * Input for dynamic content to display in the tooltip.\n * This content is reactive and can change dynamically.\n *\n * @type {DynamicContent | null}\n * @default null\n */\n @Input('odxTooltip')\n public content?: Exclude<DynamicContent, Type<unknown>> | null = null;\n\n /**\n * Controls whether the tooltip is disabled. A disabled tooltip will not be displayed.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipDisabled', transform: booleanAttribute })\n public disabled = false;\n\n /**\n * Configuration options for the tooltip.\n * It allows setting various behaviors like delay and positioning.\n *\n * @param {Partial<TooltipOptions> | null | undefined}\n */\n @Input('odxTooltipOptions')\n public set options(value: Partial<TooltipOptions> | null | undefined) {\n this.tooltipOptions = deepmerge(this.tooltipOptions, value) as TooltipOptions;\n }\n\n /**\n * Sets the size of the tooltip.\n *\n * @type {TooltipSize}\n * @default null\n */\n @Input('odxTooltipSize')\n public size?: TooltipSize | null = null;\n\n /**\n * Controls the visibility of the tooltip.\n * Useful for programmatically toggling the tooltip display.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipVisible', transform: booleanAttribute })\n public visible = false;\n\n /**\n * Indicates whether the tooltip is currently open.\n *\n * @returns {boolean}\n */\n public get isOpen(): boolean {\n return this.connectedOverlayRef !== null;\n }\n\n constructor() {\n const takeUntilDestroyed = untilDestroyed();\n const show$ = this.showTrigger$$.pipe(\n filter(() => !this.isOpen),\n delayUntil(() => this.tooltipOptions.delayIn, this.hideTrigger$$),\n tap(() => this.show()),\n );\n const hide$ = this.hideTrigger$$.pipe(\n filter(() => this.isOpen),\n delayUntil(() => this.tooltipOptions.delayOut, this.showTrigger$$),\n tap(() => this.hide()),\n );\n merge(show$, hide$).pipe(takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.registerEvents();\n }\n\n public ngOnChanges(changes: NgChanges<TooltipDirective>): void {\n if (hasChanged(changes, 'disabled') && this.disabled) {\n this.hide();\n }\n if (hasChanged(changes, ['content', 'size'])) {\n this.connectedOverlayRef?.update({ context: { content: this.content, size: this.size } });\n }\n if (hasChanged(changes, 'options')) {\n this.connectedOverlayRef?.update(this.tooltipOptions);\n this.registerEvents();\n }\n if (this.visible && !this.disabled) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n public ngOnDestroy(): void {\n this.hide(true);\n }\n\n /**\n * Shows the tooltip, creating and attaching the overlay to the host element.\n */\n public show(): void {\n if (this.isOpen || this.disabled || !this.content) return;\n this.tooltipId = getUniqueId('odx-tooltip');\n this.connectedOverlayRef = this.connectedOverlayService.createOverlay(\n this.element.nativeElement,\n {\n ...this.tooltipOptions,\n containerClass: 'odx-tooltip-overlay',\n content: TooltipComponent,\n context: { content: this.content, size: this.size ?? this.tooltipOptions.size, id: this.tooltipId },\n showArrow: true,\n enableFallback: true,\n nonInteractive: true,\n },\n { host: this.element.nativeElement.parentElement, injector: this.injector },\n );\n }\n\n /**\n * Hides the tooltip, detaching the overlay from the host element.\n */\n public hide(force = false): void {\n if ((!this.isOpen || (this.visible && !this.disabled)) && !force) return;\n this.connectedOverlayRef?.close(force);\n this.connectedOverlayRef = null;\n this.tooltipId = null;\n }\n\n private registerEvents(): void {\n const [openEvent, closeEvent] = resolveTooltipTriggerEvents(this.tooltipOptions.trigger);\n this.eventManager.destroyListeners();\n this.ngZone.runOutsideAngular(() => {\n this.eventManager.register([openEvent, 'focusin'], (event: Event | undefined) => {\n if (this.ignoreBrowserTabSwitchFocus && event?.type === 'focusin') {\n this.ignoreBrowserTabSwitchFocus = false;\n return;\n }\n this.showTrigger$$.next();\n });\n this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());\n this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');\n this.eventManager.register(\n ['visibilitychange'],\n () => {\n if (this.document.visibilityState === 'hidden') {\n this.ignoreBrowserTabSwitchFocus = true;\n }\n },\n 'document',\n );\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-tooltip.mjs","sources":["../../../../libs/angular/components/tooltip/src/lib/helpers/resolve-tooltip-trigger-events.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-size.ts","../../../../libs/angular/components/tooltip/src/lib/models/tooltip-options.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.config.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.ts","../../../../libs/angular/components/tooltip/src/lib/tooltip.component.html","../../../../libs/angular/components/tooltip/src/lib/tooltip.directive.ts","../../../../libs/angular/components/tooltip/src/odx-angular-components-tooltip.ts"],"sourcesContent":["import { TooltipTrigger } from '../models';\n\n/**\n * @internal\n * Resolves the appropriate event names for the provided tooltip trigger.\n *\n * @param {TooltipTrigger} trigger - The trigger to resolve.\n * @returns {[string, string | null]} - The event names for the trigger.\n */\nexport function resolveTooltipTriggerEvents(trigger: TooltipTrigger): [string, string | null] {\n if (trigger === 'click') {\n return ['click', null];\n } else {\n return ['mouseenter', 'mouseleave'];\n }\n}\n","export type TooltipSize = typeof TooltipSize[keyof typeof TooltipSize];\n\nexport const TooltipSize = {\n AUTO: 'auto',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","import { ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\nimport { TooltipSize } from './tooltip-size';\nimport { TooltipTrigger } from './tooltip-trigger';\n\nexport interface TooltipOptions extends Pick<ConnectedOverlayOptions, 'position' | 'matchReferenceWidth'> {\n trigger: TooltipTrigger;\n delayIn: number;\n delayOut: number;\n size: TooltipSize;\n}\n\nexport const DefaultTooltipOptions: TooltipOptions = {\n matchReferenceWidth: false,\n size: TooltipSize.AUTO,\n trigger: 'hover',\n position: 'top',\n delayIn: 0,\n delayOut: 0,\n};\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { DefaultTooltipOptions, TooltipOptions } from './models';\n\nexport type TooltipConfig = TooltipOptions;\n\n/**\n * Utility functions generated by `createConfigTokens` to handle injection and provision of `TooltipConfig`.\n * These include tokens and functions to access and provide the default configuration for tooltips.\n *\n * `TooltipDefaultConfig` provides the default settings for tooltips.\n * `TooltipConfig` is a token that can be used to inject tooltip configuration settings.\n * `injectTooltipConfig` is a function that retrieves the current tooltip configuration.\n * `provideTooltipConfig` is a function used to specify a custom configuration for tooltips.\n *\n * @example\n * ```ts\n * // In module providers:\n * providers: [\n * provideTooltipConfig({ // ... global module configuration }),\n * ]\n *\n * // In a component or service:\n * constructor(@Inject(TooltipConfig) private readonly config: TooltipConfig) {}\n *\n * // Or using the `injectTooltipConfig` function:\n * @Component({ ... })\n * export class MyComponent {\n * private readonly config = injectTooltipConfig();\n * }\n * ```\n */\nexport const { TooltipDefaultConfig, TooltipConfig, injectTooltipConfig, provideTooltipConfig } = createConfigTokens(\n 'Tooltip',\n '@odx/angular/components/tooltip',\n {\n ...DefaultTooltipOptions,\n } as TooltipConfig,\n);\n","import { ChangeDetectionStrategy, Component, inject, Injector, Input, Type, ViewEncapsulation } from '@angular/core';\nimport { DynamicContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { TooltipSize } from './models';\nimport { injectTooltipConfig } from './tooltip.config';\n\n/**\n /**\n * TooltipComponent displays contextual information related to an element when the user hovers over\n * or focuses on the element. It supports dynamic content and can be styled with different sizes.\n *\n * The component uses dynamic content rendering to provide flexible display options including text,\n * templates, or even other Angular components, making it highly customizable.\n */\n@CSSComponent('tooltip')\n@Component({\n standalone: true,\n selector: 'odx-tooltip',\n imports: [DynamicViewDirective],\n templateUrl: './tooltip.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n role: 'tooltip',\n },\n})\nexport class TooltipComponent {\n private readonly config = injectTooltipConfig();\n protected readonly injector = inject(Injector);\n public readonly element = injectElement();\n\n /**\n * The ID attribute of the tooltip, used for accessibility purposes to link the tooltip with its owner element.\n *\n * @type {string | null}\n * @default null\n */\n @Input()\n public id: string | null = null;\n\n /**\n * The content to be displayed within the tooltip. This can be text, a template reference, or a dynamic component.\n *\n * @type {DynamicContent | null}\n */\n @Input()\n public content?: Exclude<DynamicContent, Type<unknown>> | null;\n\n /**\n * Determines the size of the tooltip. It can adjust based on the content size or be set to specific dimensions.\n * The size influences the CSS class applied to the tooltip, allowing for custom styles.\n *\n * @type {TooltipSize}\n * @default TooltipSize.AUTO from the configuration\n */\n @CSSModifier()\n @Input()\n public size: TooltipSize = this.config.size;\n}\n","<ng-template [odxDynamicView]=\"content\" [odxDynamicViewInjector]=\"injector\" />\n","import { DOCUMENT } from '@angular/common';\nimport { booleanAttribute, Directive, inject, Injector, Input, NgZone, OnChanges, OnDestroy, OnInit, Type } from '@angular/core';\nimport { ConnectedOverlayRef, ConnectedOverlayService } from '@odx/angular/cdk/connected-overlay';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent, deepmerge } from '@odx/angular/internal';\nimport { delayUntil } from '@odx/angular/rxjs';\nimport { EventManager, getUniqueId, hasChanged, injectElement, NgChanges, untilDestroyed } from '@odx/angular/utils';\nimport { filter, merge, Subject, tap } from 'rxjs';\nimport { resolveTooltipTriggerEvents } from './helpers';\nimport { TooltipOptions, TooltipSize } from './models';\nimport { TooltipComponent } from './tooltip.component';\nimport { injectTooltipConfig } from './tooltip.config';\n\n/**\n * TooltipDirective manages tooltips for host elements by creating overlay components dynamically.\n * It provides configuration options such as content, delay timings, visibility, and tooltip sizing.\n * This directive uses Angular's connected overlay system to position and manage tooltip visibility.\n */\n@CSSComponent('tooltip-host')\n@Directive({ standalone: true, selector: '[odxTooltip]', exportAs: 'odxTooltip', providers: [EventManager], host: { '[attr.aria-describedby]': 'tooltipId' } })\nexport class TooltipDirective implements OnInit, OnChanges, OnDestroy {\n private readonly eventManager = inject(EventManager);\n private readonly connectedOverlayService = inject(ConnectedOverlayService);\n private readonly showTrigger$$ = new Subject<void>();\n private readonly hideTrigger$$ = new Subject<void>();\n private readonly document = inject(DOCUMENT);\n private readonly injector = inject(Injector);\n private readonly ngZone = inject(NgZone);\n\n private connectedOverlayRef: ConnectedOverlayRef | null = null;\n private tooltipOptions = injectTooltipConfig();\n private ignoreNextTooltipTrigger = false;\n\n protected tooltipId: string | null = null;\n public readonly element = injectElement();\n\n /**\n * Input for dynamic content to display in the tooltip.\n * This content is reactive and can change dynamically.\n *\n * @type {DynamicContent | null}\n * @default null\n */\n @Input('odxTooltip')\n public content?: Exclude<DynamicContent, Type<unknown>> | null = null;\n\n /**\n * Controls whether the tooltip is disabled. A disabled tooltip will not be displayed.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipDisabled', transform: booleanAttribute })\n public disabled = false;\n\n /**\n * Configuration options for the tooltip.\n * It allows setting various behaviors like delay and positioning.\n *\n * @param {Partial<TooltipOptions> | null | undefined}\n */\n @Input('odxTooltipOptions')\n public set options(value: Partial<TooltipOptions> | null | undefined) {\n this.tooltipOptions = deepmerge(this.tooltipOptions, value) as TooltipOptions;\n }\n\n /**\n * Sets the size of the tooltip.\n *\n * @type {TooltipSize}\n * @default null\n */\n @Input('odxTooltipSize')\n public size?: TooltipSize | null = null;\n\n /**\n * Controls the visibility of the tooltip.\n * Useful for programmatically toggling the tooltip display.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxTooltipVisible', transform: booleanAttribute })\n public visible = false;\n\n /**\n * Indicates whether the tooltip is currently open.\n *\n * @returns {boolean}\n */\n public get isOpen(): boolean {\n return this.connectedOverlayRef !== null;\n }\n\n constructor() {\n const takeUntilDestroyed = untilDestroyed();\n const show$ = this.showTrigger$$.pipe(\n filter(() => !this.isOpen),\n delayUntil(() => this.tooltipOptions.delayIn, this.hideTrigger$$),\n tap(() => this.show()),\n );\n const hide$ = this.hideTrigger$$.pipe(\n filter(() => this.isOpen),\n delayUntil(() => this.tooltipOptions.delayOut, this.showTrigger$$),\n tap(() => this.hide()),\n );\n merge(show$, hide$).pipe(takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.registerEvents();\n }\n\n public ngOnChanges(changes: NgChanges<TooltipDirective>): void {\n if (hasChanged(changes, 'disabled') && this.disabled) {\n this.hide();\n }\n if (hasChanged(changes, ['content', 'size'])) {\n this.connectedOverlayRef?.update({ context: { content: this.content, size: this.size } });\n }\n if (hasChanged(changes, 'options')) {\n this.connectedOverlayRef?.update(this.tooltipOptions);\n this.registerEvents();\n }\n if (this.visible && !this.disabled) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n public ngOnDestroy(): void {\n this.hide(true);\n }\n\n /**\n * Shows the tooltip, creating and attaching the overlay to the host element.\n */\n public show(): void {\n if (this.isOpen || this.disabled || !this.content) return;\n this.tooltipId = getUniqueId('odx-tooltip');\n this.connectedOverlayRef = this.connectedOverlayService.createOverlay(\n this.element.nativeElement,\n {\n ...this.tooltipOptions,\n containerClass: 'odx-tooltip-overlay',\n content: TooltipComponent,\n context: { content: this.content, size: this.size ?? this.tooltipOptions.size, id: this.tooltipId },\n showArrow: true,\n enableFallback: true,\n nonInteractive: true,\n },\n { host: this.element.nativeElement.parentElement, injector: this.injector },\n );\n }\n\n /**\n * Hides the tooltip, detaching the overlay from the host element.\n */\n public hide(force = false): void {\n if ((!this.isOpen || (this.visible && !this.disabled)) && !force) return;\n this.connectedOverlayRef?.close(force);\n this.connectedOverlayRef = null;\n this.tooltipId = null;\n }\n\n private registerEvents(): void {\n const [openEvent, closeEvent] = resolveTooltipTriggerEvents(this.tooltipOptions.trigger);\n this.eventManager.destroyListeners();\n this.ngZone.runOutsideAngular(() => {\n this.eventManager.register([openEvent, 'focusin'], (event: Event | undefined) => {\n if (this.ignoreNextTooltipTrigger && event?.type === 'focusin') {\n this.ignoreNextTooltipTrigger = false;\n return;\n }\n this.showTrigger$$.next();\n });\n this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());\n this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');\n this.eventManager.register(\n ['ODXModalOnBeforeClosed', 'visibilitychange'],\n (event?: Event) => {\n // Set the ignore flag when the modal is about to close or when the browser's tab/window becomes inactive\n if (event?.type === 'ODXModalOnBeforeClosed' || this.document.visibilityState === 'hidden') {\n this.ignoreNextTooltipTrigger = true;\n }\n },\n 'document',\n );\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "12.22.1",
3
+ "version": "12.22.3",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -184,36 +184,36 @@
184
184
  "esm": "./esm2022/components/anchor-navigation/odx-angular-components-anchor-navigation.mjs",
185
185
  "default": "./fesm2022/odx-angular-components-anchor-navigation.mjs"
186
186
  },
187
- "./components/autocomplete": {
188
- "types": "./components/autocomplete/index.d.ts",
189
- "esm2022": "./esm2022/components/autocomplete/odx-angular-components-autocomplete.mjs",
190
- "esm": "./esm2022/components/autocomplete/odx-angular-components-autocomplete.mjs",
191
- "default": "./fesm2022/odx-angular-components-autocomplete.mjs"
192
- },
193
187
  "./components/area-header": {
194
188
  "types": "./components/area-header/index.d.ts",
195
189
  "esm2022": "./esm2022/components/area-header/odx-angular-components-area-header.mjs",
196
190
  "esm": "./esm2022/components/area-header/odx-angular-components-area-header.mjs",
197
191
  "default": "./fesm2022/odx-angular-components-area-header.mjs"
198
192
  },
193
+ "./components/autocomplete": {
194
+ "types": "./components/autocomplete/index.d.ts",
195
+ "esm2022": "./esm2022/components/autocomplete/odx-angular-components-autocomplete.mjs",
196
+ "esm": "./esm2022/components/autocomplete/odx-angular-components-autocomplete.mjs",
197
+ "default": "./fesm2022/odx-angular-components-autocomplete.mjs"
198
+ },
199
199
  "./components/avatar": {
200
200
  "types": "./components/avatar/index.d.ts",
201
201
  "esm2022": "./esm2022/components/avatar/odx-angular-components-avatar.mjs",
202
202
  "esm": "./esm2022/components/avatar/odx-angular-components-avatar.mjs",
203
203
  "default": "./fesm2022/odx-angular-components-avatar.mjs"
204
204
  },
205
- "./components/badge": {
206
- "types": "./components/badge/index.d.ts",
207
- "esm2022": "./esm2022/components/badge/odx-angular-components-badge.mjs",
208
- "esm": "./esm2022/components/badge/odx-angular-components-badge.mjs",
209
- "default": "./fesm2022/odx-angular-components-badge.mjs"
210
- },
211
205
  "./components/bar": {
212
206
  "types": "./components/bar/index.d.ts",
213
207
  "esm2022": "./esm2022/components/bar/odx-angular-components-bar.mjs",
214
208
  "esm": "./esm2022/components/bar/odx-angular-components-bar.mjs",
215
209
  "default": "./fesm2022/odx-angular-components-bar.mjs"
216
210
  },
211
+ "./components/badge": {
212
+ "types": "./components/badge/index.d.ts",
213
+ "esm2022": "./esm2022/components/badge/odx-angular-components-badge.mjs",
214
+ "esm": "./esm2022/components/badge/odx-angular-components-badge.mjs",
215
+ "default": "./fesm2022/odx-angular-components-badge.mjs"
216
+ },
217
217
  "./components/breadcrumbs": {
218
218
  "types": "./components/breadcrumbs/index.d.ts",
219
219
  "esm2022": "./esm2022/components/breadcrumbs/odx-angular-components-breadcrumbs.mjs",