vue-poster-editor
Version:
A poster editor based on Vue.js
81 lines (67 loc) • 2.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _utils = require('./utils');
var _utils2 = _interopRequireDefault(_utils);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function PasteImage(successCall, failCall) {
function createImage(imageData, loaded) {
var image = new Image();
image.crossOrigin = 'Anonymous';
image.onload = function () {
loaded(this);
};
image.src = imageData;
return image;
};
function doCopy(e) {
if (_utils2.default.isEditable(e.target)) {
return;
}
e.clipboardData.setData('text/plain', '');
e.preventDefault();
}
function doCut(e) {
return doCopy(e);
}
function doPaste(e) {
if (_utils2.default.isEditable(e.target)) {
return;
};
if (e.clipboardData) {
var items = e.clipboardData.items;
var pasteImg = false;
if (items) {
[].slice.call(items).forEach(function (item) {
if (item && item.type.indexOf('image') !== -1) {
var blob = item.getAsFile();
var reader = new FileReader();
reader.onload = function (e) {
createImage(e.target.result, successCall);
};
reader.readAsDataURL(blob);
e.preventDefault();
pasteImg = true;
}
});
}
if (!pasteImg) {
failCall();
}
}
}
this.destroy = function () {
document.removeEventListener('copy', doCopy, false);
document.removeEventListener('cut', doCut, false);
document.removeEventListener('paste', doPaste, false);
};
this.init = function () {
document.addEventListener('copy', doCopy, false);
document.addEventListener('cut', doCut, false);
document.addEventListener('paste', doPaste, false);
};
this.init();
}
exports.default = PasteImage;
module.exports = exports['default'];