@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
62 lines • 2.24 kB
JavaScript
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;
};
};