UNPKG

@baronha/react-native-multiple-image-picker

Version:

� react-native-multiple-image-picker enables applications to pick images and videos from multiple smart albums in iOS/Android �

158 lines (157 loc) 4.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { openPicker: true, openCropper: true, openPreview: true, openCamera: true, defaultOptions: true }; exports.defaultOptions = void 0; exports.openCamera = openCamera; exports.openCropper = openCropper; exports.openPicker = openPicker; exports.openPreview = openPreview; var _MultipleImagePicker = require("./specs/MultipleImagePicker.nitro"); Object.keys(_MultipleImagePicker).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _MultipleImagePicker[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _MultipleImagePicker[key]; } }); }); var _types = require("./types"); Object.keys(_types).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _types[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _types[key]; } }); }); var _reactNativeNitroModules = require("react-native-nitro-modules"); var _reactNative = require("react-native"); const Picker = _reactNativeNitroModules.NitroModules.createHybridObject('MultipleImagePicker'); async function openPicker(conf) { return new Promise((resolved, rejected) => { const config = { ...defaultOptions, ...conf }; config.primaryColor = (0, _reactNative.processColor)(config.primaryColor); config.backgroundDark = (0, _reactNative.processColor)(config.backgroundDark); if (config?.theme === 'system') { const theme = _reactNative.Appearance.getColorScheme() ?? 'light'; config.theme = theme; } config.language = validateLanguage(config.language); if (typeof config.crop === 'boolean') { config.crop = config.crop ? { ratio: [] } : undefined; } if (config.crop) config.crop.ratio = config.crop?.ratio ?? []; return Picker.openPicker(config, result => { resolved(result); }, reject => { rejected(reject); }); }); } async function openCropper(image, config) { return new Promise((resolved, rejected) => { const cropConfig = { presentation: 'fullScreenModal', language: 'system', ratio: [], ...config }; cropConfig.language = validateLanguage(cropConfig.language); return Picker.openCrop(image, cropConfig, result => { resolved(result); }, error => { rejected(error); }); }); } function openPreview(media, index = 0, conf) { const config = { language: conf?.language ?? 'system', videoAutoPlay: true, ...conf }; if (config?.language && !LANGUAGES.includes(config.language)) { config.language = 'system'; } if (media.length === 0) { throw new Error('Media is required'); } return Picker.openPreview(media, index, config, config?.onLongPress ?? (() => {})); } async function openCamera(config) { return new Promise((resolved, rejected) => { const cameraConfig = { cameraDevice: 'back', presentation: 'fullScreenModal', language: 'system', mediaType: 'all', allowLocation: true, isSaveSystemAlbum: false, ...config }; cameraConfig.color = (0, _reactNative.processColor)(cameraConfig.color ?? primaryColor); cameraConfig.language = validateLanguage(cameraConfig.language); if (typeof cameraConfig.crop === 'boolean') { cameraConfig.crop = cameraConfig.crop ? { ratio: [] } : undefined; } if (cameraConfig.crop && !cameraConfig.crop?.ratio) cameraConfig.crop.ratio = []; return Picker.openCamera(cameraConfig, result => { resolved(result); }, error => { rejected(error); }); }); } const DEFAULT_COUNT = 20; const validateLanguage = language => { if (!language || !LANGUAGES.includes(language)) { return 'system'; } return language; }; const primaryColor = '#2979ff'; const defaultOptions = exports.defaultOptions = { maxSelect: DEFAULT_COUNT, maxVideo: DEFAULT_COUNT, primaryColor, backgroundDark: '#2f2f2f', allowedLimit: true, numberOfColumn: 3, isPreview: true, mediaType: 'all', selectedAssets: [], selectBoxStyle: 'number', selectMode: 'multiple', presentation: 'fullScreenModal', language: 'system', theme: 'system', isHiddenOriginalButton: false, allowSwipeToSelect: true, camera: { cameraDevice: 'back', videoMaximumDuration: 60 } }; const LANGUAGES = ['system', 'zh-Hans', 'zh-Hant', 'ja', 'ko', 'en', 'th', 'id', 'vi', 'ru', 'de', 'fr', 'ar']; //# sourceMappingURL=index.js.map