@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
68 lines (65 loc) • 3.16 kB
JavaScript
// @ts-ignore -- ReadonlyTransaction is a local declaration and will cause a TS2305 error in CCFE typecheck
import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
import { findTable } from '@atlaskit/editor-tables/utils';
import { TableDecorations } from '../../../types';
import { createColumnControlsDecoration, createColumnSelectedDecoration, findColumnControlSelectedDecoration, findControlsHoverDecoration, updateDecorations } from '../../utils/decoration';
import { composeDecorations } from './compose-decorations';
var isColumnSelected = function isColumnSelected(tr) {
return tr.selection instanceof CellSelection && tr.selection.isColSelection();
};
// @see: https://product-fabric.atlassian.net/browse/ED-3796
var removeControlsHoverDecoration = function removeControlsHoverDecoration(_ref) {
var decorationSet = _ref.decorationSet;
return decorationSet.remove(findControlsHoverDecoration(decorationSet));
};
var maybeUpdateColumnSelectedDecoration = function maybeUpdateColumnSelectedDecoration(_ref2) {
var decorationSet = _ref2.decorationSet,
tr = _ref2.tr;
if (!isColumnSelected(tr)) {
return decorationSet;
}
return updateDecorations(tr.doc, decorationSet, createColumnSelectedDecoration(tr), TableDecorations.COLUMN_SELECTED);
};
var maybeUpdateColumnControlsDecoration = function maybeUpdateColumnControlsDecoration(_ref3) {
var decorationSet = _ref3.decorationSet,
tr = _ref3.tr;
var table = findTable(tr.selection);
if (!table) {
return decorationSet;
}
return updateDecorations(tr.doc, decorationSet, createColumnControlsDecoration(tr.selection), TableDecorations.COLUMN_CONTROLS_DECORATIONS);
};
// @see: https://product-fabric.atlassian.net/browse/ED-7304
var removeColumnControlsSelectedDecoration = function removeColumnControlsSelectedDecoration(_ref4) {
var decorationSet = _ref4.decorationSet;
return decorationSet.remove(findColumnControlSelectedDecoration(decorationSet));
};
var hasColumnSelectedDecorations = function hasColumnSelectedDecorations(decorationSet) {
return !!findColumnControlSelectedDecoration(decorationSet).length;
};
export var maybeUpdateColumnControlsSelectedDecoration = function maybeUpdateColumnControlsSelectedDecoration(_ref5) {
var decorationSet = _ref5.decorationSet,
tr = _ref5.tr;
if (!hasColumnSelectedDecorations(decorationSet)) {
return decorationSet;
}
return removeColumnControlsSelectedDecoration({
decorationSet: decorationSet,
tr: tr
});
};
export var buildColumnControlsDecorations = function buildColumnControlsDecorations(_ref6) {
var decorationSet = _ref6.decorationSet,
tr = _ref6.tr,
options = _ref6.options;
if (options.isDragAndDropEnabled) {
return composeDecorations([removeColumnControlsSelectedDecoration, removeControlsHoverDecoration, maybeUpdateColumnSelectedDecoration])({
decorationSet: decorationSet,
tr: tr
});
}
return composeDecorations([removeColumnControlsSelectedDecoration, removeControlsHoverDecoration, maybeUpdateColumnSelectedDecoration, maybeUpdateColumnControlsDecoration])({
decorationSet: decorationSet,
tr: tr
});
};