@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
59 lines • 2.85 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import classnames from 'classnames';
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
import { TableCssClassName as ClassName } from '../../types';
import { getPluginState as getTablePluginState } from '../plugin-factory';
import { setResizeHandlePos } from './commands';
import { handleMouseDown } from './event-handlers';
import { createPluginState, getPluginState } from './plugin-factory';
import { pluginKey } from './plugin-key';
import { getResizeCellPos } from './utils/dom';
export function createPlugin(dispatch, _ref, getEditorContainerWidth, getEditorFeatureFlags, api, nodeViewPortalProviderAPI, editorAnalyticsAPI, isTableScalingEnabled, isCommentEditor) {
var _ref$lastColumnResiza = _ref.lastColumnResizable,
lastColumnResizable = _ref$lastColumnResiza === void 0 ? true : _ref$lastColumnResiza;
return new SafePlugin({
key: pluginKey,
state: createPluginState(dispatch, {
lastColumnResizable: lastColumnResizable,
resizeHandlePos: null,
dragging: null,
lastClick: null
}),
props: {
attributes: function attributes(state) {
var pluginState = getPluginState(state);
return {
class: classnames(_defineProperty(_defineProperty({}, ClassName.RESIZE_CURSOR, pluginState.resizeHandlePos !== null), ClassName.IS_RESIZING, !!pluginState.dragging))
};
},
handleDOMEvents: {
mousedown: function mousedown(view, event) {
var state = view.state;
var resizeHandlePos =
// we're setting `resizeHandlePos` via command in unit tests
getPluginState(state).resizeHandlePos || getResizeCellPos(view, event);
var _getPluginState = getPluginState(state),
dragging = _getPluginState.dragging;
var isColumnKeyboardResizeStarted = false;
/*
We need to start listening mouse events if column resize started from keyboard.
This will allow continue resizing via mouse
*/
var _getTablePluginState = getTablePluginState(state),
isKeyboardResize = _getTablePluginState.isKeyboardResize;
if (isKeyboardResize) {
isColumnKeyboardResizeStarted = isKeyboardResize;
}
if (resizeHandlePos !== null && (!dragging || isColumnKeyboardResizeStarted)) {
if (handleMouseDown(view, event, resizeHandlePos, getEditorContainerWidth, getEditorFeatureFlags, isTableScalingEnabled || false, api, nodeViewPortalProviderAPI, editorAnalyticsAPI, isCommentEditor)) {
var _state = view.state,
_dispatch = view.dispatch;
return setResizeHandlePos(resizeHandlePos)(_state, _dispatch);
}
}
return false;
}
}
}
});
}