@atlaskit/adf-schema
Version:
Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs
110 lines (109 loc) • 3.13 kB
JavaScript
"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;