@ngrdt/router 0.0.54 → 0.0.55
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.
|
@@ -387,9 +387,14 @@ class RdtAngularRoute {
|
|
|
387
387
|
res.canMatch = undefined;
|
|
388
388
|
res = {
|
|
389
389
|
path: path,
|
|
390
|
+
pathMatch: 'prefix',
|
|
390
391
|
children: [res, ...this.children],
|
|
391
392
|
canActivateChild: this.canActivateChild,
|
|
392
393
|
canMatch: this.getCanMatch(),
|
|
394
|
+
data: res.data,
|
|
395
|
+
providers: res.providers,
|
|
396
|
+
canActivate: res.canActivate,
|
|
397
|
+
canDeactivate: res.canDeactivate,
|
|
393
398
|
};
|
|
394
399
|
}
|
|
395
400
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrdt-router.mjs","sources":["../tmp-esm2022/lib/services/rdt-cannot-be-entered.token.js","../tmp-esm2022/lib/services/rdt-confirm-data-loss.service.js","../tmp-esm2022/lib/rdt-route/utils.js","../tmp-esm2022/lib/services/rdt-routes.token.js","../tmp-esm2022/lib/services/rdt-router.service.js","../tmp-esm2022/lib/rdt-route/constants.js","../tmp-esm2022/lib/rdt-route/rdt-angular-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-base.js","../tmp-esm2022/lib/rdt-route/rdt-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-builder.js","../tmp-esm2022/lib/directives/rdt-any-route-active.directive.js","../tmp-esm2022/lib/directives/rdt-back-link.directive.js","../tmp-esm2022/lib/directives/rdt-router-link.directive.js","../tmp-esm2022/lib/guards/prevent-data-loss.guard.js","../tmp-esm2022/lib/guards/global-route-guard.service.js","../tmp-esm2022/ngrdt-router.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n/**\n * Injection token that defines behavior when route cannot be entered (canBeEntered returns false).\n * If value is undefined, route will be redirected to ''.\n */\nexport const RDT_CANNOT_BE_ENTERED_PROVIDER = new InjectionToken('RDT_CANNOT_BE_ENTERED', { factory: () => undefined, providedIn: 'root' });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1jYW5ub3QtYmUtZW50ZXJlZC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUU5RCx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0UmVkaXJlY3RGbiwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZWZpbmVzIGJlaGF2aW9yIHdoZW4gcm91dGUgY2Fubm90IGJlIGVudGVyZWQgKGNhbkJlRW50ZXJlZCByZXR1cm5zIGZhbHNlKS5cbiAqIElmIHZhbHVlIGlzIHVuZGVmaW5lZCwgcm91dGUgd2lsbCBiZSByZWRpcmVjdGVkIHRvICcnLlxuICovXG5leHBvcnQgY29uc3QgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRSZWRpcmVjdEZuIHwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlXG4+KCdSRFRfQ0FOTk9UX0JFX0VOVEVSRUQnLCB7IGZhY3Rvcnk6ICgpID0+IHVuZGVmaW5lZCwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { defer, of } from 'rxjs';\nexport const RDT_CONFIRM_DATA_LOSS_SERVICE = new InjectionToken('RDT_CONFIRM_DATA_LOSS_SERVICE', { factory: () => new RdtConfirmDataLossServiceAlert() });\nexport class RdtConfirmDataLossService {\n}\nexport class RdtConfirmDataLossServiceAlert extends RdtConfirmDataLossService {\n confirmDataLoss() {\n return defer(() => of(confirm('Are you sure you want to leave this page?')));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvc2VydmljZXMvcmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQ2hCLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLEVBQUUsQ0FDeEQsQ0FBQztBQUVKLE1BQU0sT0FBZ0IseUJBQXlCO0NBRTlDO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNsRSxlQUFlO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9DT05GSVJNX0RBVEFfTE9TU19TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmR0Q29uZmlybURhdGFMb3NzU2VydmljZT4oXHJcbiAgICAnUkRUX0NPTkZJUk1fREFUQV9MT1NTX1NFUlZJQ0UnLFxyXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBuZXcgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZUFsZXJ0KCkgfVxyXG4gICk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZSB7XHJcbiAgYWJzdHJhY3QgY29uZmlybURhdGFMb3NzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlQWxlcnQgZXh0ZW5kcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlIHtcclxuICBvdmVycmlkZSBjb25maXJtRGF0YUxvc3MoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cclxuICAgICAgb2YoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT8nKSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtParameters {\n params;\n constructor(params = {}) {\n this.params = params;\n }\n get(route) {\n return this.params[route.absolutePath] ?? null;\n }\n set(route, params) {\n this.params[route.absolutePath] = params;\n return this;\n }\n *[Symbol.iterator]() {\n const keys = Object.keys(this.params);\n keys.sort((a, b) => a.length - b.length);\n for (const key of keys) {\n yield [key, this.params[key]];\n }\n }\n}\nexport function ALWAYS_TRUE() {\n return true;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxNQUFNLE9BQU8sYUFBYTtJQUNKO0lBQXBCLFlBQW9CLFNBQTRCLEVBQUU7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFBRyxDQUFDO0lBRXRELEdBQUcsQ0FBbUIsS0FBa0I7UUFDdEMsT0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQWdCLElBQUksSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxHQUFHLENBQW1CLEtBQWtCLEVBQUUsTUFBa0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFJRCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgUGFyYW1UeXBlTWFwPFQ+ID0ge1xyXG4gIFtrZXkgaW4ga2V5b2YgVF0/OiAnc3RyaW5nJyB8ICdudW1iZXInO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbU1hcHBpbmcge1xyXG4gIHVybE5hbWU6IHN0cmluZztcclxuICB0YWJsZU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNSb3V0ZVBhcmFtcyB7XHJcbiAgW2Fic29sdXRlUGF0aDogc3RyaW5nXTogb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZHRSZWRpcmVjdFJldHVyblR5cGUgPSBzdHJpbmcgfCB2b2lkIHwgdW5kZWZpbmVkO1xyXG5cclxuZXhwb3J0IHR5cGUgUmR0UmVkaXJlY3RGbiA9IChcclxuICBjdXJyZW50UGF0aDogc3RyaW5nLFxyXG4gIHRhcmdldFBhdGg6IHN0cmluZyxcclxuICB0YXJnZXRSb3V0ZTogUmR0Um91dGVcclxuKSA9PiBSZHRSZWRpcmVjdFJldHVyblR5cGU7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0UGFyYW1ldGVycyB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJhbXM6IFN0YXRpY1JvdXRlUGFyYW1zID0ge30pIHt9XHJcblxyXG4gIGdldDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4pOiBQYXJ0aWFsPFQ+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFyYW1zW3JvdXRlLmFic29sdXRlUGF0aF0gYXMgUGFydGlhbDxUPikgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHNldDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4sIHBhcmFtczogUGFydGlhbDxUPikge1xyXG4gICAgdGhpcy5wYXJhbXNbcm91dGUuYWJzb2x1dGVQYXRoXSA9IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucGFyYW1zKTtcclxuICAgIGtleXMuc29ydCgoYSwgYikgPT4gYS5sZW5ndGggLSBiLmxlbmd0aCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgIHlpZWxkIFtrZXksIHRoaXMucGFyYW1zW2tleV1dO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTG9hZENvbXBvbmVudENhbGxiYWNrID0gUm91dGVbJ2xvYWRDb21wb25lbnQnXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBTFdBWVNfVFJVRSgpIHtcclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const RDT_ROUTES_PROVIDER = new InjectionToken('RDT_ROUTES_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZHQtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSRFRfUk9VVEVTX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJkdFJvdXRlW10+KFxyXG4gICdSRFRfUk9VVEVTX1BST1ZJREVSJ1xyXG4pO1xyXG4iXX0=","import { Location, PlatformLocation } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { filter, take } from 'rxjs';\nimport { RdtParameters } from '../rdt-route/utils';\nimport { RDT_ROUTES_PROVIDER } from './rdt-routes.token';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_TARGET = '_self';\nconst RDT_STATE_PARAMS_KEY = 'RdtStateParams';\nexport class RdtRouterService {\n allRoutes = inject(RDT_ROUTES_PROVIDER, { optional: true });\n location = inject(Location);\n router = inject(Router);\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n _previousUrl = null;\n _currentUrl = null;\n get previousUrl() {\n return this._previousUrl;\n }\n get currentUrl() {\n return this._currentUrl;\n }\n parsePreviousUrl() {\n return this._previousUrl ? this.parseAbsoluteUrl(this._previousUrl) : null;\n }\n parseCurrentUrl() {\n return this._currentUrl ? this.parseAbsoluteUrl(this._currentUrl) : null;\n }\n navigationEnd$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n nextNavigationEnd$ = this.navigationEnd$.pipe(take(1));\n constructor() {\n if (this.allRoutes === null) {\n console.warn('All routes not provided. Make sure to provide RDT_ROUTES_PROVIDER with RdtRoute[].');\n this.allRoutes = [];\n }\n this.navigationEnd$.subscribe((e) => {\n this._previousUrl = this._currentUrl;\n this._currentUrl = e.url;\n });\n }\n /**\n * @returns window.history.state extended by state parameters passed from parent window.\n */\n getHistoryState() {\n if ('RdtStateParams' in window &&\n typeof window[RDT_STATE_PARAMS_KEY] === 'object') {\n return { ...window[RDT_STATE_PARAMS_KEY], ...(history.state ?? {}) };\n }\n else {\n return history.state ?? {};\n }\n }\n /**\n * Navigates to the specified route.\n * @param link Route to navigate to.\n * @param params Parameter of route passed as first argument or RdtParameters object.\n * @param extras Allows you to specify additional parameters for navigation. These extras have higher priority than those defined in the route.\n * @returns Promise that resolves when navigation is complete.\n */\n navigate(link, params, extras) {\n let url;\n if (params instanceof RdtParameters) {\n let linkCpy = link;\n for (let r = linkCpy; r !== null; r = r.parent) {\n const p = params.get(r);\n if (p) {\n linkCpy = linkCpy.withStaticParams(r, p);\n }\n }\n url = linkCpy.createAbsoluteUrl();\n }\n else {\n url = params ? link.createAbsoluteUrl(params) : link.createAbsoluteUrl();\n }\n const target = extras?.target ?? DEFAULT_TARGET;\n const queryParams = extras?.query ?? link.queryParams;\n const stateParams = extras?.state ?? link.stateParams;\n if (target === '_self') {\n return this.router.navigate([url], {\n queryParams: queryParams,\n state: stateParams,\n replaceUrl: extras?.replaceUrl,\n });\n }\n const absolutePath = RdtStringUtils.createAbsoluteUrl(url, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n const win = window.open(pathWithParams, target);\n if (win) {\n win[RDT_STATE_PARAMS_KEY] = stateParams;\n }\n return Promise.resolve(true);\n }\n navigateHome(extras) {\n return this.router.navigateByUrl(RdtStringUtils.appendQueryParams('/', extras?.query ?? {}), {\n state: extras?.state,\n replaceUrl: extras?.replaceUrl,\n });\n }\n navigateBack(extras) {\n const parsed = this.parseAbsoluteUrl();\n if (parsed) {\n let route = parsed.route.withStaticParams(parsed.params);\n do {\n route = route.parent;\n } while (route && route.entryDisabled);\n // In case route has no ancestor with allowed entry,\n if (!route) {\n return this.navigateHome(extras);\n }\n if (extras) {\n if (extras.query) {\n route = route.withQueryParams(extras.query);\n }\n if (extras.state) {\n route = route.withStateParams(extras.state);\n }\n }\n return this.navigate(route, extras);\n }\n else {\n console.warn(`Cannot go back from ${this.location.path()} because no route matches current url`);\n return null;\n }\n }\n /**\n * This method will try to find matching route for given absolute URL, extract its parameters and return them.\n * If no route matches the URL, it returns null. Parameters are extracted only for the last matching route, not ancestors.\n * @param url Absolute URL to parse (e.g. '/home/details/123?query=abc').\n * @returns Object containing the matching route and its parameters, or null if no route is matching.\n */\n parseAbsoluteUrl(url = this.location.path()) {\n const stripped = RdtStringUtils.stripQueryParams(url);\n if (this.allRoutes) {\n for (const route of this.allRoutes) {\n const params = route.parseAbsoluteUrl(stripped);\n if (params) {\n return { route, params };\n }\n }\n }\n return null;\n }\n extractAllParams(currentRoute) {\n if (!currentRoute) {\n const parsed = this.parseAbsoluteUrl();\n if (!parsed) {\n console.warn('No route matches current url.');\n return new RdtParameters();\n }\n currentRoute = parsed.route;\n }\n const url = this.location.path();\n const stripped = RdtStringUtils.stripQueryParams(url);\n return currentRoute.parseAbsoluteUrl(stripped);\n }\n isParentOfCurrentLocation(route) {\n return true;\n }\n removeQueryParams(...paramNames) {\n const regex = new RegExp(`[?&](${paramNames.join('|')})=[^&]*`, 'g');\n return history.replaceState(history.state, '', location.pathname + location.search.replace(regex, '').replace(/^&/, '?'));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFTekQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQy9CLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFLOUMsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixTQUFTLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFcEQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBRWxFLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBQ25DLFdBQVcsR0FBa0IsSUFBSSxDQUFDO0lBRTFDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFD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QUFDO1FBRXJFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FDekIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEVBQ0YsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7dUdBbE1VLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uLCBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0U3RyaW5nVXRpbHMgfSBmcm9tICdAbmdyZHQvdXRpbHMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuaW1wb3J0IHsgUmR0UGFyYW1ldGVycyB9IGZyb20gJy4uL3JkdC1yb3V0ZS91dGlscyc7XHJcbmltcG9ydCB7IFJEVF9ST1VURVNfUFJPVklERVIgfSBmcm9tICcuL3JkdC1yb3V0ZXMudG9rZW4nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZHROYXZpZ2F0ZUV4dHJhcyB7XHJcbiAgc3RhdGU/OiBQYXJhbXM7XHJcbiAgcXVlcnk/OiBQYXJhbXM7XHJcbiAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xyXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1RBUkdFVCA9ICdfc2VsZic7XHJcbmNvbnN0IFJEVF9TVEFURV9QQVJBTVNfS0VZID0gJ1JkdFN0YXRlUGFyYW1zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZXJTZXJ2aWNlIHtcclxuICByZWFkb25seSBhbGxSb3V0ZXMgPSBpbmplY3QoUkRUX1JPVVRFU19QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VIcmVmID0gaW5qZWN0KFBsYXRmb3JtTG9jYXRpb24pLmdldEJhc2VIcmVmRnJvbURPTSgpO1xyXG5cclxuICBwcml2YXRlIF9wcmV2aW91c1VybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBwcmV2aW91c1VybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1VybDtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50VXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRVcmw7XHJcbiAgfVxyXG5cclxuICBwYXJzZVByZXZpb3VzVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzVXJsID8gdGhpcy5wYXJzZUFic29sdXRlVXJsKHRoaXMuX3ByZXZpb3VzVXJsKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwYXJzZUN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFVybCA/IHRoaXMucGFyc2VBYnNvbHV0ZVVybCh0aGlzLl9jdXJyZW50VXJsKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBuYXZpZ2F0aW9uRW5kJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcclxuICApIGFzIE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD47XHJcblxyXG4gIHJlYWRvbmx5IG5leHROYXZpZ2F0aW9uRW5kJCA9IHRoaXMubmF2aWdhdGlvbkVuZCQucGlwZSh0YWtlKDEpKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAodGhpcy5hbGxSb3V0ZXMgPT09IG51bGwpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICdBbGwgcm91dGVzIG5vdCBwcm92aWRlZC4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgUkRUX1JPVVRFU19QUk9WSURFUiB3aXRoIFJkdFJvdXRlW10uJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmFsbFJvdXRlcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmF2aWdhdGlvbkVuZCQuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMuX3ByZXZpb3VzVXJsID0gdGhpcy5fY3VycmVudFVybDtcclxuICAgICAgdGhpcy5fY3VycmVudFVybCA9IGUudXJsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyB3aW5kb3cuaGlzdG9yeS5zdGF0ZSBleHRlbmRlZCBieSBzdGF0ZSBwYXJhbWV0ZXJzIHBhc3NlZCBmcm9tIHBhcmVudCB3aW5kb3cuXHJcbiAgICovXHJcbiAgZ2V0SGlzdG9yeVN0YXRlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAnUmR0U3RhdGVQYXJhbXMnIGluIHdpbmRvdyAmJlxyXG4gICAgICB0eXBlb2Ygd2luZG93W1JEVF9TVEFURV9QQVJBTVNfS0VZXSA9PT0gJ29iamVjdCdcclxuICAgICkge1xyXG4gICAgICByZXR1cm4geyAuLi53aW5kb3dbUkRUX1NUQVRFX1BBUkFNU19LRVldLCAuLi4oaGlzdG9yeS5zdGF0ZSA/PyB7fSkgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBoaXN0b3J5LnN0YXRlID8/IHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBzcGVjaWZpZWQgcm91dGUuXHJcbiAgICogQHBhcmFtIGxpbmsgUm91dGUgdG8gbmF2aWdhdGUgdG8uXHJcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXIgb2Ygcm91dGUgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50IG9yIFJkdFBhcmFtZXRlcnMgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBleHRyYXMgQWxsb3dzIHlvdSB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgbmF2aWdhdGlvbi4gVGhlc2UgZXh0cmFzIGhhdmUgaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhvc2UgZGVmaW5lZCBpbiB0aGUgcm91dGUuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gbmF2aWdhdGlvbiBpcyBjb21wbGV0ZS5cclxuICAgKi9cclxuICBuYXZpZ2F0ZTxUIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIGxpbms6IFJkdFJvdXRlPFQ+LFxyXG4gICAgcGFyYW1zPzogUGFydGlhbDxUPiB8IFJkdFBhcmFtZXRlcnMsXHJcbiAgICBleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhc1xyXG4gICkge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgaWYgKHBhcmFtcyBpbnN0YW5jZW9mIFJkdFBhcmFtZXRlcnMpIHtcclxuICAgICAgbGV0IGxpbmtDcHkgPSBsaW5rO1xyXG4gICAgICBmb3IgKGxldCByOiBSZHRSb3V0ZSB8IG51bGwgPSBsaW5rQ3B5OyByICE9PSBudWxsOyByID0gci5wYXJlbnQpIHtcclxuICAgICAgICBjb25zdCBwID0gcGFyYW1zLmdldChyIGFzIFJkdFJvdXRlKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgbGlua0NweSA9IGxpbmtDcHkud2l0aFN0YXRpY1BhcmFtcyhyLCBwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdXJsID0gbGlua0NweS5jcmVhdGVBYnNvbHV0ZVVybCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gcGFyYW1zID8gbGluay5jcmVhdGVBYnNvbHV0ZVVybChwYXJhbXMpIDogbGluay5jcmVhdGVBYnNvbHV0ZVVybCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IGV4dHJhcz8udGFyZ2V0ID8/IERFRkFVTFRfVEFSR0VUO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBleHRyYXM/LnF1ZXJ5ID8/IGxpbmsucXVlcnlQYXJhbXM7XHJcbiAgICBjb25zdCBzdGF0ZVBhcmFtcyA9IGV4dHJhcz8uc3RhdGUgPz8gbGluay5zdGF0ZVBhcmFtcztcclxuXHJcbiAgICBpZiAodGFyZ2V0ID09PSAnX3NlbGYnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcclxuICAgICAgICBzdGF0ZTogc3RhdGVQYXJhbXMsXHJcbiAgICAgICAgcmVwbGFjZVVybDogZXh0cmFzPy5yZXBsYWNlVXJsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBSZHRTdHJpbmdVdGlscy5jcmVhdGVBYnNvbHV0ZVVybCh1cmwsIHRoaXMuYmFzZUhyZWYpO1xyXG4gICAgY29uc3QgcGF0aFdpdGhQYXJhbXMgPSBSZHRTdHJpbmdVdGlscy5hcHBlbmRRdWVyeVBhcmFtcyhcclxuICAgICAgYWJzb2x1dGVQYXRoLFxyXG4gICAgICBxdWVyeVBhcmFtc1xyXG4gICAgKTtcclxuICAgIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKHBhdGhXaXRoUGFyYW1zLCB0YXJnZXQpO1xyXG4gICAgaWYgKHdpbikge1xyXG4gICAgICAod2luIGFzIGFueSlbUkRUX1NUQVRFX1BBUkFNU19LRVldID0gc3RhdGVQYXJhbXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVIb21lKGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcclxuICAgICAgUmR0U3RyaW5nVXRpbHMuYXBwZW5kUXVlcnlQYXJhbXMoJy8nLCBleHRyYXM/LnF1ZXJ5ID8/IHt9KSxcclxuICAgICAge1xyXG4gICAgICAgIHN0YXRlOiBleHRyYXM/LnN0YXRlLFxyXG4gICAgICAgIHJlcGxhY2VVcmw6IGV4dHJhcz8ucmVwbGFjZVVybCxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlQmFjayhleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhcykge1xyXG4gICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICBpZiAocGFyc2VkKSB7XHJcbiAgICAgIGxldCByb3V0ZTogUmR0Um91dGUgfCBudWxsID0gcGFyc2VkLnJvdXRlLndpdGhTdGF0aWNQYXJhbXMocGFyc2VkLnBhcmFtcyk7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICByb3V0ZSA9IHJvdXRlLnBhcmVudDtcclxuICAgICAgfSB3aGlsZSAocm91dGUgJiYgcm91dGUuZW50cnlEaXNhYmxlZCk7XHJcblxyXG4gICAgICAvLyBJbiBjYXNlIHJvdXRlIGhhcyBubyBhbmNlc3RvciB3aXRoIGFsbG93ZWQgZW50cnksXHJcbiAgICAgIGlmICghcm91dGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUhvbWUoZXh0cmFzKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXh0cmFzKSB7XHJcbiAgICAgICAgaWYgKGV4dHJhcy5xdWVyeSkge1xyXG4gICAgICAgICAgcm91dGUgPSByb3V0ZS53aXRoUXVlcnlQYXJhbXMoZXh0cmFzLnF1ZXJ5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dHJhcy5zdGF0ZSkge1xyXG4gICAgICAgICAgcm91dGUgPSByb3V0ZS53aXRoU3RhdGVQYXJhbXMoZXh0cmFzLnN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUocm91dGUsIGV4dHJhcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYENhbm5vdCBnbyBiYWNrIGZyb20gJHt0aGlzLmxvY2F0aW9uLnBhdGgoKX0gYmVjYXVzZSBubyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGZpbmQgbWF0Y2hpbmcgcm91dGUgZm9yIGdpdmVuIGFic29sdXRlIFVSTCwgZXh0cmFjdCBpdHMgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZW0uXHJcbiAgICogSWYgbm8gcm91dGUgbWF0Y2hlcyB0aGUgVVJMLCBpdCByZXR1cm5zIG51bGwuIFBhcmFtZXRlcnMgYXJlIGV4dHJhY3RlZCBvbmx5IGZvciB0aGUgbGFzdCBtYXRjaGluZyByb3V0ZSwgbm90IGFuY2VzdG9ycy5cclxuICAgKiBAcGFyYW0gdXJsIEFic29sdXRlIFVSTCB0byBwYXJzZSAoZS5nLiAnL2hvbWUvZGV0YWlscy8xMjM/cXVlcnk9YWJjJykuXHJcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hdGNoaW5nIHJvdXRlIGFuZCBpdHMgcGFyYW1ldGVycywgb3IgbnVsbCBpZiBubyByb3V0ZSBpcyBtYXRjaGluZy5cclxuICAgKi9cclxuICBwYXJzZUFic29sdXRlVXJsKHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpKSB7XHJcbiAgICBjb25zdCBzdHJpcHBlZCA9IFJkdFN0cmluZ1V0aWxzLnN0cmlwUXVlcnlQYXJhbXModXJsKTtcclxuICAgIGlmICh0aGlzLmFsbFJvdXRlcykge1xyXG4gICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMuYWxsUm91dGVzKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gcm91dGUucGFyc2VBYnNvbHV0ZVVybChzdHJpcHBlZCk7XHJcbiAgICAgICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAgICAgcmV0dXJuIHsgcm91dGUsIHBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0QWxsUGFyYW1zKGN1cnJlbnRSb3V0ZT86IFJkdFJvdXRlKTogUmR0UGFyYW1ldGVycyB8IG51bGwge1xyXG4gICAgaWYgKCFjdXJyZW50Um91dGUpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdObyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsLicpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUmR0UGFyYW1ldGVycygpO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnRSb3V0ZSA9IHBhcnNlZC5yb3V0ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgY29uc3Qgc3RyaXBwZWQgPSBSZHRTdHJpbmdVdGlscy5zdHJpcFF1ZXJ5UGFyYW1zKHVybCk7XHJcbiAgICByZXR1cm4gY3VycmVudFJvdXRlLnBhcnNlQWJzb2x1dGVVcmwoc3RyaXBwZWQpO1xyXG4gIH1cclxuXHJcbiAgaXNQYXJlbnRPZkN1cnJlbnRMb2NhdGlvbihyb3V0ZTogUmR0Um91dGUpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUXVlcnlQYXJhbXMoLi4ucGFyYW1OYW1lczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgWz8mXSgke3BhcmFtTmFtZXMuam9pbignfCcpfSk9W14mXSpgLCAnZycpO1xyXG5cclxuICAgIHJldHVybiBoaXN0b3J5LnJlcGxhY2VTdGF0ZShcclxuICAgICAgaGlzdG9yeS5zdGF0ZSxcclxuICAgICAgJycsXHJcbiAgICAgIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoLnJlcGxhY2UocmVnZXgsICcnKS5yZXBsYWNlKC9eJi8sICc/JylcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export var RdtNavigationSource;\n(function (RdtNavigationSource) {\n RdtNavigationSource[\"BREADCRUMB\"] = \"breadcrumb\";\n})(RdtNavigationSource || (RdtNavigationSource = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19","import { Location } from '@angular/common';\nimport { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { RDT_CANNOT_BE_ENTERED_PROVIDER } from '../services/rdt-cannot-be-entered.token';\nimport { RdtNavigationSource } from './constants';\nexport class RdtAngularRoute {\n route;\n children = [];\n // Must be set from component declaration files\n loadComponent;\n loadChildren;\n component;\n providers = [];\n providersForChildren = [];\n resolvers = {};\n canActivate = [];\n canActivateChild = [];\n canDeactivate = [];\n runGuardsAndResolvers;\n data;\n constructor(route) {\n this.route = route;\n }\n provide(...provider) {\n this.providers.push(...provider);\n return this;\n }\n provideToChildren(...provider) {\n this.providersForChildren.push(...provider);\n this.providers.push(...provider);\n return this;\n }\n withLazyComponent(callback) {\n this.loadComponent = callback;\n return this;\n }\n withModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n /**\n * @deprecated Use withModule() instead.\n */\n setModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n withComponent(comp) {\n this.component = comp;\n return this;\n }\n /**\n * @deprecated Use withComponent() instead.\n */\n setComponent(comp) {\n return this.withComponent(comp);\n }\n withChildren(...routes) {\n this.children = routes;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...routes) {\n return this.withChildren(...routes);\n }\n addResolve(paramName, resolver) {\n this.resolvers[paramName] = resolver;\n return this;\n }\n addCanActivate(...fns) {\n this.canActivate.push(...fns);\n return this;\n }\n addCanDeactivate(...fns) {\n this.canDeactivate.push(...fns);\n return this;\n }\n addCanActivateChild(...fns) {\n this.canActivateChild.push(...fns);\n return this;\n }\n withRunGuardsAndResolvers(value) {\n this.runGuardsAndResolvers = value;\n return this;\n }\n /**\n * @deprecated Use withRunGuardsAndResolvers() instead.\n */\n setRunGuardsAndResolvers(value) {\n return this.withRunGuardsAndResolvers(value);\n }\n build() {\n this.checkChildrenMatch();\n let res = {\n path: this.route.path,\n providers: this.providers,\n title: this.route.name,\n canMatch: this.getCanMatch(),\n };\n if (this.component) {\n res.component = this.component;\n }\n else if (this.loadChildren) {\n res.loadChildren = this.loadChildren;\n }\n else if (this.loadComponent) {\n res.loadComponent = this.loadComponent;\n }\n res.data = this.data ?? {\n breadcrumb: {\n label: this.route.name,\n disable: this.route.entryDisabled,\n staticStateParams: {\n src: RdtNavigationSource.BREADCRUMB,\n },\n },\n ...this.route.data,\n };\n const guard = (route, state) => {\n const injector = inject(EnvironmentInjector);\n if (runInInjectionContext(injector, this.route.canBeEntered.bind(this.route))) {\n return true;\n }\n else {\n const router = inject(Router);\n const location = inject(Location);\n let url = inject(RDT_CANNOT_BE_ENTERED_PROVIDER);\n if (typeof url === 'function') {\n //console.error(this.route.absolutePath);\n url = runInInjectionContext(injector, url.bind(url, location.path(), state.url, this.route));\n }\n if (typeof url === 'string') {\n return router.parseUrl(url);\n }\n else {\n return false;\n }\n }\n };\n this.canActivate.push(guard);\n res.canActivate = this.canActivate;\n res.canDeactivate = this.canDeactivate;\n if (this.providersForChildren.length > 0) {\n this.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n // If children exist, change\n // {\n // path: '/path',\n // component: FeatureComponent,\n // children: [...]\n // }\n // into\n // {\n // path: '/path',\n // children: [\n // {\n // path: '',\n // component: FeatureComponent\n // },\n // ...\n // ]\n // }\n if (this.children.length > 0) {\n if (this.loadChildren || this.component || this.loadComponent) {\n const path = res.path;\n res.path = '';\n res.pathMatch = 'full';\n res.canMatch = undefined;\n res = {\n path: path,\n children: [res, ...this.children],\n canActivateChild: this.canActivateChild,\n canMatch: this.getCanMatch(),\n };\n }\n else {\n res.children = this.children;\n }\n }\n if (Object.keys(this.resolvers).length > 0) {\n res.resolve = this.resolvers;\n }\n if (this.runGuardsAndResolvers) {\n res.runGuardsAndResolvers = this.runGuardsAndResolvers;\n }\n return res;\n }\n getCanMatch() {\n const paramMap = this.route.paramMap;\n const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');\n if (!hasNumberParams) {\n return undefined;\n }\n const routeSegmentLength = this.route.path.split('/').length;\n const regex = this.route.regex\n ? new RegExp(`^${this.route.regex.source}$`)\n : this.route.absoluteRegex;\n return [\n (route, segments) => {\n const path = segments\n .slice(0, routeSegmentLength)\n .map((s) => s.path)\n .join('/');\n return regex.test(path);\n },\n ];\n }\n provideToChildrenRec(child) {\n if (!child.providers) {\n child.providers = [];\n }\n this.providersForChildren.forEach((p) => {\n if (typeof p === 'object' && 'provide' in p) {\n const exists = child.providers.some((pr) => {\n if (typeof pr === 'object' && 'provide' in pr) {\n return pr.provide === p.provide;\n }\n return false;\n });\n if (!exists) {\n child.providers.unshift(p);\n }\n }\n else {\n child.providers.unshift(p);\n }\n });\n if (child.children) {\n child.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n }\n checkChildrenMatch() {\n // Check that all routes are present if route is not\n // lazy loaded module.\n if (!this.loadChildren &&\n (this.route.children.length > 0 || this.children.length > 0)) {\n if (this.children.length < this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children\n .map((ch) => ch.name)\n .join(', ')}`);\n }\n else if (this.children.length > this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children\n .map((ch) => ch.path)\n .join(', ')}`);\n }\n const n1 = this.children.map((ch) => ch.path);\n const n2 = this.route.children.map((ch) => ch.path);\n n1.sort();\n n2.sort();\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n throw new Error(`Paths of children provided in RdtRoute and\r\n RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);\n }\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLE1BQU0sRUFFTixxQkFBcUIsR0FFdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQVVMLE1BQU0sR0FJUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlsRCxNQUFNLE9BQU8sZUFBZTtJQUNsQixLQUFLLENBQWM7SUFDbkIsUUFBUSxHQUFZLEVBQUUsQ0FBQztJQUUvQiwrQ0FBK0M7SUFDdkMsYUFBYSxDQUF5QjtJQUN0QyxZQUFZLENBQXdCO0lBQ3BDLFNBQVMsQ0FBYTtJQUN0QixTQUFTLEdBQXdDLEVBQUUsQ0FBQztJQUNwRCxvQkFBb0IsR0FBd0MsRUFBRSxDQUFDO0lBQy9ELFNBQVMsR0FBMEMsRUFBRSxDQUFDO0lBQ3RELFdBQVcsR0FBb0IsRUFBRSxDQUFDO0lBQ2xDLGdCQUFnQixHQUF5QixFQUFFLENBQUM7SUFDNUMsYUFBYSxHQUF5QixFQUFFLENBQUM7SUFDekMscUJBQXFCLENBQXlCO0lBQzlDLElBQUksQ0FBUTtJQUVwQixZQUFZLEtBQWtCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxRQUE2QztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFD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QUM7Z0JBQ25DLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUNiOzRDQUNnQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BELENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXHJcbiAgaW5qZWN0LFxyXG4gIFByb3ZpZGVyLFxyXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgQ2FuQWN0aXZhdGVDaGlsZEZuLFxyXG4gIENhbkFjdGl2YXRlRm4sXHJcbiAgQ2FuRGVhY3RpdmF0ZUZuLFxyXG4gIENhbk1hdGNoRm4sXHJcbiAgRGF0YSxcclxuICBMb2FkQ2hpbGRyZW5DYWxsYmFjayxcclxuICBSZXNvbHZlRm4sXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgUnVuR3VhcmRzQW5kUmVzb2x2ZXJzLFxyXG4gIFVybFNlZ21lbnQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSIH0gZnJvbSAnLi4vc2VydmljZXMvcmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuJztcclxuaW1wb3J0IHsgUmR0TmF2aWdhdGlvblNvdXJjZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuL3JkdC1yb3V0ZSc7XHJcbmltcG9ydCB7IExvYWRDb21wb25lbnRDYWxsYmFjayB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdEFuZ3VsYXJSb3V0ZTxUIGV4dGVuZHMgb2JqZWN0PiB7XHJcbiAgcHJpdmF0ZSByb3V0ZTogUmR0Um91dGU8VD47XHJcbiAgcHJpdmF0ZSBjaGlsZHJlbjogUm91dGVbXSA9IFtdO1xyXG5cclxuICAvLyBNdXN0IGJlIHNldCBmcm9tIGNvbXBvbmVudCBkZWNsYXJhdGlvbiBmaWxlc1xyXG4gIHByaXZhdGUgbG9hZENvbXBvbmVudD86IExvYWRDb21wb25lbnRDYWxsYmFjaztcclxuICBwcml2YXRlIGxvYWRDaGlsZHJlbj86IExvYWRDaGlsZHJlbkNhbGxiYWNrO1xyXG4gIHByaXZhdGUgY29tcG9uZW50PzogVHlwZTxhbnk+O1xyXG4gIHByaXZhdGUgcHJvdmlkZXJzOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSA9IFtdO1xyXG4gIHByaXZhdGUgcHJvdmlkZXJzRm9yQ2hpbGRyZW46IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdID0gW107XHJcbiAgcHJpdmF0ZSByZXNvbHZlcnM6IHsgW2tleTogc3RyaW5nXTogUmVzb2x2ZUZuPHVua25vd24+IH0gPSB7fTtcclxuICBwcml2YXRlIGNhbkFjdGl2YXRlOiBDYW5BY3RpdmF0ZUZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkFjdGl2YXRlQ2hpbGQ6IENhbkFjdGl2YXRlQ2hpbGRGbltdID0gW107XHJcbiAgcHJpdmF0ZSBjYW5EZWFjdGl2YXRlOiBDYW5EZWFjdGl2YXRlRm48VD5bXSA9IFtdO1xyXG4gIHByaXZhdGUgcnVuR3VhcmRzQW5kUmVzb2x2ZXJzPzogUnVuR3VhcmRzQW5kUmVzb2x2ZXJzO1xyXG4gIHByaXZhdGUgZGF0YT86IERhdGE7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJvdXRlOiBSZHRSb3V0ZTxUPikge1xyXG4gICAgdGhpcy5yb3V0ZSA9IHJvdXRlO1xyXG4gIH1cclxuXHJcbiAgcHJvdmlkZSguLi5wcm92aWRlcjogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10pIHtcclxuICAgIHRoaXMucHJvdmlkZXJzLnB1c2goLi4ucHJvdmlkZXIpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlVG9DaGlsZHJlbiguLi5wcm92aWRlcjogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10pIHtcclxuICAgIHRoaXMucHJvdmlkZXJzRm9yQ2hpbGRyZW4ucHVzaCguLi5wcm92aWRlcik7XHJcbiAgICB0aGlzLnByb3ZpZGVycy5wdXNoKC4uLnByb3ZpZGVyKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aExhenlDb21wb25lbnQoY2FsbGJhY2s6IExvYWRDb21wb25lbnRDYWxsYmFjaykge1xyXG4gICAgdGhpcy5sb2FkQ29tcG9uZW50ID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoTW9kdWxlKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRNb2R1bGUoY2FsbGJhY2s6IExvYWRDaGlsZHJlbkNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDaGlsZHJlbiA9IGNhbGxiYWNrO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB3aXRoQ29tcG9uZW50KGNvbXA6IFR5cGU8YW55Pikge1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ29tcG9uZW50KCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoQ29tcG9uZW50KGNvbXApO1xyXG4gIH1cclxuXHJcbiAgd2l0aENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgdGhpcy5jaGlsZHJlbiA9IHJvdXRlcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENoaWxkcmVuKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDaGlsZHJlbiguLi5yb3V0ZXM6IFJvdXRlW10pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDaGlsZHJlbiguLi5yb3V0ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkUmVzb2x2ZShwYXJhbU5hbWU6IHN0cmluZywgcmVzb2x2ZXI6IFJlc29sdmVGbjx1bmtub3duPikge1xyXG4gICAgdGhpcy5yZXNvbHZlcnNbcGFyYW1OYW1lXSA9IHJlc29sdmVyO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZSguLi5mbnM6IENhbkFjdGl2YXRlRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkRlYWN0aXZhdGUoLi4uZm5zOiBDYW5EZWFjdGl2YXRlRm48YW55PltdKSB7XHJcbiAgICB0aGlzLmNhbkRlYWN0aXZhdGUucHVzaCguLi5mbnMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRDYW5BY3RpdmF0ZUNoaWxkKC4uLmZuczogQ2FuQWN0aXZhdGVDaGlsZEZuW10pIHtcclxuICAgIHRoaXMuY2FuQWN0aXZhdGVDaGlsZC5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWU6IFJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgdGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMgPSB2YWx1ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycygpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0UnVuR3VhcmRzQW5kUmVzb2x2ZXJzKHZhbHVlOiBSdW5HdWFyZHNBbmRSZXNvbHZlcnMpIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGQoKTogUm91dGUge1xyXG4gICAgdGhpcy5jaGVja0NoaWxkcmVuTWF0Y2goKTtcclxuXHJcbiAgICBsZXQgcmVzOiBSb3V0ZSA9IHtcclxuICAgICAgcGF0aDogdGhpcy5yb3V0ZS5wYXRoLFxyXG4gICAgICBwcm92aWRlcnM6IHRoaXMucHJvdmlkZXJzLFxyXG4gICAgICB0aXRsZTogdGhpcy5yb3V0ZS5uYW1lLFxyXG4gICAgICBjYW5NYXRjaDogdGhpcy5nZXRDYW5NYXRjaCgpLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jb21wb25lbnQpIHtcclxuICAgICAgcmVzLmNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmxvYWRDaGlsZHJlbikge1xyXG4gICAgICByZXMubG9hZENoaWxkcmVuID0gdGhpcy5sb2FkQ2hpbGRyZW47XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9hZENvbXBvbmVudCkge1xyXG4gICAgICByZXMubG9hZENvbXBvbmVudCA9IHRoaXMubG9hZENvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXMuZGF0YSA9IHRoaXMuZGF0YSA/PyB7XHJcbiAgICAgIGJyZWFkY3J1bWI6IHtcclxuICAgICAgICBsYWJlbDogdGhpcy5yb3V0ZS5uYW1lLFxyXG4gICAgICAgIGRpc2FibGU6IHRoaXMucm91dGUuZW50cnlEaXNhYmxlZCxcclxuICAgICAgICBzdGF0aWNTdGF0ZVBhcmFtczoge1xyXG4gICAgICAgICAgc3JjOiBSZHROYXZpZ2F0aW9uU291cmNlLkJSRUFEQ1JVTUIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgLi4udGhpcy5yb3V0ZS5kYXRhLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBndWFyZDogQ2FuQWN0aXZhdGVGbiA9IChcclxuICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbiAgICApID0+IHtcclxuICAgICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQoXHJcbiAgICAgICAgICBpbmplY3RvcixcclxuICAgICAgICAgIHRoaXMucm91dGUuY2FuQmVFbnRlcmVkLmJpbmQodGhpcy5yb3V0ZSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICAgICAgICBsZXQgdXJsID0gaW5qZWN0KFJEVF9DQU5OT1RfQkVfRU5URVJFRF9QUk9WSURFUik7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIC8vY29uc29sZS5lcnJvcih0aGlzLnJvdXRlLmFic29sdXRlUGF0aCk7XHJcbiAgICAgICAgICB1cmwgPSBydW5JbkluamVjdGlvbkNvbnRleHQoXHJcbiAgICAgICAgICAgIGluamVjdG9yLFxyXG4gICAgICAgICAgICB1cmwuYmluZCh1cmwsIGxvY2F0aW9uLnBhdGgoKSwgc3RhdGUudXJsLCB0aGlzLnJvdXRlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gcm91dGVyLnBhcnNlVXJsKHVybCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmNhbkFjdGl2YXRlLnB1c2goZ3VhcmQpO1xyXG5cclxuICAgIHJlcy5jYW5BY3RpdmF0ZSA9IHRoaXMuY2FuQWN0aXZhdGU7XHJcbiAgICByZXMuY2FuRGVhY3RpdmF0ZSA9IHRoaXMuY2FuRGVhY3RpdmF0ZTtcclxuXHJcbiAgICBpZiAodGhpcy5wcm92aWRlcnNGb3JDaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoY2gpID0+IHRoaXMucHJvdmlkZVRvQ2hpbGRyZW5SZWMoY2gpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBjaGlsZHJlbiBleGlzdCwgY2hhbmdlXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgICBwYXRoOiAnL3BhdGgnLFxyXG4gICAgLy8gICAgY29tcG9uZW50OiBGZWF0dXJlQ29tcG9uZW50LFxyXG4gICAgLy8gICAgY2hpbGRyZW46IFsuLi5dXHJcbiAgICAvLyB9XHJcbiAgICAvLyBpbnRvXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgICBwYXRoOiAnL3BhdGgnLFxyXG4gICAgLy8gICAgY2hpbGRyZW46IFtcclxuICAgIC8vICAgICAge1xyXG4gICAgLy8gICAgICAgIHBhdGg6ICcnLFxyXG4gICAgLy8gICAgICAgIGNvbXBvbmVudDogRmVhdHVyZUNvbXBvbmVudFxyXG4gICAgLy8gICAgICB9LFxyXG4gICAgLy8gICAgLi4uXHJcbiAgICAvLyAgICBdXHJcbiAgICAvLyAgICB9XHJcbiAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvYWRDaGlsZHJlbiB8fCB0aGlzLmNvbXBvbmVudCB8fCB0aGlzLmxvYWRDb21wb25lbnQpIHtcclxuICAgICAgICBjb25zdCBwYXRoID0gcmVzLnBhdGg7XHJcbiAgICAgICAgcmVzLnBhdGggPSAnJztcclxuICAgICAgICByZXMucGF0aE1hdGNoID0gJ2Z1bGwnO1xyXG4gICAgICAgIHJlcy5jYW5NYXRjaCA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXMgPSB7XHJcbiAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgY2hpbGRyZW46IFtyZXMsIC4uLnRoaXMuY2hpbGRyZW5dLFxyXG4gICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLFxyXG4gICAgICAgICAgY2FuTWF0Y2g6IHRoaXMuZ2V0Q2FuTWF0Y2goKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlcy5jaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5yZXNvbHZlcnMpLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmVzLnJlc29sdmUgPSB0aGlzLnJlc29sdmVycztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnMpIHtcclxuICAgICAgcmVzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHRoaXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENhbk1hdGNoKCk6IENhbk1hdGNoRm5bXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBwYXJhbU1hcCA9IHRoaXMucm91dGUucGFyYW1NYXA7XHJcbiAgICBjb25zdCBoYXNOdW1iZXJQYXJhbXMgPSBPYmplY3Qua2V5cyhwYXJhbU1hcCkuc29tZShcclxuICAgICAgKHApID0+IHBhcmFtTWFwW3AgYXMga2V5b2YgVF0gPT09ICdudW1iZXInXHJcbiAgICApO1xyXG4gICAgaWYgKCFoYXNOdW1iZXJQYXJhbXMpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvdXRlU2VnbWVudExlbmd0aCA9IHRoaXMucm91dGUucGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcclxuICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5yb3V0ZS5yZWdleFxyXG4gICAgICA/IG5ldyBSZWdFeHAoYF4ke3RoaXMucm91dGUucmVnZXguc291cmNlfSRgKVxyXG4gICAgICA6IHRoaXMucm91dGUuYWJzb2x1dGVSZWdleDtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIChyb3V0ZTogUm91dGUsIHNlZ21lbnRzOiBVcmxTZWdtZW50W10pID0+IHtcclxuICAgICAgICBjb25zdCBwYXRoID0gc2VnbWVudHNcclxuICAgICAgICAgIC5zbGljZSgwLCByb3V0ZVNlZ21lbnRMZW5ndGgpXHJcbiAgICAgICAgICAubWFwKChzKSA9PiBzLnBhdGgpXHJcbiAgICAgICAgICAuam9pbignLycpO1xyXG4gICAgICAgIHJldHVybiByZWdleC50ZXN0KHBhdGgpO1xyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvdmlkZVRvQ2hpbGRyZW5SZWMoY2hpbGQ6IFJvdXRlKSB7XHJcbiAgICBpZiAoIWNoaWxkLnByb3ZpZGVycykge1xyXG4gICAgICBjaGlsZC5wcm92aWRlcnMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvdmlkZXJzRm9yQ2hpbGRyZW4uZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdvYmplY3QnICYmICdwcm92aWRlJyBpbiBwKSB7XHJcbiAgICAgICAgY29uc3QgZXhpc3RzID0gY2hpbGQucHJvdmlkZXJzIS5zb21lKChwcikgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBwciA9PT0gJ29iamVjdCcgJiYgJ3Byb3ZpZGUnIGluIHByKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwci5wcm92aWRlID09PSBwLnByb3ZpZGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgICAgICAgIGNoaWxkLnByb3ZpZGVycyEudW5zaGlmdChwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2hpbGQucHJvdmlkZXJzIS51bnNoaWZ0KHApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChjaGlsZC5jaGlsZHJlbikge1xyXG4gICAgICBjaGlsZC5jaGlsZHJlbi5mb3JFYWNoKChjaCkgPT4gdGhpcy5wcm92aWRlVG9DaGlsZHJlblJlYyhjaCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0NoaWxkcmVuTWF0Y2goKSB7XHJcbiAgICAvLyBDaGVjayB0aGF0IGFsbCByb3V0ZXMgYXJlIHByZXNlbnQgaWYgcm91dGUgaXMgbm90XHJcbiAgICAvLyBsYXp5IGxvYWRlZCBtb2R1bGUuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmxvYWRDaGlsZHJlbiAmJlxyXG4gICAgICAodGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGggPiAwIHx8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMClcclxuICAgICkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPCB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBSZHRSb3V0ZSAke3RoaXMucm91dGUubmFtZX0gaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9IGNoaWxkcmVuLCBidXQgUmR0QW5ndWxhclJvdXRlIGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfS4gVGhlc2UgbnVtYmVycyBtdXN0IG1hdGNoLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5zZXRDaGlsZHJlbigpIG1ldGhvZCBpbiBnbG9iYWwgcm91dGVzIGRlZmluaXRpb24/IFJvdXRlcyB3aXRoIGZvbGxvd2luZyBuYW1lcyBzaG91bGQgYmUgcHJlc2VudDogJHt0aGlzLnJvdXRlLmNoaWxkcmVuXHJcbiAgICAgICAgICAgIC5tYXAoKGNoKSA9PiBjaC5uYW1lKVxyXG4gICAgICAgICAgICAuam9pbignLCAnKX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYFJkdFJvdXRlICR7dGhpcy5yb3V0ZS5uYW1lfSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0gY2hpbGRyZW4sIGJ1dCBSZHRBbmd1bGFyUm91dGUgaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9LiBUaGVzZSBudW1iZXJzIG11c3QgbWF0Y2guIERpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgLnNldENoaWxkcmVuKCkgbWV0aG9kIGluIGZlYXR1cmUgc2hlbGwgcm91dGVzIGRlZmluaXRpb24/IFJvdXRlcyB3aXRoIGZvbGxvd2luZyBwYXRocyBzaG91bGQgYmUgcHJlc2VudDogJHt0aGlzLmNoaWxkcmVuXHJcbiAgICAgICAgICAgIC5tYXAoKGNoKSA9PiBjaC5wYXRoKVxyXG4gICAgICAgICAgICAuam9pbignLCAnKX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBuMSA9IHRoaXMuY2hpbGRyZW4ubWFwKChjaCkgPT4gY2gucGF0aCEpO1xyXG4gICAgICBjb25zdCBuMiA9IHRoaXMucm91dGUuY2hpbGRyZW4ubWFwKChjaCkgPT4gY2gucGF0aCk7XHJcbiAgICAgIG4xLnNvcnQoKTtcclxuICAgICAgbjIuc29ydCgpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG4xLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKG4xW2ldICE9PSBuMltpXSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgUGF0aHMgb2YgY2hpbGRyZW4gcHJvdmlkZWQgaW4gUmR0Um91dGUgYW5kXHJcbiAgICAgICAgICAgIFJkdEFuZ3VsYXJSb3V0ZSBkbyBub3QgbWF0Y2guICR7bjFbaV19ICE9ICR7bjJbaV19YFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","import { ALWAYS_TRUE } from './utils';\nexport class RdtRouteBase {\n _orderedParams = [];\n _paramMap = {};\n _regex = null;\n _paramMappings = [];\n _name;\n _path;\n _parent = null;\n _children = [];\n _entryDisabled = false;\n _canBeEntered = ALWAYS_TRUE;\n _data = {};\n /**\n * Data that is passed to Angular route definition.\n */\n get data() {\n return this._data;\n }\n /**\n * Regular expression route path relative to parent route.\n * Hostname excluded.\n */\n get regex() {\n return this._regex;\n }\n /**\n * Denotes disabled route entry.\n * If true, route should have no NgModule\n * or component and only serves as virtual module\n * for breadcrumb.\n */\n get entryDisabled() {\n return this._entryDisabled;\n }\n /**\n * Map of parameters and their types.\n */\n get paramMap() {\n return this._paramMap;\n }\n /**\n * Human readable name for display in breadcrumbs, title, etc.\n */\n get name() {\n return this._name;\n }\n /**\n * Path of the route relative to parent route.\n */\n get path() {\n return this._path;\n }\n /**\n * Parent route.\n */\n get parent() {\n return this._parent;\n }\n /**\n * Child routes.\n */\n get children() {\n return this._children;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0sU0FBUyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxZQUFZO0lBQ2IsY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUM5QixTQUFTLEdBQW9CLEVBQUUsQ0FBQztJQUNoQyxNQUFNLEdBQWtCLElBQUksQ0FBQztJQUM3QixjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUVwQyxLQUFLLENBQVU7SUFDZixLQUFLLENBQVU7SUFDZixPQUFPLEdBQW9CLElBQUksQ0FBQztJQUNoQyxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBQzNCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsYUFBYSxHQUFrQixXQUFXLENBQUM7SUFDM0MsS0FBSyxHQUFTLEVBQUUsQ0FBQztJQUUzQjs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGEgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuL3JkdC1yb3V0ZSc7XG5pbXBvcnQgeyBBTFdBWVNfVFJVRSwgUGFyYW1NYXBwaW5nLCBQYXJhbVR5cGVNYXAgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQmFzZTxUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHByb3RlY3RlZCBfb3JkZXJlZFBhcmFtczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9wYXJhbU1hcDogUGFyYW1UeXBlTWFwPFQ+ID0ge307XG4gIHByb3RlY3RlZCBfcmVnZXg6IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgX3BhcmFtTWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdID0gW107XG5cbiAgcHJvdGVjdGVkIF9uYW1lITogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3BhdGghOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcGFyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgX2NoaWxkcmVuOiBSZHRSb3V0ZVtdID0gW107XG4gIHByb3RlY3RlZCBfZW50cnlEaXNhYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2NhbkJlRW50ZXJlZDogKCkgPT4gYm9vbGVhbiA9IEFMV0FZU19UUlVFO1xuICBwcm90ZWN0ZWQgX2RhdGE6IERhdGEgPSB7fTtcblxuICAvKipcbiAgICogRGF0YSB0aGF0IGlzIHBhc3NlZCB0byBBbmd1bGFyIHJvdXRlIGRlZmluaXRpb24uXG4gICAqL1xuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gcm91dGUgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQgcm91dGUuXG4gICAqIEhvc3RuYW1lIGV4Y2x1ZGVkLlxuICAgKi9cbiAgZ2V0IHJlZ2V4KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWdleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZW5vdGVzIGRpc2FibGVkIHJvdXRlIGVudHJ5LlxuICAgKiBJZiB0cnVlLCByb3V0ZSBzaG91bGQgaGF2ZSBubyBOZ01vZHVsZVxuICAgKiBvciBjb21wb25lbnQgYW5kIG9ubHkgc2VydmVzIGFzIHZpcnR1YWwgbW9kdWxlXG4gICAqIGZvciBicmVhZGNydW1iLlxuICAgKi9cbiAgZ2V0IGVudHJ5RGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJ5RGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogTWFwIG9mIHBhcmFtZXRlcnMgYW5kIHRoZWlyIHR5cGVzLlxuICAgKi9cbiAgZ2V0IHBhcmFtTWFwKCk6IFJlYWRvbmx5PFBhcmFtVHlwZU1hcDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBkaXNwbGF5IGluIGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLlxuICAgKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvKipcbiAgICogUGF0aCBvZiB0aGUgcm91dGUgcmVsYXRpdmUgdG8gcGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGg7XG4gIH1cblxuICAvKipcbiAgICogUGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhcmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENoaWxkIHJvdXRlcy5cbiAgICovXG4gIGdldCBjaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47XG4gIH1cbn1cbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { RdtAngularRoute } from './rdt-angular-route';\nimport { RdtRouteBase } from './rdt-route-base';\nimport { ALWAYS_TRUE, RdtParameters } from './utils';\nexport class RdtRoute extends RdtRouteBase {\n _absoluteRegex;\n _staticParams = {};\n _queryParams = {};\n _stateParams = {};\n /**\n * Absolute path of parent route or '/' if there is no parent.\n * Hostname excluded.\n */\n get basePath() {\n return this._parent ? this._parent.absolutePath : '/';\n }\n /**\n * Absolute path of the route. Hostname excluded.\n */\n get absolutePath() {\n return RdtStringUtils.joinPaths(this.basePath, this._path);\n }\n /**\n * Regular expression to match only this route (not children\n * or parent routes). Hostname excluded.\n */\n get absoluteRegex() {\n if (this._absoluteRegex) {\n return this._absoluteRegex;\n }\n if (!this._regex) {\n this._absoluteRegex = new RegExp('^/$');\n if (this._parent) {\n throw new Error('Nested route with empty path is not allowed.');\n }\n }\n else if (this._parent) {\n // Remove initial ^ and ending $\n const parent = this._parent.absoluteRegex.source.slice(1, -1);\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');\n }\n else {\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');\n }\n return this._absoluteRegex;\n }\n /**\n * Statically set state params used when navigating to this instance.\n */\n get stateParams() {\n return this._stateParams;\n }\n /**\n * Statically set query params used when navigating to this instance.\n */\n get queryParams() {\n return this._queryParams;\n }\n /**\n * @param url Absolute path to test.\n * @returns True if url matches this route.\n */\n testUrl(url) {\n return this.absoluteRegex.test(url);\n }\n /**\n * Statically set parameters used when navigating to this instance.\n */\n get staticParams() {\n return { ...this._staticParams };\n }\n get hasCanBeEnteredGuard() {\n return this._canBeEntered !== ALWAYS_TRUE;\n }\n /**\n * Meta guard that is used by [rdtRouterLink] and RdtMenu\n * to determine if route can be entered.\n * @param injector Environment or custom injector.\n * @returns True if route can be entered.\n */\n canBeEntered(injector) {\n return injector\n ? runInInjectionContext(injector, this._canBeEntered)\n : this._canBeEntered();\n }\n /**\n * Extracts url parameters from absolute path for this path and each parent.\n */\n parseAbsoluteUrl(url) {\n const reg = this.absoluteRegex;\n if (!reg.test(url)) {\n return null;\n }\n const matches = reg.exec(url);\n if (matches) {\n const values = matches.slice(1).reverse();\n const obj = this.fill(values);\n if (obj) {\n return new RdtParameters(obj);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n fill(values, res = {}) {\n const params = {};\n const reversedParams = this._orderedParams.slice().reverse();\n for (let i = 0; i < reversedParams.length && i < values.length; i++) {\n const key = reversedParams[i];\n const mappedKey = this._paramMappings.find((m) => m.urlName === key)?.tableName ?? key;\n let val = values[i];\n if (this._paramMap[key] === 'number') {\n val = parseInt(val);\n }\n params[mappedKey] = val;\n }\n res[this.absolutePath] = params;\n if (values.length > reversedParams.length && this._parent) {\n this._parent.fill(values.slice(reversedParams.length), res);\n }\n return res;\n }\n /**\n * Fills parameters in path with values from paramMap.\n * Use withStaticParams() beforehand in case parent paths contain parameters.\n * @param paramMap Must contain all parameters for this route.\n * @returns Absolute path.\n */\n createAbsoluteUrl(paramMap = this._staticParams) {\n if (!this._parent) {\n return this.createUrl(this.absolutePath, paramMap);\n }\n else {\n return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));\n }\n }\n createRelativeUrl(paramMap = this._staticParams) {\n return this.createUrl(this.path, paramMap);\n }\n createUrl(path, paramMap) {\n const paramNames = Object.keys(this._paramMap);\n paramNames.sort((a, b) => b.length - a.length);\n const extendedParamMap = { ...paramMap };\n this._paramMappings.forEach((mapping) => {\n if (mapping.tableName in paramMap) {\n extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];\n }\n });\n paramNames.forEach((param) => {\n if (!(param in extendedParamMap)) {\n throw new Error(`Param ${param} is missing for route ${this.absolutePath}. Please pass object with required parameters.`);\n }\n const value = extendedParamMap[param];\n path = path.replace(`:${param}`, `${value}`);\n });\n return path;\n }\n toAngularRoute() {\n return new RdtAngularRoute(this);\n }\n /**\n * Provides static mapping for parameter names tableName -> urlName.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with mapped parameter names.\n */\n withParamMappings(mappings) {\n const clone = this.clone();\n clone._paramMappings = mappings;\n return clone;\n }\n /**\n * Sets parameters for itself or parents.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with static parameters set.\n */\n withStaticParams(param1, param2) {\n const clone = this.clone();\n if (param2) {\n const routeAbsPath = param1.absolutePath;\n let current = clone;\n while (current) {\n if (current.absolutePath === routeAbsPath) {\n current._staticParams = param2;\n }\n current = current._parent;\n }\n }\n else {\n clone._staticParams = param1;\n }\n return clone;\n }\n withQueryParams(queryParams) {\n const clone = this.clone();\n clone._queryParams = { ...queryParams };\n return clone;\n }\n withStateParams(stateParams) {\n const clone = this.clone();\n clone._stateParams = { ...stateParams };\n return clone;\n }\n /**\n * @returns Partial of object that only contains properties necessary to create this route.\n */\n extractRouteParams(row) {\n const res = {};\n this._orderedParams.forEach((param) => {\n const mapping = this._paramMappings.find((m) => m.urlName === param);\n const mappedParam = (mapping?.tableName ?? param);\n if (mappedParam in row) {\n res[mappedParam] = row[mappedParam];\n }\n });\n return res;\n }\n /**\n * @returns New instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n */\n clone() {\n const clone = new RdtRoute();\n clone._name = this._name;\n clone._parent = this._parent?.clone() ?? null;\n clone._path = this.path;\n clone._entryDisabled = this._entryDisabled;\n clone._orderedParams = [...this._orderedParams];\n clone._paramMap = { ...this._paramMap };\n clone._regex = this._regex ? new RegExp(this._regex) : null;\n clone._paramMappings = this._paramMappings;\n clone._staticParams = { ...this._staticParams };\n clone._stateParams = { ...this._stateParams };\n return clone;\n }\n setRegex() {\n const params = Object.keys(this._paramMap);\n params.sort((a, b) => b.length - a.length);\n let substituted = this.path;\n params.forEach((p) => {\n const type = this._paramMap[p];\n if (!type) {\n throw new Error('Params is not set i');\n }\n substituted = substituted.replace(`:${p}`, RdtRoute.groups[type]);\n });\n if (substituted === '') {\n this._regex = null;\n }\n else {\n this._regex = new RegExp(substituted);\n }\n }\n static fromBuilder(builder) {\n const route = new RdtRoute();\n route._name = builder.name;\n route._path = builder.path;\n route._entryDisabled = builder.entryDisabled;\n route._orderedParams = builder.orderedParams;\n route._canBeEntered = builder.canBeEntered;\n route._paramMap = builder.paramMap;\n route._regex = builder.regex ? new RegExp(builder.regex) : null;\n route._paramMappings = builder.paramMappings;\n route._children = builder.children;\n route._data = builder.data;\n route._children.forEach((child) => (child._parent = route));\n route.setRegex();\n return route;\n }\n static groups = {\n string: '([\\\\w_\\\\-]+)',\n number: '(\\\\d+)',\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFnQixhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbkUsTUFBTSxPQUFPLFFBQWlDLFNBQVEsWUFBZTtJQUMzRCxjQUFjLENBQVU7SUFDdEIsYUFBYSxHQUFlLEVBQUUsQ0FBQztJQUMvQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFFcEM7OztPQUdHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxj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YSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQVUsTUFBTSxHQUFHO1FBQy9CLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFN0cmluZ1V0aWxzIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgUmR0QW5ndWxhclJvdXRlIH0gZnJvbSAnLi9yZHQtYW5ndWxhci1yb3V0ZSc7XHJcbmltcG9ydCB7IFJkdFJvdXRlQmFzZSB9IGZyb20gJy4vcmR0LXJvdXRlLWJhc2UnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJ1aWxkZXIgfSBmcm9tICcuL3JkdC1yb3V0ZS1idWlsZGVyJztcclxuaW1wb3J0IHsgQUxXQVlTX1RSVUUsIFBhcmFtTWFwcGluZywgUmR0UGFyYW1ldGVycyB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IGV4dGVuZHMgUmR0Um91dGVCYXNlPFQ+IHtcclxuICBwcml2YXRlIF9hYnNvbHV0ZVJlZ2V4PzogUmVnRXhwO1xyXG4gIHByb3RlY3RlZCBfc3RhdGljUGFyYW1zOiBQYXJ0aWFsPFQ+ID0ge307XHJcbiAgcHJvdGVjdGVkIF9xdWVyeVBhcmFtczogUGFyYW1zID0ge307XHJcbiAgcHJvdGVjdGVkIF9zdGF0ZVBhcmFtczogUGFyYW1zID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgcGFyZW50IHJvdXRlIG9yICcvJyBpZiB0aGVyZSBpcyBubyBwYXJlbnQuXHJcbiAgICogSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGJhc2VQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50ID8gdGhpcy5fcGFyZW50LmFic29sdXRlUGF0aCA6ICcvJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgdGhlIHJvdXRlLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVQYXRoKCkge1xyXG4gICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyh0aGlzLmJhc2VQYXRoLCB0aGlzLl9wYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBvbmx5IHRoaXMgcm91dGUgKG5vdCBjaGlsZHJlblxyXG4gICAqIG9yIHBhcmVudCByb3V0ZXMpLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVSZWdleCgpOiBSZWdFeHAge1xyXG4gICAgaWYgKHRoaXMuX2Fic29sdXRlUmVnZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlUmVnZXg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9yZWdleCkge1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXi8kJyk7XHJcbiAgICAgIGlmICh0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05lc3RlZCByb3V0ZSB3aXRoIGVtcHR5IHBhdGggaXMgbm90IGFsbG93ZWQuJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIC8vIFJlbW92ZSBpbml0aWFsIF4gYW5kIGVuZGluZyAkXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVJlZ2V4LnNvdXJjZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhwYXJlbnQsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocygnLycsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVJlZ2V4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgc3RhdGUgcGFyYW1zIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHN0YXRlUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgcXVlcnkgcGFyYW1zIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHVybCBBYnNvbHV0ZSBwYXRoIHRvIHRlc3QuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB1cmwgbWF0Y2hlcyB0aGlzIHJvdXRlLlxyXG4gICAqL1xyXG4gIHRlc3RVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmFic29sdXRlUmVnZXgudGVzdCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgcGFyYW1ldGVycyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBzdGF0aWNQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLl9zdGF0aWNQYXJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNDYW5CZUVudGVyZWRHdWFyZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQgIT09IEFMV0FZU19UUlVFO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0YSBndWFyZCB0aGF0IGlzIHVzZWQgYnkgW3JkdFJvdXRlckxpbmtdIGFuZCBSZHRNZW51XHJcbiAgICogdG8gZGV0ZXJtaW5lIGlmIHJvdXRlIGNhbiBiZSBlbnRlcmVkLlxyXG4gICAqIEBwYXJhbSBpbmplY3RvciBFbnZpcm9ubWVudCBvciBjdXN0b20gaW5qZWN0b3IuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiByb3V0ZSBjYW4gYmUgZW50ZXJlZC5cclxuICAgKi9cclxuICBjYW5CZUVudGVyZWQoaW5qZWN0b3I/OiBJbmplY3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGluamVjdG9yXHJcbiAgICAgID8gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCB0aGlzLl9jYW5CZUVudGVyZWQpXHJcbiAgICAgIDogdGhpcy5fY2FuQmVFbnRlcmVkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHRyYWN0cyB1cmwgcGFyYW1ldGVycyBmcm9tIGFic29sdXRlIHBhdGggZm9yIHRoaXMgcGF0aCBhbmQgZWFjaCBwYXJlbnQuXHJcbiAgICovXHJcbiAgcGFyc2VBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IFJkdFBhcmFtZXRlcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHJlZyA9IHRoaXMuYWJzb2x1dGVSZWdleDtcclxuICAgIGlmICghcmVnLnRlc3QodXJsKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG1hdGNoZXMgPSByZWcuZXhlYyh1cmwpO1xyXG4gICAgaWYgKG1hdGNoZXMpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gbWF0Y2hlcy5zbGljZSgxKS5yZXZlcnNlKCk7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZmlsbCh2YWx1ZXMpO1xyXG4gICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZHRQYXJhbWV0ZXJzKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsKHZhbHVlczogc3RyaW5nW10sIHJlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleSBpbiBrZXlvZiBUXT86IHN0cmluZyB8IG51bWJlciB9ID0ge307XHJcbiAgICBjb25zdCByZXZlcnNlZFBhcmFtcyA9IHRoaXMuX29yZGVyZWRQYXJhbXMuc2xpY2UoKS5yZXZlcnNlKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldmVyc2VkUGFyYW1zLmxlbmd0aCAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHJldmVyc2VkUGFyYW1zW2ldIGFzIGtleW9mIFQ7XHJcbiAgICAgIGNvbnN0IG1hcHBlZEtleSA9XHJcbiAgICAgICAgdGhpcy5fcGFyYW1NYXBwaW5ncy5maW5kKChtKSA9PiBtLnVybE5hbWUgPT09IGtleSk/LnRhYmxlTmFtZSA/PyBrZXk7XHJcbiAgICAgIGxldCB2YWw6IHN0cmluZyB8IG51bWJlciA9IHZhbHVlc1tpXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9wYXJhbU1hcFtrZXldID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHZhbCA9IHBhcnNlSW50KHZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1zW21hcHBlZEtleSBhcyBrZXlvZiBUXSA9IHZhbDtcclxuICAgIH1cclxuICAgIHJlc1t0aGlzLmFic29sdXRlUGF0aF0gPSBwYXJhbXM7XHJcblxyXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiByZXZlcnNlZFBhcmFtcy5sZW5ndGggJiYgdGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIHRoaXMuX3BhcmVudC5maWxsKHZhbHVlcy5zbGljZShyZXZlcnNlZFBhcmFtcy5sZW5ndGgpLCByZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbGxzIHBhcmFtZXRlcnMgaW4gcGF0aCB3aXRoIHZhbHVlcyBmcm9tIHBhcmFtTWFwLlxyXG4gICAqIFVzZSB3aXRoU3RhdGljUGFyYW1zKCkgYmVmb3JlaGFuZCBpbiBjYXNlIHBhcmVudCBwYXRocyBjb250YWluIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBhcmFtTWFwIE11c3QgY29udGFpbiBhbGwgcGFyYW1ldGVycyBmb3IgdGhpcyByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBBYnNvbHV0ZSBwYXRoLlxyXG4gICAqL1xyXG4gIGNyZWF0ZUFic29sdXRlVXJsKHBhcmFtTWFwOiBQYXJ0aWFsPFQ+ID0gdGhpcy5fc3RhdGljUGFyYW1zKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybCh0aGlzLmFic29sdXRlUGF0aCwgcGFyYW1NYXApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhcclxuICAgICAgICB0aGlzLl9wYXJlbnQuY3JlYXRlQWJzb2x1dGVVcmwoKSxcclxuICAgICAgICB0aGlzLmNyZWF0ZVJlbGF0aXZlVXJsKHBhcmFtTWFwKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmVsYXRpdmVVcmwocGFyYW1NYXA6IFBhcnRpYWw8VD4gPSB0aGlzLl9zdGF0aWNQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybCh0aGlzLnBhdGgsIHBhcmFtTWFwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVXJsKHBhdGg6IHN0cmluZywgcGFyYW1NYXA6IFBhcnRpYWw8VD4pIHtcclxuICAgIGNvbnN0IHBhcmFtTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbU5hbWVzLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xyXG4gICAgY29uc3QgZXh0ZW5kZWRQYXJhbU1hcDogYW55ID0geyAuLi5wYXJhbU1hcCB9O1xyXG5cclxuICAgIHRoaXMuX3BhcmFtTWFwcGluZ3MuZm9yRWFjaCgobWFwcGluZykgPT4ge1xyXG4gICAgICBpZiAobWFwcGluZy50YWJsZU5hbWUgaW4gcGFyYW1NYXApIHtcclxuICAgICAgICBleHRlbmRlZFBhcmFtTWFwW21hcHBpbmcudXJsTmFtZV0gPSAocGFyYW1NYXAgYXMgYW55KVtcclxuICAgICAgICAgIG1hcHBpbmcudGFibGVOYW1lXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcGFyYW1OYW1lcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBpZiAoIShwYXJhbSBpbiBleHRlbmRlZFBhcmFtTWFwKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBQYXJhbSAke3BhcmFtfSBpcyBtaXNzaW5nIGZvciByb3V0ZSAke3RoaXMuYWJzb2x1dGVQYXRofS4gUGxlYXNlIHBhc3Mgb2JqZWN0IHdpdGggcmVxdWlyZWQgcGFyYW1ldGVycy5gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV4dGVuZGVkUGFyYW1NYXBbcGFyYW0gYXMga2V5b2YgVF07XHJcbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYDoke3BhcmFtfWAsIGAke3ZhbHVlfWApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICB0b0FuZ3VsYXJSb3V0ZSgpIHtcclxuICAgIHJldHVybiBuZXcgUmR0QW5ndWxhclJvdXRlPFQ+KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZXMgc3RhdGljIG1hcHBpbmcgZm9yIHBhcmFtZXRlciBuYW1lcyB0YWJsZU5hbWUgLT4gdXJsTmFtZS5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIG1hcHBlZCBwYXJhbWV0ZXIgbmFtZXMuXHJcbiAgICovXHJcbiAgd2l0aFBhcmFtTWFwcGluZ3MobWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgIGNsb25lLl9wYXJhbU1hcHBpbmdzID0gbWFwcGluZ3M7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHN0YXRpYyBwYXJhbWV0ZXJzIGZvciB0aGlzIHJvdXRlLlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgU3RhdGljIHBhcmFtZXRlcnMgZm9yIHRoaXMgcm91dGUuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyB3aXRoIHN0YXRpYyBwYXJhbWV0ZXJzIHNldC5cclxuICAgKi9cclxuICB3aXRoU3RhdGljUGFyYW1zKHBhcmFtczogVCk6IFJkdFJvdXRlPFQ+O1xyXG4gIHdpdGhTdGF0aWNQYXJhbXM8VDIgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgcm91dGU6IFJkdFJvdXRlPFQyPixcclxuICAgIHBhcmFtczogVDJcclxuICApOiBSZHRSb3V0ZTxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBwYXJhbWV0ZXJzIGZvciBpdHNlbGYgb3IgcGFyZW50cy5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIHN0YXRpYyBwYXJhbWV0ZXJzIHNldC5cclxuICAgKi9cclxuICB3aXRoU3RhdGljUGFyYW1zPFQyIGV4dGVuZHMgb2JqZWN0PihwYXJhbTE6IFJkdFJvdXRlPFQyPiB8IFQsIHBhcmFtMj86IFQyKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuXHJcbiAgICBpZiAocGFyYW0yKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlQWJzUGF0aCA9IChwYXJhbTEgYXMgUmR0Um91dGU8VDI+KS5hYnNvbHV0ZVBhdGg7XHJcbiAgICAgIGxldCBjdXJyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSBjbG9uZTtcclxuXHJcbiAgICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnQuYWJzb2x1dGVQYXRoID09PSByb3V0ZUFic1BhdGgpIHtcclxuICAgICAgICAgIGN1cnJlbnQuX3N0YXRpY1BhcmFtcyA9IHBhcmFtMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2xvbmUuX3N0YXRpY1BhcmFtcyA9IHBhcmFtMSBhcyBUO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3F1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFN0YXRlUGFyYW1zKHN0YXRlUGFyYW1zOiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3N0YXRlUGFyYW1zID0geyAuLi5zdGF0ZVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgUGFydGlhbCBvZiBvYmplY3QgdGhhdCBvbmx5IGNvbnRhaW5zIHByb3BlcnRpZXMgbmVjZXNzYXJ5IHRvIGNyZWF0ZSB0aGlzIHJvdXRlLlxyXG4gICAqL1xyXG4gIGV4dHJhY3RSb3V0ZVBhcmFtcyhyb3c6IFQpOiBQYXJ0aWFsPFQ+IHtcclxuICAgIGNvbnN0IHJlczogUGFydGlhbDxUPiA9IHt9O1xyXG5cclxuICAgIHRoaXMuX29yZGVyZWRQYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgY29uc3QgbWFwcGluZyA9IHRoaXMuX3BhcmFtTWFwcGluZ3MuZmluZCgobSkgPT4gbS51cmxOYW1lID09PSBwYXJhbSk7XHJcbiAgICAgIGNvbnN0IG1hcHBlZFBhcmFtID0gKG1hcHBpbmc/LnRhYmxlTmFtZSA/PyBwYXJhbSkgYXMga2V5b2YgVDtcclxuICAgICAgaWYgKG1hcHBlZFBhcmFtIGluIHJvdykge1xyXG4gICAgICAgIHJlc1ttYXBwZWRQYXJhbV0gPSByb3dbbWFwcGVkUGFyYW1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgTmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKi9cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGNsb25lID0gbmV3IFJkdFJvdXRlPFQ+KCk7XHJcbiAgICBjbG9uZS5fbmFtZSA9IHRoaXMuX25hbWU7XHJcbiAgICBjbG9uZS5fcGFyZW50ID0gdGhpcy5fcGFyZW50Py5jbG9uZSgpID8/IG51bGw7XHJcbiAgICBjbG9uZS5fcGF0aCA9IHRoaXMucGF0aDtcclxuICAgIGNsb25lLl9lbnRyeURpc2FibGVkID0gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICAgIGNsb25lLl9vcmRlcmVkUGFyYW1zID0gWy4uLnRoaXMuX29yZGVyZWRQYXJhbXNdO1xyXG4gICAgY2xvbmUuX3BhcmFtTWFwID0geyAuLi50aGlzLl9wYXJhbU1hcCB9O1xyXG4gICAgY2xvbmUuX3JlZ2V4ID0gdGhpcy5fcmVnZXggPyBuZXcgUmVnRXhwKHRoaXMuX3JlZ2V4KSA6IG51bGw7XHJcbiAgICBjbG9uZS5fcGFyYW1NYXBwaW5ncyA9IHRoaXMuX3BhcmFtTWFwcGluZ3M7XHJcbiAgICBjbG9uZS5fc3RhdGljUGFyYW1zID0geyAuLi50aGlzLl9zdGF0aWNQYXJhbXMgfTtcclxuICAgIGNsb25lLl9zdGF0ZVBhcmFtcyA9IHsgLi4udGhpcy5fc3RhdGVQYXJhbXMgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmVnZXgoKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbXMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XHJcbiAgICBsZXQgc3Vic3RpdHV0ZWQgPSB0aGlzLnBhdGg7XHJcbiAgICBwYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5fcGFyYW1NYXBbcCBhcyBrZXlvZiBUXTtcclxuICAgICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJhbXMgaXMgbm90IHNldCBpJyk7XHJcbiAgICAgIH1cclxuICAgICAgc3Vic3RpdHV0ZWQgPSBzdWJzdGl0dXRlZC5yZXBsYWNlKGA6JHtwfWAsIFJkdFJvdXRlLmdyb3Vwc1t0eXBlXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc3Vic3RpdHV0ZWQgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChzdWJzdGl0dXRlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUJ1aWxkZXI8VCBleHRlbmRzIG9iamVjdD4oYnVpbGRlcjogUmR0Um91dGVCdWlsZGVyPFQ+KSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IG5ldyBSZHRSb3V0ZTxUPigpO1xyXG4gICAgcm91dGUuX25hbWUgPSBidWlsZGVyLm5hbWU7XHJcbiAgICByb3V0ZS5fcGF0aCA9IGJ1aWxkZXIucGF0aDtcclxuICAgIHJvdXRlLl9lbnRyeURpc2FibGVkID0gYnVpbGRlci5lbnRyeURpc2FibGVkO1xyXG4gICAgcm91dGUuX29yZGVyZWRQYXJhbXMgPSBidWlsZGVyLm9yZGVyZWRQYXJhbXM7XHJcbiAgICByb3V0ZS5fY2FuQmVFbnRlcmVkID0gYnVpbGRlci5jYW5CZUVudGVyZWQ7XHJcbiAgICByb3V0ZS5fcGFyYW1NYXAgPSBidWlsZGVyLnBhcmFtTWFwO1xyXG4gICAgcm91dGUuX3JlZ2V4ID0gYnVpbGRlci5yZWdleCA/IG5ldyBSZWdFeHAoYnVpbGRlci5yZWdleCkgOiBudWxsO1xyXG4gICAgcm91dGUuX3BhcmFtTWFwcGluZ3MgPSBidWlsZGVyLnBhcmFtTWFwcGluZ3M7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4gPSBidWlsZGVyLmNoaWxkcmVuO1xyXG4gICAgcm91dGUuX2RhdGEgPSBidWlsZGVyLmRhdGE7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5fcGFyZW50ID0gcm91dGUpKTtcclxuICAgIHJvdXRlLnNldFJlZ2V4KCk7XHJcbiAgICByZXR1cm4gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBncm91cHMgPSB7XHJcbiAgICBzdHJpbmc6ICcoW1xcXFx3X1xcXFwtXSspJyxcclxuICAgIG51bWJlcjogJyhcXFxcZCspJyxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { RdtRoute } from './rdt-route';\nimport { RdtRouteBase } from './rdt-route-base';\nconst DEFAULT_PARAM_TYPE = 'number';\nexport class RdtRouteBuilder extends RdtRouteBase {\n get canBeEntered() {\n return this._canBeEntered;\n }\n get orderedParams() {\n return this._orderedParams;\n }\n get paramMappings() {\n return this._paramMappings;\n }\n /**\n * CanBeEntered function is synchronous function which\n * lets framework hide menu buttons and disable links.\n * Function is run in environment injection context, so\n * you can inject global services, tokens, etc.\n * @param fn\n */\n withCanBeEntered(fn) {\n this._canBeEntered = fn;\n return this;\n }\n /**\n * @deprecated Use withCanBeEntered() instead.\n */\n setCanBeEntered(fn) {\n return this.withCanBeEntered(fn);\n }\n /**\n * Entry disabled route will generate disabled breadcrumb.\n * It should not have any component nor module added to it.\n * @param value\n * @returns\n */\n withEntryDisabled(value = true) {\n this._entryDisabled = value;\n return this;\n }\n /**\n * @deprecated Use withEntryDisabled() instead.\n */\n setEntryDisabled(value = true) {\n return this.withEntryDisabled(value);\n }\n /**\n * Sets path relative to parent. It is defined the same way as Angular route path including parameters.\n * You need to call setParam() for each parameter you use in the path.\n */\n withPath(path) {\n this._path = path;\n const s = path.split('/');\n const params = [];\n s.forEach((part) => {\n if (part.includes(':')) {\n const param = part.split(':')[1];\n if (param) {\n params.push(param);\n if (!this._paramMap[param]) {\n this._paramMap[param] = DEFAULT_PARAM_TYPE;\n }\n }\n }\n });\n this._orderedParams = params;\n return this;\n }\n /**\n * @deprecated Use withPath() instead.\n */\n setPath(path) {\n return this.withPath(path);\n }\n /**\n * Sets Angular route data.\n * @param data Angular route data object. Breadcrumb key is merged into it.\n */\n withData(data) {\n this._data = data;\n return this;\n }\n /**\n * @deprecated Use withData() instead.\n */\n setData(data) {\n return this.withData(data);\n }\n /**\n * Defines parameter type and lets framework parse it.\n * @param paramName\n * @param type\n */\n withParam(paramName, type) {\n this._paramMap[paramName] = type;\n return this;\n }\n /**\n * @deprecated Use withParam() instead.\n */\n setParam(paramName, type) {\n return this.withParam(paramName, type);\n }\n /**\n * Sets name to display in breadcrumb, etc.\n */\n withName(name) {\n this._name = name;\n return this;\n }\n /**\n * @deprecated Use withName() instead.\n */\n setName(name) {\n return this.withName(name);\n }\n /**\n * Call .build() on children before you call this method!\n */\n withChildren(...children) {\n this._children = children;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...children) {\n return this.withChildren(...children);\n }\n build() {\n if (typeof this._path !== 'string') {\n throw new Error('Please provide path for route. Empty string is acceptable.');\n }\n return RdtRoute.fromBuilder(this);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxlQUF3QyxTQUFRLFlBQWU7SUFDMUUsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBaUI7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxlQUFlLENBQUMsRUFBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxTQUFrQixFQUFFLElBQXlCO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFNBQWtCLEVBQUUsSUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsR0FBRyxRQUFvQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFHLFFBQW9CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJhc2UgfSBmcm9tICcuL3JkdC1yb3V0ZS1iYXNlJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFSQU1fVFlQRSA9ICdudW1iZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQnVpbGRlcjxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlQmFzZTxUPiB7XHJcbiAgZ2V0IGNhbkJlRW50ZXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JkZXJlZFBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcmRlcmVkUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcmFtTWFwcGluZ3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1NYXBwaW5ncztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbkJlRW50ZXJlZCBmdW5jdGlvbiBpcyBzeW5jaHJvbm91cyBmdW5jdGlvbiB3aGljaFxyXG4gICAqIGxldHMgZnJhbWV3b3JrIGhpZGUgbWVudSBidXR0b25zIGFuZCBkaXNhYmxlIGxpbmtzLlxyXG4gICAqIEZ1bmN0aW9uIGlzIHJ1biBpbiBlbnZpcm9ubWVudCBpbmplY3Rpb24gY29udGV4dCwgc29cclxuICAgKiB5b3UgY2FuIGluamVjdCBnbG9iYWwgc2VydmljZXMsIHRva2VucywgZXRjLlxyXG4gICAqIEBwYXJhbSBmblxyXG4gICAqL1xyXG4gIHdpdGhDYW5CZUVudGVyZWQoZm46ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2NhbkJlRW50ZXJlZCA9IGZuO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2FuQmVFbnRlcmVkKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDYW5CZUVudGVyZWQoZm46ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDYW5CZUVudGVyZWQoZm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW50cnkgZGlzYWJsZWQgcm91dGUgd2lsbCBnZW5lcmF0ZSBkaXNhYmxlZCBicmVhZGNydW1iLlxyXG4gICAqIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgY29tcG9uZW50IG5vciBtb2R1bGUgYWRkZWQgdG8gaXQuXHJcbiAgICogQHBhcmFtIHZhbHVlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICB3aXRoRW50cnlEaXNhYmxlZCh2YWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuX2VudHJ5RGlzYWJsZWQgPSB2YWx1ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aEVudHJ5RGlzYWJsZWQoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldEVudHJ5RGlzYWJsZWQodmFsdWUgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoRW50cnlEaXNhYmxlZCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHBhdGggcmVsYXRpdmUgdG8gcGFyZW50LiBJdCBpcyBkZWZpbmVkIHRoZSBzYW1lIHdheSBhcyBBbmd1bGFyIHJvdXRlIHBhdGggaW5jbHVkaW5nIHBhcmFtZXRlcnMuXHJcbiAgICogWW91IG5lZWQgdG8gY2FsbCBzZXRQYXJhbSgpIGZvciBlYWNoIHBhcmFtZXRlciB5b3UgdXNlIGluIHRoZSBwYXRoLlxyXG4gICAqL1xyXG4gIHdpdGhQYXRoKHBhdGg6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcGF0aCA9IHBhdGg7XHJcbiAgICBjb25zdCBzID0gcGF0aC5zcGxpdCgnLycpO1xyXG4gICAgY29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgcy5mb3JFYWNoKChwYXJ0KSA9PiB7XHJcbiAgICAgIGlmIChwYXJ0LmluY2x1ZGVzKCc6JykpIHtcclxuICAgICAgICBjb25zdCBwYXJhbSA9IHBhcnQuc3BsaXQoJzonKVsxXSBhcyBrZXlvZiBUO1xyXG4gICAgICAgIGlmIChwYXJhbSkge1xyXG4gICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0gYXMgc3RyaW5nKTtcclxuICAgICAgICAgIGlmICghdGhpcy5fcGFyYW1NYXBbcGFyYW1dKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BhcmFtTWFwW3BhcmFtXSA9IERFRkFVTFRfUEFSQU1fVFlQRTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fb3JkZXJlZFBhcmFtcyA9IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFBhdGgoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoUGF0aChwYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgQW5ndWxhciByb3V0ZSBkYXRhLlxyXG4gICAqIEBwYXJhbSBkYXRhIEFuZ3VsYXIgcm91dGUgZGF0YSBvYmplY3QuIEJyZWFkY3J1bWIga2V5IGlzIG1lcmdlZCBpbnRvIGl0LlxyXG4gICAqL1xyXG4gIHdpdGhEYXRhKGRhdGE6IERhdGEpIHtcclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoRGF0YSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhOiBEYXRhKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoRGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgcGFyYW1ldGVyIHR5cGUgYW5kIGxldHMgZnJhbWV3b3JrIHBhcnNlIGl0LlxyXG4gICAqIEBwYXJhbSBwYXJhbU5hbWVcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqL1xyXG4gIHdpdGhQYXJhbShwYXJhbU5hbWU6IGtleW9mIFQsIHR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicpIHtcclxuICAgIHRoaXMuX3BhcmFtTWFwW3BhcmFtTmFtZV0gPSB0eXBlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUGFyYW0oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFBhcmFtKHBhcmFtTmFtZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIG5hbWUgdG8gZGlzcGxheSBpbiBicmVhZGNydW1iLCBldGMuXHJcbiAgICovXHJcbiAgd2l0aE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aE5hbWUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoTmFtZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGwgLmJ1aWxkKCkgb24gY2hpbGRyZW4gYmVmb3JlIHlvdSBjYWxsIHRoaXMgbWV0aG9kIVxyXG4gICAqL1xyXG4gIHdpdGhDaGlsZHJlbiguLi5jaGlsZHJlbjogUmR0Um91dGVbXSkge1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENoaWxkcmVuKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDaGlsZHJlbiguLi5jaGlsZHJlbjogUmR0Um91dGVbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENoaWxkcmVuKC4uLmNoaWxkcmVuKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9wYXRoICE9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ1BsZWFzZSBwcm92aWRlIHBhdGggZm9yIHJvdXRlLiBFbXB0eSBzdHJpbmcgaXMgYWNjZXB0YWJsZS4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmR0Um91dGUuZnJvbUJ1aWxkZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { DestroyRef, Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule, } from '@angular/router';\nimport { filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst EXACT_TRUE_OPTS = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\nconst EXACT_FALSE_OPTS = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\n/**\n * Directive that appends class to host if any of the watched routes is active.\n */\nexport class RdtAnyRouteActiveDirective {\n destroyRef = inject(DestroyRef);\n router = inject(Router);\n renderer = inject(Renderer2);\n elRef = inject(ElementRef);\n set anyRouteActive(data) {\n this.classes = this.parseClasses(data);\n }\n watchedRoutes = [];\n set anyRouteActiveOptions(value) {\n this._anyRouteActiveOptions = this.parseOptions(value);\n }\n _anyRouteActiveOptions = EXACT_FALSE_OPTS;\n ariaCurrentWhenActive;\n get isActive() {\n return this._isActive;\n }\n _isActive = false;\n classes = [];\n ngOnInit() {\n this.update();\n this.listenRouterEvents();\n }\n ngOnChanges(changes) {\n if (changes['anyRouteActive']?.previousValue) {\n const prev = this.parseClasses(changes['anyRouteActive'].previousValue);\n prev.forEach((c) => this.removeClass(c));\n }\n this.update();\n }\n update() {\n this._isActive = this.watchedRoutes.some((route) => {\n const param = typeof route === 'string' ? route : this.router.createUrlTree(route);\n return this.router.isActive(param, this._anyRouteActiveOptions);\n });\n this.setClasses();\n this.setAriaCurrent();\n }\n setAriaCurrent() {\n const el = this.elRef.nativeElement;\n if (this._isActive && this.ariaCurrentWhenActive !== undefined) {\n const value = this.ariaCurrentWhenActive.toString();\n this.renderer.setAttribute(el, 'aria-current', value);\n }\n else {\n this.renderer.removeAttribute(el, 'aria-current');\n }\n }\n setClasses() {\n if (this._isActive) {\n this.classes.forEach((c) => this.addClass(c));\n }\n else {\n this.classes.forEach((c) => this.removeClass(c));\n }\n }\n addClass(className) {\n this.renderer.addClass(this.elRef.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.elRef.nativeElement, className);\n }\n listenRouterEvents() {\n this.router.events\n .pipe(filter((ev) => ev instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.update());\n }\n parseClasses(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n return classes.filter((c) => !!c);\n }\n parseOptions(input) {\n if ('exact' in input) {\n if (input.exact) {\n return EXACT_TRUE_OPTS;\n }\n else {\n return EXACT_FALSE_OPTS;\n }\n }\n else {\n return input;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtAnyRouteActiveDirective, isStandalone: true, selector: \"[rdtAnyRouteActive]\", inputs: { anyRouteActive: [\"rdtAnyRouteActive\", \"anyRouteActive\"], watchedRoutes: \"watchedRoutes\", anyRouteActiveOptions: \"anyRouteActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\" }, providers: [RouterModule], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtAnyRouteActive]',\n standalone: true,\n providers: [RouterModule],\n }]\n }], propDecorators: { anyRouteActive: [{\n type: Input,\n args: [{ required: true, alias: 'rdtAnyRouteActive' }]\n }], watchedRoutes: [{\n type: Input,\n args: [{ required: true }]\n }], anyRouteActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL2RpcmVjdGl2ZXMvcmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU5QixNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsT0FBTztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBeUI7SUFDN0MsS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLElBQ0ksY0FBYyxDQUFDLElBQXVCO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBR0QsYUFBYSxHQUEwQixFQUFFLENBQUM7SUFFMUMsSUFDSSxxQkFBcUIsQ0FBQyxLQUFnRDtRQUN4RSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ08sc0JBQXNCLEdBQXlCLGdCQUFnQixDQUFDO0lBR3hFLHFCQUFxQixDQU9YO0lBRVYsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDTyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRWxCLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFL0IsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pELE1BQU0sS0FBSyxHQUNULE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFTyxRQUFRLENBQUMsU0FBaUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxTQUFpQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUNmLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxhQUFhLENBQUMsRUFDM0Msa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUNwQzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQXVCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWdEO1FBQ25FLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixPQUFPLGVBQWUsQ0FBQztZQUN6QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxnQkFBZ0IsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO3VHQWhIVSwwQkFBMEI7MkZBQTFCLDBCQUEwQix1UUFGMUIsQ0FBQyxZQUFZLENBQUM7OzJGQUVkLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjs4QkFRSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7Z0JBTXJELGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXJCLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBFWEFDVF9UUlVFX09QVFM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xyXG4gIHBhdGhzOiAnZXhhY3QnLFxyXG4gIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG5jb25zdCBFWEFDVF9GQUxTRV9PUFRTOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICBwYXRoczogJ3N1YnNldCcsXHJcbiAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXBwZW5kcyBjbGFzcyB0byBob3N0IGlmIGFueSBvZiB0aGUgd2F0Y2hlZCByb3V0ZXMgaXMgYWN0aXZlLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0QW55Um91dGVBY3RpdmVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRBbnlSb3V0ZUFjdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3JkdEFueVJvdXRlQWN0aXZlJyB9KVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZShkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXJzZUNsYXNzZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHdhdGNoZWRSb3V0ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZU9wdGlvbnModmFsdWU6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyh2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FueVJvdXRlQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSBFWEFDVF9GQUxTRV9PUFRTO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFyaWFDdXJyZW50V2hlbkFjdGl2ZT86XHJcbiAgICB8ICdwYWdlJ1xyXG4gICAgfCAnc3RlcCdcclxuICAgIHwgJ2xvY2F0aW9uJ1xyXG4gICAgfCAnZGF0ZSdcclxuICAgIHwgJ3RpbWUnXHJcbiAgICB8IHRydWVcclxuICAgIHwgZmFsc2U7XHJcblxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB0aGlzLmxpc3RlblJvdXRlckV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10/LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJldiA9IHRoaXMucGFyc2VDbGFzc2VzKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIHByZXYuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX2lzQWN0aXZlID0gdGhpcy53YXRjaGVkUm91dGVzLnNvbWUoKHJvdXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID1cclxuICAgICAgICB0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnID8gcm91dGUgOiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHBhcmFtLCB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIHRoaXMuc2V0QXJpYUN1cnJlbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXJpYUN1cnJlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNBY3RpdmUgJiYgdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAnYXJpYS1jdXJyZW50JywgdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoZWwsICdhcmlhLWN1cnJlbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NlcygpIHtcclxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5hZGRDbGFzcyhjKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZXJFdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChldikgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ2xhc3NlcyhkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogZGF0YS5zcGxpdCgnICcpO1xyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjKSA9PiAhIWMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMoaW5wdXQ6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICBpZiAoJ2V4YWN0JyBpbiBpbnB1dCkge1xyXG4gICAgICBpZiAoaW5wdXQuZXhhY3QpIHtcclxuICAgICAgICByZXR1cm4gRVhBQ1RfVFJVRV9PUFRTO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBFWEFDVF9GQUxTRV9PUFRTO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Location } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, ElementRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport { fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class RdtBackLinkDirective {\n destroyRef = inject(DestroyRef);\n location = inject(Location);\n elRef = inject((ElementRef));\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n optional: true,\n host: true,\n });\n constructor() {\n afterNextRender(() => {\n if (this.buttonRef) {\n this.buttonRef.click.subscribe(() => this.location.back());\n }\n else {\n fromEvent(this.elRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.location.back());\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtBackLinkDirective, isStandalone: true, selector: \"[rdtBackLink]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtBackLink]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJhY2stbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZGlyZWN0aXZlcy9yZHQtYmFjay1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS2pDLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELFFBQVEsRUFBRSxJQUFJO1FBQ2QsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSDtRQUNFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7cUJBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FwQlUsb0JBQW9COzJGQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0QmFja0xpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgUmR0QmFja0xpbmtEaXJlY3RpdmUge1xuICByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBpbmplY3QoUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25SZWYgPSBpbmplY3QodGhpcy5idXR0b25DbGFzcywge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGhvc3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcbiAgICAgICAgdGhpcy5idXR0b25SZWYuY2xpY2suc3Vic2NyaWJlKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { booleanAttribute, Directive, effect, EnvironmentInjector, inject, input, linkedSignal, } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport const PERMISSION_DISABLED_KEY = Symbol();\nexport class RdtRouterLinkDirective {\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n host: true,\n optional: true,\n });\n routerLinkRef = inject(RouterLink, { self: true });\n envInjector = inject(EnvironmentInjector);\n routeInput = input.required({ alias: 'rdtRouterLink' });\n route = linkedSignal(() => this.routeInput());\n target = input('_self');\n params = input();\n queryParams = input();\n stateParams = input();\n disabled = input(false, {\n alias: 'rdtDisabled',\n transform: booleanAttribute,\n });\n updateEffect = effect(() => {\n if (this.buttonRef) {\n this.updateButton();\n }\n else {\n this.updateRouterLink();\n }\n });\n updateButton() {\n const route = this.route();\n if (!route) {\n this.clearButtonLink();\n return;\n }\n if (route.canBeEntered(this.envInjector)) {\n this.setButtonLink(route);\n }\n else {\n this.disableButtonLink();\n }\n }\n setButtonLink(route) {\n const button = this.buttonRef;\n try {\n const ngHref = this.getNgHref(route);\n button.ngHref.set(ngHref);\n button.stateParams.set(this.stateParams() ?? route.stateParams);\n button.queryParams.set(this.queryParams() ?? route.queryParams);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n catch (err) {\n console.error(err);\n this.disableButtonLink();\n }\n }\n disableButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.setDisabledState(true, PERMISSION_DISABLED_KEY);\n }\n clearButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.stateParams.set(undefined);\n button.queryParams.set(undefined);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n updateRouterLink() {\n const route = this.route();\n if (!route) {\n this.clearRouterLink();\n }\n else if (route.canBeEntered(this.envInjector) && !this.disabled()) {\n this.setRouterLink(route);\n }\n else {\n this.disableRouterLink();\n }\n }\n setRouterLink(route) {\n try {\n const ngHref = this.getNgHref(route);\n this.routerLinkRef.routerLink = ngHref;\n this.routerLinkRef.state = this.stateParams() ?? route.stateParams;\n this.routerLinkRef.queryParams = this.queryParams() ?? route.queryParams;\n this.routerLinkRef.ngOnChanges({});\n }\n catch (err) {\n console.error(err);\n this.disableRouterLink();\n }\n }\n disableRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.ngOnChanges({});\n }\n clearRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.state = undefined;\n this.routerLinkRef.queryParams = undefined;\n this.routerLinkRef.ngOnChanges({});\n }\n getNgHref(route) {\n return route.createAbsoluteUrl(this.params());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.0\", type: RdtRouterLinkDirective, isStandalone: true, selector: \"[rdtRouterLink]\", inputs: { routeInput: { classPropertyName: \"routeInput\", publicName: \"rdtRouterLink\", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: \"params\", publicName: \"params\", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: \"queryParams\", publicName: \"queryParams\", isSignal: true, isRequired: false, transformFunction: null }, stateParams: { classPropertyName: \"stateParams\", publicName: \"stateParams\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"rdtDisabled\", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.RouterLink, inputs: [\"target\", \"target\", \"replaceUrl\", \"replaceUrl\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtRouterLink]',\n standalone: true,\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: ['target', 'replaceUrl'],\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsTUFBTSxFQUNOLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHekQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFZaEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNoQixXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7SUFDYyxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFdBQVcsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUVsRCxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBYyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEtBQUssR0FBRyxZQUFZLENBQXFCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sR0FBRyxLQUFLLENBQTBDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLE1B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QUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBa0I7UUFDbEMsT0FBTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt1R0EzR1Usc0JBQXNCOzJGQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBVmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsVUFBVTs0QkFDckIsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQzt5QkFDakM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIGVmZmVjdCxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBsaW5rZWRTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcywgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJEVF9CVVRUT05fQkFTRV9QUk9WSURFUiB9IGZyb20gJ0BuZ3JkdC9idXR0b24nO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4uL3JkdC1yb3V0ZS9yZHQtcm91dGUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBFUk1JU1NJT05fRElTQUJMRURfS0VZID0gU3ltYm9sKCk7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tyZHRSb3V0ZXJMaW5rXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBob3N0RGlyZWN0aXZlczogW1xyXG4gICAge1xyXG4gICAgICBkaXJlY3RpdmU6IFJvdXRlckxpbmssXHJcbiAgICAgIGlucHV0czogWyd0YXJnZXQnLCAncmVwbGFjZVVybCddLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0Um91dGVyTGlua0RpcmVjdGl2ZTxUIGV4dGVuZHMgb2JqZWN0PiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25DbGFzcyA9IGluamVjdChSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uUmVmID0gaW5qZWN0KHRoaXMuYnV0dG9uQ2xhc3MsIHtcclxuICAgIGhvc3Q6IHRydWUsXHJcbiAgICBvcHRpb25hbDogdHJ1ZSxcclxuICB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlckxpbmtSZWYgPSBpbmplY3QoUm91dGVyTGluaywgeyBzZWxmOiB0cnVlIH0pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZW52SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XHJcblxyXG4gIHJlYWRvbmx5IHJvdXRlSW5wdXQgPSBpbnB1dC5yZXF1aXJlZDxSZHRSb3V0ZTxUPj4oeyBhbGlhczogJ3JkdFJvdXRlckxpbmsnIH0pO1xyXG4gIHJlYWRvbmx5IHJvdXRlID0gbGlua2VkU2lnbmFsPFJkdFJvdXRlPFQ+IHwgbnVsbD4oKCkgPT4gdGhpcy5yb3V0ZUlucHV0KCkpO1xyXG4gIHJlYWRvbmx5IHRhcmdldCA9IGlucHV0PCdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJz4oJ19zZWxmJyk7XHJcbiAgcmVhZG9ubHkgcGFyYW1zID0gaW5wdXQ8UGFydGlhbDxUPiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBxdWVyeVBhcmFtcyA9IGlucHV0PFBhcmFtcyB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBzdGF0ZVBhcmFtcyA9IGlucHV0PFBhcmFtcyB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7XHJcbiAgICBhbGlhczogJ3JkdERpc2FibGVkJyxcclxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcclxuICB9KTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVwZGF0ZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcclxuICAgICAgdGhpcy51cGRhdGVCdXR0b24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZUJ1dHRvbigpIHtcclxuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZSgpO1xyXG4gICAgaWYgKCFyb3V0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyQnV0dG9uTGluaygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAocm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpKSB7XHJcbiAgICAgIHRoaXMuc2V0QnV0dG9uTGluayhyb3V0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25MaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJ1dHRvbkxpbmsocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBuZ0hyZWYgPSB0aGlzLmdldE5nSHJlZihyb3V0ZSk7XHJcbiAgICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG5nSHJlZik7XHJcbiAgICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zKTtcclxuICAgICAgYnV0dG9uLnF1ZXJ5UGFyYW1zLnNldCh0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXMpO1xyXG4gICAgICBidXR0b24uc2V0RGlzYWJsZWRTdGF0ZShmYWxzZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlQnV0dG9uTGluaygpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuYnV0dG9uUmVmITtcclxuICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG51bGwpO1xyXG4gICAgYnV0dG9uLnNldERpc2FibGVkU3RhdGUodHJ1ZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckJ1dHRvbkxpbmsoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICBidXR0b24ubmdIcmVmLnNldChudWxsKTtcclxuICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5xdWVyeVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5zZXREaXNhYmxlZFN0YXRlKGZhbHNlLCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJvdXRlckxpbmsoKSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUoKTtcclxuICAgIGlmICghcm91dGUpIHtcclxuICAgICAgdGhpcy5jbGVhclJvdXRlckxpbmsoKTtcclxuICAgIH0gZWxzZSBpZiAocm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpICYmICF0aGlzLmRpc2FibGVkKCkpIHtcclxuICAgICAgdGhpcy5zZXRSb3V0ZXJMaW5rKHJvdXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVJvdXRlckxpbmsoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Um91dGVyTGluayhyb3V0ZTogUmR0Um91dGU8VD4pIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG5nSHJlZiA9IHRoaXMuZ2V0TmdIcmVmKHJvdXRlKTtcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBuZ0hyZWY7XHJcbiAgICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHRoaXMuc3RhdGVQYXJhbXMoKSA/PyByb3V0ZS5zdGF0ZVBhcmFtcztcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcygpID8/IHJvdXRlLnF1ZXJ5UGFyYW1zO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYubmdPbkNoYW5nZXMoe30pO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlUm91dGVyTGluaygpIHtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5yb3V0ZXJMaW5rID0gbnVsbDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUm91dGVyTGluaygpIHtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5yb3V0ZXJMaW5rID0gbnVsbDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5nSHJlZihyb3V0ZTogUmR0Um91dGU8VD4pIHtcclxuICAgIHJldHVybiByb3V0ZS5jcmVhdGVBYnNvbHV0ZVVybCh0aGlzLnBhcmFtcygpKTtcclxuICB9XHJcbn1cclxuIl19","import { inject } from '@angular/core';\nimport { RdtComponentGuardStoreService } from '@ngrdt/core';\nexport const preventDataLossGuardFn = () => {\n const guardStore = inject(RdtComponentGuardStoreService);\n return guardStore.checkCanLeaveGlobal$();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1kYXRhLWxvc3MuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QixHQUFHLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UgfSBmcm9tICdAbmdyZHQvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJldmVudERhdGFMb3NzR3VhcmRGbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4gPSAoKSA9PiB7XHJcbiAgY29uc3QgZ3VhcmRTdG9yZSA9IGluamVjdChSZHRDb21wb25lbnRHdWFyZFN0b3JlU2VydmljZSk7XHJcbiAgcmV0dXJuIGd1YXJkU3RvcmUuY2hlY2tDYW5MZWF2ZUdsb2JhbCQoKTtcclxufTtcclxuIl19","import { Injectable } from '@angular/core';\nimport { GuardsCheckStart, NavigationEnd, Router, } from '@angular/router';\nimport { preventDataLossGuardFn } from './prevent-data-loss.guard';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class GlobalRouteGuardService {\n router;\n constructor(router) {\n this.router = router;\n }\n // This will help ensure that routes are automatically protected by ensuring that global guards are applied to every route\n ensureGlobalGuards() {\n let lastUrl = '';\n this.router.events.subscribe((e) => {\n // Remember last url after successful navigation\n if (e instanceof NavigationEnd) {\n lastUrl = location.href;\n }\n if (e instanceof GuardsCheckStart) {\n let lastChild = e.state.root;\n while (lastChild?.firstChild) {\n lastChild = lastChild.firstChild;\n }\n // Native back button will immediately replace url on click\n // Replace it back to last url before guard check is finished.\n // Angular will set it to correct value afterwards.\n history.replaceState(window.history.state, '', lastUrl);\n if (lastChild?.routeConfig) {\n this.ensureCanDeactivateGuards(lastChild.routeConfig);\n }\n }\n });\n }\n ensureCanDeactivateGuards(routeConfig) {\n if (!routeConfig.canDeactivate) {\n routeConfig.canDeactivate = [];\n }\n const canDeactivateGuards = routeConfig.canDeactivate;\n // ensure that the \"MySpecialCanDeactivateGuard\" is in effect.\n if (!canDeactivateGuards.find((o) => o == preventDataLossGuardFn)) {\n canDeactivateGuards.push(preventDataLossGuardFn);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvdXRlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL2dsb2JhbC1yb3V0ZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLDBIQUEwSDtJQUNuSCxrQkFBa0I7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELDJEQUEyRDtnQkFDM0QsOERBQThEO2dCQUM5RCxtREFBbUQ7Z0JBQ25ELE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFdEQsOERBQThEO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDbEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7dUdBeENVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBHdWFyZHNDaGVja1N0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmQsXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZXZlbnREYXRhTG9zc0d1YXJkRm4gfSBmcm9tICcuL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxSb3V0ZUd1YXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb3RlY3RlZCBieSBlbnN1cmluZyB0aGF0IGdsb2JhbCBndWFyZHMgYXJlIGFwcGxpZWQgdG8gZXZlcnkgcm91dGVcclxuICBwdWJsaWMgZW5zdXJlR2xvYmFsR3VhcmRzKCkge1xyXG4gICAgbGV0IGxhc3RVcmwgPSAnJztcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIC8vIFJlbWVtYmVyIGxhc3QgdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBsYXN0VXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpIHtcclxuICAgICAgICBsZXQgbGFzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gZS5zdGF0ZS5yb290O1xyXG4gICAgICAgIHdoaWxlIChsYXN0Q2hpbGQ/LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOYXRpdmUgYmFjayBidXR0b24gd2lsbCBpbW1lZGlhdGVseSByZXBsYWNlIHVybCBvbiBjbGlja1xyXG4gICAgICAgIC8vIFJlcGxhY2UgaXQgYmFjayB0byBsYXN0IHVybCBiZWZvcmUgZ3VhcmQgY2hlY2sgaXMgZmluaXNoZWQuXHJcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHNldCBpdCB0byBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuXHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsICcnLCBsYXN0VXJsKTtcclxuXHJcbiAgICAgICAgaWYgKGxhc3RDaGlsZD8ucm91dGVDb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FuRGVhY3RpdmF0ZUd1YXJkcyhsYXN0Q2hpbGQucm91dGVDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNhbkRlYWN0aXZhdGVHdWFyZHMocm91dGVDb25maWc6IFJvdXRlKSB7XHJcbiAgICBpZiAoIXJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpIHtcclxuICAgICAgcm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGVHdWFyZHMgPSByb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBcIk15U3BlY2lhbENhbkRlYWN0aXZhdGVHdWFyZFwiIGlzIGluIGVmZmVjdC5cclxuICAgIGlmICghY2FuRGVhY3RpdmF0ZUd1YXJkcy5maW5kKChvKSA9PiBvID09IHByZXZlbnREYXRhTG9zc0d1YXJkRm4pKSB7XHJcbiAgICAgIGNhbkRlYWN0aXZhdGVHdWFyZHMucHVzaChwcmV2ZW50RGF0YUxvc3NHdWFyZEZuKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbmdyZHQtcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngrdt-router.mjs","sources":["../tmp-esm2022/lib/services/rdt-cannot-be-entered.token.js","../tmp-esm2022/lib/services/rdt-confirm-data-loss.service.js","../tmp-esm2022/lib/rdt-route/utils.js","../tmp-esm2022/lib/services/rdt-routes.token.js","../tmp-esm2022/lib/services/rdt-router.service.js","../tmp-esm2022/lib/rdt-route/constants.js","../tmp-esm2022/lib/rdt-route/rdt-angular-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-base.js","../tmp-esm2022/lib/rdt-route/rdt-route.js","../tmp-esm2022/lib/rdt-route/rdt-route-builder.js","../tmp-esm2022/lib/directives/rdt-any-route-active.directive.js","../tmp-esm2022/lib/directives/rdt-back-link.directive.js","../tmp-esm2022/lib/directives/rdt-router-link.directive.js","../tmp-esm2022/lib/guards/prevent-data-loss.guard.js","../tmp-esm2022/lib/guards/global-route-guard.service.js","../tmp-esm2022/ngrdt-router.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n/**\n * Injection token that defines behavior when route cannot be entered (canBeEntered returns false).\n * If value is undefined, route will be redirected to ''.\n */\nexport const RDT_CANNOT_BE_ENTERED_PROVIDER = new InjectionToken('RDT_CANNOT_BE_ENTERED', { factory: () => undefined, providedIn: 'root' });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNhbm5vdC1iZS1lbnRlcmVkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1jYW5ub3QtYmUtZW50ZXJlZC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUU5RCx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR0UmVkaXJlY3RGbiwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlIH0gZnJvbSAnLi4vcmR0LXJvdXRlL3V0aWxzJztcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZWZpbmVzIGJlaGF2aW9yIHdoZW4gcm91dGUgY2Fubm90IGJlIGVudGVyZWQgKGNhbkJlRW50ZXJlZCByZXR1cm5zIGZhbHNlKS5cbiAqIElmIHZhbHVlIGlzIHVuZGVmaW5lZCwgcm91dGUgd2lsbCBiZSByZWRpcmVjdGVkIHRvICcnLlxuICovXG5leHBvcnQgY29uc3QgUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFxuICBSZHRSZWRpcmVjdEZuIHwgUmR0UmVkaXJlY3RSZXR1cm5UeXBlXG4+KCdSRFRfQ0FOTk9UX0JFX0VOVEVSRUQnLCB7IGZhY3Rvcnk6ICgpID0+IHVuZGVmaW5lZCwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { defer, of } from 'rxjs';\nexport const RDT_CONFIRM_DATA_LOSS_SERVICE = new InjectionToken('RDT_CONFIRM_DATA_LOSS_SERVICE', { factory: () => new RdtConfirmDataLossServiceAlert() });\nexport class RdtConfirmDataLossService {\n}\nexport class RdtConfirmDataLossServiceAlert extends RdtConfirmDataLossService {\n confirmDataLoss() {\n return defer(() => of(confirm('Are you sure you want to leave this page?')));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvc2VydmljZXMvcmR0LWNvbmZpcm0tZGF0YS1sb3NzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQ2hCLCtCQUErQixFQUMvQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDhCQUE4QixFQUFFLEVBQUUsQ0FDeEQsQ0FBQztBQUVKLE1BQU0sT0FBZ0IseUJBQXlCO0NBRTlDO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNsRSxlQUFlO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNoQixFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJEVF9DT05GSVJNX0RBVEFfTE9TU19TRVJWSUNFID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48UmR0Q29uZmlybURhdGFMb3NzU2VydmljZT4oXHJcbiAgICAnUkRUX0NPTkZJUk1fREFUQV9MT1NTX1NFUlZJQ0UnLFxyXG4gICAgeyBmYWN0b3J5OiAoKSA9PiBuZXcgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZUFsZXJ0KCkgfVxyXG4gICk7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmR0Q29uZmlybURhdGFMb3NzU2VydmljZSB7XHJcbiAgYWJzdHJhY3QgY29uZmlybURhdGFMb3NzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlQWxlcnQgZXh0ZW5kcyBSZHRDb25maXJtRGF0YUxvc3NTZXJ2aWNlIHtcclxuICBvdmVycmlkZSBjb25maXJtRGF0YUxvc3MoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT5cclxuICAgICAgb2YoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT8nKSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export class RdtParameters {\n params;\n constructor(params = {}) {\n this.params = params;\n }\n get(route) {\n return this.params[route.absolutePath] ?? null;\n }\n set(route, params) {\n this.params[route.absolutePath] = params;\n return this;\n }\n *[Symbol.iterator]() {\n const keys = Object.keys(this.params);\n keys.sort((a, b) => a.length - b.length);\n for (const key of keys) {\n yield [key, this.params[key]];\n }\n }\n}\nexport function ALWAYS_TRUE() {\n return true;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxNQUFNLE9BQU8sYUFBYTtJQUNKO0lBQXBCLFlBQW9CLFNBQTRCLEVBQUU7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFBRyxDQUFDO0lBRXRELEdBQUcsQ0FBbUIsS0FBa0I7UUFDdEMsT0FBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQWdCLElBQUksSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxHQUFHLENBQW1CLEtBQWtCLEVBQUUsTUFBa0I7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFJRCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgUGFyYW1UeXBlTWFwPFQ+ID0ge1xyXG4gIFtrZXkgaW4ga2V5b2YgVF0/OiAnc3RyaW5nJyB8ICdudW1iZXInO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbU1hcHBpbmcge1xyXG4gIHVybE5hbWU6IHN0cmluZztcclxuICB0YWJsZU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdGF0aWNSb3V0ZVBhcmFtcyB7XHJcbiAgW2Fic29sdXRlUGF0aDogc3RyaW5nXTogb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZHRSZWRpcmVjdFJldHVyblR5cGUgPSBzdHJpbmcgfCB2b2lkIHwgdW5kZWZpbmVkO1xyXG5cclxuZXhwb3J0IHR5cGUgUmR0UmVkaXJlY3RGbiA9IChcclxuICBjdXJyZW50UGF0aDogc3RyaW5nLFxyXG4gIHRhcmdldFBhdGg6IHN0cmluZyxcclxuICB0YXJnZXRSb3V0ZTogUmR0Um91dGVcclxuKSA9PiBSZHRSZWRpcmVjdFJldHVyblR5cGU7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0UGFyYW1ldGVycyB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJhbXM6IFN0YXRpY1JvdXRlUGFyYW1zID0ge30pIHt9XHJcblxyXG4gIGdldDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4pOiBQYXJ0aWFsPFQ+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFyYW1zW3JvdXRlLmFic29sdXRlUGF0aF0gYXMgUGFydGlhbDxUPikgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHNldDxUIGV4dGVuZHMgb2JqZWN0Pihyb3V0ZTogUmR0Um91dGU8VD4sIHBhcmFtczogUGFydGlhbDxUPikge1xyXG4gICAgdGhpcy5wYXJhbXNbcm91dGUuYWJzb2x1dGVQYXRoXSA9IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucGFyYW1zKTtcclxuICAgIGtleXMuc29ydCgoYSwgYikgPT4gYS5sZW5ndGggLSBiLmxlbmd0aCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgIHlpZWxkIFtrZXksIHRoaXMucGFyYW1zW2tleV1dO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTG9hZENvbXBvbmVudENhbGxiYWNrID0gUm91dGVbJ2xvYWRDb21wb25lbnQnXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBTFdBWVNfVFJVRSgpIHtcclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const RDT_ROUTES_PROVIDER = new InjectionToken('RDT_ROUTES_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZHQtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuXHJcbmV4cG9ydCBjb25zdCBSRFRfUk9VVEVTX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPFJkdFJvdXRlW10+KFxyXG4gICdSRFRfUk9VVEVTX1BST1ZJREVSJ1xyXG4pO1xyXG4iXX0=","import { Location, PlatformLocation } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { filter, take } from 'rxjs';\nimport { RdtParameters } from '../rdt-route/utils';\nimport { RDT_ROUTES_PROVIDER } from './rdt-routes.token';\nimport * as i0 from \"@angular/core\";\nconst DEFAULT_TARGET = '_self';\nconst RDT_STATE_PARAMS_KEY = 'RdtStateParams';\nexport class RdtRouterService {\n allRoutes = inject(RDT_ROUTES_PROVIDER, { optional: true });\n location = inject(Location);\n router = inject(Router);\n baseHref = inject(PlatformLocation).getBaseHrefFromDOM();\n _previousUrl = null;\n _currentUrl = null;\n get previousUrl() {\n return this._previousUrl;\n }\n get currentUrl() {\n return this._currentUrl;\n }\n parsePreviousUrl() {\n return this._previousUrl ? this.parseAbsoluteUrl(this._previousUrl) : null;\n }\n parseCurrentUrl() {\n return this._currentUrl ? this.parseAbsoluteUrl(this._currentUrl) : null;\n }\n navigationEnd$ = this.router.events.pipe(filter((e) => e instanceof NavigationEnd));\n nextNavigationEnd$ = this.navigationEnd$.pipe(take(1));\n constructor() {\n if (this.allRoutes === null) {\n console.warn('All routes not provided. Make sure to provide RDT_ROUTES_PROVIDER with RdtRoute[].');\n this.allRoutes = [];\n }\n this.navigationEnd$.subscribe((e) => {\n this._previousUrl = this._currentUrl;\n this._currentUrl = e.url;\n });\n }\n /**\n * @returns window.history.state extended by state parameters passed from parent window.\n */\n getHistoryState() {\n if ('RdtStateParams' in window &&\n typeof window[RDT_STATE_PARAMS_KEY] === 'object') {\n return { ...window[RDT_STATE_PARAMS_KEY], ...(history.state ?? {}) };\n }\n else {\n return history.state ?? {};\n }\n }\n /**\n * Navigates to the specified route.\n * @param link Route to navigate to.\n * @param params Parameter of route passed as first argument or RdtParameters object.\n * @param extras Allows you to specify additional parameters for navigation. These extras have higher priority than those defined in the route.\n * @returns Promise that resolves when navigation is complete.\n */\n navigate(link, params, extras) {\n let url;\n if (params instanceof RdtParameters) {\n let linkCpy = link;\n for (let r = linkCpy; r !== null; r = r.parent) {\n const p = params.get(r);\n if (p) {\n linkCpy = linkCpy.withStaticParams(r, p);\n }\n }\n url = linkCpy.createAbsoluteUrl();\n }\n else {\n url = params ? link.createAbsoluteUrl(params) : link.createAbsoluteUrl();\n }\n const target = extras?.target ?? DEFAULT_TARGET;\n const queryParams = extras?.query ?? link.queryParams;\n const stateParams = extras?.state ?? link.stateParams;\n if (target === '_self') {\n return this.router.navigate([url], {\n queryParams: queryParams,\n state: stateParams,\n replaceUrl: extras?.replaceUrl,\n });\n }\n const absolutePath = RdtStringUtils.createAbsoluteUrl(url, this.baseHref);\n const pathWithParams = RdtStringUtils.appendQueryParams(absolutePath, queryParams);\n const win = window.open(pathWithParams, target);\n if (win) {\n win[RDT_STATE_PARAMS_KEY] = stateParams;\n }\n return Promise.resolve(true);\n }\n navigateHome(extras) {\n return this.router.navigateByUrl(RdtStringUtils.appendQueryParams('/', extras?.query ?? {}), {\n state: extras?.state,\n replaceUrl: extras?.replaceUrl,\n });\n }\n navigateBack(extras) {\n const parsed = this.parseAbsoluteUrl();\n if (parsed) {\n let route = parsed.route.withStaticParams(parsed.params);\n do {\n route = route.parent;\n } while (route && route.entryDisabled);\n // In case route has no ancestor with allowed entry,\n if (!route) {\n return this.navigateHome(extras);\n }\n if (extras) {\n if (extras.query) {\n route = route.withQueryParams(extras.query);\n }\n if (extras.state) {\n route = route.withStateParams(extras.state);\n }\n }\n return this.navigate(route, extras);\n }\n else {\n console.warn(`Cannot go back from ${this.location.path()} because no route matches current url`);\n return null;\n }\n }\n /**\n * This method will try to find matching route for given absolute URL, extract its parameters and return them.\n * If no route matches the URL, it returns null. Parameters are extracted only for the last matching route, not ancestors.\n * @param url Absolute URL to parse (e.g. '/home/details/123?query=abc').\n * @returns Object containing the matching route and its parameters, or null if no route is matching.\n */\n parseAbsoluteUrl(url = this.location.path()) {\n const stripped = RdtStringUtils.stripQueryParams(url);\n if (this.allRoutes) {\n for (const route of this.allRoutes) {\n const params = route.parseAbsoluteUrl(stripped);\n if (params) {\n return { route, params };\n }\n }\n }\n return null;\n }\n extractAllParams(currentRoute) {\n if (!currentRoute) {\n const parsed = this.parseAbsoluteUrl();\n if (!parsed) {\n console.warn('No route matches current url.');\n return new RdtParameters();\n }\n currentRoute = parsed.route;\n }\n const url = this.location.path();\n const stripped = RdtStringUtils.stripQueryParams(url);\n return currentRoute.parseAbsoluteUrl(stripped);\n }\n isParentOfCurrentLocation(route) {\n return true;\n }\n removeQueryParams(...paramNames) {\n const regex = new RegExp(`[?&](${paramNames.join('|')})=[^&]*`, 'g');\n return history.replaceState(history.state, '', location.pathname + location.search.replace(regex, '').replace(/^&/, '?'));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3NlcnZpY2VzL3JkdC1yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFTekQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBQy9CLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFLOUMsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixTQUFTLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFcEQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBRWxFLFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBQ25DLFdBQVcsR0FBa0IsSUFBSSxDQUFDO0lBRTFDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNFLENBQUM7SUFFUSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxhQUFhLENBQUMsQ0FDYixDQUFDO0lBRXRCLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhFO1FBQ0UsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0ZBQW9GLENBQ3JGLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQ0UsZ0JBQWdCLElBQUksTUFBTTtZQUMxQixPQUFPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLFFBQVEsRUFDaEQsQ0FBQztZQUNELE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsUUFBUSxDQUNOLElBQWlCLEVBQ2pCLE1BQW1DLEVBQ25DLE1BQTBCO1FBRTFCLElBQUksR0FBVyxDQUFDO1FBQ2hCLElBQUksTUFBTSxZQUFZLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixLQUFLLElBQUksQ0FBQyxHQUFvQixPQUFPLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQWEsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNOLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztZQUNELEdBQUcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0UsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLElBQUksY0FBYyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FBRyxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFdEQsSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVTthQUMvQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixDQUNyRCxZQUFZLEVBQ1osV0FBVyxDQUNaLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1AsR0FBVyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUEwQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUM5QixjQUFjLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLEVBQzFEO1lBQ0UsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLO1lBQ3BCLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVTtTQUMvQixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQTBCO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLEtBQUssR0FBb0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUUsR0FBRyxDQUFDO2dCQUNGLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUMsUUFBUSxLQUFLLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUV2QyxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQixLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQ1YsdUJBQXVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHVDQUF1QyxDQUNuRixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQXVCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7WUFDN0IsQ0FBQztZQUNELFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBZTtRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHLFVBQW9CO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FDekIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEVBQ0YsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7dUdBbE1VLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uLCBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0U3RyaW5nVXRpbHMgfSBmcm9tICdAbmdyZHQvdXRpbHMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuLi9yZHQtcm91dGUvcmR0LXJvdXRlJztcclxuaW1wb3J0IHsgUmR0UGFyYW1ldGVycyB9IGZyb20gJy4uL3JkdC1yb3V0ZS91dGlscyc7XHJcbmltcG9ydCB7IFJEVF9ST1VURVNfUFJPVklERVIgfSBmcm9tICcuL3JkdC1yb3V0ZXMudG9rZW4nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZHROYXZpZ2F0ZUV4dHJhcyB7XHJcbiAgc3RhdGU/OiBQYXJhbXM7XHJcbiAgcXVlcnk/OiBQYXJhbXM7XHJcbiAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xyXG4gIHJlcGxhY2VVcmw/OiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1RBUkdFVCA9ICdfc2VsZic7XHJcbmNvbnN0IFJEVF9TVEFURV9QQVJBTVNfS0VZID0gJ1JkdFN0YXRlUGFyYW1zJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRSb3V0ZXJTZXJ2aWNlIHtcclxuICByZWFkb25seSBhbGxSb3V0ZXMgPSBpbmplY3QoUkRUX1JPVVRFU19QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VIcmVmID0gaW5qZWN0KFBsYXRmb3JtTG9jYXRpb24pLmdldEJhc2VIcmVmRnJvbURPTSgpO1xyXG5cclxuICBwcml2YXRlIF9wcmV2aW91c1VybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBwcmV2aW91c1VybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1VybDtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50VXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRVcmw7XHJcbiAgfVxyXG5cclxuICBwYXJzZVByZXZpb3VzVXJsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpb3VzVXJsID8gdGhpcy5wYXJzZUFic29sdXRlVXJsKHRoaXMuX3ByZXZpb3VzVXJsKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwYXJzZUN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFVybCA/IHRoaXMucGFyc2VBYnNvbHV0ZVVybCh0aGlzLl9jdXJyZW50VXJsKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBuYXZpZ2F0aW9uRW5kJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcclxuICApIGFzIE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD47XHJcblxyXG4gIHJlYWRvbmx5IG5leHROYXZpZ2F0aW9uRW5kJCA9IHRoaXMubmF2aWdhdGlvbkVuZCQucGlwZSh0YWtlKDEpKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBpZiAodGhpcy5hbGxSb3V0ZXMgPT09IG51bGwpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICdBbGwgcm91dGVzIG5vdCBwcm92aWRlZC4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgUkRUX1JPVVRFU19QUk9WSURFUiB3aXRoIFJkdFJvdXRlW10uJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmFsbFJvdXRlcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmF2aWdhdGlvbkVuZCQuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMuX3ByZXZpb3VzVXJsID0gdGhpcy5fY3VycmVudFVybDtcclxuICAgICAgdGhpcy5fY3VycmVudFVybCA9IGUudXJsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyB3aW5kb3cuaGlzdG9yeS5zdGF0ZSBleHRlbmRlZCBieSBzdGF0ZSBwYXJhbWV0ZXJzIHBhc3NlZCBmcm9tIHBhcmVudCB3aW5kb3cuXHJcbiAgICovXHJcbiAgZ2V0SGlzdG9yeVN0YXRlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAnUmR0U3RhdGVQYXJhbXMnIGluIHdpbmRvdyAmJlxyXG4gICAgICB0eXBlb2Ygd2luZG93W1JEVF9TVEFURV9QQVJBTVNfS0VZXSA9PT0gJ29iamVjdCdcclxuICAgICkge1xyXG4gICAgICByZXR1cm4geyAuLi53aW5kb3dbUkRUX1NUQVRFX1BBUkFNU19LRVldLCAuLi4oaGlzdG9yeS5zdGF0ZSA/PyB7fSkgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBoaXN0b3J5LnN0YXRlID8/IHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBzcGVjaWZpZWQgcm91dGUuXHJcbiAgICogQHBhcmFtIGxpbmsgUm91dGUgdG8gbmF2aWdhdGUgdG8uXHJcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXIgb2Ygcm91dGUgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50IG9yIFJkdFBhcmFtZXRlcnMgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBleHRyYXMgQWxsb3dzIHlvdSB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgbmF2aWdhdGlvbi4gVGhlc2UgZXh0cmFzIGhhdmUgaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhvc2UgZGVmaW5lZCBpbiB0aGUgcm91dGUuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gbmF2aWdhdGlvbiBpcyBjb21wbGV0ZS5cclxuICAgKi9cclxuICBuYXZpZ2F0ZTxUIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIGxpbms6IFJkdFJvdXRlPFQ+LFxyXG4gICAgcGFyYW1zPzogUGFydGlhbDxUPiB8IFJkdFBhcmFtZXRlcnMsXHJcbiAgICBleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhc1xyXG4gICkge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgaWYgKHBhcmFtcyBpbnN0YW5jZW9mIFJkdFBhcmFtZXRlcnMpIHtcclxuICAgICAgbGV0IGxpbmtDcHkgPSBsaW5rO1xyXG4gICAgICBmb3IgKGxldCByOiBSZHRSb3V0ZSB8IG51bGwgPSBsaW5rQ3B5OyByICE9PSBudWxsOyByID0gci5wYXJlbnQpIHtcclxuICAgICAgICBjb25zdCBwID0gcGFyYW1zLmdldChyIGFzIFJkdFJvdXRlKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgbGlua0NweSA9IGxpbmtDcHkud2l0aFN0YXRpY1BhcmFtcyhyLCBwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdXJsID0gbGlua0NweS5jcmVhdGVBYnNvbHV0ZVVybCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gcGFyYW1zID8gbGluay5jcmVhdGVBYnNvbHV0ZVVybChwYXJhbXMpIDogbGluay5jcmVhdGVBYnNvbHV0ZVVybCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldCA9IGV4dHJhcz8udGFyZ2V0ID8/IERFRkFVTFRfVEFSR0VUO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBleHRyYXM/LnF1ZXJ5ID8/IGxpbmsucXVlcnlQYXJhbXM7XHJcbiAgICBjb25zdCBzdGF0ZVBhcmFtcyA9IGV4dHJhcz8uc3RhdGUgPz8gbGluay5zdGF0ZVBhcmFtcztcclxuXHJcbiAgICBpZiAodGFyZ2V0ID09PSAnX3NlbGYnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcclxuICAgICAgICBzdGF0ZTogc3RhdGVQYXJhbXMsXHJcbiAgICAgICAgcmVwbGFjZVVybDogZXh0cmFzPy5yZXBsYWNlVXJsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBSZHRTdHJpbmdVdGlscy5jcmVhdGVBYnNvbHV0ZVVybCh1cmwsIHRoaXMuYmFzZUhyZWYpO1xyXG4gICAgY29uc3QgcGF0aFdpdGhQYXJhbXMgPSBSZHRTdHJpbmdVdGlscy5hcHBlbmRRdWVyeVBhcmFtcyhcclxuICAgICAgYWJzb2x1dGVQYXRoLFxyXG4gICAgICBxdWVyeVBhcmFtc1xyXG4gICAgKTtcclxuICAgIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKHBhdGhXaXRoUGFyYW1zLCB0YXJnZXQpO1xyXG4gICAgaWYgKHdpbikge1xyXG4gICAgICAod2luIGFzIGFueSlbUkRUX1NUQVRFX1BBUkFNU19LRVldID0gc3RhdGVQYXJhbXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVIb21lKGV4dHJhcz86IFJkdE5hdmlnYXRlRXh0cmFzKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcclxuICAgICAgUmR0U3RyaW5nVXRpbHMuYXBwZW5kUXVlcnlQYXJhbXMoJy8nLCBleHRyYXM/LnF1ZXJ5ID8/IHt9KSxcclxuICAgICAge1xyXG4gICAgICAgIHN0YXRlOiBleHRyYXM/LnN0YXRlLFxyXG4gICAgICAgIHJlcGxhY2VVcmw6IGV4dHJhcz8ucmVwbGFjZVVybCxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlQmFjayhleHRyYXM/OiBSZHROYXZpZ2F0ZUV4dHJhcykge1xyXG4gICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICBpZiAocGFyc2VkKSB7XHJcbiAgICAgIGxldCByb3V0ZTogUmR0Um91dGUgfCBudWxsID0gcGFyc2VkLnJvdXRlLndpdGhTdGF0aWNQYXJhbXMocGFyc2VkLnBhcmFtcyk7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICByb3V0ZSA9IHJvdXRlLnBhcmVudDtcclxuICAgICAgfSB3aGlsZSAocm91dGUgJiYgcm91dGUuZW50cnlEaXNhYmxlZCk7XHJcblxyXG4gICAgICAvLyBJbiBjYXNlIHJvdXRlIGhhcyBubyBhbmNlc3RvciB3aXRoIGFsbG93ZWQgZW50cnksXHJcbiAgICAgIGlmICghcm91dGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUhvbWUoZXh0cmFzKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXh0cmFzKSB7XHJcbiAgICAgICAgaWYgKGV4dHJhcy5xdWVyeSkge1xyXG4gICAgICAgICAgcm91dGUgPSByb3V0ZS53aXRoUXVlcnlQYXJhbXMoZXh0cmFzLnF1ZXJ5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dHJhcy5zdGF0ZSkge1xyXG4gICAgICAgICAgcm91dGUgPSByb3V0ZS53aXRoU3RhdGVQYXJhbXMoZXh0cmFzLnN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGUocm91dGUsIGV4dHJhcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYENhbm5vdCBnbyBiYWNrIGZyb20gJHt0aGlzLmxvY2F0aW9uLnBhdGgoKX0gYmVjYXVzZSBubyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGZpbmQgbWF0Y2hpbmcgcm91dGUgZm9yIGdpdmVuIGFic29sdXRlIFVSTCwgZXh0cmFjdCBpdHMgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZW0uXHJcbiAgICogSWYgbm8gcm91dGUgbWF0Y2hlcyB0aGUgVVJMLCBpdCByZXR1cm5zIG51bGwuIFBhcmFtZXRlcnMgYXJlIGV4dHJhY3RlZCBvbmx5IGZvciB0aGUgbGFzdCBtYXRjaGluZyByb3V0ZSwgbm90IGFuY2VzdG9ycy5cclxuICAgKiBAcGFyYW0gdXJsIEFic29sdXRlIFVSTCB0byBwYXJzZSAoZS5nLiAnL2hvbWUvZGV0YWlscy8xMjM/cXVlcnk9YWJjJykuXHJcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hdGNoaW5nIHJvdXRlIGFuZCBpdHMgcGFyYW1ldGVycywgb3IgbnVsbCBpZiBubyByb3V0ZSBpcyBtYXRjaGluZy5cclxuICAgKi9cclxuICBwYXJzZUFic29sdXRlVXJsKHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpKSB7XHJcbiAgICBjb25zdCBzdHJpcHBlZCA9IFJkdFN0cmluZ1V0aWxzLnN0cmlwUXVlcnlQYXJhbXModXJsKTtcclxuICAgIGlmICh0aGlzLmFsbFJvdXRlcykge1xyXG4gICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMuYWxsUm91dGVzKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gcm91dGUucGFyc2VBYnNvbHV0ZVVybChzdHJpcHBlZCk7XHJcbiAgICAgICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAgICAgcmV0dXJuIHsgcm91dGUsIHBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0QWxsUGFyYW1zKGN1cnJlbnRSb3V0ZT86IFJkdFJvdXRlKTogUmR0UGFyYW1ldGVycyB8IG51bGwge1xyXG4gICAgaWYgKCFjdXJyZW50Um91dGUpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUFic29sdXRlVXJsKCk7XHJcbiAgICAgIGlmICghcGFyc2VkKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdObyByb3V0ZSBtYXRjaGVzIGN1cnJlbnQgdXJsLicpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUmR0UGFyYW1ldGVycygpO1xyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnRSb3V0ZSA9IHBhcnNlZC5yb3V0ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgY29uc3Qgc3RyaXBwZWQgPSBSZHRTdHJpbmdVdGlscy5zdHJpcFF1ZXJ5UGFyYW1zKHVybCk7XHJcbiAgICByZXR1cm4gY3VycmVudFJvdXRlLnBhcnNlQWJzb2x1dGVVcmwoc3RyaXBwZWQpO1xyXG4gIH1cclxuXHJcbiAgaXNQYXJlbnRPZkN1cnJlbnRMb2NhdGlvbihyb3V0ZTogUmR0Um91dGUpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUXVlcnlQYXJhbXMoLi4ucGFyYW1OYW1lczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgWz8mXSgke3BhcmFtTmFtZXMuam9pbignfCcpfSk9W14mXSpgLCAnZycpO1xyXG5cclxuICAgIHJldHVybiBoaXN0b3J5LnJlcGxhY2VTdGF0ZShcclxuICAgICAgaGlzdG9yeS5zdGF0ZSxcclxuICAgICAgJycsXHJcbiAgICAgIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoLnJlcGxhY2UocmVnZXgsICcnKS5yZXBsYWNlKC9eJi8sICc/JylcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","export var RdtNavigationSource;\n(function (RdtNavigationSource) {\n RdtNavigationSource[\"BREADCRUMB\"] = \"breadcrumb\";\n})(RdtNavigationSource || (RdtNavigationSource = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksbUJBRVg7QUFGRCxXQUFZLG1CQUFtQjtJQUM3QixnREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBRlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFJkdE5hdmlnYXRpb25Tb3VyY2Uge1xyXG4gIEJSRUFEQ1JVTUIgPSAnYnJlYWRjcnVtYicsXHJcbn1cclxuIl19","import { Location } from '@angular/common';\nimport { EnvironmentInjector, inject, runInInjectionContext, } from '@angular/core';\nimport { Router, } from '@angular/router';\nimport { RDT_CANNOT_BE_ENTERED_PROVIDER } from '../services/rdt-cannot-be-entered.token';\nimport { RdtNavigationSource } from './constants';\nexport class RdtAngularRoute {\n route;\n children = [];\n // Must be set from component declaration files\n loadComponent;\n loadChildren;\n component;\n providers = [];\n providersForChildren = [];\n resolvers = {};\n canActivate = [];\n canActivateChild = [];\n canDeactivate = [];\n runGuardsAndResolvers;\n data;\n constructor(route) {\n this.route = route;\n }\n provide(...provider) {\n this.providers.push(...provider);\n return this;\n }\n provideToChildren(...provider) {\n this.providersForChildren.push(...provider);\n this.providers.push(...provider);\n return this;\n }\n withLazyComponent(callback) {\n this.loadComponent = callback;\n return this;\n }\n withModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n /**\n * @deprecated Use withModule() instead.\n */\n setModule(callback) {\n this.loadChildren = callback;\n return this;\n }\n withComponent(comp) {\n this.component = comp;\n return this;\n }\n /**\n * @deprecated Use withComponent() instead.\n */\n setComponent(comp) {\n return this.withComponent(comp);\n }\n withChildren(...routes) {\n this.children = routes;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...routes) {\n return this.withChildren(...routes);\n }\n addResolve(paramName, resolver) {\n this.resolvers[paramName] = resolver;\n return this;\n }\n addCanActivate(...fns) {\n this.canActivate.push(...fns);\n return this;\n }\n addCanDeactivate(...fns) {\n this.canDeactivate.push(...fns);\n return this;\n }\n addCanActivateChild(...fns) {\n this.canActivateChild.push(...fns);\n return this;\n }\n withRunGuardsAndResolvers(value) {\n this.runGuardsAndResolvers = value;\n return this;\n }\n /**\n * @deprecated Use withRunGuardsAndResolvers() instead.\n */\n setRunGuardsAndResolvers(value) {\n return this.withRunGuardsAndResolvers(value);\n }\n build() {\n this.checkChildrenMatch();\n let res = {\n path: this.route.path,\n providers: this.providers,\n title: this.route.name,\n canMatch: this.getCanMatch(),\n };\n if (this.component) {\n res.component = this.component;\n }\n else if (this.loadChildren) {\n res.loadChildren = this.loadChildren;\n }\n else if (this.loadComponent) {\n res.loadComponent = this.loadComponent;\n }\n res.data = this.data ?? {\n breadcrumb: {\n label: this.route.name,\n disable: this.route.entryDisabled,\n staticStateParams: {\n src: RdtNavigationSource.BREADCRUMB,\n },\n },\n ...this.route.data,\n };\n const guard = (route, state) => {\n const injector = inject(EnvironmentInjector);\n if (runInInjectionContext(injector, this.route.canBeEntered.bind(this.route))) {\n return true;\n }\n else {\n const router = inject(Router);\n const location = inject(Location);\n let url = inject(RDT_CANNOT_BE_ENTERED_PROVIDER);\n if (typeof url === 'function') {\n //console.error(this.route.absolutePath);\n url = runInInjectionContext(injector, url.bind(url, location.path(), state.url, this.route));\n }\n if (typeof url === 'string') {\n return router.parseUrl(url);\n }\n else {\n return false;\n }\n }\n };\n this.canActivate.push(guard);\n res.canActivate = this.canActivate;\n res.canDeactivate = this.canDeactivate;\n if (this.providersForChildren.length > 0) {\n this.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n // If children exist, change\n // {\n // path: '/path',\n // component: FeatureComponent,\n // children: [...]\n // }\n // into\n // {\n // path: '/path',\n // children: [\n // {\n // path: '',\n // component: FeatureComponent\n // },\n // ...\n // ]\n // }\n if (this.children.length > 0) {\n if (this.loadChildren || this.component || this.loadComponent) {\n const path = res.path;\n res.path = '';\n res.pathMatch = 'full';\n res.canMatch = undefined;\n res = {\n path: path,\n pathMatch: 'prefix',\n children: [res, ...this.children],\n canActivateChild: this.canActivateChild,\n canMatch: this.getCanMatch(),\n data: res.data,\n providers: res.providers,\n canActivate: res.canActivate,\n canDeactivate: res.canDeactivate,\n };\n }\n else {\n res.children = this.children;\n }\n }\n if (Object.keys(this.resolvers).length > 0) {\n res.resolve = this.resolvers;\n }\n if (this.runGuardsAndResolvers) {\n res.runGuardsAndResolvers = this.runGuardsAndResolvers;\n }\n return res;\n }\n getCanMatch() {\n const paramMap = this.route.paramMap;\n const hasNumberParams = Object.keys(paramMap).some((p) => paramMap[p] === 'number');\n if (!hasNumberParams) {\n return undefined;\n }\n const routeSegmentLength = this.route.path.split('/').length;\n const regex = this.route.regex\n ? new RegExp(`^${this.route.regex.source}$`)\n : this.route.absoluteRegex;\n return [\n (route, segments) => {\n const path = segments\n .slice(0, routeSegmentLength)\n .map((s) => s.path)\n .join('/');\n return regex.test(path);\n },\n ];\n }\n provideToChildrenRec(child) {\n if (!child.providers) {\n child.providers = [];\n }\n this.providersForChildren.forEach((p) => {\n if (typeof p === 'object' && 'provide' in p) {\n const exists = child.providers.some((pr) => {\n if (typeof pr === 'object' && 'provide' in pr) {\n return pr.provide === p.provide;\n }\n return false;\n });\n if (!exists) {\n child.providers.unshift(p);\n }\n }\n else {\n child.providers.unshift(p);\n }\n });\n if (child.children) {\n child.children.forEach((ch) => this.provideToChildrenRec(ch));\n }\n }\n checkChildrenMatch() {\n // Check that all routes are present if route is not\n // lazy loaded module.\n if (!this.loadChildren &&\n (this.route.children.length > 0 || this.children.length > 0)) {\n if (this.children.length < this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in global routes definition? Routes with following names should be present: ${this.route.children\n .map((ch) => ch.name)\n .join(', ')}`);\n }\n else if (this.children.length > this.route.children.length) {\n throw new Error(`RdtRoute ${this.route.name} has ${this.route.children.length} children, but RdtAngularRoute has ${this.children.length}. These numbers must match. Did you forget to call .setChildren() method in feature shell routes definition? Routes with following paths should be present: ${this.children\n .map((ch) => ch.path)\n .join(', ')}`);\n }\n const n1 = this.children.map((ch) => ch.path);\n const n2 = this.route.children.map((ch) => ch.path);\n n1.sort();\n n2.sort();\n for (let i = 0; i < n1.length; i++) {\n if (n1[i] !== n2[i]) {\n throw new Error(`Paths of children provided in RdtRoute and\r\n RdtAngularRoute do not match. ${n1[i]} != ${n2[i]}`);\n }\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFuZ3VsYXItcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1hbmd1bGFyLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLE1BQU0sRUFFTixxQkFBcUIsR0FFdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQVVMLE1BQU0sR0FJUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlsRCxNQUFNLE9BQU8sZUFBZTtJQUNsQixLQUFLLENBQWM7SUFDbkIsUUFBUSxHQUFZLEVBQUUsQ0FBQztJQUUvQiwrQ0FBK0M7SUFDdkMsYUFBYSxDQUF5QjtJQUN0QyxZQUFZLENBQXdCO0lBQ3BDLFNBQVMsQ0FBYTtJQUN0QixTQUFTLEdBQXdDLEVBQUUsQ0FBQztJQUNwRCxvQkFBb0IsR0FBd0MsRUFBRSxDQUFDO0lBQy9ELFNBQVMsR0FBMEMsRUFBRSxDQUFDO0lBQ3RELFdBQVcsR0FBb0IsRUFBRSxDQUFDO0lBQ2xDLGdCQUFnQixHQUF5QixFQUFFLENBQUM7SUFDNUMsYUFBYSxHQUF5QixFQUFFLENBQUM7SUFDekMscUJBQXFCLENBQXlCO0lBQzlDLElBQUksQ0FBUTtJQUVwQixZQUFZLEtBQWtCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxRQUE2QztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFD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LENBQUM7WUFDcEQsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2I7NENBQ2dDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDcEQsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcclxuICBFbnZpcm9ubWVudFByb3ZpZGVycyxcclxuICBpbmplY3QsXHJcbiAgUHJvdmlkZXIsXHJcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxyXG4gIFR5cGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBDYW5BY3RpdmF0ZUNoaWxkRm4sXHJcbiAgQ2FuQWN0aXZhdGVGbixcclxuICBDYW5EZWFjdGl2YXRlRm4sXHJcbiAgQ2FuTWF0Y2hGbixcclxuICBEYXRhLFxyXG4gIExvYWRDaGlsZHJlbkNhbGxiYWNrLFxyXG4gIFJlc29sdmVGbixcclxuICBSb3V0ZSxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICBSdW5HdWFyZHNBbmRSZXNvbHZlcnMsXHJcbiAgVXJsU2VnbWVudCxcclxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSRFRfQ0FOTk9UX0JFX0VOVEVSRURfUFJPVklERVIgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZHQtY2Fubm90LWJlLWVudGVyZWQudG9rZW4nO1xyXG5pbXBvcnQgeyBSZHROYXZpZ2F0aW9uU291cmNlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4vcmR0LXJvdXRlJztcclxuaW1wb3J0IHsgTG9hZENvbXBvbmVudENhbGxiYWNrIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgUmR0QW5ndWxhclJvdXRlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcclxuICBwcml2YXRlIHJvdXRlOiBSZHRSb3V0ZTxUPjtcclxuICBwcml2YXRlIGNoaWxkcmVuOiBSb3V0ZVtdID0gW107XHJcblxyXG4gIC8vIE11c3QgYmUgc2V0IGZyb20gY29tcG9uZW50IGRlY2xhcmF0aW9uIGZpbGVzXHJcbiAgcHJpdmF0ZSBsb2FkQ29tcG9uZW50PzogTG9hZENvbXBvbmVudENhbGxiYWNrO1xyXG4gIHByaXZhdGUgbG9hZENoaWxkcmVuPzogTG9hZENoaWxkcmVuQ2FsbGJhY2s7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnQ/OiBUeXBlPGFueT47XHJcbiAgcHJpdmF0ZSBwcm92aWRlcnM6IChQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKVtdID0gW107XHJcbiAgcHJpdmF0ZSBwcm92aWRlcnNGb3JDaGlsZHJlbjogKFByb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnMpW10gPSBbXTtcclxuICBwcml2YXRlIHJlc29sdmVyczogeyBba2V5OiBzdHJpbmddOiBSZXNvbHZlRm48dW5rbm93bj4gfSA9IHt9O1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgY2FuQWN0aXZhdGVDaGlsZDogQ2FuQWN0aXZhdGVDaGlsZEZuW10gPSBbXTtcclxuICBwcml2YXRlIGNhbkRlYWN0aXZhdGU6IENhbkRlYWN0aXZhdGVGbjxUPltdID0gW107XHJcbiAgcHJpdmF0ZSBydW5HdWFyZHNBbmRSZXNvbHZlcnM/OiBSdW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcbiAgcHJpdmF0ZSBkYXRhPzogRGF0YTtcclxuXHJcbiAgY29uc3RydWN0b3Iocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlKC4uLnByb3ZpZGVyOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnMucHVzaCguLi5wcm92aWRlcik7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHByb3ZpZGVUb0NoaWxkcmVuKC4uLnByb3ZpZGVyOiAoUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycylbXSkge1xyXG4gICAgdGhpcy5wcm92aWRlcnNGb3JDaGlsZHJlbi5wdXNoKC4uLnByb3ZpZGVyKTtcclxuICAgIHRoaXMucHJvdmlkZXJzLnB1c2goLi4ucHJvdmlkZXIpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB3aXRoTGF6eUNvbXBvbmVudChjYWxsYmFjazogTG9hZENvbXBvbmVudENhbGxiYWNrKSB7XHJcbiAgICB0aGlzLmxvYWRDb21wb25lbnQgPSBjYWxsYmFjaztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aE1vZHVsZShjYWxsYmFjazogTG9hZENoaWxkcmVuQ2FsbGJhY2spIHtcclxuICAgIHRoaXMubG9hZENoaWxkcmVuID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhNb2R1bGUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE1vZHVsZShjYWxsYmFjazogTG9hZENoaWxkcmVuQ2FsbGJhY2spIHtcclxuICAgIHRoaXMubG9hZENoaWxkcmVuID0gY2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHdpdGhDb21wb25lbnQoY29tcDogVHlwZTxhbnk+KSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXA7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHdpdGhDb21wb25lbnQoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENvbXBvbmVudChjb21wOiBUeXBlPGFueT4pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDb21wb25lbnQoY29tcCk7XHJcbiAgfVxyXG5cclxuICB3aXRoQ2hpbGRyZW4oLi4ucm91dGVzOiBSb3V0ZVtdKSB7XHJcbiAgICB0aGlzLmNoaWxkcmVuID0gcm91dGVzO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2hpbGRyZW4oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldENoaWxkcmVuKC4uLnJvdXRlczogUm91dGVbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENoaWxkcmVuKC4uLnJvdXRlcyk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXNvbHZlKHBhcmFtTmFtZTogc3RyaW5nLCByZXNvbHZlcjogUmVzb2x2ZUZuPHVua25vd24+KSB7XHJcbiAgICB0aGlzLnJlc29sdmVyc1twYXJhbU5hbWVdID0gcmVzb2x2ZXI7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkFjdGl2YXRlKC4uLmZuczogQ2FuQWN0aXZhdGVGbltdKSB7XHJcbiAgICB0aGlzLmNhbkFjdGl2YXRlLnB1c2goLi4uZm5zKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2FuRGVhY3RpdmF0ZSguLi5mbnM6IENhbkRlYWN0aXZhdGVGbjxhbnk+W10pIHtcclxuICAgIHRoaXMuY2FuRGVhY3RpdmF0ZS5wdXNoKC4uLmZucyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZENhbkFjdGl2YXRlQ2hpbGQoLi4uZm5zOiBDYW5BY3RpdmF0ZUNoaWxkRm5bXSkge1xyXG4gICAgdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLnB1c2goLi4uZm5zKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgd2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZTogUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKSB7XHJcbiAgICB0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycyA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUnVuR3VhcmRzQW5kUmVzb2x2ZXJzKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRSdW5HdWFyZHNBbmRSZXNvbHZlcnModmFsdWU6IFJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFJ1bkd1YXJkc0FuZFJlc29sdmVycyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBidWlsZCgpOiBSb3V0ZSB7XHJcbiAgICB0aGlzLmNoZWNrQ2hpbGRyZW5NYXRjaCgpO1xyXG5cclxuICAgIGxldCByZXM6IFJvdXRlID0ge1xyXG4gICAgICBwYXRoOiB0aGlzLnJvdXRlLnBhdGgsXHJcbiAgICAgIHByb3ZpZGVyczogdGhpcy5wcm92aWRlcnMsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgIGNhbk1hdGNoOiB0aGlzLmdldENhbk1hdGNoKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBvbmVudCkge1xyXG4gICAgICByZXMuY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9hZENoaWxkcmVuKSB7XHJcbiAgICAgIHJlcy5sb2FkQ2hpbGRyZW4gPSB0aGlzLmxvYWRDaGlsZHJlbjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2FkQ29tcG9uZW50KSB7XHJcbiAgICAgIHJlcy5sb2FkQ29tcG9uZW50ID0gdGhpcy5sb2FkQ29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5kYXRhID0gdGhpcy5kYXRhID8/IHtcclxuICAgICAgYnJlYWRjcnVtYjoge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnJvdXRlLm5hbWUsXHJcbiAgICAgICAgZGlzYWJsZTogdGhpcy5yb3V0ZS5lbnRyeURpc2FibGVkLFxyXG4gICAgICAgIHN0YXRpY1N0YXRlUGFyYW1zOiB7XHJcbiAgICAgICAgICBzcmM6IFJkdE5hdmlnYXRpb25Tb3VyY2UuQlJFQURDUlVNQixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAuLi50aGlzLnJvdXRlLmRhdGEsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKFxyXG4gICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICAgICkgPT4ge1xyXG4gICAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dChcclxuICAgICAgICAgIGluamVjdG9yLFxyXG4gICAgICAgICAgdGhpcy5yb3V0ZS5jYW5CZUVudGVyZWQuYmluZCh0aGlzLnJvdXRlKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG4gICAgICAgIGxldCB1cmwgPSBpbmplY3QoUkRUX0NBTk5PVF9CRV9FTlRFUkVEX1BST1ZJREVSKTtcclxuICAgICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmVycm9yKHRoaXMucm91dGUuYWJzb2x1dGVQYXRoKTtcclxuICAgICAgICAgIHVybCA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dChcclxuICAgICAgICAgICAgaW5qZWN0b3IsXHJcbiAgICAgICAgICAgIHVybC5iaW5kKHVybCwgbG9jYXRpb24ucGF0aCgpLCBzdGF0ZS51cmwsIHRoaXMucm91dGUpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHJldHVybiByb3V0ZXIucGFyc2VVcmwodXJsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2FuQWN0aXZhdGUucHVzaChndWFyZCk7XHJcblxyXG4gICAgcmVzLmNhbkFjdGl2YXRlID0gdGhpcy5jYW5BY3RpdmF0ZTtcclxuICAgIHJlcy5jYW5EZWFjdGl2YXRlID0gdGhpcy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIGlmICh0aGlzLnByb3ZpZGVyc0ZvckNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChjaCkgPT4gdGhpcy5wcm92aWRlVG9DaGlsZHJlblJlYyhjaCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGNoaWxkcmVuIGV4aXN0LCBjaGFuZ2VcclxuICAgIC8vIHtcclxuICAgIC8vICAgIHBhdGg6ICcvcGF0aCcsXHJcbiAgICAvLyAgICBjb21wb25lbnQ6IEZlYXR1cmVDb21wb25lbnQsXHJcbiAgICAvLyAgICBjaGlsZHJlbjogWy4uLl1cclxuICAgIC8vIH1cclxuICAgIC8vIGludG9cclxuICAgIC8vIHtcclxuICAgIC8vICAgIHBhdGg6ICcvcGF0aCcsXHJcbiAgICAvLyAgICBjaGlsZHJlbjogW1xyXG4gICAgLy8gICAgICB7XHJcbiAgICAvLyAgICAgICAgcGF0aDogJycsXHJcbiAgICAvLyAgICAgICAgY29tcG9uZW50OiBGZWF0dXJlQ29tcG9uZW50XHJcbiAgICAvLyAgICAgIH0sXHJcbiAgICAvLyAgICAuLi5cclxuICAgIC8vICAgIF1cclxuICAgIC8vICAgIH1cclxuICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHRoaXMubG9hZENoaWxkcmVuIHx8IHRoaXMuY29tcG9uZW50IHx8IHRoaXMubG9hZENvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSByZXMucGF0aDtcclxuICAgICAgICByZXMucGF0aCA9ICcnO1xyXG4gICAgICAgIHJlcy5wYXRoTWF0Y2ggPSAnZnVsbCc7XHJcbiAgICAgICAgcmVzLmNhbk1hdGNoID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlcyA9IHtcclxuICAgICAgICAgIHBhdGg6IHBhdGgsXHJcbiAgICAgICAgICBwYXRoTWF0Y2g6ICdwcmVmaXgnLFxyXG4gICAgICAgICAgY2hpbGRyZW46IFtyZXMsIC4uLnRoaXMuY2hpbGRyZW5dLFxyXG4gICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogdGhpcy5jYW5BY3RpdmF0ZUNoaWxkLFxyXG4gICAgICAgICAgY2FuTWF0Y2g6IHRoaXMuZ2V0Q2FuTWF0Y2goKSxcclxuICAgICAgICAgIGRhdGE6IHJlcy5kYXRhLFxyXG4gICAgICAgICAgcHJvdmlkZXJzOiByZXMucHJvdmlkZXJzLFxyXG4gICAgICAgICAgY2FuQWN0aXZhdGU6IHJlcy5jYW5BY3RpdmF0ZSxcclxuICAgICAgICAgIGNhbkRlYWN0aXZhdGU6IHJlcy5jYW5EZWFjdGl2YXRlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzLmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnJlc29sdmVycykubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXMucmVzb2x2ZSA9IHRoaXMucmVzb2x2ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJ1bkd1YXJkc0FuZFJlc29sdmVycykge1xyXG4gICAgICByZXMucnVuR3VhcmRzQW5kUmVzb2x2ZXJzID0gdGhpcy5ydW5HdWFyZHNBbmRSZXNvbHZlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2FuTWF0Y2goKTogQ2FuTWF0Y2hGbltdIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHBhcmFtTWFwID0gdGhpcy5yb3V0ZS5wYXJhbU1hcDtcclxuICAgIGNvbnN0IGhhc051bWJlclBhcmFtcyA9IE9iamVjdC5rZXlzKHBhcmFtTWFwKS5zb21lKFxyXG4gICAgICAocCkgPT4gcGFyYW1NYXBbcCBhcyBrZXlvZiBUXSA9PT0gJ251bWJlcidcclxuICAgICk7XHJcbiAgICBpZiAoIWhhc051bWJlclBhcmFtcykge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgcm91dGVTZWdtZW50TGVuZ3RoID0gdGhpcy5yb3V0ZS5wYXRoLnNwbGl0KCcvJykubGVuZ3RoO1xyXG4gICAgY29uc3QgcmVnZXggPSB0aGlzLnJvdXRlLnJlZ2V4XHJcbiAgICAgID8gbmV3IFJlZ0V4cChgXiR7dGhpcy5yb3V0ZS5yZWdleC5zb3VyY2V9JGApXHJcbiAgICAgIDogdGhpcy5yb3V0ZS5hYnNvbHV0ZVJlZ2V4O1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgKHJvdXRlOiBSb3V0ZSwgc2VnbWVudHM6IFVybFNlZ21lbnRbXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSBzZWdtZW50c1xyXG4gICAgICAgICAgLnNsaWNlKDAsIHJvdXRlU2VnbWVudExlbmd0aClcclxuICAgICAgICAgIC5tYXAoKHMpID0+IHMucGF0aClcclxuICAgICAgICAgIC5qb2luKCcvJyk7XHJcbiAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QocGF0aCk7XHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm92aWRlVG9DaGlsZHJlblJlYyhjaGlsZDogUm91dGUpIHtcclxuICAgIGlmICghY2hpbGQucHJvdmlkZXJzKSB7XHJcbiAgICAgIGNoaWxkLnByb3ZpZGVycyA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm92aWRlcnNGb3JDaGlsZHJlbi5mb3JFYWNoKChwKSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgJ3Byb3ZpZGUnIGluIHApIHtcclxuICAgICAgICBjb25zdCBleGlzdHMgPSBjaGlsZC5wcm92aWRlcnMhLnNvbWUoKHByKSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHByID09PSAnb2JqZWN0JyAmJiAncHJvdmlkZScgaW4gcHIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByLnByb3ZpZGUgPT09IHAucHJvdmlkZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgICAgY2hpbGQucHJvdmlkZXJzIS51bnNoaWZ0KHApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGlsZC5wcm92aWRlcnMhLnVuc2hpZnQocCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGNoaWxkLmNoaWxkcmVuKSB7XHJcbiAgICAgIGNoaWxkLmNoaWxkcmVuLmZvckVhY2goKGNoKSA9PiB0aGlzLnByb3ZpZGVUb0NoaWxkcmVuUmVjKGNoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQ2hpbGRyZW5NYXRjaCgpIHtcclxuICAgIC8vIENoZWNrIHRoYXQgYWxsIHJvdXRlcyBhcmUgcHJlc2VudCBpZiByb3V0ZSBpcyBub3RcclxuICAgIC8vIGxhenkgbG9hZGVkIG1vZHVsZS5cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMubG9hZENoaWxkcmVuICYmXHJcbiAgICAgICh0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aCA+IDAgfHwgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA8IHRoaXMucm91dGUuY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYFJkdFJvdXRlICR7dGhpcy5yb3V0ZS5uYW1lfSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0gY2hpbGRyZW4sIGJ1dCBSZHRBbmd1bGFyUm91dGUgaGFzICR7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ubGVuZ3RoXHJcbiAgICAgICAgICB9LiBUaGVzZSBudW1iZXJzIG11c3QgbWF0Y2guIERpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgLnNldENoaWxkcmVuKCkgbWV0aG9kIGluIGdsb2JhbCByb3V0ZXMgZGVmaW5pdGlvbj8gUm91dGVzIHdpdGggZm9sbG93aW5nIG5hbWVzIHNob3VsZCBiZSBwcmVzZW50OiAke3RoaXMucm91dGUuY2hpbGRyZW5cclxuICAgICAgICAgICAgLm1hcCgoY2gpID0+IGNoLm5hbWUpXHJcbiAgICAgICAgICAgIC5qb2luKCcsICcpfWBcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gdGhpcy5yb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBgUmR0Um91dGUgJHt0aGlzLnJvdXRlLm5hbWV9IGhhcyAke1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNoaWxkcmVuLmxlbmd0aFxyXG4gICAgICAgICAgfSBjaGlsZHJlbiwgYnV0IFJkdEFuZ3VsYXJSb3V0ZSBoYXMgJHtcclxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgIH0uIFRoZXNlIG51bWJlcnMgbXVzdCBtYXRjaC4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuc2V0Q2hpbGRyZW4oKSBtZXRob2QgaW4gZmVhdHVyZSBzaGVsbCByb3V0ZXMgZGVmaW5pdGlvbj8gUm91dGVzIHdpdGggZm9sbG93aW5nIHBhdGhzIHNob3VsZCBiZSBwcmVzZW50OiAke3RoaXMuY2hpbGRyZW5cclxuICAgICAgICAgICAgLm1hcCgoY2gpID0+IGNoLnBhdGgpXHJcbiAgICAgICAgICAgIC5qb2luKCcsICcpfWBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG4xID0gdGhpcy5jaGlsZHJlbi5tYXAoKGNoKSA9PiBjaC5wYXRoISk7XHJcbiAgICAgIGNvbnN0IG4yID0gdGhpcy5yb3V0ZS5jaGlsZHJlbi5tYXAoKGNoKSA9PiBjaC5wYXRoKTtcclxuICAgICAgbjEuc29ydCgpO1xyXG4gICAgICBuMi5zb3J0KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAobjFbaV0gIT09IG4yW2ldKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgIGBQYXRocyBvZiBjaGlsZHJlbiBwcm92aWRlZCBpbiBSZHRSb3V0ZSBhbmRcclxuICAgICAgICAgICAgUmR0QW5ndWxhclJvdXRlIGRvIG5vdCBtYXRjaC4gJHtuMVtpXX0gIT0gJHtuMltpXX1gXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=","import { ALWAYS_TRUE } from './utils';\nexport class RdtRouteBase {\n _orderedParams = [];\n _paramMap = {};\n _regex = null;\n _paramMappings = [];\n _name;\n _path;\n _parent = null;\n _children = [];\n _entryDisabled = false;\n _canBeEntered = ALWAYS_TRUE;\n _data = {};\n /**\n * Data that is passed to Angular route definition.\n */\n get data() {\n return this._data;\n }\n /**\n * Regular expression route path relative to parent route.\n * Hostname excluded.\n */\n get regex() {\n return this._regex;\n }\n /**\n * Denotes disabled route entry.\n * If true, route should have no NgModule\n * or component and only serves as virtual module\n * for breadcrumb.\n */\n get entryDisabled() {\n return this._entryDisabled;\n }\n /**\n * Map of parameters and their types.\n */\n get paramMap() {\n return this._paramMap;\n }\n /**\n * Human readable name for display in breadcrumbs, title, etc.\n */\n get name() {\n return this._name;\n }\n /**\n * Path of the route relative to parent route.\n */\n get path() {\n return this._path;\n }\n /**\n * Parent route.\n */\n get parent() {\n return this._parent;\n }\n /**\n * Child routes.\n */\n get children() {\n return this._children;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0sU0FBUyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxZQUFZO0lBQ2IsY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUM5QixTQUFTLEdBQW9CLEVBQUUsQ0FBQztJQUNoQyxNQUFNLEdBQWtCLElBQUksQ0FBQztJQUM3QixjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUVwQyxLQUFLLENBQVU7SUFDZixLQUFLLENBQVU7SUFDZixPQUFPLEdBQW9CLElBQUksQ0FBQztJQUNoQyxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBQzNCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsYUFBYSxHQUFrQixXQUFXLENBQUM7SUFDM0MsS0FBSyxHQUFTLEVBQUUsQ0FBQztJQUUzQjs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGEgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUmR0Um91dGUgfSBmcm9tICcuL3JkdC1yb3V0ZSc7XG5pbXBvcnQgeyBBTFdBWVNfVFJVRSwgUGFyYW1NYXBwaW5nLCBQYXJhbVR5cGVNYXAgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQmFzZTxUIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHByb3RlY3RlZCBfb3JkZXJlZFBhcmFtczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9wYXJhbU1hcDogUGFyYW1UeXBlTWFwPFQ+ID0ge307XG4gIHByb3RlY3RlZCBfcmVnZXg6IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgX3BhcmFtTWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdID0gW107XG5cbiAgcHJvdGVjdGVkIF9uYW1lITogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3BhdGghOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcGFyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgX2NoaWxkcmVuOiBSZHRSb3V0ZVtdID0gW107XG4gIHByb3RlY3RlZCBfZW50cnlEaXNhYmxlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2NhbkJlRW50ZXJlZDogKCkgPT4gYm9vbGVhbiA9IEFMV0FZU19UUlVFO1xuICBwcm90ZWN0ZWQgX2RhdGE6IERhdGEgPSB7fTtcblxuICAvKipcbiAgICogRGF0YSB0aGF0IGlzIHBhc3NlZCB0byBBbmd1bGFyIHJvdXRlIGRlZmluaXRpb24uXG4gICAqL1xuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gcm91dGUgcGF0aCByZWxhdGl2ZSB0byBwYXJlbnQgcm91dGUuXG4gICAqIEhvc3RuYW1lIGV4Y2x1ZGVkLlxuICAgKi9cbiAgZ2V0IHJlZ2V4KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWdleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZW5vdGVzIGRpc2FibGVkIHJvdXRlIGVudHJ5LlxuICAgKiBJZiB0cnVlLCByb3V0ZSBzaG91bGQgaGF2ZSBubyBOZ01vZHVsZVxuICAgKiBvciBjb21wb25lbnQgYW5kIG9ubHkgc2VydmVzIGFzIHZpcnR1YWwgbW9kdWxlXG4gICAqIGZvciBicmVhZGNydW1iLlxuICAgKi9cbiAgZ2V0IGVudHJ5RGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJ5RGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogTWFwIG9mIHBhcmFtZXRlcnMgYW5kIHRoZWlyIHR5cGVzLlxuICAgKi9cbiAgZ2V0IHBhcmFtTWFwKCk6IFJlYWRvbmx5PFBhcmFtVHlwZU1hcDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJhbU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBkaXNwbGF5IGluIGJyZWFkY3J1bWJzLCB0aXRsZSwgZXRjLlxuICAgKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvKipcbiAgICogUGF0aCBvZiB0aGUgcm91dGUgcmVsYXRpdmUgdG8gcGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGg7XG4gIH1cblxuICAvKipcbiAgICogUGFyZW50IHJvdXRlLlxuICAgKi9cbiAgZ2V0IHBhcmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENoaWxkIHJvdXRlcy5cbiAgICovXG4gIGdldCBjaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW47XG4gIH1cbn1cbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { RdtStringUtils } from '@ngrdt/utils';\nimport { RdtAngularRoute } from './rdt-angular-route';\nimport { RdtRouteBase } from './rdt-route-base';\nimport { ALWAYS_TRUE, RdtParameters } from './utils';\nexport class RdtRoute extends RdtRouteBase {\n _absoluteRegex;\n _staticParams = {};\n _queryParams = {};\n _stateParams = {};\n /**\n * Absolute path of parent route or '/' if there is no parent.\n * Hostname excluded.\n */\n get basePath() {\n return this._parent ? this._parent.absolutePath : '/';\n }\n /**\n * Absolute path of the route. Hostname excluded.\n */\n get absolutePath() {\n return RdtStringUtils.joinPaths(this.basePath, this._path);\n }\n /**\n * Regular expression to match only this route (not children\n * or parent routes). Hostname excluded.\n */\n get absoluteRegex() {\n if (this._absoluteRegex) {\n return this._absoluteRegex;\n }\n if (!this._regex) {\n this._absoluteRegex = new RegExp('^/$');\n if (this._parent) {\n throw new Error('Nested route with empty path is not allowed.');\n }\n }\n else if (this._parent) {\n // Remove initial ^ and ending $\n const parent = this._parent.absoluteRegex.source.slice(1, -1);\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths(parent, this._regex.source) + '$');\n }\n else {\n this._absoluteRegex = new RegExp('^' + RdtStringUtils.joinPaths('/', this._regex.source) + '$');\n }\n return this._absoluteRegex;\n }\n /**\n * Statically set state params used when navigating to this instance.\n */\n get stateParams() {\n return this._stateParams;\n }\n /**\n * Statically set query params used when navigating to this instance.\n */\n get queryParams() {\n return this._queryParams;\n }\n /**\n * @param url Absolute path to test.\n * @returns True if url matches this route.\n */\n testUrl(url) {\n return this.absoluteRegex.test(url);\n }\n /**\n * Statically set parameters used when navigating to this instance.\n */\n get staticParams() {\n return { ...this._staticParams };\n }\n get hasCanBeEnteredGuard() {\n return this._canBeEntered !== ALWAYS_TRUE;\n }\n /**\n * Meta guard that is used by [rdtRouterLink] and RdtMenu\n * to determine if route can be entered.\n * @param injector Environment or custom injector.\n * @returns True if route can be entered.\n */\n canBeEntered(injector) {\n return injector\n ? runInInjectionContext(injector, this._canBeEntered)\n : this._canBeEntered();\n }\n /**\n * Extracts url parameters from absolute path for this path and each parent.\n */\n parseAbsoluteUrl(url) {\n const reg = this.absoluteRegex;\n if (!reg.test(url)) {\n return null;\n }\n const matches = reg.exec(url);\n if (matches) {\n const values = matches.slice(1).reverse();\n const obj = this.fill(values);\n if (obj) {\n return new RdtParameters(obj);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n fill(values, res = {}) {\n const params = {};\n const reversedParams = this._orderedParams.slice().reverse();\n for (let i = 0; i < reversedParams.length && i < values.length; i++) {\n const key = reversedParams[i];\n const mappedKey = this._paramMappings.find((m) => m.urlName === key)?.tableName ?? key;\n let val = values[i];\n if (this._paramMap[key] === 'number') {\n val = parseInt(val);\n }\n params[mappedKey] = val;\n }\n res[this.absolutePath] = params;\n if (values.length > reversedParams.length && this._parent) {\n this._parent.fill(values.slice(reversedParams.length), res);\n }\n return res;\n }\n /**\n * Fills parameters in path with values from paramMap.\n * Use withStaticParams() beforehand in case parent paths contain parameters.\n * @param paramMap Must contain all parameters for this route.\n * @returns Absolute path.\n */\n createAbsoluteUrl(paramMap = this._staticParams) {\n if (!this._parent) {\n return this.createUrl(this.absolutePath, paramMap);\n }\n else {\n return RdtStringUtils.joinPaths(this._parent.createAbsoluteUrl(), this.createRelativeUrl(paramMap));\n }\n }\n createRelativeUrl(paramMap = this._staticParams) {\n return this.createUrl(this.path, paramMap);\n }\n createUrl(path, paramMap) {\n const paramNames = Object.keys(this._paramMap);\n paramNames.sort((a, b) => b.length - a.length);\n const extendedParamMap = { ...paramMap };\n this._paramMappings.forEach((mapping) => {\n if (mapping.tableName in paramMap) {\n extendedParamMap[mapping.urlName] = paramMap[mapping.tableName];\n }\n });\n paramNames.forEach((param) => {\n if (!(param in extendedParamMap)) {\n throw new Error(`Param ${param} is missing for route ${this.absolutePath}. Please pass object with required parameters.`);\n }\n const value = extendedParamMap[param];\n path = path.replace(`:${param}`, `${value}`);\n });\n return path;\n }\n toAngularRoute() {\n return new RdtAngularRoute(this);\n }\n /**\n * Provides static mapping for parameter names tableName -> urlName.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with mapped parameter names.\n */\n withParamMappings(mappings) {\n const clone = this.clone();\n clone._paramMappings = mappings;\n return clone;\n }\n /**\n * Sets parameters for itself or parents.\n * Returns new instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n * @returns Clone of this route with static parameters set.\n */\n withStaticParams(param1, param2) {\n const clone = this.clone();\n if (param2) {\n const routeAbsPath = param1.absolutePath;\n let current = clone;\n while (current) {\n if (current.absolutePath === routeAbsPath) {\n current._staticParams = param2;\n }\n current = current._parent;\n }\n }\n else {\n clone._staticParams = param1;\n }\n return clone;\n }\n withQueryParams(queryParams) {\n const clone = this.clone();\n clone._queryParams = { ...queryParams };\n return clone;\n }\n withStateParams(stateParams) {\n const clone = this.clone();\n clone._stateParams = { ...stateParams };\n return clone;\n }\n /**\n * @returns Partial of object that only contains properties necessary to create this route.\n */\n extractRouteParams(row) {\n const res = {};\n this._orderedParams.forEach((param) => {\n const mapping = this._paramMappings.find((m) => m.urlName === param);\n const mappedParam = (mapping?.tableName ?? param);\n if (mappedParam in row) {\n res[mappedParam] = row[mappedParam];\n }\n });\n return res;\n }\n /**\n * @returns New instance of RdtRoute<T> that is clone of\n * this route and its parents (NOT children).\n */\n clone() {\n const clone = new RdtRoute();\n clone._name = this._name;\n clone._parent = this._parent?.clone() ?? null;\n clone._path = this.path;\n clone._entryDisabled = this._entryDisabled;\n clone._orderedParams = [...this._orderedParams];\n clone._paramMap = { ...this._paramMap };\n clone._regex = this._regex ? new RegExp(this._regex) : null;\n clone._paramMappings = this._paramMappings;\n clone._staticParams = { ...this._staticParams };\n clone._stateParams = { ...this._stateParams };\n return clone;\n }\n setRegex() {\n const params = Object.keys(this._paramMap);\n params.sort((a, b) => b.length - a.length);\n let substituted = this.path;\n params.forEach((p) => {\n const type = this._paramMap[p];\n if (!type) {\n throw new Error('Params is not set i');\n }\n substituted = substituted.replace(`:${p}`, RdtRoute.groups[type]);\n });\n if (substituted === '') {\n this._regex = null;\n }\n else {\n this._regex = new RegExp(substituted);\n }\n }\n static fromBuilder(builder) {\n const route = new RdtRoute();\n route._name = builder.name;\n route._path = builder.path;\n route._entryDisabled = builder.entryDisabled;\n route._orderedParams = builder.orderedParams;\n route._canBeEntered = builder.canBeEntered;\n route._paramMap = builder.paramMap;\n route._regex = builder.regex ? new RegExp(builder.regex) : null;\n route._paramMappings = builder.paramMappings;\n route._children = builder.children;\n route._data = builder.data;\n route._children.forEach((child) => (child._parent = route));\n route.setRegex();\n return route;\n }\n static groups = {\n string: '([\\\\w_\\\\-]+)',\n number: '(\\\\d+)',\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL3JkdC1yb3V0ZS9yZHQtcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFnQixhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbkUsTUFBTSxPQUFPLFFBQWlDLFNBQVEsWUFBZTtJQUMzRCxjQUFjLENBQVU7SUFDdEIsYUFBYSxHQUFlLEVBQUUsQ0FBQztJQUMvQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFFcEM7OztPQUdHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLGdDQUFnQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQzlCLEdBQUcsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FDakUsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FDOUIsR0FBRyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUM5RCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsUUFBbUI7UUFDOUIsT0FBTyxRQUFRO1lBQ2IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3JELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sSUFBSSxDQUFDLE1BQWdCLEVBQUUsTUFBMkIsRUFBRTtRQUMxRCxNQUFNLE1BQU0sR0FBMkMsRUFBRSxDQUFDO1FBQzFELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwRSxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFZLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUUsU0FBUyxJQUFJLEdBQUcsQ0FBQztZQUN2RSxJQUFJLEdBQUcsR0FBb0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQW9CLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckMsQ0FBQztRQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBRWhDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxXQUF1QixJQUFJLENBQUMsYUFBYTtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxjQUFjLENBQUMsU0FBUyxDQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FDakMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBdUIsSUFBSSxDQUFDLGFBQWE7UUFDekQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFZLEVBQUUsUUFBb0I7UUFDbEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sZ0JBQWdCLEdBQVEsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUksUUFBZ0IsQ0FDbkQsT0FBTyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUNiLFNBQVMsS0FBSyx5QkFBeUIsSUFBSSxDQUFDLFlBQVksZ0RBQWdELENBQ3pHLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO1lBQ2pELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxlQUFlLENBQUksSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsUUFBd0I7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQWFEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQW9CLE1BQXdCLEVBQUUsTUFBVztRQUN2RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sWUFBWSxHQUFJLE1BQXVCLENBQUMsWUFBWSxDQUFDO1lBQzNELElBQUksT0FBTyxHQUFvQixLQUFLLENBQUM7WUFFckMsT0FBTyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQzFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO2dCQUNqQyxDQUFDO2dCQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxhQUFhLEdBQUcsTUFBVyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxlQUFlLENBQUMsV0FBbUI7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFtQjtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxHQUFNO1FBQ3ZCLE1BQU0sR0FBRyxHQUFlLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxLQUFLLENBQVksQ0FBQztZQUM3RCxJQUFJLFdBQVcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUssQ0FBQztRQUNoQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQztRQUM5QyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1RCxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsS0FBSyxDQUFDLGFBQWEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hELEtBQUssQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxRQUFRO1FBQ2QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFtQixPQUEyQjtRQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsRUFBSyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMzQixLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0IsS0FBSyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM3QyxLQUFLLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDM0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ25DLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEUsS0FBSyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQVUsTUFBTSxHQUFHO1FBQy9CLE1BQU0sRUFBRSxjQUFjO1FBQ3RCLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFN0cmluZ1V0aWxzIH0gZnJvbSAnQG5ncmR0L3V0aWxzJztcclxuaW1wb3J0IHsgUmR0QW5ndWxhclJvdXRlIH0gZnJvbSAnLi9yZHQtYW5ndWxhci1yb3V0ZSc7XHJcbmltcG9ydCB7IFJkdFJvdXRlQmFzZSB9IGZyb20gJy4vcmR0LXJvdXRlLWJhc2UnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJ1aWxkZXIgfSBmcm9tICcuL3JkdC1yb3V0ZS1idWlsZGVyJztcclxuaW1wb3J0IHsgQUxXQVlTX1RSVUUsIFBhcmFtTWFwcGluZywgUmR0UGFyYW1ldGVycyB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IGV4dGVuZHMgUmR0Um91dGVCYXNlPFQ+IHtcclxuICBwcml2YXRlIF9hYnNvbHV0ZVJlZ2V4PzogUmVnRXhwO1xyXG4gIHByb3RlY3RlZCBfc3RhdGljUGFyYW1zOiBQYXJ0aWFsPFQ+ID0ge307XHJcbiAgcHJvdGVjdGVkIF9xdWVyeVBhcmFtczogUGFyYW1zID0ge307XHJcbiAgcHJvdGVjdGVkIF9zdGF0ZVBhcmFtczogUGFyYW1zID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgcGFyZW50IHJvdXRlIG9yICcvJyBpZiB0aGVyZSBpcyBubyBwYXJlbnQuXHJcbiAgICogSG9zdG5hbWUgZXhjbHVkZWQuXHJcbiAgICovXHJcbiAgZ2V0IGJhc2VQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50ID8gdGhpcy5fcGFyZW50LmFic29sdXRlUGF0aCA6ICcvJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFic29sdXRlIHBhdGggb2YgdGhlIHJvdXRlLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVQYXRoKCkge1xyXG4gICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyh0aGlzLmJhc2VQYXRoLCB0aGlzLl9wYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBvbmx5IHRoaXMgcm91dGUgKG5vdCBjaGlsZHJlblxyXG4gICAqIG9yIHBhcmVudCByb3V0ZXMpLiBIb3N0bmFtZSBleGNsdWRlZC5cclxuICAgKi9cclxuICBnZXQgYWJzb2x1dGVSZWdleCgpOiBSZWdFeHAge1xyXG4gICAgaWYgKHRoaXMuX2Fic29sdXRlUmVnZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlUmVnZXg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9yZWdleCkge1xyXG4gICAgICB0aGlzLl9hYnNvbHV0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXi8kJyk7XHJcbiAgICAgIGlmICh0aGlzLl9wYXJlbnQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05lc3RlZCByb3V0ZSB3aXRoIGVtcHR5IHBhdGggaXMgbm90IGFsbG93ZWQuJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIC8vIFJlbW92ZSBpbml0aWFsIF4gYW5kIGVuZGluZyAkXHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudC5hYnNvbHV0ZVJlZ2V4LnNvdXJjZS5zbGljZSgxLCAtMSk7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhwYXJlbnQsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Fic29sdXRlUmVnZXggPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgICdeJyArIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocygnLycsIHRoaXMuX3JlZ2V4LnNvdXJjZSkgKyAnJCdcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9hYnNvbHV0ZVJlZ2V4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgc3RhdGUgcGFyYW1zIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHN0YXRlUGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgcXVlcnkgcGFyYW1zIHVzZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHVybCBBYnNvbHV0ZSBwYXRoIHRvIHRlc3QuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB1cmwgbWF0Y2hlcyB0aGlzIHJvdXRlLlxyXG4gICAqL1xyXG4gIHRlc3RVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmFic29sdXRlUmVnZXgudGVzdCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdGljYWxseSBzZXQgcGFyYW1ldGVycyB1c2VkIHdoZW4gbmF2aWdhdGluZyB0byB0aGlzIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIGdldCBzdGF0aWNQYXJhbXMoKSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLl9zdGF0aWNQYXJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNDYW5CZUVudGVyZWRHdWFyZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQgIT09IEFMV0FZU19UUlVFO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0YSBndWFyZCB0aGF0IGlzIHVzZWQgYnkgW3JkdFJvdXRlckxpbmtdIGFuZCBSZHRNZW51XHJcbiAgICogdG8gZGV0ZXJtaW5lIGlmIHJvdXRlIGNhbiBiZSBlbnRlcmVkLlxyXG4gICAqIEBwYXJhbSBpbmplY3RvciBFbnZpcm9ubWVudCBvciBjdXN0b20gaW5qZWN0b3IuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiByb3V0ZSBjYW4gYmUgZW50ZXJlZC5cclxuICAgKi9cclxuICBjYW5CZUVudGVyZWQoaW5qZWN0b3I/OiBJbmplY3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGluamVjdG9yXHJcbiAgICAgID8gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCB0aGlzLl9jYW5CZUVudGVyZWQpXHJcbiAgICAgIDogdGhpcy5fY2FuQmVFbnRlcmVkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHRyYWN0cyB1cmwgcGFyYW1ldGVycyBmcm9tIGFic29sdXRlIHBhdGggZm9yIHRoaXMgcGF0aCBhbmQgZWFjaCBwYXJlbnQuXHJcbiAgICovXHJcbiAgcGFyc2VBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IFJkdFBhcmFtZXRlcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHJlZyA9IHRoaXMuYWJzb2x1dGVSZWdleDtcclxuICAgIGlmICghcmVnLnRlc3QodXJsKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG1hdGNoZXMgPSByZWcuZXhlYyh1cmwpO1xyXG4gICAgaWYgKG1hdGNoZXMpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gbWF0Y2hlcy5zbGljZSgxKS5yZXZlcnNlKCk7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHRoaXMuZmlsbCh2YWx1ZXMpO1xyXG4gICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZHRQYXJhbWV0ZXJzKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxsKHZhbHVlczogc3RyaW5nW10sIHJlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleSBpbiBrZXlvZiBUXT86IHN0cmluZyB8IG51bWJlciB9ID0ge307XHJcbiAgICBjb25zdCByZXZlcnNlZFBhcmFtcyA9IHRoaXMuX29yZGVyZWRQYXJhbXMuc2xpY2UoKS5yZXZlcnNlKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldmVyc2VkUGFyYW1zLmxlbmd0aCAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHJldmVyc2VkUGFyYW1zW2ldIGFzIGtleW9mIFQ7XHJcbiAgICAgIGNvbnN0IG1hcHBlZEtleSA9XHJcbiAgICAgICAgdGhpcy5fcGFyYW1NYXBwaW5ncy5maW5kKChtKSA9PiBtLnVybE5hbWUgPT09IGtleSk/LnRhYmxlTmFtZSA/PyBrZXk7XHJcbiAgICAgIGxldCB2YWw6IHN0cmluZyB8IG51bWJlciA9IHZhbHVlc1tpXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9wYXJhbU1hcFtrZXldID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHZhbCA9IHBhcnNlSW50KHZhbCk7XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1zW21hcHBlZEtleSBhcyBrZXlvZiBUXSA9IHZhbDtcclxuICAgIH1cclxuICAgIHJlc1t0aGlzLmFic29sdXRlUGF0aF0gPSBwYXJhbXM7XHJcblxyXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiByZXZlcnNlZFBhcmFtcy5sZW5ndGggJiYgdGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIHRoaXMuX3BhcmVudC5maWxsKHZhbHVlcy5zbGljZShyZXZlcnNlZFBhcmFtcy5sZW5ndGgpLCByZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbGxzIHBhcmFtZXRlcnMgaW4gcGF0aCB3aXRoIHZhbHVlcyBmcm9tIHBhcmFtTWFwLlxyXG4gICAqIFVzZSB3aXRoU3RhdGljUGFyYW1zKCkgYmVmb3JlaGFuZCBpbiBjYXNlIHBhcmVudCBwYXRocyBjb250YWluIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBhcmFtTWFwIE11c3QgY29udGFpbiBhbGwgcGFyYW1ldGVycyBmb3IgdGhpcyByb3V0ZS5cclxuICAgKiBAcmV0dXJucyBBYnNvbHV0ZSBwYXRoLlxyXG4gICAqL1xyXG4gIGNyZWF0ZUFic29sdXRlVXJsKHBhcmFtTWFwOiBQYXJ0aWFsPFQ+ID0gdGhpcy5fc3RhdGljUGFyYW1zKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybCh0aGlzLmFic29sdXRlUGF0aCwgcGFyYW1NYXApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFJkdFN0cmluZ1V0aWxzLmpvaW5QYXRocyhcclxuICAgICAgICB0aGlzLl9wYXJlbnQuY3JlYXRlQWJzb2x1dGVVcmwoKSxcclxuICAgICAgICB0aGlzLmNyZWF0ZVJlbGF0aXZlVXJsKHBhcmFtTWFwKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmVsYXRpdmVVcmwocGFyYW1NYXA6IFBhcnRpYWw8VD4gPSB0aGlzLl9zdGF0aWNQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybCh0aGlzLnBhdGgsIHBhcmFtTWFwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVXJsKHBhdGg6IHN0cmluZywgcGFyYW1NYXA6IFBhcnRpYWw8VD4pIHtcclxuICAgIGNvbnN0IHBhcmFtTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbU5hbWVzLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xyXG4gICAgY29uc3QgZXh0ZW5kZWRQYXJhbU1hcDogYW55ID0geyAuLi5wYXJhbU1hcCB9O1xyXG5cclxuICAgIHRoaXMuX3BhcmFtTWFwcGluZ3MuZm9yRWFjaCgobWFwcGluZykgPT4ge1xyXG4gICAgICBpZiAobWFwcGluZy50YWJsZU5hbWUgaW4gcGFyYW1NYXApIHtcclxuICAgICAgICBleHRlbmRlZFBhcmFtTWFwW21hcHBpbmcudXJsTmFtZV0gPSAocGFyYW1NYXAgYXMgYW55KVtcclxuICAgICAgICAgIG1hcHBpbmcudGFibGVOYW1lXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcGFyYW1OYW1lcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xyXG4gICAgICBpZiAoIShwYXJhbSBpbiBleHRlbmRlZFBhcmFtTWFwKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBQYXJhbSAke3BhcmFtfSBpcyBtaXNzaW5nIGZvciByb3V0ZSAke3RoaXMuYWJzb2x1dGVQYXRofS4gUGxlYXNlIHBhc3Mgb2JqZWN0IHdpdGggcmVxdWlyZWQgcGFyYW1ldGVycy5gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV4dGVuZGVkUGFyYW1NYXBbcGFyYW0gYXMga2V5b2YgVF07XHJcbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYDoke3BhcmFtfWAsIGAke3ZhbHVlfWApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICB0b0FuZ3VsYXJSb3V0ZSgpIHtcclxuICAgIHJldHVybiBuZXcgUmR0QW5ndWxhclJvdXRlPFQ+KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZXMgc3RhdGljIG1hcHBpbmcgZm9yIHBhcmFtZXRlciBuYW1lcyB0YWJsZU5hbWUgLT4gdXJsTmFtZS5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIG1hcHBlZCBwYXJhbWV0ZXIgbmFtZXMuXHJcbiAgICovXHJcbiAgd2l0aFBhcmFtTWFwcGluZ3MobWFwcGluZ3M6IFBhcmFtTWFwcGluZ1tdKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuICAgIGNsb25lLl9wYXJhbU1hcHBpbmdzID0gbWFwcGluZ3M7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHN0YXRpYyBwYXJhbWV0ZXJzIGZvciB0aGlzIHJvdXRlLlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgU3RhdGljIHBhcmFtZXRlcnMgZm9yIHRoaXMgcm91dGUuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyB3aXRoIHN0YXRpYyBwYXJhbWV0ZXJzIHNldC5cclxuICAgKi9cclxuICB3aXRoU3RhdGljUGFyYW1zKHBhcmFtczogVCk6IFJkdFJvdXRlPFQ+O1xyXG4gIHdpdGhTdGF0aWNQYXJhbXM8VDIgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgcm91dGU6IFJkdFJvdXRlPFQyPixcclxuICAgIHBhcmFtczogVDJcclxuICApOiBSZHRSb3V0ZTxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBwYXJhbWV0ZXJzIGZvciBpdHNlbGYgb3IgcGFyZW50cy5cclxuICAgKiBSZXR1cm5zIG5ldyBpbnN0YW5jZSBvZiBSZHRSb3V0ZTxUPiB0aGF0IGlzIGNsb25lIG9mXHJcbiAgICogdGhpcyByb3V0ZSBhbmQgaXRzIHBhcmVudHMgKE5PVCBjaGlsZHJlbikuXHJcbiAgICogQHJldHVybnMgQ2xvbmUgb2YgdGhpcyByb3V0ZSB3aXRoIHN0YXRpYyBwYXJhbWV0ZXJzIHNldC5cclxuICAgKi9cclxuICB3aXRoU3RhdGljUGFyYW1zPFQyIGV4dGVuZHMgb2JqZWN0PihwYXJhbTE6IFJkdFJvdXRlPFQyPiB8IFQsIHBhcmFtMj86IFQyKSB7XHJcbiAgICBjb25zdCBjbG9uZSA9IHRoaXMuY2xvbmUoKTtcclxuXHJcbiAgICBpZiAocGFyYW0yKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlQWJzUGF0aCA9IChwYXJhbTEgYXMgUmR0Um91dGU8VDI+KS5hYnNvbHV0ZVBhdGg7XHJcbiAgICAgIGxldCBjdXJyZW50OiBSZHRSb3V0ZSB8IG51bGwgPSBjbG9uZTtcclxuXHJcbiAgICAgIHdoaWxlIChjdXJyZW50KSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnQuYWJzb2x1dGVQYXRoID09PSByb3V0ZUFic1BhdGgpIHtcclxuICAgICAgICAgIGN1cnJlbnQuX3N0YXRpY1BhcmFtcyA9IHBhcmFtMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2xvbmUuX3N0YXRpY1BhcmFtcyA9IHBhcmFtMSBhcyBUO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3F1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgd2l0aFN0YXRlUGFyYW1zKHN0YXRlUGFyYW1zOiBQYXJhbXMpIHtcclxuICAgIGNvbnN0IGNsb25lID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgY2xvbmUuX3N0YXRlUGFyYW1zID0geyAuLi5zdGF0ZVBhcmFtcyB9O1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgUGFydGlhbCBvZiBvYmplY3QgdGhhdCBvbmx5IGNvbnRhaW5zIHByb3BlcnRpZXMgbmVjZXNzYXJ5IHRvIGNyZWF0ZSB0aGlzIHJvdXRlLlxyXG4gICAqL1xyXG4gIGV4dHJhY3RSb3V0ZVBhcmFtcyhyb3c6IFQpOiBQYXJ0aWFsPFQ+IHtcclxuICAgIGNvbnN0IHJlczogUGFydGlhbDxUPiA9IHt9O1xyXG5cclxuICAgIHRoaXMuX29yZGVyZWRQYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuICAgICAgY29uc3QgbWFwcGluZyA9IHRoaXMuX3BhcmFtTWFwcGluZ3MuZmluZCgobSkgPT4gbS51cmxOYW1lID09PSBwYXJhbSk7XHJcbiAgICAgIGNvbnN0IG1hcHBlZFBhcmFtID0gKG1hcHBpbmc/LnRhYmxlTmFtZSA/PyBwYXJhbSkgYXMga2V5b2YgVDtcclxuICAgICAgaWYgKG1hcHBlZFBhcmFtIGluIHJvdykge1xyXG4gICAgICAgIHJlc1ttYXBwZWRQYXJhbV0gPSByb3dbbWFwcGVkUGFyYW1dO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgTmV3IGluc3RhbmNlIG9mIFJkdFJvdXRlPFQ+IHRoYXQgaXMgY2xvbmUgb2ZcclxuICAgKiB0aGlzIHJvdXRlIGFuZCBpdHMgcGFyZW50cyAoTk9UIGNoaWxkcmVuKS5cclxuICAgKi9cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGNsb25lID0gbmV3IFJkdFJvdXRlPFQ+KCk7XHJcbiAgICBjbG9uZS5fbmFtZSA9IHRoaXMuX25hbWU7XHJcbiAgICBjbG9uZS5fcGFyZW50ID0gdGhpcy5fcGFyZW50Py5jbG9uZSgpID8/IG51bGw7XHJcbiAgICBjbG9uZS5fcGF0aCA9IHRoaXMucGF0aDtcclxuICAgIGNsb25lLl9lbnRyeURpc2FibGVkID0gdGhpcy5fZW50cnlEaXNhYmxlZDtcclxuICAgIGNsb25lLl9vcmRlcmVkUGFyYW1zID0gWy4uLnRoaXMuX29yZGVyZWRQYXJhbXNdO1xyXG4gICAgY2xvbmUuX3BhcmFtTWFwID0geyAuLi50aGlzLl9wYXJhbU1hcCB9O1xyXG4gICAgY2xvbmUuX3JlZ2V4ID0gdGhpcy5fcmVnZXggPyBuZXcgUmVnRXhwKHRoaXMuX3JlZ2V4KSA6IG51bGw7XHJcbiAgICBjbG9uZS5fcGFyYW1NYXBwaW5ncyA9IHRoaXMuX3BhcmFtTWFwcGluZ3M7XHJcbiAgICBjbG9uZS5fc3RhdGljUGFyYW1zID0geyAuLi50aGlzLl9zdGF0aWNQYXJhbXMgfTtcclxuICAgIGNsb25lLl9zdGF0ZVBhcmFtcyA9IHsgLi4udGhpcy5fc3RhdGVQYXJhbXMgfTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmVnZXgoKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLl9wYXJhbU1hcCk7XHJcbiAgICBwYXJhbXMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XHJcbiAgICBsZXQgc3Vic3RpdHV0ZWQgPSB0aGlzLnBhdGg7XHJcbiAgICBwYXJhbXMuZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5fcGFyYW1NYXBbcCBhcyBrZXlvZiBUXTtcclxuICAgICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJhbXMgaXMgbm90IHNldCBpJyk7XHJcbiAgICAgIH1cclxuICAgICAgc3Vic3RpdHV0ZWQgPSBzdWJzdGl0dXRlZC5yZXBsYWNlKGA6JHtwfWAsIFJkdFJvdXRlLmdyb3Vwc1t0eXBlXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc3Vic3RpdHV0ZWQgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChzdWJzdGl0dXRlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUJ1aWxkZXI8VCBleHRlbmRzIG9iamVjdD4oYnVpbGRlcjogUmR0Um91dGVCdWlsZGVyPFQ+KSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IG5ldyBSZHRSb3V0ZTxUPigpO1xyXG4gICAgcm91dGUuX25hbWUgPSBidWlsZGVyLm5hbWU7XHJcbiAgICByb3V0ZS5fcGF0aCA9IGJ1aWxkZXIucGF0aDtcclxuICAgIHJvdXRlLl9lbnRyeURpc2FibGVkID0gYnVpbGRlci5lbnRyeURpc2FibGVkO1xyXG4gICAgcm91dGUuX29yZGVyZWRQYXJhbXMgPSBidWlsZGVyLm9yZGVyZWRQYXJhbXM7XHJcbiAgICByb3V0ZS5fY2FuQmVFbnRlcmVkID0gYnVpbGRlci5jYW5CZUVudGVyZWQ7XHJcbiAgICByb3V0ZS5fcGFyYW1NYXAgPSBidWlsZGVyLnBhcmFtTWFwO1xyXG4gICAgcm91dGUuX3JlZ2V4ID0gYnVpbGRlci5yZWdleCA/IG5ldyBSZWdFeHAoYnVpbGRlci5yZWdleCkgOiBudWxsO1xyXG4gICAgcm91dGUuX3BhcmFtTWFwcGluZ3MgPSBidWlsZGVyLnBhcmFtTWFwcGluZ3M7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4gPSBidWlsZGVyLmNoaWxkcmVuO1xyXG4gICAgcm91dGUuX2RhdGEgPSBidWlsZGVyLmRhdGE7XHJcbiAgICByb3V0ZS5fY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5fcGFyZW50ID0gcm91dGUpKTtcclxuICAgIHJvdXRlLnNldFJlZ2V4KCk7XHJcbiAgICByZXR1cm4gcm91dGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBncm91cHMgPSB7XHJcbiAgICBzdHJpbmc6ICcoW1xcXFx3X1xcXFwtXSspJyxcclxuICAgIG51bWJlcjogJyhcXFxcZCspJyxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { RdtRoute } from './rdt-route';\nimport { RdtRouteBase } from './rdt-route-base';\nconst DEFAULT_PARAM_TYPE = 'number';\nexport class RdtRouteBuilder extends RdtRouteBase {\n get canBeEntered() {\n return this._canBeEntered;\n }\n get orderedParams() {\n return this._orderedParams;\n }\n get paramMappings() {\n return this._paramMappings;\n }\n /**\n * CanBeEntered function is synchronous function which\n * lets framework hide menu buttons and disable links.\n * Function is run in environment injection context, so\n * you can inject global services, tokens, etc.\n * @param fn\n */\n withCanBeEntered(fn) {\n this._canBeEntered = fn;\n return this;\n }\n /**\n * @deprecated Use withCanBeEntered() instead.\n */\n setCanBeEntered(fn) {\n return this.withCanBeEntered(fn);\n }\n /**\n * Entry disabled route will generate disabled breadcrumb.\n * It should not have any component nor module added to it.\n * @param value\n * @returns\n */\n withEntryDisabled(value = true) {\n this._entryDisabled = value;\n return this;\n }\n /**\n * @deprecated Use withEntryDisabled() instead.\n */\n setEntryDisabled(value = true) {\n return this.withEntryDisabled(value);\n }\n /**\n * Sets path relative to parent. It is defined the same way as Angular route path including parameters.\n * You need to call setParam() for each parameter you use in the path.\n */\n withPath(path) {\n this._path = path;\n const s = path.split('/');\n const params = [];\n s.forEach((part) => {\n if (part.includes(':')) {\n const param = part.split(':')[1];\n if (param) {\n params.push(param);\n if (!this._paramMap[param]) {\n this._paramMap[param] = DEFAULT_PARAM_TYPE;\n }\n }\n }\n });\n this._orderedParams = params;\n return this;\n }\n /**\n * @deprecated Use withPath() instead.\n */\n setPath(path) {\n return this.withPath(path);\n }\n /**\n * Sets Angular route data.\n * @param data Angular route data object. Breadcrumb key is merged into it.\n */\n withData(data) {\n this._data = data;\n return this;\n }\n /**\n * @deprecated Use withData() instead.\n */\n setData(data) {\n return this.withData(data);\n }\n /**\n * Defines parameter type and lets framework parse it.\n * @param paramName\n * @param type\n */\n withParam(paramName, type) {\n this._paramMap[paramName] = type;\n return this;\n }\n /**\n * @deprecated Use withParam() instead.\n */\n setParam(paramName, type) {\n return this.withParam(paramName, type);\n }\n /**\n * Sets name to display in breadcrumb, etc.\n */\n withName(name) {\n this._name = name;\n return this;\n }\n /**\n * @deprecated Use withName() instead.\n */\n setName(name) {\n return this.withName(name);\n }\n /**\n * Call .build() on children before you call this method!\n */\n withChildren(...children) {\n this._children = children;\n return this;\n }\n /**\n * @deprecated Use withChildren() instead.\n */\n setChildren(...children) {\n return this.withChildren(...children);\n }\n build() {\n if (typeof this._path !== 'string') {\n throw new Error('Please provide path for route. Empty string is acceptable.');\n }\n return RdtRoute.fromBuilder(this);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvcmR0LXJvdXRlL3JkdC1yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxlQUF3QyxTQUFRLFlBQWU7SUFDMUUsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBaUI7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxlQUFlLENBQUMsRUFBaUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUk7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSTtRQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsSUFBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxTQUFrQixFQUFFLElBQXlCO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLFNBQWtCLEVBQUUsSUFBeUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsR0FBRyxRQUFvQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFHLFFBQW9CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJkdFJvdXRlIH0gZnJvbSAnLi9yZHQtcm91dGUnO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZUJhc2UgfSBmcm9tICcuL3JkdC1yb3V0ZS1iYXNlJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFSQU1fVFlQRSA9ICdudW1iZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJkdFJvdXRlQnVpbGRlcjxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIFJkdFJvdXRlQmFzZTxUPiB7XHJcbiAgZ2V0IGNhbkJlRW50ZXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5CZUVudGVyZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JkZXJlZFBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9vcmRlcmVkUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcmFtTWFwcGluZ3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1NYXBwaW5ncztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbkJlRW50ZXJlZCBmdW5jdGlvbiBpcyBzeW5jaHJvbm91cyBmdW5jdGlvbiB3aGljaFxyXG4gICAqIGxldHMgZnJhbWV3b3JrIGhpZGUgbWVudSBidXR0b25zIGFuZCBkaXNhYmxlIGxpbmtzLlxyXG4gICAqIEZ1bmN0aW9uIGlzIHJ1biBpbiBlbnZpcm9ubWVudCBpbmplY3Rpb24gY29udGV4dCwgc29cclxuICAgKiB5b3UgY2FuIGluamVjdCBnbG9iYWwgc2VydmljZXMsIHRva2VucywgZXRjLlxyXG4gICAqIEBwYXJhbSBmblxyXG4gICAqL1xyXG4gIHdpdGhDYW5CZUVudGVyZWQoZm46ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2NhbkJlRW50ZXJlZCA9IGZuO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoQ2FuQmVFbnRlcmVkKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDYW5CZUVudGVyZWQoZm46ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB0aGlzLndpdGhDYW5CZUVudGVyZWQoZm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW50cnkgZGlzYWJsZWQgcm91dGUgd2lsbCBnZW5lcmF0ZSBkaXNhYmxlZCBicmVhZGNydW1iLlxyXG4gICAqIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgY29tcG9uZW50IG5vciBtb2R1bGUgYWRkZWQgdG8gaXQuXHJcbiAgICogQHBhcmFtIHZhbHVlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICB3aXRoRW50cnlEaXNhYmxlZCh2YWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuX2VudHJ5RGlzYWJsZWQgPSB2YWx1ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aEVudHJ5RGlzYWJsZWQoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldEVudHJ5RGlzYWJsZWQodmFsdWUgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoRW50cnlEaXNhYmxlZCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHBhdGggcmVsYXRpdmUgdG8gcGFyZW50LiBJdCBpcyBkZWZpbmVkIHRoZSBzYW1lIHdheSBhcyBBbmd1bGFyIHJvdXRlIHBhdGggaW5jbHVkaW5nIHBhcmFtZXRlcnMuXHJcbiAgICogWW91IG5lZWQgdG8gY2FsbCBzZXRQYXJhbSgpIGZvciBlYWNoIHBhcmFtZXRlciB5b3UgdXNlIGluIHRoZSBwYXRoLlxyXG4gICAqL1xyXG4gIHdpdGhQYXRoKHBhdGg6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcGF0aCA9IHBhdGg7XHJcbiAgICBjb25zdCBzID0gcGF0aC5zcGxpdCgnLycpO1xyXG4gICAgY29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgcy5mb3JFYWNoKChwYXJ0KSA9PiB7XHJcbiAgICAgIGlmIChwYXJ0LmluY2x1ZGVzKCc6JykpIHtcclxuICAgICAgICBjb25zdCBwYXJhbSA9IHBhcnQuc3BsaXQoJzonKVsxXSBhcyBrZXlvZiBUO1xyXG4gICAgICAgIGlmIChwYXJhbSkge1xyXG4gICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0gYXMgc3RyaW5nKTtcclxuICAgICAgICAgIGlmICghdGhpcy5fcGFyYW1NYXBbcGFyYW1dKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BhcmFtTWFwW3BhcmFtXSA9IERFRkFVTFRfUEFSQU1fVFlQRTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fb3JkZXJlZFBhcmFtcyA9IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aFBhdGgoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhdGgocGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoUGF0aChwYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgQW5ndWxhciByb3V0ZSBkYXRhLlxyXG4gICAqIEBwYXJhbSBkYXRhIEFuZ3VsYXIgcm91dGUgZGF0YSBvYmplY3QuIEJyZWFkY3J1bWIga2V5IGlzIG1lcmdlZCBpbnRvIGl0LlxyXG4gICAqL1xyXG4gIHdpdGhEYXRhKGRhdGE6IERhdGEpIHtcclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoRGF0YSgpIGluc3RlYWQuXHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhOiBEYXRhKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoRGF0YShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgcGFyYW1ldGVyIHR5cGUgYW5kIGxldHMgZnJhbWV3b3JrIHBhcnNlIGl0LlxyXG4gICAqIEBwYXJhbSBwYXJhbU5hbWVcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqL1xyXG4gIHdpdGhQYXJhbShwYXJhbU5hbWU6IGtleW9mIFQsIHR5cGU6ICdzdHJpbmcnIHwgJ251bWJlcicpIHtcclxuICAgIHRoaXMuX3BhcmFtTWFwW3BhcmFtTmFtZV0gPSB0eXBlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoUGFyYW0oKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldFBhcmFtKHBhcmFtTmFtZToga2V5b2YgVCwgdHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aFBhcmFtKHBhcmFtTmFtZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIG5hbWUgdG8gZGlzcGxheSBpbiBicmVhZGNydW1iLCBldGMuXHJcbiAgICovXHJcbiAgd2l0aE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aE5hbWUoKSBpbnN0ZWFkLlxyXG4gICAqL1xyXG4gIHNldE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy53aXRoTmFtZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGwgLmJ1aWxkKCkgb24gY2hpbGRyZW4gYmVmb3JlIHlvdSBjYWxsIHRoaXMgbWV0aG9kIVxyXG4gICAqL1xyXG4gIHdpdGhDaGlsZHJlbiguLi5jaGlsZHJlbjogUmR0Um91dGVbXSkge1xyXG4gICAgdGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBVc2Ugd2l0aENoaWxkcmVuKCkgaW5zdGVhZC5cclxuICAgKi9cclxuICBzZXRDaGlsZHJlbiguLi5jaGlsZHJlbjogUmR0Um91dGVbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMud2l0aENoaWxkcmVuKC4uLmNoaWxkcmVuKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9wYXRoICE9PSAnc3RyaW5nJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ1BsZWFzZSBwcm92aWRlIHBhdGggZm9yIHJvdXRlLiBFbXB0eSBzdHJpbmcgaXMgYWNjZXB0YWJsZS4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmR0Um91dGUuZnJvbUJ1aWxkZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { DestroyRef, Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule, } from '@angular/router';\nimport { filter } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst EXACT_TRUE_OPTS = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\nconst EXACT_FALSE_OPTS = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n};\n/**\n * Directive that appends class to host if any of the watched routes is active.\n */\nexport class RdtAnyRouteActiveDirective {\n destroyRef = inject(DestroyRef);\n router = inject(Router);\n renderer = inject(Renderer2);\n elRef = inject(ElementRef);\n set anyRouteActive(data) {\n this.classes = this.parseClasses(data);\n }\n watchedRoutes = [];\n set anyRouteActiveOptions(value) {\n this._anyRouteActiveOptions = this.parseOptions(value);\n }\n _anyRouteActiveOptions = EXACT_FALSE_OPTS;\n ariaCurrentWhenActive;\n get isActive() {\n return this._isActive;\n }\n _isActive = false;\n classes = [];\n ngOnInit() {\n this.update();\n this.listenRouterEvents();\n }\n ngOnChanges(changes) {\n if (changes['anyRouteActive']?.previousValue) {\n const prev = this.parseClasses(changes['anyRouteActive'].previousValue);\n prev.forEach((c) => this.removeClass(c));\n }\n this.update();\n }\n update() {\n this._isActive = this.watchedRoutes.some((route) => {\n const param = typeof route === 'string' ? route : this.router.createUrlTree(route);\n return this.router.isActive(param, this._anyRouteActiveOptions);\n });\n this.setClasses();\n this.setAriaCurrent();\n }\n setAriaCurrent() {\n const el = this.elRef.nativeElement;\n if (this._isActive && this.ariaCurrentWhenActive !== undefined) {\n const value = this.ariaCurrentWhenActive.toString();\n this.renderer.setAttribute(el, 'aria-current', value);\n }\n else {\n this.renderer.removeAttribute(el, 'aria-current');\n }\n }\n setClasses() {\n if (this._isActive) {\n this.classes.forEach((c) => this.addClass(c));\n }\n else {\n this.classes.forEach((c) => this.removeClass(c));\n }\n }\n addClass(className) {\n this.renderer.addClass(this.elRef.nativeElement, className);\n }\n removeClass(className) {\n this.renderer.removeClass(this.elRef.nativeElement, className);\n }\n listenRouterEvents() {\n this.router.events\n .pipe(filter((ev) => ev instanceof NavigationEnd), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.update());\n }\n parseClasses(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n return classes.filter((c) => !!c);\n }\n parseOptions(input) {\n if ('exact' in input) {\n if (input.exact) {\n return EXACT_TRUE_OPTS;\n }\n else {\n return EXACT_FALSE_OPTS;\n }\n }\n else {\n return input;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtAnyRouteActiveDirective, isStandalone: true, selector: \"[rdtAnyRouteActive]\", inputs: { anyRouteActive: [\"rdtAnyRouteActive\", \"anyRouteActive\"], watchedRoutes: \"watchedRoutes\", anyRouteActiveOptions: \"anyRouteActiveOptions\", ariaCurrentWhenActive: \"ariaCurrentWhenActive\" }, providers: [RouterModule], usesOnChanges: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtAnyRouteActiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtAnyRouteActive]',\n standalone: true,\n providers: [RouterModule],\n }]\n }], propDecorators: { anyRouteActive: [{\n type: Input,\n args: [{ required: true, alias: 'rdtAnyRouteActive' }]\n }], watchedRoutes: [{\n type: Input,\n args: [{ required: true }]\n }], anyRouteActiveOptions: [{\n type: Input\n }], ariaCurrentWhenActive: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbGliL2RpcmVjdGl2ZXMvcmR0LWFueS1yb3V0ZS1hY3RpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUU5QixNQUFNLGVBQWUsR0FBeUI7SUFDNUMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsT0FBTztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBeUI7SUFDN0MsS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixZQUFZLEVBQUUsU0FBUztDQUN4QixDQUFDO0FBRUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3BCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLEtBQUssR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJFLElBQ0ksY0FBYyxDQUFDLElBQXVCO1FBQ3hDLElB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QUEwQix1UUFGMUIsQ0FBQyxZQUFZLENBQUM7OzJGQUVkLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjs4QkFRSyxjQUFjO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7Z0JBTXJELGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSXJCLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFPTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICBJc0FjdGl2ZU1hdGNoT3B0aW9ucyxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXJNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBFWEFDVF9UUlVFX09QVFM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xyXG4gIHBhdGhzOiAnZXhhY3QnLFxyXG4gIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG5jb25zdCBFWEFDVF9GQUxTRV9PUFRTOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICBwYXRoczogJ3N1YnNldCcsXHJcbiAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxyXG4gIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbn07XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIHRoYXQgYXBwZW5kcyBjbGFzcyB0byBob3N0IGlmIGFueSBvZiB0aGUgd2F0Y2hlZCByb3V0ZXMgaXMgYWN0aXZlLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbcmR0QW55Um91dGVBY3RpdmVdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZHRBbnlSb3V0ZUFjdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ3JkdEFueVJvdXRlQWN0aXZlJyB9KVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZShkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXJzZUNsYXNzZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gIHdhdGNoZWRSb3V0ZXM6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhbnlSb3V0ZUFjdGl2ZU9wdGlvbnModmFsdWU6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyh2YWx1ZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FueVJvdXRlQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSBFWEFDVF9GQUxTRV9PUFRTO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGFyaWFDdXJyZW50V2hlbkFjdGl2ZT86XHJcbiAgICB8ICdwYWdlJ1xyXG4gICAgfCAnc3RlcCdcclxuICAgIHwgJ2xvY2F0aW9uJ1xyXG4gICAgfCAnZGF0ZSdcclxuICAgIHwgJ3RpbWUnXHJcbiAgICB8IHRydWVcclxuICAgIHwgZmFsc2U7XHJcblxyXG4gIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB0aGlzLmxpc3RlblJvdXRlckV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10/LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgY29uc3QgcHJldiA9IHRoaXMucGFyc2VDbGFzc2VzKGNoYW5nZXNbJ2FueVJvdXRlQWN0aXZlJ10ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIHByZXYuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX2lzQWN0aXZlID0gdGhpcy53YXRjaGVkUm91dGVzLnNvbWUoKHJvdXRlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtID1cclxuICAgICAgICB0eXBlb2Ygcm91dGUgPT09ICdzdHJpbmcnID8gcm91dGUgOiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKHJvdXRlKTtcclxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHBhcmFtLCB0aGlzLl9hbnlSb3V0ZUFjdGl2ZU9wdGlvbnMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIHRoaXMuc2V0QXJpYUN1cnJlbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QXJpYUN1cnJlbnQoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNBY3RpdmUgJiYgdGhpcy5hcmlhQ3VycmVudFdoZW5BY3RpdmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYXJpYUN1cnJlbnRXaGVuQWN0aXZlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsLCAnYXJpYS1jdXJyZW50JywgdmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoZWwsICdhcmlhLWN1cnJlbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2xhc3NlcygpIHtcclxuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5hZGRDbGFzcyhjKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsYXNzZXMuZm9yRWFjaCgoYykgPT4gdGhpcy5yZW1vdmVDbGFzcyhjKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZXJFdmVudHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKChldikgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ2xhc3NlcyhkYXRhOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogZGF0YS5zcGxpdCgnICcpO1xyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjKSA9PiAhIWMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMoaW5wdXQ6IHsgZXhhY3Q6IGJvb2xlYW4gfSB8IElzQWN0aXZlTWF0Y2hPcHRpb25zKSB7XHJcbiAgICBpZiAoJ2V4YWN0JyBpbiBpbnB1dCkge1xyXG4gICAgICBpZiAoaW5wdXQuZXhhY3QpIHtcclxuICAgICAgICByZXR1cm4gRVhBQ1RfVFJVRV9PUFRTO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBFWEFDVF9GQUxTRV9PUFRTO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Location } from '@angular/common';\nimport { afterNextRender, DestroyRef, Directive, ElementRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport { fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class RdtBackLinkDirective {\n destroyRef = inject(DestroyRef);\n location = inject(Location);\n elRef = inject((ElementRef));\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n optional: true,\n host: true,\n });\n constructor() {\n afterNextRender(() => {\n if (this.buttonRef) {\n this.buttonRef.click.subscribe(() => this.location.back());\n }\n else {\n fromEvent(this.elRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.location.back());\n }\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.0\", type: RdtBackLinkDirective, isStandalone: true, selector: \"[rdtBackLink]\", ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtBackLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtBackLink]',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LWJhY2stbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZGlyZWN0aXZlcy9yZHQtYmFjay1saW5rLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS2pDLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELFFBQVEsRUFBRSxJQUFJO1FBQ2QsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSDtRQUNFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7cUJBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FwQlUsb0JBQW9COzJGQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIgfSBmcm9tICdAbmdyZHQvYnV0dG9uJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmR0QmFja0xpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgUmR0QmFja0xpbmtEaXJlY3RpdmUge1xuICByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uQ2xhc3MgPSBpbmplY3QoUkRUX0JVVFRPTl9CQVNFX1BST1ZJREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25SZWYgPSBpbmplY3QodGhpcy5idXR0b25DbGFzcywge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIGhvc3Q6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcbiAgICAgICAgdGhpcy5idXR0b25SZWYuY2xpY2suc3Vic2NyaWJlKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { booleanAttribute, Directive, effect, EnvironmentInjector, inject, input, linkedSignal, } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { RDT_BUTTON_BASE_PROVIDER } from '@ngrdt/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport const PERMISSION_DISABLED_KEY = Symbol();\nexport class RdtRouterLinkDirective {\n buttonClass = inject(RDT_BUTTON_BASE_PROVIDER);\n buttonRef = inject(this.buttonClass, {\n host: true,\n optional: true,\n });\n routerLinkRef = inject(RouterLink, { self: true });\n envInjector = inject(EnvironmentInjector);\n routeInput = input.required({ alias: 'rdtRouterLink' });\n route = linkedSignal(() => this.routeInput());\n target = input('_self');\n params = input();\n queryParams = input();\n stateParams = input();\n disabled = input(false, {\n alias: 'rdtDisabled',\n transform: booleanAttribute,\n });\n updateEffect = effect(() => {\n if (this.buttonRef) {\n this.updateButton();\n }\n else {\n this.updateRouterLink();\n }\n });\n updateButton() {\n const route = this.route();\n if (!route) {\n this.clearButtonLink();\n return;\n }\n if (route.canBeEntered(this.envInjector)) {\n this.setButtonLink(route);\n }\n else {\n this.disableButtonLink();\n }\n }\n setButtonLink(route) {\n const button = this.buttonRef;\n try {\n const ngHref = this.getNgHref(route);\n button.ngHref.set(ngHref);\n button.stateParams.set(this.stateParams() ?? route.stateParams);\n button.queryParams.set(this.queryParams() ?? route.queryParams);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n catch (err) {\n console.error(err);\n this.disableButtonLink();\n }\n }\n disableButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.setDisabledState(true, PERMISSION_DISABLED_KEY);\n }\n clearButtonLink() {\n const button = this.buttonRef;\n button.ngHref.set(null);\n button.stateParams.set(undefined);\n button.queryParams.set(undefined);\n button.setDisabledState(false, PERMISSION_DISABLED_KEY);\n }\n updateRouterLink() {\n const route = this.route();\n if (!route) {\n this.clearRouterLink();\n }\n else if (route.canBeEntered(this.envInjector) && !this.disabled()) {\n this.setRouterLink(route);\n }\n else {\n this.disableRouterLink();\n }\n }\n setRouterLink(route) {\n try {\n const ngHref = this.getNgHref(route);\n this.routerLinkRef.routerLink = ngHref;\n this.routerLinkRef.state = this.stateParams() ?? route.stateParams;\n this.routerLinkRef.queryParams = this.queryParams() ?? route.queryParams;\n this.routerLinkRef.ngOnChanges({});\n }\n catch (err) {\n console.error(err);\n this.disableRouterLink();\n }\n }\n disableRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.ngOnChanges({});\n }\n clearRouterLink() {\n this.routerLinkRef.routerLink = null;\n this.routerLinkRef.state = undefined;\n this.routerLinkRef.queryParams = undefined;\n this.routerLinkRef.ngOnChanges({});\n }\n getNgHref(route) {\n return route.createAbsoluteUrl(this.params());\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.0\", type: RdtRouterLinkDirective, isStandalone: true, selector: \"[rdtRouterLink]\", inputs: { routeInput: { classPropertyName: \"routeInput\", publicName: \"rdtRouterLink\", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: \"params\", publicName: \"params\", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: \"queryParams\", publicName: \"queryParams\", isSignal: true, isRequired: false, transformFunction: null }, stateParams: { classPropertyName: \"stateParams\", publicName: \"stateParams\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"rdtDisabled\", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.RouterLink, inputs: [\"target\", \"target\", \"replaceUrl\", \"replaceUrl\"] }], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: RdtRouterLinkDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdtRouterLink]',\n standalone: true,\n hostDirectives: [\n {\n directive: RouterLink,\n inputs: ['target', 'replaceUrl'],\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmR0LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL0BuZ3JkdC9yb3V0ZXIvc3JjL2xpYi9kaXJlY3RpdmVzL3JkdC1yb3V0ZXItbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsTUFBTSxFQUNOLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHekQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFZaEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNoQixXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BELElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7SUFDYyxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFdBQVcsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUVsRCxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBYyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEtBQUssR0FBRyxZQUFZLENBQXFCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sR0FBRyxLQUFLLENBQTBDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLE1B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QUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBa0I7UUFDbEMsT0FBTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt1R0EzR1Usc0JBQXNCOzJGQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBVmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsVUFBVTs0QkFDckIsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQzt5QkFDakM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIGVmZmVjdCxcclxuICBFbnZpcm9ubWVudEluamVjdG9yLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBsaW5rZWRTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhcmFtcywgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFJEVF9CVVRUT05fQkFTRV9QUk9WSURFUiB9IGZyb20gJ0BuZ3JkdC9idXR0b24nO1xyXG5pbXBvcnQgeyBSZHRSb3V0ZSB9IGZyb20gJy4uL3JkdC1yb3V0ZS9yZHQtcm91dGUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBFUk1JU1NJT05fRElTQUJMRURfS0VZID0gU3ltYm9sKCk7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tyZHRSb3V0ZXJMaW5rXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBob3N0RGlyZWN0aXZlczogW1xyXG4gICAge1xyXG4gICAgICBkaXJlY3RpdmU6IFJvdXRlckxpbmssXHJcbiAgICAgIGlucHV0czogWyd0YXJnZXQnLCAncmVwbGFjZVVybCddLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmR0Um91dGVyTGlua0RpcmVjdGl2ZTxUIGV4dGVuZHMgb2JqZWN0PiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBidXR0b25DbGFzcyA9IGluamVjdChSRFRfQlVUVE9OX0JBU0VfUFJPVklERVIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uUmVmID0gaW5qZWN0KHRoaXMuYnV0dG9uQ2xhc3MsIHtcclxuICAgIGhvc3Q6IHRydWUsXHJcbiAgICBvcHRpb25hbDogdHJ1ZSxcclxuICB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlckxpbmtSZWYgPSBpbmplY3QoUm91dGVyTGluaywgeyBzZWxmOiB0cnVlIH0pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZW52SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XHJcblxyXG4gIHJlYWRvbmx5IHJvdXRlSW5wdXQgPSBpbnB1dC5yZXF1aXJlZDxSZHRSb3V0ZTxUPj4oeyBhbGlhczogJ3JkdFJvdXRlckxpbmsnIH0pO1xyXG4gIHJlYWRvbmx5IHJvdXRlID0gbGlua2VkU2lnbmFsPFJkdFJvdXRlPFQ+IHwgbnVsbD4oKCkgPT4gdGhpcy5yb3V0ZUlucHV0KCkpO1xyXG4gIHJlYWRvbmx5IHRhcmdldCA9IGlucHV0PCdfYmxhbmsnIHwgJ19zZWxmJyB8ICdfcGFyZW50JyB8ICdfdG9wJz4oJ19zZWxmJyk7XHJcbiAgcmVhZG9ubHkgcGFyYW1zID0gaW5wdXQ8UGFydGlhbDxUPiB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBxdWVyeVBhcmFtcyA9IGlucHV0PFBhcmFtcyB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBzdGF0ZVBhcmFtcyA9IGlucHV0PFBhcmFtcyB8IHVuZGVmaW5lZD4oKTtcclxuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7XHJcbiAgICBhbGlhczogJ3JkdERpc2FibGVkJyxcclxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcclxuICB9KTtcclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVwZGF0ZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5idXR0b25SZWYpIHtcclxuICAgICAgdGhpcy51cGRhdGVCdXR0b24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZUJ1dHRvbigpIHtcclxuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZSgpO1xyXG4gICAgaWYgKCFyb3V0ZSkge1xyXG4gICAgICB0aGlzLmNsZWFyQnV0dG9uTGluaygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAocm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpKSB7XHJcbiAgICAgIHRoaXMuc2V0QnV0dG9uTGluayhyb3V0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25MaW5rKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJ1dHRvbkxpbmsocm91dGU6IFJkdFJvdXRlPFQ+KSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBuZ0hyZWYgPSB0aGlzLmdldE5nSHJlZihyb3V0ZSk7XHJcbiAgICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG5nSHJlZik7XHJcbiAgICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodGhpcy5zdGF0ZVBhcmFtcygpID8/IHJvdXRlLnN0YXRlUGFyYW1zKTtcclxuICAgICAgYnV0dG9uLnF1ZXJ5UGFyYW1zLnNldCh0aGlzLnF1ZXJ5UGFyYW1zKCkgPz8gcm91dGUucXVlcnlQYXJhbXMpO1xyXG4gICAgICBidXR0b24uc2V0RGlzYWJsZWRTdGF0ZShmYWxzZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlQnV0dG9uTGluaygpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuYnV0dG9uUmVmITtcclxuICAgIGJ1dHRvbi5uZ0hyZWYuc2V0KG51bGwpO1xyXG4gICAgYnV0dG9uLnNldERpc2FibGVkU3RhdGUodHJ1ZSwgUEVSTUlTU0lPTl9ESVNBQkxFRF9LRVkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckJ1dHRvbkxpbmsoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblJlZiE7XHJcbiAgICBidXR0b24ubmdIcmVmLnNldChudWxsKTtcclxuICAgIGJ1dHRvbi5zdGF0ZVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5xdWVyeVBhcmFtcy5zZXQodW5kZWZpbmVkKTtcclxuICAgIGJ1dHRvbi5zZXREaXNhYmxlZFN0YXRlKGZhbHNlLCBQRVJNSVNTSU9OX0RJU0FCTEVEX0tFWSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJvdXRlckxpbmsoKSB7XHJcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUoKTtcclxuICAgIGlmICghcm91dGUpIHtcclxuICAgICAgdGhpcy5jbGVhclJvdXRlckxpbmsoKTtcclxuICAgIH0gZWxzZSBpZiAocm91dGUuY2FuQmVFbnRlcmVkKHRoaXMuZW52SW5qZWN0b3IpICYmICF0aGlzLmRpc2FibGVkKCkpIHtcclxuICAgICAgdGhpcy5zZXRSb3V0ZXJMaW5rKHJvdXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVJvdXRlckxpbmsoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Um91dGVyTGluayhyb3V0ZTogUmR0Um91dGU8VD4pIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG5nSHJlZiA9IHRoaXMuZ2V0TmdIcmVmKHJvdXRlKTtcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnJvdXRlckxpbmsgPSBuZ0hyZWY7XHJcbiAgICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHRoaXMuc3RhdGVQYXJhbXMoKSA/PyByb3V0ZS5zdGF0ZVBhcmFtcztcclxuICAgICAgdGhpcy5yb3V0ZXJMaW5rUmVmLnF1ZXJ5UGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcygpID8/IHJvdXRlLnF1ZXJ5UGFyYW1zO1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmtSZWYubmdPbkNoYW5nZXMoe30pO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5kaXNhYmxlUm91dGVyTGluaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNhYmxlUm91dGVyTGluaygpIHtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5yb3V0ZXJMaW5rID0gbnVsbDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUm91dGVyTGluaygpIHtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5yb3V0ZXJMaW5rID0gbnVsbDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5zdGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucm91dGVyTGlua1JlZi5uZ09uQ2hhbmdlcyh7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5nSHJlZihyb3V0ZTogUmR0Um91dGU8VD4pIHtcclxuICAgIHJldHVybiByb3V0ZS5jcmVhdGVBYnNvbHV0ZVVybCh0aGlzLnBhcmFtcygpKTtcclxuICB9XHJcbn1cclxuIl19","import { inject } from '@angular/core';\nimport { RdtComponentGuardStoreService } from '@ngrdt/core';\nexport const preventDataLossGuardFn = () => {\n const guardStore = inject(RdtComponentGuardStoreService);\n return guardStore.checkCanLeaveGlobal$();\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1kYXRhLWxvc3MuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QixHQUFHLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUmR0Q29tcG9uZW50R3VhcmRTdG9yZVNlcnZpY2UgfSBmcm9tICdAbmdyZHQvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcHJldmVudERhdGFMb3NzR3VhcmRGbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4gPSAoKSA9PiB7XHJcbiAgY29uc3QgZ3VhcmRTdG9yZSA9IGluamVjdChSZHRDb21wb25lbnRHdWFyZFN0b3JlU2VydmljZSk7XHJcbiAgcmV0dXJuIGd1YXJkU3RvcmUuY2hlY2tDYW5MZWF2ZUdsb2JhbCQoKTtcclxufTtcclxuIl19","import { Injectable } from '@angular/core';\nimport { GuardsCheckStart, NavigationEnd, Router, } from '@angular/router';\nimport { preventDataLossGuardFn } from './prevent-data-loss.guard';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class GlobalRouteGuardService {\n router;\n constructor(router) {\n this.router = router;\n }\n // This will help ensure that routes are automatically protected by ensuring that global guards are applied to every route\n ensureGlobalGuards() {\n let lastUrl = '';\n this.router.events.subscribe((e) => {\n // Remember last url after successful navigation\n if (e instanceof NavigationEnd) {\n lastUrl = location.href;\n }\n if (e instanceof GuardsCheckStart) {\n let lastChild = e.state.root;\n while (lastChild?.firstChild) {\n lastChild = lastChild.firstChild;\n }\n // Native back button will immediately replace url on click\n // Replace it back to last url before guard check is finished.\n // Angular will set it to correct value afterwards.\n history.replaceState(window.history.state, '', lastUrl);\n if (lastChild?.routeConfig) {\n this.ensureCanDeactivateGuards(lastChild.routeConfig);\n }\n }\n });\n }\n ensureCanDeactivateGuards(routeConfig) {\n if (!routeConfig.canDeactivate) {\n routeConfig.canDeactivate = [];\n }\n const canDeactivateGuards = routeConfig.canDeactivate;\n // ensure that the \"MySpecialCanDeactivateGuard\" is in effect.\n if (!canDeactivateGuards.find((o) => o == preventDataLossGuardFn)) {\n canDeactivateGuards.push(preventDataLossGuardFn);\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.0\", ngImport: i0, type: GlobalRouteGuardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Router }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXJvdXRlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9AbmdyZHQvcm91dGVyL3NyYy9saWIvZ3VhcmRzL2dsb2JhbC1yb3V0ZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUduRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXRDLDBIQUEwSDtJQUNuSCxrQkFBa0I7UUFDdkIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQzdCLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELDJEQUEyRDtnQkFDM0QsOERBQThEO2dCQUM5RCxtREFBbUQ7Z0JBQ25ELE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUFrQjtRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFdEQsOERBQThEO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDbEUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7dUdBeENVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBHdWFyZHNDaGVja1N0YXJ0LFxyXG4gIE5hdmlnYXRpb25FbmQsXHJcbiAgUm91dGUsXHJcbiAgUm91dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZXZlbnREYXRhTG9zc0d1YXJkRm4gfSBmcm9tICcuL3ByZXZlbnQtZGF0YS1sb3NzLmd1YXJkJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxSb3V0ZUd1YXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgcm91dGVzIGFyZSBhdXRvbWF0aWNhbGx5IHByb3RlY3RlZCBieSBlbnN1cmluZyB0aGF0IGdsb2JhbCBndWFyZHMgYXJlIGFwcGxpZWQgdG8gZXZlcnkgcm91dGVcclxuICBwdWJsaWMgZW5zdXJlR2xvYmFsR3VhcmRzKCkge1xyXG4gICAgbGV0IGxhc3RVcmwgPSAnJztcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIC8vIFJlbWVtYmVyIGxhc3QgdXJsIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICBsYXN0VXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpIHtcclxuICAgICAgICBsZXQgbGFzdENoaWxkOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gZS5zdGF0ZS5yb290O1xyXG4gICAgICAgIHdoaWxlIChsYXN0Q2hpbGQ/LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3RDaGlsZC5maXJzdENoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOYXRpdmUgYmFjayBidXR0b24gd2lsbCBpbW1lZGlhdGVseSByZXBsYWNlIHVybCBvbiBjbGlja1xyXG4gICAgICAgIC8vIFJlcGxhY2UgaXQgYmFjayB0byBsYXN0IHVybCBiZWZvcmUgZ3VhcmQgY2hlY2sgaXMgZmluaXNoZWQuXHJcbiAgICAgICAgLy8gQW5ndWxhciB3aWxsIHNldCBpdCB0byBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuXHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUod2luZG93Lmhpc3Rvcnkuc3RhdGUsICcnLCBsYXN0VXJsKTtcclxuXHJcbiAgICAgICAgaWYgKGxhc3RDaGlsZD8ucm91dGVDb25maWcpIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FuRGVhY3RpdmF0ZUd1YXJkcyhsYXN0Q2hpbGQucm91dGVDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNhbkRlYWN0aXZhdGVHdWFyZHMocm91dGVDb25maWc6IFJvdXRlKSB7XHJcbiAgICBpZiAoIXJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUpIHtcclxuICAgICAgcm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGVHdWFyZHMgPSByb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlO1xyXG5cclxuICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBcIk15U3BlY2lhbENhbkRlYWN0aXZhdGVHdWFyZFwiIGlzIGluIGVmZmVjdC5cclxuICAgIGlmICghY2FuRGVhY3RpdmF0ZUd1YXJkcy5maW5kKChvKSA9PiBvID09IHByZXZlbnREYXRhTG9zc0d1YXJkRm4pKSB7XHJcbiAgICAgIGNhbkRlYWN0aXZhdGVHdWFyZHMucHVzaChwcmV2ZW50RGF0YUxvc3NHdWFyZEZuKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyZHQtcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQG5ncmR0L3JvdXRlci9zcmMvbmdyZHQtcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngrdt/router",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.55",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=18.2.0",
|
|
6
6
|
"@angular/core": ">=18.2.0",
|
|
7
7
|
"@angular/router": ">=18.2.0",
|
|
8
8
|
"rxjs": ">=7.0.0",
|
|
9
|
-
"@ngrdt/utils": "^0.0.
|
|
10
|
-
"@ngrdt/core": "^0.0.
|
|
11
|
-
"@ngrdt/button": "^0.0.
|
|
9
|
+
"@ngrdt/utils": "^0.0.55",
|
|
10
|
+
"@ngrdt/core": "^0.0.55",
|
|
11
|
+
"@ngrdt/button": "^0.0.55"
|
|
12
12
|
},
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"module": "fesm2022/ngrdt-router.mjs",
|