tdesign-mobile-vue
Version:
tdesign-mobile-vue
204 lines (196 loc) • 7.36 kB
JavaScript
/**
* tdesign v1.9.3
* (c) 2025 TDesign Group
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
var _typeof = require('@babel/runtime/helpers/typeof');
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var _common_js_log_log = require('../log/log.js');
var _common_js_upload_utils = require('./utils.js');
var isFunction = require('../../../_chunks/dep-88fe047a.js');
require('../../../_chunks/dep-2f809ed9.js');
require('../../../_chunks/dep-ef223206.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function xhr(_ref) {
var _files$;
var _ref$method = _ref.method,
method = _ref$method === void 0 ? "POST" : _ref$method,
action = _ref.action,
_ref$withCredentials = _ref.withCredentials,
withCredentials = _ref$withCredentials === void 0 ? false : _ref$withCredentials,
_ref$headers = _ref.headers,
headers = _ref$headers === void 0 ? {} : _ref$headers,
_ref$data = _ref.data,
data = _ref$data === void 0 ? {} : _ref$data,
file = _ref.file,
_ref$files = _ref.files,
files = _ref$files === void 0 ? [] : _ref$files,
_ref$name = _ref.name,
name = _ref$name === void 0 ? "file" : _ref$name,
_ref$useMockProgress = _ref.useMockProgress,
useMockProgress = _ref$useMockProgress === void 0 ? true : _ref$useMockProgress,
_ref$mockProgressDura = _ref.mockProgressDuration,
mockProgressDuration = _ref$mockProgressDura === void 0 ? 300 : _ref$mockProgressDura,
formatRequest = _ref.formatRequest,
onError = _ref.onError,
onProgress = _ref.onProgress,
onSuccess = _ref.onSuccess;
var innerFiles = files || [];
var percent = 0;
var xhr2 = new XMLHttpRequest();
if (withCredentials) {
xhr2.withCredentials = true;
}
var timer1;
var timer2;
if (useMockProgress && ((_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.status) === "progress") {
var timer22 = setTimeout(function () {
timer1 = setInterval(function () {
if (percent + 10 < 100) {
percent = Math.max(percent + 10, percent);
if (files[0] && percent !== files[0].percent) {
files[0].percent = percent;
onProgress({
percent: percent,
file: file || innerFiles[0],
files: innerFiles.map(function (file2) {
return _objectSpread(_objectSpread({}, file2), {}, {
percent: percent
});
}),
type: "mock",
XMLHttpRequest: xhr2
});
}
} else {
clearInterval(timer1);
}
}, mockProgressDuration);
clearTimeout(timer22);
}, mockProgressDuration);
}
var requestData = {};
if (data) {
var extraData = isFunction.isFunction(data) ? data(innerFiles) : data;
Object.assign(requestData, extraData);
}
innerFiles.forEach(function (file2, index) {
var fileField = innerFiles.length > 1 ? "".concat(name, "[").concat(index, "]") : name;
requestData[fileField] = file2.raw;
});
if (innerFiles.length === 1) {
requestData[name] = innerFiles[0].raw;
} else {
requestData[name] = innerFiles.map(function (file2) {
return file2.raw;
});
}
requestData.length = innerFiles.length;
if (formatRequest) {
requestData = formatRequest(requestData);
}
var formData = new FormData();
Object.keys(requestData).forEach(function (key) {
formData.append(key, requestData[key]);
});
xhr2.open(method, action, true);
Object.keys(headers).forEach(function (key) {
xhr2.setRequestHeader(key, headers[key]);
});
xhr2.onerror = function (event) {
onError({
event: event,
file: file,
files: innerFiles,
XMLHttpRequest: xhr2
});
clearInterval(timer1);
clearTimeout(timer2);
};
xhr2.ontimeout = function (event) {
onError({
event: event,
file: file,
files: innerFiles,
XMLHttpRequest: xhr2
});
};
if (xhr2.upload) {
xhr2.upload.onprogress = function (event) {
var _innerFiles$;
var realPercent = 0;
if (event.total > 0) {
realPercent = Math.round(event.loaded / event.total * 100);
}
percent = Math.max(realPercent, percent);
if (percent !== realPercent && ((_innerFiles$ = innerFiles[0]) === null || _innerFiles$ === void 0 ? void 0 : _innerFiles$.percent) !== percent) {
var progressFiles = innerFiles.map(function (item) {
return _objectSpread(_objectSpread({}, item), {}, {
percent: percent
});
});
onProgress({
event: event,
percent: percent,
file: file || progressFiles[0],
files: progressFiles,
type: "real",
XMLHttpRequest: xhr2
});
}
};
}
xhr2.onload = function (event) {
var response = {};
response.XMLHttpRequest = xhr2;
var isFail = xhr2.status < 200 || xhr2.status >= 300;
if (isFail) {
return onError({
event: event,
file: file,
files: innerFiles,
response: response,
XMLHttpRequest: xhr2
});
}
var text = xhr2.responseText || xhr2.response;
try {
response = JSON.parse(text);
} catch (e) {
response = text;
_common_js_log_log["default"].error("Upload", "response does not a valid json");
}
clearInterval(timer1);
clearTimeout(timer2);
innerFiles.forEach(function (file2) {
var _response;
file2.percent = 100;
file2.status = "success";
file2.uploadTime = ((_response = response) === null || _response === void 0 ? void 0 : _response.uploadTime) || _common_js_upload_utils.getCurrentDate();
});
if (_typeof__default["default"](response) === "object") {
response.XMLHttpRequest = xhr2;
}
onSuccess({
event: event,
file: file || innerFiles[0],
files: _toConsumableArray__default["default"](innerFiles),
XMLHttpRequest: xhr2,
response: response
});
};
xhr2.send(formData);
xhr2.upload.requestParams = requestData;
xhr2.upload.requestHeaders = headers;
return xhr2;
}
exports["default"] = xhr;
//# sourceMappingURL=xhr.js.map