motorinc-gallery-picker-pro 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,24 @@
1
+ package com.gallerypicker.imagepicker;
2
+
3
+ import com.facebook.react.ReactPackage;
4
+ import com.facebook.react.bridge.NativeModule;
5
+ import com.facebook.react.bridge.ReactApplicationContext;
6
+ import com.facebook.react.uimanager.ViewManager;
7
+
8
+ import java.util.ArrayList;
9
+ import java.util.Collections;
10
+ import java.util.List;
11
+
12
+ public class ImagePickerPackage implements ReactPackage {
13
+ @Override
14
+ public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
15
+ List<NativeModule> modules = new ArrayList<>();
16
+ modules.add(new ImagePickerModule(reactContext));
17
+ return modules;
18
+ }
19
+
20
+ @Override
21
+ public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
22
+ return Collections.emptyList();
23
+ }
24
+ }
package/index.d.ts ADDED
@@ -0,0 +1,129 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ // MediaType
4
+ export type MediaType = 'image' | 'video' | 'all';
5
+
6
+ // PhotoAsset interface
7
+ export interface PhotoAsset {
8
+ id: string;
9
+ uri: string;
10
+ filename: string;
11
+ width: number;
12
+ height: number;
13
+ creationDate: number;
14
+ mediaType: 'image' | 'video';
15
+ duration?: number;
16
+ }
17
+
18
+ // SelectedImage interface
19
+ export interface SelectedImage {
20
+ uri: string;
21
+ fileName: string;
22
+ fileSize: number;
23
+ width: number;
24
+ height: number;
25
+ type: string;
26
+ id: string;
27
+ base64: string;
28
+ }
29
+
30
+ // CropParams interface
31
+ export interface CropParams {
32
+ x: number;
33
+ y: number;
34
+ width: number;
35
+ height: number;
36
+ scale: number;
37
+ aspectRatio: number;
38
+ }
39
+
40
+ // MainPhotoGalleryRef interface
41
+ export interface MainPhotoGalleryRef {
42
+ triggerCropCapture: () => Promise<void>;
43
+ }
44
+
45
+ // CropValues interface
46
+ export interface CropValues {
47
+ scale: number;
48
+ translateX: number;
49
+ translateY: number;
50
+ }
51
+
52
+ // ImageCropperRef interface
53
+ export interface ImageCropperRef {
54
+ captureImage: () => Promise<string>;
55
+ }
56
+
57
+ // ImageCropper Props
58
+ export interface ImageCropperProps {
59
+ asset: PhotoAsset;
60
+ containerWidth: number;
61
+ containerHeight: number;
62
+ cropWidth: number;
63
+ cropHeight: number;
64
+ initialCropValues?: CropValues;
65
+ onCropChange?: (values: CropValues) => void;
66
+ showOverlay?: boolean;
67
+ showGrid?: boolean;
68
+ enableGestures?: boolean;
69
+ }
70
+
71
+ // MainPhotoGallery Props
72
+ export interface MainPhotoGalleryProps {
73
+ mediaType?: 'image' | 'video' | 'all';
74
+ multiSelect?: boolean;
75
+ maxSelectionLimit?: number;
76
+ selectedAssets?: PhotoAsset[];
77
+ onAssetSelected?: (asset: PhotoAsset) => void;
78
+ onSelectedAssetsChange?: (assets: PhotoAsset[]) => void;
79
+ showSelectedAssetsHeader?: boolean;
80
+ hideSelectionHeader?: boolean;
81
+ onCropParamsChange?: (assetId: string, params: CropParams | null) => void;
82
+ existingCropParams?: Map<string, CropParams>;
83
+ onAspectRatioChange?: (ratio: number) => void;
84
+ onCroppedImagesReady?: (images: Array<{assetId: string, dataUri: string}>) => void;
85
+ onCancel?: () => void;
86
+ onNext?: (assets: PhotoAsset[]) => void;
87
+ renderPermissionDeniedState?: (onRequest?: () => void) => ReactNode;
88
+ }
89
+
90
+ // PhotoAssetImage Props
91
+ export interface PhotoAssetImageProps {
92
+ asset: PhotoAsset;
93
+ size?: number;
94
+ style?: any;
95
+ }
96
+
97
+ // ImagePickerModule
98
+ export interface ImagePickerModule {
99
+ openImagePicker: (options: {
100
+ mediaType?: 'image' | 'video' | 'all';
101
+ multiSelect?: boolean;
102
+ maxSelections?: number;
103
+ includeBase64?: boolean;
104
+ }) => Promise<SelectedImage[]>;
105
+
106
+ requestPermissions: () => Promise<{
107
+ granted: boolean;
108
+ message?: string;
109
+ }>;
110
+ }
111
+
112
+ // Component exports
113
+ declare const MainPhotoGallery: React.ForwardRefExoticComponent<
114
+ MainPhotoGalleryProps & React.RefAttributes<{
115
+ triggerCropCapture: () => Promise<void>;
116
+ }>
117
+ >;
118
+
119
+ declare const PhotoAssetImage: React.FC<PhotoAssetImageProps>;
120
+ declare const ImageCropper: React.ForwardRefExoticComponent<
121
+ ImageCropperProps & React.RefAttributes<ImageCropperRef>
122
+ >;
123
+ declare const ImagePickerModule: ImagePickerModule;
124
+
125
+ // Named exports
126
+ export { MainPhotoGallery, PhotoAssetImage, ImageCropper, ImagePickerModule };
127
+
128
+ // Default export
129
+ export default MainPhotoGallery;
package/index.js ADDED
@@ -0,0 +1,18 @@
1
+ import MainPhotoGallery from './src/components/MainPhotoGallery';
2
+ import PhotoAssetImage from './src/components/PhotoAssetImage';
3
+ import ImageCropper from './src/components/ImageCropper';
4
+ import ImagePickerModule from './src/modules/ImagePickerModule';
5
+
6
+ // Export types
7
+ export * from './src/modules/ImagePickerModule';
8
+
9
+ // Export components
10
+ export {
11
+ MainPhotoGallery,
12
+ PhotoAssetImage,
13
+ ImageCropper,
14
+ ImagePickerModule
15
+ };
16
+
17
+ // Default export
18
+ export default MainPhotoGallery;
@@ -0,0 +1,8 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
+ #import <UIKit/UIKit.h>
4
+ #import <PhotosUI/PhotosUI.h>
5
+
6
+ @interface ImagePickerModule : RCTEventEmitter <RCTBridgeModule, UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHPickerViewControllerDelegate>
7
+
8
+ @end