UNPKG

@integec/grid-tools

Version:
119 lines (90 loc) 3.79 kB
"use strict"; 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