"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "createOptimisticTree", { enumerable: true, get: function() { return createOptimisticTree; } }); const _matchsegments = require("../match-segments"); function createOptimisticTree(segments, flightRouterState, parentRefetch) { const [existingSegment, existingParallelRoutes, url, refresh, isRootLayout] = flightRouterState || [ null, {} ]; const segment = segments[0]; const isLastSegment = segments.length === 1; const segmentMatches = existingSegment !== null && (0, _matchsegments.matchSegment)(existingSegment, segment); // if there are multiple parallel routes at this level, we need to refetch here // to ensure we get the correct tree. This is because we don't know which // parallel route will match the next segment. const hasMultipleParallelRoutes = Object.keys(existingParallelRoutes).length > 1; const shouldRefetchThisLevel = !flightRouterState || !segmentMatches || hasMultipleParallelRoutes; let parallelRoutes = {}; if (existingSegment !== null && segmentMatches) { parallelRoutes = existingParallelRoutes; } let childTree; // if there's multiple parallel routes at this level, we shouldn't create an // optimistic tree for the next level because we don't know which one will // match the next segment. if (!isLastSegment && !hasMultipleParallelRoutes) { const childItem = createOptimisticTree(segments.slice(1), parallelRoutes ? parallelRoutes.children : null, parentRefetch || shouldRefetchThisLevel); childTree = childItem; } const result = [ segment, { ...parallelRoutes, ...childTree ? { children: childTree } : {} } ]; if (url) { result[2] = url; } if (!parentRefetch && shouldRefetchThisLevel) { result[3] = "refetch"; } else if (segmentMatches && refresh) { result[3] = refresh; } if (segmentMatches && isRootLayout) { result[4] = isRootLayout; } return result; } if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=create-optimistic-tree.js.map