UNPKG

react-native-compressor

Version:

Compress Image, Video, and Audio same like Whatsapp & Auto/Manual Compression | Background Upload | Download File | Create Video Thumbnail

92 lines (91 loc) 3.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.cancelCompression = void 0; var _reactNative = require("react-native"); var _Main = require("../Main"); var _utils = require("../utils"); const VideoCompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor); const NativeVideoCompressor = _Main.Compressor; const cancelCompression = cancellationId => { return NativeVideoCompressor.cancelCompression(cancellationId); }; exports.cancelCompression = cancelCompression; const Video = { compress: async (fileUrl, options, onProgress) => { const uuid = (0, _utils.uuidv4)(); let subscription; let subscription2; try { if (onProgress) { subscription = VideoCompressEventEmitter.addListener('videoCompressProgress', event => { if (event.uuid === uuid) { onProgress(event.data.progress); } }); } if (options?.downloadProgress) { //@ts-ignore subscription2 = VideoCompressEventEmitter.addListener('downloadProgress', event => { if (event.uuid === uuid) { options.downloadProgress && options.downloadProgress(event.data.progress); } }); } const modifiedOptions = { uuid }; if (options?.progressDivider) modifiedOptions.progressDivider = options?.progressDivider; if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate; if (options?.compressionMethod) { modifiedOptions.compressionMethod = options?.compressionMethod; } else { modifiedOptions.compressionMethod = 'auto'; } if (options?.maxSize) { modifiedOptions.maxSize = options?.maxSize; } else { modifiedOptions.maxSize = 640; } if (options?.minimumFileSizeForCompress !== undefined) { modifiedOptions.minimumFileSizeForCompress = options?.minimumFileSizeForCompress; } if (options?.stripAudio) { modifiedOptions.stripAudio = options.stripAudio; } if (options?.getCancellationId) { options?.getCancellationId(uuid); } const result = await NativeVideoCompressor.compress(fileUrl, modifiedOptions); return result; } finally { // @ts-ignore if (subscription) { subscription.remove(); } //@ts-ignore if (subscription2) { subscription2.remove(); } } }, cancelCompression, activateBackgroundTask(onExpired) { if (onExpired) { const subscription = VideoCompressEventEmitter.addListener('backgroundTaskExpired', event => { onExpired(event); if (subscription) { subscription.remove(); } }); } return NativeVideoCompressor.activateBackgroundTask({}); }, deactivateBackgroundTask() { VideoCompressEventEmitter.removeAllListeners('backgroundTaskExpired'); return NativeVideoCompressor.deactivateBackgroundTask({}); } }; var _default = exports.default = Video; //# sourceMappingURL=index.js.map