UNPKG

@atlaskit/editor-plugin-caption

Version:

Caption plugin for @atlaskit/editor-core

95 lines (87 loc) 4.1 kB
"use strict"; 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; };