UNPKG

@atlaskit/editor-plugin-table

Version:

Table plugin for the @atlaskit/editor

59 lines 2.85 kB
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; } } } }); }