react-native-rectangle-doc-scanner 3.140.0 → 3.144.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.
@@ -596,7 +596,7 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
596
596
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.confirmButton, styles.retakeButton], onPress: handleRetake, accessibilityLabel: mergedStrings.retake, accessibilityRole: "button" },
597
597
  react_1.default.createElement(react_native_1.Text, { style: styles.confirmButtonText }, mergedStrings.retake)),
598
598
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.confirmButton, styles.confirmButtonPrimary], onPress: handleConfirm, accessibilityLabel: mergedStrings.confirm, accessibilityRole: "button" },
599
- react_1.default.createElement(react_native_1.Text, { style: styles.confirmButtonText }, mergedStrings.confirm))))) : react_native_1.Platform.OS === 'ios' ? (react_1.default.createElement(react_native_1.View, { style: styles.flex },
599
+ react_1.default.createElement(react_native_1.Text, { style: styles.confirmButtonText }, mergedStrings.confirm))))) : (react_1.default.createElement(react_native_1.View, { style: styles.flex },
600
600
  react_1.default.createElement(DocScanner_1.DocScanner, { key: scannerSession, ref: docScannerRef, autoCapture: false, overlayColor: overlayColor, showGrid: showGrid, gridColor: resolvedGridColor, gridLineWidth: gridLineWidth, minStableFrames: minStableFrames ?? 6, detectionConfig: detectionConfig, onCapture: handleCapture, onRectangleDetect: handleRectangleDetect, showManualCaptureButton: false, enableTorch: flashEnabled },
601
601
  react_1.default.createElement(react_native_1.View, { style: styles.overlayTop, pointerEvents: "box-none" },
602
602
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [
@@ -624,10 +624,7 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
624
624
  styles.shutterInner,
625
625
  rectangleHint && { backgroundColor: overlayColor }
626
626
  ] })),
627
- react_1.default.createElement(react_native_1.View, { style: styles.rightButtonsPlaceholder }))))) : (react_1.default.createElement(react_native_1.View, { style: styles.flex },
628
- react_1.default.createElement(react_native_1.View, { style: styles.processingOverlay },
629
- react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: overlayColor }),
630
- react_1.default.createElement(react_native_1.Text, { style: styles.processingText }, "\uAC24\uB7EC\uB9AC\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uC120\uD0DD\uD574\uC8FC\uC138\uC694...")))),
627
+ react_1.default.createElement(react_native_1.View, { style: styles.rightButtonsPlaceholder }))))),
631
628
  processing && (react_1.default.createElement(react_native_1.View, { style: styles.processingOverlay },
632
629
  react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: overlayColor }),
633
630
  mergedStrings.processing && (react_1.default.createElement(react_native_1.Text, { style: styles.processingText }, mergedStrings.processing))))));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "3.140.0",
3
+ "version": "3.144.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -5,7 +5,6 @@ import {
5
5
  Image,
6
6
  InteractionManager,
7
7
  NativeModules,
8
- Platform,
9
8
  StyleSheet,
10
9
  Text,
11
10
  TouchableOpacity,
@@ -891,7 +890,7 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
891
890
  </TouchableOpacity>
892
891
  </View>
893
892
  </View>
894
- ) : Platform.OS === 'ios' ? (
893
+ ) : (
895
894
  <View style={styles.flex}>
896
895
  <DocScanner
897
896
  key={scannerSession}
@@ -989,13 +988,6 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
989
988
  </View>
990
989
  </DocScanner>
991
990
  </View>
992
- ) : (
993
- <View style={styles.flex}>
994
- <View style={styles.processingOverlay}>
995
- <ActivityIndicator size="large" color={overlayColor} />
996
- <Text style={styles.processingText}>갤러리에서 이미지를 선택해주세요...</Text>
997
- </View>
998
- </View>
999
991
  )}
1000
992
 
1001
993
  {processing && (
@@ -52,8 +52,9 @@ class PdfScanner extends React.Component {
52
52
  return;
53
53
  }
54
54
  const { onPictureTaken, onProcessing } = this.props;
55
- DeviceEventEmitter.addListener('onPictureTaken', onPictureTaken);
56
- DeviceEventEmitter.addListener('onProcessingChange', onProcessing);
55
+ // React Native 0.76+ returns a subscription object from addListener
56
+ this.pictureListener = DeviceEventEmitter.addListener('onPictureTaken', onPictureTaken);
57
+ this.processingListener = DeviceEventEmitter.addListener('onProcessingChange', onProcessing);
57
58
  this.eventsSubscribed = true;
58
59
  }
59
60
 
@@ -61,9 +62,15 @@ class PdfScanner extends React.Component {
61
62
  if (Platform.OS !== 'android') {
62
63
  return;
63
64
  }
64
- const { onPictureTaken, onProcessing } = this.props;
65
- DeviceEventEmitter.removeListener('onPictureTaken', onPictureTaken);
66
- DeviceEventEmitter.removeListener('onProcessingChange', onProcessing);
65
+ // React Native 0.76+ uses removeAllListeners instead of removeListener
66
+ if (this.pictureListener) {
67
+ this.pictureListener.remove();
68
+ this.pictureListener = null;
69
+ }
70
+ if (this.processingListener) {
71
+ this.processingListener.remove();
72
+ this.processingListener = null;
73
+ }
67
74
  this.eventsSubscribed = false;
68
75
  }
69
76
 
@@ -73,10 +80,14 @@ class PdfScanner extends React.Component {
73
80
  }
74
81
  try {
75
82
  const granted = await PermissionsAndroid.requestMultiple([
83
+ PermissionsAndroid.PERMISSIONS.CAMERA,
76
84
  PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
77
85
  PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
78
86
  ]);
79
87
 
88
+ const cameraGranted =
89
+ granted['android.permission.CAMERA'] ===
90
+ PermissionsAndroid.RESULTS.GRANTED;
80
91
  const readGranted =
81
92
  granted['android.permission.READ_EXTERNAL_STORAGE'] ===
82
93
  PermissionsAndroid.RESULTS.GRANTED;
@@ -84,7 +95,7 @@ class PdfScanner extends React.Component {
84
95
  granted['android.permission.WRITE_EXTERNAL_STORAGE'] ===
85
96
  PermissionsAndroid.RESULTS.GRANTED;
86
97
 
87
- if (readGranted && writeGranted) {
98
+ if (cameraGranted && readGranted && writeGranted) {
88
99
  this.setState({ permissionsAuthorized: true });
89
100
  } else {
90
101
  this.onPermissionsDenied();