@odx/angular 11.1.0 → 11.1.2

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
+ ## 11.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 1b989d5: Select dropdown breaks on interaction fixed
8
+
9
+ ## 11.1.1
10
+
11
+ ### Patch Changes
12
+
13
+ - bead5c6: Leave animations for modals and dropdowns
14
+
3
15
  ## 11.1.0
4
16
 
5
17
  ### Minor Changes
@@ -58,5 +58,5 @@ export declare class ConnectedOverlayRef {
58
58
  *
59
59
  * @returns {void}
60
60
  */
61
- close(): void;
61
+ close(): Promise<void>;
62
62
  }
@@ -1,3 +1,4 @@
1
+ import { waitForAnimations } from '@odx/angular/utils';
1
2
  import { EMPTY } from 'rxjs';
2
3
  /**
3
4
  * A reference to a connected overlay created by the `ConnectedOverlayService`. This class provides methods to interact
@@ -58,8 +59,11 @@ export class ConnectedOverlayRef {
58
59
  *
59
60
  * @returns {void}
60
61
  */
61
- close() {
62
+ async close() {
63
+ const hiddenClass = this.dynamicViewRef.getContext().options?.hiddenClass || 'is-hidden';
64
+ this.element?.classList.add(hiddenClass);
65
+ await waitForAnimations(this.element);
62
66
  this.dynamicViewRef.destroy();
63
67
  }
64
68
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGVkLW92ZXJsYXktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9jb25uZWN0ZWQtb3ZlcmxheS9zcmMvbGliL21vZGVscy9jb25uZWN0ZWQtb3ZlcmxheS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUl6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUE2QixjQUFnRTtRQUFoRSxtQkFBYyxHQUFkLGNBQWMsQ0FBa0Q7UUFWN0UsWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFM0Q7Ozs7O1dBS0c7UUFDYSxhQUFRLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztJQUVFLENBQUM7SUFFakc7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUF5QztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFrQyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNWaWV3UmVmIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3RlZE92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuLi9jb25uZWN0ZWQtb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheU9wdGlvbnMgfSBmcm9tICcuL2Nvbm5lY3RlZC1vdmVybGF5LW9wdGlvbnMnO1xuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgY29ubmVjdGVkIG92ZXJsYXkgY3JlYXRlZCBieSB0aGUgYENvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlYC4gVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIHRvIGludGVyYWN0XG4gKiB3aXRoIHRoZSBvdmVybGF5LCBzdWNoIGFzIHVwZGF0aW5nIGl0cyBvcHRpb25zIG9yIGNsb3NpbmcgaXQuIEl0IGVuY2Fwc3VsYXRlcyB0aGUgYER5bmFtaWNWaWV3UmVmYCBmb3IgdGhlIG92ZXJsYXkncyBpbnN0YW5jZSxcbiAqIGFsbG93aW5nIGZvciBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIHRoZSBvdmVybGF5J3Mgc3RhdGUgYW5kIGJlaGF2aW9yLlxuICpcbiAqIFRoaXMgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaG93IHRvIHVzZSBhIGBDb25uZWN0ZWRPdmVybGF5UmVmYCB0byB1cGRhdGUgYW5kIGNsb3NlIGEgY29ubmVjdGVkIG92ZXJsYXkgaW4gcmVzcG9uc2VcbiAqIHRvIHVzZXIgaW50ZXJhY3Rpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY2xhc3MgTXlDb21wb25lbnQge1xuICogICBwcml2YXRlIG92ZXJsYXlSZWY/OiBDb25uZWN0ZWRPdmVybGF5UmVmO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5U2VydmljZTogQ29ubmVjdGVkT3ZlcmxheVNlcnZpY2UpIHt9XG4gKlxuICogICBvcGVuT3ZlcmxheSgpIHtcbiAqICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZU92ZXJsYXkodGhpcy5zb21lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7IHBvc2l0aW9uOiAnYm90dG9tJyB9KTtcbiAqICAgfVxuICpcbiAqICAgdXBkYXRlT3ZlcmxheVBvc2l0aW9uKCkge1xuICogICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAqICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGUoeyBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogICBjbG9zZU92ZXJsYXkoKSB7XG4gKiAgICAgdGhpcy5vdmVybGF5UmVmPy5jbG9zZSgpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJbiB0aGlzIGV4YW1wbGUsIGBNeUNvbXBvbmVudGAgdXNlcyB0aGUgYENvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlYCB0byBjcmVhdGUgYW4gb3ZlcmxheS4gSXQgc3RvcmVzIGEgcmVmZXJlbmNlIHRvXG4gKiB0aGUgY3JlYXRlZCBvdmVybGF5IGluIGBvdmVybGF5UmVmYCwgYWxsb3dpbmcgaXQgdG8gdXBkYXRlIHRoZSBvdmVybGF5J3MgcG9zaXRpb24gb3IgY2xvc2UgaXQgd2hlbiBuZWNlc3NhcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0ZWRPdmVybGF5UmVmIHtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSB0aGlzLmR5bmFtaWNWaWV3UmVmLmdldEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xvc2VkLlxuICAgKlxuICAgKiBAZW1pdHMge3ZvaWR9IC0gRW1pdHMgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25DbG9zZSQ6IE9ic2VydmFibGU8dm9pZD4gPSB0aGlzLmR5bmFtaWNWaWV3UmVmLmdldENvbnRleHQoKS5jbG9zZWQgPz8gRU1QVFk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkeW5hbWljVmlld1JlZjogRHluYW1pY1ZpZXdSZWY8dHlwZW9mIENvbm5lY3RlZE92ZXJsYXlDb21wb25lbnQ+KSB7fVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb25uZWN0ZWQgb3ZlcmxheSB3aXRoIG5ldyBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyB7UGFydGlhbDxDb25uZWN0ZWRPdmVybGF5T3B0aW9ucz59IC0gVGhlIG5ldyBvcHRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNvbm5lY3RlZCBvdmVybGF5LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBQYXJ0aWFsPENvbm5lY3RlZE92ZXJsYXlPcHRpb25zPik6IHZvaWQge1xuICAgIHRoaXMuZHluYW1pY1ZpZXdSZWYudXBkYXRlKHsgb3B0aW9uczogb3B0aW9ucyBhcyBDb25uZWN0ZWRPdmVybGF5T3B0aW9ucyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGNvbm5lY3RlZCBvdmVybGF5LlxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmR5bmFtaWNWaWV3UmVmLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGVkLW92ZXJsYXktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9jb25uZWN0ZWQtb3ZlcmxheS9zcmMvbGliL21vZGVscy9jb25uZWN0ZWQtb3ZlcmxheS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUl6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUE2QixjQUFnRTtRQUFoRSxtQkFBYyxHQUFkLGNBQWMsQ0FBa0Q7UUFWN0UsWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFM0Q7Ozs7O1dBS0c7UUFDYSxhQUFRLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztJQUVFLENBQUM7SUFFakc7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUF5QztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFrQyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsSUFBSSxXQUFXLENBQUM7UUFDekYsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0saUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1ZpZXdSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyB3YWl0Rm9yQW5pbWF0aW9ucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4uL2Nvbm5lY3RlZC1vdmVybGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5T3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGVkLW92ZXJsYXktb3B0aW9ucyc7XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSBjb25uZWN0ZWQgb3ZlcmxheSBjcmVhdGVkIGJ5IHRoZSBgQ29ubmVjdGVkT3ZlcmxheVNlcnZpY2VgLiBUaGlzIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgdG8gaW50ZXJhY3RcbiAqIHdpdGggdGhlIG92ZXJsYXksIHN1Y2ggYXMgdXBkYXRpbmcgaXRzIG9wdGlvbnMgb3IgY2xvc2luZyBpdC4gSXQgZW5jYXBzdWxhdGVzIHRoZSBgRHluYW1pY1ZpZXdSZWZgIGZvciB0aGUgb3ZlcmxheSdzIGluc3RhbmNlLFxuICogYWxsb3dpbmcgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgdGhlIG92ZXJsYXkncyBzdGF0ZSBhbmQgYmVoYXZpb3IuXG4gKlxuICogVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIGEgYENvbm5lY3RlZE92ZXJsYXlSZWZgIHRvIHVwZGF0ZSBhbmQgY2xvc2UgYSBjb25uZWN0ZWQgb3ZlcmxheSBpbiByZXNwb25zZVxuICogdG8gdXNlciBpbnRlcmFjdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgb3ZlcmxheVJlZj86IENvbm5lY3RlZE92ZXJsYXlSZWY7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBDb25uZWN0ZWRPdmVybGF5U2VydmljZSkge31cbiAqXG4gKiAgIG9wZW5PdmVybGF5KCkge1xuICogICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlT3ZlcmxheSh0aGlzLnNvbWVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHsgcG9zaXRpb246ICdib3R0b20nIH0pO1xuICogICB9XG4gKlxuICogICB1cGRhdGVPdmVybGF5UG9zaXRpb24oKSB7XG4gKiAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICogICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZSh7IHBvc2l0aW9uOiAndG9wJyB9KTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIGNsb3NlT3ZlcmxheSgpIHtcbiAqICAgICB0aGlzLm92ZXJsYXlSZWY/LmNsb3NlKCk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgYE15Q29tcG9uZW50YCB1c2VzIHRoZSBgQ29ubmVjdGVkT3ZlcmxheVNlcnZpY2VgIHRvIGNyZWF0ZSBhbiBvdmVybGF5LiBJdCBzdG9yZXMgYSByZWZlcmVuY2UgdG9cbiAqIHRoZSBjcmVhdGVkIG92ZXJsYXkgaW4gYG92ZXJsYXlSZWZgLCBhbGxvd2luZyBpdCB0byB1cGRhdGUgdGhlIG92ZXJsYXkncyBwb3NpdGlvbiBvciBjbG9zZSBpdCB3aGVuIG5lY2Vzc2FyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbm5lY3RlZE92ZXJsYXlSZWYge1xuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IHRoaXMuZHluYW1pY1ZpZXdSZWYuZ2V0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqXG4gICAqIEBlbWl0cyB7dm9pZH0gLSBFbWl0cyB3aGVuIHRoZSBvdmVybGF5IGlzIGNsb3NlZC5cbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkNsb3NlJDogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMuZHluYW1pY1ZpZXdSZWYuZ2V0Q29udGV4dCgpLmNsb3NlZCA/PyBFTVBUWTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGR5bmFtaWNWaWV3UmVmOiBEeW5hbWljVmlld1JlZjx0eXBlb2YgQ29ubmVjdGVkT3ZlcmxheUNvbXBvbmVudD4pIHt9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbm5lY3RlZCBvdmVybGF5IHdpdGggbmV3IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIHtQYXJ0aWFsPENvbm5lY3RlZE92ZXJsYXlPcHRpb25zPn0gLSBUaGUgbmV3IG9wdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgY29ubmVjdGVkIG92ZXJsYXkuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IFBhcnRpYWw8Q29ubmVjdGVkT3ZlcmxheU9wdGlvbnM+KTogdm9pZCB7XG4gICAgdGhpcy5keW5hbWljVmlld1JlZi51cGRhdGUoeyBvcHRpb25zOiBvcHRpb25zIGFzIENvbm5lY3RlZE92ZXJsYXlPcHRpb25zIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgY29ubmVjdGVkIG92ZXJsYXkuXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsb3NlKCkge1xuICAgIGNvbnN0IGhpZGRlbkNsYXNzID0gdGhpcy5keW5hbWljVmlld1JlZi5nZXRDb250ZXh0KCkub3B0aW9ucz8uaGlkZGVuQ2xhc3MgfHwgJ2lzLWhpZGRlbic7XG4gICAgdGhpcy5lbGVtZW50Py5jbGFzc0xpc3QuYWRkKGhpZGRlbkNsYXNzKTtcbiAgICBhd2FpdCB3YWl0Rm9yQW5pbWF0aW9ucyh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMuZHluYW1pY1ZpZXdSZWYuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -50,9 +50,10 @@ let ModalComponent = class ModalComponent {
50
50
  }
51
51
  }
