@atlaskit/editor-plugin-caption
Version:
Caption plugin for @atlaskit/editor-core
95 lines (87 loc) • 4.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.captionKeymap = captionKeymap;
var _keymaps = require("@atlaskit/editor-common/keymaps");
var _selection = require("@atlaskit/editor-common/selection");
var _utils = require("@atlaskit/editor-common/utils");
var _keymap = require("@atlaskit/editor-prosemirror/keymap");
var _state = require("@atlaskit/editor-prosemirror/state");
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
function captionKeymap() {
var list = {};
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveDown.common, createNewParagraphBelowCaption, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.enter.common, createNewParagraphBelowCaption, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveDown.common, getOutOfCaption, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.enter.common, getOutOfCaption, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveUp.common, selectParentMediaSingle, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.shiftTab.common, selectParentMediaSingle, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.tab.common, getOutOfCaption, list);
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveLeft.common, gapCursorSelectLeftParentMediaSingle, list);
return (0, _keymap.keymap)(list);
}
var createNewParagraphBelowCaption = function createNewParagraphBelowCaption(state, dispatch) {
var caption = (0, _utils2.findParentNodeOfType)(state.schema.nodes.caption)(state.selection);
if (caption) {
return (0, _utils.createNewParagraphBelow)(state, dispatch);
}
return false;
};
var getOutOfCaption = function getOutOfCaption(state, dispatch) {
var caption = (0, _utils2.findParentNodeOfType)(state.schema.nodes.caption)(state.selection);
if (caption) {
if (dispatch) {
var tr = state.tr.setSelection(_state.Selection.near(state.tr.doc.resolve(caption.pos + caption.node.nodeSize)));
dispatch(tr);
}
return true;
}
return false;
};
var selectParentMediaSingle = function selectParentMediaSingle(state, dispatch) {
if ((0, _utils2.findParentNodeOfType)(state.schema.nodes.caption)(state.selection)) {
var mediaSingleParent = (0, _utils2.findParentNodeOfType)(state.schema.nodes.mediaSingle)(state.selection);
if (mediaSingleParent) {
if (dispatch) {
var tr = state.tr.setSelection(_state.Selection.near(state.tr.doc.resolve(mediaSingleParent.pos)));
dispatch(tr);
}
return true;
}
}
return false;
};
var gapCursorSelectLeftParentMediaSingle = function gapCursorSelectLeftParentMediaSingle(state, dispatch) {
var caption = (0, _utils2.findParentNodeOfType)(state.schema.nodes.caption)(state.selection);
if (caption) {
var mediaSingleParent = (0, _utils2.findParentNodeOfType)(state.schema.nodes.mediaSingle)(state.selection);
if (mediaSingleParent && state.selection.empty && state.tr.doc.resolve(state.selection.from).parentOffset === 0) {
var gapCursorSelection = _selection.GapCursorSelection.findFrom(state.tr.doc.resolve(mediaSingleParent.pos), 0, false);
if (gapCursorSelection) {
if (dispatch) {
var tr = state.tr.setSelection(gapCursorSelection);
dispatch(tr);
}
return true;
}
}
}
return false;
};