UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

69 lines (67 loc) 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cardKeymap = cardKeymap; var _browser = require("@atlaskit/editor-common/browser"); var _keymaps = require("@atlaskit/editor-common/keymaps"); var _keymap = require("@atlaskit/editor-prosemirror/keymap"); var _state = require("@atlaskit/editor-prosemirror/state"); var _utils = require("@atlaskit/editor-prosemirror/utils"); var lookupPixel = 10; var getClosestInlineCardPos = function getClosestInlineCardPos(state, editorView, direction) { var _editorView$posAtCoor; var selection = state.selection; var parent = selection.$from.parent; var inlineCardType = state.schema.nodes.inlineCard; if (!(0, _utils.flatten)(parent, false).some(function (_ref) { var node = _ref.node; return node.type === inlineCardType; })) { return null; } var coord = editorView.coordsAtPos(selection.$anchor.pos); var nearPos = (_editorView$posAtCoor = editorView.posAtCoords({ left: coord.left, top: direction === 'up' ? coord.top - lookupPixel : coord.bottom + lookupPixel })) === null || _editorView$posAtCoor === void 0 ? void 0 : _editorView$posAtCoor.inside; if (typeof nearPos === 'number' && nearPos > -1) { var newNode = state.doc.nodeAt(nearPos); if (newNode) { if (newNode.type !== inlineCardType || (0, _utils.findChildren)(parent, function (node) { return node === newNode; }, false).length === 0 || newNode === selection.node) { return null; } return nearPos; } } return null; }; var selectAboveBelowInlineCard = function selectAboveBelowInlineCard(direction) { return function (state, dispatch, editorView) { if (!editorView || !dispatch) { return false; } var pos = getClosestInlineCardPos(state, editorView, direction); if (pos) { dispatch(state.tr.setSelection(new _state.NodeSelection(state.doc.resolve(pos)))); return true; } return false; }; }; function cardKeymap(featureFlags) { var list = {}; var browser = (0, _browser.getBrowserInfo)(); // https://bugs.chromium.org/p/chromium/issues/detail?id=1227468 introduced since Chrome 91 if (browser.chrome && browser.chrome_version > 90) { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion (0, _keymaps.bindKeymapWithCommand)(_keymaps.moveUp.common, selectAboveBelowInlineCard('up'), list); // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion (0, _keymaps.bindKeymapWithCommand)(_keymaps.moveDown.common, selectAboveBelowInlineCard('down'), list); } return (0, _keymap.keymap)(list); }