156 lines
4.9 KiB
JavaScript
156 lines
4.9 KiB
JavaScript
'use client';
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
0 && (module.exports = {
|
|
SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE: null,
|
|
SegmentBoundaryTriggerNode: null,
|
|
SegmentStateProvider: null,
|
|
SegmentViewNode: null,
|
|
SegmentViewStateNode: null,
|
|
useSegmentState: null
|
|
});
|
|
function _export(target, all) {
|
|
for(var name in all)Object.defineProperty(target, name, {
|
|
enumerable: true,
|
|
get: all[name]
|
|
});
|
|
}
|
|
_export(exports, {
|
|
SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE: function() {
|
|
return SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE;
|
|
},
|
|
SegmentBoundaryTriggerNode: function() {
|
|
return SegmentBoundaryTriggerNode;
|
|
},
|
|
SegmentStateProvider: function() {
|
|
return SegmentStateProvider;
|
|
},
|
|
SegmentViewNode: function() {
|
|
return SegmentViewNode;
|
|
},
|
|
SegmentViewStateNode: function() {
|
|
return SegmentViewStateNode;
|
|
},
|
|
useSegmentState: function() {
|
|
return useSegmentState;
|
|
}
|
|
});
|
|
const _jsxruntime = require("react/jsx-runtime");
|
|
const _react = require("react");
|
|
const _nextdevtools = require("next/dist/compiled/next-devtools");
|
|
const _notfound = require("../../../client/components/not-found");
|
|
const SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE = 'NEXT_DEVTOOLS_SIMULATED_ERROR';
|
|
function SegmentTrieNode({ type, pagePath }) {
|
|
const { boundaryType, setBoundaryType } = useSegmentState();
|
|
const nodeState = (0, _react.useMemo)(()=>{
|
|
return {
|
|
type,
|
|
pagePath,
|
|
boundaryType,
|
|
setBoundaryType
|
|
};
|
|
}, [
|
|
type,
|
|
pagePath,
|
|
boundaryType,
|
|
setBoundaryType
|
|
]);
|
|
// Use `useLayoutEffect` to ensure the state is updated during suspense.
|
|
// `useEffect` won't work as the state is preserved during suspense.
|
|
(0, _react.useLayoutEffect)(()=>{
|
|
_nextdevtools.dispatcher.segmentExplorerNodeAdd(nodeState);
|
|
return ()=>{
|
|
_nextdevtools.dispatcher.segmentExplorerNodeRemove(nodeState);
|
|
};
|
|
}, [
|
|
nodeState
|
|
]);
|
|
return null;
|
|
}
|
|
function NotFoundSegmentNode() {
|
|
(0, _notfound.notFound)();
|
|
}
|
|
function ErrorSegmentNode() {
|
|
throw Object.defineProperty(new Error(SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE), "__NEXT_ERROR_CODE", {
|
|
value: "E394",
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
}
|
|
const forever = new Promise(()=>{});
|
|
function LoadingSegmentNode() {
|
|
(0, _react.use)(forever);
|
|
return null;
|
|
}
|
|
function SegmentViewStateNode({ page }) {
|
|
(0, _react.useLayoutEffect)(()=>{
|
|
_nextdevtools.dispatcher.segmentExplorerUpdateRouteState(page);
|
|
return ()=>{
|
|
_nextdevtools.dispatcher.segmentExplorerUpdateRouteState('');
|
|
};
|
|
}, [
|
|
page
|
|
]);
|
|
return null;
|
|
}
|
|
function SegmentBoundaryTriggerNode() {
|
|
const { boundaryType } = useSegmentState();
|
|
let segmentNode = null;
|
|
if (boundaryType === 'loading') {
|
|
segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(LoadingSegmentNode, {});
|
|
} else if (boundaryType === 'not-found') {
|
|
segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(NotFoundSegmentNode, {});
|
|
} else if (boundaryType === 'error') {
|
|
segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorSegmentNode, {});
|
|
}
|
|
return segmentNode;
|
|
}
|
|
function SegmentViewNode({ type, pagePath, children }) {
|
|
const segmentNode = /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentTrieNode, {
|
|
type: type,
|
|
pagePath: pagePath
|
|
}, type);
|
|
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
|
children: [
|
|
segmentNode,
|
|
children
|
|
]
|
|
});
|
|
}
|
|
const SegmentStateContext = /*#__PURE__*/ (0, _react.createContext)({
|
|
boundaryType: null,
|
|
setBoundaryType: ()=>{}
|
|
});
|
|
function SegmentStateProvider({ children }) {
|
|
const [boundaryType, setBoundaryType] = (0, _react.useState)(null);
|
|
const [errorBoundaryKey, setErrorBoundaryKey] = (0, _react.useState)(0);
|
|
const reloadBoundary = (0, _react.useCallback)(()=>setErrorBoundaryKey((prev)=>prev + 1), []);
|
|
const setBoundaryTypeAndReload = (0, _react.useCallback)((type)=>{
|
|
if (type === null) {
|
|
reloadBoundary();
|
|
}
|
|
setBoundaryType(type);
|
|
}, [
|
|
reloadBoundary
|
|
]);
|
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)(SegmentStateContext.Provider, {
|
|
value: {
|
|
boundaryType,
|
|
setBoundaryType: setBoundaryTypeAndReload
|
|
},
|
|
children: children
|
|
}, errorBoundaryKey);
|
|
}
|
|
function useSegmentState() {
|
|
return (0, _react.useContext)(SegmentStateContext);
|
|
}
|
|
|
|
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=segment-explorer-node.js.map
|