UNPKG

@prisma-cms/front-editor

Version:
162 lines 7.84 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable react/jsx-no-bind */ const react_1 = __importStar(require("react")); const prop_types_1 = __importDefault(require("prop-types")); const EditorComponent_1 = __importDefault(require("../../../EditorComponent")); // import Icon from "material-ui-icons/SettingsOverscan"; const react_router_dom_1 = require("react-router-dom"); const Typography_1 = __importDefault(require("material-ui/Typography")); const Route_1 = __importDefault(require("../Route")); const context_1 = require("../../../context"); const Grid_1 = __importDefault(require("../../../common/Grid")); // import PrismaCmsPerformanceTester from "@prisma-cms/performance"; class EditorSwitch extends EditorComponent_1.default { /** * Не может быть дочерним для другого роутера */ canBeChild(child) { return child instanceof Route_1.default && super.canBeChild(child); } renderPanelView(content) { return super.renderPanelView(content || (react_1.default.createElement("div", { className: "editor-component--panel-icon" }, "Router Switch"))); } renderItems({ itemComponents, menuItems, output, Components, showRoutes, createTemplate, updateTemplate, routesShowed, }) { itemComponents.map((n, index) => { const { id, name, props } = n, other = __rest(n, ["id", "name", "props"]); const { exact, path, routername } = props; const Component = Components.find((n) => n.Name === name); if (Component) { let component; const route = (react_1.default.createElement(react_router_dom_1.Route, { key: id || index, exact: exact === undefined ? false : exact, path: path, render: (routerProps) => { /** ToDo: Удалить routerProps, потому что передает каждый раз новый объект и Роуты перерендериваются */ return (react_1.default.createElement(context_1.RouteContext.Provider, { value: routerProps }, react_1.default.createElement(Component // key={id || index} , Object.assign({ // key={id || index} mode: "main", // component={n} parent: this, props: props, // data={{ // object: n, // }} object: n, exact: exact, path: path, routername: routername, // _dirty={n} showRoutes: showRoutes, createTemplate: createTemplate, updateTemplate: updateTemplate }, other, props, routerProps)))); } })); /** * Если в режиме редактирования и показывать роутеры, то выводим данные */ // if (inEditMode && showRoutes) { if (routesShowed) { const key = `${id}-${index}`; const title = (react_1.default.createElement(Typography_1.default, null, routername, ' ', react_1.default.createElement(Typography_1.default, { component: "span", variant: "caption", style: { display: 'inline-block', } }, path, !exact ? '*' : ''))); component = (react_1.default.createElement(react_1.Fragment, { key: key }, title, route)); menuItems.push(react_1.default.createElement(Grid_1.default, { key: key, item: true }, title)); } else { // component = <Route // key={id || index} // exact={exact === undefined ? true : exact} // path={path} // render={() => { // return element; // }} // /> component = route; } output.push(component); } }); } renderChildren() { const { inEditMode } = this.getEditorContext(); const { // mutate, createTemplate, updateTemplate, } = this.props; const { showRoutes } = this.getComponentProps(this); const object = this.getObjectWithMutations(); const { Components } = this.getEditorContext(); const { // props, components: itemComponents, } = object; const output = []; let header; const routesShowed = inEditMode && showRoutes; if (itemComponents) { const menuItems = []; this.renderItems({ itemComponents, menuItems, output, Components, showRoutes, createTemplate, updateTemplate, routesShowed, }); header = (react_1.default.createElement(Grid_1.default, { container: true, spacing: 16 }, menuItems)); } let result = null; if (routesShowed) { result = (react_1.default.createElement(react_1.Fragment, { key: "with_header" }, header, output)); } else { result = react_1.default.createElement(react_router_dom_1.Switch, { key: "router" }, output); } return result; } } EditorSwitch.Name = 'EditorSwitch'; EditorSwitch.propTypes = Object.assign(Object.assign({}, EditorComponent_1.default.propTypes), { showRoutes: prop_types_1.default.bool.isRequired }); EditorSwitch.defaultProps = Object.assign(Object.assign({}, EditorComponent_1.default.defaultProps), { showRoutes: true, hide_wrapper_in_default_mode: true }); exports.default = EditorSwitch; //# sourceMappingURL=index.js.map