@prisma-cms/front-editor
Version:
162 lines • 7.84 kB
JavaScript
"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