mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Cleanup Jua code
This commit is contained in:
parent
c282e2c9b5
commit
5ef3006f4f
2 changed files with 122 additions and 143 deletions
99
vendors/jua/jua.js
vendored
99
vendors/jua/jua.js
vendored
|
|
@ -29,7 +29,7 @@
|
||||||
{
|
{
|
||||||
if (!bUseLimit || 0 <= --iLimit)
|
if (!bUseLimit || 0 <= --iLimit)
|
||||||
{
|
{
|
||||||
oFile = Utils.getDataFromFile(oItem);
|
oFile = getDataFromFile(oItem);
|
||||||
oFile && fFileCallback(oFile);
|
oFile && fFileCallback(oFile);
|
||||||
}
|
}
|
||||||
else if (bUseLimit && !bCallLimit && 0 > iLimit && fLimitCallback)
|
else if (bUseLimit && !bCallLimit && 0 > iLimit && fLimitCallback)
|
||||||
|
|
@ -46,20 +46,11 @@
|
||||||
Object.entries(obj).forEach(([key, value]) => element.addEventListener(key, value));
|
Object.entries(obj).forEach(([key, value]) => element.addEventListener(key, value));
|
||||||
},
|
},
|
||||||
|
|
||||||
Utils = {
|
|
||||||
/**
|
|
||||||
* @param {Object} oValues
|
|
||||||
* @param {string} sKey
|
|
||||||
* @param {?} mDefault
|
|
||||||
* @return {?}
|
|
||||||
*/
|
|
||||||
getValue : (oValues, sKey, mDefault) => (!oValues || !sKey || !defined(oValues[sKey])) ? mDefault : oValues[sKey],
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {*} oFile
|
* @param {*} oFile
|
||||||
* @return {Object}
|
* @return {Object}
|
||||||
*/
|
*/
|
||||||
getDataFromFile : oFile =>
|
getDataFromFile = oFile =>
|
||||||
{
|
{
|
||||||
let
|
let
|
||||||
sFileName = defined(oFile.fileName) ? oFile.fileName : (defined(oFile.name) ? oFile.name : null),
|
sFileName = defined(oFile.fileName) ? oFile.fileName : (defined(oFile.name) ? oFile.name : null),
|
||||||
|
|
@ -86,7 +77,7 @@
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
eventContainsFiles : oEvent =>
|
eventContainsFiles = oEvent =>
|
||||||
{
|
{
|
||||||
if (oEvent.dataTransfer && oEvent.dataTransfer.types && oEvent.dataTransfer.types.length) {
|
if (oEvent.dataTransfer && oEvent.dataTransfer.types && oEvent.dataTransfer.types.length) {
|
||||||
let index = oEvent.dataTransfer.types.length;
|
let index = oEvent.dataTransfer.types.length;
|
||||||
|
|
@ -97,7 +88,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -113,7 +103,12 @@
|
||||||
this.oXhrs = {};
|
this.oXhrs = {};
|
||||||
this.oUids = {};
|
this.oUids = {};
|
||||||
this.oJua = oJua;
|
this.oJua = oJua;
|
||||||
this.oOptions = oOptions;
|
this.oOptions = Object.assign({
|
||||||
|
action: '',
|
||||||
|
name: 'juaFile',
|
||||||
|
hidden: {},
|
||||||
|
disableMultiple: false
|
||||||
|
}, oOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -143,8 +138,8 @@
|
||||||
self = this,
|
self = this,
|
||||||
oXhr = new XMLHttpRequest(),
|
oXhr = new XMLHttpRequest(),
|
||||||
oFormData = new FormData(),
|
oFormData = new FormData(),
|
||||||
sAction = Utils.getValue(this.oOptions, 'action', ''),
|
sAction = this.oOptions.action,
|
||||||
aHidden = Utils.getValue(this.oOptions, 'hidden', {}),
|
aHidden = this.oOptions.hidden,
|
||||||
fStartFunction = this.oJua.getEvent('onStart'),
|
fStartFunction = this.oJua.getEvent('onStart'),
|
||||||
fCompleteFunction = this.oJua.getEvent('onComplete'),
|
fCompleteFunction = this.oJua.getEvent('onComplete'),
|
||||||
fProgressFunction = this.oJua.getEvent('onProgress')
|
fProgressFunction = this.oJua.getEvent('onProgress')
|
||||||
|
|
@ -208,7 +203,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
oFormData.append('jua-post-type', 'ajax');
|
oFormData.append('jua-post-type', 'ajax');
|
||||||
oFormData.append(Utils.getValue(this.oOptions, 'name', 'juaFile'), oFileInfo['File']);
|
oFormData.append(this.oOptions.name, oFileInfo['File']);
|
||||||
Object.entries(aHidden).forEach(([key, value]) =>
|
Object.entries(aHidden).forEach(([key, value]) =>
|
||||||
oFormData.append(key, (typeof value === "function" ? value(oFileInfo) : value).toString())
|
oFormData.append(key, (typeof value === "function" ? value(oFileInfo) : value).toString())
|
||||||
);
|
);
|
||||||
|
|
@ -237,7 +232,7 @@
|
||||||
oInput.type = 'file';
|
oInput.type = 'file';
|
||||||
oInput.tabIndex = -1;
|
oInput.tabIndex = -1;
|
||||||
oInput.style.cssText = 'position:absolute;left:-9999px;';
|
oInput.style.cssText = 'position:absolute;left:-9999px;';
|
||||||
oInput.multiple = !Utils.getValue(self.oOptions, 'disableMultiple', false);
|
oInput.multiple = !self.oOptions.disableMultiple;
|
||||||
|
|
||||||
oLabel.style.cssText = 'position:absolute;background-color:#fff;right:0;top:0;left:0;bottom:0;margin:0;padding:0;cursor:pointer;opacity:0';
|
oLabel.style.cssText = 'position:absolute;background-color:#fff;right:0;top:0;left:0;bottom:0;margin:0;padding:0;cursor:pointer;opacity:0';
|
||||||
|
|
||||||
|
|
@ -252,7 +247,7 @@
|
||||||
};
|
};
|
||||||
if (oInput.files && oInput.files.length) {
|
if (oInput.files && oInput.files.length) {
|
||||||
getDataFromFiles(oInput.files, fFileCallback,
|
getDataFromFiles(oInput.files, fFileCallback,
|
||||||
Utils.getValue(self.oOptions, 'multipleSizeLimit', iDefLimit),
|
self.oOptions.multipleSizeLimit,
|
||||||
self.oJua.getEvent('onLimitReached')
|
self.oJua.getEvent('onLimitReached')
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -351,8 +346,6 @@
|
||||||
{
|
{
|
||||||
constructor(oOptions)
|
constructor(oOptions)
|
||||||
{
|
{
|
||||||
oOptions = defined(oOptions) ? oOptions : {};
|
|
||||||
|
|
||||||
const self = this;
|
const self = this;
|
||||||
|
|
||||||
self.oEvents = {
|
self.oEvents = {
|
||||||
|
|
@ -367,25 +360,20 @@
|
||||||
onLimitReached: null
|
onLimitReached: null
|
||||||
};
|
};
|
||||||
|
|
||||||
self.oOptions = {
|
oOptions = Object.assign({
|
||||||
action: '',
|
|
||||||
name: '',
|
|
||||||
hidden: {},
|
|
||||||
queueSize: 10,
|
queueSize: 10,
|
||||||
clickElement: false,
|
clickElement: null,
|
||||||
dragAndDropElement: false,
|
dragAndDropElement: null,
|
||||||
dragAndDropBodyElement: false,
|
dragAndDropBodyElement: null,
|
||||||
disableMultiple: false,
|
|
||||||
disableDocumentDropPrevent: false,
|
disableDocumentDropPrevent: false,
|
||||||
multipleSizeLimit: 50
|
multipleSizeLimit: iDefLimit
|
||||||
};
|
}, oOptions || {});
|
||||||
Object.entries(oOptions).forEach(([key, value]) => self.oOptions[key] = value);
|
|
||||||
|
|
||||||
self.oQueue = queue(parseInt(Utils.getValue(self.oOptions, 'queueSize', 10) || 0, 10));
|
self.oQueue = queue(parseInt(oOptions.queueSize || 0, 10));
|
||||||
|
|
||||||
self.oDriver = new AjaxDriver(self, self.oOptions);
|
self.oDriver = new AjaxDriver(self, oOptions);
|
||||||
|
|
||||||
const el = Utils.getValue(self.oOptions, 'clickElement', null);
|
let el = oOptions.clickElement;
|
||||||
if (el) {
|
if (el) {
|
||||||
el.style.position = 'relative';
|
el.style.position = 'relative';
|
||||||
el.style.overflow = 'hidden';
|
el.style.overflow = 'hidden';
|
||||||
|
|
@ -396,18 +384,15 @@
|
||||||
this.oDriver.generateNewInput(el);
|
this.oDriver.generateNewInput(el);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Utils.getValue(this.oOptions, 'dragAndDropElement', false))
|
el = oOptions.dragAndDropElement;
|
||||||
|
if (el)
|
||||||
{
|
{
|
||||||
let
|
let oBigDropZone = oOptions.dragAndDropBodyElement || doc;
|
||||||
oBigDropZone = Utils.getValue(self.oOptions, 'dragAndDropBodyElement', false) || doc,
|
|
||||||
oDragAndDropElement = Utils.getValue(self.oOptions, 'dragAndDropElement', false);
|
|
||||||
|
|
||||||
if (oDragAndDropElement)
|
if (!oOptions.disableDocumentDropPrevent)
|
||||||
{
|
|
||||||
if (!Utils.getValue(self.oOptions, 'disableDocumentDropPrevent', false))
|
|
||||||
{
|
{
|
||||||
doc.addEventListener('dragover', oEvent => {
|
doc.addEventListener('dragover', oEvent => {
|
||||||
if (Utils.eventContainsFiles(oEvent))
|
if (eventContainsFiles(oEvent))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -424,7 +409,7 @@
|
||||||
addEventListeners(oBigDropZone, {
|
addEventListeners(oBigDropZone, {
|
||||||
dragover: () => self.docTimer.clear(),
|
dragover: () => self.docTimer.clear(),
|
||||||
dragenter: oEvent => {
|
dragenter: oEvent => {
|
||||||
if (Utils.eventContainsFiles(oEvent))
|
if (eventContainsFiles(oEvent))
|
||||||
{
|
{
|
||||||
self.docTimer.clear();
|
self.docTimer.clear();
|
||||||
oEvent.preventDefault();
|
oEvent.preventDefault();
|
||||||
|
|
@ -436,7 +421,7 @@
|
||||||
oEvent.dataTransfer && self.docTimer.start(() => self.runEvent('onBodyDragLeave', [oEvent])),
|
oEvent.dataTransfer && self.docTimer.start(() => self.runEvent('onBodyDragLeave', [oEvent])),
|
||||||
drop: oEvent => {
|
drop: oEvent => {
|
||||||
if (oEvent.dataTransfer) {
|
if (oEvent.dataTransfer) {
|
||||||
let bFiles = Utils.eventContainsFiles(oEvent);
|
let bFiles = eventContainsFiles(oEvent);
|
||||||
bFiles && oEvent.preventDefault();
|
bFiles && oEvent.preventDefault();
|
||||||
|
|
||||||
self.runEvent('onBodyDragLeave', [oEvent]);
|
self.runEvent('onBodyDragLeave', [oEvent]);
|
||||||
|
|
@ -449,17 +434,17 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
addEventListeners(oDragAndDropElement, {
|
addEventListeners(el, {
|
||||||
dragenter: oEvent => {
|
dragenter: oEvent => {
|
||||||
if (Utils.eventContainsFiles(oEvent)) {
|
if (eventContainsFiles(oEvent)) {
|
||||||
self.docTimer.clear();
|
self.docTimer.clear();
|
||||||
|
|
||||||
oEvent.preventDefault();
|
oEvent.preventDefault();
|
||||||
self.runEvent('onDragEnter', [oDragAndDropElement, oEvent]);
|
self.runEvent('onDragEnter', [el, oEvent]);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dragover: oEvent => {
|
dragover: oEvent => {
|
||||||
if (Utils.eventContainsFiles(oEvent)) {
|
if (eventContainsFiles(oEvent)) {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
let sEffect = oEvent.dataTransfer.effectAllowed;
|
let sEffect = oEvent.dataTransfer.effectAllowed;
|
||||||
|
|
@ -479,25 +464,25 @@
|
||||||
dragleave: oEvent => {
|
dragleave: oEvent => {
|
||||||
if (oEvent.dataTransfer) {
|
if (oEvent.dataTransfer) {
|
||||||
let oRelatedTarget = doc.elementFromPoint(oEvent.clientX, oEvent.clientY);
|
let oRelatedTarget = doc.elementFromPoint(oEvent.clientX, oEvent.clientY);
|
||||||
if (!oRelatedTarget || !oDragAndDropElement.contains(oRelatedTarget)) {
|
if (!oRelatedTarget || !el.contains(oRelatedTarget)) {
|
||||||
self.docTimer.clear();
|
self.docTimer.clear();
|
||||||
self.runEvent('onDragLeave', [oDragAndDropElement, oEvent]);
|
self.runEvent('onDragLeave', [el, oEvent]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
drop: oEvent => {
|
drop: oEvent => {
|
||||||
if (Utils.eventContainsFiles(oEvent)) {
|
if (eventContainsFiles(oEvent)) {
|
||||||
oEvent.preventDefault();
|
oEvent.preventDefault();
|
||||||
|
|
||||||
getDataFromFiles(
|
getDataFromFiles(
|
||||||
Utils.getValue(oEvent, 'files', null) || Utils.getValue(oEvent.dataTransfer, 'files', null),
|
oEvent.files || oEvent.dataTransfer.files,
|
||||||
oFile => {
|
oFile => {
|
||||||
if (oFile) {
|
if (oFile) {
|
||||||
self.addNewFile(oFile);
|
self.addNewFile(oFile);
|
||||||
self.docTimer.clear();
|
self.docTimer.clear();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Utils.getValue(self.oOptions, 'multipleSizeLimit', iDefLimit),
|
oOptions.multipleSizeLimit,
|
||||||
self.getEvent('onLimitReached')
|
self.getEvent('onLimitReached')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -507,7 +492,6 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} sName
|
* @param {string} sName
|
||||||
|
|
@ -595,11 +579,6 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @type {Object}
|
|
||||||
*/
|
|
||||||
Jua.prototype.oOptions = {};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Object}
|
* @type {Object}
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
2
vendors/jua/jua.min.js
vendored
2
vendors/jua/jua.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue