getNodeWithPaths()

in helpers/navigation/nav_tree.js [58:83]


  getNodeWithPaths(paths = []) {
    const [path, ...rest] = paths;
    let leaves = this.nodes.filter((node) => node.path === path);

    const removeSimilarLeaves = (nodes, remainingPaths) => {
      if (!remainingPaths.length) {
        return;
      }
      const [currentPath, ...currentRemainingPaths] = remainingPaths;
      nodes.forEach((node) => {
        const { parent } = node;
        if (parent) {
          if (parent.path === currentPath) {
            removeSimilarLeaves([parent], currentRemainingPaths);
          } else if (parent.path === undefined) {
            removeSimilarLeaves([parent], remainingPaths);
          } else {
            leaves = leaves.filter(({ id }) => id !== node.id);
          }
        }
      });
    };
    removeSimilarLeaves(leaves, rest);

    return leaves?.[0];
  }