52
52
  preventNativeDismiss(event) {
53
- if (this.modalRef.options.dismissable || event.key !== 'Escape')
54
- return;
55
- event.preventDefault();
53
+ if (event.key === 'Escape') {
54
+ event.preventDefault();
55
+ this.modalRef.options.dismissable && this.modalRef.destroy();
56
+ }
56
57
  }
57
58
  handleDialogClose() {
58
59
  this.modalRef.dismiss();
@@ -96,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
96
97
  type: HostListener,
97
98
  args: ['close']
98
99
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvbW9kYWwvc3JjL2xpYi9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tb2RhbC9zcmMvbGliL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQXNDLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBYSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUUzQzs7O0dBR0c7QUFnQkksSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBYztJQXlDekI7UUF4Q21CLGFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFMUMsWUFBTyxHQUFHLGFBQWEsRUFBcUIsQ0FBQztRQUU3RDs7OztXQUlHO1FBRUksU0FBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV6Qzs7OztXQUlHO1FBRUksWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUUvQzs7Ozs7V0FLRztRQUVJLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBWTNCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFrQztRQUNuRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFHUyxvQkFBb0IsQ0FBQyxLQUFvQjtRQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBQ3hFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBSVMsaUJBQWlCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0EvRFUsY0FBYzttR0FBZCxjQUFjLDRZQzlCM0IsMldBT0EsMkNEY1ksVUFBVSxxTEFBd0QsVUFBVSwrQkFBRSxvQkFBb0I7O0FBc0JyRztJQUROLFdBQVcsRUFBRTs7NENBQzJCO0FBUWxDO0lBRE4sV0FBVyxFQUFFOzsrQ0FDaUM7QUFTeEM7SUFETixXQUFXLEVBQUU7O3FEQUNlO0FBOUJsQixjQUFjO0lBZjFCLFlBQVksQ0FBQyxPQUFPLENBQUM7O0dBZVQsY0FBYyxDQWdFMUI7OzRGQWhFWSxjQUFjO2tCQWQxQixTQUFTO2lDQUNJLElBQUksWUFFTiwwQkFBMEIsV0FFM0IsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsbUJBQzVGLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osV0FBVyxFQUFFLHFCQUFxQjt3QkFDbEMsd0JBQXdCLEVBQUUsdUJBQXVCO3dCQUNqRCxhQUFhLEVBQUUsVUFBVTtxQkFDMUI7d0RBZU0sSUFBSSxNQVFKLE9BQU8sTUFTUCxhQUFhLE1BU2IsT0FBTztzQkFEYixLQUFLO2dCQWdCSSxvQkFBb0I7c0JBRDdCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVF6QixpQkFBaUI7c0JBRjFCLFlBQVk7dUJBQUMsUUFBUTs7c0JBQ3JCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudCwgRHluYW1pY1ZpZXdEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBBY3Rpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FjdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBOZ0NoYW5nZXMsIGhhc0NoYW5nZWQsIGluamVjdEVsZW1lbnQsIGlzVGVtcGxhdGVSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0TW9kYWxSZWYgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhIG1vZGFsIGRpYWxvZyB3aXRoIGR5bmFtaWMgY29udGVudCBhbmQgY3VzdG9taXphYmxlIGFuaW1hdGlvbnMuXG4gKiBJdCBzdXBwb3J0cyBib3RoIG1vZGFsIGFuZCBzaWRlc2hlZXQgdmFyaWFudHMgd2l0aCBjb25maWd1cmFibGUgYW5pbWF0aW9ucyBmb3IgZWFjaCB0eXBlLlxuICovXG5AQ1NTQ29tcG9uZW50KCdtb2RhbCcpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdkaWFsb2dbb2R4LWRpYWxvZy1tb2RhbF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQWN0aW9uR3JvdXBDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgQ29yZU1vZHVsZSwgRHluYW1pY1ZpZXdEaXJlY3RpdmVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnbW9kYWxSZWYub3B0aW9ucy5pZCcsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnbW9kYWxSZWYubW9kYWxUaXRsZUlkJyxcbiAgICAnW2F0dHIucm9sZV0nOiAnXCJkaWFsb2dcIicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsUmVmID0gaW5qZWN0TW9kYWxSZWYoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSB7ICRpbXBsaWNpdDogdGhpcy5tb2RhbFJlZiB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudDxIVE1MRGlhbG9nRWxlbWVudD4oKTtcblxuICAvKipcbiAgICogU2l6ZSBvZiB0aGUgbW9kYWwgYXMgYSBDU1MgbW9kaWZpZXIgYmFzZWQgb24gbW9kYWwgb3B0aW9ucy5cbiAgICpcbiAgICogQHR5cGUge01vZGFsU2l6ZX1cbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIHB1YmxpYyBzaXplID0gdGhpcy5tb2RhbFJlZi5vcHRpb25zLnNpemU7XG5cbiAgLyoqXG4gICAqIFZhcmlhbnQgb2YgdGhlIG1vZGFsIGFzIGEgQ1NTIG1vZGlmaWVyIHRoYXQgaW5mbHVlbmNlcyBhbmltYXRpb24gY2hvaWNlcy5cbiAgICpcbiAgICogQHR5cGUge01vZGFsVmFyaWFudH1cbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIHB1YmxpYyB2YXJpYW50ID0gdGhpcy5tb2RhbFJlZi5vcHRpb25zLnZhcmlhbnQ7XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIGNvbnRlbnQgaXMgYSBjb21wb25lbnQgdHlwZSByYXRoZXIgdGhhbiBhIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIHB1YmxpYyB3aXRoQ29tcG9uZW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIER5bmFtaWMgY29udGVudCB0byBiZSBsb2FkZWQgaW50byB0aGUgbW9kYWwuIEV4Y2x1ZGVzIHNpbXBsZSB0ZXh0dWFsIGNvbnRlbnRcbiAgICogdG8gZW5hYmxlIGNvbXBsZXggQW5ndWxhciBjb21wb25lbnRzIG9yIHRlbXBsYXRlcy5cbiAgICpcbiAgICogQHR5cGUge0V4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudD59XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGVudCE6IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcy5tb2RhbFJlZikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2l6ZSA9IHRoaXMubW9kYWxSZWYub3B0aW9ucy5zaXplO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxNb2RhbENvbXBvbmVudD4pOiB2b2lkIHtcbiAgICBpZiAoaGFzQ2hhbmdlZChjaGFuZ2VzLCAnY29udGVudCcsIGZhbHNlKSkge1xuICAgICAgdGhpcy53aXRoQ29tcG9uZW50ID0gIWlzVGVtcGxhdGVSZWYodGhpcy5jb250ZW50KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIHByZXZlbnROYXRpdmVEaXNtaXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kYWxSZWYub3B0aW9ucy5kaXNtaXNzYWJsZSB8fCBldmVudC5rZXkgIT09ICdFc2NhcGUnKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NhbmNlbCcpXG4gIEBIb3N0TGlzdGVuZXIoJ2Nsb3NlJylcbiAgcHJvdGVjdGVkIGhhbmRsZURpYWxvZ0Nsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxSZWYuZGlzbWlzcygpO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtvZHhDbGlja091dHNpZGVBY3RpdmVdPVwibW9kYWxSZWYuaXNBY3RpdmUoKSAmJiBtb2RhbFJlZi5vcHRpb25zLmRpc21pc3NhYmxlICYmIG1vZGFsUmVmLm9wdGlvbnMuaW50ZXJhY3RpdmVCYWNrZHJvcFwiXG4gIChvZHhDbGlja091dHNpZGUpPVwibW9kYWxSZWYuZGlzbWlzcygpXCJcbiAgY2xhc3M9XCJvZHgtbW9kYWxfX2NvbnRhaW5lclwiXG4+XG4gIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwiY29udGVudFwiIFtvZHhEeW5hbWljVmlld0NvbnRleHRdPVwid2l0aENvbXBvbmVudCA/IHt9IDogY29udGV4dFwiIFtvZHhEeW5hbWljVmlld0luamVjdG9yXT1cImluamVjdG9yXCIgLz5cbjwvZGl2PlxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvbW9kYWwvc3JjL2xpYi9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tb2RhbC9zcmMvbGliL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQXNDLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBYSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUUzQzs7O0dBR0c7QUFnQkksSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBYztJQXlDekI7UUF4Q21CLGFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFMUMsWUFBTyxHQUFHLGFBQWEsRUFBcUIsQ0FBQztRQUU3RDs7OztXQUlHO1FBRUksU0FBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV6Qzs7OztXQUlHO1FBRUksWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUUvQzs7Ozs7V0FLRztRQUVJLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBWTNCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFrQztRQUNuRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFHUyxvQkFBb0IsQ0FBQyxLQUFvQjtRQUNqRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBSVMsaUJBQWlCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0FqRVUsY0FBYzttR0FBZCxjQUFjLDRZQzlCM0IsMldBT0EsMkNEY1ksVUFBVSxxTEFBd0QsVUFBVSwrQkFBRSxvQkFBb0I7O0FBc0JyRztJQUROLFdBQVcsRUFBRTs7NENBQzJCO0FBUWxDO0lBRE4sV0FBVyxFQUFFOzsrQ0FDaUM7QUFTeEM7SUFETixXQUFXLEVBQUU7O3FEQUNlO0FBOUJsQixjQUFjO0lBZjFCLFlBQVksQ0FBQyxPQUFPLENBQUM7O0dBZVQsY0FBYyxDQWtFMUI7OzRGQWxFWSxjQUFjO2tCQWQxQixTQUFTO2lDQUNJLElBQUksWUFFTiwwQkFBMEIsV0FFM0IsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsbUJBQzVGLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osV0FBVyxFQUFFLHFCQUFxQjt3QkFDbEMsd0JBQXdCLEVBQUUsdUJBQXVCO3dCQUNqRCxhQUFhLEVBQUUsVUFBVTtxQkFDMUI7d0RBZU0sSUFBSSxNQVFKLE9BQU8sTUFTUCxhQUFhLE1BU2IsT0FBTztzQkFEYixLQUFLO2dCQWdCSSxvQkFBb0I7c0JBRDdCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVV6QixpQkFBaUI7c0JBRjFCLFlBQVk7dUJBQUMsUUFBUTs7c0JBQ3JCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudCwgRHluYW1pY1ZpZXdEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBBY3Rpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FjdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBOZ0NoYW5nZXMsIGhhc0NoYW5nZWQsIGluamVjdEVsZW1lbnQsIGlzVGVtcGxhdGVSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0TW9kYWxSZWYgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhIG1vZGFsIGRpYWxvZyB3aXRoIGR5bmFtaWMgY29udGVudCBhbmQgY3VzdG9taXphYmxlIGFuaW1hdGlvbnMuXG4gKiBJdCBzdXBwb3J0cyBib3RoIG1vZGFsIGFuZCBzaWRlc2hlZXQgdmFyaWFudHMgd2l0aCBjb25maWd1cmFibGUgYW5pbWF0aW9ucyBmb3IgZWFjaCB0eXBlLlxuICovXG5AQ1NTQ29tcG9uZW50KCdtb2RhbCcpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdkaWFsb2dbb2R4LWRpYWxvZy1tb2RhbF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQWN0aW9uR3JvdXBDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgQ29yZU1vZHVsZSwgRHluYW1pY1ZpZXdEaXJlY3RpdmVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnbW9kYWxSZWYub3B0aW9ucy5pZCcsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnbW9kYWxSZWYubW9kYWxUaXRsZUlkJyxcbiAgICAnW2F0dHIucm9sZV0nOiAnXCJkaWFsb2dcIicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsUmVmID0gaW5qZWN0TW9kYWxSZWYoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSB7ICRpbXBsaWNpdDogdGhpcy5tb2RhbFJlZiB9O1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudDxIVE1MRGlhbG9nRWxlbWVudD4oKTtcblxuICAvKipcbiAgICogU2l6ZSBvZiB0aGUgbW9kYWwgYXMgYSBDU1MgbW9kaWZpZXIgYmFzZWQgb24gbW9kYWwgb3B0aW9ucy5cbiAgICpcbiAgICogQHR5cGUge01vZGFsU2l6ZX1cbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIHB1YmxpYyBzaXplID0gdGhpcy5tb2RhbFJlZi5vcHRpb25zLnNpemU7XG5cbiAgLyoqXG4gICAqIFZhcmlhbnQgb2YgdGhlIG1vZGFsIGFzIGEgQ1NTIG1vZGlmaWVyIHRoYXQgaW5mbHVlbmNlcyBhbmltYXRpb24gY2hvaWNlcy5cbiAgICpcbiAgICogQHR5cGUge01vZGFsVmFyaWFudH1cbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIHB1YmxpYyB2YXJpYW50ID0gdGhpcy5tb2RhbFJlZi5vcHRpb25zLnZhcmlhbnQ7XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIGNvbnRlbnQgaXMgYSBjb21wb25lbnQgdHlwZSByYXRoZXIgdGhhbiBhIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIHB1YmxpYyB3aXRoQ29tcG9uZW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIER5bmFtaWMgY29udGVudCB0byBiZSBsb2FkZWQgaW50byB0aGUgbW9kYWwuIEV4Y2x1ZGVzIHNpbXBsZSB0ZXh0dWFsIGNvbnRlbnRcbiAgICogdG8gZW5hYmxlIGNvbXBsZXggQW5ndWxhciBjb21wb25lbnRzIG9yIHRlbXBsYXRlcy5cbiAgICpcbiAgICogQHR5cGUge0V4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudD59XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGVudCE6IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcy5tb2RhbFJlZikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2l6ZSA9IHRoaXMubW9kYWxSZWYub3B0aW9ucy5zaXplO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxNb2RhbENvbXBvbmVudD4pOiB2b2lkIHtcbiAgICBpZiAoaGFzQ2hhbmdlZChjaGFuZ2VzLCAnY29udGVudCcsIGZhbHNlKSkge1xuICAgICAgdGhpcy53aXRoQ29tcG9uZW50ID0gIWlzVGVtcGxhdGVSZWYodGhpcy5jb250ZW50KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIHByZXZlbnROYXRpdmVEaXNtaXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm1vZGFsUmVmLm9wdGlvbnMuZGlzbWlzc2FibGUgJiYgdGhpcy5tb2RhbFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2FuY2VsJylcbiAgQEhvc3RMaXN0ZW5lcignY2xvc2UnKVxuICBwcm90ZWN0ZWQgaGFuZGxlRGlhbG9nQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFJlZi5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW29keENsaWNrT3V0c2lkZUFjdGl2ZV09XCJtb2RhbFJlZi5pc0FjdGl2ZSgpICYmIG1vZGFsUmVmLm9wdGlvbnMuZGlzbWlzc2FibGUgJiYgbW9kYWxSZWYub3B0aW9ucy5pbnRlcmFjdGl2ZUJhY2tkcm9wXCJcbiAgKG9keENsaWNrT3V0c2lkZSk9XCJtb2RhbFJlZi5kaXNtaXNzKClcIlxuICBjbGFzcz1cIm9keC1tb2RhbF9fY29udGFpbmVyXCJcbj5cbiAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJjb250ZW50XCIgW29keER5bmFtaWNWaWV3Q29udGV4dF09XCJ3aXRoQ29tcG9uZW50ID8ge30gOiBjb250ZXh0XCIgW29keER5bmFtaWNWaWV3SW5qZWN0b3JdPVwiaW5qZWN0b3JcIiAvPlxuPC9kaXY+XG4iXX0=
@@ -2,7 +2,7 @@ import { 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';
5
- import { deferFn, getUniqueId, Queue } from '@odx/angular/utils';
5
+ import { deferFn, getUniqueId, Queue, waitForAnimations } from '@odx/angular/utils';
6
6
  import { finalize } from 'rxjs';
7
7
  import { BasicModalComponent } from './components';
8
8
  import { provideModalRef } from './helpers';
@@ -98,13 +98,16 @@ export class ModalService {
98
98
  }),
99
99
  host: modalRef.options.host,
100
100
  });
