@prisma-cms/front-editor
Version:
82 lines • 3.36 kB
JavaScript
;
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