@antmjs/vantui
Version:
一套适用于Taro3及React的vantui组件库
159 lines (158 loc) • 4.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.chooseFile = chooseFile;
exports.isImageFile = isImageFile;
exports.isVideoFile = isVideoFile;
var _taro = require("@tarojs/taro");
var _utils = require("../common/utils");
var _validator = require("../common/validator");
function isImageFile(item) {
if (item.isImage != null) {
return item.isImage;
}
if (item.type) {
return item.type === 'image';
}
if (item.url) {
return (0, _validator.isImageUrl)(item.url);
}
return false;
}
function isVideoFile(item) {
if (item.isVideo != null) {
return item.isVideo;
}
if (item.type) {
return item.type === 'video';
}
if (item.url) {
return (0, _validator.isVideoUrl)(item.url);
}
return false;
}
function formatImage(res) {
if (res.tempFiles) {
return res.tempFiles.map(function (item) {
return Object.assign(Object.assign({}, (0, _utils.pickExclude)(item, ['path'])), {
type: 'image',
url: item.path,
thumb: item.path
});
});
} else if (res.tempFilePaths) {
return res.tempFilePaths.map(function (item) {
return {
type: 'image',
url: item,
thumb: item
};
});
}
}
function formatVideo(res) {
return [Object.assign(Object.assign({}, (0, _utils.pickExclude)(res, ['tempFilePath', 'thumbTempFilePath', 'errMsg'])), {
type: 'video',
url: res.tempFilePath,
thumb: res.thumbTempFilePath
})];
}
function formatMedia(res) {
return res.tempFiles.map(function (item) {
return Object.assign(Object.assign({}, (0, _utils.pickExclude)(item, ['fileType', 'thumbTempFilePath', 'tempFilePath'])), {
type: res.type,
url: item.tempFilePath,
thumb: res.type === 'video' ? item.thumbTempFilePath : item.tempFilePath
});
});
}
function formatFile(res) {
return res.tempFiles.map(function (item) {
return Object.assign(Object.assign({}, (0, _utils.pickExclude)(item, ['path'])), {
url: item.path
});
});
}
function chooseFile(_ref) {
var accept = _ref.accept,
multiple = _ref.multiple,
capture = _ref.capture,
compressed = _ref.compressed,
maxDuration = _ref.maxDuration,
sizeType = _ref.sizeType,
camera = _ref.camera,
maxCount = _ref.maxCount;
return new Promise(function (resolve, reject) {
switch (accept) {
case 'image':
process.env.TARO_ENV === 'weapp' ? (0, _taro.chooseMedia)({
count: multiple ? Math.min(maxCount, 9) : 1,
mediaType: ['image'],
sourceType: capture || ['album', 'camera'],
maxDuration: maxDuration,
sizeType: sizeType || ['original', 'compressed'],
camera: camera || 'back',
success: function success(res) {
return resolve(formatMedia(res));
},
fail: reject
}) : (0, _taro.chooseImage)({
count: multiple ? Math.min(maxCount, 9) : 1,
sourceType: capture || ['album', 'camera'],
sizeType: sizeType || ['original', 'compressed'],
success: function success(res) {
return resolve(formatImage(res));
},
fail: reject
});
break;
case 'media':
(0, _taro.chooseMedia)({
count: multiple ? Math.min(maxCount, 9) : 1,
sourceType: capture || ['album', 'camera'],
maxDuration: maxDuration,
sizeType: sizeType || ['original', 'compressed'],
camera: camera || 'back',
success: function success(res) {
return resolve(formatMedia(res));
},
fail: reject
});
break;
case 'video':
process.env.TARO_ENV === 'weapp' ? (0, _taro.chooseMedia)({
count: multiple ? Math.min(maxCount, 9) : 1,
mediaType: ['video'],
sourceType: capture || ['album', 'camera'],
maxDuration: maxDuration,
sizeType: compressed ? ['compressed'] : sizeType || ['original', 'compressed'],
camera: camera || 'back',
success: function success(res) {
return resolve(formatMedia(res));
},
fail: reject
}) : (0, _taro.chooseVideo)({
sourceType: capture || ['album', 'camera'],
compressed: compressed,
maxDuration: maxDuration || 60,
camera: camera || 'back',
success: function success(res) {
return resolve(formatVideo(res));
},
fail: reject
});
break;
default:
(0, _taro.chooseMessageFile)({
count: multiple ? maxCount : 1,
type: accept,
success: function success(res) {
return resolve(formatFile(res));
},
fail: reject
});
break;
}
});
}
;