UNPKG

2.49 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 (global = global || self, factory(global.CuriInteractions = {}));
5}(this, function (exports) { 'use strict';
6
7 function find(name, children) {
8 return children.some(function (node) {
9 if (node.name === name) {
10 return true;
11 }
12 else if (node.children) {
13 return find(name, node.children);
14 }
15 return false;
16 });
17 }
18 function active(route, response, options) {
19 if (options === void 0) { options = {}; }
20 if (response.name !== route.name &&
21 (!options.partial || !find(response.name, route.children))) {
22 return false;
23 }
24 var keys = route.keys;
25 if (keys.length) {
26 if (!options.params) {
27 return false;
28 }
29 for (var r = 0, length = keys.length; r < length; r++) {
30 var key = keys[r];
31 var param = options.params[key];
32 if (!param || param !== response.params[key]) {
33 return false;
34 }
35 }
36 }
37 if (options.components) {
38 return options.components(response.location);
39 }
40 return true;
41 }
42
43 function ancestors(route) {
44 var ancestors = [];
45 var parent = route.parent;
46 while (parent !== undefined) {
47 ancestors.unshift(parent);
48 parent = parent.parent;
49 }
50 return ancestors;
51 }
52
53 function pathname(route, params) {
54 return route.methods.pathname(params);
55 }
56
57 function prefetch(route, options) {
58 if (options === void 0) { options = {}; }
59 if (!route.methods.resolve) {
60 return Promise.resolve({
61 resolved: null,
62 error: "Could not prefetch data for " + route.name + " because it does not have a resolve function."
63 });
64 }
65 return route.methods
66 .resolve(options.match, options.external)
67 .then(function (resolved) { return ({ resolved: resolved, error: null }); }, function (error) { return ({ error: error, resolved: null }); });
68 }
69
70 exports.active = active;
71 exports.ancestors = ancestors;
72 exports.pathname = pathname;
73 exports.prefetch = prefetch;
74
75 Object.defineProperty(exports, '__esModule', { value: true });
76
77}));