@atlaskit/editor-plugin-code-block
Version:
Code block plugin for @atlaskit/editor-core
81 lines (80 loc) • 4.33 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.mapPendingFormats = exports.applyFormatCodeMeta = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _actions = require("../../pm-plugins/actions");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var mapPendingFormats = exports.mapPendingFormats = function mapPendingFormats(pendingFormats, tr, newState) {
var entries = Object.entries(pendingFormats);
if (entries.length === 0) {
return pendingFormats;
}
var nextPendingFormats = pendingFormats;
entries.forEach(function (_ref) {
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
localId = _ref2[0],
pendingFormat = _ref2[1];
var _tr$mapping$mapResult = tr.mapping.mapResult(pendingFormat.pos, 1),
deleted = _tr$mapping$mapResult.deleted,
pos = _tr$mapping$mapResult.pos;
var codeBlockNode = newState.doc.nodeAt(pos);
var shouldRemovePendingFormat = deleted || (codeBlockNode === null || codeBlockNode === void 0 ? void 0 : codeBlockNode.type) !== newState.schema.nodes.codeBlock || (codeBlockNode === null || codeBlockNode === void 0 ? void 0 : codeBlockNode.attrs.localId) !== localId;
var shouldUpdatePendingFormat = pos !== pendingFormat.pos;
if (shouldRemovePendingFormat || shouldUpdatePendingFormat) {
if (nextPendingFormats === pendingFormats) {
nextPendingFormats = _objectSpread({}, pendingFormats);
}
}
if (shouldRemovePendingFormat) {
delete nextPendingFormats[localId];
return;
}
if (shouldUpdatePendingFormat) {
nextPendingFormats[localId] = _objectSpread(_objectSpread({}, pendingFormat), {}, {
pos: pos
});
}
});
return nextPendingFormats;
};
function removeRecordEntry(record, key) {
var nextRecord = _objectSpread({}, record);
delete nextRecord[key];
return nextRecord;
}
var applyFormatCodeMeta = exports.applyFormatCodeMeta = function applyFormatCodeMeta(pluginState, meta) {
switch (meta === null || meta === void 0 ? void 0 : meta.type) {
case _actions.ACTIONS.START_FORMAT_CODE:
return _objectSpread(_objectSpread({}, pluginState), {}, {
pendingFormats: _objectSpread(_objectSpread({}, pluginState.pendingFormats), {}, (0, _defineProperty2.default)({}, meta.data.localId, {
languageSource: meta.data.languageSource,
pos: meta.data.pos,
requestId: meta.data.requestId
}))
});
case _actions.ACTIONS.RESOLVE_FORMAT_CODE:
{
var pendingFormats = removeRecordEntry(pluginState.pendingFormats, meta.data.localId);
var formatCodeErrors = removeRecordEntry(pluginState.formatCodeErrors, meta.data.localId);
return _objectSpread(_objectSpread({}, pluginState), {}, {
formatCodeErrors: meta.data.outcome === 'failed' ? _objectSpread(_objectSpread({}, formatCodeErrors), {}, (0, _defineProperty2.default)({}, meta.data.localId, {
errorType: meta.data.errorType,
localId: meta.data.localId,
languageSource: meta.data.languageSource
})) : formatCodeErrors,
pendingFormats: pendingFormats
});
}
case _actions.ACTIONS.CLEAR_FORMAT_CODE_ERROR:
return _objectSpread(_objectSpread({}, pluginState), {}, {
formatCodeErrors: removeRecordEntry(pluginState.formatCodeErrors, meta.data.localId)
});
default:
return pluginState;
}
};