@integec/grid-tools
Version:
Integ Grid Tools
114 lines (89 loc) • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.copyToClipboard = exports.fromPasteEvent = exports.expandDataToSelection = exports.normalizePasteInfo = exports.toClipboardData = undefined;
var _isEmpty = require('ramda/src/isEmpty');
var _isEmpty2 = _interopRequireDefault(_isEmpty);
var _compose = require('ramda/src/compose');
var _compose2 = _interopRequireDefault(_compose);
var _map = require('ramda/src/map');
var _map2 = _interopRequireDefault(_map);
var _reduce = require('ramda/src/reduce');
var _reduce2 = _interopRequireDefault(_reduce);
var _data = require('data.maybe');
var _utils = require('./utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// prettier-ignore
var combineCliboardCells = (0, _reduce2.default)(function (a, b) {
return a === '' ? b : a + '\t' + b;
}, '');
// prettier-ignore
var combineCliboardRows = (0, _reduce2.default)(function (a, b) {
return a === '' ? b : a + '\r' + b;
}, '');
var normalizeCellsForClipboard = (0, _map2.default)(function (a) {
return (0, _utils.fromEmpty)(a).getOrElse('');
});
var toClipboardData = exports.toClipboardData = (0, _compose2.default)(combineCliboardRows, (0, _map2.default)(combineCliboardCells), (0, _map2.default)(normalizeCellsForClipboard));
var clearNil = function clearNil(row) {
return row.map(function (d) {
return (0, _isEmpty2.default)(d) ? undefined : d;
});
};
var normalizePasteInfo = exports.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 };
};
};
var parseClipData = function parseClipData(rawData) {
return rawData.split(rawData.includes('\r') ? '\r' : '\n')
//excel may copy extra 0 length line
.filter(function (row) {
return row.length > 0;
}).map(function (row) {
return clearNil(row.split('\t'));
});
};
var expandDataToSelection = exports.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
var fromPasteEvent = exports.fromPasteEvent = function fromPasteEvent(evt) {
return (0, _data.fromNullable)(evt.clipboardData).chain(function (clipData) {
return (0, _utils.fromEmpty)(clipData.getData('Text'));
}).map(parseClipData);
};
var copyToClipboard = exports.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'), ']');
};
};
//# sourceMappingURL=clipboard-utils.js.map