UNPKG

@antmjs/vantui

Version:

一套适用于Taro3及React的vantui组件库

159 lines (158 loc) 4.81 kB
"use strict"; 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; } }); }