UNPKG

@curi/interactions

Version:

Route interactions for a Curi application

62 lines (60 loc) 1.97 kB
var pathname = function (route, params) { return route.methods.pathname(params); }; var find = function (name, children) { return children.some(function (node) { if (node.name === name) { return true; } else if (node.children) { return find(name, node.children); } return false; }); }; var active = function (route, response, options) { if (options === void 0) { options = {}; } if (response.name !== route.name && (!options.partial || !find(response.name, route.children))) { return false; } var keys = route.keys; if (keys.length) { if (!options.params) { return false; } for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var key = keys_1[_i]; var param = options.params[key]; if (!param || param !== response.params[key]) { return false; } } } if (options.components) { return options.components(response.location); } return true; }; var ancestors = function (route) { var ancestors = []; var parent = route.parent; while (parent !== undefined) { ancestors.unshift(parent); parent = parent.parent; } return ancestors; }; var prefetch = function (route, options) { if (options === void 0) { options = {}; } if (!route.methods.resolve) { return Promise.resolve({ resolved: null, error: "Could not prefetch data for " + route.name + " because it does not have a resolve function." }); } return route.methods .resolve(options.match, options.external) .then(function (resolved) { return ({ resolved: resolved, error: null }); }, function (error) { return ({ error: error, resolved: null }); }); }; export { active, ancestors, pathname, prefetch };