@allsquare/react-native-image-picker
Version:
A React Native module that allows you to use native UI to select media from the device library or directly from the camera
94 lines (82 loc) • 2.47 kB
text/typescript
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import NativeInterface from './internal/nativeInterface';
import {ImagePickerOptions, ImagePickerResponse} from './internal/types';
import {processColor} from 'react-native';
const DEFAULT_OPTIONS: ImagePickerOptions = {
title: 'Select a Photo',
cancelButtonTitle: 'Cancel',
takePhotoButtonTitle: 'Take Photo…',
chooseFromLibraryButtonTitle: 'Choose from Library…',
quality: 1.0,
allowsEditing: false,
permissionDenied: {
title: 'Permission denied',
text:
'To be able to take pictures with your camera and choose images from your library.',
reTryTitle: 're-try',
okTitle: "I'm sure",
},
tintColor: 'blue',
};
type Callback = (response: ImagePickerResponse) => void;
type OptionsOrCallback = ImagePickerOptions | Callback;
class ImagePicker {
showImagePicker(options: ImagePickerOptions, callback: Callback): void;
showImagePicker(callback: Callback): void;
showImagePicker(
optionsOrCallback: OptionsOrCallback,
callback?: Callback,
): void {
if (typeof optionsOrCallback === 'function') {
return NativeInterface.showImagePicker(
{
...DEFAULT_OPTIONS,
tintColor: processColor(DEFAULT_OPTIONS.tintColor),
},
optionsOrCallback,
);
}
if (callback == null) {
throw new Error('callback cannot be undefined');
}
return NativeInterface.showImagePicker(
{
...DEFAULT_OPTIONS,
...optionsOrCallback,
tintColor: processColor(
optionsOrCallback.tintColor || DEFAULT_OPTIONS.tintColor,
),
},
callback,
);
}
launchCamera(options: ImagePickerOptions, callback: Callback): void {
return NativeInterface.launchCamera(
{
...DEFAULT_OPTIONS,
...options,
tintColor: processColor(options.tintColor || DEFAULT_OPTIONS.tintColor),
},
callback,
);
}
launchImageLibrary(options: ImagePickerOptions, callback: Callback): void {
return NativeInterface.launchImageLibrary(
{
...DEFAULT_OPTIONS,
...options,
tintColor: processColor(options.tintColor || DEFAULT_OPTIONS.tintColor),
},
callback,
);
}
}
export default new ImagePicker();
export * from './internal/types';