Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-native-simple-image-viewer

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-native-simple-image-viewer

image viewer modal component for react-native

  • 0.4.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

한국어 | English

react-native-simple-image-viewer

  • 간단한 이미지 모달 컴포넌트 입니다.
  • react-native-reanimated, react-native-gesture-handler, react-native-modal, react-native-fast-image를 사용하여 구현 하였습니다.
  • pan, pinch, rotate 제스쳐를 지원하여 이미지를 확대, 축소, 회전하여 볼 수 있습니다.
  • 더블 탭으로 기본크기로 복귀 합니다.

platforms react-native react-native-reanimated react-native-gesture-handler react-native-modal react-native-fast-image

single image

preview_single_1


multiple images

preview_multi_3 preview_multi_1 preview_multi_2 error_component

Installation

with Dependencies

  • npm
 npm install react-native-modal react-native-reanimated react-native-gesture-handler react-native-simple-image-viewer
  • yarn
yarn add react-native-modal react-native-reanimated react-native-gesture-handler react-native-simple-image-viewer

Android

| Setting for react-native-reanimated

  1. your-project-name/babel.config.js
module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    ...
    ['react-native-reanimated/plugin'] //<- add, end of array
  ],
}
  1. your-project-name/android/app/build.gradle
   project.ext.react = [
      enableHermes: true  // <- false to true
  ]
  1. your-project-name/android/app/src/main/MainApplication.java

   import com.facebook.react.bridge.JSIModulePackage;          // <- add
   import com.swmansion.reanimated.ReanimatedJSIModulePackage; // <- add
  ...
  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
  ...

      @Override
      protected String getJSMainModuleName() {
        return "index";
      }

      @Override                                          // <- add
      protected JSIModulePackage getJSIModulePackage() { // <- add
        return new ReanimatedJSIModulePackage();         // <- add
      }                                                  // <- add

    };
  ...
  1. Rebuild
  X:\your-project-name\android\gradlew clean
  X:\your-project-name\npx react-native run-android

iOS

  1. your-project-name/ios/Podfile
  ...
  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => true # <- false to true
  )

  # this is option
  # use_flipper!()
  ...
  1. Rebuild
  c:\your-project-name\ios\pod cache clean --all
  c:\your-project-name\ios\pod deintegrate
  c:\your-project-name\ios\pod install
  c:\your-project-name\npm react-native run-ios

Optional (Android)

  • Some images are displayed only on iOS ?
  • an error such as out of memory or pool hard cap violation
AndroidManifest.xml

<application
      android:name=".MainApplication"
      ...
      android:largeHeap="true" <-- add
      ...>
  • Release build with proguard
proguard-rules.pro
# Add project specific ProGuard rules here.
...

# react-native-reanimated
-keep class com.swmansion.reanimated.** { *; }
-keep class com.facebook.react.turbomodule.** { *; }

# react-native-fast-image
-keep public class com.dylanvann.fastimage.* {*;}
-keep public class com.dylanvann.fastimage.** {*;}
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

Usage

single image

import { SimpleImageViewer } from "react-native-simple-image-viewer";
  //...
  const [isVisible, setIsVisible] = useState<boolean>(false);
  return (
    <View style={{flex:1}}>
        <Button
          title={'show'}
          style={{width: '100%', height: 80}}
          onPress={()=>setIsVisible(prevState => !prevState)} />
        <SimpleImageViewer
          imageUri={{ uri: 'https://via.placeholder.com/2048/18A6F6' }}
          isVisible={isVisible}
        />
    </View>
  );

multiple images

      <SimpleImageViewer
        perPage={itemsPerPage}
        imageUri={defaultImage}
        images={defaultImages}
        isVisible={showHide}
        onClose={() => setShowHide(false)}
        bgColor={'#333333'}
      />

Properties

NameParameter TypeRequiredDefaultDescription
isVisibleBooleanOfalseshow / hide modal
imageUriObject : { uri : string , title? : string }Ohttps://via.placeholder.com/2048/18A6F6jsonPlaceHolder image url
images?ArrayX[ ]Array of imageUri
bgColor?StringX#333333
onClose?Function : (state:boolean) => voidXfalsereturn false when turn off
viewMode'single','multi'X'single'
perPagenumberX3
naviPosition'top', 'bottom'X-working in progress
leftHandedbooleanXfalseclose-button position change
selectedIndexnumberX0Selected array of imageUri object's index
showTitlebooleanXfalseShow/Hide Selected imageUri object's title
itemMarginnumberX15margin between items of list
showPagebooleanXfalseShow/Hide page current and total page number
tokenstringX-string token like jwt
tokenHeaderstringX'Bearer'string token header like jwt header
requestMethodstringX'GET'

Changelog

0

  • Added properties for secured-image like needed jwt. request header is automatically generated if token property existed.

0.3.2

  • fixed minor errors

0.3.1

  • Added current / total page info
  • new property (showPage,itemMargin,leftHanded)
  • fixed almost minor errors
  • Added new option component for example

0.2.3

  • fixed ErrorComponent

0.2.1

  • Added react-native-fast-image dependency for list performance.
  • When image not found or error, show Alternative component.

0.2.0

  • Added horizontal scroll list bar for multi-image support
  • A complementary color for the close-button background and item border are automatically generated by the background color.
  • The item size of the list is automatically changed according to "perPage" props.
  • Example update.

known issues

  • The Item of list component show slow or laggy when open modal.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Keywords

FAQs

Package last updated on 25 Feb 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc