{"version":3,"sources":["/Users/tommy.chung/Project/eb-client/hooks/useNavigation.ts","/Users/tommy.chung/Project/eb-client/screens/Fallback.tsx","/Users/tommy.chung/Project/eb-client/utils/request.ts","/Users/tommy.chung/Project/eb-client/services/api.ts","/Users/tommy.chung/Project/eb-client/components/RootView.tsx","/Users/tommy.chung/Project/eb-client/utils/screenSize.ts","/Users/tommy.chung/Project/eb-client/components/LazyImage.tsx","/Users/tommy.chung/Project/eb-client/components/Gallery.tsx","/Users/tommy.chung/Project/eb-client/components/EbIcon.tsx","/Users/tommy.chung/Project/eb-client/utils/asyncStorage.ts","/Users/tommy.chung/Project/eb-client/screens/Event.tsx","/Users/tommy.chung/Project/eb-client/screens/Exhibit.tsx","/Users/tommy.chung/Project/eb-client/App.tsx","/Users/tommy.chung/Project/eb-client/web-build/register-service-worker.js","/Users/tommy.chung/Project/eb-client/assets/EB-logo-word-only.png","/Users/tommy.chung/Project/eb-client/assets/fb-like-grey.png","/Users/tommy.chung/Project/eb-client/assets/fb-like-outlined.png"],"names":["useContext","NavigationContext","styles","StyleSheet","create","container","flex","backgroundColor","alignItems","justifyContent","baseUrl","get","path","query","a","async","queryStr","queryString","stringify","fetch","method","mode","cache","headers","redirect","referrer","res","ok","json","undefined","post","body","JSON","EventApi","eventId","data","console","log","event","ExhibitApi","exhibitId","exhibit","likes","length","rates","shares","children","loading","SafeAreaView","style","View","ActivityIndicator","Dimensions","width","height","screenWidth","screenHeight","url","useState","setLoading","image","setImage","useEffect","Image","getSize","error","position","top","left","bottom","right","source","uri","resizeMode","contentOffset","galleryContainer","marginVertical","paddingHorizontal","galleryInnerContainer","borderColor","borderWidth","borderRadius","Gallery","index","onIndexChange","images","itemWidth","renderItem","itemIndex","currentIndex","item","animatedValue","LazyImage","icon","require","size","dimension","setDimension","getVisitedEventCount","AsyncStorage","getItem","visitedEventCount","setItem","Number","addVisitedEventCount","getVisitedEvents","current","currentVisitedEvents","split","addVisitedEvent","visitedEvents","includes","push","join","getLikedExhibits","currentLikedExhibits","Header","name","createdBy","header","Text","headerTitle","headerSubtitle","Footer","footer","footerTextContainer","footerText","EbIcon","Actions","onActionPress","actionContainer","action","marginRight","onPress","type","actionText","marginLeft","PopUp","content","onClose","isSnackbarVisible","setIsSnackbarVisible","setTimeout","popUpContainer","popUpHeaderContainer","popUpHeaderIcon","Ionicons","color","popUpHeaderBackText","descriptionTitle","descriptionText","description","shareConatiner","shareTitle","shareMainContainer","Linking","openURL","encodeURIComponent","shareMediaContainer","AntDesign","shareMediaText","MaterialCommunityIcons","Clipboard","setString","Snackbar","visible","onDismiss","label","fontSize","fontWeight","alignSelf","textAlign","flexDirection","descriptionModal","padding","marginBottom","lineHeight","overflowY","overflowX","paddingVertical","marginTop","title","subtitle","ExhibitActions","isLiked","setIsliked","likedExhibits","isExhibitLiked","then","liked","like","_","addLikedExhibit","onShare","routes","Fallback","screen","navigation","useNavigation","handleIncomingLink","parse","queryParams","navigate","getInitialURL","addEventListener","removeEventListener","Event","setEvent","galleryIndex","setGalleryIndex","popUpType","setPopUpType","popUpContent","setPopUpContent","state","params","ev","exhibitors","map","exhibitor","exhibits","flat","catch","err","Portal","RootView","Modal","contentContainerStyle","dismissable","Exhibit","setExhibit","share","Navigator","Platform","OS","createSwitchNavigator","createStackNavigator","NavigationWrapper","createBrowserApp","createAppContainer","prefix","makeUrl","App","uriPrefix","navigator","window","serviceWorker","register","scope","info","module","exports"],"mappings":"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","file":"static/js/app.6f06d6c9.chunk.js","sourcesContent":["import { useContext } from 'react';\nimport { NavigationContext } from 'react-navigation';\n\nexport default () => {\n  const navigation = useContext(NavigationContext);\n\n  return navigation;\n};\n","import React, { useEffect } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { Text, ActivityIndicator } from 'react-native-paper';\nimport useNavigation from '../hooks/useNavigation';\nimport { Linking } from 'expo';\n\nexport default () => {\n  const navigation = useNavigation();\n\n  const handleIncomingLink = ({ url }) => {\n    console.log(url);\n    let { path, queryParams } = Linking.parse(url);\n    navigation.navigate(path, queryParams);\n  };\n\n  useEffect(() => {\n    Linking.getInitialURL().then(url => handleIncomingLink({ url }));\n    Linking.addEventListener('url', handleIncomingLink);\n    return Linking.removeEventListener('url', handleIncomingLink);\n  }, []);\n\n  return (\n    <View style={styles.container}>\n      <ActivityIndicator />\n    </View>\n  );\n};\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    backgroundColor: '#fff',\n    alignItems: 'center',\n    justifyContent: 'center'\n  }\n});\n","import queryString from 'query-string';\nconst baseUrl = 'https://api-v2.eventbinder.app';\n// const baseUrl = 'http://localhost:8001';\n\nexport const get = async (\n  path: string,\n  query?: {\n    [key: string]: any;\n  }\n) => {\n  try {\n    const queryStr = query && queryString.stringify(query);\n    const res = await fetch(\n      `${baseUrl}${path}${queryStr ? '?' + queryStr : ''}`,\n      {\n        method: 'GET',\n        mode: 'cors',\n        cache: 'no-cache',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        redirect: 'follow',\n        referrer: 'no-referrer'\n      }\n    );\n    if (res.ok) {\n      const json = await res.json();\n      return json;\n    } else {\n      return undefined;\n    }\n  } catch (error) {\n    return undefined;\n  }\n};\n\nexport const post = async (\n  path: string,\n  body?: {\n    [key: string]: any;\n  }\n) => {\n  try {\n    const res = await fetch(`${baseUrl}${path}`, {\n      method: 'POST',\n      mode: 'cors',\n      cache: 'no-cache',\n      ...(body && {\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify(body)\n      }),\n      redirect: 'follow',\n      referrer: 'no-referrer'\n    });\n    if (res.ok) {\n      const json = await res.json();\n      return json;\n    } else {\n      return undefined;\n    }\n  } catch (error) {\n    return undefined;\n  }\n};\n\nexport const put = async (\n  path: string,\n  body: {\n    [key: string]: any;\n  }\n) => {\n  try {\n    const res = await fetch(`${baseUrl}${path}`, {\n      method: 'PUT',\n      mode: 'cors',\n      cache: 'no-cache',\n      headers: {\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify(body),\n      redirect: 'follow',\n      referrer: 'no-referrer'\n    });\n    if (res.ok) {\n      const json = await res.json();\n      return json;\n    } else {\n      return undefined;\n    }\n  } catch (error) {\n    return undefined;\n  }\n};\n\nexport const del = async (\n  path: string,\n  query: {\n    [key: string]: any;\n  }\n) => {\n  try {\n    const queryStr = queryString.stringify(query);\n    const res = await fetch(`${baseUrl}${path}?${queryStr}`, {\n      method: 'PUT',\n      mode: 'cors',\n      cache: 'no-cache',\n      headers: {\n        'Content-Type': 'application/json'\n      },\n      redirect: 'follow',\n      referrer: 'no-referrer'\n    });\n    if (res.ok) {\n      const json = await res.json();\n      return json;\n    } else {\n      return undefined;\n    }\n  } catch (error) {\n    return undefined;\n  }\n};\n","import Event, { Exhibit } from '../types/Event';\nimport sleep from '../utils/sleep';\nimport cuid from 'cuid';\nimport Company from '../types/Company';\nimport { Sex, SocialMediaChannel } from '../types';\nimport { get, post } from '../utils/request';\n\nexport class EventApi {\n  static async get(eventId) {\n    const data = await get(`/event/${eventId}`);\n    console.log(data.event);\n    return data.event;\n  }\n}\n\nexport class ExhibitApi {\n  static async get(exhibitId): Promise<Exhibit> {\n    const data = await get(`/exhibit/${exhibitId}`);\n    console.log(data.exhibit);\n    return {\n      ...data.exhibit,\n      likes: data.exhibit.likes.length,\n      rates: data.exhibit.rates.length,\n      shares: data.exhibit.shares.length,\n    };\n  }\n\n  static async like(exhibitId): Promise<boolean> {\n    await post(`/exhibit/${exhibitId}/like`);\n    return true;\n  }\n\n  static async share(exhibitId): Promise<boolean> {\n    await post(`/exhibit/${exhibitId}/share`);\n    return true;\n  }\n}\n","import React, { ReactChild } from 'react';\nimport { SafeAreaView, StyleSheet, View } from 'react-native';\nimport { ActivityIndicator } from 'react-native-paper';\n\ninterface Props {\n  loading?: boolean;\n  children: ReactChild;\n}\n\nexport default ({ children, loading }: Props) => {\n  return (\n    <SafeAreaView style={{flex: 1}}>\n      <View style={loading && styles.loading}>\n        {loading ? <ActivityIndicator /> : children}\n      </View>\n    </SafeAreaView>\n  );\n};\n\nconst styles = StyleSheet.create({\n  loading: {\n    flex: 1,\n    backgroundColor: '#fff',\n    alignItems: 'center',\n    justifyContent: 'center'\n  }\n});\n","import { Dimensions } from 'react-native';\n\nconst { width, height } = Dimensions.get('window');\n\nexport const screenWidth = width;\n\nexport const screenHeight = height;\n","import React, { useState, useEffect } from 'react';\nimport { Image, ActivityIndicator } from 'react-native';\n\nexport default ({ url }) => {\n  const [loading, setLoading] = useState(true);\n  const [image, setImage] = useState<{\n    url: string;\n    width: number;\n    height: number;\n  }>();\n  useEffect(() => {\n    url &&\n      Image.getSize(\n        url,\n        (width, height) => {\n          setImage({\n            url,\n            width,\n            height\n          });\n          setLoading(false);\n        },\n        error => {\n          console.error(error);\n          setLoading(true);\n        }\n      );\n  }, [url]);\n  return !loading && image ? (\n    <Image\n      style={{\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        bottom: 0,\n        right: 0\n      }}\n      source={{ uri: image.url }}\n      resizeMode=\"contain\"\n    />\n  ) : (\n    <ActivityIndicator />\n  );\n};\n","import React from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { screenWidth, screenHeight } from '../utils/screenSize';\nimport LazyImage from '../components/LazyImage';\nimport { Exhibit } from '../types/Event';\nimport SideSwipe from 'react-native-sideswipe';\nimport { Image } from '../types';\n\nconst contentOffset = (screenWidth - screenWidth * 0.9) / 2;\n\nconst Gallery = ({\n  index,\n  onIndexChange,\n  images\n}: {\n  index: number;\n  onIndexChange(index: number): void;\n  images: Image[];\n}) => {\n  return (\n    <SideSwipe\n      index={index}\n      itemWidth={screenWidth * 0.9}\n      style={{ width: screenWidth }}\n      data={images}\n      contentOffset={contentOffset}\n      onIndexChange={onIndexChange}\n      renderItem={({\n        itemIndex,\n        currentIndex,\n        item,\n        animatedValue\n      }) => {\n        return (\n          <View style={styles.galleryContainer}>\n            <View style={styles.galleryInnerContainer}>\n              <LazyImage url={item.url} />\n            </View>\n          </View>\n        );\n      }}\n    />\n  );\n};\n\nconst styles = StyleSheet.create({\n  galleryContainer: {\n    height: screenHeight * 0.5,\n    width: screenWidth * 0.9,\n    marginVertical: 10,\n    paddingHorizontal: 5\n  },\n  galleryInnerContainer: {\n    flex: 1,\n    alignItems: 'center',\n    justifyContent: 'center',\n    borderColor: '#dddddd',\n    borderWidth: 1,\n    borderRadius: 5\n  }\n});\n\nexport default Gallery;","import React, { useEffect, useState } from 'react';\nimport { Image } from 'react-native';\nconst icon = require('../assets/EB-logo-word-only.png');\n\nexport default ({ size = 30 }) => {\n  const width = 994;\n  const height = 141;\n  const [dimension, setDimension] = useState<{\n    width: number;\n    height: number;\n  }>({\n    width: 0,\n    height: 0\n  });\n  useEffect(() => {\n    const ratio = width / height;\n    setDimension({\n      width: ratio * size,\n      height: size\n    });\n  }, [size]);\n\n  return <Image style={{ ...dimension }} source={icon} />;\n};\n","import AsyncStorage from '@callstack/async-storage';\n\nexport const getAllKeys = async () => {\n  const items = await AsyncStorage.getAllKeys();\n  console.log(items);\n};\n\nexport const getVisitedEventCount = async eventId => {\n  const visitedEventCount = await AsyncStorage.getItem(`count-${eventId}`);\n  if (visitedEventCount == null) {\n    await AsyncStorage.setItem(`count-${eventId}`, 0);\n  }\n  return Number(visitedEventCount);\n};\n\nexport const addVisitedEventCount = async eventId => {\n  const visitedEventCount = await getVisitedEventCount(eventId);\n  await AsyncStorage.setItem(`count-${eventId}`, visitedEventCount + 1);\n};\n\nexport const getVisitedEvents = async () => {\n  const current = await AsyncStorage.getItem('visitedEvents');\n  if (current == null) {\n    await AsyncStorage.setItem('visitedEvents', '');\n  }\n  const currentVisitedEvents = current.split(',') as string[];\n  return currentVisitedEvents;\n};\n\nexport const addVisitedEvent = async eventId => {\n  const visitedEvents = [...(await getVisitedEvents())];\n  if (visitedEvents.includes(eventId)) {\n    return;\n  }\n  visitedEvents.push(eventId);\n  await AsyncStorage.setItem('visitedEvents', visitedEvents.join(','));\n};\n\nexport const getLikedExhibits = async () => {\n  const current = await AsyncStorage.getItem('likedExhibits');\n  if (current == null) {\n    await AsyncStorage.setItem('likedExhibits', '');\n  }\n  const currentLikedExhibits = current.split(',') as string[];\n  return currentLikedExhibits;\n};\n\nexport const addLikedExhibit = async exhibitId => {\n  const likedExhibits = [...(await getLikedExhibits())];\n  likedExhibits.push(exhibitId);\n  await AsyncStorage.setItem('likedExhibits', likedExhibits.join(','));\n};\n\nexport const isExhibitLiked = async exhibitId => {\n  const likedExhibits = await getLikedExhibits();\n  return likedExhibits.includes(exhibitId);\n};\n","import React, { useEffect, useState } from 'react';\nimport { View, StyleSheet, Clipboard, Alert } from 'react-native';\nimport { Text, Portal, Modal, Snackbar } from 'react-native-paper';\nimport useNavigation from '../hooks/useNavigation';\nimport { EventApi } from '../services/api';\nimport Event from '../types/Event';\nimport RootView from '../components/RootView';\nimport Gallery from '../components/Gallery';\nimport Company from '../types/Company';\nimport EbIcon from '../components/EbIcon';\nimport { screenWidth, screenHeight } from '../utils/screenSize';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport {\n  Ionicons,\n  AntDesign,\n  MaterialCommunityIcons\n} from '@expo/vector-icons';\nimport { Linking } from 'expo';\nimport { addVisitedEvent, addVisitedEventCount } from '../utils/asyncStorage';\n\nconst Header = ({ name, createdBy }: { name: string; createdBy: Company }) => {\n  return (\n    <View style={styles.header}>\n      <Text style={styles.headerTitle}>{name}</Text>\n      <Text style={styles.headerSubtitle}>{createdBy.name}</Text>\n    </View>\n  );\n};\n\nconst Footer = () => {\n  return (\n    <View style={styles.footer}>\n      <View style={styles.footerTextContainer}>\n        <Text style={styles.footerText}>Designed and powered by</Text>\n        <EbIcon size={10} />\n      </View>\n    </View>\n  );\n};\n\nconst Actions = ({\n  onActionPress\n}: {\n  onActionPress(action: { type: 'description' | 'share' | 'followUs' }): void;\n}) => {\n  return (\n    <>\n      <View style={styles.actionContainer}>\n        <TouchableOpacity\n          style={[\n            styles.action,\n            {\n              marginRight: 5\n            }\n          ]}\n          onPress={() =>\n            onActionPress({\n              type: 'description'\n            })\n          }\n        >\n          <Text style={styles.actionText}>The story</Text>\n        </TouchableOpacity>\n        <TouchableOpacity\n          style={[\n            styles.action,\n            {\n              marginLeft: 5\n            }\n          ]}\n          onPress={() =>\n            onActionPress({\n              type: 'share'\n            })\n          }\n        >\n          <Text style={styles.actionText}>Share</Text>\n        </TouchableOpacity>\n      </View>\n    </>\n  );\n};\n\nconst PopUp = ({\n  type,\n  content,\n  onClose\n}: {\n  type: 'description' | 'share' | 'binder';\n  content: any;\n  onClose(): void;\n}) => {\n  const [isSnackbarVisible, setIsSnackbarVisible] = useState(false);\n  useEffect(() => {\n    if (isSnackbarVisible) {\n      setTimeout(() => {\n        setIsSnackbarVisible(false);\n      }, 2000);\n    }\n  }, [isSnackbarVisible]);\n  return (\n    <View style={styles.popUpContainer}>\n      <TouchableOpacity onPress={onClose} style={styles.popUpHeaderContainer}>\n        <View style={styles.popUpHeaderIcon}>\n          <Ionicons name=\"ios-arrow-back\" size={25} color=\"#000\" />\n        </View>\n        <Text style={styles.popUpHeaderBackText}>Back</Text>\n      </TouchableOpacity>\n      {type === 'description' && (\n        <>\n          <Text style={styles.descriptionTitle}>The Story</Text>\n          <Text style={styles.descriptionText}>\n            {content && content.description}\n          </Text>\n        </>\n      )}\n      {type === 'share' && (\n        <View style={styles.shareConatiner}>\n          <Text style={styles.shareTitle}>Follow us on</Text>\n          <View style={styles.shareMainContainer}>\n            <TouchableOpacity\n              onPress={() => {\n                Linking.openURL(\n                  'https://www.facebook.com/sharer/sharer.php?u=' +\n                    encodeURIComponent(\n                      content\n                        ? `https://i.eventbinder.app/event/${content.eventId}`\n                        : ''\n                    )\n                );\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <AntDesign name=\"facebook-square\" size={30} />\n              <Text style={styles.shareMediaText}>Facebook</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                Linking.openURL(\n                  'fb-messenger://share?link=' +\n                    encodeURIComponent(\n                      content\n                        ? `https://i.eventbinder.app/event/${content.eventId}`\n                        : ''\n                    )\n                );\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <MaterialCommunityIcons name=\"facebook-messenger\" size={30} />\n              <Text style={styles.shareMediaText}>Messenager</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                Linking.openURL(\n                  `whatsapp://send?text=https://i.eventbinder.app/event/${content.eventId}`\n                );\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <MaterialCommunityIcons name=\"whatsapp\" size={30} />\n              <Text style={styles.shareMediaText}>WhatsApp</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                Clipboard.setString(\n                  `https://i.eventbinder.app/event/${content.eventId}`\n                );\n                setIsSnackbarVisible(true);\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <MaterialCommunityIcons name=\"content-copy\" size={30} />\n              <Text style={styles.shareMediaText}>Copy Link</Text>\n            </TouchableOpacity>\n          </View>\n        </View>\n      )}\n      <Snackbar\n        style={{\n          width: screenWidth - 40 - 16,\n        }}\n        visible={isSnackbarVisible}\n        onDismiss={() => setIsSnackbarVisible(false)}\n        action={{\n          label: 'OKAY',\n          onPress: () => setIsSnackbarVisible(false)\n        }}\n      >\n        Copied!\n      </Snackbar>\n    </View>\n  );\n};\n\nexport default () => {\n  const navigation = useNavigation();\n  const [event, setEvent] = useState<Event>();\n  const [loading, setLoading] = useState(true);\n  const [galleryIndex, setGalleryIndex] = useState(0);\n  const [popUpType, setPopUpType] = useState();\n  const [popUpContent, setPopUpContent] = useState();\n  useEffect(() => {\n    const { eventId } = navigation.state.params;\n    addVisitedEvent(eventId);\n    addVisitedEventCount(eventId);\n    EventApi.get(eventId)\n      .then(ev => {\n        console.log(\n          ev.exhibitors\n            .map(exhibitor => exhibitor.exhibits)\n            .flat()\n            .map(exhibit => exhibit.images[0])\n        );\n        setEvent(ev);\n        setLoading(false);\n      })\n      .catch(err => {\n        console.error(err);\n        setLoading(false);\n      });\n  }, []);\n\n  return (\n    <Portal>\n      <RootView loading={loading}>\n        {event && !loading && (\n          <View style={styles.container}>\n            <Gallery\n              index={galleryIndex}\n              onIndexChange={index => setGalleryIndex(index)}\n              images={event.exhibitors\n                .map(exhibitor => exhibitor.exhibits)\n                .flat()\n                .map(exhibit => exhibit.images[0])}\n            />\n            <Header name={event.name} createdBy={event.createdBy} />\n            <Actions\n              onActionPress={({ type }) => {\n                setPopUpType(type);\n                if (type === 'description') {\n                  setPopUpContent({\n                    description: event.description\n                  });\n                } else if (type === 'share') {\n                  setPopUpContent({\n                    eventId: navigation.state.params.eventId\n                  });\n                }\n              }}\n            />\n            <Footer />\n            <Modal\n              contentContainerStyle={styles.descriptionModal}\n              visible={popUpType}\n              onDismiss={() => setPopUpType(null)}\n              dismissable\n            >\n              <PopUp\n                type={popUpType}\n                content={popUpContent}\n                onClose={() => {\n                  setPopUpType(null);\n                  setPopUpContent(null);\n                }}\n              />\n            </Modal>\n          </View>\n        )}\n      </RootView>\n    </Portal>\n  );\n};\n\nconst styles = StyleSheet.create({\n  container: {\n    height: screenHeight,\n    backgroundColor: '#fff',\n    alignItems: 'center'\n  },\n  header: {\n    height: screenHeight * 0.15,\n    width: screenWidth * 0.9\n  },\n  headerTitle: {\n    fontSize: screenHeight * 0.03,\n    fontWeight: 'bold'\n  },\n  headerSubtitle: {\n    fontSize: screenHeight * 0.02,\n    alignSelf: 'flex-end',\n    textAlign: 'right'\n  },\n  footer: {\n    height: screenHeight * 0.1 - 20,\n    width: screenWidth * 0.9,\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'space-between'\n    // marginTop: 'auto'\n  },\n  footerTextContainer: {\n    flex: 1,\n    flexDirection: 'row',\n    alignItems: 'center'\n  },\n  footerText: {\n    fontSize: 12,\n    marginRight: 2\n  },\n  actionContainer: {\n    flexDirection: 'row',\n    justifyContent: 'space-evenly',\n    width: screenWidth * 0.9,\n    height: screenHeight * 0.25\n  },\n  action: {\n    flex: 1,\n    alignItems: 'center',\n    justifyContent: 'center',\n    borderColor: '#000000',\n    borderWidth: 2,\n    borderRadius: 10\n  },\n  actionText: {\n    fontSize: screenHeight * 0.025\n  },\n  descriptionModal: {\n    flex: 1,\n    alignItems: 'center',\n    justifyContent: 'center'\n  },\n  popUpContainer: {\n    width: screenWidth,\n    height: screenHeight,\n    backgroundColor: '#fff',\n    padding: 20,\n  },\n  popUpHeaderContainer: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginBottom: 20\n  },\n  popUpHeaderIcon: {\n    marginRight: 10\n  },\n  popUpHeaderBackText: {\n    fontSize: 20\n  },\n  descriptionTitle: {\n    fontSize: 30,\n    marginBottom: 20\n  },\n  descriptionText: {\n    fontSize: 20,\n    lineHeight: 26,\n    overflowY: 'scroll',\n    overflowX: 'hidden'\n  },\n  shareConatiner: {\n    flex: 1,\n    alignItems: 'center'\n  },\n  shareTitle: {\n    fontSize: 30,\n    fontWeight: 'bold',\n    marginBottom: 20\n  },\n  shareMainContainer: {\n    flex: 1,\n    alignItems: 'center'\n  },\n  shareMediaContainer: {\n    width: screenWidth * 0.75,\n    height: screenWidth * 0.75 * 0.2,\n    borderRadius: 10,\n    borderWidth: 2,\n    borderColor: '#000',\n    paddingHorizontal: 30,\n    paddingVertical: 10,\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginTop: 20\n  },\n  shareMediaText: {\n    marginLeft: 10\n  }\n});\n","import React, { useEffect, useState } from 'react';\nimport { View, StyleSheet, Image, Clipboard, Alert } from 'react-native';\nimport { Text, Portal, Modal, Snackbar } from 'react-native-paper';\nimport useNavigation from '../hooks/useNavigation';\nimport { ExhibitApi, EventApi } from '../services/api';\nimport Event, { Exhibit } from '../types/Event';\nimport RootView from '../components/RootView';\nimport Gallery from '../components/Gallery';\nimport EbIcon from '../components/EbIcon';\nimport { screenWidth, screenHeight } from '../utils/screenSize';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport {\n  Ionicons,\n  AntDesign,\n  MaterialCommunityIcons\n} from '@expo/vector-icons';\nimport { Linking } from 'expo';\nimport {\n  addVisitedEvent,\n  addVisitedEventCount,\n  addLikedExhibit,\n  isExhibitLiked\n} from '../utils/asyncStorage';\n\nconst Header = ({ title, subtitle }: { title: string; subtitle: string }) => {\n  return (\n    <View style={styles.header}>\n      <Text style={styles.headerTitle}>{title}</Text>\n      <Text style={styles.headerSubtitle}>{subtitle}</Text>\n    </View>\n  );\n};\n\nconst Footer = () => {\n  return (\n    <View style={styles.footer}>\n      <View style={styles.footerTextContainer}>\n        <Text style={styles.footerText}>Designd and powered by</Text>\n        <EbIcon size={10} />\n      </View>\n    </View>\n  );\n};\n\nconst ExhibitActions = ({\n  exhibitId,\n  onActionPress\n}: {\n  exhibitId: string;\n  onActionPress(action: { type: 'description' | 'share' | 'followUs' }): void;\n}) => {\n  const [isLiked, setIsliked] = useState(false);\n  useEffect(() => {\n    isExhibitLiked(exhibitId).then(liked => {\n      setIsliked(liked);\n    });\n  }, [exhibitId]);\n  return (\n    <>\n      <View\n        style={[\n          styles.actionContainer,\n          {\n            marginBottom: 5\n          }\n        ]}\n      >\n        <TouchableOpacity\n          style={[\n            styles.action,\n            {\n              marginRight: 5\n            }\n          ]}\n          onPress={() => {\n            if (!isLiked) {\n              ExhibitApi.like(exhibitId).then(_ => {\n                addLikedExhibit(exhibitId);\n                setIsliked(true);\n              });\n            }\n          }}\n        >\n          {isLiked ? (\n            // <AntDesign name=\"like1\" size={30} color=\"#000\" />\n            <Image\n              style={{ width: 30, height: 30 }}\n              source={require('../assets/fb-like-grey.png')}\n            />\n          ) : (\n            // <AntDesign name=\"like2\" size={30} color=\"#000\" />\n            <Image\n              style={{ width: 30, height: 30 }}\n              source={require('../assets/fb-like-outlined.png')}\n            />\n          )}\n          <Text style={styles.actionText}>Like</Text>\n        </TouchableOpacity>\n        <TouchableOpacity\n          style={[\n            styles.action,\n            {\n              marginLeft: 5\n            }\n          ]}\n          onPress={() =>\n            onActionPress({\n              type: 'share'\n            })\n          }\n        >\n          <MaterialCommunityIcons name=\"share-variant\" size={30} />\n          <Text style={styles.actionText}>Share</Text>\n        </TouchableOpacity>\n      </View>\n    </>\n  );\n};\n\nconst Actions = ({\n  onActionPress\n}: {\n  onActionPress(action: { type: 'description' | 'share' | 'followUs' }): void;\n}) => {\n  return (\n    <>\n      <View\n        style={[\n          styles.actionContainer,\n          {\n            marginTop: 5\n          }\n        ]}\n      >\n        <TouchableOpacity\n          style={[\n            styles.action,\n            {\n              marginRight: 5\n            }\n          ]}\n          onPress={() =>\n            onActionPress({\n              type: 'description'\n            })\n          }\n        >\n          <Text style={styles.actionText}>The story</Text>\n        </TouchableOpacity>\n        <TouchableOpacity\n          style={[\n            styles.action,\n            {\n              marginLeft: 5\n            }\n          ]}\n          onPress={() =>\n            onActionPress({\n              type: 'followUs'\n            })\n          }\n        >\n          <Text style={styles.actionText}>Follow us on</Text>\n        </TouchableOpacity>\n      </View>\n    </>\n  );\n};\n\nconst PopUp = ({\n  type,\n  content,\n  onClose,\n  onShare\n}: {\n  type: 'description' | 'share' | 'binder' | 'followUs';\n  content: any;\n  onClose(): void;\n  onShare?(): void;\n}) => {\n  const [isSnackbarVisible, setIsSnackbarVisible] = useState(false);\n  useEffect(() => {\n    if (isSnackbarVisible) {\n      setTimeout(() => {\n        setIsSnackbarVisible(false);\n      }, 2000);\n    }\n  }, [isSnackbarVisible]);\n  return (\n    <View style={styles.popUpContainer}>\n      <TouchableOpacity onPress={onClose} style={styles.popUpHeaderContainer}>\n        <View style={styles.popUpHeaderIcon}>\n          <Ionicons name=\"ios-arrow-back\" size={25} color=\"#000\" />\n        </View>\n        <Text style={styles.popUpHeaderBackText}>Back</Text>\n      </TouchableOpacity>\n      {type === 'description' && (\n        <>\n          <Text style={styles.descriptionTitle}>The Story</Text>\n          <Text style={styles.descriptionText}>\n            {content && content.description}\n          </Text>\n        </>\n      )}\n      {type === 'share' && (\n        <View style={styles.shareConatiner}>\n          <Text style={styles.shareTitle}>Share to your friends</Text>\n          <View style={styles.shareMainContainer}>\n            <TouchableOpacity\n              onPress={() => {\n                onShare && onShare();\n                Linking.openURL(\n                  'https://www.facebook.com/sharer/sharer.php?u=' +\n                    encodeURIComponent(\n                      `https://i.eventbinder.app/exhibit/${content.exhibitId}`\n                    )\n                );\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <AntDesign name=\"facebook-square\" size={30} />\n              <Text style={styles.shareMediaText}>Facebook</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                onShare && onShare();\n                Linking.openURL(\n                  'fb-messenger://share?link=' +\n                    encodeURIComponent(\n                      `https://i.eventbinder.app/exhibit/${content.exhibitId}`\n                    )\n                );\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <MaterialCommunityIcons name=\"facebook-messenger\" size={30} />\n              <Text style={styles.shareMediaText}>Messenager</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                onShare && onShare();\n                Linking.openURL(\n                  `whatsapp://send?text=https://i.eventbinder.app/exhibit/${content.exhibitId}}`\n                );\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <MaterialCommunityIcons name=\"whatsapp\" size={30} />\n              <Text style={styles.shareMediaText}>WhatsApp</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                Clipboard.setString(\n                  `https://i.eventbinder.app/exhibit/${content.exhibitId}`\n                );\n                setIsSnackbarVisible(true);\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <MaterialCommunityIcons name=\"content-copy\" size={30} />\n              <Text style={styles.shareMediaText}>Copy Link</Text>\n            </TouchableOpacity>\n          </View>\n        </View>\n      )}\n      {type === 'followUs' && (\n        <View style={styles.shareConatiner}>\n          <Text style={styles.shareTitle}>Follow us on</Text>\n          <View style={styles.shareMainContainer}>\n            <TouchableOpacity\n              onPress={() => {\n                Linking.openURL('fb://profile/363604420498153');\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <AntDesign name=\"facebook-square\" size={30} />\n              <Text style={styles.shareMediaText}>Facebook</Text>\n            </TouchableOpacity>\n            <TouchableOpacity\n              onPress={() => {\n                Linking.openURL(`instagram://user?username=uabbhk`);\n              }}\n              style={styles.shareMediaContainer}\n            >\n              <AntDesign name=\"instagram\" size={30} />\n              <Text style={styles.shareMediaText}>Instagram</Text>\n            </TouchableOpacity>\n          </View>\n        </View>\n      )}\n      <Snackbar\n        style={{\n          width: screenWidth - 40 - 16,\n        }}\n        visible={isSnackbarVisible}\n        onDismiss={() => setIsSnackbarVisible(false)}\n        action={{\n          label: 'OKAY',\n          onPress: () => setIsSnackbarVisible(false)\n        }}\n      >\n        Copied!\n      </Snackbar>\n    </View>\n  );\n};\n\nexport default () => {\n  const navigation = useNavigation();\n  const [exhibit, setExhibit] = useState<Exhibit>();\n  const [event, setEvent] = useState<Event>();\n  const [loading, setLoading] = useState(true);\n  const [galleryIndex, setGalleryIndex] = useState(0);\n  const [popUpType, setPopUpType] = useState();\n  const [popUpContent, setPopUpContent] = useState();\n  useEffect(() => {\n    const eventId = 'ck4az31gu00840791gbane8sm';\n    addVisitedEvent(eventId);\n    addVisitedEventCount(eventId);\n    const { exhibitId } = navigation.state.params;\n    EventApi.get(eventId)\n      .then(ev => {\n        setEvent(ev);\n        setLoading(false);\n      })\n      .catch(err => {\n        console.error(err);\n        setLoading(false);\n      });\n    ExhibitApi.get(exhibitId)\n      .then(exhibit => {\n        setExhibit(exhibit);\n        setLoading(false);\n      })\n      .catch(err => {\n        console.error(err);\n        setLoading(false);\n      });\n  }, []);\n\n  return (\n    <Portal>\n      <RootView loading={loading}>\n        {exhibit && event && !loading && (\n          <View style={styles.container}>\n            <Gallery\n              index={galleryIndex}\n              onIndexChange={index => setGalleryIndex(index)}\n              images={exhibit.images}\n            />\n            <Header title={exhibit.name} subtitle={event.name} />\n            <ExhibitActions\n              exhibitId={navigation.state.params.exhibitId}\n              onActionPress={({ type }) => {\n                console.log(type);\n                setPopUpType(type);\n                if (type === 'description') {\n                  setPopUpContent({\n                    description: exhibit.description\n                  });\n                } else if (type === 'share') {\n                  setPopUpContent({\n                    exhibitId: navigation.state.params.exhibitId\n                  });\n                }\n              }}\n            />\n            <Actions\n              onActionPress={({ type }) => {\n                setPopUpType(type);\n                if (type === 'description') {\n                  setPopUpContent({\n                    description: exhibit.description\n                  });\n                } else if (type === 'share') {\n                  setPopUpContent({\n                    exhibitId: navigation.state.params.exhibitId\n                  });\n                }\n              }}\n            />\n            <Footer />\n            <Modal\n              contentContainerStyle={styles.descriptionModal}\n              visible={popUpType}\n              onDismiss={() => setPopUpType(null)}\n              dismissable\n            >\n              <PopUp\n                type={popUpType}\n                content={popUpContent}\n                onClose={() => {\n                  setPopUpType(null);\n                  setPopUpContent(null);\n                }}\n                onShare={() => {\n                  ExhibitApi.share(navigation.state.params.exhibitId);\n                  // getAllKeys();\n                }}\n              />\n            </Modal>\n          </View>\n        )}\n      </RootView>\n    </Portal>\n  );\n};\n\nconst styles = StyleSheet.create({\n  container: {\n    height: screenHeight,\n    backgroundColor: '#fff',\n    alignItems: 'center'\n  },\n  header: {\n    height: screenHeight * 0.15,\n    width: screenWidth * 0.9\n  },\n  headerTitle: {\n    fontSize: screenHeight * 0.03,\n    fontWeight: 'bold'\n  },\n  headerSubtitle: {\n    fontSize: screenHeight * 0.02,\n    alignSelf: 'flex-end',\n    textAlign: 'right'\n  },\n  footer: {\n    height: screenHeight * 0.1 - 20,\n    width: screenWidth * 0.9,\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'space-between'\n    // marginTop: 'auto'\n  },\n  footerTextContainer: {\n    flex: 1,\n    flexDirection: 'row',\n    alignItems: 'center'\n  },\n  footerText: {\n    fontSize: 12,\n    marginRight: 2\n  },\n  actionContainer: {\n    flexDirection: 'row',\n    justifyContent: 'space-evenly',\n    width: screenWidth * 0.9,\n    height: (screenHeight * 0.25) / 2 - 5\n  },\n  action: {\n    flex: 1,\n    alignItems: 'center',\n    justifyContent: 'center',\n    borderColor: '#000000',\n    borderWidth: 2,\n    borderRadius: 10\n  },\n  actionText: {\n    fontSize: screenHeight * 0.025\n  },\n  descriptionModal: {\n    flex: 1,\n    alignItems: 'center',\n    justifyContent: 'center'\n  },\n  popUpContainer: {\n    width: screenWidth,\n    height: screenHeight,\n    backgroundColor: '#fff',\n    padding: 20\n  },\n  popUpHeaderContainer: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginBottom: 20\n  },\n  popUpHeaderIcon: {\n    marginRight: 10\n  },\n  popUpHeaderBackText: {\n    fontSize: 20\n  },\n  descriptionTitle: {\n    fontSize: 30,\n    marginBottom: 20\n  },\n  descriptionText: {\n    fontSize: 20,\n    lineHeight: 26,\n    overflowY: 'scroll',\n    overflowX: 'hidden'\n  },\n  shareConatiner: {\n    flex: 1,\n    alignItems: 'center'\n  },\n  shareTitle: {\n    fontSize: 30,\n    fontWeight: 'bold',\n    marginBottom: 20\n  },\n  shareMainContainer: {\n    flex: 1,\n    alignItems: 'center'\n  },\n  shareMediaContainer: {\n    width: screenWidth * 0.75,\n    height: screenWidth * 0.75 * 0.2,\n    borderRadius: 10,\n    borderWidth: 2,\n    borderColor: '#000',\n    paddingHorizontal: 30,\n    paddingVertical: 10,\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginTop: 20\n  },\n  shareMediaText: {\n    marginLeft: 10\n  }\n});\n","import React from 'react';\nimport 'react-native-gesture-handler';\nimport { Platform } from 'react-native';\nimport { Provider as PaperProvider } from 'react-native-paper';\nimport { createSwitchNavigator, createAppContainer } from 'react-navigation';\nimport { createStackNavigator } from 'react-navigation-stack';\nimport { createBrowserApp } from '@react-navigation/web';\n\nimport Fallback from './screens/Fallback';\nimport Event from './screens/Event';\nimport Exhibit from './screens/Exhibit';\n\nimport { Linking } from 'expo';\n\nconst routes = {\n  Fallback: {\n    screen: Fallback,\n    path: ''\n  },\n  Event: {\n    screen: Event,\n    path: 'event/:eventId'\n  },\n  Exhibit: {\n    screen: Exhibit,\n    path: 'exhibit/:exhibitId'\n  }\n};\n\nconst Navigator =\n  Platform.OS === 'web'\n    ? createSwitchNavigator(routes)\n    : createStackNavigator(routes);\nconst NavigationWrapper =\n  Platform.OS === 'web'\n    ? createBrowserApp(Navigator)\n    : createAppContainer(Navigator);\n\nconst prefix = Linking.makeUrl('/');\n\nexport default function App() {\n  return (\n    <PaperProvider>\n      <NavigationWrapper uriPrefix={prefix} />\n    </PaperProvider>\n  );\n}\n","/* eslint-env browser */\n\nif ('serviceWorker' in navigator) {\n  window.addEventListener('load', function() {\n    navigator.serviceWorker\n      .register('/expo-service-worker.js', { scope: '/' })\n      .then(function(info) {\n        // console.info('Registered service-worker', info);\n      })\n      .catch(function(error) {\n        console.info('Failed to register service-worker', error);\n      });\n  });\n}\n","module.exports = __webpack_public_path__ + \"static/media/EB-logo-word-only.c7c4854c.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsSAAALEgHS3X78AAACOklEQVRo3u3YO2gVQRTG8V+CYlQSn1EkVj7SKbaCioUgaDQY1MLaxjqNrSholVJIBEEsfEAKxRfaWCgqaCEJiKIIYiESCQbFNPHabLEMm90key+ZlT0wsOfMDvf8v50zM3eo7f+1h2hgEs9xDlurknx7kngjaDMYRlfsADsykk+3t9gYM8CZAoAGHqMtVoDrQbJj+JoBcSRWgE9BohdxAu+D+O1mFFuzbRO2pPwGxjGNa8G7u2IE2B/4XzCV+jJp64kN4AAuB7Gx1PPSoG8mJoDTeIDVQXw89dwd9H2PAaAtKdIrGQo/wquUvznof1f2x5eUHL8MV3EqiDdwEzeC+M7Af7GYAN24g91BfBpDeJkxJgR4slgA23AfvUF8EufxMWNMLzak/B9404oaCHfL0NbjaUbynzE4S/KwN/DXJatQ0ZFjCqPY3qwiHspYv1/jLCZyvvS+BYrciYFkSvY0AyA8v9zDBfzJGbMHa0rOlrWJeKVrIFznR+Ywpq9Je83BrDU8qwby3gn7j7b4YHg3L592FbcaoAYoPqrk1V/0AIcC/0OVADqSDSx3yY4ZoA+rUv5ElQA60B/ELuFXVQD6M9QfrsoqtCJjd89UP1aA/uQEWqh+jAAr56N+jADHEog5qR8bQGfGf41c9WMDGMDy+agfE0BXxrGhUP2YAI4vRP3ZrOhW4uccbhLKtsEyahQBjLY4+W/JZtYygN7kE7ci+b84WXY+FgFI7mduNXE6/cYzHFZbbbXVVin7B7nE8EImSVC4AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsSAAALEgHS3X78AAACKklEQVRo3u2ZPUtcQRSGH6PFrh+RBBWMVQqrgKQM6ZKg/gLFWlSwEwkiqUQwElKIVbSxTLTRSiFpxUIwkEawSrAQorK4uy6KmLg2I1wO595ddcY7F+4LU+yew8z7zDLDmbOQcNU6nLseKANXSd2cdQNQBLaBWaAzKeZrgJwBCI4rYBFo8h3ghWI+OLaBRp8BhioAlIE1nwGWhNl14JcC0e0rwJ4w+sbceKvi+28+mm8xh/XG5CXQYGJdAmDfR4A+YXInEMuK2IVv5nuBgjA5H4i3i1jRJ/NjwD/loA4Ecl6J2B8fjNcBX0KuyjlRroyI+I+4zTcD3xXjl8Cokr8s8j7Gaf45sKuYzwM9IYXjkch9F5f514qZMvDblBGa3orcc3MrWZc0JfUSKCl5W0BbxLwLVZQX2igCK0CHLYANJecrkImYMxtSnd5mHFcLUQlA7v6UKZ+jNHhP8zdj2QZApbimn5YA8trDQzMYlVOuYg7bZzJ0vUdJf9SnAClAtDJJBxgWn//GdY3eRVngQKz1OUkAY2KdUoVSxSuAjLL7n2zVQg8BMH7X3fcBoN4c1uAaszbLadcA78X8p0BrUgAagEMx/4ztB41LgIn77n6cANruT7t4UroCmFRq/6dJAWhUmgRTrh71LgA+KLv/pNqu2m1VBB5HvJhsaA44cfULrFh634aNnOn4OesLdZgWhwvz/4F+140tgGemxVGwZPwM2MTjv5xSpUqVStc11ATRypUK8uoAAAAASUVORK5CYII=\""],"sourceRoot":""}