UNPKG

@berish/mvc-router5-plugin

Version:

Router5 plugin for @berish/mvc-core

49 lines 2.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.plugin = void 0; const react_1 = __importDefault(require("react")); const react_router5_1 = require("react-router5"); const router5Context_1 = require("./router5Context"); const methods_1 = require("./methods"); const params_1 = require("./params"); const plugin = (params) => ({ mvcController, mvcRenderConfig }) => { const { getRouter, mapPathItemsToController, convertPathItemsToPath, convertPathItemsToName } = (0, params_1.getDefaultParams)(params); const router = getRouter(); const mapNameToController = []; for (const [pathItems, controllerClass] of mapPathItemsToController) { const path = convertPathItemsToPath(pathItems); const name = convertPathItemsToName(pathItems); mapNameToController.push([name, controllerClass]); controllerClass.routeName = name; controllerClass.routeTemplatePath = path; controllerClass.routeTemplateFullPath = controllerClass.routeTemplatePath && `${window.location.origin}${controllerClass.routeTemplatePath}`; } return { controller: { upgradeInstance: (instance) => { instance.navigate = (controllerClass, params) => (0, methods_1.navigate)(router, controllerClass, params); instance.replace = (controllerClass, params) => (0, methods_1.replace)(router, controllerClass, params); instance.isActiveRoute = (controllerClass) => (0, methods_1.isActiveRoute)(router, controllerClass); }, }, provider: { upgradeRender: () => { const prevRenderApp = mvcRenderConfig.renderApp; mvcRenderConfig.renderApp = (props) => { return (react_1.default.createElement(react_router5_1.RouterProvider, { router: router }, react_1.default.createElement(router5Context_1.router5Context.Provider, { value: { mapNameToController, router } }, prevRenderApp(props)))); }; }, upgrade: () => { mvcController.navigate = (controllerClass, params) => (0, methods_1.navigate)(router, controllerClass, params); mvcController.replace = (controllerClass, params) => (0, methods_1.replace)(router, controllerClass, params); }, }, }; }; exports.plugin = plugin; //# sourceMappingURL=plugin.js.map