UNPKG

@atlaskit/adf-schema

Version:

Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs

110 lines (109 loc) 3.13 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.TableSideEffectHandler = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _prosemirrorTransform = require("prosemirror-transform"); var TableSideEffectHandler = /*#__PURE__*/function () { function TableSideEffectHandler(tableSideEffect) { (0, _classCallCheck2.default)(this, TableSideEffectHandler); if (tableSideEffect) { this.table = tableSideEffect; } } (0, _createClass2.default)(TableSideEffectHandler, [{ key: "addTableSideEffect", value: function addTableSideEffect(from, to, node) { this.table = { from: from, to: to, node: node }; } }, { key: "handleAddTable", value: function handleAddTable(tr, isDelete) { if (isDelete || !this.table) { return false; } tr.insert(this.table.from, this.table.node); return true; } }, { key: "handleRemoveTable", value: function handleRemoveTable(tr, tablePos, tableRect, column, isDelete) { if (isDelete && tableRect.map.width === 1 && column === 0) { // Add side effect this.addTableSideEffect(tablePos, tablePos + tableRect.table.nodeSize, tableRect.table.copy(tableRect.table.content)); tr.delete(tablePos, tablePos + tableRect.table.nodeSize); return true; } return false; } }, { key: "getTableMap", value: function getTableMap(isDelete) { if (!this.table) { return; } var _this$table = this.table, from = _this$table.from, to = _this$table.to; if (isDelete) { return new _prosemirrorTransform.StepMap([from, to - from, 0]); } return new _prosemirrorTransform.StepMap([from, 0, to - from]); } }, { key: "map", value: function map(mapping) { if (!this.table) { return; } return { from: mapping.map(this.table.from), to: mapping.map(this.table.to), node: this.table.node }; } }, { key: "invert", value: function invert(doc) { if (!this.table) { return; } var tableNode = doc.nodeAt(this.table.from); return { from: this.table.from, to: this.table.from + tableNode.nodeSize, node: tableNode.copy(tableNode.content) }; } }, { key: "toJSON", value: function toJSON() { if (!this.table) { return; } return { from: this.table.from, to: this.table.to, node: this.table.node.toJSON() }; } }], [{ key: "fromJSON", value: function fromJSON(schema, json) { return { from: json.from, to: json.to, node: schema.nodeFromJSON(json.node) }; } }]); return TableSideEffectHandler; }(); exports.TableSideEffectHandler = TableSideEffectHandler;