aril 1.2.18 → 2.0.1-dev.0
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/boot/bridge/src/mfe-bridge.d.ts +42 -2
- package/boot/config/apps/index.d.ts +7 -1
- package/boot/config/apps/src/custom-reuse-outlet.component.d.ts +37 -0
- package/boot/config/apps/src/custom-route-reuse-strategy.class.d.ts +156 -0
- package/boot/config/apps/src/nav-link-context-menu.service.d.ts +33 -0
- package/boot/config/apps/src/nav-link.directive.d.ts +29 -0
- package/boot/config/apps/src/nav.service.d.ts +198 -0
- package/boot/config/apps/src/route-close.service.d.ts +9 -0
- package/boot/config/apps/src/safe-navigate.d.ts +17 -0
- package/boot/config/apps/src/tab-aware-url-serializer.d.ts +22 -0
- package/boot/config/plugins/src/getNgZone.d.ts +9 -1
- package/boot/mfe/src/app.component.d.ts +15 -4
- package/boot/mfe/src/isolated-location-strategy.d.ts +57 -0
- package/esm2022/boot/bridge/src/mfe-bridge.mjs +36 -5
- package/esm2022/boot/config/api/src/api.service.mjs +12 -3
- package/esm2022/boot/config/apps/index.mjs +8 -2
- package/esm2022/boot/config/apps/src/apps.service.mjs +14 -6
- package/esm2022/boot/config/apps/src/custom-reuse-outlet.component.mjs +207 -0
- package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +540 -0
- package/esm2022/boot/config/apps/src/nav-link-context-menu.service.mjs +105 -0
- package/esm2022/boot/config/apps/src/nav-link.directive.mjs +45 -0
- package/esm2022/boot/config/apps/src/nav.service.mjs +675 -0
- package/esm2022/boot/config/apps/src/route-close.service.mjs +19 -0
- package/esm2022/boot/config/apps/src/safe-navigate.mjs +50 -0
- package/esm2022/boot/config/apps/src/tab-aware-url-serializer.mjs +50 -0
- package/esm2022/boot/config/plugins/src/getNgZone.mjs +13 -5
- package/esm2022/boot/host/src/app.component.mjs +1 -2
- package/esm2022/boot/host/src/bootstrap.mjs +22 -7
- package/esm2022/boot/mfe/src/app.component.mjs +143 -39
- package/esm2022/boot/mfe/src/bootstrap.mjs +197 -20
- package/esm2022/boot/mfe/src/isolated-location-strategy.mjs +142 -0
- package/esm2022/keycloak/src/auth.interceptor.mjs +17 -2
- package/esm2022/provider/src/prodiveHost.mjs +3 -5
- package/esm2022/provider/src/prodiveHostRouter.mjs +88 -9
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +81 -19
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +6 -4
- package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +6 -4
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +422 -20
- package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +24 -35
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +6 -4
- package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +85 -27
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +3 -3
- package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +86 -0
- package/esm2022/theme/layout/service/tab-session.service.mjs +126 -0
- package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +15 -7
- package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +29 -9
- package/fesm2022/aril-app.component-s14ruALV.mjs +183 -0
- package/fesm2022/aril-app.component-s14ruALV.mjs.map +1 -0
- package/fesm2022/aril-boot-bridge.mjs +35 -4
- package/fesm2022/aril-boot-bridge.mjs.map +1 -1
- package/fesm2022/aril-boot-config-api.mjs +11 -2
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +1678 -10
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +12 -4
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +21 -7
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/aril-boot-mfe-app.component-a34GeuUv.mjs +183 -0
- package/fesm2022/aril-boot-mfe-app.component-a34GeuUv.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-KFO_X7yR.mjs +631 -0
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-KFO_X7yR.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +5 -3
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +16 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +90 -12
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +2630 -2017
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-ref-value.mjs +14 -6
- package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
- package/fesm2022/aril-util-sync-active-tab-route.mjs +28 -8
- package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
- package/fesm2022/aril.mjs +354 -25
- package/fesm2022/aril.mjs.map +1 -1
- package/keycloak/src/auth.interceptor.d.ts +7 -0
- package/package.json +216 -216
- package/provider/src/prodiveHost.d.ts +1 -0
- package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +21 -4
- package/theme/layout/app/expandableMenu/expandable-menu.component.html +19 -5
- package/theme/layout/app/expandableMenu/expandable-menu.component.ts +69 -9
- package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html +1 -0
- package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts +3 -1
- package/theme/layout/app/general-search/general-search.component.html +2 -1
- package/theme/layout/app/general-search/general-search.component.ts +2 -2
- package/theme/layout/app/history/history-sidebar.component.html +3 -1
- package/theme/layout/app/history/history-sidebar.component.ts +3 -1
- package/theme/layout/app/layout/app.layout.component.d.ts +105 -5
- package/theme/layout/app/layout/app.layout.component.html +102 -1
- package/theme/layout/app/layout/app.layout.component.scss +372 -0
- package/theme/layout/app/layout/app.layout.component.ts +452 -13
- package/theme/layout/app/layout/mfe.layout.component.d.ts +7 -5
- package/theme/layout/app/layout/mfe.layout.component.ts +13 -39
- package/theme/layout/app/site-map/site-map-sidebar.component.html +1 -0
- package/theme/layout/app/site-map/site-map-sidebar.component.ts +3 -1
- package/theme/layout/app/static-sidebar/static-sidebar.component.d.ts +26 -5
- package/theme/layout/app/static-sidebar/static-sidebar.component.html +11 -5
- package/theme/layout/app/static-sidebar/static-sidebar.component.ts +68 -13
- package/theme/layout/app/topbar/app.topbar.component.html +0 -1
- package/theme/layout/app/topbar/app.topbar.component.scss +1 -1
- package/theme/layout/service/breadcrumb-publisher.service.d.ts +24 -0
- package/theme/layout/service/breadcrumb-publisher.service.ts +95 -0
- package/theme/layout/service/tab-session.service.d.ts +52 -0
- package/theme/layout/service/tab-session.service.ts +138 -0
- package/theme/styles/layout/_breadcrumb.scss +95 -0
- package/theme/styles/layout/_content.scss +2 -2
- package/ui-business/ref-value/src/ref-value.component.d.ts +4 -2
- package/util/sync-active-tab-route/src/sync-active-tab-route.directive.d.ts +15 -2
- package/boot/config/apps/src/reuse-strategy.d.ts +0 -4
- package/esm2022/boot/config/apps/src/reuse-strategy.mjs +0 -9
- package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +0 -107
- package/fesm2022/aril-app.component-wxP3y8dg.mjs +0 -81
- package/fesm2022/aril-app.component-wxP3y8dg.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs +0 -80
- package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs +0 -315
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map +0 -1
- package/theme/layout/app/breadcrumb/app.breadcrumb.component.d.ts +0 -25
- package/theme/layout/app/breadcrumb/app.breadcrumb.component.html +0 -8
- package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +0 -127
|
@@ -136,7 +136,7 @@ export class AppTopbarComponent {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, deps: [{ token: i1.TranslocoService }, { token: i2.PubSubService }, { token: i3.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n", styles: [".layout-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:.5rem;padding:0 1rem;border-bottom:1px solid var(--surface-border, #e5e7eb)}@media (max-width: 768px){.layout-topbar{padding:0 .5rem;gap:.25rem}}.topbar-start{display:flex}.topbar-logo{height:36px;width:auto}@media (max-width: 768px){.topbar-logo{display:none}}.topbar-search{flex:1;max-width:50rem;margin:0 1rem}@media (max-width: 1024px){.topbar-search{max-width:30rem}}@media (max-width: 768px){.topbar-search{max-width:20rem;margin:0 .5rem}}@media (max-width: 480px){.topbar-search{max-width:15rem;margin:0 .25rem}}.topbar-search .p-input-icon-left{width:100%}.topbar-end{flex-shrink:0}.topbar-menu{display:flex;align-items:center;gap:.5rem;margin:0;padding:0;list-style:none}@media (max-width: 768px){.topbar-menu{gap:.25rem}}@media (max-width: 480px){.topbar-menu{gap:.1rem}}.topbar-menu-item{display:flex;align-items:center}@media (max-width: 1024px){.desktop-only{display:none!important}}.mobile-only{display:none!important}@media (max-width: 1024px){.mobile-only{display:flex!important}}.custom-dropdown .p-dropdown{border-radius:50px;padding:.5rem 1rem;border:1px solid #c8c8c8;background-color:#f4f4f4}@media (max-width: 768px){.custom-dropdown .p-dropdown{padding:.4rem .8rem}}@media (max-width: 480px){.custom-dropdown .p-dropdown{padding:.3rem .6rem}}.custom-dropdown .p-dropdown-label{padding:0;line-height:1.5}.custom-dropdown .p-dropdown-trigger{border-radius:50px}.flag-icon{width:18px;height:18px;display:inline-block;vertical-align:middle}@media (max-width: 768px){.flag-icon{width:16px;height:16px}}@media (max-width: 480px){.language-text{display:none}}@media (max-width: 768px){.topbar-menubutton{padding:.4rem!important}}@media (max-width: 480px){.topbar-menubutton{padding:.3rem!important}}@media (max-width: 768px){.topbar-menu-item p-button{min-width:auto}.topbar-menu-item p-button .p-button-icon{margin:0}.topbar-menu-item p-button .p-button-label{font-size:.9rem}}@media (max-width: 480px){.topbar-menu-item p-button .p-button-label{font-size:.8rem}.topbar-menu-item p-divider{display:none}}.notification-icon{cursor:pointer;padding:.2rem;border-radius:50%;transition:background-color .2s}.notification-icon:hover{background-color:var(--surface-hover)}@media (max-width: 480px){.notification-icon{font-size:.9rem;padding:.4rem}}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i7.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i8.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i9.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: GeneralSearchComponent, selector: "app-general-search" }] }); }
|
|
140
140
|
}
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
@@ -150,9 +150,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
150
150
|
DropdownModule,
|
|
151
151
|
TranslocoModule,
|
|
152
152
|
GeneralSearchComponent
|
|
153
|
-
], template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n
|
|
153
|
+
], template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n", styles: [".layout-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:.5rem;padding:0 1rem;border-bottom:1px solid var(--surface-border, #e5e7eb)}@media (max-width: 768px){.layout-topbar{padding:0 .5rem;gap:.25rem}}.topbar-start{display:flex}.topbar-logo{height:36px;width:auto}@media (max-width: 768px){.topbar-logo{display:none}}.topbar-search{flex:1;max-width:50rem;margin:0 1rem}@media (max-width: 1024px){.topbar-search{max-width:30rem}}@media (max-width: 768px){.topbar-search{max-width:20rem;margin:0 .5rem}}@media (max-width: 480px){.topbar-search{max-width:15rem;margin:0 .25rem}}.topbar-search .p-input-icon-left{width:100%}.topbar-end{flex-shrink:0}.topbar-menu{display:flex;align-items:center;gap:.5rem;margin:0;padding:0;list-style:none}@media (max-width: 768px){.topbar-menu{gap:.25rem}}@media (max-width: 480px){.topbar-menu{gap:.1rem}}.topbar-menu-item{display:flex;align-items:center}@media (max-width: 1024px){.desktop-only{display:none!important}}.mobile-only{display:none!important}@media (max-width: 1024px){.mobile-only{display:flex!important}}.custom-dropdown .p-dropdown{border-radius:50px;padding:.5rem 1rem;border:1px solid #c8c8c8;background-color:#f4f4f4}@media (max-width: 768px){.custom-dropdown .p-dropdown{padding:.4rem .8rem}}@media (max-width: 480px){.custom-dropdown .p-dropdown{padding:.3rem .6rem}}.custom-dropdown .p-dropdown-label{padding:0;line-height:1.5}.custom-dropdown .p-dropdown-trigger{border-radius:50px}.flag-icon{width:18px;height:18px;display:inline-block;vertical-align:middle}@media (max-width: 768px){.flag-icon{width:16px;height:16px}}@media (max-width: 480px){.language-text{display:none}}@media (max-width: 768px){.topbar-menubutton{padding:.4rem!important}}@media (max-width: 480px){.topbar-menubutton{padding:.3rem!important}}@media (max-width: 768px){.topbar-menu-item p-button{min-width:auto}.topbar-menu-item p-button .p-button-icon{margin:0}.topbar-menu-item p-button .p-button-label{font-size:.9rem}}@media (max-width: 480px){.topbar-menu-item p-button .p-button-label{font-size:.8rem}.topbar-menu-item p-divider{display:none}}.notification-icon{cursor:pointer;padding:.2rem;border-radius:50%;transition:background-color .2s}.notification-icon:hover{background-color:var(--surface-hover)}@media (max-width: 480px){.notification-icon{font-size:.9rem;padding:.4rem}}\n"] }]
|
|
154
154
|
}], ctorParameters: () => [{ type: i1.TranslocoService }, { type: i2.PubSubService }, { type: i3.KeycloakService }], propDecorators: { menuButton: [{
|
|
155
155
|
type: ViewChild,
|
|
156
156
|
args: ['menubutton']
|
|
157
157
|
}] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3RvcGJhci9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7OztBQW1CcEYs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QUFDLE9BQU8sQ0FBQztnQkFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHO29CQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1AsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO29CQUM5QyxNQUFNO2dCQUNQO29CQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDaEQsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDOzhHQXRJVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnTEN2Qy9CLCttR0FxRkEsdTFFRDNERSxZQUFZLGdlQUNaLGFBQWEsaURBQ2IsV0FBVyw4VkFDWCxhQUFhLDBKQUNiLFdBQVcsME1BQ1gsYUFBYSw4QkFDYixjQUFjLDJxQ0FDZCxlQUFlLGlPQUNmLHNCQUFzQjs7MkZBS1gsa0JBQWtCO2tCQWpCOUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sWUFBWSxXQUNiO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3RCOytJQUt3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgUHViU3ViU2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9wdWItc3ViJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9lbnVtJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2UsIExhbmd1YWdlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmFsLXNlYXJjaC9nZW5lcmFsLXNlYXJjaC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC10b3BiYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEJ1dHRvbk1vZHVsZSxcclxuXHRcdFVwcGVyQ2FzZVBpcGUsXHJcblx0XHRGb3Jtc01vZHVsZSxcclxuXHRcdERpdmlkZXJNb2R1bGUsXHJcblx0XHRCYWRnZU1vZHVsZSxcclxuXHRcdE1lbnViYXJNb2R1bGUsXHJcblx0XHREcm9wZG93bk1vZHVsZSxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdEdlbmVyYWxTZWFyY2hDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvcGJhckNvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVCdXR0b24hOiBFbGVtZW50UmVmO1xyXG5cclxuXHR1c2VybmFtZSE6IHN0cmluZztcclxuXHRsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xyXG5cdHNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cdGxvZ29QYXRoOiBzdHJpbmcgPSAnJztcclxuXHRjdXJyZW50RmxhZ1BhdGg6IHN0cmluZyA9ICcnO1xyXG5cdGN1cnJlbnRMYW5nOiBMYW5ndWFnZUNvZGUgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSBhcyBMYW5ndWFnZUNvZGUpIHx8IExhbmd1YWdlQ29kZS5UUjtcclxuXHJcblx0bGFuZ3VhZ2VzOiBMYW5ndWFnZVtdID0gW1xyXG5cdFx0eyBuYW1lOiAnVFInLCBjb2RlOiBMYW5ndWFnZUNvZGUuVFIsIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2ZycgfSxcclxuXHRcdHsgbmFtZTogJ0VOJywgY29kZTogTGFuZ3VhZ2VDb2RlLkVOLCBmbGFnOiAnYXNzZXRzL2ltYWdlcy9mbGFncy9nYi5zdmcnIH1cclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcHViU3ViU2VydmljZTogUHViU3ViU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnB1Ymxpc2hMYW5ndWFnZUNoYW5nZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMuc2V0RmxhZ1BhdGgodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnNldExvZ29QYXRoKCk7XHJcblxyXG5cdFx0dGhpcy51c2VybmFtZSA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKTtcclxuXHR9XHJcblxyXG5cdGdldCB1bnJlYWRDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5nZXRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG5cdH1cclxuXHJcblx0b25NZW51QnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25NZW51VG9nZ2xlKCk7XHJcblx0fVxyXG5cclxuXHRvblByb2ZpbGVCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93UHJvZmlsZVNpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uSGlzdG9yeUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dIaXN0b3J5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25TaXRlTWFwQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd1NpdGVNYXBTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93RmF2b3JpdGVQYWdlc1NpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dOb3RpZmljYXRpb25zU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25MYW5ndWFnZUNoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgdGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuXHRcdHRoaXMucHVibGlzaExhbmd1YWdlQ2hhbmdlKHRoaXMuY3VycmVudExhbmcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwdWJsaXNoTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXZlbnQ6IExhbmd1YWdlQ2hhbmdlRXZlbnQgPSB7XHJcblx0XHRcdG5hbWU6ICdsYW5ndWFnZUNoYW5nZWQnLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0cGF0aDogJycsXHJcblx0XHRcdFx0Y3VzdG9tOiB7XHJcblx0XHRcdFx0XHRsYW5ndWFnZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnB1YlN1YlNlcnZpY2UucHVibGlzaChldmVudCk7XHJcblx0fVxyXG5cclxuXHRzZXRGbGFnUGF0aChsYW5nOiBMYW5ndWFnZUNvZGUpIHtcclxuXHRcdHN3aXRjaCAobGFuZykge1xyXG5cdFx0XHRjYXNlIExhbmd1YWdlQ29kZS5UUjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgTGFuZ3VhZ2VDb2RlLkVOOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvZ2Iuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRMb2dvUGF0aCgpIHtcclxuXHRcdGNvbnN0IGFjdGl2ZUhvc3QgPSBicmlkZ2UuYWN0aXZlSG9zdCgpO1xyXG5cdFx0Y29uc3QgYWN0aXZlTUYgPSBicmlkZ2UuYWN0aXZlTUYoKTtcclxuXHRcdGlmIChhY3RpdmVIb3N0KSB7XHJcblx0XHRcdHN3aXRjaCAoYWN0aXZlSG9zdCkge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3llYXAtbG9nby1kYXJrLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkxFTkE6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMvbGVuYS1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3dpdGNoIChhY3RpdmVNRikge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuU0lTOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2xlbmEtbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuUEFZTUVOVDpcclxuXHRcdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkRNUzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLnBuZyc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLXN0YXJ0XCI+XHJcblx0XHQ8YnV0dG9uICNtZW51YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRvcGJhci1tZW51YnV0dG9uIHAtbGluayBwLXRyaWdnZXJcIiAoY2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soKVwiPlxyXG5cdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJhcnNcIj48L2k+XHJcblx0XHQ8L2J1dHRvbj5cclxuXHRcdDxpbWcgW3NyY109XCJsb2dvUGF0aFwiIGNsYXNzPVwidG9wYmFyLWxvZ29cIiBhbHQ9XCJsb2dvXCIgLz5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRvcGJhci1zZWFyY2hcIiAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICcnXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcblx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cdFx0XHQ8YXBwLWdlbmVyYWwtc2VhcmNoPjwvYXBwLWdlbmVyYWwtc2VhcmNoPlxyXG5cdFx0PC9zcGFuPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLWVuZCBtci0yXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJ0b3BiYXItbWVudVwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktc2l0ZW1hcFwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uU2l0ZU1hcEJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGlzdG9yeVwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uSGlzdG9yeUJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGVhcnRcIlxyXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRbcm91bmRlZF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpXCIgLz5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b24gc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiBbdGV4dF09XCJ0cnVlXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIChjbGljayk9XCJvblByb2ZpbGVCdXR0b25DbGljaygpXCI+XHJcblx0XHRcdFx0XHR7eyB1c2VybmFtZVswXSB8IHVwcGVyY2FzZSB9fVxyXG5cdFx0XHRcdDwvcC1idXR0b24+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCIgc3R5bGVDbGFzcz1cImgtMXJlbSBib3JkZXItNTAwIG0tMFwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1iZWxsIG5vdGlmaWNhdGlvbi1pY29uXCJcclxuXHRcdFx0XHRcdHBCYWRnZVxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cInVucmVhZENvdW50ID4gMCA/IHVucmVhZENvdW50LnRvU3RyaW5nKCkgOiAnMCdcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKClcIj48L2k+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwibGFuZ3VhZ2VzXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudExhbmdcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG5cdFx0XHRcdFx0b3B0aW9uVmFsdWU9XCJjb2RlXCJcclxuXHRcdFx0XHRcdFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjdXN0b20tZHJvcGRvd24gbWwtM1wiPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIFtzcmNdPVwiY3VycmVudEZsYWdQYXRoXCIgY2xhc3M9XCJmbGFnLWljb25cIiBhbHQ9XCJmbGFnXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhbmd1YWdlLXRleHRcIj57eyBjdXJyZW50TGFuZyB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBbc3JjXT1cIml0ZW0uZmxhZ1wiIGNsYXNzPVwiZmxhZy1pY29uXCIgYWx0PVwiZmxhZ1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLWRyb3Bkb3duPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0PC91bD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIDxhcHAtYnJlYWRjcnVtYiBjbGFzcz1cInRvcGJhci1icmVhZGNydW1iXCI+PC9hcHAtYnJlYWRjcnVtYj4gLS0+XHJcbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3RvcGJhci9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7OztBQW1CcEYs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QUFDLE9BQU8sQ0FBQztnQkFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHO29CQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1AsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO29CQUM5QyxNQUFNO2dCQUNQO29CQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDaEQsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDOzhHQXRJVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnTEN2Qy9CLHFpR0FvRkEsKzJFRDFERSxZQUFZLGdlQUNaLGFBQWEsaURBQ2IsV0FBVyw4VkFDWCxhQUFhLDBKQUNiLFdBQVcsME1BQ1gsYUFBYSw4QkFDYixjQUFjLDJxQ0FDZCxlQUFlLGlPQUNmLHNCQUFzQjs7MkZBS1gsa0JBQWtCO2tCQWpCOUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sWUFBWSxXQUNiO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3RCOytJQUt3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgUHViU3ViU2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9wdWItc3ViJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9lbnVtJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2UsIExhbmd1YWdlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmFsLXNlYXJjaC9nZW5lcmFsLXNlYXJjaC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC10b3BiYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEJ1dHRvbk1vZHVsZSxcclxuXHRcdFVwcGVyQ2FzZVBpcGUsXHJcblx0XHRGb3Jtc01vZHVsZSxcclxuXHRcdERpdmlkZXJNb2R1bGUsXHJcblx0XHRCYWRnZU1vZHVsZSxcclxuXHRcdE1lbnViYXJNb2R1bGUsXHJcblx0XHREcm9wZG93bk1vZHVsZSxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdEdlbmVyYWxTZWFyY2hDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvcGJhckNvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVCdXR0b24hOiBFbGVtZW50UmVmO1xyXG5cclxuXHR1c2VybmFtZSE6IHN0cmluZztcclxuXHRsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xyXG5cdHNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cdGxvZ29QYXRoOiBzdHJpbmcgPSAnJztcclxuXHRjdXJyZW50RmxhZ1BhdGg6IHN0cmluZyA9ICcnO1xyXG5cdGN1cnJlbnRMYW5nOiBMYW5ndWFnZUNvZGUgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSBhcyBMYW5ndWFnZUNvZGUpIHx8IExhbmd1YWdlQ29kZS5UUjtcclxuXHJcblx0bGFuZ3VhZ2VzOiBMYW5ndWFnZVtdID0gW1xyXG5cdFx0eyBuYW1lOiAnVFInLCBjb2RlOiBMYW5ndWFnZUNvZGUuVFIsIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2ZycgfSxcclxuXHRcdHsgbmFtZTogJ0VOJywgY29kZTogTGFuZ3VhZ2VDb2RlLkVOLCBmbGFnOiAnYXNzZXRzL2ltYWdlcy9mbGFncy9nYi5zdmcnIH1cclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcHViU3ViU2VydmljZTogUHViU3ViU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnB1Ymxpc2hMYW5ndWFnZUNoYW5nZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMuc2V0RmxhZ1BhdGgodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnNldExvZ29QYXRoKCk7XHJcblxyXG5cdFx0dGhpcy51c2VybmFtZSA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKTtcclxuXHR9XHJcblxyXG5cdGdldCB1bnJlYWRDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5nZXRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG5cdH1cclxuXHJcblx0b25NZW51QnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25NZW51VG9nZ2xlKCk7XHJcblx0fVxyXG5cclxuXHRvblByb2ZpbGVCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93UHJvZmlsZVNpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uSGlzdG9yeUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dIaXN0b3J5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25TaXRlTWFwQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd1NpdGVNYXBTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93RmF2b3JpdGVQYWdlc1NpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dOb3RpZmljYXRpb25zU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25MYW5ndWFnZUNoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgdGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuXHRcdHRoaXMucHVibGlzaExhbmd1YWdlQ2hhbmdlKHRoaXMuY3VycmVudExhbmcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwdWJsaXNoTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXZlbnQ6IExhbmd1YWdlQ2hhbmdlRXZlbnQgPSB7XHJcblx0XHRcdG5hbWU6ICdsYW5ndWFnZUNoYW5nZWQnLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0cGF0aDogJycsXHJcblx0XHRcdFx0Y3VzdG9tOiB7XHJcblx0XHRcdFx0XHRsYW5ndWFnZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnB1YlN1YlNlcnZpY2UucHVibGlzaChldmVudCk7XHJcblx0fVxyXG5cclxuXHRzZXRGbGFnUGF0aChsYW5nOiBMYW5ndWFnZUNvZGUpIHtcclxuXHRcdHN3aXRjaCAobGFuZykge1xyXG5cdFx0XHRjYXNlIExhbmd1YWdlQ29kZS5UUjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgTGFuZ3VhZ2VDb2RlLkVOOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvZ2Iuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRMb2dvUGF0aCgpIHtcclxuXHRcdGNvbnN0IGFjdGl2ZUhvc3QgPSBicmlkZ2UuYWN0aXZlSG9zdCgpO1xyXG5cdFx0Y29uc3QgYWN0aXZlTUYgPSBicmlkZ2UuYWN0aXZlTUYoKTtcclxuXHRcdGlmIChhY3RpdmVIb3N0KSB7XHJcblx0XHRcdHN3aXRjaCAoYWN0aXZlSG9zdCkge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3llYXAtbG9nby1kYXJrLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkxFTkE6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMvbGVuYS1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3dpdGNoIChhY3RpdmVNRikge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuU0lTOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2xlbmEtbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuUEFZTUVOVDpcclxuXHRcdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkRNUzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLnBuZyc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLXN0YXJ0XCI+XHJcblx0XHQ8YnV0dG9uICNtZW51YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRvcGJhci1tZW51YnV0dG9uIHAtbGluayBwLXRyaWdnZXJcIiAoY2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soKVwiPlxyXG5cdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJhcnNcIj48L2k+XHJcblx0XHQ8L2J1dHRvbj5cclxuXHRcdDxpbWcgW3NyY109XCJsb2dvUGF0aFwiIGNsYXNzPVwidG9wYmFyLWxvZ29cIiBhbHQ9XCJsb2dvXCIgLz5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRvcGJhci1zZWFyY2hcIiAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICcnXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcblx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cdFx0XHQ8YXBwLWdlbmVyYWwtc2VhcmNoPjwvYXBwLWdlbmVyYWwtc2VhcmNoPlxyXG5cdFx0PC9zcGFuPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLWVuZCBtci0yXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJ0b3BiYXItbWVudVwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktc2l0ZW1hcFwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uU2l0ZU1hcEJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGlzdG9yeVwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uSGlzdG9yeUJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGVhcnRcIlxyXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRbcm91bmRlZF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpXCIgLz5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b24gc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiBbdGV4dF09XCJ0cnVlXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIChjbGljayk9XCJvblByb2ZpbGVCdXR0b25DbGljaygpXCI+XHJcblx0XHRcdFx0XHR7eyB1c2VybmFtZVswXSB8IHVwcGVyY2FzZSB9fVxyXG5cdFx0XHRcdDwvcC1idXR0b24+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCIgc3R5bGVDbGFzcz1cImgtMXJlbSBib3JkZXItNTAwIG0tMFwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1iZWxsIG5vdGlmaWNhdGlvbi1pY29uXCJcclxuXHRcdFx0XHRcdHBCYWRnZVxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cInVucmVhZENvdW50ID4gMCA/IHVucmVhZENvdW50LnRvU3RyaW5nKCkgOiAnMCdcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKClcIj48L2k+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwibGFuZ3VhZ2VzXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudExhbmdcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG5cdFx0XHRcdFx0b3B0aW9uVmFsdWU9XCJjb2RlXCJcclxuXHRcdFx0XHRcdFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjdXN0b20tZHJvcGRvd24gbWwtM1wiPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIFtzcmNdPVwiY3VycmVudEZsYWdQYXRoXCIgY2xhc3M9XCJmbGFnLWljb25cIiBhbHQ9XCJmbGFnXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhbmd1YWdlLXRleHRcIj57eyBjdXJyZW50TGFuZyB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBbc3JjXT1cIml0ZW0uZmxhZ1wiIGNsYXNzPVwiZmxhZy1pY29uXCIgYWx0PVwiZmxhZ1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLWRyb3Bkb3duPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0PC91bD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Injectable, effect, inject } from '@angular/core';
|
|
2
|
+
import { NavigationEnd, Router } from '@angular/router';
|
|
3
|
+
import { filter } from 'rxjs';
|
|
4
|
+
import { bridge } from 'aril/boot/bridge';
|
|
5
|
+
import { PubSubService } from 'aril/util/pub-sub';
|
|
6
|
+
import { BreadcrumbService } from './breadcrumb.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* MFE-side route ağacını dolaşıp aktif route zincirinin breadcrumb listesini
|
|
10
|
+
* `bridge.breadcrumbs` signal'ine yazar. Shell layout bu signal'i okuyup
|
|
11
|
+
* breadcrumb şeridini render eder; presenter shell'de, source-of-truth MFE'de.
|
|
12
|
+
*
|
|
13
|
+
* Eski `<app-breadcrumb>` component'inin logic'i bu service'e taşınmıştır.
|
|
14
|
+
* Geriye dönük uyumluluk için `breadcrumbUpdated` PubSub event'i hâlâ yayınlanır
|
|
15
|
+
* (history.service abone).
|
|
16
|
+
*/
|
|
17
|
+
export class BreadcrumbPublisherService {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.router = inject(Router);
|
|
20
|
+
this.breadcrumbService = inject(BreadcrumbService);
|
|
21
|
+
this.pubSubService = inject(PubSubService);
|
|
22
|
+
this.routerSubscription = this.router.events
|
|
23
|
+
.pipe(filter((event) => event instanceof NavigationEnd))
|
|
24
|
+
.subscribe(() => this.publishFromCurrentRoute());
|
|
25
|
+
effect(() => {
|
|
26
|
+
// keyValues sinyalini dinle; dinamik breadcrumb (örn. "{customerId}")
|
|
27
|
+
// değerleri sonradan geldikçe listeyi yeniden yayınla.
|
|
28
|
+
this.breadcrumbService.keyValues();
|
|
29
|
+
this.publishFromCurrentRoute();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
this.routerSubscription?.unsubscribe();
|
|
34
|
+
}
|
|
35
|
+
publishFromCurrentRoute() {
|
|
36
|
+
const root = this.router.routerState.snapshot.root;
|
|
37
|
+
const breadcrumbs = [];
|
|
38
|
+
this.collect(root, [], breadcrumbs);
|
|
39
|
+
this.publish(breadcrumbs);
|
|
40
|
+
}
|
|
41
|
+
collect(route, parentUrl, breadcrumbs) {
|
|
42
|
+
const routeUrl = parentUrl.concat(route.url.map((url) => url.path));
|
|
43
|
+
const breadcrumb = route.data['breadcrumb'];
|
|
44
|
+
const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;
|
|
45
|
+
if (breadcrumb && breadcrumb !== parentBreadcrumb) {
|
|
46
|
+
const template = breadcrumb;
|
|
47
|
+
// Tüm `{key}` placeholder'larını sırayla resolve et — global regex.
|
|
48
|
+
// Eskiden tek placeholder regex'i (`exec`) ile yalnız ilk key alınıyordu;
|
|
49
|
+
// `'Customer {customerId} - Service {servicePointId}'` formatında `servicePointId`
|
|
50
|
+
// literal kalıyordu. Resolve olmayan key için `'...'` placeholder döner; statik
|
|
51
|
+
// kısımlar korunur (önceden tüm label `'...'`'a düşüyordu).
|
|
52
|
+
const label = template.replace(/\{([^}]+)\}/g, (_, key) => {
|
|
53
|
+
const value = this.breadcrumbService.getValue(key);
|
|
54
|
+
return value !== undefined && value !== null && value !== '' ? String(value) : '...';
|
|
55
|
+
});
|
|
56
|
+
breadcrumbs.push({ label, url: '/' + routeUrl.join('/') });
|
|
57
|
+
}
|
|
58
|
+
if (route.firstChild) {
|
|
59
|
+
this.collect(route.firstChild, routeUrl, breadcrumbs);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
publish(breadcrumbs) {
|
|
63
|
+
bridge.breadcrumbs.set(breadcrumbs);
|
|
64
|
+
const lastLabel = breadcrumbs[breadcrumbs.length - 1]?.label ?? '';
|
|
65
|
+
if (bridge.pageTitle() || lastLabel) {
|
|
66
|
+
bridge.pageTitle.set(lastLabel);
|
|
67
|
+
}
|
|
68
|
+
this.pubSubService.publish({
|
|
69
|
+
name: 'breadcrumbUpdated',
|
|
70
|
+
data: {
|
|
71
|
+
path: this.router.url,
|
|
72
|
+
custom: {
|
|
73
|
+
breadcrumbs,
|
|
74
|
+
pageTitle: lastLabel
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbPublisherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
80
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbPublisherService, providedIn: 'root' }); }
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbPublisherService, decorators: [{
|
|
83
|
+
type: Injectable,
|
|
84
|
+
args: [{ providedIn: 'root' }]
|
|
85
|
+
}], ctorParameters: () => [] });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1wdWJsaXNoZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L3NlcnZpY2UvYnJlYWRjcnVtYi1wdWJsaXNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEYsT0FBTyxFQUFnQixNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUMsT0FBTyxFQUFjLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFekQ7Ozs7Ozs7O0dBUUc7QUFFSCxNQUFNLE9BQU8sMEJBQTBCO0lBT3RDO1FBTmlCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFLdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQUM7YUFDdkQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUM7UUFFbEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLHNFQUFzRTtZQUN0RSx1REFBdUQ7WUFDdkQs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TCxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO2dCQUNyQixNQUFNLEVBQUU7b0JBQ1AsV0FBVztvQkFDWCxTQUFTLEVBQUUsU0FBUztpQkFDcEI7YUFDRDtTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7OEdBekVXLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRGIsTUFBTTs7MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQnJlYWRjcnVtYiwgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IFB1YlN1YlNlcnZpY2UgfSBmcm9tICdhcmlsL3V0aWwvcHViLXN1Yic7XHJcblxyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4vYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBNRkUtc2lkZSByb3V0ZSBhxJ9hY8SxbsSxIGRvbGHFn8SxcCBha3RpZiByb3V0ZSB6aW5jaXJpbmluIGJyZWFkY3J1bWIgbGlzdGVzaW5pXHJcbiAqIGBicmlkZ2UuYnJlYWRjcnVtYnNgIHNpZ25hbCdpbmUgeWF6YXIuIFNoZWxsIGxheW91dCBidSBzaWduYWwnaSBva3V5dXBcclxuICogYnJlYWRjcnVtYiDFn2VyaWRpbmkgcmVuZGVyIGVkZXI7IHByZXNlbnRlciBzaGVsbCdkZSwgc291cmNlLW9mLXRydXRoIE1GRSdkZS5cclxuICpcclxuICogRXNraSBgPGFwcC1icmVhZGNydW1iPmAgY29tcG9uZW50J2luaW4gbG9naWMnaSBidSBzZXJ2aWNlJ2UgdGHFn8Sxbm3EscWfdMSxci5cclxuICogR2VyaXllIGTDtm7DvGsgdXl1bWx1bHVrIGnDp2luIGBicmVhZGNydW1iVXBkYXRlZGAgUHViU3ViIGV2ZW50J2kgaMOibMOiIHlhecSxbmxhbsSxclxyXG4gKiAoaGlzdG9yeS5zZXJ2aWNlIGFib25lKS5cclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iUHVibGlzaGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJTZXJ2aWNlID0gaW5qZWN0KEJyZWFkY3J1bWJTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHB1YlN1YlNlcnZpY2UgPSBpbmplY3QoUHViU3ViU2VydmljZSk7XHJcblxyXG5cdHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0dGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcclxuXHRcdFx0LnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB0aGlzLnB1Ymxpc2hGcm9tQ3VycmVudFJvdXRlKCkpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdC8vIGtleVZhbHVlcyBzaW55YWxpbmkgZGlubGU7IGRpbmFtaWsgYnJlYWRjcnVtYiAow7Zybi4gXCJ7Y3VzdG9tZXJJZH1cIilcclxuXHRcdFx0Ly8gZGXEn2VybGVyaSBzb25yYWRhbiBnZWxkaWvDp2UgbGlzdGV5aSB5ZW5pZGVuIHlhecSxbmxhLlxyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLmtleVZhbHVlcygpO1xyXG5cdFx0XHR0aGlzLnB1Ymxpc2hGcm9tQ3VycmVudFJvdXRlKCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHB1Ymxpc2hGcm9tQ3VycmVudFJvdXRlKCk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XHJcblx0XHRjb25zdCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XHJcblx0XHR0aGlzLmNvbGxlY3Qocm9vdCwgW10sIGJyZWFkY3J1bWJzKTtcclxuXHRcdHRoaXMucHVibGlzaChicmVhZGNydW1icyk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvbGxlY3Qocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHBhcmVudFVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pOiB2b2lkIHtcclxuXHRcdGNvbnN0IHJvdXRlVXJsID0gcGFyZW50VXJsLmNvbmNhdChyb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKSk7XHJcblx0XHRjb25zdCBicmVhZGNydW1iID0gcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG5cdFx0Y29uc3QgcGFyZW50QnJlYWRjcnVtYiA9IHJvdXRlLnBhcmVudCAmJiByb3V0ZS5wYXJlbnQuZGF0YSA/IHJvdXRlLnBhcmVudC5kYXRhWydicmVhZGNydW1iJ10gOiBudWxsO1xyXG5cclxuXHRcdGlmIChicmVhZGNydW1iICYmIGJyZWFkY3J1bWIgIT09IHBhcmVudEJyZWFkY3J1bWIpIHtcclxuXHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBicmVhZGNydW1iIGFzIHN0cmluZztcclxuXHRcdFx0Ly8gVMO8bSBge2tleX1gIHBsYWNlaG9sZGVyJ2xhcsSxbsSxIHPEsXJheWxhIHJlc29sdmUgZXQg4oCUIGdsb2JhbCByZWdleC5cclxuXHRcdFx0Ly8gRXNraWRlbiB0ZWsgcGxhY2Vob2xkZXIgcmVnZXgnaSAoYGV4ZWNgKSBpbGUgeWFsbsSxeiBpbGsga2V5IGFsxLFuxLF5b3JkdTtcclxuXHRcdFx0Ly8gYCdDdXN0b21lciB7Y3VzdG9tZXJJZH0gLSBTZXJ2aWNlIHtzZXJ2aWNlUG9pbnRJZH0nYCBmb3JtYXTEsW5kYSBgc2VydmljZVBvaW50SWRgXHJcblx0XHRcdC8vIGxpdGVyYWwga2FsxLF5b3JkdS4gUmVzb2x2ZSBvbG1heWFuIGtleSBpw6dpbiBgJy4uLidgIHBsYWNlaG9sZGVyIGTDtm5lcjsgc3RhdGlrXHJcblx0XHRcdC8vIGvEsXPEsW1sYXIga29ydW51ciAow7ZuY2VkZW4gdMO8bSBsYWJlbCBgJy4uLidgJ2EgZMO8xZ/DvHlvcmR1KS5cclxuXHRcdFx0Y29uc3QgbGFiZWwgPSB0ZW1wbGF0ZS5yZXBsYWNlKC9cXHsoW159XSspXFx9L2csIChfLCBrZXk6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5icmVhZGNydW1iU2VydmljZS5nZXRWYWx1ZShrZXkpO1xyXG5cdFx0XHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJyA/IFN0cmluZyh2YWx1ZSkgOiAnLi4uJztcclxuXHRcdFx0fSk7XHJcblx0XHRcdGJyZWFkY3J1bWJzLnB1c2goeyBsYWJlbCwgdXJsOiAnLycgKyByb3V0ZVVybC5qb2luKCcvJykgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcclxuXHRcdFx0dGhpcy5jb2xsZWN0KHJvdXRlLmZpcnN0Q2hpbGQsIHJvdXRlVXJsLCBicmVhZGNydW1icyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHB1Ymxpc2goYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSk6IHZvaWQge1xyXG5cdFx0YnJpZGdlLmJyZWFkY3J1bWJzLnNldChicmVhZGNydW1icyk7XHJcblxyXG5cdFx0Y29uc3QgbGFzdExhYmVsID0gYnJlYWRjcnVtYnNbYnJlYWRjcnVtYnMubGVuZ3RoIC0gMV0/LmxhYmVsID8/ICcnO1xyXG5cdFx0aWYgKGJyaWRnZS5wYWdlVGl0bGUoKSB8fCBsYXN0TGFiZWwpIHtcclxuXHRcdFx0YnJpZGdlLnBhZ2VUaXRsZS5zZXQobGFzdExhYmVsKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnB1YlN1YlNlcnZpY2UucHVibGlzaCh7XHJcblx0XHRcdG5hbWU6ICdicmVhZGNydW1iVXBkYXRlZCcsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRwYXRoOiB0aGlzLnJvdXRlci51cmwsXHJcblx0XHRcdFx0Y3VzdG9tOiB7XHJcblx0XHRcdFx0XHRicmVhZGNydW1icyxcclxuXHRcdFx0XHRcdHBhZ2VUaXRsZTogbGFzdExhYmVsXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Injectable, Injector, effect, inject } from '@angular/core';
|
|
2
|
+
import { KeycloakService } from 'keycloak-angular';
|
|
3
|
+
import { NavService } from 'aril/boot/config/apps';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Sabitlenmiş (pinned) tab'ları kullanıcı bazlı `localStorage` anahtarında kalıcı
|
|
7
|
+
* kılar. F5 / yeniden login / yeni sekme açılışında pinned tab'lar geri yüklenir;
|
|
8
|
+
* non-pinned tab'lar saklanmaz.
|
|
9
|
+
*
|
|
10
|
+
* **Akış**: `AppLayoutComponent` constructor'da (menü/home provider'ları set
|
|
11
|
+
* edildikten SONRA) `restore()` SENKRON çağrılır → pinned'ler `NavService.activeRoutes`'a
|
|
12
|
+
* eklenir → save effect armlanır. Save effect `restore()` ÖNCESİ kurulmaz; aksi
|
|
13
|
+
* halde Angular effect'in ilk (eager) tick'i boş `activeRoutes`'u yazıp saklı
|
|
14
|
+
* pinned'leri silerdi.
|
|
15
|
+
*
|
|
16
|
+
* **Duplicate önlemi**: Aktif tab pinned'di ise restore SAKLI `tabId` ile ekler;
|
|
17
|
+
* F5 sonrası korunan `history.state._tab` bununla eşleşir → handler türetmez, sadece
|
|
18
|
+
* focus eder. Aktif tab pinned değildiyse eşleşme olmaz → handler gelen URL'i yeni
|
|
19
|
+
* aktif tab olarak ekler (deep-link gereksinimi: "kayıtlıları yükle + URL'i ekle").
|
|
20
|
+
*/
|
|
21
|
+
export class TabSessionService {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.navService = inject(NavService);
|
|
24
|
+
this.keycloak = inject(KeycloakService);
|
|
25
|
+
this.injector = inject(Injector);
|
|
26
|
+
this.STORAGE_PREFIX = 'tab-session:';
|
|
27
|
+
/** `NavService.MAX_TABS` ile aynı tavan — restore ve save iki tarafta da sınırlanır. */
|
|
28
|
+
this.MAX_PERSISTED = 20;
|
|
29
|
+
this.restored = false;
|
|
30
|
+
/** Son yazılan payload — değişmediyse gereksiz `localStorage` write'ı atlanır. */
|
|
31
|
+
this.lastWritten = '';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Kullanıcı bazlı storage anahtarı. Mevcut kod (`app.profilesidebar.component.ts`)
|
|
35
|
+
* `idTokenParsed.sub` kullanıyor; her iki token şeklini de kapsamak için fallback
|
|
36
|
+
* zinciri — kullanıcı çözülemezse `anonymous`.
|
|
37
|
+
*/
|
|
38
|
+
storageKey() {
|
|
39
|
+
const kc = this.keycloak.getKeycloakInstance();
|
|
40
|
+
const sub = kc?.tokenParsed?.sub ?? kc?.idTokenParsed?.sub ?? 'anonymous';
|
|
41
|
+
return this.STORAGE_PREFIX + sub;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* SENKRON restore. `AppLayoutComponent` constructor'dan, ilk `NavigationEnd`
|
|
45
|
+
* işlenmeden ÖNCE çağrılmalı — böylece `NavService.activeRoute` handler'ının
|
|
46
|
+
* `knownTab` guard'ı restore edilen tabId'leri görür. Idempotent: ikinci çağrı no-op.
|
|
47
|
+
*/
|
|
48
|
+
restore() {
|
|
49
|
+
if (this.restored)
|
|
50
|
+
return;
|
|
51
|
+
const persisted = this.load();
|
|
52
|
+
const existingIds = new Set(this.navService.activeRoutes().map((t) => t.tabId));
|
|
53
|
+
for (const item of persisted) {
|
|
54
|
+
// Aynı tabId zaten ekliyse atla (idempotency / olası çift çağrı koruması).
|
|
55
|
+
if (existingIds.has(item.tabId))
|
|
56
|
+
continue;
|
|
57
|
+
this.navService.addToActiveRoutes({
|
|
58
|
+
tabId: item.tabId,
|
|
59
|
+
navLink: item.navLink,
|
|
60
|
+
navName: item.navName,
|
|
61
|
+
icon: item.icon,
|
|
62
|
+
pinned: true
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
this.restored = true;
|
|
66
|
+
this.armSave();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Save effect'ini `restore()` SONRASI kurar. İlk çalıştığında `activeRoutes` zaten
|
|
70
|
+
* restore edilmiş pinned'leri içerdiği için yazım idempotent kalır. Effect, service'in
|
|
71
|
+
* kendi `Injector`'ına bağlanır (field initializer / constructor dışında kurulduğu için
|
|
72
|
+
* explicit injector zorunlu).
|
|
73
|
+
*/
|
|
74
|
+
armSave() {
|
|
75
|
+
effect(() => {
|
|
76
|
+
const pinned = this.navService.activeRoutes().filter((t) => t.pinned);
|
|
77
|
+
this.save(pinned);
|
|
78
|
+
}, { injector: this.injector });
|
|
79
|
+
}
|
|
80
|
+
save(pinned) {
|
|
81
|
+
try {
|
|
82
|
+
const payload = pinned
|
|
83
|
+
.slice(0, this.MAX_PERSISTED)
|
|
84
|
+
.map((t) => ({ tabId: t.tabId, navLink: t.navLink, navName: t.navName, icon: t.icon }));
|
|
85
|
+
const serialized = JSON.stringify(payload);
|
|
86
|
+
if (serialized === this.lastWritten)
|
|
87
|
+
return;
|
|
88
|
+
this.lastWritten = serialized;
|
|
89
|
+
localStorage.setItem(this.storageKey(), serialized);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
/* quota / serialize hatası: kritik değil, persist sessizce atlanır */
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
load() {
|
|
96
|
+
try {
|
|
97
|
+
const raw = localStorage.getItem(this.storageKey());
|
|
98
|
+
if (!raw)
|
|
99
|
+
return [];
|
|
100
|
+
const parsed = JSON.parse(raw);
|
|
101
|
+
if (!Array.isArray(parsed))
|
|
102
|
+
return [];
|
|
103
|
+
return parsed.filter((x) => this.isValidPersistedTab(x));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return []; // bozuk JSON → yok say, uygulama normal açılır
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
isValidPersistedTab(x) {
|
|
110
|
+
if (!x || typeof x !== 'object')
|
|
111
|
+
return false;
|
|
112
|
+
const t = x;
|
|
113
|
+
return (typeof t['tabId'] === 'string' &&
|
|
114
|
+
t['tabId'].length > 0 &&
|
|
115
|
+
typeof t['navLink'] === 'string' &&
|
|
116
|
+
t['navLink'].length > 0 &&
|
|
117
|
+
typeof t['navName'] === 'string');
|
|
118
|
+
}
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TabSessionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
120
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TabSessionService, providedIn: 'root' }); }
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TabSessionService, decorators: [{
|
|
123
|
+
type: Injectable,
|
|
124
|
+
args: [{ providedIn: 'root' }]
|
|
125
|
+
}] });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXNlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L3NlcnZpY2UvdGFiLXNlc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBZTVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFa0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUIsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUFDakQsd0ZBQXdGO1FBQ3ZFLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRTVCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDekIsa0ZBQWtGO1FBQzFFLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0tBMEZ6QjtJQXhGQTs7OztPQUlHO0lBQ0ssVUFBVTtRQUNqQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDL0MsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPO1FBQ04sSUFB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LENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1IsT0FBTyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFDM0QsQ0FBQztJQUNGLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxDQUFVO1FBQ3JDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxHQUFHLENBQTRCLENBQUM7UUFDdkMsT0FBTyxDQUNOLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVE7WUFDOUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVE7WUFDaEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsQ0FDaEMsQ0FBQztJQUNILENBQUM7OEdBcEdXLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5cbmltcG9ydCB7IE5hdkl0ZW0sIE5hdlNlcnZpY2UgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xuXG4vKipcbiAqIGxvY2FsU3RvcmFnZSdhIHNlcmlhbGl6ZSBlZGlsZW4gcGlubmVkIHRhYiBrYXlkxLEuIGBwaW5uZWRgIGFsYW7EsSBTQUtMQU5NQVpcbiAqICh5w7xrbGVuZW4gaGVyIGthecSxdCB6YXRlbiBwaW5uZWQnZGlyKS4gYHRhYklkYCBTQUtMQU5JUiDigJQgRjUgc29ucmFzxLFcbiAqIGB3aW5kb3cuaGlzdG9yeS5zdGF0ZS5fdGFiYCBpbGUgZcWfbGXFn2lwIGBOYXZTZXJ2aWNlLmFjdGl2ZVJvdXRlYCBoYW5kbGVyJ8SxbsSxblxuICogYXluxLEgdGFiJ8SxIHRla3JhciB0w7xyZXRtZXNpbmkgKGR1cGxpY2F0ZSkgZW5nZWxsZXIuXG4gKi9cbmludGVyZmFjZSBQZXJzaXN0ZWRUYWIge1xuXHR0YWJJZDogc3RyaW5nO1xuXHRuYXZMaW5rOiBzdHJpbmc7XG5cdG5hdk5hbWU6IHN0cmluZztcblx0aWNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTYWJpdGxlbm1pxZ8gKHBpbm5lZCkgdGFiJ2xhcsSxIGt1bGxhbsSxY8SxIGJhemzEsSBgbG9jYWxTdG9yYWdlYCBhbmFodGFyxLFuZGEga2FsxLFjxLFcbiAqIGvEsWxhci4gRjUgLyB5ZW5pZGVuIGxvZ2luIC8geWVuaSBzZWttZSBhw6fEsWzEscWfxLFuZGEgcGlubmVkIHRhYidsYXIgZ2VyaSB5w7xrbGVuaXI7XG4gKiBub24tcGlubmVkIHRhYidsYXIgc2FrbGFubWF6LlxuICpcbiAqICoqQWvEscWfKio6IGBBcHBMYXlvdXRDb21wb25lbnRgIGNvbnN0cnVjdG9yJ2RhIChtZW7DvC9ob21lIHByb3ZpZGVyJ2xhcsSxIHNldFxuICogZWRpbGRpa3RlbiBTT05SQSkgYHJlc3RvcmUoKWAgU0VOS1JPTiDDp2HEn3LEsWzEsXIg4oaSIHBpbm5lZCdsZXIgYE5hdlNlcnZpY2UuYWN0aXZlUm91dGVzYCdhXG4gKiBla2xlbmlyIOKGkiBzYXZlIGVmZmVjdCBhcm1sYW7EsXIuIFNhdmUgZWZmZWN0IGByZXN0b3JlKClgIMOWTkNFU8SwIGt1cnVsbWF6OyBha3NpXG4gKiBoYWxkZSBBbmd1bGFyIGVmZmVjdCdpbiBpbGsgKGVhZ2VyKSB0aWNrJ2kgYm/FnyBgYWN0aXZlUm91dGVzYCd1IHlhesSxcCBzYWtsxLFcbiAqIHBpbm5lZCdsZXJpIHNpbGVyZGkuXG4gKlxuICogKipEdXBsaWNhdGUgw7ZubGVtaSoqOiBBa3RpZiB0YWIgcGlubmVkJ2RpIGlzZSByZXN0b3JlIFNBS0xJIGB0YWJJZGAgaWxlIGVrbGVyO1xuICogRjUgc29ucmFzxLEga29ydW5hbiBgaGlzdG9yeS5zdGF0ZS5fdGFiYCBidW51bmxhIGXFn2xlxZ9pciDihpIgaGFuZGxlciB0w7xyZXRtZXosIHNhZGVjZVxuICogZm9jdXMgZWRlci4gQWt0aWYgdGFiIHBpbm5lZCBkZcSfaWxkaXlzZSBlxZ9sZcWfbWUgb2xtYXog4oaSIGhhbmRsZXIgZ2VsZW4gVVJMJ2kgeWVuaVxuICogYWt0aWYgdGFiIG9sYXJhayBla2xlciAoZGVlcC1saW5rIGdlcmVrc2luaW1pOiBcImthecSxdGzEsWxhcsSxIHnDvGtsZSArIFVSTCdpIGVrbGVcIikuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGFiU2Vzc2lvblNlcnZpY2Uge1xuXHRwcml2YXRlIHJlYWRvbmx5IG5hdlNlcnZpY2UgPSBpbmplY3QoTmF2U2VydmljZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcblx0cHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0cHJpdmF0ZSByZWFkb25seSBTVE9SQUdFX1BSRUZJWCA9ICd0YWItc2Vzc2lvbjonO1xuXHQvKiogYE5hdlNlcnZpY2UuTUFYX1RBQlNgIGlsZSBheW7EsSB0YXZhbiDigJQgcmVzdG9yZSB2ZSBzYXZlIGlraSB0YXJhZnRhIGRhIHPEsW7EsXJsYW7EsXIuICovXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX1BFUlNJU1RFRCA9IDIwO1xuXG5cdHByaXZhdGUgcmVzdG9yZWQgPSBmYWxzZTtcblx0LyoqIFNvbiB5YXrEsWxhbiBwYXlsb2FkIOKAlCBkZcSfacWfbWVkaXlzZSBnZXJla3NpeiBgbG9jYWxTdG9yYWdlYCB3cml0ZSfEsSBhdGxhbsSxci4gKi9cblx0cHJpdmF0ZSBsYXN0V3JpdHRlbiA9ICcnO1xuXG5cdC8qKlxuXHQgKiBLdWxsYW7EsWPEsSBiYXpsxLEgc3RvcmFnZSBhbmFodGFyxLEuIE1ldmN1dCBrb2QgKGBhcHAucHJvZmlsZXNpZGViYXIuY29tcG9uZW50LnRzYClcblx0ICogYGlkVG9rZW5QYXJzZWQuc3ViYCBrdWxsYW7EsXlvcjsgaGVyIGlraSB0b2tlbiDFn2VrbGluaSBkZSBrYXBzYW1hayBpw6dpbiBmYWxsYmFja1xuXHQgKiB6aW5jaXJpIOKAlCBrdWxsYW7EsWPEsSDDp8O2esO8bGVtZXpzZSBgYW5vbnltb3VzYC5cblx0ICovXG5cdHByaXZhdGUgc3RvcmFnZUtleSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGtjID0gdGhpcy5rZXljbG9hay5nZXRLZXljbG9ha0luc3RhbmNlKCk7XG5cdFx0Y29uc3Qgc3ViID0ga2M/LnRva2VuUGFyc2VkPy5zdWIgPz8ga2M/LmlkVG9rZW5QYXJzZWQ/LnN1YiA/PyAnYW5vbnltb3VzJztcblx0XHRyZXR1cm4gdGhpcy5TVE9SQUdFX1BSRUZJWCArIHN1Yjtcblx0fVxuXG5cdC8qKlxuXHQgKiBTRU5LUk9OIHJlc3RvcmUuIGBBcHBMYXlvdXRDb21wb25lbnRgIGNvbnN0cnVjdG9yJ2RhbiwgaWxrIGBOYXZpZ2F0aW9uRW5kYFxuXHQgKiBpxZ9sZW5tZWRlbiDDlk5DRSDDp2HEn3LEsWxtYWzEsSDigJQgYsO2eWxlY2UgYE5hdlNlcnZpY2UuYWN0aXZlUm91dGVgIGhhbmRsZXInxLFuxLFuXG5cdCAqIGBrbm93blRhYmAgZ3VhcmQnxLEgcmVzdG9yZSBlZGlsZW4gdGFiSWQnbGVyaSBnw7Zyw7xyLiBJZGVtcG90ZW50OiBpa2luY2kgw6dhxJ9yxLEgbm8tb3AuXG5cdCAqL1xuXHRyZXN0b3JlKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnJlc3RvcmVkKSByZXR1cm47XG5cdFx0Y29uc3QgcGVyc2lzdGVkID0gdGhpcy5sb2FkKCk7XG5cdFx0Y29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHRoaXMubmF2U2VydmljZS5hY3RpdmVSb3V0ZXMoKS5tYXAoKHQpID0+IHQudGFiSWQpKTtcblx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgcGVyc2lzdGVkKSB7XG5cdFx0XHQvLyBBeW7EsSB0YWJJZCB6YXRlbiBla2xpeXNlIGF0bGEgKGlkZW1wb3RlbmN5IC8gb2xhc8SxIMOnaWZ0IMOnYcSfcsSxIGtvcnVtYXPEsSkuXG5cdFx0XHRpZiAoZXhpc3RpbmdJZHMuaGFzKGl0ZW0udGFiSWQpKSBjb250aW51ZTtcblx0XHRcdHRoaXMubmF2U2VydmljZS5hZGRUb0FjdGl2ZVJvdXRlcyh7XG5cdFx0XHRcdHRhYklkOiBpdGVtLnRhYklkLFxuXHRcdFx0XHRuYXZMaW5rOiBpdGVtLm5hdkxpbmssXG5cdFx0XHRcdG5hdk5hbWU6IGl0ZW0ubmF2TmFtZSxcblx0XHRcdFx0aWNvbjogaXRlbS5pY29uLFxuXHRcdFx0XHRwaW5uZWQ6IHRydWVcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnJlc3RvcmVkID0gdHJ1ZTtcblx0XHR0aGlzLmFybVNhdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlIGVmZmVjdCdpbmkgYHJlc3RvcmUoKWAgU09OUkFTSSBrdXJhci4gxLBsayDDp2FsxLHFn3TEscSfxLFuZGEgYGFjdGl2ZVJvdXRlc2AgemF0ZW5cblx0ICogcmVzdG9yZSBlZGlsbWnFnyBwaW5uZWQnbGVyaSBpw6dlcmRpxJ9pIGnDp2luIHlhesSxbSBpZGVtcG90ZW50IGthbMSxci4gRWZmZWN0LCBzZXJ2aWNlJ2luXG5cdCAqIGtlbmRpIGBJbmplY3RvcmAnxLFuYSBiYcSfbGFuxLFyIChmaWVsZCBpbml0aWFsaXplciAvIGNvbnN0cnVjdG9yIGTEscWfxLFuZGEga3VydWxkdcSfdSBpw6dpblxuXHQgKiBleHBsaWNpdCBpbmplY3RvciB6b3J1bmx1KS5cblx0ICovXG5cdHByaXZhdGUgYXJtU2F2ZSgpOiB2b2lkIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBpbm5lZCA9IHRoaXMubmF2U2VydmljZS5hY3RpdmVSb3V0ZXMoKS5maWx0ZXIoKHQpID0+IHQucGlubmVkKTtcblx0XHRcdFx0dGhpcy5zYXZlKHBpbm5lZCk7XG5cdFx0XHR9LFxuXHRcdFx0eyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9XG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgc2F2ZShwaW5uZWQ6IE5hdkl0ZW1bXSk6IHZvaWQge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwYXlsb2FkOiBQZXJzaXN0ZWRUYWJbXSA9IHBpbm5lZFxuXHRcdFx0XHQuc2xpY2UoMCwgdGhpcy5NQVhfUEVSU0lTVEVEKVxuXHRcdFx0XHQubWFwKCh0KSA9PiAoeyB0YWJJZDogdC50YWJJZCwgbmF2TGluazogdC5uYXZMaW5rLCBuYXZOYW1lOiB0Lm5hdk5hbWUsIGljb246IHQuaWNvbiB9KSk7XG5cdFx0XHRjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZCk7XG5cdFx0XHRpZiAoc2VyaWFsaXplZCA9PT0gdGhpcy5sYXN0V3JpdHRlbikgcmV0dXJuO1xuXHRcdFx0dGhpcy5sYXN0V3JpdHRlbiA9IHNlcmlhbGl6ZWQ7XG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkoKSwgc2VyaWFsaXplZCk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHQvKiBxdW90YSAvIHNlcmlhbGl6ZSBoYXRhc8SxOiBrcml0aWsgZGXEn2lsLCBwZXJzaXN0IHNlc3NpemNlIGF0bGFuxLFyICovXG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBsb2FkKCk6IFBlcnNpc3RlZFRhYltdIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KCkpO1xuXHRcdFx0aWYgKCFyYXcpIHJldHVybiBbXTtcblx0XHRcdGNvbnN0IHBhcnNlZDogdW5rbm93biA9IEpTT04ucGFyc2UocmF3KTtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShwYXJzZWQpKSByZXR1cm4gW107XG5cdFx0XHRyZXR1cm4gcGFyc2VkLmZpbHRlcigoeCk6IHggaXMgUGVyc2lzdGVkVGFiID0+IHRoaXMuaXNWYWxpZFBlcnNpc3RlZFRhYih4KSk7XG5cdFx0fSBjYXRjaCB7XG5cdFx0XHRyZXR1cm4gW107IC8vIGJvenVrIEpTT04g4oaSIHlvayBzYXksIHV5Z3VsYW1hIG5vcm1hbCBhw6fEsWzEsXJcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGlzVmFsaWRQZXJzaXN0ZWRUYWIoeDogdW5rbm93bik6IHggaXMgUGVyc2lzdGVkVGFiIHtcblx0XHRpZiAoIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG5cdFx0Y29uc3QgdCA9IHggYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0cmV0dXJuIChcblx0XHRcdHR5cGVvZiB0Wyd0YWJJZCddID09PSAnc3RyaW5nJyAmJlxuXHRcdFx0dFsndGFiSWQnXS5sZW5ndGggPiAwICYmXG5cdFx0XHR0eXBlb2YgdFsnbmF2TGluayddID09PSAnc3RyaW5nJyAmJlxuXHRcdFx0dFsnbmF2TGluayddLmxlbmd0aCA+IDAgJiZcblx0XHRcdHR5cGVvZiB0WyduYXZOYW1lJ10gPT09ICdzdHJpbmcnXG5cdFx0KTtcblx0fVxufVxuIl19
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Output, input } from '@angular/core';
|
|
2
|
+
import { RouterLink } from '@angular/router';
|
|
2
3
|
import { TagModule } from 'primeng/tag';
|
|
4
|
+
import { NavLinkDirective } from 'aril/boot/config/apps';
|
|
3
5
|
import { DetailedOverlayPanelComponent } from 'aril/ui-business/detailed-overlay-panel';
|
|
4
6
|
import { ValueComponent } from 'aril/ui/value';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
@@ -22,19 +24,25 @@ export class RefValueComponent {
|
|
|
22
24
|
getDisplayValue() {
|
|
23
25
|
return this.valueDesc() ?? this.assetId().toString();
|
|
24
26
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
getRouterLink() {
|
|
28
|
+
const path = this.detailPageUrl() ?? '';
|
|
29
|
+
return path.startsWith('/') ? `${path}/${this.assetId()}` : `/${path}/${this.assetId()}`;
|
|
27
30
|
}
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
/** `[arilNavLink]` directive'i için NavItem — sağ-tık tab context menüsü açılır. */
|
|
32
|
+
getNavItem() {
|
|
33
|
+
return {
|
|
34
|
+
tabId: '',
|
|
35
|
+
navLink: this.getRouterLink(),
|
|
36
|
+
navName: this.getDisplayValue()
|
|
37
|
+
};
|
|
30
38
|
}
|
|
31
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RefValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: RefValueComponent, isStandalone: true, selector: "aril-ref-value", inputs: { overlayPanelShow: { classPropertyName: "overlayPanelShow", publicName: "overlayPanelShow", isSignal: true, isRequired: false, transformFunction: null }, assetId: { classPropertyName: "assetId", publicName: "assetId", isSignal: true, isRequired: true, transformFunction: null }, valueDesc: { classPropertyName: "valueDesc", publicName: "valueDesc", isSignal: true, isRequired: true, transformFunction: null }, detailPageUrl: { classPropertyName: "detailPageUrl", publicName: "detailPageUrl", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: RefValueComponent, isStandalone: true, selector: "aril-ref-value", inputs: { overlayPanelShow: { classPropertyName: "overlayPanelShow", publicName: "overlayPanelShow", isSignal: true, isRequired: false, transformFunction: null }, assetId: { classPropertyName: "assetId", publicName: "assetId", isSignal: true, isRequired: true, transformFunction: null }, valueDesc: { classPropertyName: "valueDesc", publicName: "valueDesc", isSignal: true, isRequired: true, transformFunction: null }, detailPageUrl: { classPropertyName: "detailPageUrl", publicName: "detailPageUrl", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n", dependencies: [{ kind: "component", type: ValueComponent, selector: "aril-value", inputs: ["model", "type", "format", "isClickable", "groupName", "parentSelectionKey", "isTextClamp", "textClampCharacters", "style", "copyable", "shouldShowCopyForClampedText", "arrayTypeDisplayName", "arrayTypeMaxBadgeCount", "bigDecimalRoundingMode", "bigDecimalScale"] }, { kind: "component", type: DetailedOverlayPanelComponent, selector: "aril-detailed-oveylay-panel", inputs: ["assetId", "style", "styleClass", "columns"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
41
|
}
|
|
34
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RefValueComponent, decorators: [{
|
|
35
43
|
type: Component,
|
|
36
|
-
args: [{ standalone: true, selector: 'aril-ref-value', imports: [ValueComponent, DetailedOverlayPanelComponent, TagModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [
|
|
44
|
+
args: [{ standalone: true, selector: 'aril-ref-value', imports: [ValueComponent, DetailedOverlayPanelComponent, TagModule, RouterLink, NavLinkDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n" }]
|
|
37
45
|
}], propDecorators: { clickEvent: [{
|
|
38
46
|
type: Output
|
|
39
47
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvcmVmLXZhbHVlL3NyYy9yZWYtdmFsdWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9yZWYtdmFsdWUvc3JjL3JlZi12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBVyxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVMvQyxNQUFNLE9BQU8saUJBQWlCO0lBUDlCO1FBUUMscUJBQWdCLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3hDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDbkMsY0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXNCLENBQUM7UUFDckQsV0FBTSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUV0QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2QixhQUFRLEdBQUc7WUFDN0IsVUFBVSxFQUFFLFNBQVM7WUFDckIsS0FBSyxFQUFFLGNBQWM7WUFDckIsV0FBVyxFQUFFLFFBQVE7WUFDckIsaUJBQWlCLEVBQUUsV0FBVztTQUM5QixDQUFDO0tBbUJGO0lBakJVLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFUyxhQUFhO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDMUYsQ0FBQztJQUVELG9GQUFvRjtJQUMxRSxVQUFVO1FBQ25CLE9BQU87WUFDTixLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1NBQy9CLENBQUM7SUFDSCxDQUFDOzhHQWhDVyxpQkFBaUI7a0dBQWpCLGlCQUFpQixneUJDaEI5QixxcUNBNkJBLDRDRGhCVyxjQUFjLHdVQUFFLDZCQUE2Qiw4SEFBRSxTQUFTLGdLQUFFLFVBQVUsb09BQUUsZ0JBQWdCOzsyRkFHcEYsaUJBQWlCO2tCQVA3QixTQUFTO2lDQUNHLElBQUksWUFDTixnQkFBZ0IsV0FFakIsQ0FBQyxjQUFjLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDaEYsdUJBQXVCLENBQUMsTUFBTTs4QkFTckMsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFRhZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFnJztcclxuXHJcbmltcG9ydCB7IE5hdkl0ZW0sIE5hdkxpbmtEaXJlY3RpdmUgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBEZXRhaWxlZE92ZXJsYXlQYW5lbENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWktYnVzaW5lc3MvZGV0YWlsZWQtb3ZlcmxheS1wYW5lbCc7XHJcbmltcG9ydCB7IFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS92YWx1ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXJpbC1yZWYtdmFsdWUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9yZWYtdmFsdWUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdGltcG9ydHM6IFtWYWx1ZUNvbXBvbmVudCwgRGV0YWlsZWRPdmVybGF5UGFuZWxDb21wb25lbnQsIFRhZ01vZHVsZSwgUm91dGVyTGluaywgTmF2TGlua0RpcmVjdGl2ZV0sXHJcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZlZhbHVlQ29tcG9uZW50IHtcclxuXHRvdmVybGF5UGFuZWxTaG93ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0YXNzZXRJZCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuXHR2YWx1ZURlc2MgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcblx0ZGV0YWlsUGFnZVVybCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcclxuXHR0YXJnZXQgPSBpbnB1dDxzdHJpbmc+KCdfc2VsZicpO1xyXG5cclxuXHRAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IHRhZ1N0eWxlID0ge1xyXG5cdFx0YmFja2dyb3VuZDogJyNmMGYwZjAnLFxyXG5cdFx0Y29sb3I6ICctd2Via2l0LWxpbmsnLFxyXG5cdFx0J2ZvbnQtc2l6ZSc6ICcwLjlyZW0nLFxyXG5cdFx0J3RleHQtZGVjb3JhdGlvbic6ICd1bmRlcmxpbmUnXHJcblx0fTtcclxuXHJcblx0cHJvdGVjdGVkIGdldERpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMudmFsdWVEZXNjKCkgPz8gdGhpcy5hc3NldElkKCkudG9TdHJpbmcoKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBnZXRSb3V0ZXJMaW5rKCk6IHN0cmluZyB7XHJcblx0XHRjb25zdCBwYXRoID0gdGhpcy5kZXRhaWxQYWdlVXJsKCkgPz8gJyc7XHJcblx0XHRyZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBgJHtwYXRofS8ke3RoaXMuYXNzZXRJZCgpfWAgOiBgLyR7cGF0aH0vJHt0aGlzLmFzc2V0SWQoKX1gO1xyXG5cdH1cclxuXHJcblx0LyoqIGBbYXJpbE5hdkxpbmtdYCBkaXJlY3RpdmUnaSBpw6dpbiBOYXZJdGVtIOKAlCBzYcSfLXTEsWsgdGFiIGNvbnRleHQgbWVuw7xzw7wgYcOnxLFsxLFyLiAqL1xyXG5cdHByb3RlY3RlZCBnZXROYXZJdGVtKCk6IE5hdkl0ZW0ge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0dGFiSWQ6ICcnLFxyXG5cdFx0XHRuYXZMaW5rOiB0aGlzLmdldFJvdXRlckxpbmsoKSxcclxuXHRcdFx0bmF2TmFtZTogdGhpcy5nZXREaXNwbGF5VmFsdWUoKVxyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuIiwiQGlmIChkZXRhaWxQYWdlVXJsKCkgJiYgdmFsdWVEZXNjKCkgJiYgYXNzZXRJZCgpKSB7XHJcblx0QGlmIChvdmVybGF5UGFuZWxTaG93KCkpIHtcclxuXHRcdDxhcmlsLWRldGFpbGVkLW92ZXlsYXktcGFuZWwgW2Fzc2V0SWRdPVwiYXNzZXRJZCgpXCI+XHJcblx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImdldFJvdXRlckxpbmsoKVwiIFt0YXJnZXRdPVwidGFyZ2V0KClcIiBbYXJpbE5hdkxpbmtdPVwiZ2V0TmF2SXRlbSgpXCI+XHJcblx0XHRcdFx0PHAtdGFnIFt2YWx1ZV09XCJnZXREaXNwbGF5VmFsdWUoKVwiIFtzdHlsZV09XCJ0YWdTdHlsZVwiIC8+XHJcblx0XHRcdDwvYT5cclxuXHRcdDwvYXJpbC1kZXRhaWxlZC1vdmV5bGF5LXBhbmVsPlxyXG5cdH0gQGVsc2Uge1xyXG5cdFx0PGEgW3JvdXRlckxpbmtdPVwiZ2V0Um91dGVyTGluaygpXCIgW3RhcmdldF09XCJ0YXJnZXQoKVwiIFthcmlsTmF2TGlua109XCJnZXROYXZJdGVtKClcIj5cclxuXHRcdFx0PHAtdGFnIFt2YWx1ZV09XCJnZXREaXNwbGF5VmFsdWUoKVwiIFtzdHlsZV09XCJ0YWdTdHlsZVwiIC8+XHJcblx0XHQ8L2E+XHJcblx0fVxyXG59IEBlbHNlIGlmICh2YWx1ZURlc2MoKSB8fCBhc3NldElkKCkpIHtcclxuXHRAaWYgKG92ZXJsYXlQYW5lbFNob3coKSkge1xyXG5cdFx0PGFyaWwtZGV0YWlsZWQtb3ZleWxheS1wYW5lbCBbYXNzZXRJZF09XCJhc3NldElkKClcIj5cclxuXHRcdFx0PHAtdGFnXHJcblx0XHRcdFx0W3ZhbHVlXT1cImdldERpc3BsYXlWYWx1ZSgpXCJcclxuXHRcdFx0XHRbc3R5bGVdPVwidGFnU3R5bGVcIlxyXG5cdFx0XHRcdChjbGljayk9XCJjbGlja0V2ZW50LmVtaXQoeyBhc3NldElkOiBhc3NldElkKCksIHZhbHVlRGVzYzogdmFsdWVEZXNjKCkgfSlcIiAvPlxyXG5cdFx0PC9hcmlsLWRldGFpbGVkLW92ZXlsYXktcGFuZWw+XHJcblx0fSBAZWxzZSB7XHJcblx0XHQ8cC10YWdcclxuXHRcdFx0W3ZhbHVlXT1cImdldERpc3BsYXlWYWx1ZSgpXCJcclxuXHRcdFx0W3N0eWxlXT1cInRhZ1N0eWxlXCJcclxuXHRcdFx0KGNsaWNrKT1cImNsaWNrRXZlbnQuZW1pdCh7IGFzc2V0SWQ6IGFzc2V0SWQoKSwgdmFsdWVEZXNjOiB2YWx1ZURlc2MoKSB9KVwiIC8+XHJcblx0fVxyXG59IEBlbHNlIHtcclxuXHQ8YXJpbC12YWx1ZSB0eXBlPVwidGV4dFwiIFttb2RlbF09XCJudWxsXCIgLz5cclxufVxyXG4iXX0=
|