@atlaskit/editor-plugin-quick-insert
Version:
Quick insert plugin for @atlaskit/editor-core
41 lines (39 loc) • 1.42 kB
JavaScript
import { insertSelectedItem } from '@atlaskit/editor-common/insert';
import { pluginKey } from '../plugin-key';
export var openElementBrowserModal = function openElementBrowserModal(_ref) {
var tr = _ref.tr;
return tr.setMeta(pluginKey, {
isElementBrowserModalOpen: true
});
};
export var closeElementBrowserModal = function closeElementBrowserModal() {
return function (state, dispatch) {
if (dispatch) {
dispatch(state.tr.setMeta(pluginKey, {
isElementBrowserModalOpen: false
}));
}
return true;
};
};
export var createInsertItem = function createInsertItem(onInsert) {
return insertItem(onInsert);
};
// this method was adapted from the typeahead plugin so we respect the API for quick insert items
var insertItem = function insertItem(onInsert) {
return function (item, source) {
return function (state, dispatch) {
var insert = function insert(maybeNode) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return insertSelectedItem(maybeNode, opts)(state, state.tr, state.selection.head);
};
var tr = item.action(insert, state, source);
/** @note There is no transaction when called without a search currently (different insert) */
if (tr && dispatch) {
dispatch(tr);
}
onInsert === null || onInsert === void 0 || onInsert(item);
return true;
};
};
};