@berish/mvc-router5-plugin
Version:
Router5 plugin for @berish/mvc-core
49 lines • 2.59 kB
JavaScript
;
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