%PDF- %PDF-
Direktori : /var/www/html/node_modules/next/dist/client/ |
Current File : /var/www/html/node_modules/next/dist/client/router.js |
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Router", { enumerable: true, get: function() { return _router.default; } }); Object.defineProperty(exports, "withRouter", { enumerable: true, get: function() { return _withRouter.default; } }); exports.useRouter = useRouter; exports.createRouter = createRouter; exports.makePublicRouterInstance = makePublicRouterInstance; exports.default = void 0; var _interop_require_default = require("@swc/helpers/lib/_interop_require_default.js").default; var _react = _interop_require_default(require("react")); var _router = _interop_require_default(require("../shared/lib/router/router")); var _routerContext = require("../shared/lib/router-context"); var _isError = _interop_require_default(require("../lib/is-error")); var _withRouter = _interop_require_default(require("./with-router")); const singletonRouter = { router: null, readyCallbacks: [], ready (cb) { if (this.router) return cb(); if (typeof window !== 'undefined') { this.readyCallbacks.push(cb); } } }; // Create public properties and methods of the router in the singletonRouter const urlPropertyFields = [ 'pathname', 'route', 'query', 'asPath', 'components', 'isFallback', 'basePath', 'locale', 'locales', 'defaultLocale', 'isReady', 'isPreview', 'isLocaleDomain', 'domainLocales', ]; const routerEvents = [ 'routeChangeStart', 'beforeHistoryChange', 'routeChangeComplete', 'routeChangeError', 'hashChangeStart', 'hashChangeComplete', ]; const coreMethodFields = [ 'push', 'replace', 'reload', 'back', 'prefetch', 'beforePopState', ]; // Events is a static property on the router, the router doesn't have to be initialized to use it Object.defineProperty(singletonRouter, 'events', { get () { return _router.default.events; } }); function getRouter() { if (!singletonRouter.router) { const message = 'No router instance found.\n' + 'You should only use "next/router" on the client side of your app.\n'; throw new Error(message); } return singletonRouter.router; } urlPropertyFields.forEach((field)=>{ // Here we need to use Object.defineProperty because we need to return // the property assigned to the actual router // The value might get changed as we change routes and this is the // proper way to access it Object.defineProperty(singletonRouter, field, { get () { const router = getRouter(); return router[field]; } }); }); coreMethodFields.forEach((field)=>{ singletonRouter[field] = (...args)=>{ const router = getRouter(); return router[field](...args); }; }); routerEvents.forEach((event)=>{ singletonRouter.ready(()=>{ _router.default.events.on(event, (...args)=>{ const eventField = `on${event.charAt(0).toUpperCase()}${event.substring(1)}`; const _singletonRouter = singletonRouter; if (_singletonRouter[eventField]) { try { _singletonRouter[eventField](...args); } catch (err) { console.error(`Error when running the Router event: ${eventField}`); console.error((0, _isError).default(err) ? `${err.message}\n${err.stack}` : err + ''); } } }); }); }); var _default = singletonRouter; exports.default = _default; function useRouter() { return _react.default.useContext(_routerContext.RouterContext); } function createRouter(...args) { singletonRouter.router = new _router.default(...args); singletonRouter.readyCallbacks.forEach((cb)=>cb()); singletonRouter.readyCallbacks = []; return singletonRouter.router; } function makePublicRouterInstance(router) { const scopedRouter = router; const instance = {}; for (const property of urlPropertyFields){ if (typeof scopedRouter[property] === 'object') { instance[property] = Object.assign(Array.isArray(scopedRouter[property]) ? [] : {}, scopedRouter[property]) // makes sure query is not stateful ; continue; } instance[property] = scopedRouter[property]; } // Events is a static property on the router, the router doesn't have to be initialized to use it instance.events = _router.default.events; coreMethodFields.forEach((field)=>{ instance[field] = (...args)=>{ return scopedRouter[field](...args); }; }); return instance; } 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=router.js.map