react-native-rectangle-doc-scanner 3.128.0 → 3.130.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.
@@ -550,6 +550,13 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
550
550
  }
551
551
  }, []);
552
552
  const activePreviewImage = croppedImageData ? getActivePreviewImage(croppedImageData) : null;
553
+ // Android: 카메라 컴포넌트가 없으므로 자동으로 갤러리 열기
554
+ (0, react_1.useEffect)(() => {
555
+ if (react_native_1.Platform.OS === 'android' && !croppedImageData && !isGalleryOpen) {
556
+ console.log('[FullDocScanner] Android detected - opening gallery automatically');
557
+ handleGalleryPick();
558
+ }
559
+ }, []);
553
560
  return (react_1.default.createElement(react_native_1.View, { style: styles.container },
554
561
  croppedImageData ? (
555
562
  // check_DP: Show confirmation screen
@@ -596,7 +603,7 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
596
603
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.confirmButton, styles.retakeButton], onPress: handleRetake, accessibilityLabel: mergedStrings.retake, accessibilityRole: "button" },
597
604
  react_1.default.createElement(react_native_1.Text, { style: styles.confirmButtonText }, mergedStrings.retake)),
598
605
  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_1.default.createElement(react_native_1.View, { style: styles.flex },
606
+ 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 },
600
607
  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
608
  react_1.default.createElement(react_native_1.View, { style: styles.overlayTop, pointerEvents: "box-none" },
602
609
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [
@@ -624,7 +631,10 @@ const FullDocScanner = ({ onResult, onClose, detectionConfig, overlayColor = '#3
624
631
  styles.shutterInner,
625
632
  rectangleHint && { backgroundColor: overlayColor }
626
633
  ] })),
627
- react_1.default.createElement(react_native_1.View, { style: styles.rightButtonsPlaceholder }))))),
634
+ react_1.default.createElement(react_native_1.View, { style: styles.rightButtonsPlaceholder }))))) : (react_1.default.createElement(react_native_1.View, { style: styles.flex },
635
+ react_1.default.createElement(react_native_1.View, { style: styles.processingOverlay },
636
+ react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: overlayColor }),
637
+ 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...")))),
628
638
  processing && (react_1.default.createElement(react_native_1.View, { style: styles.processingOverlay },
629
639
  react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: overlayColor }),
630
640
  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.128.0",
3
+ "version": "3.130.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,6 +5,7 @@ import {
5
5
  Image,
6
6
  InteractionManager,
7
7
  NativeModules,
8
+ Platform,
8
9
  StyleSheet,
9
10
  Text,
10
11
  TouchableOpacity,
@@ -750,6 +751,14 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
750
751
 
751
752
  const activePreviewImage = croppedImageData ? getActivePreviewImage(croppedImageData) : null;
752
753
 
754
+ // Android: 카메라 컴포넌트가 없으므로 자동으로 갤러리 열기
755
+ useEffect(() => {
756
+ if (Platform.OS === 'android' && !croppedImageData && !isGalleryOpen) {
757
+ console.log('[FullDocScanner] Android detected - opening gallery automatically');
758
+ handleGalleryPick();
759
+ }
760
+ }, []);
761
+
753
762
  return (
754
763
  <View style={styles.container}>
755
764
  {croppedImageData ? (
@@ -890,7 +899,7 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
890
899
  </TouchableOpacity>
891
900
  </View>
892
901
  </View>
893
- ) : (
902
+ ) : Platform.OS === 'ios' ? (
894
903
  <View style={styles.flex}>
895
904
  <DocScanner
896
905
  key={scannerSession}
@@ -988,6 +997,13 @@ export const FullDocScanner: React.FC<FullDocScannerProps> = ({
988
997
  </View>
989
998
  </DocScanner>
990
999
  </View>
1000
+ ) : (
1001
+ <View style={styles.flex}>
1002
+ <View style={styles.processingOverlay}>
1003
+ <ActivityIndicator size="large" color={overlayColor} />
1004
+ <Text style={styles.processingText}>갤러리에서 이미지를 선택해주세요...</Text>
1005
+ </View>
1006
+ </View>
991
1007
  )}
992
1008
 
993
1009
  {processing && (