124 lines
4.5 KiB
JavaScript
Executable File
124 lines
4.5 KiB
JavaScript
Executable File
(function(root, factory) {
|
|
if (typeof define === 'function' && define.amd) {
|
|
// AMD. Register as an anonymous module.
|
|
define(["jquery",
|
|
"simple-module",
|
|
"simditor"
|
|
], function($, SimpleModule, Simditor) {
|
|
return (root.returnExportsGlobal = factory($, SimpleModule, Simditor));
|
|
});
|
|
} else if (typeof exports === 'object') {
|
|
// Node. Does not work with strict CommonJS, but
|
|
// only CommonJS-like enviroments that support module.exports,
|
|
// like Node.
|
|
module.exports = factory(require("jquery"),
|
|
require("simple-module"),
|
|
require("simditor"));
|
|
} else {
|
|
root['Simditor'] = factory(jQuery,
|
|
SimpleModule,
|
|
Simditor);
|
|
}
|
|
}(this, function($, SimpleModule, Simditor) {
|
|
|
|
var Dropzone,
|
|
__hasProp = {}.hasOwnProperty,
|
|
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
|
|
|
|
function ctor() { this.constructor = child; } ctor.prototype = parent.prototype;
|
|
child.prototype = new ctor();
|
|
child.__super__ = parent.prototype; return child; };
|
|
|
|
Dropzone = (function(_super) {
|
|
__extends(Dropzone, _super);
|
|
|
|
function Dropzone() {
|
|
return Dropzone.__super__.constructor.apply(this, arguments);
|
|
}
|
|
|
|
Dropzone.pluginName = "Dropzone";
|
|
|
|
Dropzone.prototype._entered = 0;
|
|
|
|
Dropzone.prototype._init = function() {
|
|
this.editor = this._module;
|
|
if (this.editor.uploader == null) {
|
|
throw new Error("Can't work without 'simple-uploader' module");
|
|
return;
|
|
}
|
|
$(document.body).on("dragover", function(e) {
|
|
e.originalEvent.dataTransfer.dropEffect = "none";
|
|
return e.preventDefault();
|
|
});
|
|
$(document.body).on('drop', function(e) {
|
|
return e.preventDefault();
|
|
});
|
|
this.imageBtn = this.editor.toolbar.findButton("image");
|
|
return this.editor.body.on("dragover", function(e) {
|
|
e.originalEvent.dataTransfer.dropEffect = "copy";
|
|
e.stopPropagation();
|
|
return e.preventDefault();
|
|
}).on("dragenter", (function(_this) {
|
|
return function(e) {
|
|
if ((_this._entered += 1) === 1) {
|
|
_this.show();
|
|
}
|
|
e.preventDefault();
|
|
return e.stopPropagation();
|
|
};
|
|
})(this)).on("dragleave", (function(_this) {
|
|
return function(e) {
|
|
if ((_this._entered -= 1) <= 0) {
|
|
_this.hide();
|
|
}
|
|
e.preventDefault();
|
|
return e.stopPropagation();
|
|
};
|
|
})(this)).on("drop", (function(_this) {
|
|
return function(e) {
|
|
var file, imageFiles, _i, _j, _len, _len1, _ref;
|
|
imageFiles = [];
|
|
_ref = e.originalEvent.dataTransfer.files;
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
file = _ref[_i];
|
|
if (!_this.validFile(file)) {
|
|
alert("「" + file.name + "]」文件不是图片。");
|
|
_this.hide();
|
|
return false;
|
|
}
|
|
imageFiles.push(file);
|
|
}
|
|
for (_j = 0, _len1 = imageFiles.length; _j < _len1; _j++) {
|
|
file = imageFiles[_j];
|
|
_this.editor.uploader.upload(file, {
|
|
inline: true
|
|
});
|
|
}
|
|
_this.hide();
|
|
e.stopPropagation();
|
|
return e.preventDefault();
|
|
};
|
|
})(this));
|
|
};
|
|
|
|
Dropzone.prototype.show = function() {
|
|
return this.imageBtn.setActive(true);
|
|
};
|
|
|
|
Dropzone.prototype.hide = function() {
|
|
this.imageBtn.setActive(false);
|
|
return this._entered = 0;
|
|
};
|
|
|
|
Dropzone.prototype.validFile = function(file) {
|
|
return file.type.indexOf("image/") > -1;
|
|
};
|
|
|
|
return Dropzone;
|
|
|
|
})(SimpleModule);
|
|
|
|
Simditor.connect(Dropzone);
|
|
|
|
return Simditor;
|
|
})); |