@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
68 lines (67 loc) • 2.46 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.toggleActiveTableMenu = exports.closeActiveTableMenu = void 0;
var _pluginKey = require("../plugin-key");
var _selection = require("../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((0, _selection.isFullRowOrColumnSelected)(tr.selection) ? 'dragHandleSelected' : 'default')({
tr: tr
});
};
var closeActiveTableMenu = exports.closeActiveTableMenu = function closeActiveTableMenu(api, options) {
return function (_ref) {
var tr = _ref.tr;
var nextActiveTableMenu = {
type: 'none'
};
tr.setMeta(_pluginKey.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;
};
var toggleActiveTableMenu = exports.toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu, currentActiveTableMenu, api) {
return function (_ref2) {
var tr = _ref2.tr;
var nextActiveTableMenu = isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? {
type: 'none'
} : activeTableMenu;
tr.setMeta(_pluginKey.pluginKey, {
type: 'SET_ACTIVE_TABLE_MENU',
data: {
activeTableMenu: nextActiveTableMenu
}
});
applyMenuUserIntent(tr, api, nextActiveTableMenu);
tr.setMeta('addToHistory', false);
return tr;
};
};