UNPKG

@atlaskit/adf-schema

Version:

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

112 lines (108 loc) 4.66 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.stepType = exports.invertStepType = exports.LinkMetaStep = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _prosemirrorModel = require("prosemirror-model"); var _prosemirrorTransform = require("prosemirror-transform"); var _excluded = ["sourceEvent"]; function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var stepType = 'editor-linking-meta'; exports.stepType = stepType; var invertStepType = 'editor-linking-meta-invert'; exports.invertStepType = invertStepType; /** * Custom Prosemirror Step to attach metadata about user interactions with links * Using a Step means that it will work with prosemirror-history and we get utilise when * firing events on history change */ var LinkMetaStep = /*#__PURE__*/function (_Step) { (0, _inherits2.default)(LinkMetaStep, _Step); var _super = _createSuper(LinkMetaStep); function LinkMetaStep(pos, metadata) { var _this; var isInverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; (0, _classCallCheck2.default)(this, LinkMetaStep); _this = _super.call(this); _this.pos = pos; _this.metadata = metadata; _this.isInverted = isInverted; return _this; } (0, _createClass2.default)(LinkMetaStep, [{ key: "getMetadata", value: function getMetadata() { return this.metadata; } /** * Generate new undo/redo analytics event when step is inverted */ }, { key: "invert", value: function invert() { /** * Omit sourceEvent in history */ var _this$metadata = this.metadata, sourceEvent = _this$metadata.sourceEvent, metadata = (0, _objectWithoutProperties2.default)(_this$metadata, _excluded); return new LinkMetaStep(this.pos, metadata, true); } // Should make no modifications to the doc }, { key: "apply", value: function apply(doc) { return _prosemirrorTransform.StepResult.ok(doc); } }, { key: "map", value: function map(mapping) { var newPos = this.pos; if (typeof newPos === 'number') { newPos = mapping.map(newPos); } // Return the same events, this step will never be removed return new LinkMetaStep(newPos, this.metadata, this.isInverted); } }, { key: "getMap", value: function getMap() { return new _prosemirrorTransform.StepMap([this.pos || 0, 0, 0]); } // Return null to avoid merging events }, { key: "merge", value: function merge() { return null; } }, { key: "toJSON", value: function toJSON() { // When serialized we should create a noop Replace step return { stepType: 'replace', from: 0, to: 0 }; } }], [{ key: "fromJSON", value: function fromJSON(_, __) { // This is a "local custom step" once serialized // we need to transform it in a no-operation action return new _prosemirrorTransform.ReplaceStep(0, 0, _prosemirrorModel.Slice.empty); } }]); return LinkMetaStep; }(_prosemirrorTransform.Step); /** Register this step with Prosemirror */ exports.LinkMetaStep = LinkMetaStep; _prosemirrorTransform.Step.jsonID(stepType, LinkMetaStep);