import { __assign } from "tslib";
import { isBlob } from 'ut2';
import ajax from './ajax';
var SuccessResponseStatus = [200, 304];
/**
* 获取文件 Blob 。
*
* @static
* @alias module:Other.getFileBlob
* @since 4.21.0
* @param {string | Blob} file 文件地址或对象。
* @param {AjaxOptions} [ajaxOptions] ajax 请求配置项,当传入的图片为字符串时才会触发请求。
* @returns {Promise<Blob>} 文件 Blob 。
* @example
*
* getFileBlob(file).then((blob)=>{
* // do something
* });
*
* getFileBlob('https://dummyimage.com/200x300').then((blob)=>{
* // do something
* });
*/
function getFileBlob(file, ajaxOptions) {
return new Promise(function (resolve, reject) {
if (isBlob(file)) {
resolve(file);
}
else {
ajax(file, __assign({ responseType: 'blob' }, ajaxOptions))
.then(function (ev) {
// @ts-ignore
// 进入 onload 表示 readyStatus 为 4 ,但是 status 不一定是 200 。
var responseStatus = ev.target.status;
if (SuccessResponseStatus.indexOf(responseStatus) !== -1) {
// @ts-ignore
resolve(ev.target.response);
}
else {
var err = new Error("The file does not support get requests, responseStatus ".concat(responseStatus, ", '").concat(file, "'."));
console.error(err);
reject(err);
}
})
.catch(function (err) {
console.error(new Error("Failed to request file. ".concat(err)));
reject(err);
});
}
});
}
export default getFileBlob;