@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
54 lines • 1.7 kB
JavaScript
import { tableMessages as messages } from '@atlaskit/editor-common/messages';
import { TableMap } from '@atlaskit/editor-tables/table-map';
import { findTable } from '@atlaskit/editor-tables/utils';
export const getMergedCellsPositions = tr => {
const table = findTable(tr.selection);
if (!table) {
return [];
}
const map = TableMap.get(table.node);
const cellPositions = new Set();
const mergedCells = [];
map.map.forEach(value => {
if (cellPositions.has(value)) {
mergedCells.push(value);
} else {
cellPositions.add(value);
}
});
return mergedCells;
};
export const getAssistiveMessage = (prevTableNode, currentTableNode, intl) => {
const {
formatMessage
} = intl;
const prevTableMap = TableMap.get(prevTableNode);
const currentTableMap = TableMap.get(currentTableNode);
if (currentTableMap.width !== prevTableMap.width) {
const diff = Math.abs(currentTableMap.width - prevTableMap.width);
if (currentTableMap.width > prevTableMap.width) {
return formatMessage(messages.columnsAreInserted, {
count: diff
});
}
if (currentTableMap.width < prevTableMap.width) {
return formatMessage(messages.columnsAreRemoved, {
count: diff
});
}
}
if (currentTableMap.height !== prevTableMap.height) {
const diff = Math.abs(currentTableMap.height - prevTableMap.height);
if (currentTableMap.height > prevTableMap.height) {
return formatMessage(messages.rowsAreInserted, {
count: diff
});
}
if (currentTableMap.height < prevTableMap.height) {
return formatMessage(messages.rowsAreRemoved, {
count: diff
});
}
}
return '';
};