ng-hub-ui-portal 0.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Carlos Morcillo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Portal
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project portal` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project portal`.
8
+ > Note: Don't forget to add `--project portal` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build portal` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build portal`, go to the dist folder `cd dist/portal` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test portal` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A configuration service for the [`HubPortal`](#/components/portal/api#HubPortal) service.
5
+ *
6
+ * You can inject this service, typically in your root component, and customize the values of its properties in
7
+ * order to provide default values for all portals used in the application.
8
+ *
9
+ * @since 3.1.0
10
+ */
11
+ export class HubPortalConfig {
12
+ constructor() {
13
+ this.backdrop = false;
14
+ this.fullscreen = false;
15
+ this.keyboard = true;
16
+ this.dismissSelector = '[data-dismiss="portal"]';
17
+ this.closeSelector = '[data-close="portal"]';
18
+ }
19
+ get animation() {
20
+ return this._animation ?? true /* this._hubConfig.animation */;
21
+ }
22
+ set animation(animation) {
23
+ this._animation = animation;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HubPortalConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
26
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HubPortalConfig, providedIn: 'root' }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HubPortalConfig, decorators: [{
29
+ type: Injectable,
30
+ args: [{ providedIn: 'root' }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcnRhbC9zcmMvbGliL3BvcnRhbC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7QUFvS3JEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQU9DLGFBQVEsR0FBdUIsS0FBSyxDQUFDO1FBSXJDLGVBQVUsR0FBeUQsS0FBSyxDQUFDO1FBRXpFLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFRaEIsb0JBQWUsR0FBVyx5QkFBeUIsQ0FBQztRQUNwRCxrQkFBYSxHQUFXLHVCQUF1QixDQUFDO0tBU2hEO0lBTkEsSUFBSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQywrQkFBK0IsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsU0FBa0I7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQzs4R0E3QlcsZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIGltcG9ydCB7IEh1YkNvbmZpZyB9IGZyb20gJy4uL2h1Yi1jb25maWcnO1xuXG4vKipcbiAqIE9wdGlvbnMgYXZhaWxhYmxlIHdoZW4gb3BlbmluZyBuZXcgcG9ydGFsIHdpbmRvd3Mgd2l0aCBgSHViUG9ydGFsLm9wZW4oKWAgbWV0aG9kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh1YlBvcnRhbE9wdGlvbnMge1xuXHQvKipcblx0ICogSWYgYHRydWVgLCBwb3J0YWwgb3BlbmluZyBhbmQgY2xvc2luZyB3aWxsIGJlIGFuaW1hdGVkLlxuXHQgKlxuXHQgKiBAc2luY2UgOC4wLjBcblx0ICovXG5cdGFuaW1hdGlvbj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBvcnRhbCB3aW5kb3cuXG5cdCAqXG5cdCAqIEBzaW5jZSAyLjIuMFxuXHQgKi9cblx0YXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwb3J0YWwgd2luZG93LlxuXHQgKlxuXHQgKiBAc2luY2UgNi4xLjBcblx0ICovXG5cdGFyaWFEZXNjcmliZWRCeT86IHN0cmluZztcblxuXHQvKipcblx0ICogQ2FsbGJhY2sgcmlnaHQgYmVmb3JlIHRoZSBwb3J0YWwgd2lsbCBiZSBkaXNtaXNzZWQuXG5cdCAqXG5cdCAqIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJuczpcblx0ICogKiBgZmFsc2VgXG5cdCAqICogYSBwcm9taXNlIHJlc29sdmVkIHdpdGggYGZhbHNlYFxuXHQgKiAqIGEgcHJvbWlzZSB0aGF0IGlzIHJlamVjdGVkXG5cdCAqXG5cdCAqIHRoZW4gdGhlIHBvcnRhbCB3b24ndCBiZSBkaXNtaXNzZWQuXG5cdCAqL1xuXHRiZWZvcmVEaXNtaXNzPzogKCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCwgdGhlIHBvcnRhbCB3aWxsIGJlIGNlbnRlcmVkIHZlcnRpY2FsbHkuXG5cdCAqXG5cdCAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cblx0ICpcblx0ICogQHNpbmNlIDEuMS4wXG5cdCAqL1xuXHRjZW50ZXJlZD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgZWxlbWVudCBhbGwgbmV3IHBvcnRhbCB3aW5kb3dzIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cblx0ICogU2luY2UgdjUuMy4wIGl0IGlzIGFsc28gcG9zc2libGUgdG8gcGFzcyB0aGUgcmVmZXJlbmNlIHRvIGFuIGBIVE1MRWxlbWVudGAuXG5cdCAqXG5cdCAqIElmIG5vdCBzcGVjaWZpZWQsIHdpbGwgYmUgYGJvZHlgLlxuXHQgKi9cblx0Y29udGFpbmVyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCBwb3J0YWwgd2lsbCBhbHdheXMgYmUgZGlzcGxheWVkIGluIGZ1bGxzY3JlZW4gbW9kZS5cblx0ICpcblx0ICogRm9yIHZhbHVlcyBsaWtlIGAnbWQnYCBpdCBtZWFucyB0aGF0IHBvcnRhbCB3aWxsIGJlIGRpc3BsYXllZCBpbiBmdWxsc2NyZWVuIG1vZGVcblx0ICogb25seSBpZiB0aGUgdmlld3BvcnQgd2lkdGggaXMgYmVsb3cgYCdtZCdgLiBGb3IgY3VzdG9tIHN0cmluZ3MgKGV4LiB3aGVuIHBhc3NpbmcgYCdteXNpemUnYClcblx0ICogaXQgd2lsbCBhZGQgYSBgJ3BvcnRhbC1mdWxsc2NyZWVuLW15c2l6ZS1kb3duJ2AgY2xhc3MuXG5cdCAqXG5cdCAqIElmIG5vdCBzcGVjaWZpZWQgd2lsbCBiZSBgZmFsc2VgLlxuXHQgKlxuXHQgKiBAc2luY2UgMTIuMS4wXG5cdCAqL1xuXHRmdWxsc2NyZWVuPzogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICd4eGwnIHwgYm9vbGVhbiB8IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIGBJbmplY3RvcmAgdG8gdXNlIGZvciBwb3J0YWwgY29udGVudC5cblx0ICovXG5cdGluamVjdG9yPzogSW5qZWN0b3I7XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCwgdGhlIHBvcnRhbCB3aWxsIGJlIGNsb3NlZCB3aGVuIGBFc2NhcGVgIGtleSBpcyBwcmVzc2VkXG5cdCAqXG5cdCAqIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuXHQgKi9cblx0a2V5Ym9hcmQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBTY3JvbGxhYmxlIHBvcnRhbCBjb250ZW50IChmYWxzZSBieSBkZWZhdWx0KS5cblx0ICpcblx0ICogQHNpbmNlIDUuMC4wXG5cdCAqL1xuXHRzY3JvbGxhYmxlPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogU2l6ZSBvZiBhIG5ldyBwb3J0YWwgd2luZG93LlxuXHQgKi9cblx0c2l6ZT86ICdzbScgfCAnbGcnIHwgJ3hsJyB8IHN0cmluZztcblxuXHQvKipcblx0ICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBwb3J0YWwgd2luZG93LlxuXHQgKi9cblx0d2luZG93Q2xhc3M/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEEgY3VzdG9tIGNsYXNzIHRvIGFwcGVuZCB0byB0aGUgcG9ydGFsIGRpYWxvZy5cblx0ICpcblx0ICogQHNpbmNlIDkuMS4wXG5cdCAqL1xuXHRwb3J0YWxEaWFsb2dDbGFzcz86IHN0cmluZztcblxuXHQvKipcblx0ICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBwb3J0YWwgYmFja2Ryb3AuXG5cdCAqXG5cdCAqIEBzaW5jZSAxLjEuMFxuXHQgKi9cblx0YmFja2Ryb3BDbGFzcz86IHN0cmluZztcblxuXHQvKipcblx0ICogQWxsb3dzIHRvIHNwZWNpZnkgYSBjdXN0b20gc2VsZWN0b3IgZm9yIHRoZSBoZWFkZXIgZWxlbWVudCBvZiB0aGUgcG9ydGFsIHdpbmRvdy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSB3YW50IHRvIHRhcmdldFxuXHQgKiBhIHNwZWNpZmljIGVsZW1lbnQgd2l0aGluIHRoZSBwb3J0YWwgdG8gYWN0IGFzIHRoZSBoZWFkZXIsIGZvciBleGFtcGxlLCB0byBhcHBseSBjdXN0b20gc3R5bGluZyBvciBmdW5jdGlvbmFsaXR5IHRvIGl0LiBCeVxuXHQgKiBwcm92aWRpbmcgYSBDU1Mgc2VsZWN0b3Igc3RyaW5nLCB5b3UgY2FuIHRhcmdldCB0aGUgZGVzaXJlZFx0aGVhZGVyIGVsZW1lbnQgd2l0aGluIHRoZSBwb3J0YWwgY29udGVudC5cblx0ICovXG5cdGhlYWRlclNlbGVjdG9yPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gc3BlY2lmeSBhIGN1c3RvbSBzZWxlY3RvciBmb3IgdGhlIGZvb3RlciBlbGVtZW50IG9mIHRoZSBwb3J0YWwgd2luZG93LiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gdGFyZ2V0XG5cdCAqIGEgc3BlY2lmaWMgZWxlbWVudCB3aXRoaW4gdGhlIHBvcnRhbCB0byBhY3QgYXMgdGhlIGZvb3RlciwgZm9yIGV4YW1wbGUsIHRvIGFwcGx5IGN1c3RvbSBzdHlsaW5nIG9yIGZ1bmN0aW9uYWxpdHkgdG8gaXQuIEJ5XG5cdCAqIHByb3ZpZGluZyBhIENTUyBzZWxlY3RvciBzdHJpbmcsIHlvdSBjYW4gdGFyZ2V0IHRoZSBkZXNpcmVkIGZvb3RlciBlbGVtZW50IHdpdGhpbiB0aGUgcG9ydGFsIGNvbnRlbnQuXG5cdCAqL1xuXHRmb290ZXJTZWxlY3Rvcj86IHN0cmluZztcblxuXHQvKiogVXNlZCB0byBzcGVjaWZ5IGEgY3VzdG9tIHNlbGVjdG9yIGZvciBlbGVtZW50cyB0aGF0IGNhbiB0cmlnZ2VyIHRoZSBkaXNtaXNzYWwgb2YgdGhlIHBvcnRhbCB3aW5kb3cuIEJ5IHByb3ZpZGluZyBhIENTUyBzZWxlY3RvclxuXHQgKiBzdHJpbmcgZm9yIGBkaXNtaXNzU2VsZWN0b3JgLCB5b3UgY2FuIHRhcmdldCBzcGVjaWZpYyBlbGVtZW50cyB3aXRoaW4gdGhlIHBvcnRhbCBjb250ZW50IHRoYXQsIHdoZW4gaW50ZXJhY3RlZCB3aXRoIChlLmcuLCBjbGlja2VkKSxcblx0ICogd2lsbCBjbG9zZSBvciBkaXNtaXNzIHRoZSBwb3J0YWwgd2luZG93LlxuXHQgKi9cblx0ZGlzbWlzc1NlbGVjdG9yPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHNwZWNpZnkgYSBjdXN0b20gc2VsZWN0b3IgZm9yIGVsZW1lbnRzIHRoYXQgY2FuIHRyaWdnZXIgdGhlIGNsb3Npbmcgb2YgdGhlIHBvcnRhbCB3aW5kb3cuIEJ5IHByb3ZpZGluZyBhIENTUyBzZWxlY3RvclxuXHQgKiBzdHJpbmcgZm9yIGBjbG9zZVNlbGVjdG9yYCwgeW91IGNhbiB0YXJnZXQgc3BlY2lmaWMgZWxlbWVudHMgd2l0aGluIHRoZSBwb3J0YWwgY29udGVudCB0aGF0LCB3aGVuIGludGVyYWN0ZWQgd2l0aCAoZS5nLiwgY2xpY2tlZCksXG5cdCAqIHdpbGwgY2xvc2UgdGhlIHBvcnRhbCB3aW5kb3cuIFRoaXMgYWxsb3dzIGZvciBjdXN0b21pemF0aW9uIG9mIHRoZSBlbGVtZW50cyB0aGF0IGNhbiBhY3QgYXMgY2xvc2UgYnV0dG9ucyBmb3IgdGhlIHBvcnRhbC5cblx0ICovXG5cdGNsb3NlU2VsZWN0b3I/OiBzdHJpbmc7XG5cblx0LyoqIFVzZWQgdG8gc3RvcmUgYW55IGFkZGl0aW9uYWwgZGF0YSB0aGF0IG5lZWRzIHRvIGJlIHBhc3NlZCB0byB0aGUgcG9ydGFsIHdpbmRvdyB3aGVuIGl0IGlzIG9wZW5lZC4gVGhpcyBwcm9wZXJ0eSBhbGxvd3MgeW91XG5cdCAqIHRvIHByb3ZpZGUgY3VzdG9tIGRhdGEgdG8gdGhlIHBvcnRhbCBjb21wb25lbnQsIHdoaWNoIGNhbiB0aGVuIGJlIGFjY2Vzc2VkIGFuZCB1dGlsaXplZCB3aXRoaW4gdGhlIHBvcnRhbCBjb250ZW50IG9yIGxvZ2ljLlxuXHQgKiBJdCBwcm92aWRlcyBmbGV4aWJpbGl0eSBmb3IgcGFzc2luZyBkeW5hbWljIGluZm9ybWF0aW9uIHRvIHRoZSBwb3J0YWwgd2luZG93IGJhc2VkIG9uIHRoZSBzcGVjaWZpYyB1c2UgY2FzZSBvciByZXF1aXJlbWVudHMuXG5cdCAqL1xuXHRkYXRhPzogYW55O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdGhhdCBjYW4gYmUgY2hhbmdlZCBvbiBhbiBvcGVuZWQgcG9ydGFsIHdpdGggYEh1YlBvcnRhbFJlZi51cGRhdGUoKWAgYW5kIGBIdWJBY3RpdmVQb3J0YWwudXBkYXRlKClgIG1ldGhvZHMuXG4gKlxuICogQHNpbmNlIDE0LjIuMFxuICovXG5leHBvcnQgdHlwZSBIdWJQb3J0YWxVcGRhdGFibGVPcHRpb25zID0gUGljazxcblx0SHViUG9ydGFsT3B0aW9ucyxcblx0fCAnYXJpYUxhYmVsbGVkQnknXG5cdHwgJ2FyaWFEZXNjcmliZWRCeSdcblx0fCAnY2VudGVyZWQnXG5cdHwgJ2Z1bGxzY3JlZW4nXG5cdHwgJ2JhY2tkcm9wQ2xhc3MnXG5cdHwgJ3NpemUnXG5cdHwgJ3dpbmRvd0NsYXNzJ1xuXHR8ICdwb3J0YWxEaWFsb2dDbGFzcydcbj47XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbYEh1YlBvcnRhbGBdKCMvY29tcG9uZW50cy9wb3J0YWwvYXBpI0h1YlBvcnRhbCkgc2VydmljZS5cbiAqXG4gKiBZb3UgY2FuIGluamVjdCB0aGlzIHNlcnZpY2UsIHR5cGljYWxseSBpbiB5b3VyIHJvb3QgY29tcG9uZW50LCBhbmQgY3VzdG9taXplIHRoZSB2YWx1ZXMgb2YgaXRzIHByb3BlcnRpZXMgaW5cbiAqIG9yZGVyIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBwb3J0YWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBzaW5jZSAzLjEuMFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEh1YlBvcnRhbENvbmZpZyBpbXBsZW1lbnRzIFJlcXVpcmVkPEh1YlBvcnRhbE9wdGlvbnM+IHtcblx0Ly8gcHJpdmF0ZSBfaHViQ29uZmlnID0gaW5qZWN0KEh1YkNvbmZpZyk7XG5cdHByaXZhdGUgX2FuaW1hdGlvbjogYm9vbGVhbjtcblxuXHRhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXHRhcmlhRGVzY3JpYmVkQnk6IHN0cmluZztcblx0YmFja2Ryb3A6IGJvb2xlYW4gfCAnc3RhdGljJyA9IGZhbHNlO1xuXHRiZWZvcmVEaXNtaXNzOiAoKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblx0Y2VudGVyZWQ6IGJvb2xlYW47XG5cdGNvbnRhaW5lcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cdGZ1bGxzY3JlZW46ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAneHhsJyB8IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcblx0aW5qZWN0b3I6IEluamVjdG9yO1xuXHRrZXlib2FyZCA9IHRydWU7XG5cdHNjcm9sbGFibGU6IGJvb2xlYW47XG5cdHNpemU6ICdzbScgfCAnbGcnIHwgJ3hsJyB8IHN0cmluZztcblx0d2luZG93Q2xhc3M6IHN0cmluZztcblx0cG9ydGFsRGlhbG9nQ2xhc3M6IHN0cmluZztcblx0YmFja2Ryb3BDbGFzczogc3RyaW5nO1xuXHRoZWFkZXJTZWxlY3Rvcjogc3RyaW5nO1xuXHRmb290ZXJTZWxlY3Rvcjogc3RyaW5nO1xuXHRkaXNtaXNzU2VsZWN0b3I6IHN0cmluZyA9ICdbZGF0YS1kaXNtaXNzPVwicG9ydGFsXCJdJztcblx0Y2xvc2VTZWxlY3Rvcjogc3RyaW5nID0gJ1tkYXRhLWNsb3NlPVwicG9ydGFsXCJdJztcblx0ZGF0YTogYW55O1xuXG5cdGdldCBhbmltYXRpb24oKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2FuaW1hdGlvbiA/PyB0cnVlIC8qIHRoaXMuX2h1YkNvbmZpZy5hbmltYXRpb24gKi87XG5cdH1cblx0c2V0IGFuaW1hdGlvbihhbmltYXRpb246IGJvb2xlYW4pIHtcblx0XHR0aGlzLl9hbmltYXRpb24gPSBhbmltYXRpb247XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export var PortalDismissReasons;
2
+ (function (PortalDismissReasons) {
3
+ PortalDismissReasons[PortalDismissReasons["BACKDROP_CLICK"] = 0] = "BACKDROP_CLICK";
4
+ PortalDismissReasons[PortalDismissReasons["ESC"] = 1] = "ESC";
5
+ })(PortalDismissReasons || (PortalDismissReasons = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLWRpc21pc3MtcmVhc29ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcnRhbC9zcmMvbGliL3BvcnRhbC1kaXNtaXNzLXJlYXNvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUMvQixtRkFBYyxDQUFBO0lBQ2QsNkRBQUcsQ0FBQTtBQUNKLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUG9ydGFsRGlzbWlzc1JlYXNvbnMge1xuXHRCQUNLRFJPUF9DTElDSyxcblx0RVNDXG59XG4iXX0=
@@ -0,0 +1,193 @@
1
+ import { isDefined, isPromise } from 'ng-hub-ui-utils';
2
+ import { Subject, zip } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ /**
5
+ * A reference to the currently opened (active) portal.
6
+ *
7
+ * Instances of this class can be injected into your component passed as portal content.
8
+ * So you can `.update()`, `.close()` or `.dismiss()` the portal window from your component.
9
+ */
10
+ export class HubActivePortal {
11
+ /**
12
+ * Updates options of an opened portal.
13
+ *
14
+ * @since 14.2.0
15
+ */
16
+ update(options) { }
17
+ /**
18
+ * Closes the portal with an optional `result` value.
19
+ *
20
+ * The `HubPortalRef.result` promise will be resolved with the provided value.
21
+ */
22
+ close(result) { }
23
+ /**
24
+ * Dismisses the portal with an optional `reason` value.
25
+ *
26
+ * The `HubPortalRef.result` promise will be rejected with the provided value.
27
+ */
28
+ dismiss(reason) { }
29
+ }
30
+ const WINDOW_ATTRIBUTES = [
31
+ 'animation',
32
+ 'ariaLabelledBy',
33
+ 'ariaDescribedBy',
34
+ 'backdrop',
35
+ 'centered',
36
+ 'fullscreen',
37
+ 'keyboard',
38
+ 'scrollable',
39
+ 'size',
40
+ 'windowClass',
41
+ 'portalDialogClass'
42
+ ];
43
+ const BACKDROP_ATTRIBUTES = ['animation', 'backdropClass'];
44
+ /**
45
+ * A reference to the newly opened portal returned by the `HubPortal.open()` method.
46
+ */
47
+ export class HubPortalRef {
48
+ _applyWindowOptions(windowInstance, options) {
49
+ WINDOW_ATTRIBUTES.forEach((optionName) => {
50
+ if (isDefined(options[optionName])) {
51
+ windowInstance[optionName] = options[optionName];
52
+ }
53
+ });
54
+ }
55
+ /**
56
+ * Updates options of an opened portal.
57
+ *
58
+ * @since 14.2.0
59
+ */
60
+ update(options) {
61
+ this._applyWindowOptions(this._windowCmptRef.instance, options);
62
+ }
63
+ /**
64
+ * The instance of a component used for the portal content.
65
+ *
66
+ * When a `TemplateRef` is used as the content or when the portal is closed, will return `undefined`.
67
+ */
68
+ get componentInstance() {
69
+ if (this._contentRef && this._contentRef.componentRef) {
70
+ return this._contentRef.componentRef.instance;
71
+ }
72
+ }
73
+ /**
74
+ * The observable that emits when the portal is closed via the `.close()` method.
75
+ *
76
+ * It will emit the result passed to the `.close()` method.
77
+ *
78
+ * @since 8.0.0
79
+ */
80
+ get closed() {
81
+ return this._closed.asObservable().pipe(takeUntil(this._hidden));
82
+ }
83
+ /**
84
+ * The observable that emits when the portal is dismissed via the `.dismiss()` method.
85
+ *
86
+ * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal
87
+ * reasons like backdrop click or ESC key press.
88
+ *
89
+ * @since 8.0.0
90
+ */
91
+ get dismissed() {
92
+ return this._dismissed.asObservable().pipe(takeUntil(this._hidden));
93
+ }
94
+ /**
95
+ * The observable that emits when both portal window and backdrop are closed and animations were finished.
96
+ * At this point portal and backdrop elements will be removed from the DOM tree.
97
+ *
98
+ * This observable will be completed after emitting.
99
+ *
100
+ * @since 8.0.0
101
+ */
102
+ get hidden() {
103
+ return this._hidden.asObservable();
104
+ }
105
+ /**
106
+ * The observable that emits when portal is fully visible and animation was finished.
107
+ * Portal DOM element is always available synchronously after calling 'portal.open()' service.
108
+ *
109
+ * This observable will be completed after emitting.
110
+ * It will not emit, if portal is closed before open animation is finished.
111
+ *
112
+ * @since 8.0.0
113
+ */
114
+ get shown() {
115
+ return this._windowCmptRef.instance.shown.asObservable();
116
+ }
117
+ constructor(_windowCmptRef, _contentRef, _beforeDismiss) {
118
+ this._windowCmptRef = _windowCmptRef;
119
+ this._contentRef = _contentRef;
120
+ this._beforeDismiss = _beforeDismiss;
121
+ this._closed = new Subject();
122
+ this._dismissed = new Subject();
123
+ this._hidden = new Subject();
124
+ _windowCmptRef.instance.dismissEvent.subscribe((reason) => {
125
+ this.dismiss(reason);
126
+ });
127
+ this.result = new Promise((resolve, reject) => {
128
+ this._resolve = resolve;
129
+ this._reject = reject;
130
+ });
131
+ this.result.then(null, () => { });
132
+ }
133
+ /**
134
+ * Closes the portal with an optional `result` value.
135
+ *
136
+ * The `HubMobalRef.result` promise will be resolved with the provided value.
137
+ */
138
+ close(result) {
139
+ if (this._windowCmptRef) {
140
+ this._closed.next(result);
141
+ this._resolve(result);
142
+ this._removePortalElements();
143
+ }
144
+ }
145
+ _dismiss(reason) {
146
+ this._dismissed.next(reason);
147
+ this._reject(reason);
148
+ this._removePortalElements();
149
+ }
150
+ /**
151
+ * Dismisses the portal with an optional `reason` value.
152
+ *
153
+ * The `HubPortalRef.result` promise will be rejected with the provided value.
154
+ */
155
+ dismiss(reason) {
156
+ if (this._windowCmptRef) {
157
+ if (!this._beforeDismiss) {
158
+ this._dismiss(reason);
159
+ }
160
+ else {
161
+ const dismiss = this._beforeDismiss();
162
+ if (isPromise(dismiss)) {
163
+ dismiss.then((result) => {
164
+ if (result !== false) {
165
+ this._dismiss(reason);
166
+ }
167
+ }, () => { });
168
+ }
169
+ else if (dismiss !== false) {
170
+ this._dismiss(reason);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ _removePortalElements() {
176
+ const windowTransition$ = this._windowCmptRef.instance.hide();
177
+ // hiding window
178
+ windowTransition$.subscribe(() => {
179
+ const { nativeElement } = this._windowCmptRef.location;
180
+ nativeElement.parentNode.removeChild(nativeElement);
181
+ this._windowCmptRef.destroy();
182
+ this._contentRef?.viewRef?.destroy();
183
+ this._windowCmptRef = null;
184
+ this._contentRef = null;
185
+ });
186
+ // all done
187
+ zip(windowTransition$).subscribe(() => {
188
+ this._hidden.next();
189
+ this._hidden.complete();
190
+ });
191
+ }
192
+ }
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcnRhbC9zcmMvbGliL3BvcnRhbC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQWMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMzQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQWtDLElBQVMsQ0FBQztJQUNuRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQVksSUFBUyxDQUFDO0lBRTVCOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsTUFBWSxJQUFTLENBQUM7Q0FDOUI7QUFFRCxNQUFNLGlCQUFpQixHQUFhO0lBQ25DLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixVQUFVO0lBQ1YsWUFBWTtJQUNaLFVBQVU7SUFDVixZQUFZO0lBQ1osTUFBTTtJQUNOLGFBQWE7SUFDYixtQkFBbUI7Q0FDbkIsQ0FBQztBQUNGLE1BQU0sbUJBQW1CLEdBQWEsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFckU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU9oQixtQkFBbUIsQ0FDMUIsY0FBK0IsRUFDL0IsT0FBeUI7UUFFekIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBa0IsRUFBRSxFQUFFO1lBQ2hELElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO2dCQUNuQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0Ys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QUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudFJlZiwgaXNEZWZpbmVkLCBpc1Byb21pc2UgfSBmcm9tICduZy1odWItdWktdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdWJQb3J0YWxPcHRpb25zLCBIdWJQb3J0YWxVcGRhdGFibGVPcHRpb25zIH0gZnJvbSAnLi9wb3J0YWwtY29uZmlnJztcbmltcG9ydCB7IEh1YlBvcnRhbFdpbmRvdyB9IGZyb20gJy4vcG9ydGFsLXdpbmRvdyc7XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseSBvcGVuZWQgKGFjdGl2ZSkgcG9ydGFsLlxuICpcbiAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSBpbmplY3RlZCBpbnRvIHlvdXIgY29tcG9uZW50IHBhc3NlZCBhcyBwb3J0YWwgY29udGVudC5cbiAqIFNvIHlvdSBjYW4gYC51cGRhdGUoKWAsIGAuY2xvc2UoKWAgb3IgYC5kaXNtaXNzKClgIHRoZSBwb3J0YWwgd2luZG93IGZyb20geW91ciBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBIdWJBY3RpdmVQb3J0YWwge1xuXHQvKipcblx0ICogVXBkYXRlcyBvcHRpb25zIG9mIGFuIG9wZW5lZCBwb3J0YWwuXG5cdCAqXG5cdCAqIEBzaW5jZSAxNC4yLjBcblx0ICovXG5cdHVwZGF0ZShvcHRpb25zOiBIdWJQb3J0YWxVcGRhdGFibGVPcHRpb25zKTogdm9pZCB7fVxuXHQvKipcblx0ICogQ2xvc2VzIHRoZSBwb3J0YWwgd2l0aCBhbiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZS5cblx0ICpcblx0ICogVGhlIGBIdWJQb3J0YWxSZWYucmVzdWx0YCBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG5cdCAqL1xuXHRjbG9zZShyZXN1bHQ/OiBhbnkpOiB2b2lkIHt9XG5cblx0LyoqXG5cdCAqIERpc21pc3NlcyB0aGUgcG9ydGFsIHdpdGggYW4gb3B0aW9uYWwgYHJlYXNvbmAgdmFsdWUuXG5cdCAqXG5cdCAqIFRoZSBgSHViUG9ydGFsUmVmLnJlc3VsdGAgcHJvbWlzZSB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuXHQgKi9cblx0ZGlzbWlzcyhyZWFzb24/OiBhbnkpOiB2b2lkIHt9XG59XG5cbmNvbnN0IFdJTkRPV19BVFRSSUJVVEVTOiBzdHJpbmdbXSA9IFtcblx0J2FuaW1hdGlvbicsXG5cdCdhcmlhTGFiZWxsZWRCeScsXG5cdCdhcmlhRGVzY3JpYmVkQnknLFxuXHQnYmFja2Ryb3AnLFxuXHQnY2VudGVyZWQnLFxuXHQnZnVsbHNjcmVlbicsXG5cdCdrZXlib2FyZCcsXG5cdCdzY3JvbGxhYmxlJyxcblx0J3NpemUnLFxuXHQnd2luZG93Q2xhc3MnLFxuXHQncG9ydGFsRGlhbG9nQ2xhc3MnXG5dO1xuY29uc3QgQkFDS0RST1BfQVRUUklCVVRFUzogc3RyaW5nW10gPSBbJ2FuaW1hdGlvbicsICdiYWNrZHJvcENsYXNzJ107XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IG9wZW5lZCBwb3J0YWwgcmV0dXJuZWQgYnkgdGhlIGBIdWJQb3J0YWwub3BlbigpYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBjbGFzcyBIdWJQb3J0YWxSZWYge1xuXHRwcml2YXRlIF9jbG9zZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cdHByaXZhdGUgX2Rpc21pc3NlZCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblx0cHJpdmF0ZSBfaGlkZGVuID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblx0cHJpdmF0ZSBfcmVzb2x2ZSE6IChyZXN1bHQ/OiBhbnkpID0+IHZvaWQ7XG5cdHByaXZhdGUgX3JlamVjdCE6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG5cblx0cHJpdmF0ZSBfYXBwbHlXaW5kb3dPcHRpb25zKFxuXHRcdHdpbmRvd0luc3RhbmNlOiBIdWJQb3J0YWxXaW5kb3csXG5cdFx0b3B0aW9uczogSHViUG9ydGFsT3B0aW9uc1xuXHQpOiB2b2lkIHtcblx0XHRXSU5ET1dfQVRUUklCVVRFUy5mb3JFYWNoKChvcHRpb25OYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdGlmIChpc0RlZmluZWQob3B0aW9uc1tvcHRpb25OYW1lXSkpIHtcblx0XHRcdFx0d2luZG93SW5zdGFuY2Vbb3B0aW9uTmFtZV0gPSBvcHRpb25zW29wdGlvbk5hbWVdO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgb3B0aW9ucyBvZiBhbiBvcGVuZWQgcG9ydGFsLlxuXHQgKlxuXHQgKiBAc2luY2UgMTQuMi4wXG5cdCAqL1xuXHR1cGRhdGUob3B0aW9uczogSHViUG9ydGFsVXBkYXRhYmxlT3B0aW9ucyk6IHZvaWQge1xuXHRcdHRoaXMuX2FwcGx5V2luZG93T3B0aW9ucyh0aGlzLl93aW5kb3dDbXB0UmVmLmluc3RhbmNlLCBvcHRpb25zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgaW5zdGFuY2Ugb2YgYSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHBvcnRhbCBjb250ZW50LlxuXHQgKlxuXHQgKiBXaGVuIGEgYFRlbXBsYXRlUmVmYCBpcyB1c2VkIGFzIHRoZSBjb250ZW50IG9yIHdoZW4gdGhlIHBvcnRhbCBpcyBjbG9zZWQsIHdpbGwgcmV0dXJuIGB1bmRlZmluZWRgLlxuXHQgKi9cblx0Z2V0IGNvbXBvbmVudEluc3RhbmNlKCk6IGFueSB7XG5cdFx0aWYgKHRoaXMuX2NvbnRlbnRSZWYgJiYgdGhpcy5fY29udGVudFJlZi5jb21wb25lbnRSZWYpIHtcblx0XHRcdHJldHVybiB0aGlzLl9jb250ZW50UmVmLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhlIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIHRoZSBwb3J0YWwgaXMgY2xvc2VkIGFuZCByZWplY3RlZCB3aGVuIHRoZSBwb3J0YWwgaXMgZGlzbWlzc2VkLlxuXHQgKi9cblx0cmVzdWx0OiBQcm9taXNlPGFueT47XG5cblx0LyoqXG5cdCAqIFRoZSBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgcG9ydGFsIGlzIGNsb3NlZCB2aWEgdGhlIGAuY2xvc2UoKWAgbWV0aG9kLlxuXHQgKlxuXHQgKiBJdCB3aWxsIGVtaXQgdGhlIHJlc3VsdCBwYXNzZWQgdG8gdGhlIGAuY2xvc2UoKWAgbWV0aG9kLlxuXHQgKlxuXHQgKiBAc2luY2UgOC4wLjBcblx0ICovXG5cdGdldCBjbG9zZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5fY2xvc2VkLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2hpZGRlbikpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgcG9ydGFsIGlzIGRpc21pc3NlZCB2aWEgdGhlIGAuZGlzbWlzcygpYCBtZXRob2QuXG5cdCAqXG5cdCAqIEl0IHdpbGwgZW1pdCB0aGUgcmVhc29uIHBhc3NlZCB0byB0aGUgYC5kaXNtaXNzZWQoKWAgbWV0aG9kIGJ5IHRoZSB1c2VyLCBvciBvbmUgb2YgdGhlIGludGVybmFsXG5cdCAqIHJlYXNvbnMgbGlrZSBiYWNrZHJvcCBjbGljayBvciBFU0Mga2V5IHByZXNzLlxuXHQgKlxuXHQgKiBAc2luY2UgOC4wLjBcblx0ICovXG5cdGdldCBkaXNtaXNzZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5fZGlzbWlzc2VkLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2hpZGRlbikpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBib3RoIHBvcnRhbCB3aW5kb3cgYW5kIGJhY2tkcm9wIGFyZSBjbG9zZWQgYW5kIGFuaW1hdGlvbnMgd2VyZSBmaW5pc2hlZC5cblx0ICogQXQgdGhpcyBwb2ludCBwb3J0YWwgYW5kIGJhY2tkcm9wIGVsZW1lbnRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS5cblx0ICpcblx0ICogVGhpcyBvYnNlcnZhYmxlIHdpbGwgYmUgY29tcGxldGVkIGFmdGVyIGVtaXR0aW5nLlxuXHQgKlxuXHQgKiBAc2luY2UgOC4wLjBcblx0ICovXG5cdGdldCBoaWRkZW4oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMuX2hpZGRlbi5hc09ic2VydmFibGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gcG9ydGFsIGlzIGZ1bGx5IHZpc2libGUgYW5kIGFuaW1hdGlvbiB3YXMgZmluaXNoZWQuXG5cdCAqIFBvcnRhbCBET00gZWxlbWVudCBpcyBhbHdheXMgYXZhaWxhYmxlIHN5bmNocm9ub3VzbHkgYWZ0ZXIgY2FsbGluZyAncG9ydGFsLm9wZW4oKScgc2VydmljZS5cblx0ICpcblx0ICogVGhpcyBvYnNlcnZhYmxlIHdpbGwgYmUgY29tcGxldGVkIGFmdGVyIGVtaXR0aW5nLlxuXHQgKiBJdCB3aWxsIG5vdCBlbWl0LCBpZiBwb3J0YWwgaXMgY2xvc2VkIGJlZm9yZSBvcGVuIGFuaW1hdGlvbiBpcyBmaW5pc2hlZC5cblx0ICpcblx0ICogQHNpbmNlIDguMC4wXG5cdCAqL1xuXHRnZXQgc2hvd24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMuX3dpbmRvd0NtcHRSZWYuaW5zdGFuY2Uuc2hvd24uYXNPYnNlcnZhYmxlKCk7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIF93aW5kb3dDbXB0UmVmOiBDb21wb25lbnRSZWY8SHViUG9ydGFsV2luZG93Pixcblx0XHRwcml2YXRlIF9jb250ZW50UmVmOiBDb250ZW50UmVmLFxuXHRcdHByaXZhdGUgX2JlZm9yZURpc21pc3M/OiAoKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPlxuXHQpIHtcblx0XHRfd2luZG93Q21wdFJlZi5pbnN0YW5jZS5kaXNtaXNzRXZlbnQuc3Vic2NyaWJlKChyZWFzb246IGFueSkgPT4ge1xuXHRcdFx0dGhpcy5kaXNtaXNzKHJlYXNvbik7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnJlc3VsdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xuXHRcdFx0dGhpcy5fcmVqZWN0ID0gcmVqZWN0O1xuXHRcdH0pO1xuXHRcdHRoaXMucmVzdWx0LnRoZW4obnVsbCwgKCkgPT4ge30pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsb3NlcyB0aGUgcG9ydGFsIHdpdGggYW4gb3B0aW9uYWwgYHJlc3VsdGAgdmFsdWUuXG5cdCAqXG5cdCAqIFRoZSBgSHViTW9iYWxSZWYucmVzdWx0YCBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG5cdCAqL1xuXHRjbG9zZShyZXN1bHQ/OiBhbnkpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fd2luZG93Q21wdFJlZikge1xuXHRcdFx0dGhpcy5fY2xvc2VkLm5leHQocmVzdWx0KTtcblx0XHRcdHRoaXMuX3Jlc29sdmUocmVzdWx0KTtcblx0XHRcdHRoaXMuX3JlbW92ZVBvcnRhbEVsZW1lbnRzKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBfZGlzbWlzcyhyZWFzb24/OiBhbnkpIHtcblx0XHR0aGlzLl9kaXNtaXNzZWQubmV4dChyZWFzb24pO1xuXHRcdHRoaXMuX3JlamVjdChyZWFzb24pO1xuXHRcdHRoaXMuX3JlbW92ZVBvcnRhbEVsZW1lbnRzKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGlzbWlzc2VzIHRoZSBwb3J0YWwgd2l0aCBhbiBvcHRpb25hbCBgcmVhc29uYCB2YWx1ZS5cblx0ICpcblx0ICogVGhlIGBIdWJQb3J0YWxSZWYucmVzdWx0YCBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG5cdCAqL1xuXHRkaXNtaXNzKHJlYXNvbj86IGFueSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLl93aW5kb3dDbXB0UmVmKSB7XG5cdFx0XHRpZiAoIXRoaXMuX2JlZm9yZURpc21pc3MpIHtcblx0XHRcdFx0dGhpcy5fZGlzbWlzcyhyZWFzb24pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZGlzbWlzcyA9IHRoaXMuX2JlZm9yZURpc21pc3MoKTtcblx0XHRcdFx0aWYgKGlzUHJvbWlzZShkaXNtaXNzKSkge1xuXHRcdFx0XHRcdGRpc21pc3MudGhlbihcblx0XHRcdFx0XHRcdChyZXN1bHQpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdCAhPT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLl9kaXNtaXNzKHJlYXNvbik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHQoKSA9PiB7fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZGlzbWlzcyAhPT0gZmFsc2UpIHtcblx0XHRcdFx0XHR0aGlzLl9kaXNtaXNzKHJlYXNvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9yZW1vdmVQb3J0YWxFbGVtZW50cygpIHtcblx0XHRjb25zdCB3aW5kb3dUcmFuc2l0aW9uJCA9IHRoaXMuX3dpbmRvd0NtcHRSZWYuaW5zdGFuY2UuaGlkZSgpO1xuXG5cdFx0Ly8gaGlkaW5nIHdpbmRvd1xuXHRcdHdpbmRvd1RyYW5zaXRpb24kLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRjb25zdCB7IG5hdGl2ZUVsZW1lbnQgfSA9IHRoaXMuX3dpbmRvd0NtcHRSZWYubG9jYXRpb247XG5cdFx0XHRuYXRpdmVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobmF0aXZlRWxlbWVudCk7XG5cdFx0XHR0aGlzLl93aW5kb3dDbXB0UmVmLmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuX2NvbnRlbnRSZWY/LnZpZXdSZWY/LmRlc3Ryb3koKTtcblxuXHRcdFx0dGhpcy5fd2luZG93Q21wdFJlZiA9IDxhbnk+bnVsbDtcblx0XHRcdHRoaXMuX2NvbnRlbnRSZWYgPSA8YW55Pm51bGw7XG5cdFx0fSk7XG5cblx0XHQvLyBhbGwgZG9uZVxuXHRcdHppcCh3aW5kb3dUcmFuc2l0aW9uJCkuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuX2hpZGRlbi5uZXh0KCk7XG5cdFx0XHR0aGlzLl9oaWRkZW4uY29tcGxldGUoKTtcblx0XHR9KTtcblx0fVxufVxuIl19