### Start Example App Packager Source: https://github.com/saseungmin/react-native-gesture-image-viewer/blob/main/CONTRIBUTING.md Starts the Metro server for the example application. This is necessary to run the example app on devices or simulators. ```sh yarn example start ``` -------------------------------- ### Start Development Server Source: https://github.com/saseungmin/react-native-gesture-image-viewer/blob/main/docs/README.md Starts the local development server for the website. ```bash yarn run dev ``` -------------------------------- ### Run Example App on Web Source: https://github.com/saseungmin/react-native-gesture-image-viewer/blob/main/CONTRIBUTING.md Builds and runs the example application on the web platform. ```sh yarn example web ``` -------------------------------- ### Basic Usage Example Source: https://github.com/saseungmin/react-native-gesture-image-viewer/blob/main/docs/docs/2.x/en/guide/getting-started/quick-start.mdx Demonstrates how to integrate GestureViewer for displaying and interacting with a list of images. Includes modal presentation, image rendering, and controller hooks for navigation and state management. Ensure react-native-reanimated and react-native-gesture-handler are installed. ```tsx import { useCallback, useState } from 'react'; import { ScrollView, Image, Modal, View, Text, Button, Pressable } from 'react-native'; import { GestureViewer, GestureTrigger, useGestureViewerController, useGestureViewerEvent, useGestureViewerState, } from 'react-native-gesture-image-viewer'; function App() { const images = [...]; const [visible, setVisible] = useState(false); const [selectedIndex, setSelectedIndex] = useState(0); const { goToIndex, goToPrevious, goToNext } = useGestureViewerController(); const { currentIndex, totalCount } = useGestureViewerState(); const openModal = (index: number) => { setSelectedIndex(index); setVisible(true); }; const renderImage = useCallback((imageUrl: string) => { return ; }, []); useGestureViewerEvent('zoomChange', (data) => { console.log(`Zoom changed from ${data.previousScale} to ${data.scale}`); }); return ( {images.map((uri, index) => ( openModal(index)}> ))} setVisible(false)} />