@atlaskit/editor-plugin-placeholder-text
Version:
placeholder text plugin for @atlaskit/editor-core
108 lines (107 loc) • 4.76 kB
JavaScript
;
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'
})]);
};