@versatiledatakit/shared
Version:
Versatile Data Kit Shared library enables reusability of shared features like: NgRx Redux, Error Handlers, Utils, Generic Components, etc.
37 lines • 5.18 kB
JavaScript
/*
* Copyright 2023-2025 Broadcom
* SPDX-License-Identifier: Apache-2.0
*/
import { CollectionsUtil } from '../../../utils';
import { RouteSegments, RouteState } from '../model';
/**
* ** Route State Factory.
*/
export class RouteStateFactory {
/**
* ** Creates Router State from provided Route snapshot.
*/
create(routeSnapshot, url) {
return RouteState.of(this._getRouteSegments(routeSnapshot), url);
}
_getRouteSegments(routeSnapshot) {
if (CollectionsUtil.isNil(routeSnapshot)) {
return null;
}
const routePathSegments = [];
routeSnapshot.url.forEach((segment) => {
routePathSegments.push(segment.path);
});
const routePath = routePathSegments.join('/');
const data = CollectionsUtil.cloneDeep(routeSnapshot.data);
const params = CollectionsUtil.cloneDeep(routeSnapshot.params);
const queryParams = CollectionsUtil.cloneDeep(routeSnapshot.queryParams);
const configPath = routeSnapshot.routeConfig?.path;
let parentNavSegments;
if (routeSnapshot.parent) {
parentNavSegments = this._getRouteSegments(routeSnapshot.parent);
}
return RouteSegments.of(routePath, data, params, queryParams, parentNavSegments, configPath);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtc3RhdGUuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvcmUvcm91dGVyL2ZhY3Rvcnkvcm91dGUtc3RhdGUuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFJSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGFBQXFDLEVBQUUsR0FBVztRQUNyRCxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxhQUFxQztRQUMzRCxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0saUJBQWlCLEdBQWEsRUFBRSxDQUFDO1FBQ3ZDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBbUIsRUFBRSxFQUFFO1lBQzlDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7UUFFbkQsSUFBSSxpQkFBZ0MsQ0FBQztRQUVyQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDdEIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sYUFBYSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIzLTIwMjUgQnJvYWRjb21cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IENvbGxlY3Rpb25zVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuaW1wb3J0IHsgUm91dGVTZWdtZW50cywgUm91dGVTdGF0ZSB9IGZyb20gJy4uL21vZGVsJztcblxuLyoqXG4gKiAqKiBSb3V0ZSBTdGF0ZSBGYWN0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgUm91dGVTdGF0ZUZhY3Rvcnkge1xuICAgIC8qKlxuICAgICAqICoqIENyZWF0ZXMgUm91dGVyIFN0YXRlIGZyb20gcHJvdmlkZWQgUm91dGUgc25hcHNob3QuXG4gICAgICovXG4gICAgY3JlYXRlKHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogUm91dGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiBSb3V0ZVN0YXRlLm9mKHRoaXMuX2dldFJvdXRlU2VnbWVudHMocm91dGVTbmFwc2hvdCksIHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Um91dGVTZWdtZW50cyhyb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUm91dGVTZWdtZW50cyB7XG4gICAgICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNOaWwocm91dGVTbmFwc2hvdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91dGVQYXRoU2VnbWVudHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHJvdXRlU25hcHNob3QudXJsLmZvckVhY2goKHNlZ21lbnQ6IFVybFNlZ21lbnQpID0+IHtcbiAgICAgICAgICAgIHJvdXRlUGF0aFNlZ21lbnRzLnB1c2goc2VnbWVudC5wYXRoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgcm91dGVQYXRoID0gcm91dGVQYXRoU2VnbWVudHMuam9pbignLycpO1xuICAgICAgICBjb25zdCBkYXRhID0gQ29sbGVjdGlvbnNVdGlsLmNsb25lRGVlcChyb3V0ZVNuYXBzaG90LmRhdGEpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBDb2xsZWN0aW9uc1V0aWwuY2xvbmVEZWVwKHJvdXRlU25hcHNob3QucGFyYW1zKTtcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBDb2xsZWN0aW9uc1V0aWwuY2xvbmVEZWVwKHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXMpO1xuICAgICAgICBjb25zdCBjb25maWdQYXRoID0gcm91dGVTbmFwc2hvdC5yb3V0ZUNvbmZpZz8ucGF0aDtcblxuICAgICAgICBsZXQgcGFyZW50TmF2U2VnbWVudHM6IFJvdXRlU2VnbWVudHM7XG5cbiAgICAgICAgaWYgKHJvdXRlU25hcHNob3QucGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnROYXZTZWdtZW50cyA9IHRoaXMuX2dldFJvdXRlU2VnbWVudHMocm91dGVTbmFwc2hvdC5wYXJlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFJvdXRlU2VnbWVudHMub2Yocm91dGVQYXRoLCBkYXRhLCBwYXJhbXMsIHF1ZXJ5UGFyYW1zLCBwYXJlbnROYXZTZWdtZW50cywgY29uZmlnUGF0aCk7XG4gICAgfVxufVxuIl19