UNPKG

@tangential/core

Version:

Core types and support code for Tangential

91 lines 10.8 kB
export class NgRouteUtil { static fullPath(route) { let pathAry = []; route.pathFromRoot .map(routeSegment => routeSegment.snapshot) .map(routeSnap => { return routeSnap; }) .map(routeSnap => routeSnap.url) .filter(segments => segments && segments.length > 0) .forEach(segments => segments.forEach(segment => pathAry.push(segment.toString()))); let path = pathAry.join('/'); if (path && path.endsWith('/')) { path = path.substring(0, path.length - 1); } return path; } static primaryLeaf(router) { let c = router.routerState.root; while (c.firstChild) { c = c.firstChild; } return c; } static findDescendantByComponentKey(router, componentTypeKey) { let c = router.routerState.root; do { if (c.component && c.component['Key'] == componentTypeKey) { break; } c = c.firstChild; } while (c); return c; } /** * Breadth first search of route to find the descendant where 'parent.children[x].component['Key'] === componentTypeKey' * This requires that the Component have the static field 'Key' declared and set to a value. * @param route * @param componentTypeKey * @returns {Route | null} */ static findDescendantRouteByComponentKey(route, componentTypeKey) { let result = null; if (route.children) { for (let i = 0; i < route.children.length; i++) { let child = route.children[i]; if (child.component && child.component['Key'] === componentTypeKey) { result = child; break; } } if (!result) { for (let i = 0; i < route.children.length; i++) { result = NgRouteUtil.findDescendantRouteByComponentKey(route.children[i], componentTypeKey); if (result) { break; } } } } return result; } /** * Breadth first search of route to find the descendant where 'parent.children[x].path === path' * @param route * @param path * @returns {Route | null} */ static findDescendantRouteByPath(route, path) { let result = null; if (route.children) { for (let i = 0; i < route.children.length; i++) { let child = route.children[i]; if (child.path === path) { result = child; break; } } if (!result) { for (let i = 0; i < route.children.length; i++) { result = NgRouteUtil.findDescendantRouteByPath(route.children[i], path); if (result) { break; } } } } return result; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcm91dGUtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdlbnRpYWwvY29yZS9zcmMvbGliL3JvdXRpbmcvbmctcm91dGUtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sV0FBVztJQUV0QixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQXFCO1FBQ25DLElBQUksT0FBTyxHQUFZLEVBQUUsQ0FBQTtRQUN6QixLQUFLLENBQUMsWUFBWTthQUNmLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7YUFDMUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQzthQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXJGLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFNUIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtTQUMxQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE1BQU0s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QUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGUsXG4gIFJvdXRlLFxuICBSb3V0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5leHBvcnQgY2xhc3MgTmdSb3V0ZVV0aWwge1xuXG4gIHN0YXRpYyBmdWxsUGF0aChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOnN0cmluZyB7XG4gICAgbGV0IHBhdGhBcnk6c3RyaW5nW10gPSBbXVxuICAgIHJvdXRlLnBhdGhGcm9tUm9vdFxuICAgICAgLm1hcChyb3V0ZVNlZ21lbnQgPT4gcm91dGVTZWdtZW50LnNuYXBzaG90KVxuICAgICAgLm1hcChyb3V0ZVNuYXAgPT4ge1xuICAgICAgICByZXR1cm4gcm91dGVTbmFwXG4gICAgICB9KVxuICAgICAgLm1hcChyb3V0ZVNuYXAgPT4gcm91dGVTbmFwLnVybClcbiAgICAgIC5maWx0ZXIoc2VnbWVudHMgPT4gc2VnbWVudHMgJiYgc2VnbWVudHMubGVuZ3RoID4gMClcbiAgICAgIC5mb3JFYWNoKHNlZ21lbnRzID0+IHNlZ21lbnRzLmZvckVhY2goc2VnbWVudCA9PiBwYXRoQXJ5LnB1c2goc2VnbWVudC50b1N0cmluZygpKSkpXG5cbiAgICBsZXQgcGF0aCA9IHBhdGhBcnkuam9pbignLycpXG5cbiAgICBpZiAocGF0aCAmJiBwYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDEpXG4gICAgfVxuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICBzdGF0aWMgcHJpbWFyeUxlYWYocm91dGVyOiBSb3V0ZXIpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gICAgbGV0IGMgPSByb3V0ZXIucm91dGVyU3RhdGUucm9vdFxuICAgIHdoaWxlIChjLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGMgPSBjLmZpcnN0Q2hpbGRcbiAgICB9XG4gICAgcmV0dXJuIGNcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVzY2VuZGFudEJ5Q29tcG9uZW50S2V5KHJvdXRlcjogUm91dGVyLCBjb21wb25lbnRUeXBlS2V5OiBzdHJpbmcpOiAoQWN0aXZhdGVkUm91dGUgfCBudWxsICkge1xuICAgIGxldCBjOkFjdGl2YXRlZFJvdXRlIHwgbnVsbCAgPSByb3V0ZXIucm91dGVyU3RhdGUucm9vdFxuICAgIGRvIHtcbiAgICAgIGlmIChjLmNvbXBvbmVudCAmJiAoYy5jb21wb25lbnQgYXMgYW55KVsnS2V5J10gPT0gY29tcG9uZW50VHlwZUtleSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgYyA9IGMuZmlyc3RDaGlsZFxuICAgIH0gd2hpbGUgKGMpXG4gICAgcmV0dXJuIGNcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEJyZWFkdGggZmlyc3Qgc2VhcmNoIG9mIHJvdXRlIHRvIGZpbmQgdGhlIGRlc2NlbmRhbnQgd2hlcmUgJ3BhcmVudC5jaGlsZHJlblt4XS5jb21wb25lbnRbJ0tleSddID09PSBjb21wb25lbnRUeXBlS2V5J1xuICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIENvbXBvbmVudCBoYXZlIHRoZSBzdGF0aWMgZmllbGQgJ0tleScgZGVjbGFyZWQgYW5kIHNldCB0byBhIHZhbHVlLlxuICAgKiBAcGFyYW0gcm91dGVcbiAgICogQHBhcmFtIGNvbXBvbmVudFR5cGVLZXlcbiAgICogQHJldHVybnMge1JvdXRlIHwgbnVsbH1cbiAgICovXG4gIHN0YXRpYyBmaW5kRGVzY2VuZGFudFJvdXRlQnlDb21wb25lbnRLZXkocm91dGU6IFJvdXRlLCBjb21wb25lbnRUeXBlS2V5OiBzdHJpbmcpOiAoUm91dGUgfCBudWxsICkge1xuICAgIGxldCByZXN1bHQgPSBudWxsXG4gICAgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IHJvdXRlLmNoaWxkcmVuW2ldXG4gICAgICAgIGlmIChjaGlsZC5jb21wb25lbnQgJiYgKGNoaWxkLmNvbXBvbmVudCBhcyBhbnkpWydLZXknXSA9PT0gY29tcG9uZW50VHlwZUtleSkge1xuICAgICAgICAgIHJlc3VsdCA9IGNoaWxkXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHJlc3VsdCA9IE5nUm91dGVVdGlsLmZpbmREZXNjZW5kYW50Um91dGVCeUNvbXBvbmVudEtleShyb3V0ZS5jaGlsZHJlbltpXSwgY29tcG9uZW50VHlwZUtleSlcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQnJlYWR0aCBmaXJzdCBzZWFyY2ggb2Ygcm91dGUgdG8gZmluZCB0aGUgZGVzY2VuZGFudCB3aGVyZSAncGFyZW50LmNoaWxkcmVuW3hdLnBhdGggPT09IHBhdGgnXG4gICAqIEBwYXJhbSByb3V0ZVxuICAgKiBAcGFyYW0gcGF0aFxuICAgKiBAcmV0dXJucyB7Um91dGUgfCBudWxsfVxuICAgKi9cbiAgc3RhdGljIGZpbmREZXNjZW5kYW50Um91dGVCeVBhdGgocm91dGU6IFJvdXRlLCBwYXRoOiBzdHJpbmcpOiAoUm91dGUgfCBudWxsICkge1xuICAgIGxldCByZXN1bHQgPSBudWxsXG4gICAgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IHJvdXRlLmNoaWxkcmVuW2ldXG4gICAgICAgIGlmIChjaGlsZC5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2hpbGRcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcmVzdWx0ID0gTmdSb3V0ZVV0aWwuZmluZERlc2NlbmRhbnRSb3V0ZUJ5UGF0aChyb3V0ZS5jaGlsZHJlbltpXSwgcGF0aClcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxufVxuIl19