aril 1.2.14 → 1.2.15
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/esm2022/keycloak/src/auth.interceptor.mjs +1 -1
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +3 -3
- package/esm2022/ui-business/pdf-preview-modal/aril-ui-business-pdf-preview-modal.mjs +5 -0
- package/esm2022/ui-business/pdf-preview-modal/index.mjs +3 -0
- package/esm2022/ui-business/pdf-preview-modal/src/open-pdf-preview.mjs +23 -0
- package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +90 -0
- package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +1 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +2 -2
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +119 -0
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -0
- package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
- package/package.json +196 -190
- package/theme/layout/app/site-map/site-map-sidebar.component.html +121 -121
- package/ui-business/pdf-preview-modal/index.d.ts +2 -0
- package/ui-business/pdf-preview-modal/src/open-pdf-preview.d.ts +10 -0
- package/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.d.ts +23 -0
|
@@ -25,4 +25,4 @@ export const authInterceptor = (req, next) => {
|
|
|
25
25
|
return next(authReq);
|
|
26
26
|
};
|
|
27
27
|
export const keycloakAuthInterceptor = (req, next) => inject(KeycloakBearerInterceptor).intercept(req, { handle: next });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTdDLE1BQU0sZ0JBQWdCLEdBQXNEO0lBQzNFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtJQUM3RixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7SUFDN0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0NBQzdGLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWdDLEVBQW9CLEVBQUUsQ0FDeEUsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7QUFFbkUsTUFBTSxZQUFZLEdBQUcsR0FBdUIsRUFBRSxDQUM3QyxRQUFRLENBQUMsTUFBTTtLQUNiLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFFakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN6QixVQUFVLEVBQUU7WUFDWCxVQUFVLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDM0IsR0FBRyxPQUFPO1NBQ1Y7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRSxDQUM1RyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvciB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxudHlwZSBIb3N0QXBwID0gQXBwcy5USE9SIHwgQXBwcy5ZRUFQIHwgQXBwcy5MRU5BO1xyXG5cclxuY29uc3QgSE9TVF9BUFBfSEVBREVSUzogUmVjb3JkPEhvc3RBcHAsIFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHtcclxuXHRbQXBwcy5USE9SXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3Rob3InLCAneC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtbW9kdWxlJzogJ3Rob3ItZmUnIH0sXHJcblx0W0FwcHMuTEVOQV06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICdsZW5hJywgJ3gtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LW1vZHVsZSc6ICdsZW5hLWZlJyB9LFxyXG5cdFtBcHBzLllFQVBdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAneWVhcCcsICd4LWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1tb2R1bGUnOiAneWVhcC1mZScgfVxyXG59O1xyXG5cclxuY29uc3QgaXNIb3N0QXBwID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgSG9zdEFwcCA9PlxyXG5cdHZhbHVlID09PSBBcHBzLlRIT1IgfHwgdmFsdWUgPT09IEFwcHMuTEVOQSB8fCB2YWx1ZSA9PT0gQXBwcy5ZRUFQO1xyXG5cclxuY29uc3QgZ2V0Q3NyZlRva2VuID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxyXG5cdGRvY3VtZW50LmNvb2tpZVxyXG5cdFx0LnNwbGl0KCc7ICcpXHJcblx0XHQuZmluZCgocm93KSA9PiByb3cuc3RhcnRzV2l0aCgnY3NyZl90b2tlbj0nKSlcclxuXHRcdD8uc3BsaXQoJz0nKVsxXTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCBhY3RpdmVIb3N0ID0gYnJpZGdlLmFjdGl2ZUhvc3QoKTtcclxuXHRjb25zdCBoZWFkZXJzID0gaXNIb3N0QXBwKGFjdGl2ZUhvc3QpID8gSE9TVF9BUFBfSEVBREVSU1thY3RpdmVIb3N0XSA6IHt9O1xyXG5cdGNvbnN0IGNzcmZUb2tlbiA9IGdldENzcmZUb2tlbigpO1xyXG5cclxuXHRjb25zdCBhdXRoUmVxID0gcmVxLmNsb25lKHtcclxuXHRcdHNldEhlYWRlcnM6IHtcclxuXHRcdFx0Y3NyZl90b2tlbjogY3NyZlRva2VuID8/ICcnLFxyXG5cdFx0XHQuLi5oZWFkZXJzXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGtleWNsb2FrQXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PlxyXG5cdGluamVjdChLZXljbG9ha0JlYXJlckludGVyY2VwdG9yKS5pbnRlcmNlcHQocmVxLCB7IGhhbmRsZTogbmV4dCB9KTtcclxuIl19
|
|
@@ -147,7 +147,7 @@ export class SiteMapSidebarComponent {
|
|
|
147
147
|
return node.key || `${index}`;
|
|
148
148
|
}
|
|
149
149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\n\t*transloco=\"let t; read: 'siteMap'\">\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\n\t\t\t<div class=\"flex align-items-center gap-2\">\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<div class=\"sitemap-content\">\n\t\t<div class=\"search-section grid p-fluid m-0\">\n\t\t\t<aril-text\n\t\t\t\t[placeholder]=\"t('searchPages')\"\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\n\t\t\t\tclass=\"col-10 m-0\">\n\t\t\t</aril-text>\n\t\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"expandAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"collapseAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Site Map Tree -->\n\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"sitemap-tree\">\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\n\t\t\t\t\t<div class=\"tree-container\">\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</p-scrollPanel>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"empty-state\">\n\t\t\t\t<div class=\"empty-content\">\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\n\t\t\t\t\t<h3 class=\"empty-title\">\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p class=\"empty-message\">\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\n\t\t\t\t\t</p>\n\t\t\t\t\t@if (searchTerm()) {\n\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\n\t\t\t\t\t\t\ticon=\"TIMES\"\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\n\t\t\t\t\t\t</aril-button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Recursive Tree Node Template -->\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"node-item\"\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\n\t\t\t\t\t<div class=\"node-content\">\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (node.icon) {\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\n\n\t\t\t\t\t\t@if (node.routerLink) {\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Recursive Children -->\n\t\t\t\t@if (node.children && node.expanded) {\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</p-sidebar>\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i8.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
|
|
151
151
|
}
|
|
152
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, decorators: [{
|
|
153
153
|
type: Component,
|
|
@@ -163,6 +163,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
163
163
|
TranslocoModule,
|
|
164
164
|
TranslateJsonPipe,
|
|
165
165
|
FontAwesomeModule
|
|
166
|
-
], template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\n\t*transloco=\"let t; read: 'siteMap'\">\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\n\t\t\t<div class=\"flex align-items-center gap-2\">\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<div class=\"sitemap-content\">\n\t\t<div class=\"search-section grid p-fluid m-0\">\n\t\t\t<aril-text\n\t\t\t\t[placeholder]=\"t('searchPages')\"\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\n\t\t\t\tclass=\"col-10 m-0\">\n\t\t\t</aril-text>\n\t\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"expandAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"collapseAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Site Map Tree -->\n\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"sitemap-tree\">\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\n\t\t\t\t\t<div class=\"tree-container\">\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</p-scrollPanel>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"empty-state\">\n\t\t\t\t<div class=\"empty-content\">\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\n\t\t\t\t\t<h3 class=\"empty-title\">\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p class=\"empty-message\">\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\n\t\t\t\t\t</p>\n\t\t\t\t\t@if (searchTerm()) {\n\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\n\t\t\t\t\t\t\ticon=\"TIMES\"\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\n\t\t\t\t\t\t</aril-button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Recursive Tree Node Template -->\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"node-item\"\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\n\t\t\t\t\t<div class=\"node-content\">\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (node.icon) {\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\n\n\t\t\t\t\t\t@if (node.routerLink) {\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Recursive Children -->\n\t\t\t\t@if (node.children && node.expanded) {\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</p-sidebar>\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
|
|
166
|
+
], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
|
|
167
167
|
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.TranslocoService }] });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7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LHNYQUNiLGVBQWUsOE5BQ2YsYUFBYSxrTEFDYixlQUFlLDROQUNmLGlCQUFpQixxREFDakIsaUJBQWlCOzsyRkFLTix1QkFBdUI7a0JBbkJuQyxTQUFTO2lDQUNHLElBQUksWUFDTixzQkFBc0IsV0FDdkI7d0JBQ1IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixpQkFBaUI7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL3RleHQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuaW50ZXJmYWNlIE1lbnVOb2RlIHtcclxuXHRrZXk6IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nIHwgb2JqZWN0O1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0cm91dGVyTGluaz86IHN0cmluZztcclxuXHRjaGlsZHJlbj86IE1lbnVOb2RlW107XHJcblx0ZXhwYW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXNpdGUtbWFwLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Um91dGVyTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRleHRDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdEZvbnRBd2Vzb21lTW9kdWxlXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaXRlTWFwU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0c2l0ZU1hcE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRmaWx0ZXJlZE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRzZWFyY2hUZXJtID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG5cdHRvdGFsUGFnZXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICBzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRTaXRlTWFwKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2l0ZU1hcFNpZGViYXJWaXNpYmxlO1xyXG5cdH1cclxuXHJcblx0c2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zaXRlTWFwU2lkZWJhclZpc2libGUgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbG9hZFNpdGVNYXAoKTogdm9pZCB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSBicmlkZ2UuaG9zdE1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmJ1aWxkU2l0ZU1hcE5vZGVzKG1lbnVJdGVtcyk7XHJcblx0XHRjb25zdCB0b3RhbENvdW50ID0gdGhpcy5jb3VudFRvdGFsUGFnZXMobm9kZXMpO1xyXG5cclxuXHRcdHRoaXMuc2l0ZU1hcE5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMudG90YWxQYWdlcy5zZXQodG90YWxDb3VudCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGJ1aWxkU2l0ZU1hcE5vZGVzKGl0ZW1zOiBhbnlbXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBpdGVtc1xyXG5cdFx0XHQuZmlsdGVyKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0Ly8gS2VlcCB0aGUgaG9tZSBwYWdlIHJvdXRlIChcIi9cIikgYW5kIGFueSBub24tZW1wdHkgcm91dGVzXHJcblx0XHRcdFx0cmV0dXJuICFpdGVtLnJvdXRlckxpbmsgfHwgaXRlbS5yb3V0ZXJMaW5rID09PSAnLycgfHwgaXRlbS5yb3V0ZXJMaW5rLnRyaW0oKSAhPT0gJyc7XHJcblx0XHRcdH0pXHJcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qga2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fS0ke2luZGV4fWAgOiBgJHtpbmRleH1gO1xyXG5cclxuXHRcdFx0XHRsZXQgbGFiZWw6IHN0cmluZyB8IG9iamVjdDtcclxuXHRcdFx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rID09PSAnLycpIHtcclxuXHRcdFx0XHRcdGxhYmVsID0geyB0cjogJ0FuYXNheWZhJywgZW46ICdIb21lJyB9O1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRsYWJlbCA9IGl0ZW0ubGFiZWwgfHwgeyB0cjogJ0JpbGlubWV5ZW4nLCBlbjogJ1Vua25vd24nIH07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBub2RlOiBNZW51Tm9kZSA9IHtcclxuXHRcdFx0XHRcdGtleSxcclxuXHRcdFx0XHRcdGxhYmVsLFxyXG5cdFx0XHRcdFx0aWNvbjogaXRlbS5pY29uLFxyXG5cdFx0XHRcdFx0cm91dGVyTGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRcdFx0ZXhwYW5kZWQ6IGZhbHNlXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5idWlsZFNpdGVNYXBOb2RlcyhpdGVtLml0ZW1zLCBrZXkpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjb3VudFRvdGFsUGFnZXMobm9kZXM6IE1lbnVOb2RlW10pOiBudW1iZXIge1xyXG5cdFx0bGV0IGNvdW50ID0gMDtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHRpZiAobm9kZS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0Y291bnQrKztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGNvdW50ICs9IHRoaXMuY291bnRUb3RhbFBhZ2VzKG5vZGUuY2hpbGRyZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY291bnQ7XHJcblx0fVxyXG5cclxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKT8udG9Mb2NhbGVMb3dlckNhc2UoY3VycmVudExhbmcpPy50cmltKCk7XHJcblx0XHRpZiAoIXNlYXJjaFRlcm0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLnNpdGVNYXBOb2RlcygpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJOb2Rlcyh0aGlzLnNpdGVNYXBOb2RlcygpLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChmaWx0ZXJlZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51Tm9kZVtdIHtcclxuXHRcdGNvbnN0IGZpbHRlcmVkOiBNZW51Tm9kZVtdID0gW107XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdC8vIENvbnZlcnQgbGFiZWwgdG8gc3RyaW5nIGZvciBzZWFyY2ggYmFzZWQgb24gYWN0aXZlIGxhbmd1YWdlXHJcblx0XHRcdGNvbnN0IGxhYmVsVGV4dCA9XHJcblx0XHRcdFx0dHlwZW9mIG5vZGUubGFiZWwgPT09ICdzdHJpbmcnID9cclxuXHRcdFx0XHRcdG5vZGUubGFiZWxcclxuXHRcdFx0XHQ6XHQobm9kZS5sYWJlbCBhcyBhbnkpPy5bY3VycmVudExhbmddIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LnRyIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LmVuIHx8ICcnO1xyXG5cclxuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IGxhYmVsVGV4dC50b0xvY2FsZUxvd2VyQ2FzZShjdXJyZW50TGFuZykuaW5jbHVkZXMoc2VhcmNoVGVybSk7XHJcblx0XHRcdGxldCBmaWx0ZXJlZENoaWxkcmVuOiBNZW51Tm9kZVtdID0gW107XHJcblxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbHRlck5vZGVzKG5vZGUuY2hpbGRyZW4sIHNlYXJjaFRlcm0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAobWF0Y2hlcyB8fCBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRmaWx0ZXJlZC5wdXNoKHtcclxuXHRcdFx0XHRcdC4uLm5vZGUsXHJcblx0XHRcdFx0XHRjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwID8gZmlsdGVyZWRDaGlsZHJlbiA6IG5vZGUuY2hpbGRyZW4sXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmlsdGVyZWQ7XHJcblx0fVxyXG5cclxuXHRleHBhbmRBbGwoKTogdm9pZCB7XHJcblx0XHRjb25zdCBleHBhbmRlZCA9IHRoaXMuZXhwYW5kTm9kZXModGhpcy5maWx0ZXJlZE5vZGVzKCksIHRydWUpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uZXhwYW5kZWRdKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29sbGFwc2VkID0gdGhpcy5leHBhbmROb2Rlcyh0aGlzLmZpbHRlcmVkTm9kZXMoKSwgZmFsc2UpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uY29sbGFwc2VkXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGV4cGFuZE5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBleHBhbmRlZDogYm9vbGVhbik6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIG5vZGVzLm1hcCgobm9kZSkgPT4gKHtcclxuXHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0ZXhwYW5kZWQsXHJcblx0XHRcdGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuID8gdGhpcy5leHBhbmROb2Rlcyhub2RlLmNoaWxkcmVuLCBleHBhbmRlZCkgOiB1bmRlZmluZWRcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdG5vZGUuZXhwYW5kZWQgPSAhbm9kZS5leHBhbmRlZDtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHR0cmFja0J5S2V5KGluZGV4OiBudW1iZXIsIG5vZGU6IE1lbnVOb2RlKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub2RlLmtleSB8fCBgJHtpbmRleH1gO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXG5cdHBvc2l0aW9uPVwicmlnaHRcIlxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LXNpdGVtYXAtc2lkZWJhciB3LWZ1bGwgc206dy0zMHJlbVwiXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ3NpdGVNYXAnXCI+XG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgdy1mdWxsXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwIHRleHQtcHJpbWFyeSB0ZXh0LXhsXCI+PC9pPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+e3sgdCgnc2l0ZU1hcCcpIH19PC9zcGFuPlxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRvdGFsLXBhZ2VzXCI+e3sgdG90YWxQYWdlcygpIH19IHt7IHQoJ3BhZ2VzJykgfX08L3NwYW4+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9uZy10ZW1wbGF0ZT5cblxuXHQ8ZGl2IGNsYXNzPVwic2l0ZW1hcC1jb250ZW50XCI+XG5cdFx0PGRpdiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGdyaWQgcC1mbHVpZCBtLTBcIj5cblx0XHRcdDxhcmlsLXRleHRcblx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaFBhZ2VzJylcIlxuXHRcdFx0XHRbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuXHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCJcblx0XHRcdFx0Y2xhc3M9XCJjb2wtMTAgbS0wXCI+XG5cdFx0XHQ8L2FyaWwtdGV4dD5cblx0XHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTAgcC0wXCI+XG5cdFx0XHRcdFx0PGZhLWljb25cblx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFBbmdsZXNEb3duXCJcblx0XHRcdFx0XHRcdHNpemU9XCJ4bFwiXG5cdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKVwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0xIGN1cnNvci1wb2ludGVyXCJcblx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdleHBhbmRBbGwnKVwiXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImV4cGFuZEFsbCgpXCI+XG5cdFx0XHRcdFx0PC9mYS1pY29uPlxuXHRcdFx0XHRcdDxmYS1pY29uXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJzb2xpZEljb25zLmZhQW5nbGVzVXBcIlxuXHRcdFx0XHRcdFx0c2l6ZT1cInhsXCJcblx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IHZhcigtLXJlZC01MDApXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY29sLTEgbWwtMyBjdXJzb3ItcG9pbnRlclwiXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnY29sbGFwc2VBbGwnKVwiXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImNvbGxhcHNlQWxsKClcIj5cblx0XHRcdFx0XHQ8L2ZhLWljb24+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0fVxuXHRcdDwvZGl2PlxuXG5cdFx0PCEtLSBTaXRlIE1hcCBUcmVlIC0tPlxuXHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdDxkaXYgY2xhc3M9XCJzaXRlbWFwLXRyZWVcIj5cblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLWNvbnRhaW5lclwiPlxuXHRcdFx0XHRcdFx0QGZvciAobm9kZSBvZiBmaWx0ZXJlZE5vZGVzKCk7IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBub2RlKSkge1xuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxuXHRcdFx0PC9kaXY+XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLXNpdGVtYXAgZW1wdHktaWNvblwiPjwvaT5cblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPlxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgnbm9TZWFyY2hSZXN1bHRzJykgOiB0KCdub1BhZ2VzJykgfX1cblx0XHRcdFx0XHQ8L2gzPlxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPlxuXHRcdFx0XHRcdFx0e3sgc2VhcmNoVGVybSgpID8gdCgndHJ5RGlmZmVyZW50S2V5d29yZHMnKSA6ICcnIH19XG5cdFx0XHRcdFx0PC9wPlxuXHRcdFx0XHRcdEBpZiAoc2VhcmNoVGVybSgpKSB7XG5cdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cblx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ2NsZWFyU2VhcmNoJylcIlxuXHRcdFx0XHRcdFx0XHRpY29uPVwiVElNRVNcIlxuXHRcdFx0XHRcdFx0XHRjb2xvcj1cInNlY29uZGFyeVwiXG5cdFx0XHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcblx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwic2VhcmNoVGVybS5zZXQoJycpOyBvblNlYXJjaENoYW5nZSgpXCI+XG5cdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHR9XG5cblx0XHQ8IS0tIFJlY3Vyc2l2ZSBUcmVlIE5vZGUgVGVtcGxhdGUgLS0+XG5cdFx0PG5nLXRlbXBsYXRlICN0cmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlIGxldC1sZXZlbD1cImxldmVsXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCIgW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XT1cImxldmVsICogMjBcIj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxuXHRcdFx0XHRcdFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG5cdFx0XHRcdFx0KGNsaWNrKT1cIiFub2RlLnJvdXRlckxpbmsgPyB0b2dnbGVOb2RlKG5vZGUpIDogKHZpc2libGUgPSBmYWxzZSlcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm9kZS1jb250ZW50XCI+XG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGUtYnRuXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTm9kZShub2RlKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbY2xhc3MucGktY2hldnJvbi1yaWdodF09XCIhbm9kZS5leHBhbmRlZFwiIFtjbGFzcy5waS1jaGV2cm9uLWRvd25dPVwibm9kZS5leHBhbmRlZFwiPjwvaT5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IG5vZGUubGFiZWwgfCB0cmFuc2xhdGVKc29uIH19PC9zcGFuPlxuXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUucm91dGVyTGluaykge1xuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImV4dGVybmFsLWljb24gcGkgcGktZXh0ZXJuYWwtbGlua1wiPjwvaT5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cblx0XHRcdFx0PCEtLSBSZWN1cnNpdmUgQ2hpbGRyZW4gLS0+XG5cdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkKSB7XG5cdFx0XHRcdFx0QGZvciAoY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIGNoaWxkKSkge1xuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxuXHRcdFx0XHRcdFx0XHQqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjaGlsZCwgbGV2ZWw6IGxldmVsICsgMSB9XCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHQ8L2Rpdj5cbjwvcC1zaWRlYmFyPlxuIl19
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7OztBQThCM0MsTUFBTSxPQUFPLHVCQUF1QjtJQU9uQyxZQUNRLGFBQTRCLEVBQzNCLGdCQUFrQztRQURuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBUjNDLGlCQUFZLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM5QixlQUFVLEdBQUcsVUFBVSxDQUFDO0lBS3RCLENBQUM7SUFFSixRQUFRO1FBQ1AsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRU8sV0FBVztRQUNsQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQVksRUFBRSxTQUFTLEdBQUcsRUFBRTtRQUNyRCxPQUFPLEtBQUs7YUFDVixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQiwwREFBMEQ7WUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDckYsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFFN0QsSUFBSSxLQUFzQixDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDM0QsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFhO2dCQUN0QixHQUFHO2dCQUNILEtBQUs7Z0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsUUFBUSxFQUFFLEtBQUs7YUFDZixDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFpQjtRQUN4QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsQ0FBQztZQUNULENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDRixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNGLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBaUIsRUFBRSxVQUFrQjtRQUN4RCxNQUFNLFFBQVEsR0FBZSxFQUFFLENBQUM7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTFELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDMUIsOERBQThEO1lBQzlELE1BQU0sU0FBUyxHQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUs7Z0JBQ1gsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFhLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSyxJQUFJLENBQUMsS0FBYSxFQUFFLEVBQUUsSUFBSyxJQUFJLENBQUMsS0FBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFbEcsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RSxJQUFJLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztZQUV0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFFRCxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ2IsR0FBRyxJQUFJO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7b0JBQ3hFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQztpQkFDckMsQ0FBQyxDQUFDO1lBQ0osQ0FBQztRQUNGLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUztRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxXQUFXO1FBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFpQixFQUFFLFFBQWlCO1FBQ3ZELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixHQUFHLElBQUk7WUFDUCxRQUFRO1lBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMvRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBYztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxJQUFjO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7OEdBakpXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGdGQ2hEcEMsMnNKQXlIQSw0akZEeEZFLFlBQVkscU1BQ1osV0FBVyw4VkFDWCxZQUFZLCtRQUNaLGFBQWEsbWRBQ2IsaUJBQWlCLCtJQUNqQixhQUFhLHNYQUNiLGVBQWUsOE5BQ2YsYUFBYSxrTEFDYixlQUFlLDROQUNmLGlCQUFpQixxREFDakIsaUJBQWlCOzsyRkFLTix1QkFBdUI7a0JBbkJuQyxTQUFTO2lDQUNHLElBQUksWUFDTixzQkFBc0IsV0FDdkI7d0JBQ1IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixpQkFBaUI7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL3RleHQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuaW50ZXJmYWNlIE1lbnVOb2RlIHtcclxuXHRrZXk6IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nIHwgb2JqZWN0O1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0cm91dGVyTGluaz86IHN0cmluZztcclxuXHRjaGlsZHJlbj86IE1lbnVOb2RlW107XHJcblx0ZXhwYW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXNpdGUtbWFwLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0Um91dGVyTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0VG9vbHRpcE1vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRleHRDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVKc29uUGlwZSxcclxuXHRcdEZvbnRBd2Vzb21lTW9kdWxlXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaXRlTWFwU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0c2l0ZU1hcE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRmaWx0ZXJlZE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcclxuXHRzZWFyY2hUZXJtID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG5cdHRvdGFsUGFnZXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICBzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRTaXRlTWFwKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2l0ZU1hcFNpZGViYXJWaXNpYmxlO1xyXG5cdH1cclxuXHJcblx0c2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zaXRlTWFwU2lkZWJhclZpc2libGUgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbG9hZFNpdGVNYXAoKTogdm9pZCB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSBicmlkZ2UuaG9zdE1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmJ1aWxkU2l0ZU1hcE5vZGVzKG1lbnVJdGVtcyk7XHJcblx0XHRjb25zdCB0b3RhbENvdW50ID0gdGhpcy5jb3VudFRvdGFsUGFnZXMobm9kZXMpO1xyXG5cclxuXHRcdHRoaXMuc2l0ZU1hcE5vZGVzLnNldChub2Rlcyk7XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMudG90YWxQYWdlcy5zZXQodG90YWxDb3VudCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGJ1aWxkU2l0ZU1hcE5vZGVzKGl0ZW1zOiBhbnlbXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcclxuXHRcdHJldHVybiBpdGVtc1xyXG5cdFx0XHQuZmlsdGVyKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0Ly8gS2VlcCB0aGUgaG9tZSBwYWdlIHJvdXRlIChcIi9cIikgYW5kIGFueSBub24tZW1wdHkgcm91dGVzXHJcblx0XHRcdFx0cmV0dXJuICFpdGVtLnJvdXRlckxpbmsgfHwgaXRlbS5yb3V0ZXJMaW5rID09PSAnLycgfHwgaXRlbS5yb3V0ZXJMaW5rLnRyaW0oKSAhPT0gJyc7XHJcblx0XHRcdH0pXHJcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qga2V5ID0gcGFyZW50S2V5ID8gYCR7cGFyZW50S2V5fS0ke2luZGV4fWAgOiBgJHtpbmRleH1gO1xyXG5cclxuXHRcdFx0XHRsZXQgbGFiZWw6IHN0cmluZyB8IG9iamVjdDtcclxuXHRcdFx0XHRpZiAoaXRlbS5yb3V0ZXJMaW5rID09PSAnLycpIHtcclxuXHRcdFx0XHRcdGxhYmVsID0geyB0cjogJ0FuYXNheWZhJywgZW46ICdIb21lJyB9O1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRsYWJlbCA9IGl0ZW0ubGFiZWwgfHwgeyB0cjogJ0JpbGlubWV5ZW4nLCBlbjogJ1Vua25vd24nIH07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRjb25zdCBub2RlOiBNZW51Tm9kZSA9IHtcclxuXHRcdFx0XHRcdGtleSxcclxuXHRcdFx0XHRcdGxhYmVsLFxyXG5cdFx0XHRcdFx0aWNvbjogaXRlbS5pY29uLFxyXG5cdFx0XHRcdFx0cm91dGVyTGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRcdFx0ZXhwYW5kZWQ6IGZhbHNlXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5idWlsZFNpdGVNYXBOb2RlcyhpdGVtLml0ZW1zLCBrZXkpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjb3VudFRvdGFsUGFnZXMobm9kZXM6IE1lbnVOb2RlW10pOiBudW1iZXIge1xyXG5cdFx0bGV0IGNvdW50ID0gMDtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHRpZiAobm9kZS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0Y291bnQrKztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGNvdW50ICs9IHRoaXMuY291bnRUb3RhbFBhZ2VzKG5vZGUuY2hpbGRyZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY291bnQ7XHJcblx0fVxyXG5cclxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKT8udG9Mb2NhbGVMb3dlckNhc2UoY3VycmVudExhbmcpPy50cmltKCk7XHJcblx0XHRpZiAoIXNlYXJjaFRlcm0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLnNpdGVNYXBOb2RlcygpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJOb2Rlcyh0aGlzLnNpdGVNYXBOb2RlcygpLCBzZWFyY2hUZXJtKTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChmaWx0ZXJlZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51Tm9kZVtdIHtcclxuXHRcdGNvbnN0IGZpbHRlcmVkOiBNZW51Tm9kZVtdID0gW107XHJcblx0XHRjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblxyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdC8vIENvbnZlcnQgbGFiZWwgdG8gc3RyaW5nIGZvciBzZWFyY2ggYmFzZWQgb24gYWN0aXZlIGxhbmd1YWdlXHJcblx0XHRcdGNvbnN0IGxhYmVsVGV4dCA9XHJcblx0XHRcdFx0dHlwZW9mIG5vZGUubGFiZWwgPT09ICdzdHJpbmcnID9cclxuXHRcdFx0XHRcdG5vZGUubGFiZWxcclxuXHRcdFx0XHQ6XHQobm9kZS5sYWJlbCBhcyBhbnkpPy5bY3VycmVudExhbmddIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LnRyIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LmVuIHx8ICcnO1xyXG5cclxuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IGxhYmVsVGV4dC50b0xvY2FsZUxvd2VyQ2FzZShjdXJyZW50TGFuZykuaW5jbHVkZXMoc2VhcmNoVGVybSk7XHJcblx0XHRcdGxldCBmaWx0ZXJlZENoaWxkcmVuOiBNZW51Tm9kZVtdID0gW107XHJcblxyXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbHRlck5vZGVzKG5vZGUuY2hpbGRyZW4sIHNlYXJjaFRlcm0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAobWF0Y2hlcyB8fCBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRmaWx0ZXJlZC5wdXNoKHtcclxuXHRcdFx0XHRcdC4uLm5vZGUsXHJcblx0XHRcdFx0XHRjaGlsZHJlbjogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwID8gZmlsdGVyZWRDaGlsZHJlbiA6IG5vZGUuY2hpbGRyZW4sXHJcblx0XHRcdFx0XHRleHBhbmRlZDogZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmlsdGVyZWQ7XHJcblx0fVxyXG5cclxuXHRleHBhbmRBbGwoKTogdm9pZCB7XHJcblx0XHRjb25zdCBleHBhbmRlZCA9IHRoaXMuZXhwYW5kTm9kZXModGhpcy5maWx0ZXJlZE5vZGVzKCksIHRydWUpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uZXhwYW5kZWRdKTtcclxuXHR9XHJcblxyXG5cdGNvbGxhcHNlQWxsKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29sbGFwc2VkID0gdGhpcy5leHBhbmROb2Rlcyh0aGlzLmZpbHRlcmVkTm9kZXMoKSwgZmFsc2UpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4uY29sbGFwc2VkXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGV4cGFuZE5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBleHBhbmRlZDogYm9vbGVhbik6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIG5vZGVzLm1hcCgobm9kZSkgPT4gKHtcclxuXHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0ZXhwYW5kZWQsXHJcblx0XHRcdGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuID8gdGhpcy5leHBhbmROb2Rlcyhub2RlLmNoaWxkcmVuLCBleHBhbmRlZCkgOiB1bmRlZmluZWRcclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUpOiB2b2lkIHtcclxuXHRcdG5vZGUuZXhwYW5kZWQgPSAhbm9kZS5leHBhbmRlZDtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHR0cmFja0J5S2V5KGluZGV4OiBudW1iZXIsIG5vZGU6IE1lbnVOb2RlKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub2RlLmtleSB8fCBgJHtpbmRleH1gO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRwb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxyXG5cdHN0eWxlQ2xhc3M9XCJsYXlvdXQtc2l0ZW1hcC1zaWRlYmFyIHctZnVsbCBzbTp3LTMwcmVtXCJcclxuXHQqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICdzaXRlTWFwJ1wiPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMiB3LWZ1bGxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwIHRleHQtcHJpbWFyeSB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCdzaXRlTWFwJykgfX08L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0b3RhbC1wYWdlc1wiPnt7IHRvdGFsUGFnZXMoKSB9fSB7eyB0KCdwYWdlcycpIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzaXRlbWFwLWNvbnRlbnRcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VjdGlvbiBncmlkIHAtZmx1aWQgbS0wXCI+XHJcblx0XHRcdDxhcmlsLXRleHRcclxuXHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwidCgnc2VhcmNoUGFnZXMnKVwiXHJcblx0XHRcdFx0WyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuXHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCJcclxuXHRcdFx0XHRjbGFzcz1cImNvbC0xMCBtLTBcIj5cclxuXHRcdFx0PC9hcmlsLXRleHQ+XHJcblx0XHRcdEBpZiAoZmlsdGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC0yIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIG0tMCBwLTBcIj5cclxuXHRcdFx0XHRcdDxmYS1pY29uXHJcblx0XHRcdFx0XHRcdFtpY29uXT1cInNvbGlkSWNvbnMuZmFBbmdsZXNEb3duXCJcclxuXHRcdFx0XHRcdFx0c2l6ZT1cInhsXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcilcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0xIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cInQoJ2V4cGFuZEFsbCcpXCJcclxuXHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImV4cGFuZEFsbCgpXCI+XHJcblx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHQ8ZmEtaWNvblxyXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJzb2xpZEljb25zLmZhQW5nbGVzVXBcIlxyXG5cdFx0XHRcdFx0XHRzaXplPVwieGxcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiB2YXIoLS1yZWQtNTAwKVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY29sLTEgbWwtMyBjdXJzb3ItcG9pbnRlclwiXHJcblx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdjb2xsYXBzZUFsbCcpXCJcclxuXHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImNvbGxhcHNlQWxsKClcIj5cclxuXHRcdFx0XHRcdDwvZmEtaWNvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblxyXG5cdFx0PCEtLSBTaXRlIE1hcCBUcmVlIC0tPlxyXG5cdFx0QGlmIChmaWx0ZXJlZE5vZGVzKCkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2l0ZW1hcC10cmVlXCI+XHJcblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdEBmb3IgKG5vZGUgb2YgZmlsdGVyZWROb2RlcygpOyB0cmFjayB0cmFja0J5S2V5KCRpbmRleCwgbm9kZSkpIHtcclxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwIGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHR7eyBzZWFyY2hUZXJtKCkgPyB0KCdub1NlYXJjaFJlc3VsdHMnKSA6IHQoJ25vUGFnZXMnKSB9fVxyXG5cdFx0XHRcdFx0PC9oMz5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPlxyXG5cdFx0XHRcdFx0XHR7eyBzZWFyY2hUZXJtKCkgPyB0KCd0cnlEaWZmZXJlbnRLZXl3b3JkcycpIDogJycgfX1cclxuXHRcdFx0XHRcdDwvcD5cclxuXHRcdFx0XHRcdEBpZiAoc2VhcmNoVGVybSgpKSB7XHJcblx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCdjbGVhclNlYXJjaCcpXCJcclxuXHRcdFx0XHRcdFx0XHRpY29uPVwiVElNRVNcIlxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJzZWFyY2hUZXJtLnNldCgnJyk7IG9uU2VhcmNoQ2hhbmdlKClcIj5cclxuXHRcdFx0XHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblxyXG5cdFx0PCEtLSBSZWN1cnNpdmUgVHJlZSBOb2RlIFRlbXBsYXRlIC0tPlxyXG5cdFx0PG5nLXRlbXBsYXRlICN0cmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlIGxldC1sZXZlbD1cImxldmVsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLW5vZGVcIiBbc3R5bGUubWFyZ2luLWxlZnQucHhdPVwibGV2ZWwgKiAyMFwiPlxyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLXBhZ2VdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiIW5vZGUucm91dGVyTGluayA/IHRvZ2dsZU5vZGUobm9kZSkgOiAodmlzaWJsZSA9IGZhbHNlKVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWNoZXZyb24tcmlnaHRdPVwiIW5vZGUuZXhwYW5kZWRcIiBbY2xhc3MucGktY2hldnJvbi1kb3duXT1cIm5vZGUuZXhwYW5kZWRcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IG5vZGUubGFiZWwgfCB0cmFuc2xhdGVKc29uIH19PC9zcGFuPlxyXG5cclxuXHRcdFx0XHRcdFx0QGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImV4dGVybmFsLWljb24gcGkgcGktZXh0ZXJuYWwtbGlua1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDwhLS0gUmVjdXJzaXZlIENoaWxkcmVuIC0tPlxyXG5cdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkKSB7XHJcblx0XHRcdFx0XHRAZm9yIChjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyB0cmFjayB0cmFja0J5S2V5KCRpbmRleCwgY2hpbGQpKSB7XHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFx0XHQqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjaGlsZCwgbGV2ZWw6IGxldmVsICsgMSB9XCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9kaXY+XHJcbjwvcC1zaWRlYmFyPlxyXG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC11aS1idXNpbmVzcy1wZGYtcHJldmlldy1tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvcGRmLXByZXZpZXctbW9kYWwvYXJpbC11aS1idXNpbmVzcy1wZGYtcHJldmlldy1tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './src/pdf-preview-modal.component';
|
|
2
|
+
export * from './src/open-pdf-preview';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3BkZi1wcmV2aWV3LW1vZGFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL3BkZi1wcmV2aWV3LW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3JjL29wZW4tcGRmLXByZXZpZXcnO1xyXG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PdfPreviewModalComponent } from './pdf-preview-modal.component';
|
|
2
|
+
export const PDF_PREVIEW_DIALOG_DEFAULTS = {
|
|
3
|
+
width: '60%',
|
|
4
|
+
height: '85vh',
|
|
5
|
+
contentStyle: { padding: '0', overflow: 'hidden', height: '100%' },
|
|
6
|
+
focusOnShow: false,
|
|
7
|
+
draggable: true,
|
|
8
|
+
closable: true,
|
|
9
|
+
header: 'PDF'
|
|
10
|
+
};
|
|
11
|
+
export function openPdfPreview(dialogService, options) {
|
|
12
|
+
const { header, width, height, overrideConfig, ...data } = options;
|
|
13
|
+
const config = {
|
|
14
|
+
...PDF_PREVIEW_DIALOG_DEFAULTS,
|
|
15
|
+
header: header ?? PDF_PREVIEW_DIALOG_DEFAULTS.header,
|
|
16
|
+
width: width ?? PDF_PREVIEW_DIALOG_DEFAULTS.width,
|
|
17
|
+
height: height ?? PDF_PREVIEW_DIALOG_DEFAULTS.height,
|
|
18
|
+
...overrideConfig,
|
|
19
|
+
data
|
|
20
|
+
};
|
|
21
|
+
return dialogService.open(PdfPreviewModalComponent, config);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1wZGYtcHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvcGRmLXByZXZpZXctbW9kYWwvc3JjL29wZW4tcGRmLXByZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHdCQUF3QixFQUF1QixNQUFNLCtCQUErQixDQUFDO0FBUzlGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFpQztJQUN4RSxLQUFLLEVBQUUsS0FBSztJQUNaLE1BQU0sRUFBRSxNQUFNO0lBQ2QsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7SUFDbEUsV0FBVyxFQUFFLEtBQUs7SUFDbEIsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxLQUFLO0NBQ2IsQ0FBQztBQUVGLE1BQU0sVUFBVSxjQUFjLENBQzdCLGFBQTRCLEVBQzVCLE9BQThCO0lBRTlCLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQXdCO1FBQ25DLEdBQUcsMkJBQTJCO1FBQzlCLE1BQU0sRUFBRSxNQUFNLElBQUksMkJBQTJCLENBQUMsTUFBTTtRQUNwRCxLQUFLLEVBQUUsS0FBSyxJQUFJLDJCQUEyQixDQUFDLEtBQUs7UUFDakQsTUFBTSxFQUFFLE1BQU0sSUFBSSwyQkFBMkIsQ0FBQyxNQUFNO1FBQ3BELEdBQUcsY0FBYztRQUNqQixJQUFJO0tBQ0osQ0FBQztJQUNGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBQZGZQcmV2aWV3TW9kYWxDb21wb25lbnQsIFBkZlByZXZpZXdNb2RhbERhdGEgfSBmcm9tICcuL3BkZi1wcmV2aWV3LW1vZGFsLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5QZGZQcmV2aWV3T3B0aW9ucyBleHRlbmRzIFBkZlByZXZpZXdNb2RhbERhdGEge1xyXG5cdGhlYWRlcj86IHN0cmluZztcclxuXHR3aWR0aD86IHN0cmluZztcclxuXHRoZWlnaHQ/OiBzdHJpbmc7XHJcblx0b3ZlcnJpZGVDb25maWc/OiBQYXJ0aWFsPER5bmFtaWNEaWFsb2dDb25maWc+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUERGX1BSRVZJRVdfRElBTE9HX0RFRkFVTFRTOiBQYXJ0aWFsPER5bmFtaWNEaWFsb2dDb25maWc+ID0ge1xyXG5cdHdpZHRoOiAnNjAlJyxcclxuXHRoZWlnaHQ6ICc4NXZoJyxcclxuXHRjb250ZW50U3R5bGU6IHsgcGFkZGluZzogJzAnLCBvdmVyZmxvdzogJ2hpZGRlbicsIGhlaWdodDogJzEwMCUnIH0sXHJcblx0Zm9jdXNPblNob3c6IGZhbHNlLFxyXG5cdGRyYWdnYWJsZTogdHJ1ZSxcclxuXHRjbG9zYWJsZTogdHJ1ZSxcclxuXHRoZWFkZXI6ICdQREYnXHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlblBkZlByZXZpZXcoXHJcblx0ZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuXHRvcHRpb25zOiBPcGVuUGRmUHJldmlld09wdGlvbnNcclxuKTogRHluYW1pY0RpYWxvZ1JlZiB7XHJcblx0Y29uc3QgeyBoZWFkZXIsIHdpZHRoLCBoZWlnaHQsIG92ZXJyaWRlQ29uZmlnLCAuLi5kYXRhIH0gPSBvcHRpb25zO1xyXG5cdGNvbnN0IGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuXHRcdC4uLlBERl9QUkVWSUVXX0RJQUxPR19ERUZBVUxUUyxcclxuXHRcdGhlYWRlcjogaGVhZGVyID8/IFBERl9QUkVWSUVXX0RJQUxPR19ERUZBVUxUUy5oZWFkZXIsXHJcblx0XHR3aWR0aDogd2lkdGggPz8gUERGX1BSRVZJRVdfRElBTE9HX0RFRkFVTFRTLndpZHRoLFxyXG5cdFx0aGVpZ2h0OiBoZWlnaHQgPz8gUERGX1BSRVZJRVdfRElBTE9HX0RFRkFVTFRTLmhlaWdodCxcclxuXHRcdC4uLm92ZXJyaWRlQ29uZmlnLFxyXG5cdFx0ZGF0YVxyXG5cdH07XHJcblx0cmV0dXJuIGRpYWxvZ1NlcnZpY2Uub3BlbihQZGZQcmV2aWV3TW9kYWxDb21wb25lbnQsIGNvbmZpZyk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Component, inject, signal } from '@angular/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';
|
|
4
|
+
import { MessagesModule } from 'primeng/messages';
|
|
5
|
+
import { LoaderComponent } from 'aril/ui/loader';
|
|
6
|
+
import { PdfViewerComponent } from 'aril/ui/pdf-viewer';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "primeng/messages";
|
|
9
|
+
export class PdfPreviewModalComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.ref = inject(DynamicDialogRef);
|
|
12
|
+
this.dialogConfig = inject(DynamicDialogConfig);
|
|
13
|
+
this.http = inject(HttpClient);
|
|
14
|
+
this.pdfBase64 = signal(undefined);
|
|
15
|
+
this.fileName = signal(undefined);
|
|
16
|
+
this.loading = signal(false);
|
|
17
|
+
this.messages = signal([]);
|
|
18
|
+
const data = this.dialogConfig.data;
|
|
19
|
+
this.fileName.set(data?.fileNameForDownload);
|
|
20
|
+
if (data?.pdfBase64) {
|
|
21
|
+
this.pdfBase64.set(data.pdfBase64);
|
|
22
|
+
}
|
|
23
|
+
else if (data?.url) {
|
|
24
|
+
this.loadFromUrl(data.url, data.errorMessage);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.messages.set([
|
|
28
|
+
{ severity: 'error', detail: data?.errorMessage ?? 'Görüntülenecek PDF verisi bulunamadı' }
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
loadFromUrl(url, errorMessage) {
|
|
33
|
+
this.loading.set(true);
|
|
34
|
+
this.http.get(url, { responseType: 'blob' }).subscribe({
|
|
35
|
+
next: (blob) => {
|
|
36
|
+
const reader = new FileReader();
|
|
37
|
+
reader.onloadend = () => {
|
|
38
|
+
const base64 = reader.result;
|
|
39
|
+
this.pdfBase64.set(base64.split(',')[1] || base64);
|
|
40
|
+
this.loading.set(false);
|
|
41
|
+
};
|
|
42
|
+
reader.onerror = () => this.handleError(errorMessage);
|
|
43
|
+
reader.readAsDataURL(blob);
|
|
44
|
+
},
|
|
45
|
+
error: () => this.handleError(errorMessage)
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
handleError(errorMessage) {
|
|
49
|
+
this.messages.set([{ severity: 'error', detail: errorMessage ?? 'PDF yüklenemedi' }]);
|
|
50
|
+
this.loading.set(false);
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PdfPreviewModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: PdfPreviewModalComponent, isStandalone: true, selector: "aril-pdf-preview-modal", ngImport: i0, template: `
|
|
54
|
+
@if (pdfBase64()) {
|
|
55
|
+
<div style="width: 100%; height: 100%; margin: 0;">
|
|
56
|
+
<aril-pdf-viewer
|
|
57
|
+
[base64Src]="pdfBase64()!"
|
|
58
|
+
[fileNameForDownload]="fileName() ?? ''"
|
|
59
|
+
height="100%" />
|
|
60
|
+
</div>
|
|
61
|
+
} @else if (loading()) {
|
|
62
|
+
<aril-loader />
|
|
63
|
+
} @else if (messages().length > 0) {
|
|
64
|
+
<p-messages [value]="messages()" [enableService]="false" [closable]="false" />
|
|
65
|
+
}
|
|
66
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i1.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "component", type: PdfViewerComponent, selector: "aril-pdf-viewer", inputs: ["showSidebarButton", "showFindButton", "showZoomButtons", "showPresentationModeButton", "height", "page", "src", "base64Src", "allowContextMenu", "handTool", "httpHeaders", "fileNameForDownload"] }, { kind: "component", type: LoaderComponent, selector: "aril-loader" }] }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PdfPreviewModalComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{
|
|
71
|
+
standalone: true,
|
|
72
|
+
selector: 'aril-pdf-preview-modal',
|
|
73
|
+
imports: [MessagesModule, PdfViewerComponent, LoaderComponent],
|
|
74
|
+
template: `
|
|
75
|
+
@if (pdfBase64()) {
|
|
76
|
+
<div style="width: 100%; height: 100%; margin: 0;">
|
|
77
|
+
<aril-pdf-viewer
|
|
78
|
+
[base64Src]="pdfBase64()!"
|
|
79
|
+
[fileNameForDownload]="fileName() ?? ''"
|
|
80
|
+
height="100%" />
|
|
81
|
+
</div>
|
|
82
|
+
} @else if (loading()) {
|
|
83
|
+
<aril-loader />
|
|
84
|
+
} @else if (messages().length > 0) {
|
|
85
|
+
<p-messages [value]="messages()" [enableService]="false" [closable]="false" />
|
|
86
|
+
}
|
|
87
|
+
`
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: () => [] });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXByZXZpZXctbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9wZGYtcHJldmlldy1tb2RhbC9zcmMvcGRmLXByZXZpZXctbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBNEJ4RCxNQUFNLE9BQU8sd0JBQXdCO0lBVXBDO1FBVFMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQyxjQUFTLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUNqRCxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQVksRUFBRSxDQUFDLENBQUM7UUFHaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUF1QyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTdDLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNqQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLElBQUksc0NBQXNDLEVBQUU7YUFDM0YsQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNGLENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVyxFQUFFLFlBQXFCO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN0RCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDZCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtvQkFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQWdCLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUM7b0JBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7U0FDM0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFdBQVcsQ0FBQyxZQUFxQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxJQUFJLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OEdBN0NXLHdCQUF3QjtrR0FBeEIsd0JBQXdCLGtGQWYxQjs7Ozs7Ozs7Ozs7OztFQWFULDJEQWRTLGNBQWMsNFJBQUUsa0JBQWtCLDBRQUFFLGVBQWU7OzJGQWdCakQsd0JBQXdCO2tCQW5CcEMsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsQ0FBQztvQkFDOUQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0VBYVQ7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgTWVzc2FnZXNNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcclxuXHJcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvbG9hZGVyJztcclxuaW1wb3J0IHsgUGRmVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9wZGYtdmlld2VyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGRmUHJldmlld01vZGFsRGF0YSB7XHJcblx0cGRmQmFzZTY0Pzogc3RyaW5nO1xyXG5cdHVybD86IHN0cmluZztcclxuXHRmaWxlTmFtZUZvckRvd25sb2FkPzogc3RyaW5nO1xyXG5cdGVycm9yTWVzc2FnZT86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtcGRmLXByZXZpZXctbW9kYWwnLFxyXG5cdGltcG9ydHM6IFtNZXNzYWdlc01vZHVsZSwgUGRmVmlld2VyQ29tcG9uZW50LCBMb2FkZXJDb21wb25lbnRdLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHRAaWYgKHBkZkJhc2U2NCgpKSB7XHJcblx0XHRcdDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBtYXJnaW46IDA7XCI+XHJcblx0XHRcdFx0PGFyaWwtcGRmLXZpZXdlclxyXG5cdFx0XHRcdFx0W2Jhc2U2NFNyY109XCJwZGZCYXNlNjQoKSFcIlxyXG5cdFx0XHRcdFx0W2ZpbGVOYW1lRm9yRG93bmxvYWRdPVwiZmlsZU5hbWUoKSA/PyAnJ1wiXHJcblx0XHRcdFx0XHRoZWlnaHQ9XCIxMDAlXCIgLz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIGlmIChsb2FkaW5nKCkpIHtcclxuXHRcdFx0PGFyaWwtbG9hZGVyIC8+XHJcblx0XHR9IEBlbHNlIGlmIChtZXNzYWdlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PHAtbWVzc2FnZXMgW3ZhbHVlXT1cIm1lc3NhZ2VzKClcIiBbZW5hYmxlU2VydmljZV09XCJmYWxzZVwiIFtjbG9zYWJsZV09XCJmYWxzZVwiIC8+XHJcblx0XHR9XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmUHJldmlld01vZGFsQ29tcG9uZW50IHtcclxuXHRyZWFkb25seSByZWYgPSBpbmplY3QoRHluYW1pY0RpYWxvZ1JlZik7XHJcblx0cHJpdmF0ZSByZWFkb25seSBkaWFsb2dDb25maWcgPSBpbmplY3QoRHluYW1pY0RpYWxvZ0NvbmZpZyk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG5cclxuXHRwZGZCYXNlNjQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdGZpbGVOYW1lID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHRsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuXHRtZXNzYWdlcyA9IHNpZ25hbDxNZXNzYWdlW10+KFtdKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRjb25zdCBkYXRhID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YSBhcyBQZGZQcmV2aWV3TW9kYWxEYXRhIHwgdW5kZWZpbmVkO1xyXG5cdFx0dGhpcy5maWxlTmFtZS5zZXQoZGF0YT8uZmlsZU5hbWVGb3JEb3dubG9hZCk7XHJcblxyXG5cdFx0aWYgKGRhdGE/LnBkZkJhc2U2NCkge1xyXG5cdFx0XHR0aGlzLnBkZkJhc2U2NC5zZXQoZGF0YS5wZGZCYXNlNjQpO1xyXG5cdFx0fSBlbHNlIGlmIChkYXRhPy51cmwpIHtcclxuXHRcdFx0dGhpcy5sb2FkRnJvbVVybChkYXRhLnVybCwgZGF0YS5lcnJvck1lc3NhZ2UpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5tZXNzYWdlcy5zZXQoW1xyXG5cdFx0XHRcdHsgc2V2ZXJpdHk6ICdlcnJvcicsIGRldGFpbDogZGF0YT8uZXJyb3JNZXNzYWdlID8/ICdHw7Zyw7xudMO8bGVuZWNlayBQREYgdmVyaXNpIGJ1bHVuYW1hZMSxJyB9XHJcblx0XHRcdF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBsb2FkRnJvbVVybCh1cmw6IHN0cmluZywgZXJyb3JNZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xyXG5cdFx0dGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKGJsb2IpID0+IHtcclxuXHRcdFx0XHRjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cdFx0XHRcdHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBiYXNlNjQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcclxuXHRcdFx0XHRcdHRoaXMucGRmQmFzZTY0LnNldChiYXNlNjQuc3BsaXQoJywnKVsxXSB8fCBiYXNlNjQpO1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRyZWFkZXIub25lcnJvciA9ICgpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3JNZXNzYWdlKTtcclxuXHRcdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6ICgpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3JNZXNzYWdlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yTWVzc2FnZT86IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5tZXNzYWdlcy5zZXQoW3sgc2V2ZXJpdHk6ICdlcnJvcicsIGRldGFpbDogZXJyb3JNZXNzYWdlID8/ICdQREYgecO8a2xlbmVtZWRpJyB9XSk7XHJcblx0XHR0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
42
42
|
type: HostListener,
|
|
43
43
|
args: ['activeIndexChange', ['$event']]
|
|
44
44
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hY3RpdmUtdGFiLXJvdXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9zeW5jLWFjdGl2ZS10YWItcm91dGUvc3JjL3N5bmMtYWN0aXZlLXRhYi1yb3V0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTXBDLE1BQU0sT0FBTywyQkFBMkI7SUFHdkMsWUFDa0IsTUFBYyxFQUNkLE9BQWdCLEVBQ2hCLFFBQWtCO1FBRmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMbkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTWhELENBQUM7SUFFSixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3pCLElBQUksQ0FBQyxNQUFNO2FBQ1QsYUFBYSxDQUFDLEVBQUUsRUFBRTtZQUNsQixXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQzdCLG1CQUFtQixFQUFFLE9BQU87U0FDNUIsQ0FBQzthQUNELFFBQVEsRUFBRSxDQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0FqQ1csMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCO3dIQXFCQSxXQUFXO3NCQURWLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgVGFiVmlldyB9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHNlbGVjdG9yOiAnW3N5bmNBY3RpdmVUYWJSb3V0ZV0nLFxyXG5cdHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFN5bmNBY3RpdmVUYWJSb3V0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0YWJWaWV3OiBUYWJWaWV3LFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb25cclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG5cdFx0XHR0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcclxuXHRcdFx0XHRpZiAocGFyYW1zLmhhcygnYWN0aXZlVGFiJykpIHtcclxuXHRcdFx0XHRcdHRoaXMudGFiVmlldy5hY3RpdmVJbmRleCA9IE51bWJlcihwYXJhbXMuZ2V0KCdhY3RpdmVUYWInKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdEBIb3N0TGlzdGVuZXIoJ2FjdGl2ZUluZGV4Q2hhbmdlJywgWyckZXZlbnQnXSlcclxuXHRvblRhYkNoYW5nZShlOiBudW1iZXIpIHtcclxuXHRcdHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKFxyXG5cdFx0XHR0aGlzLnJvdXRlclxyXG5cdFx0XHRcdC5jcmVhdGVVcmxUcmVlKFtdLCB7XHJcblx0XHRcdFx0XHRxdWVyeVBhcmFtczogeyBhY3RpdmVUYWI6IGUgfSxcclxuXHRcdFx0XHRcdHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdC50b1N0cmluZygpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\n\nimport { KeycloakBearerInterceptor } from 'keycloak-angular';\n\nimport { bridge } from 'aril/boot/bridge';\nimport { Apps } from 'aril/boot/config/apps';\n\ntype HostApp = Apps.THOR | Apps.YEAP | Apps.LENA;\n\nconst HOST_APP_HEADERS: Record<HostApp, Readonly<Record<string, string>>> = {\n\t[Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },\n\t[Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },\n\t[Apps.YEAP]: { 'x-yeap-application': 'yeap', 'x-application': 'yeap', 'x-module': 'yeap-fe' }\n};\n\nconst isHostApp = (value: string | null | undefined): value is HostApp =>\n\tvalue === Apps.THOR || value === Apps.LENA || value === Apps.YEAP;\n\nconst getCsrfToken = (): string | undefined =>\n\tdocument.cookie\n\t\t.split('; ')\n\t\t.find((row) => row.startsWith('csrf_token='))\n\t\t?.split('=')[1];\n\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n\tconst activeHost = bridge.activeHost();\n\tconst headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};\n\tconst csrfToken = getCsrfToken();\n\n\tconst authReq = req.clone({\n\t\tsetHeaders: {\n\t\t\tcsrf_token: csrfToken ?? '',\n\t\t\t...headers\n\t\t}\n\t});\n\n\treturn next(authReq);\n};\n\nexport const keycloakAuthInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) =>\n\tinject(KeycloakBearerInterceptor).intercept(req, { handle: next });\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAUA,MAAM,gBAAgB,GAAsD;AAC3E,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;CAC7F,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAgC,KAClD,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC;AAEnE,MAAM,YAAY,GAAG,MACpB,QAAQ,CAAC,MAAM;KACb,KAAK,CAAC,IAAI,CAAC;AACX,KAAA,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7C,MAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAEL,eAAe,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAI;AACpG,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1E,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;AAEjC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,UAAU,EAAE;YACX,UAAU,EAAE,SAAS,IAAI,EAAE;AAC3B,YAAA,GAAG,OAAO;AACV,SAAA;AACD,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,EAAE;AAEW,MAAA,uBAAuB,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KACxG,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;ACzClE;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { KeycloakBearerInterceptor } from 'keycloak-angular';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\ntype HostApp = Apps.THOR | Apps.YEAP | Apps.LENA;\r\n\r\nconst HOST_APP_HEADERS: Record<HostApp, Readonly<Record<string, string>>> = {\r\n\t[Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },\r\n\t[Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },\r\n\t[Apps.YEAP]: { 'x-yeap-application': 'yeap', 'x-application': 'yeap', 'x-module': 'yeap-fe' }\r\n};\r\n\r\nconst isHostApp = (value: string | null | undefined): value is HostApp =>\r\n\tvalue === Apps.THOR || value === Apps.LENA || value === Apps.YEAP;\r\n\r\nconst getCsrfToken = (): string | undefined =>\r\n\tdocument.cookie\r\n\t\t.split('; ')\r\n\t\t.find((row) => row.startsWith('csrf_token='))\r\n\t\t?.split('=')[1];\r\n\r\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst activeHost = bridge.activeHost();\r\n\tconst headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};\r\n\tconst csrfToken = getCsrfToken();\r\n\r\n\tconst authReq = req.clone({\r\n\t\tsetHeaders: {\r\n\t\t\tcsrf_token: csrfToken ?? '',\r\n\t\t\t...headers\r\n\t\t}\r\n\t});\r\n\r\n\treturn next(authReq);\r\n};\r\n\r\nexport const keycloakAuthInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) =>\r\n\tinject(KeycloakBearerInterceptor).intercept(req, { handle: next });\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAUA,MAAM,gBAAgB,GAAsD;AAC3E,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;CAC7F,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAgC,KAClD,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC;AAEnE,MAAM,YAAY,GAAG,MACpB,QAAQ,CAAC,MAAM;KACb,KAAK,CAAC,IAAI,CAAC;AACX,KAAA,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7C,MAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAEL,eAAe,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAI;AACpG,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1E,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;AAEjC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,UAAU,EAAE;YACX,UAAU,EAAE,SAAS,IAAI,EAAE;AAC3B,YAAA,GAAG,OAAO;AACV,SAAA;AACD,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,EAAE;AAEW,MAAA,uBAAuB,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KACxG,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;ACzClE;;AAEG;;;;"}
|
|
@@ -1124,7 +1124,7 @@ class SiteMapSidebarComponent {
|
|
|
1124
1124
|
return node.key || `${index}`;
|
|
1125
1125
|
}
|
|
1126
1126
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, deps: [{ token: LayoutService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\n\t*transloco=\"let t; read: 'siteMap'\">\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\n\t\t\t<div class=\"flex align-items-center gap-2\">\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<div class=\"sitemap-content\">\n\t\t<div class=\"search-section grid p-fluid m-0\">\n\t\t\t<aril-text\n\t\t\t\t[placeholder]=\"t('searchPages')\"\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\n\t\t\t\tclass=\"col-10 m-0\">\n\t\t\t</aril-text>\n\t\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"expandAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"collapseAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Site Map Tree -->\n\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"sitemap-tree\">\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\n\t\t\t\t\t<div class=\"tree-container\">\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</p-scrollPanel>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"empty-state\">\n\t\t\t\t<div class=\"empty-content\">\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\n\t\t\t\t\t<h3 class=\"empty-title\">\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p class=\"empty-message\">\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\n\t\t\t\t\t</p>\n\t\t\t\t\t@if (searchTerm()) {\n\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\n\t\t\t\t\t\t\ticon=\"TIMES\"\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\n\t\t\t\t\t\t</aril-button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Recursive Tree Node Template -->\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"node-item\"\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\n\t\t\t\t\t<div class=\"node-content\">\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (node.icon) {\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\n\n\t\t\t\t\t\t@if (node.routerLink) {\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Recursive Children -->\n\t\t\t\t@if (node.children && node.expanded) {\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</p-sidebar>\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
|
|
1127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
|
|
1128
1128
|
}
|
|
1129
1129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, decorators: [{
|
|
1130
1130
|
type: Component,
|
|
@@ -1140,7 +1140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
1140
1140
|
TranslocoModule,
|
|
1141
1141
|
TranslateJsonPipe,
|
|
1142
1142
|
FontAwesomeModule
|
|
1143
|
-
], template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\n\t*transloco=\"let t; read: 'siteMap'\">\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\n\t\t\t<div class=\"flex align-items-center gap-2\">\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n\t<div class=\"sitemap-content\">\n\t\t<div class=\"search-section grid p-fluid m-0\">\n\t\t\t<aril-text\n\t\t\t\t[placeholder]=\"t('searchPages')\"\n\t\t\t\t[(ngModel)]=\"searchTerm\"\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\n\t\t\t\tclass=\"col-10 m-0\">\n\t\t\t</aril-text>\n\t\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"expandAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t\t<fa-icon\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\n\t\t\t\t\t\tsize=\"xl\"\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t(click)=\"collapseAll()\">\n\t\t\t\t\t</fa-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\n\t\t<!-- Site Map Tree -->\n\t\t@if (filteredNodes().length > 0) {\n\t\t\t<div class=\"sitemap-tree\">\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\n\t\t\t\t\t<div class=\"tree-container\">\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</p-scrollPanel>\n\t\t\t</div>\n\t\t} @else {\n\t\t\t<div class=\"empty-state\">\n\t\t\t\t<div class=\"empty-content\">\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\n\t\t\t\t\t<h3 class=\"empty-title\">\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p class=\"empty-message\">\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\n\t\t\t\t\t</p>\n\t\t\t\t\t@if (searchTerm()) {\n\t\t\t\t\t\t<aril-button\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\n\t\t\t\t\t\t\ticon=\"TIMES\"\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\n\t\t\t\t\t\t</aril-button>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\n\t\t<!-- Recursive Tree Node Template -->\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"node-item\"\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\n\t\t\t\t\t<div class=\"node-content\">\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (node.icon) {\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\n\n\t\t\t\t\t\t@if (node.routerLink) {\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Recursive Children -->\n\t\t\t\t@if (node.children && node.expanded) {\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</div>\n\t\t</ng-template>\n\t</div>\n</p-sidebar>\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
|
|
1143
|
+
], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"] }]
|
|
1144
1144
|
}], ctorParameters: () => [{ type: LayoutService }, { type: i5.TranslocoService }] });
|
|
1145
1145
|
|
|
1146
1146
|
// API Endpoints
|