UNPKG

@atlaskit/editor-plugin-placeholder-text

Version:

placeholder text plugin for @atlaskit/editor-core

108 lines (107 loc) 4.76 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.removeFakeTextCursor = exports.drawFakeTextCursor = exports.addFakeTextCursor = exports.FakeTextCursorSelection = exports.FakeTextCursorBookmark = void 0; var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _model = require("@atlaskit/editor-prosemirror/model"); var _state = require("@atlaskit/editor-prosemirror/state"); var _view = require("@atlaskit/editor-prosemirror/view"); function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var FakeTextCursorBookmark = exports.FakeTextCursorBookmark = /*#__PURE__*/function () { function FakeTextCursorBookmark(pos) { (0, _classCallCheck2.default)(this, FakeTextCursorBookmark); (0, _defineProperty2.default)(this, "pos", undefined); (0, _defineProperty2.default)(this, "visible", false); this.pos = pos; } return (0, _createClass2.default)(FakeTextCursorBookmark, [{ key: "map", value: function map(mapping) { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return new FakeTextCursorBookmark(mapping.map(this.pos)); } }, { key: "resolve", value: function resolve(doc) { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion var $pos = doc.resolve(this.pos); return _state.Selection.near($pos); } }]); }(); var FakeTextCursorSelection = exports.FakeTextCursorSelection = /*#__PURE__*/function (_Selection) { function FakeTextCursorSelection($pos) { (0, _classCallCheck2.default)(this, FakeTextCursorSelection); return _callSuper(this, FakeTextCursorSelection, [$pos, $pos]); } (0, _inherits2.default)(FakeTextCursorSelection, _Selection); return (0, _createClass2.default)(FakeTextCursorSelection, [{ key: "map", value: function map(doc, mapping) { var $pos = doc.resolve(mapping.map(this.$head.pos)); return new FakeTextCursorSelection($pos); } }, { key: "eq", value: function eq(other) { return other instanceof FakeTextCursorSelection && other.head === this.head; } }, { key: "toJSON", value: function toJSON() { return { type: 'Cursor', pos: this.head }; } }, { key: "getBookmark", value: function getBookmark() { return new FakeTextCursorBookmark(this.anchor); } }], [{ key: "content", value: function content() { return _model.Slice.empty; } }, { key: "fromJSON", value: function fromJSON(doc, json) { return new FakeTextCursorSelection(doc.resolve(json.pos)); } }]); }(_state.Selection); _state.Selection.jsonID('fake-text-cursor', FakeTextCursorSelection); var addFakeTextCursor = exports.addFakeTextCursor = function addFakeTextCursor(state, dispatch) { var selection = state.selection; if (selection.empty) { var $from = state.selection.$from; dispatch(state.tr.setSelection(new FakeTextCursorSelection($from))); } }; var removeFakeTextCursor = exports.removeFakeTextCursor = function removeFakeTextCursor(state, dispatch) { if (state.selection instanceof FakeTextCursorSelection) { var $from = state.selection.$from; dispatch(state.tr.setSelection(new _state.TextSelection($from))); } }; var drawFakeTextCursor = exports.drawFakeTextCursor = function drawFakeTextCursor(state) { if (!(state.selection instanceof FakeTextCursorSelection)) { return null; } var node = document.createElement('div'); node.className = 'ProseMirror-fake-text-cursor'; return _view.DecorationSet.create(state.doc, [_view.Decoration.widget(state.selection.head, node, { key: 'Cursor' })]); };