UNPKG

@curi/interactions

Version:

Route interactions for a Curi application

72 lines (65 loc) 2.06 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function find(name, children) { return children.some(function (node) { if (node.name === name) { return true; } else if (node.children) { return find(name, node.children); } return false; }); } function active(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 r = 0, length = keys.length; r < length; r++) { var key = keys[r]; var param = options.params[key]; if (!param || param !== response.params[key]) { return false; } } } if (options.components) { return options.components(response.location); } return true; } function ancestors(route) { var ancestors = []; var parent = route.parent; while (parent !== undefined) { ancestors.unshift(parent); parent = parent.parent; } return ancestors; } function pathname(route, params) { return route.methods.pathname(params); } function prefetch(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 }); }); } exports.active = active; exports.ancestors = ancestors; exports.pathname = pathname; exports.prefetch = prefetch;