101
+ const dialog = viewRef.getElement();
101
102
  const onDestroy = async () => {
102
- viewRef.getElement()?.close?.();
103
+ dialog?.classList.add('is-hidden');
104
+ await waitForAnimations(dialog);
105
+ dialog?.close();
103
106
  this.openModals.remove(modalRef);
104
107
  viewRef.destroy();
105
108
  };
106
109
  modalRef.onDestroy$.pipe(finalize(onDestroy)).subscribe();
107
- deferFn(() => viewRef.getElement()?.showModal?.());
110
+ deferFn(() => dialog?.showModal());
108
111
  }
109
112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalService, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
110
113
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalService, providedIn: 'root' }); }
@@ -113,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
113
116
  type: Injectable,
114
117
  args: [{ providedIn: 'root' }]
115
118
  }], ctorParameters: () => [{ type: i1.Location }] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBc0Msa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUF1RCxRQUFRLEVBQUUsU0FBUyxFQUFhLE1BQU0sVUFBVSxDQUFDOzs7QUFFL0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxZQUFZO0lBYXZCLFlBQVksUUFBa0I7UUFaYixXQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUNuQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFB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Q0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQXdCLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7K0dBckdVLFlBQVk7bUhBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50LCBEeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZGVmZXJGbiwgZ2V0VW5pcXVlSWQsIFF1ZXVlIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNpY01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IHByb3ZpZGVNb2RhbFJlZiB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IGluamVjdE1vZGFsQ29uZmlnIH0gZnJvbSAnLi9tb2RhbC5jb25maWcnO1xuaW1wb3J0IHsgQmFzaWNNb2RhbE9wdGlvbnMsIEdldE1vZGFsQWN0aW9uRGF0YSwgTW9kYWxPcHRpb25zLCBNb2RhbFJlZiwgTW9kYWxTaXplLCBNb2RhbFR5cGUgfSBmcm9tICcuL21vZGVscyc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgbWFuYWdpbmcgbW9kYWwgZGlhbG9ncyB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLiBJdCBzdXBwb3J0cyBjcmVhdGluZywgb3BlbmluZyxcbiAqIGFuZCBkaXNtaXNzaW5nIG1vZGFscyBkeW5hbWljYWxseSwgd2l0aCBjb21wcmVoZW5zaXZlIG9wdGlvbnMgZm9yIGN1c3RvbWl6YXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50LlxuICogVXRpbGl6ZXMgQW5ndWxhcidzIGR5bmFtaWMgdmlldyBtYW5hZ2VtZW50IHRvIGluc3RhbnRpYXRlIGFuZCByZW5kZXIgbW9kYWxzIGFzIG5lZWRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEV4YW1wbGUgb2YgdXNpbmcgTW9kYWxTZXJ2aWNlIHRvIG9wZW4gYSBtb2RhbFxuICogY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSkge31cbiAqXG4gKiBvcGVuTW9kYWwoKSB7XG4gKiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNeU1vZGFsQ29udGVudENvbXBvbmVudCwge1xuICogICAgIGRhdGE6IHsgc29tZURhdGE6ICd0ZXN0JyB9LFxuICogICAgIHNpemU6IE1vZGFsU2l6ZS5TTUFMTCxcbiAqICAgfSk7XG4gKlxuICogICBtb2RhbFJlZi5vbkNsb3NlJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAqICAgICBjb25zb2xlLmxvZygnTW9kYWwgY2xvc2VkIHdpdGggcmVzdWx0OicsIHJlc3VsdCk7XG4gKiAgIH0pO1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3RNb2RhbENvbmZpZygpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9wZW5Nb2RhbHMgPSBuZXcgUXVldWU8TW9kYWxSZWY+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtaWNWaWV3U2VydmljZSA9IGluamVjdChEeW5hbWljVmlld1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG9wZW5Nb2RhbHMgc3ViamVjdC5cbiAgICpcbiAgICogQGVtaXRzIHtNb2RhbFJlZltdfSBvcGVuTW9kYWxzJCAtIFRoZSBjdXJyZW50IGFycmF5IG9mIG9wZW4gbW9kYWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5Nb2RhbHMkID0gdGhpcy5vcGVuTW9kYWxzLnZhbHVlJDtcblxuICBjb25zdHJ1Y3Rvcihsb2NhdGlvbjogTG9jYXRpb24pIHtcbiAgICBsb2NhdGlvbi5vblVybENoYW5nZSgoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG1vZGFsUmVmIG9mIHRoaXMub3Blbk1vZGFscy50b0FycmF5KCkpIHtcbiAgICAgICAgaWYgKG1vZGFsUmVmLm9wdGlvbnMuZGlzbWlzc09uTmF2aWdhdGlvbikge1xuICAgICAgICAgIG1vZGFsUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyBhbGwgb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgZGlzbWlzc0FsbCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG1vZGFsUmVmIG9mIHRoaXMub3Blbk1vZGFscy50b0FycmF5KCkpIHtcbiAgICAgIG1vZGFsUmVmLmRpc21pc3MoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBtb2RhbCByZWZlcmVuY2UgYnkgaXRzIElELlxuICAgKlxuICAgKiBAdGVtcGxhdGUgRGF0YSBUaGUgdHlwZSBvZiBkYXRhIHBhc3NlZCB0byB0aGUgbW9kYWwuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgVGhlIHR5cGUgb2YgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBtb2RhbC5cbiAgICogQHBhcmFtIHtNb2RhbE9wdGlvbnNbJ2lkJ119IGlkIFRoZSBJRCBvZiB0aGUgbW9kYWwuXG4gICAqIEByZXR1cm5zIHtNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+IHwgbnVsbH0gLSBUaGUgbW9kYWwgcmVmZXJlbmNlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAgICovXG4gIHB1YmxpYyBnZXRNb2RhbEJ5SWQ8RGF0YSA9IHVua25vd24sIFJlc3VsdCA9IHVua25vd24+KGlkOiBNb2RhbE9wdGlvbnNbJ2lkJ10pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub3Blbk1vZGFscy5nZXQoaWQpIGFzIE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1vZGFsIHdpdGggdGhlIHNwZWNpZmllZCBvcHRpb25zLlxuICAgKiBAdGVtcGxhdGUgRGF0YSAtIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbCBmb3IgdXNlIGluIGl0cyBjb250ZW50LlxuICAgKiBAdGVtcGxhdGUgUmVzdWx0IC0gVGhlIHR5cGUgb2YgcmVzdWx0IGV4cGVjdGVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAgICogQHBhcmFtIHtEYXRhfSBtb2RhbCAtIFRoZSBiYXNpYyBtb2RhbCBvcHRpb25zLlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+PiB8IHVuZGVmaW5lZH0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgbW9kYWwgb3B0aW9ucy5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD59IFRoZSByZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgbW9kYWwuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlPERhdGEgZXh0ZW5kcyBCYXNpY01vZGFsT3B0aW9ucywgUmVzdWx0ID0gR2V0TW9kYWxBY3Rpb25EYXRhPERhdGE+Pihtb2RhbDogRGF0YSwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+Pik6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIHB1YmxpYyBjcmVhdGUobW9kYWw6IEJhc2ljTW9kYWxPcHRpb25zLCBvcHRpb25zPzogTW9kYWxPcHRpb25zKTogTW9kYWxSZWYge1xuICAgIHJldHVybiB0aGlzLm9wZW4oQmFzaWNNb2RhbENvbXBvbmVudCwge1xuICAgICAgZGF0YTogbW9kYWwsXG4gICAgICBzaXplOiBNb2RhbFNpemUuU01BTEwsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIG9wZW5zIGEgbmV3IG1vZGFsIHdpdGggdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25zLlxuICAgKlxuICAgKiBAdGVtcGxhdGUgRGF0YSAtIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbCBmb3IgdXNlIGluIGl0cyBjb250ZW50LlxuICAgKiBAdGVtcGxhdGUgUmVzdWx0IC0gVGhlIHR5cGUgb2YgcmVzdWx0IGV4cGVjdGVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAgICogQHRlbXBsYXRlIFQgLSBUaGUgY29udGVudCB0eXBlIG9mIHRoZSBtb2RhbCwgZWl0aGVyIGEgYFRlbXBsYXRlUmVmYCBvciBhIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtNb2RhbFR5cGU8VCwgRGF0YSwgUmVzdWx0PiB8IFRlbXBsYXRlUmVmPFQ+fSBjb250ZW50IC0gVGhlIGNvbnRlbnQgb2YgdGhlIG1vZGFsLCBlaXRoZXIgYXMgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50IHR5cGUuXG4gICAqIEBwYXJhbSB7UGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+fSBbb3B0aW9uc10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtb2RhbC5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD59IEEgcmVmZXJlbmNlIHRvIHRoZSBuZXdseSBvcGVuZWQgbW9kYWwsIGFsbG93aW5nIGludGVyYWN0aW9uIHdpdGggYW5kIGNvbnRyb2wgb3ZlciB0aGUgbW9kYWwgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgb3BlbjxEYXRhLCBSZXN1bHQsIFQ+KGNvbnRlbnQ6IFRlbXBsYXRlUmVmPFQ+LCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+KTogTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgcHVibGljIG9wZW48RGF0YSwgUmVzdWx0LCBUID0gdW5rbm93bj4oY29udGVudDogTW9kYWxUeXBlPFQsIERhdGEsIFJlc3VsdD4sIG9wdGlvbnM/OiBQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj4pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+O1xuICBwdWJsaWMgb3Blbihjb250ZW50OiBNb2RhbFR5cGU8dW5rbm93bj4gfCBUZW1wbGF0ZVJlZjx1bmtub3duPiwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPik6IE1vZGFsUmVmIHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gZGVlcG1lcmdlKHRoaXMuY29uZmlnLCB7IGlkOiBnZXRVbmlxdWVJZCgnb2R4LW1vZGFsJykgfSwgb3B0aW9ucyA/PyB7fSkgYXMgTW9kYWxPcHRpb25zO1xuICAgIGlmICh0aGlzLmdldE1vZGFsQnlJZChtZXJnZWRPcHRpb25zLmlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYE1vZGFsIHdpdGggSUQgJHttZXJnZWRPcHRpb25zLmlkfSBhbHJlYWR5IG9wZW5gKTtcbiAgICB9XG4gICAgY29uc3QgbW9kYWxSZWYgPSBuZXcgTW9kYWxSZWYobWVyZ2VkT3B0aW9ucywgKHJlZikgPT4gdGhpcy5vcGVuTW9kYWxzLmlzRmlyc3QocmVmKSk7XG4gICAgdGhpcy5hdHRhY2hNb2RhbChtb2RhbFJlZiwgY29udGVudCk7XG4gICAgdGhpcy5vcGVuTW9kYWxzLmFkZChtb2RhbFJlZik7XG4gICAgcmV0dXJuIG1vZGFsUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hNb2RhbChtb2RhbFJlZjogTW9kYWxSZWYsIGNvbnRlbnQ6IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudD4pOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3UmVmID0gdGhpcy5keW5hbWljVmlld1NlcnZpY2UuY3JlYXRlVmlldyhNb2RhbENvbXBvbmVudCwge1xuICAgICAgY29udGV4dDogeyBjb250ZW50IH0sXG4gICAgICBpbmplY3RvcjogSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZU1vZGFsUmVmKG1vZGFsUmVmKV0sXG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIH0pLFxuICAgICAgaG9zdDogbW9kYWxSZWYub3B0aW9ucy5ob3N0LFxuICAgIH0pO1xuICAgIGNvbnN0IG9uRGVzdHJveSA9IGFzeW5jICgpID0+IHtcbiAgICAgICh2aWV3UmVmLmdldEVsZW1lbnQoKSBhcyBIVE1MRGlhbG9nRWxlbWVudCk/LmNsb3NlPy4oKTtcbiAgICAgIHRoaXMub3Blbk1vZGFscy5yZW1vdmUobW9kYWxSZWYpO1xuICAgICAgdmlld1JlZi5kZXN0cm95KCk7XG4gICAgfTtcblxuICAgIG1vZGFsUmVmLm9uRGVzdHJveSQucGlwZShmaW5hbGl6ZShvbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKTtcbiAgICBkZWZlckZuKCgpID0+ICh2aWV3UmVmLmdldEVsZW1lbnQoKSBhcyBIVE1MRGlhbG9nRWxlbWVudCk/LnNob3dNb2RhbD8uKCkpO1xuICB9XG59XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBc0Msa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUF1RCxRQUFRLEVBQUUsU0FBUyxFQUFhLE1BQU0sVUFBVSxDQUFDOzs7QUFFL0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxZQUFZO0lBYXZCLFlBQVksUUFBa0I7UUFaYixXQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUNuQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLE1B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Q0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQXhHVSxZQUFZO21IQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQsIER5bmFtaWNUZXh0Q29udGVudCwgRHluYW1pY1ZpZXdTZXJ2aWNlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGRlZmVyRm4sIGdldFVuaXF1ZUlkLCBRdWV1ZSwgd2FpdEZvckFuaW1hdGlvbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2ljTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgcHJvdmlkZU1vZGFsUmVmIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgaW5qZWN0TW9kYWxDb25maWcgfSBmcm9tICcuL21vZGFsLmNvbmZpZyc7XG5pbXBvcnQgeyBCYXNpY01vZGFsT3B0aW9ucywgR2V0TW9kYWxBY3Rpb25EYXRhLCBNb2RhbE9wdGlvbnMsIE1vZGFsUmVmLCBNb2RhbFNpemUsIE1vZGFsVHlwZSB9IGZyb20gJy4vbW9kZWxzJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBtb2RhbCBkaWFsb2dzIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uIEl0IHN1cHBvcnRzIGNyZWF0aW5nLCBvcGVuaW5nLFxuICogYW5kIGRpc21pc3NpbmcgbW9kYWxzIGR5bmFtaWNhbGx5LCB3aXRoIGNvbXByZWhlbnNpdmUgb3B0aW9ucyBmb3IgY3VzdG9taXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXG4gKiBVdGlsaXplcyBBbmd1bGFyJ3MgZHluYW1pYyB2aWV3IG1hbmFnZW1lbnQgdG8gaW5zdGFudGlhdGUgYW5kIHJlbmRlciBtb2RhbHMgYXMgbmVlZGVkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gRXhhbXBsZSBvZiB1c2luZyBNb2RhbFNlcnZpY2UgdG8gb3BlbiBhIG1vZGFsXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSB7fVxuICpcbiAqIG9wZW5Nb2RhbCgpIHtcbiAqICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE15TW9kYWxDb250ZW50Q29tcG9uZW50LCB7XG4gKiAgICAgZGF0YTogeyBzb21lRGF0YTogJ3Rlc3QnIH0sXG4gKiAgICAgc2l6ZTogTW9kYWxTaXplLlNNQUxMLFxuICogICB9KTtcbiAqXG4gKiAgIG1vZGFsUmVmLm9uQ2xvc2UkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKCdNb2RhbCBjbG9zZWQgd2l0aCByZXN1bHQ6JywgcmVzdWx0KTtcbiAqICAgfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdE1vZGFsQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3Blbk1vZGFscyA9IG5ldyBRdWV1ZTxNb2RhbFJlZj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZHluYW1pY1ZpZXdTZXJ2aWNlID0gaW5qZWN0KER5bmFtaWNWaWV3U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgb3Blbk1vZGFscyBzdWJqZWN0LlxuICAgKlxuICAgKiBAZW1pdHMge01vZGFsUmVmW119IG9wZW5Nb2RhbHMkIC0gVGhlIGN1cnJlbnQgYXJyYXkgb2Ygb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFscyQgPSB0aGlzLm9wZW5Nb2RhbHMudmFsdWUkO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgIGxvY2F0aW9uLm9uVXJsQ2hhbmdlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgICBpZiAobW9kYWxSZWYub3B0aW9ucy5kaXNtaXNzT25OYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgbW9kYWxSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBvcGVuIG1vZGFscy5cbiAgICovXG4gIHB1YmxpYyBkaXNtaXNzQWxsKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgbW9kYWxSZWYuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vZGFsIHJlZmVyZW5jZSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbC5cbiAgICogQHRlbXBsYXRlIFJlc3VsdCBUaGUgdHlwZSBvZiByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIG1vZGFsLlxuICAgKiBAcGFyYW0ge01vZGFsT3B0aW9uc1snaWQnXX0gaWQgVGhlIElEIG9mIHRoZSBtb2RhbC5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsfSAtIFRoZSBtb2RhbCByZWZlcmVuY2UgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQnlJZDxEYXRhID0gdW5rbm93biwgUmVzdWx0ID0gdW5rbm93bj4oaWQ6IE1vZGFsT3B0aW9uc1snaWQnXSk6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuTW9kYWxzLmdldChpZCkgYXMgTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAcGFyYW0ge0RhdGF9IG1vZGFsIC0gVGhlIGJhc2ljIG1vZGFsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7UGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+IHwgdW5kZWZpbmVkfSBvcHRpb25zIC0gQWRkaXRpb25hbCBtb2RhbCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gVGhlIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGU8RGF0YSBleHRlbmRzIEJhc2ljTW9kYWxPcHRpb25zLCBSZXN1bHQgPSBHZXRNb2RhbEFjdGlvbkRhdGE8RGF0YT4+KG1vZGFsOiBEYXRhLCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+KTogTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgcHVibGljIGNyZWF0ZShtb2RhbDogQmFzaWNNb2RhbE9wdGlvbnMsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpOiBNb2RhbFJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbihCYXNpY01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBtb2RhbCxcbiAgICAgIHNpemU6IE1vZGFsU2l6ZS5TTUFMTCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgb3BlbnMgYSBuZXcgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbnMuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAdGVtcGxhdGUgVCAtIFRoZSBjb250ZW50IHR5cGUgb2YgdGhlIG1vZGFsLCBlaXRoZXIgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge01vZGFsVHlwZTxULCBEYXRhLCBSZXN1bHQ+IHwgVGVtcGxhdGVSZWY8VD59IGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwsIGVpdGhlciBhcyBhIGBUZW1wbGF0ZVJlZmAgb3IgYSBjb21wb25lbnQgdHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZGFsLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gQSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IG9wZW5lZCBtb2RhbCwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBhbmQgY29udHJvbCBvdmVyIHRoZSBtb2RhbCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBvcGVuPERhdGEsIFJlc3VsdCwgVD4oY29udGVudDogVGVtcGxhdGVSZWY8VD4sIG9wdGlvbnM/OiBQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj4pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+O1xuICBwdWJsaWMgb3BlbjxEYXRhLCBSZXN1bHQsIFQgPSB1bmtub3duPihjb250ZW50OiBNb2RhbFR5cGU8VCwgRGF0YSwgUmVzdWx0Piwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+Pik6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIHB1YmxpYyBvcGVuKGNvbnRlbnQ6IE1vZGFsVHlwZTx1bmtub3duPiB8IFRlbXBsYXRlUmVmPHVua25vd24+LCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM+KTogTW9kYWxSZWYge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy5jb25maWcsIHsgaWQ6IGdldFVuaXF1ZUlkKCdvZHgtbW9kYWwnKSB9LCBvcHRpb25zID8/IHt9KSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgaWYgKHRoaXMuZ2V0TW9kYWxCeUlkKG1lcmdlZE9wdGlvbnMuaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgTW9kYWwgd2l0aCBJRCAke21lcmdlZE9wdGlvbnMuaWR9IGFscmVhZHkgb3BlbmApO1xuICAgIH1cbiAgICBjb25zdCBtb2RhbFJlZiA9IG5ldyBNb2RhbFJlZihtZXJnZWRPcHRpb25zLCAocmVmKSA9PiB0aGlzLm9wZW5Nb2RhbHMuaXNGaXJzdChyZWYpKTtcbiAgICB0aGlzLmF0dGFjaE1vZGFsKG1vZGFsUmVmLCBjb250ZW50KTtcbiAgICB0aGlzLm9wZW5Nb2RhbHMuYWRkKG1vZGFsUmVmKTtcbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1vZGFsKG1vZGFsUmVmOiBNb2RhbFJlZiwgY29udGVudDogRXhjbHVkZTxEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLmR5bmFtaWNWaWV3U2VydmljZS5jcmVhdGVWaWV3KE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjb250ZXh0OiB7IGNvbnRlbnQgfSxcbiAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtwcm92aWRlTW9kYWxSZWYobW9kYWxSZWYpXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICBob3N0OiBtb2RhbFJlZi5vcHRpb25zLmhvc3QsXG4gICAgfSk7XG4gICAgY29uc3QgZGlhbG9nID0gdmlld1JlZi5nZXRFbGVtZW50KCkgYXMgSFRNTERpYWxvZ0VsZW1lbnQ7XG4gICAgY29uc3Qgb25EZXN0cm95ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgZGlhbG9nPy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JBbmltYXRpb25zKGRpYWxvZyk7XG4gICAgICBkaWFsb2c/LmNsb3NlKCk7XG4gICAgICB0aGlzLm9wZW5Nb2RhbHMucmVtb3ZlKG1vZGFsUmVmKTtcbiAgICAgIHZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH07XG5cbiAgICBtb2RhbFJlZi5vbkRlc3Ryb3kkLnBpcGUoZmluYWxpemUob25EZXN0cm95KSkuc3Vic2NyaWJlKCk7XG4gICAgZGVmZXJGbigoKSA9PiBkaWFsb2c/LnNob3dNb2RhbCgpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Waits for all animations on the given element (and optionally its descendants) to finish.
