UNPKG

next

Version:

The React Framework

51 lines (49 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "isNavigatingToNewRootLayout", { enumerable: true, get: function() { return isNavigatingToNewRootLayout; } }); function isNavigatingToNewRootLayout(currentTree, nextTree) { // Compare segments const currentTreeSegment = currentTree[0]; const nextTreeSegment = nextTree[0]; // If any segment is different before we find the root layout, the root layout has changed. // E.g. /same/(group1)/layout.js -> /same/(group2)/layout.js // First segment is 'same' for both, keep looking. (group1) changed to (group2) before the root layout was found, it must have changed. if (Array.isArray(currentTreeSegment) && Array.isArray(nextTreeSegment)) { // Compare dynamic param name and type but ignore the value, different values would not affect the current root layout // /[name] - /slug1 and /slug2, both values (slug1 & slug2) still has the same layout /[name]/layout.js if (currentTreeSegment[0] !== nextTreeSegment[0] || currentTreeSegment[2] !== nextTreeSegment[2]) { return true; } } else if (currentTreeSegment !== nextTreeSegment) { return true; } // Current tree root layout found if (currentTree[4]) { // If the next tree doesn't have the root layout flag, it must have changed. return !nextTree[4]; } // Current tree didn't have its root layout here, must have changed. if (nextTree[4]) { return true; } // We can't assume it's `parallelRoutes.children` here in case the root layout is `app/@something/layout.js` // But it's not possible to be more than one parallelRoutes before the root layout is found // TODO-APP: change to traverse all parallel routes const currentTreeChild = Object.values(currentTree[1])[0]; const nextTreeChild = Object.values(nextTree[1])[0]; if (!currentTreeChild || !nextTreeChild) return true; return isNavigatingToNewRootLayout(currentTreeChild, nextTreeChild); } 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=is-navigating-to-new-root-layout.js.map