UNPKG

@atlaskit/editor-plugin-table

Version:

Table plugin for the @atlaskit/editor

66 lines (65 loc) 3.25 kB
"use strict"; 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; } } } }); }