UNPKG

@atlaskit/editor-plugin-table

Version:

Table plugin for the @atlaskit/editor

62 lines 2.24 kB
import { pluginKey } from '../plugin-key'; import { isFullRowOrColumnSelected } from '../utils/selection'; var applyMenuUserIntent = function applyMenuUserIntent(tr, api, nextActiveTableMenu) { var _api$userIntent2; if (nextActiveTableMenu.type === 'row' || nextActiveTableMenu.type === 'column') { var _api$userIntent; api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 || _api$userIntent.commands.setCurrentUserIntent('tableDragMenuPopupOpen')({ tr: tr }); return; } api === null || api === void 0 || (_api$userIntent2 = api.userIntent) === null || _api$userIntent2 === void 0 || _api$userIntent2.commands.setCurrentUserIntent(isFullRowOrColumnSelected(tr.selection) ? 'dragHandleSelected' : 'default')({ tr: tr }); }; export var closeActiveTableMenu = function closeActiveTableMenu(api, options) { return function (_ref) { var tr = _ref.tr; var nextActiveTableMenu = { type: 'none' }; tr.setMeta(pluginKey, { type: 'SET_ACTIVE_TABLE_MENU', data: { activeTableMenu: nextActiveTableMenu } }); if (!(options !== null && options !== void 0 && options.skipUserIntent)) { applyMenuUserIntent(tr, api, nextActiveTableMenu); } if (!tr.docChanged) { tr.setMeta('addToHistory', false); } return tr; }; }; var isSameActiveTableMenu = function isSameActiveTableMenu(current, next) { if (!current || current.type !== next.type) { return false; } if (current.type === 'row' || current.type === 'column') { return next.type === current.type && current.index === next.index; } return true; }; export var toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu, currentActiveTableMenu, api) { return function (_ref2) { var tr = _ref2.tr; var nextActiveTableMenu = isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? { type: 'none' } : activeTableMenu; tr.setMeta(pluginKey, { type: 'SET_ACTIVE_TABLE_MENU', data: { activeTableMenu: nextActiveTableMenu } }); applyMenuUserIntent(tr, api, nextActiveTableMenu); tr.setMeta('addToHistory', false); return tr; }; };