UNPKG

@prisma-cms/front-editor

Version:
82 lines 3.36 kB
"use strict"; 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 }); const react_1 = __importDefault(require("react")); // import PropTypes from 'prop-types'; const EditorComponent_1 = __importDefault(require("../../EditorComponent")); const urijs_1 = __importDefault(require("urijs")); const Link_1 = __importDefault(require("material-ui-icons/Link")); const Link_2 = __importDefault(require("../../common/Link")); const ListView_1 = require("../Connectors/Connector/ListView"); const Renderer = (props) => { const { to, children } = props, other = __rest(props, ["to", "children"]); const uri = new urijs_1.default(to); let output = null; if (uri.scheme()) { output = (react_1.default.createElement("a", Object.assign({ href: to }, other), children)); } else { output = (react_1.default.createElement(Link_2.default, Object.assign({ to: to }, other), children)); } return output; }; class Link extends EditorComponent_1.default { renderPanelView(content) { return super.renderPanelView(content || (react_1.default.createElement("div", { className: "editor-component--panel-icon" }, react_1.default.createElement(Link_1.default, null), " Link"))); } getRootElement() { return Renderer; } renderMainView() { let { to } = this.getComponentProps(this); if (to) { /** * Проверяем есть ли параметры в УРЛ */ const segments = to.split('/'); /** * Если есть, то нам надо обернуть вывод в контекст объекта */ if (segments.find((n) => n && n.startsWith(':'))) { return (react_1.default.createElement(ListView_1.ObjectContext.Consumer, null, (context) => { const { object } = context; if (object) { to = segments .map((n) => { if (n && n.startsWith(':')) { n = object[n.replace(/^:/, '')]; } return n; }) .join('/'); } return super.renderMainView({ to, }); })); } } return super.renderMainView(); } } Link.defaultProps = Object.assign(Object.assign({}, EditorComponent_1.default.defaultProps), { // native: false, to: '', target: '' }); Link.Name = 'Link'; exports.default = Link; //# sourceMappingURL=index.js.map