You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
5.8 KiB
177 lines
5.8 KiB
'use strict';
|
|
var __assign =
|
|
(this && this.__assign) ||
|
|
function () {
|
|
__assign =
|
|
Object.assign ||
|
|
function (t) {
|
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
s = arguments[i];
|
|
for (var p in s) {
|
|
if (Object.prototype.hasOwnProperty.call(s, p)) {
|
|
t[p] = s[p];
|
|
}
|
|
}
|
|
}
|
|
return t;
|
|
};
|
|
return __assign.apply(this, arguments);
|
|
};
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
exports.chooseFile = exports.isVideoFile = exports.isImageFile = void 0;
|
|
var utils_1 = require('../common/utils');
|
|
var validator_1 = 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_1.isImageUrl)(item.url);
|
|
}
|
|
return false;
|
|
}
|
|
exports.isImageFile = isImageFile;
|
|
function isVideoFile(item) {
|
|
if (item.isVideo != null) {
|
|
return item.isVideo;
|
|
}
|
|
if (item.type) {
|
|
return item.type === 'video';
|
|
}
|
|
if (item.url) {
|
|
return (0, validator_1.isVideoUrl)(item.url);
|
|
}
|
|
return false;
|
|
}
|
|
exports.isVideoFile = isVideoFile;
|
|
function formatImage(res) {
|
|
return res.tempFiles.map(function (item) {
|
|
return __assign(__assign({}, (0, utils_1.pickExclude)(item, ['path'])), {
|
|
type: 'image',
|
|
url: item.tempFilePath || item.path,
|
|
thumb: item.tempFilePath || item.path
|
|
});
|
|
});
|
|
}
|
|
function formatVideo(res) {
|
|
return [
|
|
__assign(__assign({}, (0, utils_1.pickExclude)(res, ['tempFilePath', 'thumbTempFilePath', 'errMsg'])), {
|
|
type: 'video',
|
|
url: res.tempFilePath,
|
|
thumb: res.thumbTempFilePath
|
|
})
|
|
];
|
|
}
|
|
function formatMedia(res) {
|
|
return res.tempFiles.map(function (item) {
|
|
return __assign(__assign({}, (0, utils_1.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 __assign(__assign({}, (0, utils_1.pickExclude)(item, ['path'])), {
|
|
url: item.path
|
|
});
|
|
});
|
|
}
|
|
function chooseFile(_a) {
|
|
var accept = _a.accept;
|
|
var multiple = _a.multiple;
|
|
var capture = _a.capture;
|
|
var compressed = _a.compressed;
|
|
var maxDuration = _a.maxDuration;
|
|
var sizeType = _a.sizeType;
|
|
var camera = _a.camera;
|
|
var maxCount = _a.maxCount;
|
|
var mediaType = _a.mediaType;
|
|
var extension = _a.extension;
|
|
return new Promise(function (resolve, reject) {
|
|
switch (accept) {
|
|
case 'image':
|
|
if (utils_1.isPC || utils_1.isWxWork) {
|
|
uni.chooseImage({
|
|
count: multiple ? Math.min(maxCount, 9) : 1,
|
|
sourceType: capture,
|
|
sizeType: sizeType,
|
|
success: function (res) {
|
|
return resolve(formatImage(res));
|
|
},
|
|
fail: reject
|
|
});
|
|
} else {
|
|
uni.chooseMedia({
|
|
count: multiple ? Math.min(maxCount, 9) : 1,
|
|
mediaType: ['image'],
|
|
sourceType: capture,
|
|
maxDuration: maxDuration,
|
|
sizeType: sizeType,
|
|
camera: camera,
|
|
success: function (res) {
|
|
return resolve(formatImage(res));
|
|
},
|
|
fail: reject
|
|
});
|
|
}
|
|
break;
|
|
case 'media':
|
|
uni.chooseMedia({
|
|
count: multiple ? Math.min(maxCount, 9) : 1,
|
|
mediaType: mediaType,
|
|
sourceType: capture,
|
|
maxDuration: maxDuration,
|
|
sizeType: sizeType,
|
|
camera: camera,
|
|
success: function (res) {
|
|
return resolve(formatMedia(res));
|
|
},
|
|
fail: reject
|
|
});
|
|
break;
|
|
case 'video':
|
|
uni.chooseVideo({
|
|
sourceType: capture,
|
|
compressed: compressed,
|
|
maxDuration: maxDuration,
|
|
camera: camera,
|
|
success: function (res) {
|
|
return resolve(formatVideo(res));
|
|
},
|
|
fail: reject
|
|
});
|
|
break;
|
|
default:
|
|
uni.chooseMessageFile(
|
|
__assign(
|
|
__assign(
|
|
{
|
|
count: multiple ? maxCount : 1,
|
|
type: accept
|
|
},
|
|
extension
|
|
? {
|
|
extension: extension
|
|
}
|
|
: {}
|
|
),
|
|
{
|
|
success: function (res) {
|
|
return resolve(formatFile(res));
|
|
},
|
|
fail: reject
|
|
}
|
|
)
|
|
);
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
exports.chooseFile = chooseFile;
|
|
|