{"version":3,"file":"static/js/main.5e5cc5e4.js","mappings":"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","sources":["constants/appColors.ts","constants/appStyles.ts","components/CategoryDtoItem.tsx","context/app-context.tsx","screens/CategoriesScreen.tsx","components/ItemDtoItem.tsx","screens/FavoritesScreen.tsx","components/GroupDtoItem.tsx","screens/GroupsScreen.tsx","screens/ItemsScreen.tsx","screens/InfoScreen.tsx","App.tsx","webpack/bootstrap","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/define property getters","webpack/runtime/global","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/publicPath","webpack/runtime/jsonp chunk loading","webpack/startup"],"sourcesContent":["\r\nconst appColors = {\r\n //accent: '#196eed',\r\n accent: 'orange',\r\n textColor: 'black',\r\n focusTabTextColor: 'black',\r\n //notFocusTabTextColor: '#bcbcbc',\r\n notFocusTabTextColor: 'lightgrey',\r\n};\r\n\r\nexport default appColors;\r\n","import { StyleSheet } from \"react-native\";\r\nimport appColors from \"./appColors\";\r\n\r\nconst appStyles = StyleSheet.create({\r\n mainContainer: {\r\n backgroundColor: appColors.accent,\r\n flex: 1,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n list: {\r\n width: '100%',\r\n },\r\n listContainer: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n margin:10,\r\n padding: 10,\r\n //elevation: 2,\r\n shadowColor: appColors.textColor,\r\n shadowOffset: { width: 3, height: 3 },\r\n shadowOpacity: 0.5,\r\n borderBottomWidth: 1,\r\n },\r\n listContainerButtons: {\r\n flex: 1,\r\n },\r\n listImage: {\r\n borderWidth: 2,\r\n borderColor: appColors.textColor,\r\n borderRadius: 50,\r\n height: 100,\r\n width: 100,\r\n },\r\n listName: {\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n marginLeft: 8,\r\n },\r\n listDescription: {\r\n fontSize: 14,\r\n marginLeft: 8,\r\n },\r\n listDuration: {\r\n fontSize: 14,\r\n fontWeight: \"bold\",\r\n marginLeft: 8,\r\n },\r\n listButtons: {\r\n padding: 5,\r\n alignSelf: \"flex-end\",\r\n },\r\n noItemsText: {\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n color: appColors.textColor,\r\n alignSelf: 'center',\r\n },\r\n});\r\n\r\nexport default appStyles;\r\n","import { Text, View, Image } from \"react-native\";\r\nimport { CategoryDto } from \"../models/CategoryDto\";\r\nimport appStyles from \"../constants/appStyles\";\r\n\r\nexport type Props = {\r\n category: CategoryDto;\r\n};\r\n\r\nconst CategoryDtoItem = ({ category }) => {\r\n return (\r\n \r\n \r\n \r\n {category.name}\r\n {category.description}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CategoryDtoItem;\r\n","import { createContext, useEffect, useState } from \"react\";\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport { ActivityIndicator, View } from \"react-native\";\r\n\r\nexport const AppContext = createContext({\r\n errorLoadCategories: false,\r\n loadingCategories: false,\r\n favoritesIds: [],\r\n categories: [],\r\n addFavorite: (id: string) => {},\r\n removeFavorite: (id: string) => {},\r\n});\r\n\r\nconst storageKeyFavoritesIds = \"storageKeyFavoritesIds\";\r\n\r\nfunction AppContextProvider({ children }) {\r\n const [errorLoadCategories, setErrorLoadCategories] = useState(false);\r\n const [loadingCategories, setLoadingCategories] = useState(true);\r\n const [categories, setCategories] = useState([]);\r\n const [favoritesIds, setFavoritesIds] = useState([]);\r\n\r\n useEffect(() => {\r\n async function fetchCategories() {\r\n setLoadingCategories(true);\r\n try {\r\n const response = await fetch(\"https://www.vocivip.it/api\", {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Basic ZjEzZWM3ODYtNTk5OC00M2EwLTkzN2ItOWE0Mjk1YjVkZGQ2OjQ3MWM1NjQ0LTFiMjAtNDFmNy1iZTk1LWQ4MGUyN2M4YzYwMw==\",\r\n },\r\n });\r\n\r\n if (response.ok) {\r\n const result = await response.json();\r\n setCategories(result);\r\n } else {\r\n throw new Error(\r\n `Network response was not ok (Status code: ${response.status})`\r\n );\r\n }\r\n } catch (error) {\r\n setErrorLoadCategories(true);\r\n setCategories([]);\r\n } finally {\r\n setLoadingCategories(false);\r\n }\r\n }\r\n\r\n fetchCategories();\r\n }, []);\r\n\r\n useEffect(() => {\r\n async function retrieveFavoritesIds() {\r\n try {\r\n const jsonValue = await AsyncStorage.getItem(storageKeyFavoritesIds);\r\n const favoritesIds = jsonValue ? JSON.parse(jsonValue) : [];\r\n setFavoritesIds(favoritesIds);\r\n } catch (e) {\r\n setFavoritesIds([]);\r\n }\r\n }\r\n\r\n retrieveFavoritesIds();\r\n }, []);\r\n\r\n useEffect(() => {\r\n async function storeFavoritesIds() {\r\n try {\r\n const jsonValue = JSON.stringify(favoritesIds);\r\n await AsyncStorage.setItem(storageKeyFavoritesIds, jsonValue);\r\n } catch (e) {\r\n // Handle error if needed\r\n }\r\n }\r\n\r\n storeFavoritesIds();\r\n }, [favoritesIds]);\r\n\r\n const addFavorite = (id: string) =>\r\n setFavoritesIds((currentFavoritesIds) => [...currentFavoritesIds, id]);\r\n\r\n const removeFavorite = (id: string) =>\r\n setFavoritesIds((currentFavoritesIds) =>\r\n currentFavoritesIds.filter((ids) => ids !== id)\r\n );\r\n\r\n const value = {\r\n errorLoadCategories,\r\n loadingCategories,\r\n favoritesIds,\r\n categories,\r\n addFavorite,\r\n removeFavorite,\r\n };\r\n\r\n return {children};\r\n}\r\n\r\nexport default AppContextProvider;\r\n","import { Text, FlatList, TouchableOpacity, View, ActivityIndicator } from \"react-native\";\r\nimport { useNavigation } from \"@react-navigation/native\";\r\n\r\nimport CategoryDtoItem from \"../components/CategoryDtoItem\";\r\nimport { CategoryDto } from \"../models/CategoryDto\";\r\nimport { useContext } from \"react\";\r\nimport { AppContext } from \"../context/app-context\";\r\nimport appColors from \"../constants/appColors\";\r\nimport appStyles from \"../constants/appStyles\";\r\n\r\nconst CategoriesScreen = () => {\r\n const navigation = useNavigation();\r\n const appContext = useContext(AppContext);\r\n\r\n const handleItemPress = (item: CategoryDto) => {\r\n navigation.navigate<{ categoryId: string }>(\"Groups\", {\r\n categoryId: item.id,\r\n });\r\n };\r\n\r\n const categories = appContext.categories;\r\n\r\n if (appContext.loadingCategories) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n if (appContext.errorLoadCategories) {\r\n return (\r\n \r\n \r\n Errore durante il caricamento dei dati 😭\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n item.id}\r\n renderItem={(itemData) => {\r\n return (\r\n handleItemPress(itemData.item)}>\r\n \r\n \r\n );\r\n }}\r\n >\r\n \r\n );\r\n};\r\n\r\nexport default CategoriesScreen;\r\n","import { useEffect, useState } from \"react\";\r\nimport { Text, View, Image, Alert, ActivityIndicator, Platform } from \"react-native\";\r\nimport { AntDesign } from \"@expo/vector-icons\";\r\nimport { ItemDto } from \"../models/ItemDto\";\r\nimport appStyles from \"../constants/appStyles\";\r\n\r\nimport { Audio } from \"expo-av\";\r\nimport * as Sharing from \"expo-sharing\";\r\nimport * as FileSystem from \"expo-file-system\";\r\nimport appColors from \"../constants/appColors\";\r\n\r\nexport type Props = {\r\n showImage: boolean;\r\n item: ItemDto;\r\n isFavorite: boolean;\r\n addFavorite: (id: string) => {};\r\n removeFavorite: (id: string) => {};\r\n};\r\n\r\nconst ItemDtoItem = ({\r\n showImage,\r\n item,\r\n isFavorite,\r\n addFavorite,\r\n removeFavorite,\r\n}) => {\r\n const [sound, setSound] = useState(null);\r\n const [isPlaying, setIsPlaying] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n return sound\r\n ? () => {\r\n sound.unloadAsync();\r\n }\r\n : undefined;\r\n }, [sound]);\r\n\r\n const UpdateStatus = async (data) => {\r\n try {\r\n setIsPlaying(data.isPlaying);\r\n } catch (error) {}\r\n };\r\n\r\n const handlePlayAudio = async (item: ItemDto) => {\r\n try {\r\n await Audio.setAudioModeAsync({\r\n playsInSilentModeIOS: true,\r\n });\r\n\r\n setIsLoading(true);\r\n const { sound } = await Audio.Sound.createAsync({ uri: item.audioUrl });\r\n setSound(sound);\r\n setIsLoading(false);\r\n\r\n sound.setOnPlaybackStatusUpdate(UpdateStatus);\r\n\r\n setIsPlaying(true);\r\n await sound.playAsync();\r\n } catch (error) {\r\n setIsLoading(false);\r\n setIsPlaying(true);\r\n Alert.alert(\"Errore\", \"Impossibile riprodurre l'audio 😭\");\r\n }\r\n };\r\n\r\n const handleStopAudio = async (item: ItemDto) => {\r\n try {\r\n sound.stopAsync();\r\n setIsPlaying(false);\r\n } catch (error) {\r\n Alert.alert(\"Errore\", \"Impossibile riprodurre l'audio 😭\");\r\n }\r\n };\r\n\r\n const handleShareAudio = async (item: ItemDto) => {\r\n try {\r\n setIsLoading(true);\r\n \r\n if (Platform.OS === \"web\") {\r\n // Web: Use tag to trigger download\r\n const response = await fetch(item.audioUrl);\r\n const blob = await response.blob();\r\n const url = URL.createObjectURL(blob);\r\n \r\n const a = document.createElement(\"a\");\r\n a.href = url;\r\n a.style.display = \"none\";\r\n \r\n a.download = \"VociVip.mp3\";\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n \r\n setIsLoading(false);\r\n } else {\r\n // Mobile (iOS/Android): Use expo-file-system & expo-sharing\r\n const { uri } = await FileSystem.downloadAsync(\r\n item.audioUrl,\r\n `${FileSystem.documentDirectory}VociVip.mp3`\r\n );\r\n \r\n setIsLoading(false);\r\n \r\n await Sharing.shareAsync(uri, {\r\n dialogTitle: `Condividi '${item.name}'`,\r\n mimeType: \"audio/mpeg\",\r\n UTI: \"public.mp3\",\r\n });\r\n }\r\n } catch (error) {\r\n setIsLoading(false);\r\n Alert.alert(\"Errore\", \"Impossibile condividere l'audio 😭\");\r\n }\r\n };\r\n\r\n const handleSetAsFavorite = (setAsFavorite: boolean) => {\r\n if (setAsFavorite) {\r\n addFavorite(item.id);\r\n } else {\r\n removeFavorite(item.id);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {showImage && (\r\n \r\n )}\r\n \r\n {item.name}\r\n {item.description}\r\n {item.duration}\r\n \r\n\r\n \r\n {isLoading && }\r\n\r\n {!isLoading && !isPlaying && (\r\n handlePlayAudio(item)}\r\n />\r\n )}\r\n {!isLoading && isPlaying && (\r\n handleStopAudio(item)}\r\n />\r\n )}\r\n\r\n {!isLoading && isFavorite && (\r\n handleSetAsFavorite(false)}\r\n />\r\n )}\r\n\r\n {!isLoading && !isFavorite && (\r\n handleSetAsFavorite(true)}\r\n />\r\n )}\r\n {!isLoading && (\r\n handleShareAudio(item)}\r\n />\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ItemDtoItem;\r\n","import { View, Text, FlatList } from \"react-native\";\r\nimport { useContext } from \"react\";\r\nimport { AppContext } from \"../context/app-context\";\r\nimport appStyles from \"../constants/appStyles\";\r\nimport ItemDtoItem from \"../components/ItemDtoItem\";\r\nimport { ItemDto } from \"../models/ItemDto\";\r\n\r\n\r\nconst FavoritesScreen = () => {\r\n const favoriteContext = useContext(AppContext);\r\n\r\n if (favoriteContext.errorLoadCategories) {\r\n return (\r\n \r\n \r\n Errore durante il caricamento dei dati 😭\r\n \r\n \r\n );\r\n }\r\n\r\n if (favoriteContext.favoritesIds.length === 0) {\r\n return (\r\n \r\n \r\n Nessun audio aggiunto ai preferiti 💔\r\n \r\n \r\n );\r\n }\r\n\r\n const favoritesItems = favoriteContext.categories\r\n .flatMap((category) => category.groups.flatMap((group) => group.items))\r\n .filter((item) => favoriteContext.favoritesIds.includes(item.id));\r\n\r\n const isFavorite = (item: ItemDto) =>\r\n favoriteContext.favoritesIds.includes(item.id);\r\n\r\n return (\r\n \r\n item.id}\r\n renderItem={(itemData) => {\r\n return (\r\n \r\n );\r\n }}\r\n >\r\n \r\n );\r\n};\r\n\r\n// const styles = StyleSheet.create({\r\n// mainContainer: {\r\n// flex: 1,\r\n// alignItems: \"center\",\r\n// justifyContent: \"center\",\r\n// },\r\n// });\r\n\r\nexport default FavoritesScreen;\r\n","import { Text, View, Image } from \"react-native\";\r\nimport { GroupDto } from \"../models/GroupDto\";\r\nimport appStyles from \"../constants/appStyles\";\r\n\r\nexport type Props = {\r\n group: GroupDto;\r\n};\r\n\r\nconst GroupDtoItem = ({ group }) => {\r\n return (\r\n \r\n \r\n \r\n {group.name}\r\n {group.description}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default GroupDtoItem;\r\n\r\n","import { View, FlatList, TouchableOpacity } from \"react-native\";\r\nimport { useNavigation, useRoute } from \"@react-navigation/native\";\r\nimport GroupItem from \"../components/GroupDtoItem\";\r\nimport { GroupDto } from \"../models/GroupDto\";\r\nimport { useEffect, useContext } from \"react\";\r\nimport { AppContext } from \"../context/app-context\";\r\nimport appStyles from \"../constants/appStyles\";\r\n\r\nexport type Props = {};\r\n\r\nconst GroupsScreen = ({}) => {\r\n const navigation = useNavigation();\r\n const route = useRoute();\r\n const favoriteContext = useContext(AppContext);\r\n\r\n const category = favoriteContext.categories.find(\r\n (c) => c.id === route.params[\"categoryId\"]\r\n );\r\n\r\n useEffect(() => {\r\n navigation.setOptions({ title: category.name });\r\n }, [category]);\r\n\r\n const handleItemPress = (item: GroupDto) => {\r\n navigation.navigate(\"Items\", {\r\n categoryId: route.params[\"categoryId\"],\r\n groupId: item.id,\r\n });\r\n };\r\n\r\n return (\r\n \r\n item.id}\r\n renderItem={(itemData) => {\r\n return (\r\n handleItemPress(itemData.item)}>\r\n \r\n \r\n );\r\n }}\r\n >\r\n \r\n );\r\n};\r\n\r\n// const styles = StyleSheet.create({\r\n// mainContainer: {\r\n// backgroundColor: appColors.accent,\r\n\r\n// },\r\n// });\r\n\r\nexport default GroupsScreen;\r\n","import { View, FlatList, Button, Alert, Platform } from \"react-native\";\r\nimport { useNavigation, useRoute } from \"@react-navigation/native\";\r\nimport { ItemDto } from \"../models/ItemDto\";\r\nimport ItemDtoItem from \"../components/ItemDtoItem\";\r\nimport { useContext, useEffect } from \"react\";\r\nimport GroupDtoItem from \"../components/GroupDtoItem\";\r\nimport { AppContext } from \"../context/app-context\";\r\nimport appStyles from \"../constants/appStyles\";\r\nimport appColors from \"../constants/appColors\";\r\n\r\nexport type Props = {};\r\n\r\nconst ItemsScreen = ({}) => {\r\n const favoriteContext = useContext(AppContext);\r\n const navigation = useNavigation();\r\n const route = useRoute();\r\n\r\n const group = favoriteContext.categories\r\n .find((c) => c.id === route.params[\"categoryId\"])\r\n .groups.find((g) => g.id === route.params[\"groupId\"]);\r\n\r\n useEffect(() => {\r\n navigation.setOptions({\r\n title: group.name,\r\n headerRight: () => (\r\n {\r\n const message = group.longDescription.replaceAll(\"
\", \"\\n\");\r\n if (Platform.OS === \"web\") {\r\n window.alert(message); // Use browser alert on web\r\n } else {\r\n Alert.alert(group.name, message);\r\n }\r\n }}\r\n title=\"Info\"\r\n color={appColors.textColor}\r\n />\r\n ),\r\n });\r\n }, [group]);\r\n\r\n const isFavorite = (item: ItemDto) =>\r\n favoriteContext.favoritesIds.includes(item.id);\r\n\r\n return (\r\n \r\n \r\n item.id}\r\n renderItem={(itemData) => {\r\n return (\r\n \r\n );\r\n }}\r\n >\r\n \r\n );\r\n};\r\n\r\nexport default ItemsScreen;\r\n","import { StyleSheet, View, Text, Image, Linking, Alert, Button, Platform } from \"react-native\";\r\nimport appStyles from \"../constants/appStyles\";\r\nimport appColors from \"../constants/appColors\";\r\nimport { useNavigation } from \"@react-navigation/native\";\r\n\r\nexport type Props = {};\r\n\r\n \r\nconst InfoScreen = () => {\r\n const navigation = useNavigation();\r\n\r\n navigation.setOptions({\r\n headerRight: () => (\r\n {\r\n const message = (\r\n `L'applicazione è stata concepita con l'obiettivo di fornire un'esperienza orientata all'intrattenimento e alla condivisione di citazioni.\r\n\r\n Gli audio e le immagini appartengono ai legittimi proprietari e sono liberamente fruibili su Internet.\r\n\r\n VociVip si avvale del \"Diritto di citazione\" che prevede la possibilità di citare o riprodurre spezzoni audio tratti da opere lecitamente\r\n accessibili al pubblico senza che questo possa ledere in qualsiasi modo il diritto d'autore delle opere citate.\r\n\r\n VociVip si assume comunque ogni responsabilità per eventuali reclami relativi alla violazione di diritti di terzi e si impegna ad intervenire\r\n immediatamente nel caso in cui venga dimostrato che i contenuti non rispettano le norme che regolano la proprietà intellettuale.`\r\n );\r\n if (Platform.OS === \"web\") {\r\n window.alert(message); // Use browser alert on web\r\n } else {\r\n Alert.alert(\"Disclaimer\", message);\r\n }\r\n }\r\n }\r\n title=\"Disclaimer\"\r\n color={appColors.textColor}\r\n />\r\n ),\r\n });\r\n\r\n\r\n return (\r\n \r\n \r\n VociVip\r\n\r\n \r\n Linking.openURL(\"mailto:info@vocivip.it?subject=VociVip\")\r\n }\r\n >\r\n info@vocivip.it\r\n \r\n\r\n \r\n ©{new Date().getFullYear()} Martino Bordin. All rights reserved.\r\n \r\n \r\n );\r\n};\r\n\r\nconst styles = StyleSheet.create({\r\n titleLogo: {\r\n margin: 20,\r\n width: 100,\r\n height: 100,\r\n alignSelf: \"center\",\r\n },\r\n titleText: {\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n alignSelf: \"center\",\r\n margin: 8,\r\n },\r\n infoText: {\r\n alignSelf: \"center\",\r\n margin: 8,\r\n }\r\n});\r\n\r\nexport default InfoScreen;\r\n","import { StatusBar } from \"expo-status-bar\";\r\n\r\nimport { NavigationContainer } from \"@react-navigation/native\";\r\n\r\nimport CategoriesScreen from \"./screens/CategoriesScreen\";\r\nimport FavoritesScreen from \"./screens/FavoritesScreen\";\r\n\r\nimport GroupsScreen from \"./screens/GroupsScreen\";\r\nimport ItemsScreen from \"./screens/ItemsScreen\";\r\n\r\nimport { createStackNavigator } from \"@react-navigation/stack\";\r\nimport { createBottomTabNavigator } from \"@react-navigation/bottom-tabs\";\r\n\r\nimport appColors from \"./constants/appColors\";\r\nimport InfoScreen from \"./screens/InfoScreen\";\r\n\r\nimport { AntDesign } from \"@expo/vector-icons\";\r\nimport AppContextProvider from \"./context/app-context\";\r\n\r\nconst Tab = createBottomTabNavigator();\r\nconst Stack = createStackNavigator();\r\n\r\nfunction Home() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default function App() {\r\n return (\r\n \r\n \r\n \r\n \r\n (\r\n \r\n ),\r\n }}\r\n >\r\n\r\n (\r\n \r\n ),\r\n }}\r\n component={FavoritesScreen}\r\n >\r\n\r\n (\r\n \r\n ),\r\n }}\r\n component={InfoScreen}\r\n >\r\n \r\n \r\n \r\n );\r\n}\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb\"] = self[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [408], () => (__webpack_require__(5036)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["accent","textColor","focusTabTextColor","notFocusTabTextColor","StyleSheet","create","mainContainer","backgroundColor","appColors","flex","alignItems","justifyContent","list","width","listContainer","flexDirection","margin","padding","shadowColor","shadowOffset","height","shadowOpacity","borderBottomWidth","listContainerButtons","listImage","borderWidth","borderColor","borderRadius","listName","fontSize","fontWeight","marginLeft","listDescription","listDuration","listButtons","alignSelf","noItemsText","color","_ref","category","_jsxs","View","style","appStyles","children","_jsx","Image","source","uri","imageUrl","Text","name","description","AppContext","createContext","errorLoadCategories","loadingCategories","favoritesIds","categories","addFavorite","id","removeFavorite","storageKeyFavoritesIds","_useState","useState","_useState2","_slicedToArray","setErrorLoadCategories","_useState3","_useState4","setLoadingCategories","_useState5","_useState6","setCategories","_useState7","_useState8","setFavoritesIds","useEffect","_fetchCategories","_asyncToGenerator","response","fetch","method","headers","Authorization","ok","Error","status","result","json","error","apply","arguments","fetchCategories","_retrieveFavoritesIds","jsonValue","AsyncStorage","getItem","JSON","parse","e","retrieveFavoritesIds","_storeFavoritesIds","stringify","setItem","storeFavoritesIds","value","currentFavoritesIds","concat","_toConsumableArray","filter","ids","Provider","navigation","useNavigation","appContext","useContext","ActivityIndicator","size","FlatList","data","keyExtractor","item","renderItem","itemData","TouchableOpacity","onPress","navigate","categoryId","CategoryDtoItem","showImage","isFavorite","sound","setSound","isPlaying","setIsPlaying","isLoading","setIsLoading","unloadAsync","undefined","UpdateStatus","_ref2","_x","handlePlayAudio","_ref3","Audio","setAudioModeAsync","playsInSilentModeIOS","createAsync","audioUrl","setOnPlaybackStatusUpdate","playAsync","Alert","alert","_x2","handleStopAudio","_ref4","stopAsync","_x3","handleShareAudio","_ref5","Platform","OS","blob","url","URL","createObjectURL","a","document","createElement","href","display","download","body","appendChild","click","removeChild","revokeObjectURL","FileSystem","downloadAsync","documentDirectory","Sharing","shareAsync","dialogTitle","mimeType","UTI","_x4","handleSetAsFavorite","setAsFavorite","duration","AntDesign","favoriteContext","length","favoritesItems","flatMap","groups","group","items","includes","ItemDtoItem","_objectDestructuringEmpty","route","useRoute","find","c","params","setOptions","title","groupId","GroupItem","g","headerRight","Button","message","longDescription","replaceAll","window","GroupDtoItem","styles","titleLogo","titleText","infoText","require","Linking","openURL","Date","getFullYear","Tab","createBottomTabNavigator","Stack","createStackNavigator","Home","Navigator","screenOptions","headerStyle","headerTintColor","headerTitleStyle","headerShadowVisible","Screen","options","component","CategoriesScreen","GroupsScreen","ItemsScreen","App","AppContextProvider","StatusBar","NavigationContainer","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarStyle","borderTopWidth","headerShown","tabBarIcon","focused","FavoritesScreen","InfoScreen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","globalThis","this","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""}