UNPKG

@integec/grid-tools

Version:
114 lines (89 loc) 3.53 kB
'use strict'; 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