@onekeyfe/react-native-image-crop-picker 3.0.147

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.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/ReactNativeImageCropPicker.podspec +40 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +144 -0
  6. package/android/gradle.properties +4 -0
  7. package/android/src/main/AndroidManifest.xml +24 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/reactnativeimagecroppicker/ImageCropPickerException.kt +45 -0
  10. package/android/src/main/java/com/margelo/nitro/reactnativeimagecroppicker/ImageCropPickerImageProcessor.kt +308 -0
  11. package/android/src/main/java/com/margelo/nitro/reactnativeimagecroppicker/ImageCropPickerSession.kt +297 -0
  12. package/android/src/main/java/com/margelo/nitro/reactnativeimagecroppicker/ReactNativeImageCropPicker.kt +69 -0
  13. package/android/src/main/java/com/margelo/nitro/reactnativeimagecroppicker/ReactNativeImageCropPickerPackage.kt +24 -0
  14. package/ios/ImageCropPickerError.swift +57 -0
  15. package/ios/ImageCropPickerImageProcessor.swift +343 -0
  16. package/ios/ImageCropPickerSession.swift +407 -0
  17. package/ios/ReactNativeImageCropPicker.swift +65 -0
  18. package/ios/TOCropViewController/Categories/UIImage+CropRotate.h +39 -0
  19. package/ios/TOCropViewController/Categories/UIImage+CropRotate.m +94 -0
  20. package/ios/TOCropViewController/Constants/TOCropViewConstants.h +63 -0
  21. package/ios/TOCropViewController/LICENSE +21 -0
  22. package/ios/TOCropViewController/Models/TOActivityCroppedImageProvider.h +38 -0
  23. package/ios/TOCropViewController/Models/TOActivityCroppedImageProvider.m +73 -0
  24. package/ios/TOCropViewController/Models/TOCropViewControllerAspectRatioPreset.h +64 -0
  25. package/ios/TOCropViewController/Models/TOCropViewControllerAspectRatioPreset.m +121 -0
  26. package/ios/TOCropViewController/Models/TOCropViewControllerTransitioning.h +49 -0
  27. package/ios/TOCropViewController/Models/TOCropViewControllerTransitioning.m +125 -0
  28. package/ios/TOCropViewController/Models/TOCroppedImageAttributes.h +38 -0
  29. package/ios/TOCropViewController/Models/TOCroppedImageAttributes.m +45 -0
  30. package/ios/TOCropViewController/Resources/Base.lproj/TOCropViewControllerLocalizable.strings +8 -0
  31. package/ios/TOCropViewController/Resources/PrivacyInfo.xcprivacy +14 -0
  32. package/ios/TOCropViewController/Resources/ar.lproj/TOCropViewControllerLocalizable.strings +9 -0
  33. package/ios/TOCropViewController/Resources/ca.lproj/TOCropViewControllerLocalizable.strings +8 -0
  34. package/ios/TOCropViewController/Resources/cs.lproj/TOCropViewControllerLocalizable.strings +8 -0
  35. package/ios/TOCropViewController/Resources/da-DK.lproj/TOCropViewControllerLocalizable.strings +8 -0
  36. package/ios/TOCropViewController/Resources/de.lproj/TOCropViewControllerLocalizable.strings +8 -0
  37. package/ios/TOCropViewController/Resources/en.lproj/TOCropViewControllerLocalizable.strings +8 -0
  38. package/ios/TOCropViewController/Resources/es.lproj/TOCropViewControllerLocalizable.strings +8 -0
  39. package/ios/TOCropViewController/Resources/fa-IR.lproj/TOCropViewControllerLocalizable.strings +8 -0
  40. package/ios/TOCropViewController/Resources/fa.lproj/TOCropViewControllerLocalizable.strings +8 -0
  41. package/ios/TOCropViewController/Resources/fi.lproj/TOCropViewControllerLocalizable.strings +8 -0
  42. package/ios/TOCropViewController/Resources/fr.lproj/TOCropViewControllerLocalizable.strings +8 -0
  43. package/ios/TOCropViewController/Resources/hu.lproj/TOCropViewControllerLocalizable.strings +9 -0
  44. package/ios/TOCropViewController/Resources/id.lproj/TOCropViewControllerLocalizable.strings +8 -0
  45. package/ios/TOCropViewController/Resources/it.lproj/TOCropViewControllerLocalizable.strings +8 -0
  46. package/ios/TOCropViewController/Resources/ja.lproj/TOCropViewControllerLocalizable.strings +8 -0
  47. package/ios/TOCropViewController/Resources/ko.lproj/TOCropViewControllerLocalizable.strings +8 -0
  48. package/ios/TOCropViewController/Resources/ms.lproj/TOCropViewControllerLocalizable.strings +8 -0
  49. package/ios/TOCropViewController/Resources/nl.lproj/TOCropViewControllerLocalizable.strings +8 -0
  50. package/ios/TOCropViewController/Resources/pl.lproj/TOCropViewControllerLocalizable.strings +8 -0
  51. package/ios/TOCropViewController/Resources/pt-BR.lproj/TOCropViewControllerLocalizable.strings +8 -0
  52. package/ios/TOCropViewController/Resources/pt.lproj/TOCropViewControllerLocalizable.strings +8 -0
  53. package/ios/TOCropViewController/Resources/ro.lproj/TOCropViewControllerLocalizable.strings +8 -0
  54. package/ios/TOCropViewController/Resources/ru.lproj/TOCropViewControllerLocalizable.strings +8 -0
  55. package/ios/TOCropViewController/Resources/sk.lproj/TOCropViewControllerLocalizable.strings +8 -0
  56. package/ios/TOCropViewController/Resources/tr.lproj/TOCropViewControllerLocalizable.strings +9 -0
  57. package/ios/TOCropViewController/Resources/uk.lproj/TOCropViewControllerLocalizable.strings +8 -0
  58. package/ios/TOCropViewController/Resources/vi.lproj/TOCropViewControllerLocalizable.strings +9 -0
  59. package/ios/TOCropViewController/Resources/zh-Hans.lproj/TOCropViewControllerLocalizable.strings +9 -0
  60. package/ios/TOCropViewController/Resources/zh-Hant.lproj/TOCropViewControllerLocalizable.strings +9 -0
  61. package/ios/TOCropViewController/TOCropViewController.h +479 -0
  62. package/ios/TOCropViewController/TOCropViewController.m +1355 -0
  63. package/ios/TOCropViewController/Views/TOCropOverlayView.h +43 -0
  64. package/ios/TOCropViewController/Views/TOCropOverlayView.m +240 -0
  65. package/ios/TOCropViewController/Views/TOCropScrollView.h +39 -0
  66. package/ios/TOCropViewController/Views/TOCropScrollView.m +48 -0
  67. package/ios/TOCropViewController/Views/TOCropToolbar.h +104 -0
  68. package/ios/TOCropViewController/Views/TOCropToolbar.m +783 -0
  69. package/ios/TOCropViewController/Views/TOCropView.h +311 -0
  70. package/ios/TOCropViewController/Views/TOCropView.m +1787 -0
  71. package/lib/module/ReactNativeImageCropPicker.nitro.js +4 -0
  72. package/lib/module/ReactNativeImageCropPicker.nitro.js.map +1 -0
  73. package/lib/module/index.js +83 -0
  74. package/lib/module/index.js.map +1 -0
  75. package/lib/module/package.json +1 -0
  76. package/lib/typescript/package.json +1 -0
  77. package/lib/typescript/src/ReactNativeImageCropPicker.nitro.d.ts +54 -0
  78. package/lib/typescript/src/ReactNativeImageCropPicker.nitro.d.ts.map +1 -0
  79. package/lib/typescript/src/index.d.ts +31 -0
  80. package/lib/typescript/src/index.d.ts.map +1 -0
  81. package/nitro.json +23 -0
  82. package/nitrogen/generated/android/c++/JCropRect.hpp +69 -0
  83. package/nitrogen/generated/android/c++/JHybridReactNativeImageCropPickerSpec.cpp +125 -0
  84. package/nitrogen/generated/android/c++/JHybridReactNativeImageCropPickerSpec.hpp +66 -0
  85. package/nitrogen/generated/android/c++/JImageCropPickerOptions.hpp +154 -0
  86. package/nitrogen/generated/android/c++/JPickedImage.hpp +88 -0
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeimagecroppicker/CropRect.kt +66 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeimagecroppicker/HybridReactNativeImageCropPickerSpec.kt +69 -0
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeimagecroppicker/ImageCropPickerOptions.kt +171 -0
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeimagecroppicker/PickedImage.kt +86 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativeimagecroppicker/reactnativeimagecroppickerOnLoad.kt +35 -0
  92. package/nitrogen/generated/android/reactnativeimagecroppicker+autolinking.cmake +81 -0
  93. package/nitrogen/generated/android/reactnativeimagecroppicker+autolinking.gradle +27 -0
  94. package/nitrogen/generated/android/reactnativeimagecroppickerOnLoad.cpp +54 -0
  95. package/nitrogen/generated/android/reactnativeimagecroppickerOnLoad.hpp +34 -0
  96. package/nitrogen/generated/ios/ReactNativeImageCropPicker+autolinking.rb +62 -0
  97. package/nitrogen/generated/ios/ReactNativeImageCropPicker-Swift-Cxx-Bridge.cpp +57 -0
  98. package/nitrogen/generated/ios/ReactNativeImageCropPicker-Swift-Cxx-Bridge.hpp +221 -0
  99. package/nitrogen/generated/ios/ReactNativeImageCropPicker-Swift-Cxx-Umbrella.hpp +55 -0
  100. package/nitrogen/generated/ios/ReactNativeImageCropPickerAutolinking.mm +33 -0
  101. package/nitrogen/generated/ios/ReactNativeImageCropPickerAutolinking.swift +26 -0
  102. package/nitrogen/generated/ios/c++/HybridReactNativeImageCropPickerSpecSwift.cpp +11 -0
  103. package/nitrogen/generated/ios/c++/HybridReactNativeImageCropPickerSpecSwift.hpp +116 -0
  104. package/nitrogen/generated/ios/swift/CropRect.swift +44 -0
  105. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  106. package/nitrogen/generated/ios/swift/Func_void_PickedImage.swift +46 -0
  107. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  108. package/nitrogen/generated/ios/swift/HybridReactNativeImageCropPickerSpec.swift +58 -0
  109. package/nitrogen/generated/ios/swift/HybridReactNativeImageCropPickerSpec_cxx.swift +202 -0
  110. package/nitrogen/generated/ios/swift/ImageCropPickerOptions.swift +474 -0
  111. package/nitrogen/generated/ios/swift/PickedImage.swift +96 -0
  112. package/nitrogen/generated/shared/c++/CropRect.hpp +95 -0
  113. package/nitrogen/generated/shared/c++/HybridReactNativeImageCropPickerSpec.cpp +24 -0
  114. package/nitrogen/generated/shared/c++/HybridReactNativeImageCropPickerSpec.hpp +71 -0
  115. package/nitrogen/generated/shared/c++/ImageCropPickerOptions.hpp +180 -0
  116. package/nitrogen/generated/shared/c++/PickedImage.hpp +114 -0
  117. package/package.json +173 -0
  118. package/src/ReactNativeImageCropPicker.nitro.ts +72 -0
  119. package/src/index.tsx +134 -0
