UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

74 lines 3.92 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; 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) { _defineProperty(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; } import { ACTIONS } from '../../pm-plugins/actions'; export var 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 = _slicedToArray(_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; } export var applyFormatCodeMeta = function applyFormatCodeMeta(pluginState, meta) { switch (meta === null || meta === void 0 ? void 0 : meta.type) { case ACTIONS.START_FORMAT_CODE: return _objectSpread(_objectSpread({}, pluginState), {}, { pendingFormats: _objectSpread(_objectSpread({}, pluginState.pendingFormats), {}, _defineProperty({}, meta.data.localId, { languageSource: meta.data.languageSource, pos: meta.data.pos, requestId: meta.data.requestId })) }); case 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), {}, _defineProperty({}, meta.data.localId, { errorType: meta.data.errorType, localId: meta.data.localId, languageSource: meta.data.languageSource })) : formatCodeErrors, pendingFormats: pendingFormats }); } case ACTIONS.CLEAR_FORMAT_CODE_ERROR: return _objectSpread(_objectSpread({}, pluginState), {}, { formatCodeErrors: removeRecordEntry(pluginState.formatCodeErrors, meta.data.localId) }); default: return pluginState; } };