@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
66 lines (65 loc) • 3.25 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createPlugin = createPlugin;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classnames2 = _interopRequireDefault(require("classnames"));
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
var _types = require("../../types");
var _pluginFactory = require("../plugin-factory");
var _commands = require("./commands");
var _eventHandlers = require("./event-handlers");
var _pluginFactory2 = require("./plugin-factory");
var _pluginKey = require("./plugin-key");
var _dom = require("./utils/dom");
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.SafePlugin({
key: _pluginKey.pluginKey,
state: (0, _pluginFactory2.createPluginState)(dispatch, {
lastColumnResizable: lastColumnResizable,
resizeHandlePos: null,
dragging: null,
lastClick: null
}),
props: {
attributes: function attributes(state) {
var pluginState = (0, _pluginFactory2.getPluginState)(state);
return {
class: (0, _classnames2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _types.TableCssClassName.RESIZE_CURSOR, pluginState.resizeHandlePos !== null), _types.TableCssClassName.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
(0, _pluginFactory2.getPluginState)(state).resizeHandlePos || (0, _dom.getResizeCellPos)(view, event);
var _getPluginState = (0, _pluginFactory2.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 = (0, _pluginFactory.getPluginState)(state),
isKeyboardResize = _getTablePluginState.isKeyboardResize;
if (isKeyboardResize) {
isColumnKeyboardResizeStarted = isKeyboardResize;
}
if (resizeHandlePos !== null && (!dragging || isColumnKeyboardResizeStarted)) {
if ((0, _eventHandlers.handleMouseDown)(view, event, resizeHandlePos, getEditorContainerWidth, getEditorFeatureFlags, isTableScalingEnabled || false, api, nodeViewPortalProviderAPI, editorAnalyticsAPI, isCommentEditor)) {
var _state = view.state,
_dispatch = view.dispatch;
return (0, _commands.setResizeHandlePos)(resizeHandlePos)(_state, _dispatch);
}
}
return false;
}
}
}
});
}