{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { EventEmitter } from 'expo-modules-core';\nimport React, { useEffect, useState, useRef, useMemo } from 'react';\nimport Animated from \"react-native-web/dist/exports/Animated\";\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport Text from \"react-native-web/dist/exports/Text\";\nimport Platform from \"react-native-web/dist/exports/Platform\";\nimport View from \"react-native-web/dist/exports/View\";\nimport DevLoadingViewNativeModule from \"./DevLoadingViewNativeModule\";\nimport { getInitialSafeArea } from \"./getInitialSafeArea\";\nexport default function DevLoadingView() {\n  var _useState = useState('Refreshing...'),\n    _useState2 = _slicedToArray(_useState, 2),\n    message = _useState2[0],\n    setMessage = _useState2[1];\n  var _useState3 = useState(false),\n    _useState4 = _slicedToArray(_useState3, 2),\n    isDevLoading = _useState4[0],\n    setIsDevLoading = _useState4[1];\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    isAnimating = _useState6[0],\n    setIsAnimating = _useState6[1];\n  var translateY = useRef(new Animated.Value(0)).current;\n  var emitter = useMemo(function () {\n    try {\n      return new EventEmitter(DevLoadingViewNativeModule);\n    } catch (error) {\n      throw new Error('Failed to instantiate native emitter in `DevLoadingView` because the native module `DevLoadingView` is undefined: ' + error.message);\n    }\n  }, []);\n  useEffect(function () {\n    if (!emitter) return;\n    function handleShowMessage(event) {\n      setMessage(event.message);\n      translateY.setValue(0);\n      setIsDevLoading(true);\n    }\n    function handleHide() {\n      setIsAnimating(true);\n      setIsDevLoading(false);\n      Animated.timing(translateY, {\n        toValue: 150,\n        delay: 1000,\n        duration: 350,\n        useNativeDriver: Platform.OS !== 'web'\n      }).start(function (_ref) {\n        var finished = _ref.finished;\n        if (finished) {\n          setIsAnimating(false);\n          translateY.setValue(0);\n        }\n      });\n    }\n    var showMessageSubscription = emitter.addListener('devLoadingView:showMessage', handleShowMessage);\n    var hideSubscription = emitter.addListener('devLoadingView:hide', handleHide);\n    return function cleanup() {\n      showMessageSubscription.remove();\n      hideSubscription.remove();\n    };\n  }, [translateY, emitter]);\n  if (!isDevLoading && !isAnimating) {\n    return null;\n  }\n  return React.createElement(Animated.View, {\n    style: [styles.animatedContainer, {\n      transform: [{\n        translateY: translateY\n      }]\n    }],\n    pointerEvents: \"none\"\n  }, React.createElement(View, {\n    style: styles.banner\n  }, React.createElement(View, {\n    style: styles.contentContainer\n  }, React.createElement(View, {\n    style: {\n      flexDirection: 'row'\n    }\n  }, React.createElement(Text, {\n    style: styles.text\n  }, message)), React.createElement(View, {\n    style: {\n      flex: 1\n    }\n  }, React.createElement(Text, {\n    style: styles.subtitle\n  }, isDevLoading ? 'Using Fast Refresh' : \"Don't see your changes? Reload the app\")))));\n}\nvar styles = StyleSheet.create({\n  animatedContainer: {\n    position: Platform.select({\n      web: 'fixed',\n      default: 'absolute'\n    }),\n    bottom: 0,\n    left: 0,\n    right: 0,\n    zIndex: 42\n  },\n  banner: {\n    flex: 1,\n    overflow: 'visible',\n    backgroundColor: 'rgba(0,0,0,0.75)',\n    paddingBottom: getInitialSafeArea().bottom\n  },\n  contentContainer: {\n    flex: 1,\n    paddingTop: 10,\n    paddingBottom: 5,\n    alignItems: 'center',\n    justifyContent: 'center',\n    textAlign: 'center'\n  },\n  text: {\n    color: '#fff',\n    fontSize: 15\n  },\n  subtitle: {\n    color: 'rgba(255,255,255,0.8)'\n  }\n});","map":{"version":3,"sources":["../../src/environment/DevLoadingView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter } from 'expo-modules-core';\nimport React, { useEffect, useState, useRef, useMemo } from 'react';\nimport { Animated, StyleSheet, Text, Platform, View } from 'react-native';\n\nimport DevLoadingViewNativeModule from './DevLoadingViewNativeModule';\nimport { getInitialSafeArea } from './getInitialSafeArea';\n\nexport default function DevLoadingView() {\n  const [message, setMessage] = useState('Refreshing...');\n  const [isDevLoading, setIsDevLoading] = useState(false);\n  const [isAnimating, setIsAnimating] = useState(false);\n  const translateY = useRef(new Animated.Value(0)).current;\n  const emitter = useMemo<EventEmitter>(() => {\n    try {\n      return new EventEmitter(DevLoadingViewNativeModule);\n    } catch (error) {\n      throw new Error(\n        'Failed to instantiate native emitter in `DevLoadingView` because the native module `DevLoadingView` is undefined: ' +\n          error.message\n      );\n    }\n  }, []);\n\n  useEffect(() => {\n    if (!emitter) return;\n\n    function handleShowMessage(event: { message: string }) {\n      setMessage(event.message);\n      // TODO: if we show the refreshing banner and don't get a hide message\n      // for 3 seconds, warn the user that it's taking a while and suggest\n      // they reload\n\n      translateY.setValue(0);\n      setIsDevLoading(true);\n    }\n\n    function handleHide() {\n      // TODO: if we showed the 'refreshing' banner less than 250ms ago, delay\n      // switching to the 'finished' banner\n\n      setIsAnimating(true);\n      setIsDevLoading(false);\n      Animated.timing(translateY, {\n        toValue: 150,\n        delay: 1000,\n        duration: 350,\n        useNativeDriver: Platform.OS !== 'web',\n      }).start(({ finished }) => {\n        if (finished) {\n          setIsAnimating(false);\n          translateY.setValue(0);\n        }\n      });\n    }\n\n    const showMessageSubscription = emitter.addListener(\n      'devLoadingView:showMessage',\n      handleShowMessage\n    );\n    const hideSubscription = emitter.addListener('devLoadingView:hide', handleHide);\n\n    return function cleanup() {\n      showMessageSubscription.remove();\n      hideSubscription.remove();\n    };\n  }, [translateY, emitter]);\n\n  if (!isDevLoading && !isAnimating) {\n    return null;\n  }\n\n  return (\n    <Animated.View\n      style={[styles.animatedContainer, { transform: [{ translateY }] }]}\n      pointerEvents=\"none\">\n      <View style={styles.banner}>\n        <View style={styles.contentContainer}>\n          <View style={{ flexDirection: 'row' }}>\n            <Text style={styles.text}>{message}</Text>\n          </View>\n\n          <View style={{ flex: 1 }}>\n            <Text style={styles.subtitle}>\n              {isDevLoading ? 'Using Fast Refresh' : \"Don't see your changes? Reload the app\"}\n            </Text>\n          </View>\n        </View>\n      </View>\n    </Animated.View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  animatedContainer: {\n    // @ts-expect-error: fixed is not a valid value for position in Yoga but it is on web.\n    position: Platform.select({\n      web: 'fixed',\n      default: 'absolute',\n    }),\n    bottom: 0,\n    left: 0,\n    right: 0,\n    zIndex: 42, // arbitrary\n  },\n\n  banner: {\n    flex: 1,\n    overflow: 'visible',\n    backgroundColor: 'rgba(0,0,0,0.75)',\n    paddingBottom: getInitialSafeArea().bottom,\n  },\n  contentContainer: {\n    flex: 1,\n    paddingTop: 10,\n    paddingBottom: 5,\n    alignItems: 'center',\n    justifyContent: 'center',\n    textAlign: 'center',\n  },\n  text: {\n    color: '#fff',\n    fontSize: 15,\n  },\n  subtitle: {\n    color: 'rgba(255,255,255,0.8)',\n  },\n});\n"],"sourceRoot":""},"metadata":{},"sourceType":"module"}