UNPKG

@atlaskit/editor-plugin-table

Version:

Table plugin for the @atlaskit/editor

127 lines 4.65 kB
import { defaultTableSelection } from './default-table-selection'; export default ((pluginState, action) => { switch (action.type) { case 'TOGGLE_HEADER_COLUMN': return { ...pluginState, isHeaderColumnEnabled: !pluginState.isHeaderColumnEnabled }; case 'TOGGLE_HEADER_ROW': return { ...pluginState, isHeaderRowEnabled: !pluginState.isHeaderRowEnabled }; case 'CLEAR_HOVER_SELECTION': return { ...pluginState, ...action.data, ...defaultTableSelection }; case 'SELECT_COLUMN': return { ...pluginState, ...action.data, isContextualMenuOpen: false }; case 'SET_TARGET_CELL_POSITION': return { ...pluginState, ...action.data, isContextualMenuOpen: false }; case 'TOGGLE_CONTEXTUAL_MENU': return { ...pluginState, isContextualMenuOpen: !pluginState.isContextualMenuOpen }; case 'SHOW_INSERT_ROW_BUTTON': if (action.data.insertRowButtonIndex === pluginState.insertRowButtonIndex) { return pluginState; } return { ...pluginState, ...action.data, insertColumnButtonIndex: undefined // We need to assure that column is not shown }; case 'SHOW_INSERT_COLUMN_BUTTON': if (action.data.insertColumnButtonIndex === pluginState.insertColumnButtonIndex) { return pluginState; } return { ...pluginState, ...action.data, insertRowButtonIndex: undefined // We need to assure that row is not shown }; case 'HIDE_INSERT_COLUMN_OR_ROW_BUTTON': if (pluginState.insertRowButtonIndex !== undefined || pluginState.insertColumnButtonIndex !== undefined) { return { ...pluginState, insertRowButtonIndex: undefined, insertColumnButtonIndex: undefined }; } return pluginState; case 'HIDE_RESIZE_HANDLE_LINE': return { ...pluginState, ...action.data, resizeHandleColumnIndex: undefined, resizeHandleRowIndex: undefined }; case 'START_KEYBOARD_COLUMN_RESIZE': case 'ADD_RESIZE_HANDLE_DECORATIONS': if (action.data.resizeHandleColumnIndex === pluginState.resizeHandleColumnIndex && action.data.resizeHandleRowIndex === pluginState.resizeHandleRowIndex && action.data.resizeHandleIncludeTooltip === pluginState.resizeHandleIncludeTooltip && action.data.isKeyboardResize === pluginState.isKeyboardResize) { return pluginState; } return { ...pluginState, ...action.data, isResizeHandleWidgetAdded: true }; case 'UPDATE_RESIZE_HANDLE_DECORATIONS': const { resizeHandleColumnIndex, resizeHandleRowIndex, resizeHandleIncludeTooltip } = action.data; if ((resizeHandleColumnIndex === pluginState.resizeHandleColumnIndex || !Number.isFinite(resizeHandleColumnIndex)) && (resizeHandleRowIndex === pluginState.resizeHandleRowIndex || !Number.isFinite(resizeHandleRowIndex)) && (resizeHandleIncludeTooltip === pluginState.resizeHandleIncludeTooltip || resizeHandleIncludeTooltip === undefined)) { return pluginState; } return { ...pluginState, resizeHandleColumnIndex: resizeHandleColumnIndex !== null && resizeHandleColumnIndex !== void 0 ? resizeHandleColumnIndex : pluginState.resizeHandleColumnIndex, resizeHandleRowIndex: resizeHandleRowIndex !== null && resizeHandleRowIndex !== void 0 ? resizeHandleRowIndex : pluginState.resizeHandleRowIndex, resizeHandleIncludeTooltip: resizeHandleIncludeTooltip !== null && resizeHandleIncludeTooltip !== void 0 ? resizeHandleIncludeTooltip : pluginState.resizeHandleIncludeTooltip }; case 'STOP_KEYBOARD_COLUMN_RESIZE': case 'REMOVE_RESIZE_HANDLE_DECORATIONS': if (!pluginState.isResizeHandleWidgetAdded) { return pluginState; } return { ...pluginState, ...action.data, resizeHandleColumnIndex: undefined, resizeHandleRowIndex: undefined, isResizeHandleWidgetAdded: false, isKeyboardResize: undefined }; case 'UPDATE_TABLE_WIDTH_TO_WIDEST': case 'SET_TABLE_REF': case 'HOVER_ROWS': case 'HOVER_COLUMNS': case 'HOVER_TABLE': case 'TABLE_HOVERED': case 'HOVER_MERGED_CELLS': case 'HOVER_CELL': case 'SHOW_RESIZE_HANDLE_LINE': case 'SET_EDITOR_FOCUS': case 'SET_CELL_MENU_OPEN': return { ...pluginState, ...action.data }; default: return pluginState; } });