package/src/index.tsx ADDED
@@ -0,0 +1,134 @@
1
+ import { NitroModules } from 'react-native-nitro-modules';
2
+
3
+ import type {
4
+ ImageCropPickerOptions,
5
+ PickedImage,
6
+ ReactNativeImageCropPicker as ReactNativeImageCropPickerSpec,
7
+ } from './ReactNativeImageCropPicker.nitro';
8
+
9
+ export type * from './ReactNativeImageCropPicker.nitro';
10
+
11
+ // Created on first use so importing this module costs nothing at startup.
12
+ let hybridObject: ReactNativeImageCropPickerSpec | undefined;
13
+
14
+ export function getReactNativeImageCropPicker(): ReactNativeImageCropPickerSpec {
15
+ if (!hybridObject) {
16
+ hybridObject =
17
+ NitroModules.createHybridObject<ReactNativeImageCropPickerSpec>(
18
+ 'ReactNativeImageCropPicker'
19
+ );
20
+ }
21
+ return hybridObject;
22
+ }
23
+
24
+ const ERROR_CODES = [
25
+ 'E_PICKER_CANCELLED',
26
+ 'E_PICKER_IN_PROGRESS',
27
+ 'E_ACTIVITY_DOES_NOT_EXIST',
28
+ 'E_FAILED_TO_SHOW_PICKER',
29
+ 'E_NO_IMAGE_DATA_FOUND',
30
+ 'E_CROPPER_IMAGE_NOT_FOUND',
31
+ 'E_CANNOT_SAVE_IMAGE',
32
+ 'E_LOW_MEMORY_ERROR',
33
+ 'E_ERROR_WHILE_CLEANING_FILES',
34
+ ] as const;
35
+
36
+ export type ImageCropPickerErrorCode =
37
+ | (typeof ERROR_CODES)[number]
38
+ | 'E_UNKNOWN';
39
+
40
+ // Rejections carry the same `code` values as react-native-image-crop-picker,
41
+ // e.g. `E_PICKER_CANCELLED` when the user dismisses the picker or cropper.
42
+ export class ImageCropPickerError extends Error {
43
+ readonly code: ImageCropPickerErrorCode;
44
+
45
+ constructor(code: ImageCropPickerErrorCode, message: string) {
46
+ super(message);
47
+ this.name = 'ImageCropPickerError';
48
+ this.code = code;
49
+ }
50
+ }
51
+
52
+ function isErrorCode(value: string): value is (typeof ERROR_CODES)[number] {
53
+ return (ERROR_CODES as readonly string[]).includes(value);
54
+ }
55
+
56
+ // Native errors reach JS as "<code>: <message>". Android prefixes the message
57
+ // with the exception class name and appends the Java stack trace, so only the
58
+ // first line is kept.
59
+ const NATIVE_ERROR_PATTERN = /\b(E_[A-Z_]+): (.*)/;
60
+
61
+ function toImageCropPickerError(error: unknown): ImageCropPickerError {
62
+ if (error instanceof ImageCropPickerError) {
63
+ return error;
64
+ }
65
+ const message = error instanceof Error ? error.message : String(error);
66
+ const match = NATIVE_ERROR_PATTERN.exec(message);
67
+ if (match?.[1] && isErrorCode(match[1])) {
68
+ return new ImageCropPickerError(match[1], match[2]?.trim() ?? '');
69
+ }
70
+ return new ImageCropPickerError(
71
+ 'E_UNKNOWN',
72
+ message.split('\n')[0] ?? message
73
+ );
74
+ }
75
+
76
+ // Options accepted for source compatibility with react-native-image-crop-picker.
77
+ // Only single photos are supported, and results are always JPEG.
78
+ export interface Options extends ImageCropPickerOptions {
79
+ mediaType?: 'photo';
80
+ multiple?: false;
81
+ forceJpg?: boolean;
82
+ // The system photo picker controls ordering.
83
+ sortOrder?: 'none' | 'asc' | 'desc';
84
+ }
85
+
86
+ export interface CropperOptions extends Options {
87
+ path: string;
88
+ }
89
+
90
+ export type Image = PickedImage;
91
+
92
+ export async function openPicker(options: Options = {}): Promise<Image> {
93
+ try {
94
+ return await getReactNativeImageCropPicker().openPicker(options);
95
+ } catch (error) {
96
+ throw toImageCropPickerError(error);
97
+ }
98
+ }
99
+
100
+ export async function openCropper({
101
+ path,
102
+ ...options
103
+ }: CropperOptions): Promise<Image> {
104
+ try {
105
+ return await getReactNativeImageCropPicker().openCropper(path, options);
106
+ } catch (error) {
107
+ throw toImageCropPickerError(error);
108
+ }
109
+ }
110
+
111
+ export async function clean(): Promise<void> {
112
+ try {
113
+ await getReactNativeImageCropPicker().clean();
114
+ } catch (error) {
115
+ throw toImageCropPickerError(error);
116
+ }
117
+ }
118
+
119
+ export async function cleanSingle(path: string): Promise<void> {
120
+ try {
121
+ await getReactNativeImageCropPicker().cleanSingle(path);
122
+ } catch (error) {
123
+ throw toImageCropPickerError(error);
124
+ }
125
+ }
126
+
127
+ const ImageCropPicker = {
128
+ openPicker,
129
+ openCropper,
130
+ clean,
131
+ cleanSingle,
132
+ };
133
+
134
+ export default ImageCropPicker;