3
+ *
4
+ * @param {Element|null} [element] - The DOM element to check for animations. If not provided or invalid, the function resolves to an empty array.
5
+ * @param {boolean} [subtree=false] - Whether to include animations from child elements (subtree) of the given element.
6
+ * @returns {Promise<Animation[]>} A promise that resolves with an array of finished animations or an empty array if no animations are found.
7
+ *
8
+ * @example
9
+ * // Wait for animations on a specific element and its subtree to complete
10
+ * waitForAnimations(document.querySelector('.my-element'), true).then(() => {
11
+ * console.log('All animations are finished');
12
+ * });
13
+ */
14
+ export async function waitForAnimations(element, subtree = false) {
15
+ if (!element || typeof element.getAnimations !== 'function') {
16
+ return [];
17
+ }
18
+ return Promise.all(element.getAnimations({ subtree }).map((animation) => animation.finished)).catch(() => []);
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy9hbmltYXRpb25zLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxPQUF3QixFQUFFLE9BQU8sR0FBRyxLQUFLO0lBQy9FLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXYWl0cyBmb3IgYWxsIGFuaW1hdGlvbnMgb24gdGhlIGdpdmVuIGVsZW1lbnQgKGFuZCBvcHRpb25hbGx5IGl0cyBkZXNjZW5kYW50cykgdG8gZmluaXNoLlxuICpcbiAqIEBwYXJhbSB7RWxlbWVudHxudWxsfSBbZWxlbWVudF0gLSBUaGUgRE9NIGVsZW1lbnQgdG8gY2hlY2sgZm9yIGFuaW1hdGlvbnMuIElmIG5vdCBwcm92aWRlZCBvciBpbnZhbGlkLCB0aGUgZnVuY3Rpb24gcmVzb2x2ZXMgdG8gYW4gZW1wdHkgYXJyYXkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtzdWJ0cmVlPWZhbHNlXSAtIFdoZXRoZXIgdG8gaW5jbHVkZSBhbmltYXRpb25zIGZyb20gY2hpbGQgZWxlbWVudHMgKHN1YnRyZWUpIG9mIHRoZSBnaXZlbiBlbGVtZW50LlxuICogQHJldHVybnMge1Byb21pc2U8QW5pbWF0aW9uW10+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIGFycmF5IG9mIGZpbmlzaGVkIGFuaW1hdGlvbnMgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm8gYW5pbWF0aW9ucyBhcmUgZm91bmQuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdhaXQgZm9yIGFuaW1hdGlvbnMgb24gYSBzcGVjaWZpYyBlbGVtZW50IGFuZCBpdHMgc3VidHJlZSB0byBjb21wbGV0ZVxuICogd2FpdEZvckFuaW1hdGlvbnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm15LWVsZW1lbnQnKSwgdHJ1ZSkudGhlbigoKSA9PiB7XG4gKiAgIGNvbnNvbGUubG9nKCdBbGwgYW5pbWF0aW9ucyBhcmUgZmluaXNoZWQnKTtcbiAqIH0pO1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvckFuaW1hdGlvbnMoZWxlbWVudD86IEVsZW1lbnQgfCBudWxsLCBzdWJ0cmVlID0gZmFsc2UpOiBQcm9taXNlPEFuaW1hdGlvbltdPiB7XG4gIGlmICghZWxlbWVudCB8fCB0eXBlb2YgZWxlbWVudC5nZXRBbmltYXRpb25zICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UuYWxsKGVsZW1lbnQuZ2V0QW5pbWF0aW9ucyh7IHN1YnRyZWUgfSkubWFwKChhbmltYXRpb24pID0+IGFuaW1hdGlvbi5maW5pc2hlZCkpLmNhdGNoKCgpID0+IFtdKTtcbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  export * from './angular';
2
+ export * from './animations-handler';
2
3
  export * from './array';
3
4
  export * from './build-url';
4
5
  export * from './build-website-url';
@@ -19,4 +20,4 @@ export * from './provide-config';
19
20
  export * from './queue';
20
21
  export * from './type-guards';
21
22
  export * from './until-destroyed';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5ndWxhcic7XG5leHBvcnQgKiBmcm9tICcuL2FycmF5JztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQtdXJsJztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGQtd2Vic2l0ZS11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYWNoZS1zdG9yYWdlLWNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvZXJjaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZGVib3VuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZlci1mbic7XG5leHBvcnQgKiBmcm9tICcuL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtYXhpcyc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1sYW5ndWFnZS1jb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LW9wcG9zaXRlLXNpZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtc2lkZSc7XG5leHBvcnQgKiBmcm9tICcuL2dldC11bmlxdWUtaWQnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXRjaC11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9uZy1jaGFuZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWV1ZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtZ3VhcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vdW50aWwtZGVzdHJveWVkJztcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmd1bGFyJztcbmV4cG9ydCAqIGZyb20gJy4vYW5pbWF0aW9ucy1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXknO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZC11cmwnO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZC13ZWJzaXRlLXVybCc7XG5leHBvcnQgKiBmcm9tICcuL2NhY2hlLXN0b3JhZ2UtY2xpZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29lcmNpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9kZWJvdW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL2RlZmVyLWZuJztcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtbWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL2dldC1heGlzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LWxhbmd1YWdlLWNvZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtb3Bwb3NpdGUtc2lkZSc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1zaWRlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LXVuaXF1ZS1pZCc7XG5leHBvcnQgKiBmcm9tICcuL21hdGNoLXVybCc7XG5leHBvcnQgKiBmcm9tICcuL25nLWNoYW5nZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXVlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS1ndWFyZHMnO1xuZXhwb3J0ICogZnJvbSAnLi91bnRpbC1kZXN0cm95ZWQnO1xuIl19
@@ -5,7 +5,7 @@ import { arrow, flip, computePosition, offset, shift, size, hide, autoUpdate } f
5
5
  import { CoreModule } from '@odx/angular';
6
6
  import { DynamicViewDirective, DynamicViewService } from '@odx/angular/cdk/dynamic-view';
7
7
  import { CSSComponent, deepmerge } from '@odx/angular/internal';
8
- import { px, getSide, getOppositeSide, applyStyles, Position, injectElement, deferFn, hasChanged, isPresent } from '@odx/angular/utils';
8
+ import { px, getSide, getOppositeSide, applyStyles, Position, waitForAnimations, injectElement, deferFn, hasChanged, isPresent } from '@odx/angular/utils';
9
9
  import { EMPTY, Subject } from 'rxjs';
10
10
 
11
11
  /**
@@ -135,7 +135,10 @@ class ConnectedOverlayRef {
135
135
  *
136
136
  * @returns {void}
137
137
  */
138
- close() {
138
+ async close() {
139
+ const hiddenClass = this.dynamicViewRef.getContext().options?.hiddenClass || 'is-hidden';
140
+ this.element?.classList.add(hiddenClass);
141
+ await waitForAnimations(this.element);
139
142
  this.dynamicViewRef.destroy();
140
143
  }
141
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-connected-overlay.mjs","sources":["../../../../libs/angular/cdk/connected-overlay/src/lib/helpers/compute-overlay-position.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/models/connected-overlay-options.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/models/connected-overlay-ref.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/connected-overlay.component.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/connected-overlay.component.html","../../../../libs/angular/cdk/connected-overlay/src/lib/connected-overlay.service.ts","../../../../libs/angular/cdk/connected-overlay/src/odx-angular-cdk-connected-overlay.ts"],"sourcesContent":["import { ComputePositionReturn, VirtualElement, arrow, computePosition, flip, hide, shift, size, offset as withOffset } from '@floating-ui/dom';\nimport { applyStyles, getOppositeSide, getSide, px } from '@odx/angular/utils';\nimport { ConnectedOverlayOptions } from '../models';\n\n/**\n * Computes the position of an overlay element relative to a reference element.\n *\n * @param referenceElement - The reference element to position the overlay relative to.\n * @param overlayElement - The overlay element to be positioned.\n * @param contentElement - The content element within the overlay.\n * @param arrowElement - The arrow element within the overlay.\n * @param options - The options for positioning the overlay.\n * @returns A promise that resolves to the computed position of the overlay.\n */\nexport async function computeOverlayPosition(\n referenceElement: VirtualElement,\n overlayElement: HTMLElement,\n contentElement: HTMLElement,\n arrowElement: HTMLElement,\n options: ConnectedOverlayOptions,\n): Promise<ComputePositionReturn> {\n const variablePrefix = '--odx-cdk-connected-overlay';\n const { position, offset, outerPadding, matchReferenceWidth, enableFallback, fallbackAxisSideDirection, strategy, minHeight } = options;\n const arrowSize = options.showArrow ? arrowElement.offsetWidth : 0;\n const arrowMiddleware = options.showArrow ? [arrow({ element: arrowElement, padding: 8 })] : [];\n const flipMiddleWare = enableFallback ? [flip({ fallbackAxisSideDirection })] : [];\n return computePosition(referenceElement, overlayElement, {\n strategy,\n placement: position,\n middleware: [\n withOffset(Math.max(offset, arrowSize + offset)),\n shift({ padding: outerPadding }),\n ...flipMiddleWare,\n size({\n padding: outerPadding,\n apply: ({ availableHeight, rects }) => {\n contentElement.style.setProperty?.(`${variablePrefix}-min-height`, minHeight ? px(Math.min(availableHeight, minHeight)) : null);\n contentElement.style.setProperty?.(`${variablePrefix}-min-width`, matchReferenceWidth ? px(rects.reference.width) : null);\n },\n }),\n ...arrowMiddleware,\n hide({ rootBoundary: 'viewport' }),\n ],\n }).then((result) => {\n overlayElement.style.setProperty?.(`${variablePrefix}-position-x`, px(result.x));\n overlayElement.style.setProperty?.(`${variablePrefix}-position-y`, px(result.y));\n if (options.hiddenClass) {\n overlayElement.classList.toggle(options.hiddenClass, !!result.middlewareData.hide?.referenceHidden);\n }\n if (options.showArrow) {\n const overlaySide = getSide(result.placement);\n const arrowSide = getOppositeSide(result.placement);\n applyStyles(arrowElement, {\n display: null,\n top: px(result.middlewareData.arrow?.y),\n left: px(result.middlewareData.arrow?.x),\n [arrowSide]: px(-arrowSize / 2),\n [overlaySide]: null,\n });\n } else {\n applyStyles(arrowElement, { display: 'none' });\n }\n\n return result;\n });\n}\n","import { Strategy } from '@floating-ui/dom';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { Position } from '@odx/angular/utils';\n\nexport interface ConnectedOverlayOptions {\n content?: DynamicContent | null;\n context?: Record<string, unknown>;\n containerClass?: string | null;\n hiddenClass: string | null;\n enableFallback: boolean;\n fallbackAxisSideDirection: 'start' | 'end';\n matchReferenceWidth: boolean;\n minHeight?: number | null;\n offset: number;\n outerPadding: number;\n position: Position;\n strategy: Strategy;\n showArrow?: boolean;\n updateOnAnimationFrame?: boolean;\n hooks?: {\n beforeOpen?: () => void;\n afterOpen?: () => void;\n beforeClose?: () => void;\n afterClose?: () => void;\n };\n}\n\nexport const DefaultConnectedOverlayOptions: ConnectedOverlayOptions = {\n hiddenClass: 'is-hidden',\n enableFallback: false,\n fallbackAxisSideDirection: 'start',\n matchReferenceWidth: false,\n offset: 8,\n outerPadding: 12,\n position: Position.BOTTOM,\n strategy: 'fixed',\n};\n","import { DynamicViewRef } from '@odx/angular/cdk/dynamic-view';\nimport { EMPTY, Observable } from 'rxjs';\nimport { ConnectedOverlayComponent } from '../connected-overlay.component';\nimport { ConnectedOverlayOptions } from './connected-overlay-options';\n\n/**\n * A reference to a connected overlay created by the `ConnectedOverlayService`. This class provides methods to interact\n * with the overlay, such as updating its options or closing it. It encapsulates the `DynamicViewRef` for the overlay's instance,\n * allowing for direct manipulation of the overlay's state and behavior.\n *\n * This example demonstrates how to use a `ConnectedOverlayRef` to update and close a connected overlay in response\n * to user interactions.\n *\n * @example\n * ```ts\n * class MyComponent {\n * private overlayRef?: ConnectedOverlayRef;\n *\n * constructor(private overlayService: ConnectedOverlayService) {}\n *\n * openOverlay() {\n * this.overlayRef = this.overlayService.createOverlay(this.someElementRef.nativeElement, { position: 'bottom' });\n * }\n *\n * updateOverlayPosition() {\n * if (this.overlayRef) {\n * this.overlayRef.update({ position: 'top' });\n * }\n * }\n *\n * closeOverlay() {\n * this.overlayRef?.close();\n * }\n * }\n * ```\n *\n * In this example, `MyComponent` uses the `ConnectedOverlayService` to create an overlay. It stores a reference to\n * the created overlay in `overlayRef`, allowing it to update the overlay's position or close it when necessary.\n */\nexport class ConnectedOverlayRef {\n public readonly element = this.dynamicViewRef.getElement();\n\n /**\n * An Observable that emits when the overlay is closed.\n *\n * @emits {void} - Emits when the overlay is closed.\n *\n */\n public readonly onClose$: Observable<void> = this.dynamicViewRef.getContext().closed ?? EMPTY;\n\n constructor(private readonly dynamicViewRef: DynamicViewRef<typeof ConnectedOverlayComponent>) {}\n\n /**\n * Updates the connected overlay with new options.\n *\n * @param options {Partial<ConnectedOverlayOptions>} - The new options to be applied to the connected overlay.\n */\n public update(options: Partial<ConnectedOverlayOptions>): void {\n this.dynamicViewRef.update({ options: options as ConnectedOverlayOptions });\n }\n\n /**\n * Closes the connected overlay.\n *\n * @returns {void}\n */\n public close(): void {\n this.dynamicViewRef.destroy();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { VirtualElement, autoUpdate } from '@floating-ui/dom';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { NgChanges, Side, deferFn, getSide, hasChanged, injectElement, isPresent } from '@odx/angular/utils';\nimport { Subject } from 'rxjs';\nimport { computeOverlayPosition } from './helpers';\nimport { ConnectedOverlayOptions, DefaultConnectedOverlayOptions } from './models';\n\n@CSSComponent('cdk-connected-overlay')\n@Component({\n standalone: true,\n selector: 'odx-connected-overlay[popover=\"manual\"]',\n imports: [CoreModule, DynamicViewDirective],\n templateUrl: 'connected-overlay.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ConnectedOverlayComponent implements OnInit, OnChanges, OnDestroy {\n private readonly zone = inject(NgZone);\n private positionUpdater: (() => void) | null = null;\n\n protected readonly injector = inject(Injector);\n protected overlaySide?: Side;\n\n @ViewChild('content', { static: true })\n protected contentElement!: ElementRef<HTMLElement>;\n\n @ViewChild('arrow', { static: true })\n protected arrowElement!: ElementRef<HTMLElement>;\n\n public readonly element = injectElement();\n\n @Input()\n public referenceElement!: VirtualElement;\n\n @Input()\n public options: ConnectedOverlayOptions = DefaultConnectedOverlayOptions;\n\n @Output()\n public closed = new Subject<void>();\n\n public ngOnInit(): void {\n this.options.hooks?.beforeOpen?.();\n deferFn(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.element.nativeElement as any)?.showPopover?.();\n this.options.hooks?.afterOpen?.();\n });\n }\n\n public ngOnChanges(changes: NgChanges<ConnectedOverlayComponent>): void {\n if (hasChanged(changes, ['options'], false)) {\n this.overlaySide = getSide(this.options.position);\n }\n if (hasChanged(changes, ['referenceElement', 'options'], false)) {\n this.stopPositionUpdater();\n this.startPositionUpdater();\n }\n }\n\n public ngOnDestroy(): void {\n this.options.hooks?.beforeClose?.();\n this.stopPositionUpdater();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.element.nativeElement as any)?.hidePopover?.();\n this.options.hooks?.afterClose?.();\n }\n\n private startPositionUpdater(): void {\n this.positionUpdater = this.zone.runOutsideAngular(() =>\n autoUpdate(this.referenceElement, this.element.nativeElement, () => this.updatePosition(), {\n elementResize: isPresent(window.ResizeObserver),\n animationFrame: this.options.updateOnAnimationFrame,\n }),\n );\n }\n\n private stopPositionUpdater(): void {\n this.positionUpdater?.();\n this.positionUpdater = null;\n }\n\n private async updatePosition(): Promise<void> {\n return computeOverlayPosition(\n this.referenceElement,\n this.element.nativeElement,\n this.contentElement.nativeElement,\n this.arrowElement.nativeElement,\n this.options,\n ).then(({ placement }) => {\n this.overlaySide = getSide(placement);\n });\n }\n}\n","<div class=\"odx-cdk-connected-overlay__content {{ options.containerClass }}\" #content>\n <ng-template [odxDynamicView]=\"options.content\" [odxDynamicViewContext]=\"options.context\" [odxDynamicViewInjector]=\"injector\" />\n <div class=\"odx-cdk-connected-overlay-arrow\" #arrow></div>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { VirtualElement } from '@floating-ui/dom';\nimport { DynamicViewRenderingOptions, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deepmerge } from '@odx/angular/internal';\nimport { ConnectedOverlayComponent } from './connected-overlay.component';\nimport { ConnectedOverlayOptions, ConnectedOverlayRef, DefaultConnectedOverlayOptions } from './models';\n\n/**\n * Service for creating and managing connected overlays. These overlays are UI elements such as popovers, tooltips,\n * or dropdown menus that are positioned relative to a reference element in the DOM. This service leverages the `DynamicViewService`\n * for dynamic component rendering and provides a streamlined API for creating overlays with custom positioning and options.\n *\n * Use the `ConnectedOverlayService` to dynamically create an overlay next to a specific element in your Angular application.\n * This example demonstrates creating a connected overlay next to a button element when the button is clicked.\n *\n * @example\n * ```ts\n * import { Component, ElementRef, ViewChild } from '@angular/core';\n * import { ConnectedOverlayService, ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\n *\n * @Component({\n * selector: 'app-example',\n * template: `<button #triggerElement>Click me</button>`,\n * })\n * class AppComponent {\n * @ViewChild('triggerElement') triggerElementRef!: ElementRef;\n *\n * constructor(private connectedOverlayService: ConnectedOverlayService) {}\n *\n * showOverlay(): void {\n * const options: Partial<ConnectedOverlayOptions> = {\n * position: 'bottom-start',\n * showArrow: true,\n * content: 'Hello, world!',\n * };\n *\n * this.connectedOverlayService.createOverlay(this.triggerElementRef.nativeElement, options);\n * }\n * }\n * ```\n *\n * This service simplifies the process of creating dynamic, positionally aware overlays that enhance the interactivity\n * and visual appeal of Angular applications.\n */\n@Injectable({ providedIn: 'root' })\nexport class ConnectedOverlayService {\n private readonly dynamicViewService = inject(DynamicViewService);\n\n /**\n * Creates a connected overlay.\n * @param referenceElement - The reference element to which the overlay will be connected.\n * @param options - Optional configuration for the connected overlay.\n * @param renderingOptions - Optional rendering options for the connected overlay.\n * @returns {ConnectedOverlayRef} The created Connected Overlay reference instance.\n */\n public createOverlay(\n referenceElement: VirtualElement,\n options?: Partial<ConnectedOverlayOptions>,\n renderingOptions?: Partial<DynamicViewRenderingOptions>,\n ): ConnectedOverlayRef {\n const dynamicViewRef = this.dynamicViewService.createView(ConnectedOverlayComponent, {\n ...renderingOptions,\n context: { options: deepmerge(DefaultConnectedOverlayOptions, options) as ConnectedOverlayOptions, referenceElement },\n });\n\n return new ConnectedOverlayRef(dynamicViewRef);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["offset","withOffset"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-cdk-connected-overlay.mjs","sources":["../../../../libs/angular/cdk/connected-overlay/src/lib/helpers/compute-overlay-position.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/models/connected-overlay-options.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/models/connected-overlay-ref.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/connected-overlay.component.ts","../../../../libs/angular/cdk/connected-overlay/src/lib/connected-overlay.component.html","../../../../libs/angular/cdk/connected-overlay/src/lib/connected-overlay.service.ts","../../../../libs/angular/cdk/connected-overlay/src/odx-angular-cdk-connected-overlay.ts"],"sourcesContent":["import { ComputePositionReturn, VirtualElement, arrow, computePosition, flip, hide, shift, size, offset as withOffset } from '@floating-ui/dom';\nimport { applyStyles, getOppositeSide, getSide, px } from '@odx/angular/utils';\nimport { ConnectedOverlayOptions } from '../models';\n\n/**\n * Computes the position of an overlay element relative to a reference element.\n *\n * @param referenceElement - The reference element to position the overlay relative to.\n * @param overlayElement - The overlay element to be positioned.\n * @param contentElement - The content element within the overlay.\n * @param arrowElement - The arrow element within the overlay.\n * @param options - The options for positioning the overlay.\n * @returns A promise that resolves to the computed position of the overlay.\n */\nexport async function computeOverlayPosition(\n referenceElement: VirtualElement,\n overlayElement: HTMLElement,\n contentElement: HTMLElement,\n arrowElement: HTMLElement,\n options: ConnectedOverlayOptions,\n): Promise<ComputePositionReturn> {\n const variablePrefix = '--odx-cdk-connected-overlay';\n const { position, offset, outerPadding, matchReferenceWidth, enableFallback, fallbackAxisSideDirection, strategy, minHeight } = options;\n const arrowSize = options.showArrow ? arrowElement.offsetWidth : 0;\n const arrowMiddleware = options.showArrow ? [arrow({ element: arrowElement, padding: 8 })] : [];\n const flipMiddleWare = enableFallback ? [flip({ fallbackAxisSideDirection })] : [];\n return computePosition(referenceElement, overlayElement, {\n strategy,\n placement: position,\n middleware: [\n withOffset(Math.max(offset, arrowSize + offset)),\n shift({ padding: outerPadding }),\n ...flipMiddleWare,\n size({\n padding: outerPadding,\n apply: ({ availableHeight, rects }) => {\n contentElement.style.setProperty?.(`${variablePrefix}-min-height`, minHeight ? px(Math.min(availableHeight, minHeight)) : null);\n contentElement.style.setProperty?.(`${variablePrefix}-min-width`, matchReferenceWidth ? px(rects.reference.width) : null);\n },\n }),\n ...arrowMiddleware,\n hide({ rootBoundary: 'viewport' }),\n ],\n }).then((result) => {\n overlayElement.style.setProperty?.(`${variablePrefix}-position-x`, px(result.x));\n overlayElement.style.setProperty?.(`${variablePrefix}-position-y`, px(result.y));\n if (options.hiddenClass) {\n overlayElement.classList.toggle(options.hiddenClass, !!result.middlewareData.hide?.referenceHidden);\n }\n if (options.showArrow) {\n const overlaySide = getSide(result.placement);\n const arrowSide = getOppositeSide(result.placement);\n applyStyles(arrowElement, {\n display: null,\n top: px(result.middlewareData.arrow?.y),\n left: px(result.middlewareData.arrow?.x),\n [arrowSide]: px(-arrowSize / 2),\n [overlaySide]: null,\n });\n } else {\n applyStyles(arrowElement, { display: 'none' });\n }\n\n return result;\n });\n}\n","import { Strategy } from '@floating-ui/dom';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { Position } from '@odx/angular/utils';\n\nexport interface ConnectedOverlayOptions {\n content?: DynamicContent | null;\n context?: Record<string, unknown>;\n containerClass?: string | null;\n hiddenClass: string | null;\n enableFallback: boolean;\n fallbackAxisSideDirection: 'start' | 'end';\n matchReferenceWidth: boolean;\n minHeight?: number | null;\n offset: number;\n outerPadding: number;\n position: Position;\n strategy: Strategy;\n showArrow?: boolean;\n updateOnAnimationFrame?: boolean;\n hooks?: {\n beforeOpen?: () => void;\n afterOpen?: () => void;\n beforeClose?: () => void;\n afterClose?: () => void;\n };\n}\n\nexport const DefaultConnectedOverlayOptions: ConnectedOverlayOptions = {\n hiddenClass: 'is-hidden',\n enableFallback: false,\n fallbackAxisSideDirection: 'start',\n matchReferenceWidth: false,\n offset: 8,\n outerPadding: 12,\n position: Position.BOTTOM,\n strategy: 'fixed',\n};\n","import { DynamicViewRef } from '@odx/angular/cdk/dynamic-view';\nimport { waitForAnimations } from '@odx/angular/utils';\nimport { EMPTY, Observable } from 'rxjs';\nimport { ConnectedOverlayComponent } from '../connected-overlay.component';\nimport { ConnectedOverlayOptions } from './connected-overlay-options';\n\n/**\n * A reference to a connected overlay created by the `ConnectedOverlayService`. This class provides methods to interact\n * with the overlay, such as updating its options or closing it. It encapsulates the `DynamicViewRef` for the overlay's instance,\n * allowing for direct manipulation of the overlay's state and behavior.\n *\n * This example demonstrates how to use a `ConnectedOverlayRef` to update and close a connected overlay in response\n * to user interactions.\n *\n * @example\n * ```ts\n * class MyComponent {\n * private overlayRef?: ConnectedOverlayRef;\n *\n * constructor(private overlayService: ConnectedOverlayService) {}\n *\n * openOverlay() {\n * this.overlayRef = this.overlayService.createOverlay(this.someElementRef.nativeElement, { position: 'bottom' });\n * }\n *\n * updateOverlayPosition() {\n * if (this.overlayRef) {\n * this.overlayRef.update({ position: 'top' });\n * }\n * }\n *\n * closeOverlay() {\n * this.overlayRef?.close();\n * }\n * }\n * ```\n *\n * In this example, `MyComponent` uses the `ConnectedOverlayService` to create an overlay. It stores a reference to\n * the created overlay in `overlayRef`, allowing it to update the overlay's position or close it when necessary.\n */\nexport class ConnectedOverlayRef {\n public readonly element = this.dynamicViewRef.getElement();\n\n /**\n * An Observable that emits when the overlay is closed.\n *\n * @emits {void} - Emits when the overlay is closed.\n *\n */\n public readonly onClose$: Observable<void> = this.dynamicViewRef.getContext().closed ?? EMPTY;\n\n constructor(private readonly dynamicViewRef: DynamicViewRef<typeof ConnectedOverlayComponent>) {}\n\n /**\n * Updates the connected overlay with new options.\n *\n * @param options {Partial<ConnectedOverlayOptions>} - The new options to be applied to the connected overlay.\n */\n public update(options: Partial<ConnectedOverlayOptions>): void {\n this.dynamicViewRef.update({ options: options as ConnectedOverlayOptions });\n }\n\n /**\n * Closes the connected overlay.\n *\n * @returns {void}\n */\n public async close() {\n const hiddenClass = this.dynamicViewRef.getContext().options?.hiddenClass || 'is-hidden';\n this.element?.classList.add(hiddenClass);\n await waitForAnimations(this.element);\n this.dynamicViewRef.destroy();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { VirtualElement, autoUpdate } from '@floating-ui/dom';\nimport { CoreModule } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { NgChanges, Side, deferFn, getSide, hasChanged, injectElement, isPresent } from '@odx/angular/utils';\nimport { Subject } from 'rxjs';\nimport { computeOverlayPosition } from './helpers';\nimport { ConnectedOverlayOptions, DefaultConnectedOverlayOptions } from './models';\n\n@CSSComponent('cdk-connected-overlay')\n@Component({\n standalone: true,\n selector: 'odx-connected-overlay[popover=\"manual\"]',\n imports: [CoreModule, DynamicViewDirective],\n templateUrl: 'connected-overlay.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ConnectedOverlayComponent implements OnInit, OnChanges, OnDestroy {\n private readonly zone = inject(NgZone);\n private positionUpdater: (() => void) | null = null;\n\n protected readonly injector = inject(Injector);\n protected overlaySide?: Side;\n\n @ViewChild('content', { static: true })\n protected contentElement!: ElementRef<HTMLElement>;\n\n @ViewChild('arrow', { static: true })\n protected arrowElement!: ElementRef<HTMLElement>;\n\n public readonly element = injectElement();\n\n @Input()\n public referenceElement!: VirtualElement;\n\n @Input()\n public options: ConnectedOverlayOptions = DefaultConnectedOverlayOptions;\n\n @Output()\n public closed = new Subject<void>();\n\n public ngOnInit(): void {\n this.options.hooks?.beforeOpen?.();\n deferFn(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.element.nativeElement as any)?.showPopover?.();\n this.options.hooks?.afterOpen?.();\n });\n }\n\n public ngOnChanges(changes: NgChanges<ConnectedOverlayComponent>): void {\n if (hasChanged(changes, ['options'], false)) {\n this.overlaySide = getSide(this.options.position);\n }\n if (hasChanged(changes, ['referenceElement', 'options'], false)) {\n this.stopPositionUpdater();\n this.startPositionUpdater();\n }\n }\n\n public ngOnDestroy(): void {\n this.options.hooks?.beforeClose?.();\n this.stopPositionUpdater();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.element.nativeElement as any)?.hidePopover?.();\n this.options.hooks?.afterClose?.();\n }\n\n private startPositionUpdater(): void {\n this.positionUpdater = this.zone.runOutsideAngular(() =>\n autoUpdate(this.referenceElement, this.element.nativeElement, () => this.updatePosition(), {\n elementResize: isPresent(window.ResizeObserver),\n animationFrame: this.options.updateOnAnimationFrame,\n }),\n );\n }\n\n private stopPositionUpdater(): void {\n this.positionUpdater?.();\n this.positionUpdater = null;\n }\n\n private async updatePosition(): Promise<void> {\n return computeOverlayPosition(\n this.referenceElement,\n this.element.nativeElement,\n this.contentElement.nativeElement,\n this.arrowElement.nativeElement,\n this.options,\n ).then(({ placement }) => {\n this.overlaySide = getSide(placement);\n });\n }\n}\n","<div class=\"odx-cdk-connected-overlay__content {{ options.containerClass }}\" #content>\n <ng-template [odxDynamicView]=\"options.content\" [odxDynamicViewContext]=\"options.context\" [odxDynamicViewInjector]=\"injector\" />\n <div class=\"odx-cdk-connected-overlay-arrow\" #arrow></div>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { VirtualElement } from '@floating-ui/dom';\nimport { DynamicViewRenderingOptions, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deepmerge } from '@odx/angular/internal';\nimport { ConnectedOverlayComponent } from './connected-overlay.component';\nimport { ConnectedOverlayOptions, ConnectedOverlayRef, DefaultConnectedOverlayOptions } from './models';\n\n/**\n * Service for creating and managing connected overlays. These overlays are UI elements such as popovers, tooltips,\n * or dropdown menus that are positioned relative to a reference element in the DOM. This service leverages the `DynamicViewService`\n * for dynamic component rendering and provides a streamlined API for creating overlays with custom positioning and options.\n *\n * Use the `ConnectedOverlayService` to dynamically create an overlay next to a specific element in your Angular application.\n * This example demonstrates creating a connected overlay next to a button element when the button is clicked.\n *\n * @example\n * ```ts\n * import { Component, ElementRef, ViewChild } from '@angular/core';\n * import { ConnectedOverlayService, ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';\n *\n * @Component({\n * selector: 'app-example',\n * template: `<button #triggerElement>Click me</button>`,\n * })\n * class AppComponent {\n * @ViewChild('triggerElement') triggerElementRef!: ElementRef;\n *\n * constructor(private connectedOverlayService: ConnectedOverlayService) {}\n *\n * showOverlay(): void {\n * const options: Partial<ConnectedOverlayOptions> = {\n * position: 'bottom-start',\n * showArrow: true,\n * content: 'Hello, world!',\n * };\n *\n * this.connectedOverlayService.createOverlay(this.triggerElementRef.nativeElement, options);\n * }\n * }\n * ```\n *\n * This service simplifies the process of creating dynamic, positionally aware overlays that enhance the interactivity\n * and visual appeal of Angular applications.\n */\n@Injectable({ providedIn: 'root' })\nexport class ConnectedOverlayService {\n private readonly dynamicViewService = inject(DynamicViewService);\n\n /**\n * Creates a connected overlay.\n * @param referenceElement - The reference element to which the overlay will be connected.\n * @param options - Optional configuration for the connected overlay.\n * @param renderingOptions - Optional rendering options for the connected overlay.\n * @returns {ConnectedOverlayRef} The created Connected Overlay reference instance.\n */\n public createOverlay(\n referenceElement: VirtualElement,\n options?: Partial<ConnectedOverlayOptions>,\n renderingOptions?: Partial<DynamicViewRenderingOptions>,\n ): ConnectedOverlayRef {\n const dynamicViewRef = this.dynamicViewService.createView(ConnectedOverlayComponent, {\n ...renderingOptions,\n context: { options: deepmerge(DefaultConnectedOverlayOptions, options) as ConnectedOverlayOptions, referenceElement },\n });\n\n return new ConnectedOverlayRef(dynamicViewRef);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["offset","withOffset"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { ButtonComponent } from '@odx/angular/components/button';
8
8
  import { deepmerge, CSSComponent, CSSModifier } from '@odx/angular/internal';
9
9
  import { Subject, share, finalize } from 'rxjs';
10
10
  import { __decorate, __metadata } from 'tslib';
11
- import { injectElement, hasChanged, isTemplateRef, createConfigTokens, Queue, getUniqueId, deferFn } from '@odx/angular/utils';
11
+ import { injectElement, hasChanged, isTemplateRef, createConfigTokens, Queue, getUniqueId, waitForAnimations, deferFn } from '@odx/angular/utils';
12
12
  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';
@@ -493,9 +493,10 @@ let ModalComponent = class ModalComponent {
493
493
  }
494
494
  }
495
495
  preventNativeDismiss(event) {
496
- if (this.modalRef.options.dismissable || event.key !== 'Escape')
497
- return;
498
- event.preventDefault();
496
+ if (event.key === 'Escape') {
497
+ event.preventDefault();
498
+ this.modalRef.options.dismissable && this.modalRef.destroy();
499
+ }
499
500
  }
500
501
  handleDialogClose() {
501
502
  this.modalRef.dismiss();
@@ -667,13 +668,16 @@ class ModalService {
667
668
  }),
668
669
  host: modalRef.options.host,
669
670
  });
671
+ const dialog = viewRef.getElement();
670
672
  const onDestroy = async () => {
671
- viewRef.getElement()?.close?.();
673
+ dialog?.classList.add('is-hidden');
674
+ await waitForAnimations(dialog);
675
+ dialog?.close();
672
676
  this.openModals.remove(modalRef);
673
677
  viewRef.destroy();
674
678
  };
675
679
  modalRef.onDestroy$.pipe(finalize(onDestroy)).subscribe();
676
- deferFn(() => viewRef.getElement()?.showModal?.());
680
+ deferFn(() => dialog?.showModal());
677
681
  }
678
682
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalService, deps: [{ token: i1$1.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
679
683
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalService, providedIn: 'root' }); }