54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
|
|
||
|
class Clipboard {
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
* @param {DataTransfer} clipboardData
|
||
|
*/
|
||
|
constructor(clipboardData) {
|
||
|
this.data = clipboardData;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check if the clipboard has any items.
|
||
|
*/
|
||
|
hasItems() {
|
||
|
return Boolean(this.data) && Boolean(this.data.types) && this.data.types.length > 0;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check if the given event has tabular-looking data in the clipboard.
|
||
|
* @return {boolean}
|
||
|
*/
|
||
|
containsTabularData() {
|
||
|
const rtfData = this.data.getData( 'text/rtf');
|
||
|
return rtfData && rtfData.includes('\\trowd');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the images that are in the clipboard data.
|
||
|
* @return {Array<File>}
|
||
|
*/
|
||
|
getImages() {
|
||
|
const types = this.data.types;
|
||
|
const files = this.data.files;
|
||
|
const images = [];
|
||
|
|
||
|
for (const type of types) {
|
||
|
if (type.includes('image')) {
|
||
|
const item = this.data.getData(type);
|
||
|
images.push(item.getAsFile());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (const file of files) {
|
||
|
if (file.type.includes('image')) {
|
||
|
images.push(file);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return images;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default Clipboard;
|