@theseam/ui-common 1.0.0-beta.6 → 1.0.0-beta.7
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/breadcrumbs/index.d.ts +1 -2
- package/buttons/index.d.ts +20 -13
- package/datatable/index.d.ts +8 -8
- package/dynamic/index.d.ts +5 -5
- package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
- package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-card.mjs +21 -21
- package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
- package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
- package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-core.mjs +31 -11
- package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
- package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
- package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable.mjs +581 -385
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
- package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
- package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
- package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field.mjs +120 -74
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs +669 -543
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-graphql.mjs +252 -195
- package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-icon.mjs +125 -89
- package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-layout.mjs +18 -26
- package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-loading.mjs +19 -28
- package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-menu.mjs +124 -95
- package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-modal.mjs +177 -129
- package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-models.mjs +3 -3
- package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
- package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-popover.mjs +81 -88
- package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-progress.mjs +15 -19
- package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
- package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
- package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-services.mjs +41 -26
- package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-shared.mjs +123 -67
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-storage.mjs +9 -6
- package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
- package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
- package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-type.mjs +34 -38
- package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
- package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table.mjs +50 -39
- package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
- package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-testing.mjs +13 -10
- package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
- package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
- package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
- package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
- package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-utils.mjs +113 -77
- package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-validators.mjs +10 -9
- package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-viewers.mjs +79 -56
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-widget.mjs +288 -314
- package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
- package/framework/base-layout/base-layout.component.scss +9 -4
- package/framework/base-layout/styles/_variables.scss +4 -9
- package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
- package/framework/index.d.ts +6 -6
- package/framework/nav/nav-item/nav-item.component.scss +7 -6
- package/framework/nav/styles/_themes/light/_variables.scss +21 -5
- package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
- package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
- package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
- package/graphql/index.d.ts +5 -5
- package/modal/README.md +5 -5
- package/modal/index.d.ts +1 -1
- package/models/index.d.ts +1 -1
- package/package.json +59 -59
- package/popover/index.d.ts +0 -2
- package/progress/progress-circle/styles/_variables.scss +15 -3
- package/story-helpers/index.d.ts +11 -1
- package/styles/bootstrap/_bootstrap.scss +34 -34
- package/styles/bootstrap/_bs-styles.scss +4 -8
- package/styles/bootstrap/_bs-utilities.scss +4 -4
- package/styles/bootstrap/_bs-variables.scss +65 -70
- package/styles/common/_forms.scss +9 -10
- package/styles/common/_global.scss +0 -1
- package/styles/common/_hacks.scss +1 -1
- package/styles/common/_table.scss +0 -1
- package/styles/common/_text.scss +3 -1
- package/styles/theme.scss +1 -1
- package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
- package/styles/vendor/quill/_quill.scss +15 -9
- package/tel-input/README.md +27 -27
- package/utils/index.d.ts +3 -3
- package/viewers/index.d.ts +9 -2
- package/widget/_widget-theme.scss +1 -1
- package/widget/styles/_variables.scss +2 -2
- package/widget/widget/widget.component.scss +0 -2
- package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
- package/widget/widget-footer/widget-footer.component.scss +0 -1
|
@@ -14,13 +14,13 @@ class TheSeamNavigationReloadService {
|
|
|
14
14
|
}
|
|
15
15
|
initialize(config) {
|
|
16
16
|
this._checkRouterConfig();
|
|
17
|
-
this._router.events.pipe(takeUntil(this._destroy$)).subscribe(event => {
|
|
17
|
+
this._router.events.pipe(takeUntil(this._destroy$)).subscribe((event) => {
|
|
18
18
|
if (event instanceof NavigationSkipped) {
|
|
19
19
|
const url = event.url;
|
|
20
20
|
const navigationState = history.state;
|
|
21
|
-
const shouldReloadFn = config.shouldReload ??
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const shouldReloadFn = config.shouldReload ??
|
|
22
|
+
(() => navigationState[THESEAM_RELOAD_PROPERTY]);
|
|
23
|
+
const shouldReload = shouldReloadFn(navigationState, url) && url === this._router.url;
|
|
24
24
|
if (shouldReload) {
|
|
25
25
|
this.reloadComponent(url, config?.dummyUrl);
|
|
26
26
|
}
|
|
@@ -28,7 +28,9 @@ class TheSeamNavigationReloadService {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
reloadComponent(url, dummyUrl) {
|
|
31
|
-
this._router
|
|
31
|
+
this._router
|
|
32
|
+
.navigateByUrl(dummyUrl || '/', { skipLocationChange: true })
|
|
33
|
+
.then(() => {
|
|
32
34
|
this._router.navigateByUrl(url, { skipLocationChange: true });
|
|
33
35
|
});
|
|
34
36
|
}
|
|
@@ -42,13 +44,13 @@ class TheSeamNavigationReloadService {
|
|
|
42
44
|
'or updating the reload logic.');
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
46
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamNavigationReloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamNavigationReloadService, providedIn: 'root' });
|
|
47
49
|
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamNavigationReloadService, decorators: [{
|
|
49
51
|
type: Injectable,
|
|
50
52
|
args: [{
|
|
51
|
-
providedIn: 'root'
|
|
53
|
+
providedIn: 'root',
|
|
52
54
|
}]
|
|
53
55
|
}] });
|
|
54
56
|
|
|
@@ -59,8 +61,8 @@ function provideNavigationReload(config) {
|
|
|
59
61
|
provide: APP_INITIALIZER,
|
|
60
62
|
useFactory: (service) => () => service.initialize(config),
|
|
61
63
|
deps: [TheSeamNavigationReloadService],
|
|
62
|
-
multi: true
|
|
63
|
-
}
|
|
64
|
+
multi: true,
|
|
65
|
+
},
|
|
64
66
|
];
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-navigation-reload.mjs","sources":["../../../projects/ui-common/navigation-reload/navigation-reload.config.ts","../../../projects/ui-common/navigation-reload/navigation-reload.service.ts","../../../projects/ui-common/navigation-reload/navigation-reload.provider.ts","../../../projects/ui-common/navigation-reload/theseam-ui-common-navigation-reload.ts"],"sourcesContent":["export interface TheSeamNavigationReloadConfig {\n shouldReload?: (state: any, url: string) => boolean\n dummyUrl?: string\n}\n\nexport const THESEAM_RELOAD_PROPERTY = 'seamReload'\n","import { inject, Injectable, OnDestroy } from '@angular/core'\nimport { Router, NavigationSkipped, RouterConfigOptions } from '@angular/router'\nimport { Subject, takeUntil } from 'rxjs'\n\nimport {
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-navigation-reload.mjs","sources":["../../../projects/ui-common/navigation-reload/navigation-reload.config.ts","../../../projects/ui-common/navigation-reload/navigation-reload.service.ts","../../../projects/ui-common/navigation-reload/navigation-reload.provider.ts","../../../projects/ui-common/navigation-reload/theseam-ui-common-navigation-reload.ts"],"sourcesContent":["export interface TheSeamNavigationReloadConfig {\n shouldReload?: (state: any, url: string) => boolean\n dummyUrl?: string\n}\n\nexport const THESEAM_RELOAD_PROPERTY = 'seamReload'\n","import { inject, Injectable, OnDestroy } from '@angular/core'\nimport { Router, NavigationSkipped, RouterConfigOptions } from '@angular/router'\nimport { Subject, takeUntil } from 'rxjs'\n\nimport {\n THESEAM_RELOAD_PROPERTY,\n TheSeamNavigationReloadConfig,\n} from './navigation-reload.config'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TheSeamNavigationReloadService implements OnDestroy {\n private readonly _router = inject(Router)\n private readonly _destroy$ = new Subject<void>()\n\n ngOnDestroy(): void {\n this._destroy$.next()\n this._destroy$.complete()\n }\n\n initialize(config: TheSeamNavigationReloadConfig): void {\n this._checkRouterConfig()\n this._router.events.pipe(takeUntil(this._destroy$)).subscribe((event) => {\n if (event instanceof NavigationSkipped) {\n const url = event.url\n const navigationState = history.state\n\n const shouldReloadFn =\n config.shouldReload ??\n (() => navigationState[THESEAM_RELOAD_PROPERTY])\n\n const shouldReload =\n shouldReloadFn(navigationState, url) && url === this._router.url\n\n if (shouldReload) {\n this.reloadComponent(url, config?.dummyUrl)\n }\n }\n })\n }\n\n reloadComponent(url: string, dummyUrl?: string): void {\n this._router\n .navigateByUrl(dummyUrl || '/', { skipLocationChange: true })\n .then(() => {\n this._router.navigateByUrl(url, { skipLocationChange: true })\n })\n }\n\n private _checkRouterConfig() {\n const config: RouterConfigOptions = this._router.config as any // Type hack, config is internal\n if (config.onSameUrlNavigation === 'reload') {\n // eslint-disable-next-line no-console\n console.warn(\n 'WARNING: Router is configured with onSameUrlNavigation: \"reload\". ' +\n 'This component relies on \"ignore\" to trigger reloads via NavigationSkipped. ' +\n 'Reload behavior may not work as expected. Consider reverting to \"ignore\" ' +\n 'or updating the reload logic.',\n )\n }\n }\n}\n","import { APP_INITIALIZER, Provider } from '@angular/core'\nimport { TheSeamNavigationReloadService } from './navigation-reload.service'\nimport { TheSeamNavigationReloadConfig } from './navigation-reload.config'\n\nexport function provideNavigationReload(\n config: TheSeamNavigationReloadConfig,\n): Provider[] {\n return [\n TheSeamNavigationReloadService,\n {\n provide: APP_INITIALIZER,\n useFactory: (service: TheSeamNavigationReloadService) => () =>\n service.initialize(config),\n deps: [TheSeamNavigationReloadService],\n multi: true,\n },\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAKO,MAAM,uBAAuB,GAAG;;MCO1B,8BAA8B,CAAA;AACxB,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;IAEhD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;AAEA,IAAA,UAAU,CAAC,MAAqC,EAAA;QAC9C,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACtE,YAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACtC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,gBAAA,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK;AAErC,gBAAA,MAAM,cAAc,GAClB,MAAM,CAAC,YAAY;qBAClB,MAAM,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAElD,gBAAA,MAAM,YAAY,GAChB,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG;gBAElE,IAAI,YAAY,EAAE;oBAChB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC7C;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,CAAC,GAAW,EAAE,QAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC;aACF,aAAa,CAAC,QAAQ,IAAI,GAAG,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;aAC3D,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAA,CAAC,CAAC;IACN;IAEQ,kBAAkB,GAAA;QACxB,MAAM,MAAM,GAAwB,IAAI,CAAC,OAAO,CAAC,MAAa,CAAA;AAC9D,QAAA,IAAI,MAAM,CAAC,mBAAmB,KAAK,QAAQ,EAAE;;YAE3C,OAAO,CAAC,IAAI,CACV,oEAAoE;gBAClE,8EAA8E;gBAC9E,2EAA2E;AAC3E,gBAAA,+BAA+B,CAClC;QACH;IACF;uGAjDW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA;;2FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPK,SAAU,uBAAuB,CACrC,MAAqC,EAAA;IAErC,OAAO;QACL,8BAA8B;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,UAAU,EAAE,CAAC,OAAuC,KAAK,MACvD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5B,IAAI,EAAE,CAAC,8BAA8B,CAAC;AACtC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;KACF;AACH;;ACjBA;;AAEG;;;;"}
|
|
@@ -2,7 +2,7 @@ import { animation, query, style, group, animate, trigger, transition, useAnimat
|
|
|
2
2
|
import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
3
|
import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { HostListener, Input,
|
|
5
|
+
import { HostListener, Input, ChangeDetectionStrategy, Component, Directive, NgModule } from '@angular/core';
|
|
6
6
|
import { Subject, BehaviorSubject, fromEvent, of, Subscription, merge } from 'rxjs';
|
|
7
7
|
import { distinctUntilChanged, switchMap, startWith, map, takeUntil } from 'rxjs/operators';
|
|
8
8
|
import * as i1 from '@angular/common';
|
|
@@ -18,45 +18,45 @@ const popoverSlideIn = animation([
|
|
|
18
18
|
query(':self', [
|
|
19
19
|
style({
|
|
20
20
|
opacity: 0,
|
|
21
|
-
transform: 'translateY(-70%)'
|
|
21
|
+
transform: 'translateY(-70%)',
|
|
22
22
|
}),
|
|
23
23
|
group([
|
|
24
24
|
animate('170ms linear', style({ opacity: 1 })),
|
|
25
25
|
animate('220ms ease', style({ transform: 'translateY(0)' })),
|
|
26
|
-
])
|
|
27
|
-
])
|
|
26
|
+
]),
|
|
27
|
+
]),
|
|
28
28
|
]);
|
|
29
29
|
const popoverSlideOut = animation([
|
|
30
30
|
query(':self', [
|
|
31
31
|
style({
|
|
32
32
|
opacity: 1,
|
|
33
|
-
transform: 'translateY(0)'
|
|
33
|
+
transform: 'translateY(0)',
|
|
34
34
|
}),
|
|
35
35
|
group([
|
|
36
36
|
animate('170ms linear', style({ opacity: 0 })),
|
|
37
37
|
animate('220ms ease', style({ transform: 'translateY(-70%)' })),
|
|
38
|
-
])
|
|
39
|
-
])
|
|
38
|
+
]),
|
|
39
|
+
]),
|
|
40
40
|
]);
|
|
41
41
|
const popoverExpandIn = animation([
|
|
42
42
|
style({
|
|
43
43
|
opacity: 0,
|
|
44
|
-
transform: 'scale(0.8)'
|
|
44
|
+
transform: 'scale(0.8)',
|
|
45
45
|
}),
|
|
46
46
|
group([
|
|
47
47
|
animate('100ms linear', style({ opacity: 1 })),
|
|
48
48
|
animate('120ms ease', style({ transform: 'scale(1)' })),
|
|
49
|
-
])
|
|
49
|
+
]),
|
|
50
50
|
]);
|
|
51
51
|
const popoverExpandOut = animation([
|
|
52
52
|
style({
|
|
53
53
|
opacity: 1,
|
|
54
|
-
transform: 'scale(1)'
|
|
54
|
+
transform: 'scale(1)',
|
|
55
55
|
}),
|
|
56
56
|
group([
|
|
57
57
|
animate('100ms linear', style({ opacity: 0 })),
|
|
58
58
|
animate('120ms ease', style({ transform: 'scale(0.8)' })),
|
|
59
|
-
])
|
|
59
|
+
]),
|
|
60
60
|
]);
|
|
61
61
|
|
|
62
62
|
class PopoverComponent {
|
|
@@ -79,8 +79,6 @@ class PopoverComponent {
|
|
|
79
79
|
/** Stream of animation `done` events. */
|
|
80
80
|
_animationDone = new Subject();
|
|
81
81
|
// @HostBinding('attr.role') get _role() { return this._config.role }
|
|
82
|
-
get _role() { return 'dialog'; }
|
|
83
|
-
get _tabindex() { return -1; }
|
|
84
82
|
template;
|
|
85
83
|
// @Output() readonly closed = new EventEmitter<void | 'click' | 'keydown'>()
|
|
86
84
|
popoverClass;
|
|
@@ -90,7 +88,9 @@ class PopoverComponent {
|
|
|
90
88
|
* Defines a width for a popover that will scale down if the window innerWidth is
|
|
91
89
|
* smaller than the value.
|
|
92
90
|
*/
|
|
93
|
-
get baseWidth() {
|
|
91
|
+
get baseWidth() {
|
|
92
|
+
return this._baseWidth.value;
|
|
93
|
+
}
|
|
94
94
|
set baseWidth(value) {
|
|
95
95
|
const _val = coerceNumberProperty(value, null);
|
|
96
96
|
if (_val !== this._baseWidth.value) {
|
|
@@ -105,15 +105,18 @@ class PopoverComponent {
|
|
|
105
105
|
// We use a Subject with a distinctUntilChanged, rather than a callback attached to .done,
|
|
106
106
|
// because some browsers fire the done event twice and we don't want to emit duplicate events.
|
|
107
107
|
// See: https://github.com/angular/angular/issues/24084
|
|
108
|
-
this._animationDone
|
|
108
|
+
this._animationDone
|
|
109
|
+
.pipe(distinctUntilChanged((x, y) => {
|
|
109
110
|
return x.fromState === y.fromState && x.toState === y.toState;
|
|
110
|
-
}))
|
|
111
|
+
}))
|
|
112
|
+
.subscribe((event) => {
|
|
111
113
|
// Emit lifecycle events based on animation `done` callback.
|
|
112
114
|
if (event.toState === 'enter') {
|
|
113
115
|
this._afterEnter.next();
|
|
114
116
|
this._afterEnter.complete();
|
|
115
117
|
}
|
|
116
|
-
if (event.fromState === 'enter' &&
|
|
118
|
+
if (event.fromState === 'enter' &&
|
|
119
|
+
(event.toState === 'void' || event.toState === 'exit')) {
|
|
117
120
|
this._afterExit.next();
|
|
118
121
|
this._afterExit.complete();
|
|
119
122
|
}
|
|
@@ -121,12 +124,16 @@ class PopoverComponent {
|
|
|
121
124
|
}
|
|
122
125
|
ngOnInit() {
|
|
123
126
|
// this._popoverWidth$ =
|
|
124
|
-
this._baseWidth
|
|
127
|
+
this._baseWidth
|
|
128
|
+
.pipe(switchMap((baseWidth) => {
|
|
125
129
|
if (baseWidth) {
|
|
126
|
-
return fromEvent(window, 'resize').pipe(startWith(undefined), map(() => window.innerWidth < baseWidth
|
|
130
|
+
return fromEvent(window, 'resize').pipe(startWith(undefined), map(() => window.innerWidth < baseWidth
|
|
131
|
+
? `${window.innerWidth}px`
|
|
132
|
+
: `${baseWidth}px`));
|
|
127
133
|
}
|
|
128
134
|
return of(undefined);
|
|
129
|
-
}), takeUntil(this._ngUnsubscribe))
|
|
135
|
+
}), takeUntil(this._ngUnsubscribe))
|
|
136
|
+
.subscribe((w) => {
|
|
130
137
|
this._popoverWidth = w;
|
|
131
138
|
this._changeDetectorRef.markForCheck();
|
|
132
139
|
});
|
|
@@ -150,14 +157,14 @@ class PopoverComponent {
|
|
|
150
157
|
this._beforeEnter.next();
|
|
151
158
|
this._beforeEnter.complete();
|
|
152
159
|
}
|
|
153
|
-
if (event.fromState === 'enter' &&
|
|
160
|
+
if (event.fromState === 'enter' &&
|
|
161
|
+
(event.toState === 'void' || event.toState === 'exit')) {
|
|
154
162
|
this._beforeExit.next();
|
|
155
163
|
this._beforeExit.complete();
|
|
156
164
|
}
|
|
157
165
|
}
|
|
158
166
|
/** Handle a keyboard event from the menu, delegating to the appropriate action. */
|
|
159
167
|
_handleKeydown(event) {
|
|
160
|
-
// tslint:disable-next-line:deprecation
|
|
161
168
|
const keyCode = event.keyCode;
|
|
162
169
|
switch (keyCode) {
|
|
163
170
|
case ESCAPE:
|
|
@@ -169,21 +176,21 @@ class PopoverComponent {
|
|
|
169
176
|
break;
|
|
170
177
|
}
|
|
171
178
|
}
|
|
172
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
173
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
179
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
180
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: PopoverComponent, isStandalone: false, selector: "seam-popover", inputs: { template: "template", popoverClass: "popoverClass", popover: "popover", popoverContext: "popoverContext", baseWidth: "baseWidth" }, host: { listeners: { "@slideDown.start": "_onAnimationStart($event)", "@slideDown.done": "_animationDone.next($event)", "keydown": "_handleKeydown($event)" }, properties: { "@slideDown": "{\n value: _state,\n params: {\n enterAnimationDuration: enterAnimationDuration,\n exitAnimationDuration: exitAnimationDuration\n }\n }", "style.width": "_popoverWidth", "attr.role": "\"dialog\"", "attr.tabindex": "-1" }, classAttribute: "popover show m-2 position-static" }, ngImport: i0, template: "<div class=\"popover-body\">\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n $implicit: popover,\n popover: popover,\n popoverContext: popoverContext,\n }\"\n ></ng-template>\n </ng-container>\n\n <ng-template #noTemplate>\n Example\n <!-- <ng-content></ng-content> -->\n </ng-template>\n</div>\n", styles: [":host{display:block;max-width:800px;min-width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
174
181
|
trigger('slideDown', [
|
|
175
182
|
transition(':enter', useAnimation(popoverExpandIn)),
|
|
176
183
|
transition(':leave', useAnimation(popoverExpandOut)),
|
|
177
|
-
])
|
|
184
|
+
]),
|
|
178
185
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
179
186
|
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
181
188
|
type: Component,
|
|
182
189
|
args: [{ selector: 'seam-popover', animations: [
|
|
183
190
|
trigger('slideDown', [
|
|
184
191
|
transition(':enter', useAnimation(popoverExpandIn)),
|
|
185
192
|
transition(':leave', useAnimation(popoverExpandOut)),
|
|
186
|
-
])
|
|
193
|
+
]),
|
|
187
194
|
], host: {
|
|
188
195
|
class: 'popover show m-2 position-static',
|
|
189
196
|
'[@slideDown]': `{
|
|
@@ -195,15 +202,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
195
202
|
}`,
|
|
196
203
|
'(@slideDown.start)': '_onAnimationStart($event)',
|
|
197
204
|
'(@slideDown.done)': '_animationDone.next($event)',
|
|
198
|
-
'[style.width]': '_popoverWidth'
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}], _tabindex: [{
|
|
204
|
-
type: HostBinding,
|
|
205
|
-
args: ['attr.tabindex']
|
|
206
|
-
}], template: [{
|
|
205
|
+
'[style.width]': '_popoverWidth',
|
|
206
|
+
'[attr.role]': '"dialog"',
|
|
207
|
+
'[attr.tabindex]': '-1',
|
|
208
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"popover-body\">\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n $implicit: popover,\n popover: popover,\n popoverContext: popoverContext,\n }\"\n ></ng-template>\n </ng-container>\n\n <ng-template #noTemplate>\n Example\n <!-- <ng-content></ng-content> -->\n </ng-template>\n</div>\n", styles: [":host{display:block;max-width:800px;min-width:100%}\n"] }]
|
|
209
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { template: [{
|
|
207
210
|
type: Input
|
|
208
211
|
}], popoverClass: [{
|
|
209
212
|
type: Input
|
|
@@ -219,7 +222,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
219
222
|
}] } });
|
|
220
223
|
|
|
221
224
|
/** Options for binding a passive event listener. */
|
|
222
|
-
const passiveEventListenerOptions = normalizePassiveListenerOptions({
|
|
225
|
+
const passiveEventListenerOptions = normalizePassiveListenerOptions({
|
|
226
|
+
passive: true,
|
|
227
|
+
});
|
|
223
228
|
class TheSeamPopoverDirective {
|
|
224
229
|
_elementRef;
|
|
225
230
|
_viewContainerRef;
|
|
@@ -232,7 +237,9 @@ class TheSeamPopoverDirective {
|
|
|
232
237
|
* Defines a width for a popover that will scale down if the window innerWidth is
|
|
233
238
|
* smaller than the value.
|
|
234
239
|
*/
|
|
235
|
-
get seamPopoverBaseWidth() {
|
|
240
|
+
get seamPopoverBaseWidth() {
|
|
241
|
+
return this._seamPopoverBaseWidth.value;
|
|
242
|
+
}
|
|
236
243
|
set seamPopoverBaseWidth(value) {
|
|
237
244
|
const _val = coerceNumberProperty(value, null);
|
|
238
245
|
if (_val !== this._seamPopoverBaseWidth.value) {
|
|
@@ -240,8 +247,12 @@ class TheSeamPopoverDirective {
|
|
|
240
247
|
}
|
|
241
248
|
}
|
|
242
249
|
_seamPopoverBaseWidth = new BehaviorSubject(null);
|
|
243
|
-
get seamPopoverDisabled() {
|
|
244
|
-
|
|
250
|
+
get seamPopoverDisabled() {
|
|
251
|
+
return this._seamPopoverDisabled.value;
|
|
252
|
+
}
|
|
253
|
+
set seamPopoverDisabled(val) {
|
|
254
|
+
this._seamPopoverDisabled.next(coerceBooleanProperty(val));
|
|
255
|
+
}
|
|
245
256
|
_seamPopoverDisabled = new BehaviorSubject(false);
|
|
246
257
|
// ngOnInit() {
|
|
247
258
|
// this._seamPopoverDisabled.pipe(
|
|
@@ -290,7 +301,7 @@ class TheSeamPopoverDirective {
|
|
|
290
301
|
this._elementRef.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);
|
|
291
302
|
this._seamPopoverBaseWidth
|
|
292
303
|
.pipe(takeUntil(this._ngUnsubscribe))
|
|
293
|
-
.subscribe(w => {
|
|
304
|
+
.subscribe((w) => {
|
|
294
305
|
if (this._compRef && this._compRef.instance) {
|
|
295
306
|
this._compRef.instance.baseWidth = w;
|
|
296
307
|
this._compRef.changeDetectorRef.markForCheck();
|
|
@@ -309,7 +320,7 @@ class TheSeamPopoverDirective {
|
|
|
309
320
|
* Handles touch start events on the trigger.
|
|
310
321
|
* Needs to be an arrow function so we can easily use addEventListener and removeEventListener.
|
|
311
322
|
*/
|
|
312
|
-
_handleTouchStart = () => this._openedBy = 'touch';
|
|
323
|
+
_handleTouchStart = () => (this._openedBy = 'touch');
|
|
313
324
|
toggle() {
|
|
314
325
|
if (this._active || this.seamPopoverDisabled) {
|
|
315
326
|
this.closePopover();
|
|
@@ -335,17 +346,18 @@ class TheSeamPopoverDirective {
|
|
|
335
346
|
this._compRef.instance.popover = this;
|
|
336
347
|
this._compRef.instance.popoverContext = this.seamPopoverContext;
|
|
337
348
|
this._compRef.changeDetectorRef.markForCheck();
|
|
338
|
-
this._popoverClosedSubscription =
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
this._overlayRef
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
+
this._popoverClosedSubscription =
|
|
350
|
+
this._compRef.instance._afterExit.subscribe((v) => {
|
|
351
|
+
// console.log('closed', v)
|
|
352
|
+
if (this._overlayRef?.hasAttached()) {
|
|
353
|
+
this._overlayRef.detach();
|
|
354
|
+
}
|
|
355
|
+
this._resetPopover();
|
|
356
|
+
this._popoverClosedSubscription.unsubscribe();
|
|
357
|
+
this._closingActionsSubscription.unsubscribe();
|
|
358
|
+
this._active = false;
|
|
359
|
+
this._closing = false;
|
|
360
|
+
});
|
|
349
361
|
}
|
|
350
362
|
closePopover() {
|
|
351
363
|
if (!this._active) {
|
|
@@ -362,7 +374,8 @@ class TheSeamPopoverDirective {
|
|
|
362
374
|
return this._overlayRef?.hasAttached() ?? false;
|
|
363
375
|
}
|
|
364
376
|
getOverlayPosition(origin) {
|
|
365
|
-
const positionStrategy = this._overlay
|
|
377
|
+
const positionStrategy = this._overlay
|
|
378
|
+
.position()
|
|
366
379
|
.flexibleConnectedTo(origin)
|
|
367
380
|
.withPositions(this.getPositions())
|
|
368
381
|
.withFlexibleDimensions(false)
|
|
@@ -375,13 +388,13 @@ class TheSeamPopoverDirective {
|
|
|
375
388
|
originX: 'center',
|
|
376
389
|
originY: 'bottom',
|
|
377
390
|
overlayX: 'center',
|
|
378
|
-
overlayY: 'top'
|
|
391
|
+
overlayY: 'top',
|
|
379
392
|
},
|
|
380
393
|
{
|
|
381
394
|
originX: 'center',
|
|
382
395
|
originY: 'top',
|
|
383
396
|
overlayX: 'center',
|
|
384
|
-
overlayY: 'bottom'
|
|
397
|
+
overlayY: 'bottom',
|
|
385
398
|
},
|
|
386
399
|
{
|
|
387
400
|
originX: 'end',
|
|
@@ -445,20 +458,19 @@ class TheSeamPopoverDirective {
|
|
|
445
458
|
const hover = of();
|
|
446
459
|
return merge(backdrop, hover, detachments);
|
|
447
460
|
}
|
|
448
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
449
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
461
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamPopoverDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1$1.Overlay }, { token: i2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });
|
|
462
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: TheSeamPopoverDirective, isStandalone: false, selector: "[seamPopover]", inputs: { seamPopover: "seamPopover", seamPopoverContext: "seamPopoverContext", seamPopoverBaseWidth: "seamPopoverBaseWidth", seamPopoverDisabled: "seamPopoverDisabled" }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "mousedown": "_onMouseDown($event)", "click": "_onClick($event)", "document:keydown": "_onDocumentKeydown($event)" }, properties: { "attr.aria-expanded": "popoverOpen() || null" } }, exportAs: ["seamPopover"], ngImport: i0 });
|
|
450
463
|
}
|
|
451
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
464
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamPopoverDirective, decorators: [{
|
|
452
465
|
type: Directive,
|
|
453
466
|
args: [{
|
|
454
467
|
selector: '[seamPopover]',
|
|
455
|
-
// tslint:disable-next-line:use-host-property-decorator
|
|
456
468
|
host: {
|
|
457
469
|
'aria-haspopup': 'true',
|
|
458
|
-
'[attr.aria-expanded]': 'popoverOpen() || null'
|
|
470
|
+
'[attr.aria-expanded]': 'popoverOpen() || null',
|
|
459
471
|
},
|
|
460
472
|
exportAs: 'seamPopover',
|
|
461
|
-
standalone: false
|
|
473
|
+
standalone: false,
|
|
462
474
|
}]
|
|
463
475
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1$1.Overlay }, { type: i2.FocusMonitor }], propDecorators: { seamPopover: [{
|
|
464
476
|
type: Input
|
|
@@ -480,35 +492,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
480
492
|
}] } });
|
|
481
493
|
|
|
482
494
|
class TheSeamPopoverModule {
|
|
483
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
484
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
485
|
-
|
|
486
|
-
OverlayModule,
|
|
487
|
-
PortalModule], exports: [TheSeamPopoverDirective,
|
|
488
|
-
OverlayModule,
|
|
489
|
-
PortalModule] });
|
|
490
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TheSeamPopoverModule, imports: [CommonModule,
|
|
491
|
-
OverlayModule,
|
|
492
|
-
PortalModule, OverlayModule,
|
|
493
|
-
PortalModule] });
|
|
495
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
496
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.6", ngImport: i0, type: TheSeamPopoverModule, declarations: [PopoverComponent, TheSeamPopoverDirective], imports: [CommonModule, OverlayModule, PortalModule], exports: [TheSeamPopoverDirective, OverlayModule, PortalModule] });
|
|
497
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamPopoverModule, imports: [CommonModule, OverlayModule, PortalModule, OverlayModule, PortalModule] });
|
|
494
498
|
}
|
|
495
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
499
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: TheSeamPopoverModule, decorators: [{
|
|
496
500
|
type: NgModule,
|
|
497
501
|
args: [{
|
|
498
|
-
declarations: [
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
],
|
|
502
|
-
imports: [
|
|
503
|
-
CommonModule,
|
|
504
|
-
OverlayModule,
|
|
505
|
-
PortalModule
|
|
506
|
-
],
|
|
507
|
-
exports: [
|
|
508
|
-
TheSeamPopoverDirective,
|
|
509
|
-
OverlayModule,
|
|
510
|
-
PortalModule
|
|
511
|
-
]
|
|
502
|
+
declarations: [PopoverComponent, TheSeamPopoverDirective],
|
|
503
|
+
imports: [CommonModule, OverlayModule, PortalModule],
|
|
504
|
+
exports: [TheSeamPopoverDirective, OverlayModule, PortalModule],
|
|
512
505
|
}]
|
|
513
506
|
}] });
|
|
514
507
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-popover.mjs","sources":["../../../projects/ui-common/popover/popover-animations.ts","../../../projects/ui-common/popover/popover/popover.component.ts","../../../projects/ui-common/popover/popover/popover.component.html","../../../projects/ui-common/popover/popover.directive.ts","../../../projects/ui-common/popover/popover.module.ts","../../../projects/ui-common/popover/theseam-ui-common-popover.ts"],"sourcesContent":["import { animate, animation, group, query, style } from '@angular/animations'\n\nexport const popoverSlideIn = animation([\n query(':self', [\n style({\n opacity: 0,\n transform: 'translateY(-70%)'\n }),\n group([\n animate('170ms linear', style({ opacity: 1 })),\n animate('220ms ease', style({ transform: 'translateY(0)' })),\n ])\n ])\n])\n\nexport const popoverSlideOut = animation([\n query(':self', [\n style({\n opacity: 1,\n transform: 'translateY(0)'\n }),\n group([\n animate('170ms linear', style({ opacity: 0 })),\n animate('220ms ease', style({ transform: 'translateY(-70%)' })),\n ])\n ])\n])\n\nexport const popoverExpandIn = animation([\n style({\n opacity: 0,\n transform: 'scale(0.8)'\n }),\n group([\n animate('100ms linear', style({ opacity: 1 })),\n animate('120ms ease', style({ transform: 'scale(1)' })),\n ])\n])\n\nexport const popoverExpandOut = animation([\n style({\n opacity: 1,\n transform: 'scale(1)'\n }),\n group([\n animate('100ms linear', style({ opacity: 0 })),\n animate('120ms ease', style({ transform: 'scale(0.8)' })),\n ])\n])\n","import { AnimationEvent, transition, trigger, useAnimation } from '@angular/animations'\nimport { coerceNumberProperty } from '@angular/cdk/coercion'\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef\n} from '@angular/core'\nimport { BehaviorSubject, fromEvent, of, Subject } from 'rxjs'\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil } from 'rxjs/operators'\n\nimport { popoverExpandIn, popoverExpandOut } from '../popover-animations'\nimport { TheSeamPopoverDirective } from '../popover.directive'\n\n@Component({\n selector: 'seam-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n animations: [\n trigger('slideDown', [\n transition(':enter', useAnimation(popoverExpandIn)),\n transition(':leave', useAnimation(popoverExpandOut)),\n ])\n ],\n host: {\n class: 'popover show m-2 position-static',\n '[@slideDown]': `{\n value: _state,\n params: {\n enterAnimationDuration: enterAnimationDuration,\n exitAnimationDuration: exitAnimationDuration\n }\n }`,\n '(@slideDown.start)': '_onAnimationStart($event)',\n '(@slideDown.done)': '_animationDone.next($event)',\n '[style.width]': '_popoverWidth'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PopoverComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n /** Duration of the enter animation. Has to be a valid CSS value (e.g. 100ms). */\n enterAnimationDuration?: string = '225ms'\n\n /** Duration of the exit animation. Has to be a valid CSS value (e.g. 50ms). */\n exitAnimationDuration?: string = '225ms'\n\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter'\n\n /** A subject emitting before the dialog enters the view. */\n _beforeEnter: Subject<void> = new Subject()\n\n /** A subject emitting after the dialog enters the view. */\n _afterEnter: Subject<void> = new Subject()\n\n /** A subject emitting before the dialog exits the view. */\n _beforeExit: Subject<void> = new Subject()\n\n /** A subject emitting after the dialog exits the view. */\n _afterExit: Subject<void> = new Subject()\n\n /** Stream of animation `done` events. */\n _animationDone = new Subject<AnimationEvent>()\n\n // @HostBinding('attr.role') get _role() { return this._config.role }\n @HostBinding('attr.role') get _role() { return 'dialog' }\n\n @HostBinding('attr.tabindex') get _tabindex() { return -1 }\n\n @Input() template: TemplateRef<any> | undefined | null\n\n // @Output() readonly closed = new EventEmitter<void | 'click' | 'keydown'>()\n\n @Input() popoverClass: string | undefined | null\n\n @Input() popover: TheSeamPopoverDirective | undefined | null\n\n @Input() popoverContext: any\n\n /**\n * Defines a width for a popover that will scale down if the window innerWidth is\n * smaller than the value.\n */\n @Input()\n get baseWidth() { return this._baseWidth.value }\n set baseWidth(value: number | null) {\n const _val = coerceNumberProperty(value, null)\n if (_val !== this._baseWidth.value) {\n this._baseWidth.next(_val)\n }\n }\n private _baseWidth = new BehaviorSubject<number | null>(600)\n // _popoverWidth$: Observable<string | undefined>\n _popoverWidth: string | undefined\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n // TODO: Implement PopoverConfig\n ) {\n // We use a Subject with a distinctUntilChanged, rather than a callback attached to .done,\n // because some browsers fire the done event twice and we don't want to emit duplicate events.\n // See: https://github.com/angular/angular/issues/24084\n this._animationDone.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState\n })).subscribe(event => {\n // Emit lifecycle events based on animation `done` callback.\n if (event.toState === 'enter') {\n this._afterEnter.next()\n this._afterEnter.complete()\n }\n\n if (event.fromState === 'enter' && (event.toState === 'void' || event.toState === 'exit')) {\n this._afterExit.next()\n this._afterExit.complete()\n }\n })\n }\n\n ngOnInit() {\n // this._popoverWidth$ =\n this._baseWidth.pipe(\n switchMap(baseWidth => {\n if (baseWidth) {\n return fromEvent(window, 'resize').pipe(\n startWith(undefined),\n map(() => window.innerWidth < baseWidth ? `${window.innerWidth}px` : `${baseWidth}px`)\n )\n }\n return of(undefined)\n }),\n takeUntil(this._ngUnsubscribe)\n ).subscribe(w => {\n this._popoverWidth = w\n this._changeDetectorRef.markForCheck()\n })\n }\n\n ngOnDestroy() {\n // this.closed.complete()\n this._animationDone.complete()\n\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n /** Starts the dialog exit animation. */\n _startExiting(): void {\n this._state = 'exit'\n\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck()\n }\n\n /** Emit lifecycle events based on animation `start` callback. */\n _onAnimationStart(event: AnimationEvent) {\n if (event.toState === 'enter') {\n this._beforeEnter.next()\n this._beforeEnter.complete()\n }\n if (event.fromState === 'enter' && (event.toState === 'void' || event.toState === 'exit')) {\n this._beforeExit.next()\n this._beforeExit.complete()\n }\n }\n\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n @HostListener('keydown', [ '$event' ])\n _handleKeydown(event: KeyboardEvent) {\n // tslint:disable-next-line:deprecation\n const keyCode = event.keyCode\n\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault()\n // this.closed.emit('keydown')\n this._startExiting()\n }\n break\n }\n }\n\n}\n","<div class=\"popover-body\">\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: popover, popover: popover, popoverContext: popoverContext }\"></ng-template>\n </ng-container>\n\n <ng-template #noTemplate>\n Example\n <!-- <ng-content></ng-content> -->\n </ng-template>\n</div>\n","import { FocusMonitor, FocusOrigin, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y'\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion'\nimport { ESCAPE } from '@angular/cdk/keycodes'\nimport { ConnectionPositionPair, Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay'\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform'\nimport { ComponentPortal } from '@angular/cdk/portal'\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core'\nimport { BehaviorSubject, fromEvent, merge, of, Subject, Subscription } from 'rxjs'\nimport { switchMap, takeUntil } from 'rxjs/operators'\n\nimport { PopoverComponent } from './popover/popover.component'\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true })\n\n@Directive({\n selector: '[seamPopover]',\n // tslint:disable-next-line:use-host-property-decorator\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'popoverOpen() || null'\n },\n exportAs: 'seamPopover',\n standalone: false\n})\nexport class TheSeamPopoverDirective implements OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input() seamPopover?: TemplateRef<any> | null\n\n @Input() seamPopoverContext?: any\n\n /**\n * Defines a width for a popover that will scale down if the window innerWidth is\n * smaller than the value.\n */\n @Input()\n get seamPopoverBaseWidth() { return this._seamPopoverBaseWidth.value }\n set seamPopoverBaseWidth(value: number | null) {\n const _val = coerceNumberProperty(value, null)\n if (_val !== this._seamPopoverBaseWidth.value) {\n this._seamPopoverBaseWidth.next(_val)\n }\n }\n private _seamPopoverBaseWidth = new BehaviorSubject<number | null>(null)\n\n @Input()\n get seamPopoverDisabled() { return this._seamPopoverDisabled.value }\n set seamPopoverDisabled(val: boolean) { this._seamPopoverDisabled.next(coerceBooleanProperty(val)) }\n private _seamPopoverDisabled = new BehaviorSubject<boolean>(false)\n\n // ngOnInit() {\n // this._seamPopoverDisabled.pipe(\n // switchMap(disabled => {\n // if (disabled) {\n // this.close()\n // return of(undefined)\n // }\n\n // if (!(this._elementRef && this._elementRef.nativeElement)) {\n // return of(undefined)\n // }\n\n // return fromEvent(this._elementRef.nativeElement, 'click')\n // })\n // ).subscribe()\n // }\n\n private _active = false\n private _closing = false\n private _overlayRef: OverlayRef | undefined | null\n private _compRef: ComponentRef<PopoverComponent> | undefined | null\n private _popoverClosedSubscription = Subscription.EMPTY\n private _closingActionsSubscription = Subscription.EMPTY\n\n public restoreFocus = true\n\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n _openedBy: 'mouse' | 'touch' | null = null\n\n @HostListener('mousedown', [ '$event' ])\n _onMouseDown(event: MouseEvent) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : null\n }\n }\n\n @HostListener('click', [ '$event' ])\n _onClick(event: any) {\n this.toggle()\n }\n\n @HostListener('document:keydown', [ '$event' ])\n _onDocumentKeydown(event: any) {\n if (event.keyCode === ESCAPE) {\n this.closePopover()\n }\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n private _overlay: Overlay,\n private _focusMonitor: FocusMonitor\n ) {\n this._elementRef.nativeElement.addEventListener('touchstart', this._handleTouchStart,\n passiveEventListenerOptions)\n\n this._seamPopoverBaseWidth\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(w => {\n if (this._compRef && this._compRef.instance) {\n this._compRef.instance.baseWidth = w\n this._compRef.changeDetectorRef.markForCheck()\n }\n })\n }\n\n ngOnDestroy() {\n this.closePopover()\n\n this._elementRef.nativeElement.removeEventListener('touchstart', this._handleTouchStart,\n passiveEventListenerOptions)\n\n this._popoverClosedSubscription.unsubscribe()\n this._closingActionsSubscription.unsubscribe()\n\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n private _handleTouchStart = () => this._openedBy = 'touch'\n\n public toggle(): void {\n if (this._active || this.seamPopoverDisabled) {\n this.closePopover()\n } else {\n this.openPopover()\n }\n }\n\n public openPopover(): void {\n if (this._active || !this.seamPopover) { return }\n this._active = true\n\n this._overlayRef = this._overlay.create({\n hasBackdrop: true,\n backdropClass: 'transparent',\n positionStrategy: this.getOverlayPosition(this._elementRef.nativeElement),\n })\n\n this._compRef = this._overlayRef.attach(new ComponentPortal(PopoverComponent, this._viewContainerRef))\n\n this._closingActionsSubscription = this._popoverClosingActions().subscribe(() => this.closePopover())\n\n this._compRef.instance.template = this.seamPopover\n this._compRef.instance.baseWidth = this.seamPopoverBaseWidth\n this._compRef.instance.popover = this\n this._compRef.instance.popoverContext = this.seamPopoverContext\n this._compRef.changeDetectorRef.markForCheck()\n\n this._popoverClosedSubscription = this._compRef.instance._afterExit.subscribe(v => {\n // console.log('closed', v)\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach()\n }\n\n this._resetPopover()\n\n this._popoverClosedSubscription.unsubscribe()\n this._closingActionsSubscription.unsubscribe()\n\n this._active = false\n this._closing = false\n })\n }\n\n public closePopover(): void {\n if (!this._active) { return }\n\n if (!this._closing) {\n if (this._compRef && this._compRef.instance) {\n this._closing = true\n this._compRef.instance._startExiting()\n }\n }\n }\n\n public popoverOpen(): boolean {\n return this._overlayRef?.hasAttached() ?? false\n }\n\n private getOverlayPosition(origin: HTMLElement): PositionStrategy {\n const positionStrategy = this._overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.getPositions())\n .withFlexibleDimensions(false)\n .withPush(true)\n\n return positionStrategy\n }\n\n private getPositions(): ConnectionPositionPair[] {\n return [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top'\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n }\n\n /**\n * Focuses the popover trigger.\n * @param origin Source of the popover trigger's focus.\n */\n focus(origin: FocusOrigin = 'program') {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._elementRef, origin)\n } else {\n this._elementRef.nativeElement.focus()\n }\n }\n\n /**\n * This method resets the popover when it's closed, most importantly restoring\n * focus to the popover trigger if the popover was opened via the keyboard.\n */\n private _resetPopover(): void {\n // We should reset focus if the user is navigating using a keyboard or\n // if we have a top-level trigger which might cause focus to be lost\n // when clicking on the backdrop.\n if (this.restoreFocus) {\n if (!this._openedBy) {\n // Note that the focus style will show up both for `program` and\n // `keyboard` so we don't have to specify which one it is.\n this.focus()\n }\n }\n\n this._openedBy = null\n }\n\n /** Returns a stream that emits whenever an action that should close the popover occurs. */\n private _popoverClosingActions() {\n const backdrop = this._overlayRef?.backdropClick() ?? of()\n const detachments = this._overlayRef?.detachments() ?? of()\n const hover = of()\n\n return merge(backdrop, hover, detachments)\n }\n\n}\n","import { OverlayModule } from '@angular/cdk/overlay'\nimport { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamPopoverDirective } from './popover.directive'\nimport { PopoverComponent } from './popover/popover.component'\n\n@NgModule({\n declarations: [\n PopoverComponent,\n TheSeamPopoverDirective\n ],\n imports: [\n CommonModule,\n OverlayModule,\n PortalModule\n ],\n exports: [\n TheSeamPopoverDirective,\n OverlayModule,\n PortalModule\n ]\n})\nexport class TheSeamPopoverModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-popover.mjs","sources":["../../../projects/ui-common/popover/popover-animations.ts","../../../projects/ui-common/popover/popover/popover.component.ts","../../../projects/ui-common/popover/popover/popover.component.html","../../../projects/ui-common/popover/popover.directive.ts","../../../projects/ui-common/popover/popover.module.ts","../../../projects/ui-common/popover/theseam-ui-common-popover.ts"],"sourcesContent":["import { animate, animation, group, query, style } from '@angular/animations'\n\nexport const popoverSlideIn = animation([\n query(':self', [\n style({\n opacity: 0,\n transform: 'translateY(-70%)',\n }),\n group([\n animate('170ms linear', style({ opacity: 1 })),\n animate('220ms ease', style({ transform: 'translateY(0)' })),\n ]),\n ]),\n])\n\nexport const popoverSlideOut = animation([\n query(':self', [\n style({\n opacity: 1,\n transform: 'translateY(0)',\n }),\n group([\n animate('170ms linear', style({ opacity: 0 })),\n animate('220ms ease', style({ transform: 'translateY(-70%)' })),\n ]),\n ]),\n])\n\nexport const popoverExpandIn = animation([\n style({\n opacity: 0,\n transform: 'scale(0.8)',\n }),\n group([\n animate('100ms linear', style({ opacity: 1 })),\n animate('120ms ease', style({ transform: 'scale(1)' })),\n ]),\n])\n\nexport const popoverExpandOut = animation([\n style({\n opacity: 1,\n transform: 'scale(1)',\n }),\n group([\n animate('100ms linear', style({ opacity: 0 })),\n animate('120ms ease', style({ transform: 'scale(0.8)' })),\n ]),\n])\n","import {\n AnimationEvent,\n transition,\n trigger,\n useAnimation,\n} from '@angular/animations'\nimport { coerceNumberProperty } from '@angular/cdk/coercion'\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core'\nimport { BehaviorSubject, fromEvent, of, Subject } from 'rxjs'\nimport {\n distinctUntilChanged,\n map,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators'\n\nimport { popoverExpandIn, popoverExpandOut } from '../popover-animations'\nimport { TheSeamPopoverDirective } from '../popover.directive'\n\n@Component({\n selector: 'seam-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n animations: [\n trigger('slideDown', [\n transition(':enter', useAnimation(popoverExpandIn)),\n transition(':leave', useAnimation(popoverExpandOut)),\n ]),\n ],\n host: {\n class: 'popover show m-2 position-static',\n '[@slideDown]': `{\n value: _state,\n params: {\n enterAnimationDuration: enterAnimationDuration,\n exitAnimationDuration: exitAnimationDuration\n }\n }`,\n '(@slideDown.start)': '_onAnimationStart($event)',\n '(@slideDown.done)': '_animationDone.next($event)',\n '[style.width]': '_popoverWidth',\n '[attr.role]': '\"dialog\"',\n '[attr.tabindex]': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class PopoverComponent implements OnInit, OnDestroy {\n private readonly _ngUnsubscribe = new Subject<void>()\n\n /** Duration of the enter animation. Has to be a valid CSS value (e.g. 100ms). */\n enterAnimationDuration?: string = '225ms'\n\n /** Duration of the exit animation. Has to be a valid CSS value (e.g. 50ms). */\n exitAnimationDuration?: string = '225ms'\n\n /** State of the dialog animation. */\n _state: 'void' | 'enter' | 'exit' = 'enter'\n\n /** A subject emitting before the dialog enters the view. */\n _beforeEnter = new Subject<void>()\n\n /** A subject emitting after the dialog enters the view. */\n _afterEnter = new Subject<void>()\n\n /** A subject emitting before the dialog exits the view. */\n _beforeExit = new Subject<void>()\n\n /** A subject emitting after the dialog exits the view. */\n _afterExit = new Subject<void>()\n\n /** Stream of animation `done` events. */\n _animationDone = new Subject<AnimationEvent>()\n\n // @HostBinding('attr.role') get _role() { return this._config.role }\n\n @Input() template: TemplateRef<any> | undefined | null\n\n // @Output() readonly closed = new EventEmitter<void | 'click' | 'keydown'>()\n\n @Input() popoverClass: string | undefined | null\n\n @Input() popover: TheSeamPopoverDirective | undefined | null\n\n @Input() popoverContext: any\n\n /**\n * Defines a width for a popover that will scale down if the window innerWidth is\n * smaller than the value.\n */\n @Input()\n get baseWidth() {\n return this._baseWidth.value\n }\n set baseWidth(value: number | null) {\n const _val = coerceNumberProperty(value, null)\n if (_val !== this._baseWidth.value) {\n this._baseWidth.next(_val)\n }\n }\n private _baseWidth = new BehaviorSubject<number | null>(600)\n // _popoverWidth$: Observable<string | undefined>\n _popoverWidth: string | undefined\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n // TODO: Implement PopoverConfig\n ) {\n // We use a Subject with a distinctUntilChanged, rather than a callback attached to .done,\n // because some browsers fire the done event twice and we don't want to emit duplicate events.\n // See: https://github.com/angular/angular/issues/24084\n this._animationDone\n .pipe(\n distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState\n }),\n )\n .subscribe((event) => {\n // Emit lifecycle events based on animation `done` callback.\n if (event.toState === 'enter') {\n this._afterEnter.next()\n this._afterEnter.complete()\n }\n\n if (\n event.fromState === 'enter' &&\n (event.toState === 'void' || event.toState === 'exit')\n ) {\n this._afterExit.next()\n this._afterExit.complete()\n }\n })\n }\n\n ngOnInit() {\n // this._popoverWidth$ =\n this._baseWidth\n .pipe(\n switchMap((baseWidth) => {\n if (baseWidth) {\n return fromEvent(window, 'resize').pipe(\n startWith(undefined),\n map(() =>\n window.innerWidth < baseWidth\n ? `${window.innerWidth}px`\n : `${baseWidth}px`,\n ),\n )\n }\n return of(undefined)\n }),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe((w) => {\n this._popoverWidth = w\n this._changeDetectorRef.markForCheck()\n })\n }\n\n ngOnDestroy() {\n // this.closed.complete()\n this._animationDone.complete()\n\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n /** Starts the dialog exit animation. */\n _startExiting(): void {\n this._state = 'exit'\n\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck()\n }\n\n /** Emit lifecycle events based on animation `start` callback. */\n _onAnimationStart(event: AnimationEvent) {\n if (event.toState === 'enter') {\n this._beforeEnter.next()\n this._beforeEnter.complete()\n }\n if (\n event.fromState === 'enter' &&\n (event.toState === 'void' || event.toState === 'exit')\n ) {\n this._beforeExit.next()\n this._beforeExit.complete()\n }\n }\n\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode\n\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault()\n // this.closed.emit('keydown')\n this._startExiting()\n }\n break\n }\n }\n}\n","<div class=\"popover-body\">\n <ng-container *ngIf=\"template; else noTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n $implicit: popover,\n popover: popover,\n popoverContext: popoverContext,\n }\"\n ></ng-template>\n </ng-container>\n\n <ng-template #noTemplate>\n Example\n <!-- <ng-content></ng-content> -->\n </ng-template>\n</div>\n","import {\n FocusMonitor,\n FocusOrigin,\n isFakeMousedownFromScreenReader,\n} from '@angular/cdk/a11y'\nimport {\n coerceBooleanProperty,\n coerceNumberProperty,\n} from '@angular/cdk/coercion'\nimport { ESCAPE } from '@angular/cdk/keycodes'\nimport {\n ConnectionPositionPair,\n Overlay,\n OverlayRef,\n PositionStrategy,\n} from '@angular/cdk/overlay'\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform'\nimport { ComponentPortal } from '@angular/cdk/portal'\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core'\nimport {\n BehaviorSubject,\n fromEvent,\n merge,\n of,\n Subject,\n Subscription,\n} from 'rxjs'\nimport { switchMap, takeUntil } from 'rxjs/operators'\n\nimport { PopoverComponent } from './popover/popover.component'\n\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n})\n\n@Directive({\n selector: '[seamPopover]',\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'popoverOpen() || null',\n },\n exportAs: 'seamPopover',\n standalone: false,\n})\nexport class TheSeamPopoverDirective implements OnDestroy {\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input() seamPopover?: TemplateRef<any> | null\n\n @Input() seamPopoverContext?: any\n\n /**\n * Defines a width for a popover that will scale down if the window innerWidth is\n * smaller than the value.\n */\n @Input()\n get seamPopoverBaseWidth() {\n return this._seamPopoverBaseWidth.value\n }\n set seamPopoverBaseWidth(value: number | null) {\n const _val = coerceNumberProperty(value, null)\n if (_val !== this._seamPopoverBaseWidth.value) {\n this._seamPopoverBaseWidth.next(_val)\n }\n }\n private _seamPopoverBaseWidth = new BehaviorSubject<number | null>(null)\n\n @Input()\n get seamPopoverDisabled() {\n return this._seamPopoverDisabled.value\n }\n set seamPopoverDisabled(val: boolean) {\n this._seamPopoverDisabled.next(coerceBooleanProperty(val))\n }\n private _seamPopoverDisabled = new BehaviorSubject<boolean>(false)\n\n // ngOnInit() {\n // this._seamPopoverDisabled.pipe(\n // switchMap(disabled => {\n // if (disabled) {\n // this.close()\n // return of(undefined)\n // }\n\n // if (!(this._elementRef && this._elementRef.nativeElement)) {\n // return of(undefined)\n // }\n\n // return fromEvent(this._elementRef.nativeElement, 'click')\n // })\n // ).subscribe()\n // }\n\n private _active = false\n private _closing = false\n private _overlayRef: OverlayRef | undefined | null\n private _compRef: ComponentRef<PopoverComponent> | undefined | null\n private _popoverClosedSubscription = Subscription.EMPTY\n private _closingActionsSubscription = Subscription.EMPTY\n\n public restoreFocus = true\n\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n _openedBy: 'mouse' | 'touch' | null = null\n\n @HostListener('mousedown', ['$event'])\n _onMouseDown(event: MouseEvent) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : null\n }\n }\n\n @HostListener('click', ['$event'])\n _onClick(event: any) {\n this.toggle()\n }\n\n @HostListener('document:keydown', ['$event'])\n _onDocumentKeydown(event: any) {\n if (event.keyCode === ESCAPE) {\n this.closePopover()\n }\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _viewContainerRef: ViewContainerRef,\n private _overlay: Overlay,\n private _focusMonitor: FocusMonitor,\n ) {\n this._elementRef.nativeElement.addEventListener(\n 'touchstart',\n this._handleTouchStart,\n passiveEventListenerOptions,\n )\n\n this._seamPopoverBaseWidth\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((w) => {\n if (this._compRef && this._compRef.instance) {\n this._compRef.instance.baseWidth = w\n this._compRef.changeDetectorRef.markForCheck()\n }\n })\n }\n\n ngOnDestroy() {\n this.closePopover()\n\n this._elementRef.nativeElement.removeEventListener(\n 'touchstart',\n this._handleTouchStart,\n passiveEventListenerOptions,\n )\n\n this._popoverClosedSubscription.unsubscribe()\n this._closingActionsSubscription.unsubscribe()\n\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n private _handleTouchStart = () => (this._openedBy = 'touch')\n\n public toggle(): void {\n if (this._active || this.seamPopoverDisabled) {\n this.closePopover()\n } else {\n this.openPopover()\n }\n }\n\n public openPopover(): void {\n if (this._active || !this.seamPopover) {\n return\n }\n this._active = true\n\n this._overlayRef = this._overlay.create({\n hasBackdrop: true,\n backdropClass: 'transparent',\n positionStrategy: this.getOverlayPosition(this._elementRef.nativeElement),\n })\n\n this._compRef = this._overlayRef.attach(\n new ComponentPortal(PopoverComponent, this._viewContainerRef),\n )\n\n this._closingActionsSubscription = this._popoverClosingActions().subscribe(\n () => this.closePopover(),\n )\n\n this._compRef.instance.template = this.seamPopover\n this._compRef.instance.baseWidth = this.seamPopoverBaseWidth\n this._compRef.instance.popover = this\n this._compRef.instance.popoverContext = this.seamPopoverContext\n this._compRef.changeDetectorRef.markForCheck()\n\n this._popoverClosedSubscription =\n this._compRef.instance._afterExit.subscribe((v) => {\n // console.log('closed', v)\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach()\n }\n\n this._resetPopover()\n\n this._popoverClosedSubscription.unsubscribe()\n this._closingActionsSubscription.unsubscribe()\n\n this._active = false\n this._closing = false\n })\n }\n\n public closePopover(): void {\n if (!this._active) {\n return\n }\n\n if (!this._closing) {\n if (this._compRef && this._compRef.instance) {\n this._closing = true\n this._compRef.instance._startExiting()\n }\n }\n }\n\n public popoverOpen(): boolean {\n return this._overlayRef?.hasAttached() ?? false\n }\n\n private getOverlayPosition(origin: HTMLElement): PositionStrategy {\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions(this.getPositions())\n .withFlexibleDimensions(false)\n .withPush(true)\n\n return positionStrategy\n }\n\n private getPositions(): ConnectionPositionPair[] {\n return [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n }\n\n /**\n * Focuses the popover trigger.\n * @param origin Source of the popover trigger's focus.\n */\n focus(origin: FocusOrigin = 'program') {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(this._elementRef, origin)\n } else {\n this._elementRef.nativeElement.focus()\n }\n }\n\n /**\n * This method resets the popover when it's closed, most importantly restoring\n * focus to the popover trigger if the popover was opened via the keyboard.\n */\n private _resetPopover(): void {\n // We should reset focus if the user is navigating using a keyboard or\n // if we have a top-level trigger which might cause focus to be lost\n // when clicking on the backdrop.\n if (this.restoreFocus) {\n if (!this._openedBy) {\n // Note that the focus style will show up both for `program` and\n // `keyboard` so we don't have to specify which one it is.\n this.focus()\n }\n }\n\n this._openedBy = null\n }\n\n /** Returns a stream that emits whenever an action that should close the popover occurs. */\n private _popoverClosingActions() {\n const backdrop = this._overlayRef?.backdropClick() ?? of()\n const detachments = this._overlayRef?.detachments() ?? of()\n const hover = of()\n\n return merge(backdrop, hover, detachments)\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay'\nimport { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\n\nimport { TheSeamPopoverDirective } from './popover.directive'\nimport { PopoverComponent } from './popover/popover.component'\n\n@NgModule({\n declarations: [PopoverComponent, TheSeamPopoverDirective],\n imports: [CommonModule, OverlayModule, PortalModule],\n exports: [TheSeamPopoverDirective, OverlayModule, PortalModule],\n})\nexport class TheSeamPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;AAEO,MAAM,cAAc,GAAG,SAAS,CAAC;IACtC,KAAK,CAAC,OAAO,EAAE;AACb,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,kBAAkB;SAC9B,CAAC;AACF,QAAA,KAAK,CAAC;YACJ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;SAC7D,CAAC;KACH,CAAC;AACH,CAAA;AAEM,MAAM,eAAe,GAAG,SAAS,CAAC;IACvC,KAAK,CAAC,OAAO,EAAE;AACb,QAAA,KAAK,CAAC;AACJ,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,eAAe;SAC3B,CAAC;AACF,QAAA,KAAK,CAAC;YACJ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;SAChE,CAAC;KACH,CAAC;AACH,CAAA;AAEM,MAAM,eAAe,GAAG,SAAS,CAAC;AACvC,IAAA,KAAK,CAAC;AACJ,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,SAAS,EAAE,YAAY;KACxB,CAAC;AACF,IAAA,KAAK,CAAC;QACJ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;KACxD,CAAC;AACH,CAAA;AAEM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACxC,IAAA,KAAK,CAAC;AACJ,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,SAAS,EAAE,UAAU;KACtB,CAAC;AACF,IAAA,KAAK,CAAC;QACJ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;KAC1D,CAAC;AACH,CAAA;;MCWY,gBAAgB,CAAA;AA0DjB,IAAA,kBAAA;AAzDO,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;;IAGrD,sBAAsB,GAAY,OAAO;;IAGzC,qBAAqB,GAAY,OAAO;;IAGxC,MAAM,GAA8B,OAAO;;AAG3C,IAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;;AAGlC,IAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;;AAGjC,IAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;;AAGjC,IAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;;AAGhC,IAAA,cAAc,GAAG,IAAI,OAAO,EAAkB;;AAIrC,IAAA,QAAQ;;AAIR,IAAA,YAAY;AAEZ,IAAA,OAAO;AAEP,IAAA,cAAc;AAEvB;;;AAGG;AACH,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;IAC9B;IACA,IAAI,SAAS,CAAC,KAAoB,EAAA;QAChC,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9C,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B;IACF;AACQ,IAAA,UAAU,GAAG,IAAI,eAAe,CAAgB,GAAG,CAAC;;AAE5D,IAAA,aAAa;AAEb,IAAA,WAAA,CACU,kBAAqC,EAAA;QAArC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;;;;AAM1B,QAAA,IAAI,CAAC;aACF,IAAI,CACH,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC5B,YAAA,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;AAC/D,QAAA,CAAC,CAAC;AAEH,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;;AAEnB,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YAC7B;AAEA,YAAA,IACE,KAAK,CAAC,SAAS,KAAK,OAAO;AAC3B,iBAAC,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,EACtD;AACA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,SAAS,KAAI;YACtB,IAAI,SAAS,EAAE;gBACb,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CACrC,SAAS,CAAC,SAAS,CAAC,EACpB,GAAG,CAAC,MACF,MAAM,CAAC,UAAU,GAAG;AAClB,sBAAE,CAAA,EAAG,MAAM,CAAC,UAAU,CAAA,EAAA;AACtB,sBAAE,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,CACrB,CACF;YACH;AACA,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;QACtB,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AAE/B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAE9B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;;IAGA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;;AAIpB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IACxC;;AAGA,IAAA,iBAAiB,CAAC,KAAqB,EAAA;AACrC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC9B;AACA,QAAA,IACE,KAAK,CAAC,SAAS,KAAK,OAAO;AAC3B,aAAC,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,EACtD;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC7B;IACF;;AAIA,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;QAE7B,QAAQ,OAAO;AACb,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE;;oBAEtB,IAAI,CAAC,aAAa,EAAE;gBACtB;gBACA;;IAEN;uGA9JW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,yKAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3D7B,sbAiBA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDkBc;YACV,OAAO,CAAC,WAAW,EAAE;AACnB,gBAAA,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;AACnD,gBAAA,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;aACrD,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAmBU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA5B5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EAGZ;wBACV,OAAO,CAAC,WAAW,EAAE;AACnB,4BAAA,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;AACnD,4BAAA,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;yBACrD,CAAC;qBACH,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,kCAAkC;AACzC,wBAAA,cAAc,EAAE,CAAA;;;;;;AAMd,KAAA,CAAA;AACF,wBAAA,oBAAoB,EAAE,2BAA2B;AACjD,wBAAA,mBAAmB,EAAE,6BAA6B;AAClD,wBAAA,eAAe,EAAE,eAAe;AAChC,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,iBAAiB,EAAE,IAAI;AACxB,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,sbAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA;;sBA+BhB;;sBAIA;;sBAEA;;sBAEA;;sBAMA;;sBAsGA,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEnKrC;AACA,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AAClE,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC;MAWW,uBAAuB,CAAA;AAoFxB,IAAA,WAAA;AACA,IAAA,iBAAA;AACA,IAAA,QAAA;AACA,IAAA,aAAA;AAtFO,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;AAE5C,IAAA,WAAW;AAEX,IAAA,kBAAkB;AAE3B;;;AAGG;AACH,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK;IACzC;IACA,IAAI,oBAAoB,CAAC,KAAoB,EAAA;QAC3C,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9C,IAAI,IAAI,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC7C,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC;IACF;AACQ,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAExE,IAAA,IACI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;IACxC;IACA,IAAI,mBAAmB,CAAC,GAAY,EAAA;QAClC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC5D;AACQ,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;;;;;;;;;;;;;;IAmB1D,OAAO,GAAG,KAAK;IACf,QAAQ,GAAG,KAAK;AAChB,IAAA,WAAW;AACX,IAAA,QAAQ;AACR,IAAA,0BAA0B,GAAG,YAAY,CAAC,KAAK;AAC/C,IAAA,2BAA2B,GAAG,YAAY,CAAC,KAAK;IAEjD,YAAY,GAAG,IAAI;;;IAI1B,SAAS,GAA6B,IAAI;AAG1C,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE;;;AAG3C,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI;QACtD;IACF;AAGA,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,MAAM,EAAE;IACf;AAGA,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC5B,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEA,IAAA,WAAA,CACU,WAAoC,EACpC,iBAAmC,EACnC,QAAiB,EACjB,aAA2B,EAAA;QAH3B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,aAAa,GAAb,aAAa;AAErB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAC7C,YAAY,EACZ,IAAI,CAAC,iBAAiB,EACtB,2BAA2B,CAC5B;AAED,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;YACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC;AACpC,gBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,YAAY,EAAE;YAChD;AACF,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAChD,YAAY,EACZ,IAAI,CAAC,iBAAiB,EACtB,2BAA2B,CAC5B;AAED,QAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE;AAC7C,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE;AAE9C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEA;;;AAGG;IACK,iBAAiB,GAAG,OAAO,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAErD,MAAM,GAAA;QACX,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5C,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;YACL,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEO,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QAEnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,aAAa;YAC5B,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC1E,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACrC,IAAI,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAC9D;AAED,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,CACxE,MAAM,IAAI,CAAC,YAAY,EAAE,CAC1B;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW;QAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB;QAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI;QACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAE9C,QAAA,IAAI,CAAC,0BAA0B;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;;AAEhD,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE;AACnC,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBAC3B;gBAEA,IAAI,CAAC,aAAa,EAAE;AAEpB,gBAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE;AAC7C,gBAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE;AAE9C,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACvB,YAAA,CAAC,CAAC;IACN;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC3C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;YACxC;QACF;IACF;IAEO,WAAW,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,KAAK;IACjD;AAEQ,IAAA,kBAAkB,CAAC,MAAmB,EAAA;AAC5C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;aACR,mBAAmB,CAAC,MAAM;AAC1B,aAAA,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE;aACjC,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,IAAI,CAAC;AAEjB,QAAA,OAAO,gBAAgB;IACzB;IAEQ,YAAY,GAAA;QAClB,OAAO;AACL,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;SACF;IACH;AAEA;;;AAGG;IACH,KAAK,CAAC,SAAsB,SAAS,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;QACvD;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;QACxC;IACF;AAEA;;;AAGG;IACK,aAAa,GAAA;;;;AAInB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;;gBAGnB,IAAI,CAAC,KAAK,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;;IAGQ,sBAAsB,GAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;AAC3D,QAAA,MAAM,KAAK,GAAG,EAAE,EAAE;QAElB,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC;IAC5C;uGA7RW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,sBAAsB,EAAE,uBAAuB;AAChD,qBAAA;AACD,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAIE;;sBAEA;;sBAMA;;sBAYA;;sBAuCA,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBASpC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAKhC,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;MCtHjC,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,CAJhB,gBAAgB,EAAE,uBAAuB,aAC9C,YAAY,EAAE,aAAa,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CACzC,uBAAuB,EAAE,aAAa,EAAE,YAAY,CAAA,EAAA,CAAA;wGAEnD,oBAAoB,EAAA,OAAA,EAAA,CAHrB,YAAY,EAAE,aAAa,EAAE,YAAY,EAChB,aAAa,EAAE,YAAY,CAAA,EAAA,CAAA;;2FAEnD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC;AACpD,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,aAAa,EAAE,YAAY,CAAC;AAChE,iBAAA;;;ACZD;;AAEG;;;;"}
|