{"version":3,"sources":["/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ManaSagaTheme.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/drawer/DrawerContext.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/router/Navigate.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/drawer/SideBar.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/drawer/Drawer.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/screens/StandardScreenWrapper.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/footer/Footer.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/keys/cacheDurationKeys.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/keys/urlKeys.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/keys/cacheKeys.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/tools/testCache.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/tools/setCache.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/tools/getCache.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/ScryFallSymbol/ScryFallSymbol.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/symbology/request_symbology.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/screens/default/default.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/screens/profile/profile.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/genericSvgSymbol/SvgSymbol.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/card/all_cards_cache.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/sets/request_cacheEntireSet.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/screens/mtgSetsManager/setsListItem.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/screens/mtgSetsManager/setsFilterDrawer.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/screens/mtgSetsManager/mtgSetsManager.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ManaSagaRoutes.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ScryFallApi/client/sets/request_sets.ts","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/header/Header.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/components/router/CustomRouter.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/src/ManaSaga.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/App.tsx","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/web-build/register-service-worker.js","/Users/joshuacarver/Documents/localProjectFiles/Personal Projects/ManaSaga_ReactNative/assets/Roboto/Roboto-Regular.ttf"],"names":["DefaultError","ErrorBackground","ErrorText","ErrorBackgroundLight","ErrorTextLight","ErrorBackgroundDark","ErrorTextDark","DefaultSuccess","SuccessBackground","SuccessText","SuccessBackgroundLight","SuccessTextLight","SuccessBackgroundDark","SuccessTextDark","Themes","Default","Dark","PrimaryBackground","PrimaryText","PrimaryBackgroundLight","PrimaryTextLight","PrimaryBackgroundDark","PrimaryTextDark","SecondaryBackground","SecondaryText","SecondaryBackgroundLight","SecondaryTextLight","SecondaryBackgroundDark","SecondaryTextDark","Light","curTheme","getThemeText","TopLevel","alt","getThemeBackground","DrawerContext","React","ref","undefined","setCustomContent","setRef","openDrawer","closeDrawer","DrawerContextProvider","props","values","customContent","_root","open","close","Provider","value","children","navigate","useHistory","onPress","push","to","DrawerCtx","path","goBack","useCustomNavigation","style","styles","SideBar","ManaSagaRoutes","Screens","map","screen","Navigate","key","name","Text","getListItem","StyleSheet","create","flexGrow","backgroundColor","color","Separator","SeparatorText","ctx","onClose","content","Drawer","padder","Container","Footer","Button","full","ButtonText","cacheKey","a","async","AsyncStorage","getItem","cacheValue","cacheObject","JSON","parse","currentDate","Date","now","cacheExpirationDate","expiresDate","cacheLife","obj","removeItem","tempCacheObj","storedDate","data","setItem","stringify","CacheObj","SymbologyData","setSymbologyData","renderedValue","setRenderedValue","svgImage","width","translateSize","size","height","padding","fetchFreshData","fetch","urlKeys","fetchResponse","ok","json","responseJSON","setCache","cacheKeys","cacheDurationKeys","fetchCachedData","getCache","cacheObj","testCache","cacheHealth","console","log","requestSymbology","then","symbolData","forEach","Sym","english","symbol","Platform","OS","src","svg_uri","uri","str","Branding","flexDirection","alignItems","justifyContent","TextFaint","Card","borderColor","CardItem","paddingLeft","CardItemText","overflow","noSpinner","SvgUri","margin","ManaSagaDatabase","manaSaga_countSetCache","set","isOpen","cards","where","equalsIgnoreCase","count","manaSaga_addToCache","newCards","Array","isArray","card","add","version","stores","Dexie","setCards","fetchListOfCards","setPageUrl","fetchResults","cardList","listsOfCards","search_uri","length","has_more","next_page","itm","ManaSagaDB","uniqueKey","id","cachedNumber","setCachedNumber","updateCachedNumber","c","request_cacheEntireSet","groupCollapsed","card_count","set_type","groupEnd","View","setContainer","setContainerCached","setTitleContainer","setTitle","setCardsInCacheRatio","setIconContainer","SvgSymbol","setIcon","icon_svg_uri","display","flex","marginVertical","fontSize","borderRadius","marginRight","borderWidth","ctxDrawer","state","setFilter","setTypeOptions","keyExtractor","i","renderItem","item","Selection","noIndent","OptionText","OptionItem","routes","component","StandardScreenWrapper","ScryFallSymbol","marginBottom","text","category","ToDo","index","txt","background","allSets","setAllSets","setsFilterDrawer","requestSets","sets","s","reduce","unique","includes","sort","alert","charAt","toUpperCase","slice","FlatList","initialNumToRender","maxToRenderPerBatch","filter","ctx_Drawer","Header","Left","Center","HeaderText","Right","comp","exact","CustomRouter","FooBar","App","useState","LibrariesLoaded","setLibrariesLoaded","useEffect","Font","require","ManaSaga","paddingTop","Constants","statusBarHeight","navigator","window","addEventListener","serviceWorker","register","scope","info","catch","error","module","exports"],"mappings":"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","file":"static/js/app.e18656f5.chunk.js","sourcesContent":["// https://material.io/resources/color/\nimport * as React from 'react';\nimport { StyleSheet, StyleSheetProperties } from 'react-native';\n\nexport interface ThemePalette {\n  PrimaryBackground : string;\n  PrimaryText : string;\n  PrimaryBackgroundLight : string;\n  PrimaryTextLight : string;\n  PrimaryBackgroundDark : string;\n  PrimaryTextDark : string;\n  \n  SecondaryBackground : string;\n  SecondaryText : string;\n  SecondaryBackgroundLight : string;\n  SecondaryTextLight : string;\n  SecondaryBackgroundDark : string;\n  SecondaryTextDark : string;\n\n  ErrorBackground : string;\n  ErrorText : string;\n  ErrorBackgroundLight : string;\n  ErrorTextLight : string;\n  ErrorBackgroundDark : string;\n  ErrorTextDark : string;\n  \n  SuccessBackground : string;\n  SuccessText : string;\n  SuccessBackgroundLight : string;\n  SuccessTextLight : string;\n  SuccessBackgroundDark : string;\n  SuccessTextDark : string;\n}\n\nexport interface ManaSagaTheme {\n  Dark : ThemePalette,\n  Light : ThemePalette,\n}\n\nexport interface ManaSagaThemes {\n  Default : ManaSagaTheme;\n  RedMana ?: ManaSagaTheme;\n  WhiteMana ?: ManaSagaTheme;\n  BlueMana ?: ManaSagaTheme;\n  BlackMana ?: ManaSagaTheme;\n  GreenMana ?: ManaSagaTheme;\n}\n\nconst DefaultError = {\n  ErrorBackground : '#d50000',\n  ErrorText : 'white',\n  ErrorBackgroundLight : '#ff5131',\n  ErrorTextLight : 'black',\n  ErrorBackgroundDark : '#9b0000',\n  ErrorTextDark : 'white',\n}\n\nconst DefaultSuccess = {\n  SuccessBackground : '#64dd17',\n  SuccessText : 'black',\n  SuccessBackgroundLight : '#9cff57',\n  SuccessTextLight : 'black',\n  SuccessBackgroundDark : '#1faa00',\n  SuccessTextDark : 'black'\n}\n\nconst Themes: ManaSagaThemes = {\n  Default : {\n    Dark : { // https://material.io/resources/color/#!/?view.left=1&view.right=0&primary.color=212121&secondary.color=64DD17&primary.text.color=ffffff\n      PrimaryBackground : '#212121',\n      PrimaryText : 'white',\n      PrimaryBackgroundLight : '#484848',\n      PrimaryTextLight : 'white',\n      PrimaryBackgroundDark : '#0f0f0f',\n      PrimaryTextDark : 'white',\n      \n      SecondaryBackground : '#aeea00',\n      SecondaryText : 'black',\n      SecondaryBackgroundLight : '#e4ff54',\n      SecondaryTextLight : 'black',\n      SecondaryBackgroundDark : '#79b700',\n      SecondaryTextDark : 'black',\n    \n      ...DefaultError,\n      ...DefaultSuccess,\n    },\n    Light : { // https://material.io/resources/color/#!/?view.left=1&view.right=0&primary.color=90A4AE&secondary.color=42A5F5\n      PrimaryBackground : '#90a4ae',\n      PrimaryText : 'black',\n      PrimaryBackgroundLight : '#c1d5e0',\n      PrimaryTextLight : 'black',\n      PrimaryBackgroundDark : '#62757f',\n      PrimaryTextDark : 'white',\n      \n      SecondaryBackground : '#42a5f5',\n      SecondaryText : 'black',\n      SecondaryBackgroundLight : '#80d6ff',\n      SecondaryTextLight : 'black',\n      SecondaryBackgroundDark : '#0077c2',\n      SecondaryTextDark : 'white',\n    \n      ...DefaultError,\n      ...DefaultSuccess,\n    }\n  }\n}\n\nconst curTheme = Themes.Default.Dark;\n\nexport const getThemeText = (TopLevel: 'Primary' | 'Secondary' | 'Error' | 'Success', alt?: 'Light' | 'Dark'): string => {\n  // const curTheme = Themes.Default.Dark;\n  const key = `${TopLevel}Text${alt ? alt : ''}`;\n  return curTheme[key];\n}\n\nexport const getThemeBackground = (TopLevel: 'Primary' | 'Secondary' | 'Error' | 'Success', alt?: 'Light' | 'Dark'): string => {\n  // const curTheme = Themes.Default.Dark;\n  const key = `${TopLevel}Background${alt ? alt : ''}`;\n  return curTheme[key];\n}\n\n// export const getThemePrimary = (varient ?: 'Light' | 'Dark') => {\n//   // const curTheme = Themes.Default.Dark;\n//   switch(varient) {\n//     case 'Light' : return {\n//       backgroundColor : curTheme.PrimaryBackgroundLight,\n//       color : curTheme.PrimaryTextLight\n//     };\n//     case 'Dark' : return {\n//       backgroundColor : curTheme.PrimaryBackgroundDark,\n//       color : curTheme.PrimaryTextDark\n//     };\n//     default : return {\n//       backgroundColor : curTheme.PrimaryBackground,\n//       color : curTheme.PrimaryText\n//     };\n//   }\n// }\n\n// export const getThemeSecondary = (varient ?: 'Light' | 'Dark') => {\n//   // const curTheme = Themes.Default.Dark;\n//   switch(varient) {\n//     case 'Light' : return {\n//       backgroundColor : curTheme.SecondaryBackgroundLight,\n//       color : curTheme.SecondaryTextLight\n//     };\n//     case 'Dark' : return {\n//       backgroundColor : curTheme.SecondaryBackgroundDark,\n//       color : curTheme.SecondaryTextDark\n//     };\n//     default : return {\n//       backgroundColor : curTheme.SecondaryBackground,\n//       color : curTheme.SecondaryText\n//     };\n//   }\n// }\n\nexport const getThemeError = () => {\n\n}\n\nexport const getThemeSuccess = () => {}\n\nexport default Themes;","import * as React from 'react';\nimport { Drawer } from 'native-base';\n\nexport interface iContext {\n  ref :  any;\n  customContent ?: JSX.Element | JSX.Element[];\n  setCustomContent : (newCustomContent: JSX.Element | JSX.Element[]) => void;\n  setRef : (newRef : any) => void;\n  openDrawer : () => void;\n  closeDrawer : () => void;\n}\n\nexport const DrawerContext = React.createContext<iContext>({ref: undefined, setCustomContent: undefined, setRef: undefined, openDrawer : undefined, closeDrawer : undefined});\n\nexport const DrawerContextProvider: React.FC = (props) => {\n  const [ref, setRef] = React.useState(undefined);\n  const [customContent, setCustomContent] = React.useState<JSX.Element | JSX.Element[] | undefined>(undefined);\n\n  const values: iContext = {\n    ref : ref,\n    setRef: setRef,\n    customContent : customContent,\n    setCustomContent : setCustomContent,\n    openDrawer : ref?._root?.open,\n    closeDrawer : ref?._root?.close\n  }\n\n\n  return <DrawerContext.Provider value={values}>\n    {props.children}\n  </DrawerContext.Provider>\n}","import * as React from 'react';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { useHistory } from 'react-router-dom';\nimport { paths } from './../../ManaSagaRoutes';\n\nexport interface iProps {\n  children ?: JSX.Element[] | JSX.Element;\n  to : paths | string;\n  onPress ?: () => void;\n}\n\nexport default (props: iProps) => {\n  const navigate = useHistory();\n\n  const handle_press = () => {\n    navigate.push(props.to);\n    props.onPress ? props.onPress() : undefined;\n  }\n\n  return <TouchableOpacity onPress={handle_press}>\n    {props.children}\n  </TouchableOpacity>\n}\n\nexport const useCustomNavigation = () => {\n  const navigate = useHistory();\n  \n  const _goTo = (path: paths) => {\n    navigate.push(path);\n  }\n\n  const _goBack = () => {\n    navigate.goBack();\n  }\n  \n  return [_goTo, _goBack];\n\n}","import * as React from 'react';\nimport { Text, View, ListItem, List, Separator } from 'native-base';\nimport { StyleSheet } from 'react-native';\nimport { DrawerContext } from './DrawerContext';\n\nimport Navigate, { useCustomNavigation } from './../router/Navigate';\nimport ManaSagaRoutes from './../../ManaSagaRoutes';\nimport Themes, { getThemeBackground, getThemeText } from './../../ManaSagaTheme';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { Screen } from '../router/CustomRoutesStructure';\n\n\nexport interface iProps {\n}\n\nexport default (props: iProps) => {\n  const DrawerCtx = React.useContext(DrawerContext);\n  const [goTo, GoBack] = useCustomNavigation();\n\n  const getListItem = (screen: Screen) => {\n    return <Navigate key={`Screen_${screen.name}`} to={screen.path} onPress={()=>DrawerCtx?.ref?._root?.close()}>\n      <ListItem>\n        <Text style={styles.Text}>{screen.name}</Text>\n      </ListItem>\n    </Navigate>\n  }\n\n  return <View style={styles.SideBar}>\n    <List>\n      { ManaSagaRoutes.Screens.map(screen => getListItem(screen)) }\n    </List>\n  </View>\n}\n\nconst styles = StyleSheet.create({\n  SideBar : {\n    flexGrow: 1,\n    backgroundColor: getThemeBackground('Primary', 'Dark'),\n    // color: getThemeText('Primary', 'Dark'),\n  },\n  Text : {\n    color: getThemeText('Primary', 'Dark'),\n  },\n  Separator : {\n    backgroundColor: getThemeBackground('Secondary'),\n  },\n  SeparatorText : {\n    color : getThemeText('Secondary'),\n  }\n})","import * as React from 'react';\nimport { Drawer } from 'native-base';\nimport { StyleSheet } from 'react-native';\nimport SideBar from './SideBar';\nimport { DrawerContext } from './DrawerContext';\n\nimport Themes, { getThemeBackground } from './../../ManaSagaTheme';\n\nexport interface iProps {\n  children: any;\n}\n\nexport default (props: iProps) => {\n  const ctx = React.useContext(DrawerContext);\n\n  const closeDrawer = () => {\n    ctx.setCustomContent(undefined);\n    ctx?.ref._root.close();\n  }\n\n  return <>\n    <Drawer ref={(ref)=>ctx.setRef(ref)} onClose={closeDrawer} content={ctx.customContent ? ctx.customContent : <SideBar />}>\n      {props.children}\n    </Drawer>\n  </>\n}\n\nconst styles = StyleSheet.create({\n  Drawer : {\n    backgroundColor: getThemeBackground(\"Primary\", 'Dark')\n  }\n})","import * as React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Content } from 'native-base';\nimport Drawer from '../components/drawer/Drawer';\nimport { getThemeBackground } from '../ManaSagaTheme';\n\nexport interface iProps {\n  children ?: JSX.Element[] | JSX.Element;\n}\n\nexport default (props: iProps) => {\n\n  return <>\n    <Drawer>\n      <Content padder style={styles.Container}>\n          {props.children}\n      </Content>\n    </Drawer>\n  </>\n}\n\nconst styles = StyleSheet.create({\n  Container : {\n    backgroundColor : getThemeBackground('Primary', 'Dark'),\n    // paddingVertical: 25,\n    // borderColor: 'red',\n    // borderWidth: 5,\n    // justifyContent : 'center',\n    // alignItems: 'center'\n  }\n})","import * as React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Footer, FooterTab, Button, Text } from 'native-base';\nimport Themes, { getThemeBackground, getThemeText } from './../../ManaSagaTheme';\n\nexport default () => {\n  return <>\n    <Footer style={styles.Footer}>\n      <FooterTab>\n        <Button style={styles.Button} full>\n          <Text style={styles.ButtonText}>Footer</Text>\n        </Button>\n      </FooterTab>\n    </Footer>\n  </>\n}\n\nconst styles = StyleSheet.create({\n  Footer: {\n    backgroundColor: getThemeBackground('Primary'),\n  },\n  Button: {\n    backgroundColor: getThemeBackground('Secondary'),\n  },\n  ButtonText: {\n    color : getThemeText('Secondary'),\n  }\n});\n","export default {\n    symbology : 1 * 24 * 60 * 60 * 1000, // 1 Day\n    card : 7 * 1 * 24 * 60 * 60 * 60 * 1000, // 7 Days\n    sets : 7 * 1 * 24 * 60 * 60 * 60 * 1000, // 7 Days\n}","export default {\n  symbology : \"https://api.scryfall.com/symbology\",\n  card : \"https://api.scryfall.com/cards\",\n  sets : \"https://api.scryfall.com/sets\",\n}","export default {\n  symbology : \"cache.apiResponse.symbology\",\n  card_Objects : \"cache.apiResponse.cardObjects\",\n  card_ids : \"cache.apiResponse.cardIds\",\n  sets : \"cache.apiResponse.sets\",\n  \n}","import CachedItem from './../../definitions/CachedItem';\nimport { AsyncStorage } from 'react-native';\n\n/**\n * Test Cache returns a numerical value that represents the status of the cache available\n * @returns -1 = Cache is Missing / Not Present\n * @return 0 = Cache is present but stale; you should refetch the data\n * @return 1 = Cache is present and healthy; Network Requests are not needed\n */\nexport default async (cacheKey : string) : Promise<-1 | 0 | 1> => {\n  // let cacheValue = window.localStorage.getItem(cacheKey);\n  let cacheValue = await AsyncStorage.getItem(cacheKey);\n\n  if(!cacheValue) { // Truthy return null, ergo null or undefined\n    return -1;\n  };\n\n  if(cacheValue) {\n    let cacheObject: CachedItem<any> = JSON.parse(cacheValue);\n    let currentDate = Date.now();\n    let cacheExpirationDate = cacheObject.expiresDate;\n\n    if(currentDate > cacheExpirationDate) {\n      return 0;\n    } else {\n      return 1;\n    }\n  }\n\n  // Fail Safe; if we make it here then we don't know what the cache is and should just fetch new data\n return -1;\n}","import CachedItem from './../../definitions/CachedItem';\nimport { AsyncStorage } from 'react-native';\n\nexport default (cacheKey : string, cacheLife : number, obj : object) => {\n  AsyncStorage.removeItem(cacheKey);\n\n  let tempCacheObj: CachedItem<any> = {\n    storedDate : Date.now(),\n    expiresDate : Date.now() + cacheLife,\n    data : obj\n  }\n\n  AsyncStorage.setItem(cacheKey, JSON.stringify(tempCacheObj));\n}","import CachedItem from './../../definitions/CachedItem';\nimport { AsyncStorage } from 'react-native';\n\nexport default async (cacheKey : string) => {\n  let CacheObj = await AsyncStorage.getItem(cacheKey);\n  return CacheObj;\n}","import * as React from 'react';\nimport { View, Platform, StyleSheet } from 'react-native';\nimport { Spinner, Image, Text } from 'native-base';\nimport { SvgUri } from 'react-native-svg';\n\nimport requestSymbology from './../../ScryFallApi/client/symbology/request_symbology';\nimport cardSymbol from './../../ScryFallApi/definitions/symbology/card_symbol';\nimport symbology from './../../ScryFallApi/definitions/symbology/symbology';\n\n// import './ScryFallSymbol.scss';\n\nexport interface iProps {\n  symbol ?: cardSymbol[\"symbol\"];\n  english ?: cardSymbol[\"english\"];\n  size ?: \"sm\" | \"md\" | \"lg\";\n  padding ?: number;\n  customClassNames ?: string;\n}\n\nexport default (props: iProps) => {\n  const [SymbologyData, setSymbologyData] = React.useState<undefined | symbology>();\n  const [renderedValue, setRenderedValue] = React.useState<JSX.Element>(<Spinner />);\n\n  const styles = StyleSheet.create({\n    svgImage : {\n      width: translateSize(props.size),\n      height: translateSize(props.size),\n      padding: props.padding,\n    }\n  })\n\n  // let Class_Size = props.size ? props.size : 'sm';\n\n  React.useEffect(()=>{\n    requestSymbology().then( symbolData => {\n      setSymbologyData(symbolData);\n    });\n  }, []);\n\n  React.useEffect(()=>{\n    SymbologyData?.data.forEach( Sym => {\n      if((Sym.english === props.english) || (Sym.symbol === props.symbol)) {\n        Platform.OS === 'web' ? \n          setRenderedValue(<img style={{width: translateSize(props.size), height: translateSize(props.size), padding: props.padding}} src={Sym.svg_uri} alt={Sym.english} />) : \n          setRenderedValue(<SvgUri style={styles.svgImage} uri={Sym.svg_uri}/>);\n      }\n    })\n  }, [SymbologyData]);\n\n  return <>\n    {renderedValue}\n  </>\n}\n\nconst translateSize = (str : 'sm' | 'md' | 'lg'): number => {\n  switch (str) {\n    case 'sm' : return 16;\n    case 'md' : return 25;\n    case 'lg' : return 36;\n    default : return 16;\n  }\n}","import cacheDurationKeys from './../keys/cacheDurationKeys';\nimport urlKeys from './../keys/urlKeys';\nimport cacheKeys from './../keys/cacheKeys';\nimport iSymbology from './../../definitions/symbology/symbology';\nimport CachedItem from './../../definitions/CachedItem';\nimport testCache from './../tools/testCache';\nimport setCache from './../tools/setCache';\nimport getCache from './../tools/getCache';\n\nexport default async (): Promise<iSymbology | undefined> => {\n  const fetchFreshData = async (): Promise<undefined | iSymbology> => {\n    const fetchResponse = await fetch(urlKeys.symbology);\n    if(fetchResponse.ok) {\n      const responseJSON = await fetchResponse.json();\n      setCache(cacheKeys.symbology, cacheDurationKeys.symbology, responseJSON);\n      return responseJSON;\n    } else {\n      return undefined;\n    }\n  }\n\n  const fetchCachedData = async (): Promise<undefined | iSymbology> => {\n    let cacheValue = await getCache(cacheKeys.symbology);\n    if(cacheValue) {\n      let cacheObj: CachedItem<iSymbology> = JSON.parse(cacheValue);\n      return cacheObj.data;\n    } else {\n      return undefined;\n    }\n  }\n\n  const cacheHealth = await testCache(cacheKeys.symbology);\n\n  let data: iSymbology | undefined;\n\n  if(true) data = await fetchFreshData();\n  if(cacheHealth === -1) data = await fetchFreshData();\n  if(cacheHealth === 0) {\n    data = await fetchCachedData();\n    fetchFreshData();\n  }\n  if(cacheHealth === 1) data = await fetchCachedData();\n\n  console.log(`Request_Symbology Results: (CacheHealth: ${cacheHealth})`, data);\n  return data;\n}","import * as React from 'react';\nimport { Text, Card, List, ListItem, Separator, Content, CardItem, Right, Left } from 'native-base';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport Themes, { getThemeText, getThemeBackground } from '../../ManaSagaTheme';\n\nimport StandardScreenWrapper from './../StandardScreenWrapper';\nimport Footer from './../../components/footer/Footer';\nimport ScryFallSymbol from './../../components/ScryFallSymbol/ScryFallSymbol';\n\nexport interface iProps {}\n\nexport default () => {\n\n  const ToDoList = [\n    {\n      text: 'Add a Router and add Routes to Pages',\n      category: 'Router / Pages',\n    },{\n      text: 'Pull Basic Data from ScryFall',\n      category: 'Api',\n    },{\n      text: 'Integrate Firebase For Web',\n      category: 'Api',\n    },{\n      text: 'Integrate Firebase User Auth',\n      category: 'Api',\n    },{\n      text: 'Build Collection Component with Basic Grid View',\n      category: 'Components',\n    },{\n      text: 'Build Universal Filter Component',\n      category: 'Components',\n    },{\n      text: 'Build Universal Card Component (Displays Card Data in a Visually appealing Format)',\n      category: 'Components',\n    },{\n      text: 'FooBar',\n      category: 'Components',\n    }\n  ]\n\n  const getListItem = (txt : string, category : string, background?: boolean) => \n  <CardItem \n    key={`TODO_${txt}_${category}`}\n    style={[\n      styles.CardItem, \n      {\n        backgroundColor : background ? getThemeBackground('Primary', \"Light\") : 'transparent'\n      }\n    ]}>\n    <Left>\n      <Text style={[styles.Text, styles.CardItemText]}>\n        {txt}\n      </Text>\n    </Left>\n    <Right style={{}}>\n      <Text style={[styles.TextFaint, {}]}>\n        {category}\n      </Text>\n    </Right>\n  </CardItem>\n\n  return <>\n    <StandardScreenWrapper>\n      <Card style={styles.Card}>\n        <Text style={styles.Text}>Welcome To</Text>\n        <View style={styles.Branding}>\n          <Text style={[styles.Text, {fontSize: 32}]}>ManaSaga</Text>\n          <ScryFallSymbol symbol=\"{W}\" size=\"md\" />\n          <ScryFallSymbol symbol=\"{U}\" size=\"md\" />\n          <ScryFallSymbol symbol=\"{B}\" size=\"md\" />\n          <ScryFallSymbol symbol=\"{R}\" size=\"md\" />\n          <ScryFallSymbol symbol=\"{G}\" size=\"md\" />\n        </View>\n      </Card>\n      <Card style={[styles.Card, {}]}>\n        <Text style={[styles.Text, {fontSize: 32, marginBottom: 25}]}>ToDo's for this App</Text>\n          { ToDoList.map( (ToDo, index) => getListItem(ToDo.text, ToDo.category, (index % 2 === 0))) }\n      </Card>\n    </StandardScreenWrapper>\n    <Footer />\n  </>;\n}\n\nconst styles = StyleSheet.create({\n  Container : {\n    backgroundColor : getThemeBackground('Primary', 'Dark'),\n    // paddingVertical: 25,\n    // borderColor: 'red',\n    // borderWidth: 5,\n    // justifyContent : 'center',\n    // alignItems: 'center'\n  },\n  Branding : {\n    flexDirection: 'row',\n    // justifyContent: 'center',\n    alignItems: 'center',\n    justifyContent: \"space-between\",\n  },\n  Text : {\n    color : getThemeText('Primary'),\n    // borderWidth: 5\n  },\n  TextFaint : {\n    color : 'rgba(255,255,255,.8)',\n  },\n  Card : {\n    backgroundColor : getThemeBackground('Primary'),\n    borderColor : getThemeBackground('Secondary'),\n    padding: 25\n  },\n  CardItem : {\n    backgroundColor: getThemeBackground('Primary'),\n    paddingLeft: 0\n  }, \n  CardItemText : {\n  }\n})","import * as React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Content, Card, CardItem, Text } from 'native-base';\nimport { getThemeBackground, getThemeText } from './../../ManaSagaTheme';\n\nimport StandardScreenWrapper from './../StandardScreenWrapper';\n\nexport interface iProps {}\n\nexport default () => {\n\n  return <StandardScreenWrapper>\n    <Card style={styles.Card}>\n      <Text style={styles.Text}>Welcome Back</Text>\n      <Text style={[styles.Text, {fontSize: 32}]}>Metroidaron</Text>\n    </Card>\n  </StandardScreenWrapper>\n}\n\nconst styles = StyleSheet.create({\n  Container : {\n    backgroundColor : getThemeBackground('Primary', 'Dark'),\n    overflow: 'hidden',\n  },\n  Text : {\n    color : getThemeText('Primary'),\n  },\n  Card : {\n    backgroundColor : getThemeBackground('Primary'),\n    borderColor : getThemeBackground('Secondary'),\n    padding: 25\n  },\n})","import * as React from 'react';\nimport { View, Platform, StyleSheet } from 'react-native';\nimport { Spinner, Image, Text } from 'native-base';\nimport { SvgUri } from 'react-native-svg';\n\nexport interface iProps {\n  SvgUri : string;\n  size ?: \"sm\" | \"md\" | \"lg\";\n  padding ?: number;\n  customClassNames ?: string;\n  style ?: any\n  noSpinner ?: boolean;\n}\n\nexport default (props: iProps) => {\n  const [renderedValue, setRenderedValue] = React.useState<JSX.Element>(props.noSpinner ? undefined : <Spinner />);\n\n  const styles = StyleSheet.create({\n    svgImage : {\n      width: translateSize(props.size),\n      height: translateSize(props.size),\n      // padding: props.padding,\n      ...props.style\n    }\n  })\n\n  React.useEffect(()=>{\n    Platform.OS === 'web' ? \n      setRenderedValue(<img style={{width: translateSize(props.size), height: translateSize(props.size), padding: props.padding, ...props.style}} src={props.SvgUri} />) : \n      setRenderedValue(<SvgUri style={[styles.svgImage, {margin: props.padding}]} uri={props.SvgUri}/>);\n  }, []);\n\n  return <>\n    {renderedValue}\n  </>\n}\n\nconst translateSize = (str : 'sm' | 'md' | 'lg'): number => {\n  switch (str) {\n    case 'sm' : return 16;\n    case 'md' : return 25;\n    case 'lg' : return 36;\n    default : return 16;\n  }\n}","import cacheDurationKeys from './../keys/cacheDurationKeys';\nimport urlKeys from './../keys/urlKeys';\nimport cacheKeys from './../keys/cacheKeys';\n\nimport testCache from './../tools/testCache';\nimport setCache from './../tools/setCache';\nimport getCache from './../tools/getCache';\n\nimport Dexie from 'dexie';\n\nimport iSet from './../../definitions/sets/set';\nimport iCard from './../../definitions/cards/card';\nimport { iManaSagaDatabase } from './all_cards_cache_interface';\n\nexport default class ManaSagaDatabase extends Dexie implements iManaSagaDatabase {\n  cards: Dexie.Table<iCard, string>;\n\n  constructor() {\n    super(\"ManaSagaDatabase\")\n    this.version(1).stores({\n      cards : 'id, cmc, color_identity, rarity, set_name, name, type_line, *games, *legalities'\n    });\n  }\n\n  public manaSaga_countSetCache = async (set : iSet): Promise<number> => {\n    if(!this.isOpen()) await this.open();\n    const count = await this.cards.where('set_name').equalsIgnoreCase(set.name).count();\n    this.close();\n    return count;\n  }\n\n  public manaSaga_addToCache = async (newCards : iCard | iCard[]): Promise<void> => {\n    if(!this.isOpen()) await this.open();\n    if(Array.isArray(newCards)) {\n      newCards.forEach(card => {\n        this.cards.add(card);\n      })\n    } else {\n      this.cards.add(newCards);\n    }\n    this.close();\n  }\n\n}","import cacheDurationKeys from './../keys/cacheDurationKeys';\nimport urlKeys from './../keys/urlKeys';\nimport cacheKeys from './../keys/cacheKeys';\n\nimport iSet from './../../definitions/sets/set';\nimport iCards from './../../definitions/cards/cards';\nimport iCard from './../../definitions/cards/card';\nimport CachedItem from './../../definitions/CachedItem';\n\n// import testCache from './../tools/testCache';\n// import setCache from './../tools/setCache';\n// import getCache from './../tools/getCache';\n\nimport ManaSagaDB, { } from './../card/all_cards_cache';\n\nexport default async (set: iSet): Promise<iCard[]> => {\n  const setCards: iCard[] = [];\n\n  const fetchListOfCards = async (setPageUrl: string): Promise<iCards | undefined> => {\n    const fetchResults = await fetch(setPageUrl);\n    if(fetchResults.ok) {\n      const cardList : iCards = await fetchResults.json();\n      return cardList;\n    } else (err) => {\n      console.log('Failed to fetch Set Card List', err);\n    }\n  }\n\n  const listsOfCards: iCards[] = [];\n  listsOfCards.push(await fetchListOfCards(set.search_uri));\n\n  while (listsOfCards[listsOfCards.length-1].has_more) {\n    listsOfCards.push(await fetchListOfCards(listsOfCards[listsOfCards.length-1].next_page));\n  }\n\n  listsOfCards.forEach( itm => {\n    itm.data.forEach( card => {\n      setCards.push(card);\n    });\n  });\n\n  // Need to request that array of cards is added to All Cards Cache\n  new ManaSagaDB().manaSaga_addToCache(setCards);\n\n  return setCards;\n}","import * as React from 'react';\n// import { ListItem, View, Right, Left, Text } from 'native-base';\nimport SvgSymbol from '../../components/genericSvgSymbol/SvgSymbol';\nimport { StyleSheet, View, Text} from 'react-native';\nimport set from '../../ScryFallApi/definitions/sets/set';\nimport { getThemeText, getThemeBackground } from '../../ManaSagaTheme';\nimport { TouchableOpacity, TouchableWithoutFeedback } from 'react-native-gesture-handler';\nimport request_cacheEntireSet from '../../ScryFallApi/client/sets/request_cacheEntireSet';\nimport ManaSagaDB, {  } from './../../ScryFallApi/client/card/all_cards_cache';\n\nexport interface iProps {\n  set : set;\n}\n\nexport default (props: iProps) => {\n  const uniqueKey = `Set_${props.set.name}_${props.set.id}`;\n  const [cachedNumber, setCachedNumber] = React.useState(0);\n\n  const updateCachedNumber = () => new ManaSagaDB().manaSaga_countSetCache(props.set).then(c => setCachedNumber(c));\n\n  React.useEffect(()=>{\n    updateCachedNumber()\n  }, [])\n\n  const fetchEntireSet = async () => {\n    const cards = await request_cacheEntireSet(props.set);\n    console.groupCollapsed(`setsListItem.tsx :: ${props.set.name} Cards Fetched :: ${props.set.card_count} Cards :: Type of Set(${props.set.set_type})`);\n    console.log('All Cards', cards);\n    console.log('Card Names', cards.map( card => card.name));\n    console.groupEnd();\n    updateCachedNumber();\n  }\n\n\n  return (\n    <TouchableWithoutFeedback onPress={fetchEntireSet}>\n      <View key={uniqueKey} style={[styles.setContainer, (props.set.card_count === cachedNumber) ? styles.setContainerCached : undefined]} >\n        <View style={styles.setTitleContainer}>\n          <Text style={styles.setTitle}>{props.set.name}</Text>\n        </View>\n        <View style={styles.setCardsInCacheRatio}>\n          <Text>{`${cachedNumber}/${props.set.card_count}`}</Text>\n        </View>\n        <View style={styles.setIconContainer}>\n          <SvgSymbol noSpinner size='md' style={styles.setIcon} SvgUri={props.set.icon_svg_uri} />\n        </View>\n      </View>\n    </TouchableWithoutFeedback>\n  );\n}\n\nconst styles = StyleSheet.create({\n  setContainer : {\n    backgroundColor: getThemeBackground('Primary', 'Light'),\n    paddingLeft: 0,\n    display: 'flex',\n    flex: 1,\n    flexDirection: 'row',\n    marginVertical: 10,\n    alignItems: 'center',\n    justifyContent: 'center'\n  }, \n  setContainerCached : {\n    backgroundColor: getThemeBackground('Secondary', 'Dark'),\n  },\n  setTitleContainer : {\n    padding: 10,\n    flex : 8,\n  },\n  setTitle: {\n    color : getThemeText('Primary'),\n    fontSize: 18,\n  },\n  setCardsInCacheRatio : {\n    flex: 2,\n  },\n  setIconContainer : {\n    flex: 2,\n    alignItems: 'center',\n    borderRadius: 50,\n    marginRight: 10,\n    borderWidth: 1,\n    backgroundColor: 'rgba(255,255,255,.2)'\n\n  },\n  setIcon : {\n  },\n})","import * as React from 'react';\nimport { Text, StyleSheet } from 'react-native';\nimport { View, ListItem } from 'native-base';\nimport { getThemeBackground, getThemeText } from '../../ManaSagaTheme';\nimport { FlatList, TouchableOpacity } from 'react-native-gesture-handler';\nimport { DrawerContext } from './../../components/drawer/DrawerContext';\n\nexport interface iProps {\n  state : [ string, React.Dispatch<React.SetStateAction<string>>];\n  setTypeOptions : [ string[], React.Dispatch<React.SetStateAction<string[]>>];\n}\n\nexport default (props: iProps) => {\n  const ctxDrawer = React.useContext(DrawerContext);\n  const [filter, setFilter] = props.state;\n  const [setTypeOptions, setSetTypeOptions] = props.setTypeOptions;\n\n  const _handlePress = (Selection: string) => {\n    ctxDrawer.closeDrawer();\n    Selection !== 'All Sets' ? setFilter(Selection) : setFilter(undefined);\n  };\n\n  const renderFlatListItem = (item : {item : any}) => (\n    <TouchableOpacity key={`FlatListItem_${item.item}`} onPress={()=>_handlePress(item.item)}>\n      <ListItem noIndent>\n        <Text style={styles.OptionText}>{item.item}</Text>\n      </ListItem>\n    </TouchableOpacity>\n  );\n\n  return <>\n    <View style={styles.Container}>\n      <FlatList keyExtractor={(i)=>i} data={['All Sets', ...setTypeOptions]} renderItem={renderFlatListItem} />\n    </View>\n  </>\n}\n\nconst styles = StyleSheet.create({\n  Container : {\n    flex: 1,\n    backgroundColor: getThemeBackground('Secondary', 'Dark')\n  },\n  OptionItem : {},\n  OptionText : {\n    color : getThemeText('Secondary'),\n    fontSize : 16\n  },\n})","import * as React from 'react';\nimport { Text, Card, ActionSheet } from 'native-base';\nimport { StyleSheet, FlatList } from 'react-native';\nimport { getThemeText, getThemeBackground } from '../../ManaSagaTheme';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\n\nimport StandardScreenWrapper from './../StandardScreenWrapper';\nimport Footer from './../../components/footer/Footer';\nimport requestSets from './../../ScryFallApi/client/sets/request_sets';\nimport sets from '../../ScryFallApi/definitions/sets/sets';\nimport iCard from './../../ScryFallApi/definitions/cards/card';\nimport { DrawerContext } from './../../components/drawer/DrawerContext';\n\nimport SetsListItem from './setsListItem';\nimport SetsFilterDrawer from './setsFilterDrawer';\nimport set from '../../ScryFallApi/definitions/sets/set';\n\nexport interface iProps {}\n\nexport default () => {\n  const [CardCache, setCardCache] = React.useState<iCard[]>(undefined);\n  const ctxDrawer = React.useContext(DrawerContext);\n  const [allSets, setAllSets] = React.useState<sets>(undefined);\n  const setsFilterDrawer = React.useState<string>('core')\n  const setTypeOptions = React.useState<string[]>(undefined);\n\n  const openFilterDrawer = () => {\n    ctxDrawer.setCustomContent(<SetsFilterDrawer setTypeOptions={setTypeOptions} state={setsFilterDrawer} />);\n    ctxDrawer.openDrawer();\n  }\n  \n  const getData = (): set[] => {\n    if (setsFilterDrawer[0]) {\n      return allSets?.data.filter( set => (set.set_type === setsFilterDrawer[0])).map( (set, index) => set);\n    } else {\n      return allSets?.data;\n    }\n  }\n  \n  const getSetName = () => {\n    return setsFilterDrawer[0] ? setsFilterDrawer[0].charAt(0).toUpperCase() + setsFilterDrawer[0].slice(1) : 'All';\n  }\n\n  const setCardsInCache = (set: set): number => {\n\n    const cache = CardCache ? CardCache : [];\n    let count = 0;\n    cache.forEach( card => {\n      if(card.set_name === set.name) count++;\n    });\n    return count\n  }\n  \n  React.useEffect(()=>{\n    requestSets().then( sets => {\n      setTypeOptions[1](sets.data.map(s => s.set_type).reduce((unique, item) => unique.includes(item) ? unique : [...unique, item], []).sort())\n      setAllSets(sets);\n      // loadCache().then( allCachedCards => {\n      //   const rawCards = helper_ParseToRawCards(allCachedCards);\n      //   setCardCache(rawCards);\n      // });\n    });\n  }, []);\n\n  return <>\n    <StandardScreenWrapper>\n\n    {/* { allSets?.data.filter( set => (set.set_type === 'core')).map( (set, index) => getListItem(set, (index % 2 === 0))) } */}\n    {/* { allSets?.data.filter( set => (set.set_type === 'expansion')).map( (set, index) => getListItem(set, (index % 2 === 0))) } */}\n    {/* { allSets?.data.map( (set, index) => getListItem(set, (index % 2 === 0))) } */}\n\n    <Card key={'setManagement_Splash'} style={[styles.Card]}>\n      <Text style={[styles.Text, {fontSize: 32, marginBottom: 0}]}>Set Management</Text>\n      <Text style={[styles.Text, {fontSize: 14, marginBottom: 0}]}>Here you can manage the sets you have downloaded and cached within the Mana Saga App.  This is required if you want to use more advanced features of ManaSaga such as Card Collections; Filtering Collections; and more.  This is not required if your using the Card Search feature.</Text>\n    </Card>\n    \n    <TouchableOpacity key=\"setManagement_DownloadAll\" onPress={()=>alert('Nope, Not yet...')}>\n      <Card style={[styles.Card]}>\n        <Text style={[styles.Text, {fontSize: 32, marginBottom: 0}]}>Download All Sets</Text>\n        <Text style={[styles.Text, {fontSize: 14, marginBottom: 0}]}>Downloading all the sets can use a lot of data and storage.  At the time of writing this message, all sets totaled almost 200MB!</Text>\n      </Card>\n    </TouchableOpacity>\n\n    <TouchableOpacity key=\"setManagement_Filter\" onPress={openFilterDrawer}>\n      <Card style={[styles.Card]}>\n        <Text style={[styles.Text, {fontSize: 32, marginBottom: 0}]}>Filter Sets</Text>\n        <Text style={[styles.Text, {fontSize: 14, marginBottom: 0}]}>Filter Selection : {setsFilterDrawer[0]}</Text>\n      </Card>\n    </TouchableOpacity>\n\n    {/* <Card key='setManagement_ViewSets' style={[styles.Card, {}]}> */}\n      <Text style={[styles.Text, {fontSize: 32, marginBottom: 0}]}>{getSetName()} Sets</Text>\n      {\n        (!allSets) ? <Text>Loading...</Text> : \n        <FlatList\n          initialNumToRender={25}\n          maxToRenderPerBatch={25}\n          // updateCellsBatchingPeriod={15000}\n          keyExtractor={(item) => `set_${item.name}`}\n          data={getData()}\n          renderItem={(itm)=><SetsListItem set={itm.item} />}\n        />\n      }\n    {/* </Card> */}\n\n    </StandardScreenWrapper>\n    <Footer />\n  </>;\n}\n\nconst styles = StyleSheet.create({\n  Container : {\n    backgroundColor : getThemeBackground('Primary', 'Dark'),\n  },\n  Branding : {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: \"space-between\",\n  },\n  Text : {\n    color : getThemeText('Primary'),\n  },\n  TextFaint : {\n    color : 'rgba(255,255,255,.8)',\n  },\n  Card : {\n    backgroundColor : getThemeBackground('Primary'),\n    borderColor : getThemeBackground('Secondary'),\n    padding: 25\n  },\n  CardItem : {\n    backgroundColor: getThemeBackground('Primary'),\n    paddingLeft: 0\n  }, \n  CardItemText : {\n  },\n})","import Default from './screens/default/default';\nimport Profile from './screens/profile/profile';\nimport MtgSetsManager from './screens/mtgSetsManager/mtgSetsManager';\n\nimport ScreensStructure from \"./components/router/CustomRoutesStructure\";\n\nconst routes: ScreensStructure = {\n  Screens : [\n    {\n      name : 'Default',\n      path : '/default',\n      component : Default\n    },{\n      name : 'Profile',\n      path : '/profile',\n      component : Profile\n    },{\n      name : 'MTG Sets Manager',\n      path : '/setsManager',\n      component : MtgSetsManager\n    }\n\n  ]\n}\n\nexport type paths = '/default' | '/profile';\n\nexport default routes;","import cacheDurationKeys from './../keys/cacheDurationKeys';\nimport urlKeys from './../keys/urlKeys';\nimport cacheKeys from './../keys/cacheKeys';\n\nimport iSets from './../../definitions/sets/sets';\nimport CachedItem from './../../definitions/CachedItem';\n\nimport testCache from './../tools/testCache';\nimport setCache from './../tools/setCache';\nimport getCache from './../tools/getCache';\n\nexport default async (): Promise<iSets | undefined> => {\n  const fetchFreshData = async (): Promise<undefined | iSets> => {\n    const fetchResponse = await fetch(urlKeys.sets);\n    if(fetchResponse.ok) {\n      const responseJSON = await fetchResponse.json();\n      setCache(cacheKeys.sets, cacheDurationKeys.sets, responseJSON);\n      return responseJSON;\n    } else {\n      return undefined;\n    }\n  }\n\n  const fetchCachedData = async (): Promise<undefined | iSets> => {\n    let cacheValue = await getCache(cacheKeys.sets);\n    if(cacheValue) {\n      let cacheObj: CachedItem<iSets> = JSON.parse(cacheValue);\n      return cacheObj.data;\n    } else {\n      return undefined;\n    }\n  }\n\n  const cacheHealth = await testCache(cacheKeys.sets);\n\n  let data: iSets | undefined;\n\n  if(true) data = await fetchFreshData();\n  if(cacheHealth === -1) data = await fetchFreshData();\n  if(cacheHealth === 0) {\n    data = await fetchCachedData();\n    fetchFreshData();\n  }\n  if(cacheHealth === 1) data = await fetchCachedData();\n  \n  console.log(`Request_Sets Results: (CacheHealth: ${cacheHealth})`, data);\n  return data;\n}","import * as React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Header, Left, Body, Right, Text, Button, Drawer as NativeBaseDrawer } from 'native-base';\nimport Themes, { getThemeBackground, getThemeText } from './../../ManaSagaTheme';\nimport { DrawerContext } from './../drawer/DrawerContext';\n\nimport ScryFallSymbol from './../ScryFallSymbol/ScryFallSymbol';\n\nexport interface iProps {\n}\n\nexport default (props: iProps) => {\n  const ctx_Drawer = React.useContext(DrawerContext);\n\n  return <>\n    <Header style={styles.Header}>\n      <Left style={styles.Left}>\n        <Button style={styles.Button} onPress={()=>ctx_Drawer.ref._root?.open()}>\n          <Text style={styles.ButtonText}>Menu</Text>\n        </Button>\n      </Left>\n      <Body style={styles.Center}>\n        <Text style={styles.HeaderText}>\n          ManaSaga \n        </Text>\n      </Body>\n      <Right style={styles.Right}>\n        <Button style={styles.Button}>\n          <Text style={styles.ButtonText}>\n            Profile\n          </Text>\n        </Button>\n      </Right>\n    </Header>\n  </>\n}\n\n\nconst styles = StyleSheet.create({\n  Header: {\n    backgroundColor : getThemeBackground('Primary'),\n  },\n  HeaderText: {\n    color : getThemeText('Primary'),\n    fontSize : 16,\n  },\n  Button: {\n    backgroundColor: getThemeBackground('Secondary'),\n  },\n  ButtonText: {\n    color : getThemeText('Secondary'),\n  },\n  Left : {flex: 1},\n  Center : {\n    flex: 1,\n    alignItems: 'center'\n  },\n  Right : {flex: 1},\n});\n","import * as React from 'react';\nimport { BrowserRouter, Route, Redirect, Switch } from 'react-router-dom';\nimport ScreensStructure from './CustomRoutesStructure';\nimport Header from './../header/Header';\n\nexport interface iProps {\n  // children : JSX.Element[] | JSX.Element;\n  Screens : ScreensStructure;\n}\n\nexport default (props: iProps) => {\n\n  const _getRoute = (to: string, comp: React.ComponentType<any>) => <Route key={`ROUTE_${to}`} path={to} component={comp} />\n  const _getRoutes = () => props.Screens.Screens.map( s => _getRoute(s.path, s.component));\n\n  return <>\n    <BrowserRouter>\n      <Header />\n      <Switch>\n        { _getRoutes() }\n        <Redirect exact path='/' to=\"/default\" />\n      </Switch>\n    </BrowserRouter>\n  </>\n}","import * as React from 'react';\nimport { StyleSheet, Platform } from 'react-native';\nimport { Text, View } from 'native-base';\nimport Header from './components/header/Header';\nimport Screens from './ManaSagaRoutes';\nimport CustomRouter from './components/router/CustomRouter';\n\nimport Drawer from './components/drawer/Drawer';\nimport { DrawerContextProvider } from './components/drawer/DrawerContext';\n\nexport interface iProps {\n\n}\n\nexport default (props: iProps) => {\n  const [AppDrawerRef, setAppDrawerRef] = React.useState<any>();\n\n  return <>\n    <DrawerContextProvider>\n      <CustomRouter Screens={Screens} />\n    </DrawerContextProvider>\n  </>\n}\n\nconst styles = StyleSheet.create({\n  FooBar: {\n    flex: 1,\n    backgroundColor: '#fff',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n});\n","import 'react-native-gesture-handler';\nimport React from 'react';\nimport Constants from 'expo-constants';\nimport { StyleSheet, Platform } from 'react-native';\nimport { Container, View, Text, Root } from 'native-base';\nimport * as Font from 'expo-font';\n\nimport ManaSaga from './src/ManaSaga';\nimport { getThemeBackground } from './src/ManaSagaTheme';\n\nexport default function App() {\n  const [LibrariesLoaded, setLibrariesLoaded] = React.useState(false);\n  \n  const LoadAsyncStuff = async () => {\n    await Font.loadAsync({\n      'Roboto_medium': require('./assets/Roboto/Roboto-Regular.ttf')\n    });\n\n    setLibrariesLoaded(true);\n  }\n\n  React.useEffect(() => {\n    LoadAsyncStuff();\n  }, [])\n  \n  return LibrariesLoaded ? (\n    <Container style={styles.Container}>\n        <ManaSaga />\n    </Container>\n  ) : <Text />;\n}\n\nconst styles = StyleSheet.create({\n  Container : {\n    backgroundColor : getThemeBackground('Primary'),\n    paddingTop : Constants.statusBarHeight\n  },\n  FooBar: {\n    flex: 1,\n    backgroundColor: '#fff',\n    alignItems: 'center',\n    justifyContent: 'center',\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__ + \"./fonts/Roboto-Regular.ttf\";"],"sourceRoot":""}