@integec/grid-tools
Version:
Integ Grid Tools
119 lines (90 loc) • 3.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.normalizeCopiedContentForNumber = exports.copyToClipboard = exports.fromPasteEvent = exports.expandDataToSelection = exports.normalizePasteInfo = exports.toClipboardData = void 0;
var _isEmpty2 = _interopRequireDefault(require("ramda/src/isEmpty"));
var _compose2 = _interopRequireDefault(require("ramda/src/compose"));
var _map2 = _interopRequireDefault(require("ramda/src/map"));
var _join2 = _interopRequireDefault(require("ramda/src/join"));
var _data = require("data.maybe");
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// prettier-ignore
var combineClipboardCells = (0, _join2["default"])('\t'); // prettier-ignore
var combineClipboardRows = (0, _join2["default"])('\n');
var normalizeCellsForClipboard = (0, _map2["default"])(function (a) {
return (0, _utils.fromEmpty)(a).getOrElse('');
});
var toClipboardData = (0, _compose2["default"])(combineClipboardRows, (0, _map2["default"])(combineClipboardCells), (0, _map2["default"])(normalizeCellsForClipboard));
exports.toClipboardData = toClipboardData;
var clearNil = function clearNil(row) {
return row.map(function (d) {
return (0, _isEmpty2["default"])(d) ? undefined : d;
});
};
var normalizePasteInfo = function normalizePasteInfo(selection) {
return function (data) {
var dataSet = expandDataToSelection(selection)(data);
var x1 = selection.x1,
y1 = selection.y1;
return {
columnIndex: x1,
rowIndex: y1,
dataSet: dataSet
};
};
};
exports.normalizePasteInfo = normalizePasteInfo;
var parseClipData = function parseClipData(rawData) {
return rawData.split(rawData.includes('\r') ? '\r\n' : '\n') // excel may copy extra 0 length line
.filter(function (row) {
return row != null && row.trim().length > 0;
}).map(function (row) {
return clearNil(row.split('\t'));
});
};
var expandDataToSelection = function expandDataToSelection(selection) {
return function (data) {
var x1 = selection.x1,
x2 = selection.x2,
y1 = selection.y1,
y2 = selection.y2;
var colCount = x2 - x1 + 1;
var rowCount = y2 - y1 + 1;
if (!data.length && data.length === 0 || rowCount <= data.length && colCount <= data[0].length || colCount === 1 && rowCount === 1) {
return data;
}
var fittedData = [];
for (var row = 0; row < rowCount || row < data.length; row++) {
var rowData = [];
var originalRow = data[row % data.length];
for (var col = 0; col < colCount || col < originalRow.length; col++) {
rowData.push(originalRow[col % originalRow.length]);
}
fittedData.push(rowData);
}
return fittedData;
};
}; // prettier-ignore
exports.expandDataToSelection = expandDataToSelection;
var fromPasteEvent = function fromPasteEvent(evt) {
return (0, _data.fromNullable)(evt.clipboardData).chain(function (clipData) {
return (0, _utils.fromEmpty)(clipData.getData('Text'));
}).map(parseClipData);
};
exports.fromPasteEvent = fromPasteEvent;
var copyToClipboard = function copyToClipboard(_ref) {
var evt = _ref.evt,
clipboard = _ref.clipboard;
return function (txtData) {
clipboard.setData('Text', txtData);
evt.preventDefault(); // console.log('copied data: [', clipboard.getData('Text'), ']')
};
};
exports.copyToClipboard = copyToClipboard;
var normalizeCopiedContentForNumber = function normalizeCopiedContentForNumber(txtContent) {
return txtContent == null || txtContent.trim().length === 0 ? null : txtContent.replace('$', '');
};
exports.normalizeCopiedContentForNumber = normalizeCopiedContentForNumber;
//# sourceMappingURL=clipboard-utils.js.map