@mirrormedia/lilith-core
Version:
## Installation
115 lines (97 loc) • 3.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createCardValue = createCardValue;
exports.createCell = createCell;
exports.createController = createController;
exports.createField = createField;
var _react = _interopRequireDefault(require("react"));
var _core = require("@keystone-ui/core");
var _fields = require("@keystone-ui/fields");
var _components = require("@keystone-6/core/admin-ui/components");
var _draftJs = require("draft-js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createController(decorators) {
return config => {
var _config$fieldMeta, _config$fieldMeta2;
return {
disabledButtons: ((_config$fieldMeta = config.fieldMeta) === null || _config$fieldMeta === void 0 ? void 0 : _config$fieldMeta.disabledButtons) ?? [],
hideOnMobileButtons: ((_config$fieldMeta2 = config.fieldMeta) === null || _config$fieldMeta2 === void 0 ? void 0 : _config$fieldMeta2.hideOnMobileButtons) ?? [],
path: config.path,
label: config.label,
description: config.description,
graphqlSelection: config.path,
defaultValue: _draftJs.EditorState.createEmpty(decorators),
deserialize: data => {
const rawContentState = data[config.path];
if (rawContentState === null) {
return _draftJs.EditorState.createEmpty(decorators);
}
try {
const contentState = (0, _draftJs.convertFromRaw)(rawContentState);
const editorState = _draftJs.EditorState.createWithContent(contentState, decorators);
return editorState;
} catch (err) {
console.error(err);
return _draftJs.EditorState.createEmpty(decorators);
}
},
serialize: editorState => {
if (!editorState) {
return {
[config.path]: null
};
}
try {
const rawContentState = (0, _draftJs.convertToRaw)(editorState.getCurrentContent());
return {
[config.path]: rawContentState
};
} catch (err) {
console.error(err);
return {
[config.path]: null
};
}
}
};
};
}
function createField(RichTextEditor) {
return ({
field,
value,
onChange,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
autoFocus
}) => {
return /*#__PURE__*/_react.default.createElement(_fields.FieldContainer, null, /*#__PURE__*/_react.default.createElement(_fields.FieldLabel, null, field.label, /*#__PURE__*/_react.default.createElement(_core.Stack, null, /*#__PURE__*/_react.default.createElement(RichTextEditor, {
disabledButtons: field.disabledButtons,
hideOnMobileButtons: field.hideOnMobileButtons,
editorState: value,
onChange: // @ts-ignore: any
editorState => onChange === null || onChange === void 0 ? void 0 : onChange(editorState)
}))));
};
}
function createCardValue() {
return ({
item,
field
}) => {
return /*#__PURE__*/_react.default.createElement(_fields.FieldContainer, null, /*#__PURE__*/_react.default.createElement(_fields.FieldLabel, null, field.label), item[field.path]);
};
}
function createCell() {
const Cell = ({
item,
field,
linkTo
}) => {
const value = item[field.path] + '';
return linkTo ? /*#__PURE__*/_react.default.createElement(_components.CellLink, linkTo, value) : /*#__PURE__*/_react.default.createElement(_components.CellContainer, null, value);
};
Cell.supportsLinkTo = true;
return Cell;
}