@mhmdaljefri/revogrid
Version:
Virtual reactive data grid component - RevoGrid.
50 lines (47 loc) • 1.57 kB
JavaScript
import { r as registerInstance, c as createEvent } from './index-42c84e7c.js';
const Clipboard = class {
constructor(hostRef) {
registerInstance(this, hostRef);
this.copyRegion = createEvent(this, "copyRegion", 3);
this.pasteRegion = createEvent(this, "pasteRegion", 3);
}
onPaste(e) {
const clipboardData = this.getData(e);
const isHTML = clipboardData.types.indexOf('text/html') > -1;
const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');
const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);
this.pasteRegion.emit(parsedData);
e.preventDefault();
}
copyStarted(e) {
this.copyRegion.emit(this.getData(e));
e.preventDefault();
}
async doCopy(e, data) {
e.setData('text/plain', data ? this.parserCopy(data) : '');
}
parserCopy(data) {
return data.map(rgRow => rgRow.join('\t')).join('\n');
}
textParse(data) {
const result = [];
const rows = data.split(/\r\n|\n|\r/);
for (let y in rows) {
result.push(rows[y].split('\t'));
}
return result;
}
htmlParse(data) {
const result = [];
const table = document.createRange().createContextualFragment(data).querySelector('table');
for (const rgRow of Array.from(table.rows)) {
result.push(Array.from(rgRow.cells).map(cell => cell.innerText));
}
return result;
}
getData(e) {
var _a;
return e.clipboardData || ((_a = window) === null || _a === void 0 ? void 0 : _a.clipboardData);
}
};
export { Clipboard as revogr_clipboard };