{"version":3,"file":"static/js/main.606d447f.js","mappings":"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","sources":["src/theme/colors.ts","src/theme/images.ts","src/theme/fonts.ts","src/navigator/stack/components/StackHeaderLeft.tsx","src/navigator/stack/components/StackHeaderTitle.tsx","src/utils/mediaUrl.ts","src/components/ArticleListItem/ArticleListItem.tsx","src/utils/recoil.ts","src/components/AudioPlayer/sleep.tsx","src/utils/gtm.js","src/components/AudioPlayer/AudioPlayer.js","src/components/SongListItem/SongListItem.tsx","src/views/Home/Home.tsx","src/views/Favorites/Favorites.tsx","src/components/Button/Button.tsx","src/views/Details/Details.tsx","src/navigator/tab/Tab.tsx","src/navigator/drawer/Drawer.tsx","src/views/Articles/Articles.tsx","src/views/ArticlesList/ArticlesList.tsx","src/views/Songs/Songs.tsx","src/components/LabeledTextInput/LabeledTextInput.tsx","src/views/Preferences/styles.ts","src/components/HorizontalLine/HorizontalLine.tsx","src/components/ErrorDisplay/ErrorDisplay.tsx","src/components/MessageDisplay/MessageDisplay.tsx","src/views/Preferences/Preferences.tsx","src/navigator/stack/Stack.tsx","src/views/Auth/styles.tsx","src/views/Auth/components/RegistrationComponent.tsx","src/views/Auth/components/LoginComponent.tsx","src/views/Auth/components/ResetPasswordComponent.tsx","src/views/Auth/components/ForgotPasswordComponent.tsx","src/views/Auth/AuthScreen.tsx","src/components/WarningDisplay/WarningDisplay.tsx","src/views/Auth/components/RedeemCodeComponent.tsx","src/views/Auth/components/AccessDeniedComponent.tsx","src/navigator/Navigator.tsx","App.tsx","src/modules/app.module.ts","src/utils/cmsApi.js","src/utils/storage.js","src/utils/config.ts","src/utils/store.ts","webpack/bootstrap","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/create fake namespace object","webpack/runtime/define property getters","webpack/runtime/global","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/node module decorator","webpack/runtime/publicPath","webpack/runtime/jsonp chunk loading","webpack/startup"],"sourcesContent":["export const colors = {\n darkPurple: '#231d54',\n purple: '#8100ff',\n lightPurple: '#9388db',\n lightGrayPurple: '#f7f7fb',\n pink: '#ff3d69',\n gray: '#797777',\n black: '#000000',\n white: '#ffffff',\n transparent: 'transparent',\n smartPurple: '#2E2C6E',\n smartPink: '#C9326A',\n smartOrange: '#E16E38',\n smartYellow: '#F7CD46',\n smartTeal: '#4AA49D',\n ltPurple: '#B7B6F8',\n ltPink: '#F4B8E7',\n ltOrange: '#F6C7AE',\n ltYellow: '#FDF1C0',\n ltTeal: '#C5EEE7'\n};\n","import { Asset } from 'expo-asset';\nimport { ImageSourcePropType } from 'react-native';\n\nexport const images: { [key: string]: ImageSourcePropType } = {\n logo: require('@assets/images/logo.png'),\n logoRCM: require('@assets/images/logorcm.png'),\n logoDark: require('@assets/images/logo-dark.png'),\n logo_sm: require('@assets/images/logo-sm.png'),\n logo_lg: require('@assets/images/logo-lg.png'),\n};\n\ntype VirtualAssetModuleType = number | string;\n\n// preload images\nconst imageAssets = Object.keys(images).map(key => {\n return Asset.fromModule(images[key] as VirtualAssetModuleType).downloadAsync();\n});\n\nexport const loadImages = () => Promise.all(imageAssets);\n","import { loadAsync } from 'expo-font';\n\nexport const fonts = {\n openSan: {\n regular: 'openSans_regular',\n regularItalic: 'openSans_regular_italic',\n semiBold: 'openSans_semiBold',\n semiBoldItalic: 'openSans_semiBold_italic',\n bold: 'openSans_bold',\n boldItalic: 'openSans_bold_italic',\n },\n};\n\n// preload fonts\nexport const loadFonts = async () =>\n await loadAsync({\n openSans_regular: require('@assets/fonts/OpenSans-Regular.ttf'),\n openSans_regular_italic: require('@assets/fonts/OpenSans-Italic.ttf'),\n openSans_semiBold: require('@assets/fonts/OpenSans-Semibold.ttf'),\n openSans_semiBold_italic: require('@assets/fonts/OpenSans-SemiboldItalic.ttf'),\n openSans_bold: require('@assets/fonts/OpenSans-Bold.ttf'),\n openSans_bold_italic: require('@assets/fonts/OpenSans-BoldItalic.ttf'),\n });\n","import React from 'react';\nimport { SimpleLineIcons } from '@expo/vector-icons';\nimport { colors } from '@theme';\n\nexport function StackHeaderLeft({ onPress }: { onPress: () => void }) {\n return (\n <SimpleLineIcons.Button\n name=\"menu\"\n size={24}\n color={colors.white}\n backgroundColor={colors.transparent}\n onPress={onPress}\n //,margin left: 10\n style={{ marginLeft: 0 }}\n />\n );\n}\n\nexport function StackHeaderLeftDark({ onPress }: { onPress: () => void }) {\n return (\n <SimpleLineIcons.Button\n name=\"menu\"\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={onPress}\n //,margin left: 10\n style={{ marginLeft: 20 }}\n />\n );\n}\n\nexport function StackHeaderLeftBack({ onPress }: { onPress: () => void }) {\n return (\n <SimpleLineIcons.Button\n name=\"arrow-left\"\n size={24}\n color={colors.white}\n backgroundColor={colors.transparent}\n onPress={onPress}\n //,margin left: 10\n style={{ marginLeft: 0 }}\n />\n );\n}\n\nexport function StackHeaderLeftBackDark({ onPress }: { onPress: () => void }) {\n return (\n <SimpleLineIcons.Button\n name=\"arrow-left\"\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={onPress}\n //,margin left: 10\n style={{ marginLeft: 20 }}\n />\n );\n}\n","import React from 'react';\nimport { StyleSheet, View, TouchableOpacity } from 'react-native';\nimport { Image } from 'expo-image';\nimport { images } from '@theme';\n\nconst styles = StyleSheet.create({\n logo: {\n width: 96,\n height: 47,\n marginRight: 30,\n },\n});\n\nconst stylesDark = StyleSheet.create({\n logo: {\n width: 87,\n height: 41,\n marginRight: 30,\n },\n});\n\n\nexport function StackHeaderTitle({navigation}) {\n return <View><TouchableOpacity onPress={()=>{navigation.navigate('HomeTab')}}><Image source={images.logo} style={styles.logo} /></TouchableOpacity></View>;\n}\n\nexport function StackHeaderTitleDark({navigation}) {\n return <View><TouchableOpacity onPress={()=>{navigation.navigate('HomeTab')}}><Image source={images.logoDark} style={stylesDark.logo} /></TouchableOpacity></View>;\n}\n\n","export const mediaUrl = (path: string) => {\n if (!path) return null;\n return `${(process.env.EXPO_PUBLIC_CMS?.includes('localhost') || process.env.EXPO_PUBLIC_CMS?.includes('192.168.')) && path ? process.env.EXPO_PUBLIC_CMS : ''}${path}`;\n}\n","import React from 'react';\nimport { AntDesign } from '@expo/vector-icons';\nimport {\n ImageBackground,\n Text,\n View,\n StyleSheet,\n ScrollView,\n StatusBar,\n useWindowDimensions,\n Touchable,\n} from 'react-native';\n// import Button from '@components/Button';\nimport { Image } from 'expo-image';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport { mediaUrl } from '@utils/mediaUrl';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\n\nconst stylesWhite = StyleSheet.create({\n author: {\n color: colors.smartPurple,\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 14,\n fontWeight: '500',\n lineHeight: 14,\n marginBottom: 10,\n },\n titleWrapper: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n title: {\n fontSize: 22,\n marginBottom: 10,\n marginTop: 10,\n color: colors.smartPurple,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 22,\n },\n subtitle: {\n fontSize: 14,\n marginRight: 10,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n text: {\n color: colors.smartPurple,\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 14,\n fontWeight: '500',\n lineHeight: 16,\n },\n wrapper: {\n marginTop: 5,\n marginBottom: 20,\n paddingBottom: 20,\n paddingTop:15,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n\n readMore: {\n color: colors.smartPurple,\n marginTop: 10,\n marginBottom: 20,\n textAlign: 'left',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n lineHeight: 12,\n },\n tag: {\n backgroundColor: colors.ltPurple,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n tagWrapper: {\n marginTop: 10,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n },\n img: {\n width: 357,\n height: 222,\n marginRight: 30,\n cursor: 'pointer',\n },\n flex: {\n flex: 1,\n },\n pointer: {\n cursor: 'pointer',\n }\n});\n\nconst stylesDark = StyleSheet.create({\n author: {\n color: 'white',\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 12,\n fontWeight: '500',\n lineHeight: 12,\n marginBottom: 10,\n },\n titleWrapper: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n title: {\n fontSize: 22,\n marginBottom: 10,\n marginTop: 10,\n color: 'white',\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 22,\n },\n subtitle: {\n fontSize: 12,\n marginRight: 10,\n color: 'white',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n text: {\n color: 'white',\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 14,\n fontWeight: '500',\n },\n wrapper: {\n marginTop: 5,\n marginBottom: 20,\n paddingBottom: 20,\n paddingTop:15,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n\n readMore: {\n color: colors.ltPurple,\n marginTop: 10,\n marginBottom: 20,\n textAlign: 'left',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n lineHeight: 12,\n cursor: 'pointer'\n },\n tag: {\n backgroundColor: colors.ltPurple,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n tagWrapper: {\n marginTop: 10,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n },\n img: {\n width: 357,\n height: 222,\n cursor: 'pointer',\n marginRight: 30,\n },\n flex: {\n flex: 1,\n },\n pointer: {\n cursor: 'pointer',\n }\n});\n\nexport default function ArticleListItem(props) {\n const {\n user,\n dispatch,\n setFavoriteArticles,\n } = useAppModule();\n const favoriteArticles = JSON.parse(JSON.stringify(user?.user?.favoriteArticles || []));\n const { navigation, article, subtitle, theme = 'white', showFavorite = false } = props;\n const { width } = useWindowDimensions();\n const styles = theme === 'dark' ? stylesDark : stylesWhite;\n \n if (!article) return null;\n let { id, title, author, text, tags, shortText } = article;\n const isFavorite = favoriteArticles && favoriteArticles.findIndex(s => s.id === id) !== -1;\n tags = tags?.length > 0 ? tags.map(t => t.title) : [];\n if (!shortText) {\n //remove all html from text\n shortText = text.replace(/(<([^>]+)>)/gi, '');\n //make it 200 symbols, cut off the last word\n shortText = shortText.substring(0, 200);\n shortText = shortText.substring(0, shortText.lastIndexOf(' '));\n }\n\n const img = mediaUrl(article.image?.thumbnail_url);\n\n const articleOnClick = () => {\n navigation.navigate('DetailsStack', { view: 'article', data: article });\n };\n\n return (\n <View key={`article_${article.id}`} style={{...styles.wrapper, marginTop: props.isFirst ? 0 : 5, paddingTop: props.isFirst ? 0 : 15 }}>\n <TouchableOpacity onPress={articleOnClick}>\n <View>\n {img && <Image style={{ ...styles.img, maxWidth: width - 40 }} source={img} />}\n </View>\n </TouchableOpacity>\n\n {tags.length > 0 && (\n <ScrollView\n showsHorizontalScrollIndicator={false}\n horizontal\n contentContainerStyle={styles.tagWrapper}\n >\n {subtitle ? <Text style={styles.subtitle}>Article</Text> : null}\n {tags.map((tag, index) => {\n return (\n <Text key={index} style={styles.tag}>\n {tag}\n </Text>\n );\n })}\n </ScrollView>\n )}\n\n <View>\n <View style={styles.titleWrapper}>\n <TouchableOpacity\n containerStyle={{...styles.flex, ...styles.pointer}}\n onPress={articleOnClick}\n >\n <Text style={{...styles.title, lineHeight: theme==='home'?35:40, fontSize: theme==='home'?30:40 }}>{title}</Text>\n </TouchableOpacity>\n {showFavorite && (\n <AntDesign.Button\n name={isFavorite ? 'heart' : 'hearto'}\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={() => dispatch(setFavoriteArticles(favoriteArticles, id, isFavorite))}\n />\n )}\n </View>\n <TouchableOpacity\n style={styles.pointer}\n onPress={articleOnClick}\n >\n {author && <Text style={styles.author}>{`by ${author}`}</Text>}\n {shortText && <Text style={styles.text}>{shortText}</Text>}\n {shortText && <Text style={styles.readMore}>READ MORE</Text>}\n </TouchableOpacity>\n </View>\n </View>\n );\n}\n","import { atom } from \"recoil\";\n\nexport const songIdPlayingState = atom<any>({\n key: \"songIdPlayingState\",\n default: undefined\n });","const sleep = async (ms) => {\n return new Promise(function(resolve, reject) {\n setTimeout(function() {\n resolve();\n }, ms);\n });\n}\n\nexport default sleep;","export const dataLayerPush = (payload, clear = true) => {\n if (window.dataLayer) {\n if (clear) {\n window.dataLayer.push(function () {\n this.reset();\n });\n }\n\n window.dataLayer.push(payload);\n }\n};\n\nconst Default = () => 'default';\nexport default Default;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useNavigation } from '@react-navigation/native';\nimport { TouchableOpacity, Animated, PanResponder, View, Easing, Image } from 'react-native';\nimport { songIdPlayingState } from '@utils/recoil';\nimport { useRecoilState } from 'recoil';\nimport { colors } from '@theme';\nimport { Audio } from 'expo-av';\nimport sleep from './sleep';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst TRACK_SIZE = 1;\n\nconst AudioPlayer = props => {\n const navigation = useNavigation();\n const [playing, setPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [trackLayout, setTrackLayout] = useState({});\n const dotOffset = useRef(new Animated.ValueXY()).current;\n const xDotOffsetAtAnimationStart = useRef(0);\n const [soundObject, setSoundObject] = useState(new Audio.Sound());\n const [songIdPlaying, setSongIdPlaying] = useRecoilState(songIdPlayingState);\n\n useEffect(() => {\n const unsubscribe = navigation.addListener('blur', async () => {\n // console.log('pausing');\n await pause();\n });\n\n return () => {\n unsubscribe();\n };\n }, [navigation]);\n\n useEffect(() => {\n if (songIdPlaying !== undefined && songIdPlaying !== props.songId) {\n pause();\n }\n }, [songIdPlaying]);\n\n const _panResponder = PanResponder.create({\n onMoveShouldSetResponderCapture: () => true,\n onMoveShouldSetPanResponderCapture: () => true,\n onPanResponderGrant: async (e, gestureState) => {\n if (playing) {\n await pause();\n }\n xDotOffsetAtAnimationStart.current = dotOffset.x._value;\n dotOffset.setOffset({ x: dotOffset.x._value });\n dotOffset.setValue({ x: 0, y: 0 });\n },\n onPanResponderMove: (e, gestureState) => {\n Animated.event([null, { dx: dotOffset.x, dy: dotOffset.y }])(e, gestureState);\n },\n onPanResponderTerminationRequest: () => false,\n onPanResponderTerminate: async (evt, gestureState) => {\n const currentOffsetX = xDotOffsetAtAnimationStart.current + dotOffset.x._value;\n if (currentOffsetX < 0 || currentOffsetX > trackLayout.width) {\n await dotOffset.setValue({ x: -xDotOffsetAtAnimationStart.current, y: 0 });\n }\n await dotOffset.flattenOffset();\n await mapAudioToCurrentTime();\n },\n onPanResponderRelease: async (e, { vx }) => {\n const currentOffsetX = xDotOffsetAtAnimationStart.current + dotOffset.x._value;\n if (currentOffsetX < 0 || currentOffsetX > trackLayout.width) {\n await dotOffset.setValue({ x: -xDotOffsetAtAnimationStart.current, y: 0 });\n }\n await dotOffset.flattenOffset();\n await mapAudioToCurrentTime();\n },\n });\n\n const mapAudioToCurrentTime = async () => {\n await soundObject.setPositionAsync(currentTime);\n };\n\n const onPressPlayPause = async () => {\n if (playing) {\n await pause();\n return;\n }\n await play();\n };\n\n const play = async () => {\n await soundObject.playAsync();\n setSongIdPlaying(props.songId);\n setPlaying(true);\n startMovingDot();\n\n dataLayerPush({\n event: 'song_play',\n song: props.songTitle,\n });\n };\n\n const pause = async () => {\n await soundObject.pauseAsync();\n setPlaying(false);\n Animated.timing(dotOffset).stop();\n };\n\n const startMovingDot = async () => {\n const status = await soundObject.getStatusAsync();\n const durationLeft = status['durationMillis'] - status['positionMillis'];\n\n Animated.timing(dotOffset, {\n toValue: { x: trackLayout.width, y: 0 },\n duration: durationLeft,\n easing: Easing.linear,\n }).start(() => animationPausedOrStopped());\n };\n\n const animationPausedOrStopped = async () => {\n await sleep(200);\n setPlaying(false);\n await soundObject.pauseAsync();\n await dotOffset.setValue({ x: 0, y: 0 });\n await soundObject.setPositionAsync(0);\n };\n\n const measureTrack = event => {\n setTrackLayout(event.nativeEvent.layout);\n };\n\n useEffect(() => {\n const loadAudio = async () => {\n await soundObject.loadAsync(props.audio);\n\n const status = await soundObject.getStatusAsync();\n status.durationMillis = 30000;\n\n setDuration(status.durationMillis);\n\n dotOffset.addListener(() => {\n const animatedCurrentTime = dotOffset.x\n .interpolate({\n inputRange: [0, trackLayout.width],\n outputRange: [0, duration],\n extrapolate: 'clamp',\n })\n .__getValue();\n\n setCurrentTime(animatedCurrentTime);\n });\n };\n\n loadAudio();\n\n return async () => {\n await soundObject.unloadAsync();\n dotOffset.removeAllListeners();\n };\n }, [props.audio, dotOffset, trackLayout, duration]);\n\n const animatedWidth = trackLayout.width !== undefined ? trackLayout.width : 1;\n\n return (\n <View\n style={{\n marginTop: 15,\n marginBottom: 15,\n color: 'white',\n marginHorizontal: props.fullWidth ? 0 : 20,\n borderRadius: 6,\n backgroundColor: props.color || colors.smartPink,\n }}>\n <View\n style={{\n flex: 0,\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'stretch',\n paddingLeft: 8,\n paddingRight: 8,\n paddingTop: 15,\n paddingBottom: 15,\n }}>\n <View\n style={{\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: 8,\n paddingRight: 8,\n height: 35,\n }}>\n <TouchableOpacity\n style={{\n width: 50,\n height: 30,\n marginRight: 10,\n marginLeft: 10,\n zIndex: 2,\n }}\n onPress={onPressPlayPause}>\n {playing ? (\n <Image\n source={require('../../../assets/icons/stop.svg')}\n style={{ width: 30, height: 30 }}\n />\n ) : (\n <Image\n source={require('../../../assets/icons/play.svg')}\n style={{ width: 30, height: 30 }}\n />\n )}\n </TouchableOpacity>\n <Animated.View\n onLayout={measureTrack}\n style={{\n flex: 8,\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'center',\n height: TRACK_SIZE,\n borderRadius: TRACK_SIZE / 2,\n backgroundColor: 'white',\n }}>\n <Animated.View\n style={{\n width: dotOffset.x.interpolate({\n inputRange: [0, animatedWidth],\n outputRange: [0, animatedWidth],\n extrapolate: 'clamp',\n }),\n height: TRACK_SIZE,\n backgroundColor: 'lightgrey',\n }}\n {..._panResponder.panHandlers}\n />\n </Animated.View>\n </View>\n </View>\n </View>\n );\n};\n\nexport default AudioPlayer;\n","import React from 'react';\nimport { ImageBackground, Text, View, StyleSheet, ScrollView, StatusBar } from 'react-native';\nimport { AntDesign } from '@expo/vector-icons';\n// import Button from '@components/Button';\nimport { Image } from 'expo-image';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport { mediaUrl } from '@utils/mediaUrl';\nimport AudioPlayer from '@components/AudioPlayer';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport HTMLView from 'react-native-htmlview';\n\nconst colorsArray = [\n colors.ltPink,\n colors.ltOrange,\n colors.ltYellow,\n colors.ltTeal,\n colors.ltPurple,\n colors.smartPink,\n colors.smartOrange,\n colors.smartYellow,\n colors.smartTeal,\n colors.smartPurple,\n];\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n color: colors.smartPurple,\n },\n container: {\n flex: 1,\n paddingTop: 40,\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-start',\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n titleWrapper: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between'\n },\n songTitle: {\n fontSize: 30,\n marginBottom: 0,\n marginTop: 10,\n color: colors.smartPurple,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 35,\n cursor: 'pointer',\n },\n subtitle: {\n fontSize: 12,\n marginRight: 10,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n\n wrapper: {\n marginTop: 5,\n marginBottom: 20,\n paddingBottom: 20,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n\n levelTag: {\n backgroundColor: colors.ltPink,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n tag: {\n backgroundColor: colors.ltPurple,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n tagWrapper: {\n marginTop: 10,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n cursor: 'pointer',\n },\n readMore: {\n color: colors.darkPurple,\n marginTop: 10,\n marginBottom: 20,\n textAlign: 'left',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n cursor: 'pointer',\n lineHeight: 12,\n },\n flex: {\n flex: 1,\n },\n pointer: {\n cursor: 'pointer',\n }\n});\n\nexport default function SongListItem(props) {\n const {\n user,\n dispatch,\n setFavoriteSongs,\n } = useAppModule();\n const favoriteSongs = JSON.parse(JSON.stringify(user?.user?.favoriteSongs || []));\n const { navigation, color, subtitle, song, showFavorite = false } = props;\n if (!song) return null;\n let { id, title, tags, level, description, origin } = song;\n const isFavorite = favoriteSongs && favoriteSongs.findIndex(s => s.id === id) !== -1;\n const audio = mediaUrl(song?.audio?.url);\n tags = tags?.length > 0 ? tags?.map(t => t.title) : [];\n\n const songOnClick = () => {\n navigation.navigate('DetailsStack', { view: 'song', data: song });\n };\n\n return (\n <View style={styles.wrapper}>\n {(level || tags.length > 0) && (\n <ScrollView\n showsHorizontalScrollIndicator={false}\n horizontal\n contentContainerStyle={styles.tagWrapper}\n >\n {subtitle ? <Text style={styles.subtitle}>Song</Text> : null}\n <Text\n style={{\n ...styles.levelTag,\n backgroundColor: colorsArray[parseInt(level?.levelNumber)],\n }}>\n {level?.title}\n </Text>\n {tags.map((tag, index) => {\n return (\n <Text key={index} style={styles.tag}>\n {tag}\n </Text>\n );\n })}\n </ScrollView>\n )}\n <View>\n <View style={styles.titleWrapper}>\n <TouchableOpacity \n containerStyle={{...styles.flex, ...styles.pointer}}\n onPress={songOnClick}\n >\n <Text style={styles.songTitle}>{title}</Text>\n </TouchableOpacity>\n {showFavorite && (\n <AntDesign.Button\n name={isFavorite ? 'heart' : 'hearto'}\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={() => dispatch(setFavoriteSongs(favoriteSongs, id, isFavorite))}\n />\n )}\n </View>\n {origin && (\n <HTMLView\n textComponentProps={{ style: { color: colors.smartPurple } }}\n style={{ marginTop: 10 }}\n value={`<div><b>Origin:</b> ${origin}</div>`}\n />\n )}\n {description && (\n <View>\n <HTMLView textComponentProps={{ style: { color: colors.smartPurple } }} value={description} />\n </View>\n )}\n {audio && (\n <AudioPlayer\n onClick={songOnClick}\n fullWidth={true}\n color={color}\n audio={audio}\n songId={id}\n songTitle={title}\n />\n )}\n {\n <TouchableOpacity onPress={songOnClick}>\n <Text style={styles.readMore}>LEARN MORE</Text>\n </TouchableOpacity>\n }\n </View>\n </View>\n );\n}\n","import React, { useState } from 'react';\nimport { Text, View, ScrollView, StyleSheet, StatusBar } from 'react-native';\nimport { StackProps } from '@navigator/stack';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport ArticleListItem from '@components/ArticleListItem';\nimport SongListItem from '@components/SongListItem';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n container: {\n width: '100%',\n maxWidth: 1200,\n padding: 22,\n paddingTop: 0,\n marginHorizontal: 'auto',\n },\n title: {\n fontSize: 24,\n color: colors.smartPurple,\n marginTop: 20,\n },\n wrapper: {},\n subtitle: {\n fontSize: 14,\n color: colors.smartPurple,\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 5,\n marginTop: 20,\n marginBottom: 20,\n backgroundColor: colors.lightPurple,\n },\n circle: {\n width: 40,\n height: 40,\n borderRadius: 20,\n backgroundColor: colors.smartPink,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 15,\n cursor: 'pointer',\n },\n circleTitle: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 20,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 8,\n },\n circleTitleSmall: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 8,\n },\n circleSubtitle: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 7,\n fontWeight: '900',\n lineHeight: 20,\n },\n levelWrapper: {\n marginTop: 10,\n marginBottom: 10,\n marginHorizontal: 'auto',\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'center',\n alignContent: 'flex-start',\n },\n notFound: {\n color: colors.smartPurple,\n fontSize: 14,\n textAlign: 'center',\n marginTop: 20,\n },\n});\n\nexport default function Home({ navigation }: StackProps) {\n const { feed, user, loading } = useAppModule();\n const currenUserLevel = user.user?.level?.id;\n const [activeLevel, setActiveLevel] = useState(currenUserLevel || feed?.levels[0]?.id);\n const level = feed?.levels?.find(lvl => lvl.id === activeLevel);\n const colorsArray = [\n colors.smartPink,\n colors.smartOrange,\n colors.smartYellow,\n colors.smartTeal,\n colors.smartPurple,\n colors.ltPink,\n colors.ltOrange,\n colors.ltYellow,\n colors.ltTeal,\n colors.ltPurple,\n ];\n\n if (!!level) {\n dataLayerPush({\n event: 'page_load',\n page: `Home`,\n level: level?.levelNumber,\n });\n dataLayerPush({\n event: 'page_view',\n page: `Home`,\n level: level?.levelNumber,\n });\n } else {\n dataLayerPush({\n event: 'page_view',\n page: 'Home',\n });\n }\n\n return (\n <ScrollView style={styles.root}>\n {!!level && (\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n {/* Documentation: https://hossein-zare.github.io/react-native-dropdown-picker-website/docs */}\n <View style={styles.levelWrapper}>\n {feed?.levels?.map((l: any) => (\n <TouchableOpacity key={`level${l.levelNumber}`} onPress={() => setActiveLevel(l.id)}>\n <View\n style={{\n ...styles.circle,\n backgroundColor:\n l.id === activeLevel ? colorsArray[parseInt(l.levelNumber)] : colors.gray,\n }}>\n {l.levelNumber === '0' ? (\n <Text style={styles.circleTitleSmall}>0-12</Text>\n ) : (\n <Text style={styles.circleTitle}>{l.levelNumber}</Text>\n )}\n <Text style={styles.circleSubtitle}>\n {l.levelNumber === '0' ? 'MON' : l.levelNumber === '1' ? 'YR' : 'YRS'}\n </Text>\n </View>\n </TouchableOpacity>\n ))}\n </View>\n\n {level?.feed?.map((feedItem, jindex) => {\n const article = feedItem?.article;\n const song = feedItem?.song;\n const songaudio = song?.audio?.url;\n\n return (\n <React.Fragment key={jindex}>\n {article && (\n <ArticleListItem\n subtitle={true}\n theme={'home'}\n key={`${jindex}-article`}\n navigation={navigation}\n article={article}\n />\n )}\n {songaudio && (\n <SongListItem\n color={colors.smartPurple}\n subtitle={true}\n key={`${jindex}-song`}\n navigation={navigation}\n song={song}\n />\n )}\n </React.Fragment>\n );\n })}\n {level?.feed.length === 0 && <Text style={styles.notFound}>No content found</Text>}\n </View>\n )}\n {!loading && !level && <Text style={styles.notFound}>Content loading</Text>}\n </ScrollView>\n );\n}\n","import React, { useState } from 'react';\nimport { Text, View, ScrollView, StyleSheet, StatusBar } from 'react-native';\nimport { StackProps } from '@navigator/stack';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport ArticleListItem from '@components/ArticleListItem';\nimport SongListItem from '@components/SongListItem';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n container: {\n width: '100%',\n maxWidth: 1200,\n padding: 22,\n paddingTop: 0,\n marginHorizontal: 'auto',\n },\n title: {\n fontSize: 24,\n color: colors.smartPurple,\n marginTop: 20,\n },\n wrapper: {},\n subtitle: {\n fontSize: 14,\n color: colors.smartPurple,\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 5,\n marginTop: 20,\n marginBottom: 20,\n backgroundColor: colors.lightPurple,\n },\n circle: {\n width: 40,\n height: 40,\n borderRadius: 20,\n backgroundColor: colors.smartPink,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 15,\n cursor: 'pointer',\n },\n circleTitle: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 20,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 8,\n },\n circleTitleSmall: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 8,\n },\n circleSubtitle: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 7,\n fontWeight: '900',\n lineHeight: 20,\n },\n notFound: {\n color: colors.smartPurple,\n fontSize: 14,\n textAlign: 'center',\n marginTop: 20,\n },\n});\n\nexport default function Favorites({ navigation }: StackProps) {\n const { feed, user } = useAppModule();\n\n const songs = JSON.parse(JSON.stringify(feed?.songs || []));\n const articles = JSON.parse(JSON.stringify(feed?.articles || []));\n const favoriteSongs = JSON.parse(JSON.stringify(user?.user?.favoriteSongs || [])).map(\n song => song.id,\n );\n const favoriteArticles = JSON.parse(JSON.stringify(user?.user?.favoriteArticles || [])).map(\n article => article.id,\n );\n\n const colorsArray = [\n colors.smartPink,\n colors.smartOrange,\n colors.smartYellow,\n colors.smartTeal,\n colors.smartPurple,\n colors.ltPink,\n colors.ltOrange,\n colors.ltYellow,\n colors.ltTeal,\n colors.ltPurple,\n ];\n\n dataLayerPush({ event: 'page_load', page: 'Favorites' });\n\n return (\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n {/* list favorite songs */}\n\n {songs\n .filter(song => favoriteSongs.includes(song.id))\n .map((song, index) => (\n <SongListItem\n color={colors.smartPurple}\n subtitle={true}\n key={`${index}-song`}\n navigation={navigation}\n song={song}\n />\n ))}\n\n {/* list favorite articles */}\n {articles\n .filter(article => favoriteArticles.includes(article.id))\n .map((article, index) => (\n <ArticleListItem\n subtitle={true}\n theme={'home'}\n key={`${index}-article`}\n navigation={navigation}\n article={article}\n />\n ))}\n\n {/* {level?.feed?.map((feedItem, jindex) => {\n const article = feedItem?.article;\n const song = feedItem?.song;\n const songaudio = song?.audio?.url;\n\n return (\n <React.Fragment key={jindex}>\n {article && (\n <ArticleListItem\n subtitle={true}\n theme={'home'}\n key={`${jindex}-article`}\n navigation={navigation}\n article={article}\n />\n )}\n {songaudio && (\n <SongListItem\n color={colors.smartPurple}\n subtitle={true}\n key={`${jindex}-song`}\n navigation={navigation}\n song={song}\n />\n )}\n {(!article && !songaudio) && <Text style={styles.notFound}>No content found</Text>}\n </React.Fragment>\n );\n })} */}\n {/* {(level?.feed.length === 0) && <Text style={styles.notFound}>No content found</Text>} */}\n </View>\n {/* {(!loading && !level) && <Text style={styles.notFound}>Content loading</Text>} */}\n </ScrollView>\n );\n}\n","import React from 'react';\nimport { TouchableOpacity, Image, Text, ActivityIndicator, ButtonProps } from 'react-native';\nimport { IButton } from './Button.typeDefs';\n\nexport default function Button({\n title,\n titleStyle,\n image,\n style,\n activeOpacity,\n disabled,\n isLoading,\n loaderColor,\n imageStyle,\n ...rest\n}: IButton & ButtonProps) {\n const opacityStyle = { opacity: disabled ? 0.6 : 1 };\n return (\n <TouchableOpacity\n style={[opacityStyle, style]}\n activeOpacity={activeOpacity ?? 0.2}\n disabled={disabled ?? isLoading}\n {...rest}>\n {isLoading && <ActivityIndicator size=\"small\" color={loaderColor} />}\n {!isLoading && image && <Image source={image} style={imageStyle} />}\n {!isLoading && title && <Text style={titleStyle}>{title}</Text>}\n </TouchableOpacity>\n );\n}\n","import React, { useState } from 'react';\nimport {\n TouchableOpacity,\n Text,\n View,\n ScrollView,\n StyleSheet,\n StatusBar,\n useWindowDimensions,\n Platform,\n} from 'react-native';\nimport Button from '@components/Button';\nimport { AntDesign } from '@expo/vector-icons';\nimport { StackProps } from '@navigator/stack';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport { Image } from 'expo-image';\nimport { mediaUrl } from '@utils/mediaUrl';\nimport HTMLView from 'react-native-htmlview';\nimport AudioPlayer from '@components/AudioPlayer';\nimport { Video, ResizeMode } from 'expo-av';\nimport ImageView from 'react-native-image-view';\nimport Lightbox from 'react-native-lightbox-v2';\nimport { Vimeo } from 'react-native-vimeo-iframe';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n color: colors.smartPurple,\n },\n container: {\n width: '100%',\n maxWidth: 1200,\n padding: 22,\n paddingTop: 0,\n marginHorizontal: 'auto',\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n title: {\n fontSize: 24,\n marginBottom: 20,\n },\n titleWrapper: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 5,\n backgroundColor: colors.pink,\n },\n author: {\n color: colors.smartPurple,\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 12,\n fontWeight: '500',\n lineHeight: 12,\n marginBottom: 10,\n },\n text: {\n color: colors.smartPurple,\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 12,\n fontWeight: '500',\n lineHeight: 12,\n },\n caption: {\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 12,\n marginTop: 10,\n },\n articleTitle: {\n fontSize: 40,\n lineHeight: 40,\n marginBottom: 10,\n marginTop: 10,\n color: colors.smartPurple,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n songTitle: {\n fontSize: 40,\n lineHeight: 40,\n marginBottom: 0,\n marginTop: 10,\n color: colors.smartPink,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n songSubtitle: {\n fontSize: 18,\n marginTop: 30,\n color: colors.smartPink,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 22,\n },\n songSubtitleBg: {\n fontSize: 18,\n marginTop: 5,\n color: colors.smartPink,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 22,\n },\n wrapper: {\n marginTop: 20,\n marginBottom: 20,\n paddingBottom: 20,\n width: '100%',\n },\n songWrapper: {\n marginTop: 5,\n marginBottom: 20,\n paddingBottom: 20,\n },\n tag: {\n backgroundColor: colors.ltPurple,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n levelTag: {\n backgroundColor: colors.ltPink,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n },\n tagWrapper: {\n marginTop: 10,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n },\n instructionsWrapper: {\n // backgroundColor: colors.smartPink,\n border: `2px solid ${colors.smartPink}`,\n borderRadius: 6,\n padding: 10,\n paddingTop: 0,\n marginTop: 15,\n },\n imgContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\nconst colorsArray = [\n colors.ltPink,\n colors.ltOrange,\n colors.ltYellow,\n colors.ltTeal,\n colors.ltPurple,\n colors.smartPink,\n colors.smartOrange,\n colors.smartYellow,\n colors.smartTeal,\n colors.smartPurple,\n];\n\nexport default function Details({ navigation, route }: StackProps) {\n const { user, dispatch, setFavoriteArticles, setFavoriteSongs } = useAppModule();\n const { from, view, data } = route.params;\n const img = data?.image;\n const video = mediaUrl(data?.video?.url);\n const audio = mediaUrl(data?.audio?.url);\n const vimeo_video_id = data?.vimeo_video_id;\n const { width } = useWindowDimensions();\n const mediaWidth = width > 1000 ? 1000 : width - 60;\n const imgHeight = mediaWidth * (img?.height / img?.width);\n const [openImage, setOpenImage] = useState(false);\n const favoriteArticles = JSON.parse(JSON.stringify(user?.user?.favoriteArticles || []));\n const favoriteSongs = JSON.parse(JSON.stringify(user?.user?.favoriteSongs || []));\n\n dataLayerPush({\n event: 'page_view',\n page: view === 'article' ? 'Article' : 'Song',\n title: data.title,\n });\n dataLayerPush({\n event: 'page_load',\n page: view === 'article' ? 'Article' : 'Song',\n title: data.title,\n });\n\n if (view === 'article') {\n let { id, title, author, text, tags } = data;\n const isFavorite = favoriteArticles && favoriteArticles.findIndex(s => s.id === id) !== -1;\n\n tags = tags?.length > 0 ? tags.map(t => t.title) : [];\n return (\n <React.Fragment>\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <View style={styles.wrapper}>\n {video && (\n <Video\n videoStyle={{ width: mediaWidth, height: mediaWidth / 1.6 }}\n style={{ width: mediaWidth, marginLeft: 0, height: mediaWidth / 1.6 }}\n source={{\n uri: video,\n }}\n useNativeControls\n resizeMode={ResizeMode.CONTAIN}\n isLooping\n />\n )}\n {vimeo_video_id && (\n <>\n {Platform.OS === 'web' ? (\n <div style={{ padding: '56.25% 0 0 0', margin: '10px', position: 'relative' }}>\n <iframe\n style={{\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: '0',\n left: '0',\n border: '0',\n }}\n src={`https://player.vimeo.com/video/${vimeo_video_id}`}\n allow=\"autoplay; fullscreen; picture-in-picture\"></iframe>\n </div>\n ) : (\n <Vimeo\n videoId={vimeo_video_id}\n params={'api=1&autoplay=0'}\n //handlers={videoCallbacks}\n />\n )}\n </>\n )}\n\n {img?.url && (\n <View style={{ width: mediaWidth }}>\n <Lightbox>\n <Image\n style={{ marginTop: 20, marginLeft: 0, height: imgHeight }}\n resizeMode=\"center\"\n source={{ uri: mediaUrl(img?.url) }}\n />\n </Lightbox>\n </View>\n )}\n\n {tags.length > 0 && (\n <View style={styles.tagWrapper}>\n {tags.map((tag, index) => {\n return (\n <Text key={`tag1_${index}`} style={styles.tag}>\n {tag}\n </Text>\n );\n })}\n </View>\n )}\n <View style={styles.titleWrapper}>\n <Text style={styles.articleTitle}>{title}</Text>\n <AntDesign.Button\n name={isFavorite ? 'heart' : 'hearto'}\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={() => dispatch(setFavoriteArticles(favoriteArticles, id, isFavorite))}\n />\n </View>\n {author && <Text style={styles.author}>{`by ${author}`}</Text>}\n {text !== null && <HTMLView value={text} />}\n </View>\n </View>\n </ScrollView>\n </React.Fragment>\n );\n }\n if (view === 'song') {\n let {\n id,\n title,\n subtitle,\n tags,\n description,\n origin,\n instructions,\n musicLearning,\n cognitiveSkills,\n level,\n } = data;\n const isFavorite = favoriteSongs && favoriteSongs.findIndex(s => s.id === id) !== -1;\n\n let tagTitles = tags?.length > 0 ? tags.map(t => t.title) : [];\n return (\n <React.Fragment>\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <View style={styles.songWrapper}>\n {(level || tags?.length > 0) && (\n <View style={styles.tagWrapper}>\n {level && (\n <Text\n style={{\n ...styles.levelTag,\n backgroundColor: colorsArray[parseInt(level.levelNumber)],\n }}>\n {level?.title}\n </Text>\n )}\n {tagTitles.map((tag, index) => {\n return (\n <Text key={`tag2_${index}`} style={styles.tag}>\n {tag}\n </Text>\n );\n })}\n </View>\n )}\n <View style={styles.titleWrapper}>\n <Text style={styles.songTitle}>{title}</Text>\n <AntDesign.Button\n name={isFavorite ? 'heart' : 'hearto'}\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={() => dispatch(setFavoriteSongs(favoriteSongs, id, isFavorite))}\n />\n </View>\n {subtitle && <Text style={{ ...styles.songSubtitle, marginTop: 0 }}>{subtitle}</Text>}\n {video && (\n <View\n style={{\n flex: 1,\n marginTop: 30,\n alignItems: 'center',\n justifyContent: 'center',\n }}>\n <Video\n videoStyle={{ marginTop: 10, height: mediaWidth / 1.77 }}\n style={{\n width: mediaWidth,\n height: mediaWidth / 1.77,\n }}\n source={{\n uri: video,\n }}\n useNativeControls\n resizeMode={ResizeMode.CONTAIN}\n isLooping\n />\n </View>\n )}\n {vimeo_video_id && (\n <>\n {Platform.OS === 'web' ? (\n <div style={{ padding: '56.25% 0 0 0', margin: '10px', position: 'relative' }}>\n <iframe\n style={{\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: '0',\n left: '0',\n border: '0',\n }}\n src={`https://player.vimeo.com/video/${vimeo_video_id}`}\n allow=\"autoplay; fullscreen; picture-in-picture\"></iframe>\n </div>\n ) : (\n <Vimeo\n videoId={vimeo_video_id}\n params={'api=1&autoplay=0'}\n //handlers={videoCallbacks}\n />\n )}\n </>\n )}\n\n {img?.url && (\n <Lightbox>\n <Image\n style={{ marginTop: 20, height: imgHeight }}\n resizeMode=\"center\"\n source={{ uri: mediaUrl(img?.url) }}\n />\n </Lightbox>\n )}\n\n {audio && (\n <AudioPlayer audio={audio} fullWidth={true} songId={id} songTitle={title} />\n )}\n {origin && (\n <HTMLView\n textComponentProps={{ style: { color: colors.smartPurple } }}\n value={`<div><b>Origin:</b> ${origin}</div>`}\n />\n )}\n {description && (\n <View>\n <Text style={styles.songSubtitle}>Description</Text>\n <HTMLView\n textComponentProps={{ style: { color: colors.smartPurple } }}\n value={description}\n />\n </View>\n )}\n {tags?.find((t: any) => t.tag_category?.title === 'Instrument type') && (\n <View>\n <Text style={styles.songSubtitle}>Instruments</Text>\n {tags\n ?.filter((t: any) => t.tag_category?.title === 'Instrument type')\n .map((t: any, i: number) => {\n return (\n <Text key={`tag3_${i}`} style={{ color: colors.smartPurple }}>\n {t.title}\n </Text>\n );\n })}\n </View>\n )}\n {instructions && (\n <View style={styles.instructionsWrapper}>\n <Text style={styles.songSubtitleBg}>Instructions</Text>\n <HTMLView\n textComponentProps={{ style: { color: colors.smartPurple } }}\n value={instructions}\n />\n </View>\n )}\n {musicLearning && (\n <View>\n <Text style={styles.songSubtitle}>Music Learning</Text>\n <HTMLView\n textComponentProps={{ style: { color: colors.smartPurple } }}\n value={musicLearning}\n />\n </View>\n )}\n {cognitiveSkills && (\n <View>\n <Text style={styles.songSubtitle}>Cognitive Skills</Text>\n <HTMLView\n textComponentProps={{ style: { color: colors.smartPurple } }}\n value={cognitiveSkills}\n />\n </View>\n )}\n </View>\n </View>\n </ScrollView>\n </React.Fragment>\n );\n }\n\n return (\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n <Text style={styles.title}>{`Details (from ${from})`}</Text>\n <Button\n title=\"Go back\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n onPress={() => {\n console.log('pageback');\n dataLayerPush({\n event: 'page_back',\n });\n //navigation.goBack();\n }}\n />\n </View>\n </ScrollView>\n );\n}\n","import React from 'react';\nimport { Platform } from 'react-native';\nimport { createBottomTabNavigator } from '@react-navigation/bottom-tabs';\nimport { AntDesign } from '@expo/vector-icons';\nimport { colors } from '@theme';\nimport { TabParamList, TabBarStatus } from './Tab.typeDefs';\nimport {\n HomeStackNavigator,\n ArticlesStackNavigator,\n SongsStackNavigator,\n PreferencesStackNavigator,\n FavoritesStackNavigator,\n} from '../stack/Stack';\n//articles.svg from assets/images\nimport { Image } from 'react-native';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst Tab = createBottomTabNavigator<TabParamList>();\n\nconst renderTabBarIcon = (tabName: keyof TabParamList) => (tabStatus: TabBarStatus) => {\n switch (tabName) {\n case 'HomeTab':\n return <AntDesign name=\"home\" size={26} color={tabStatus.color} />;\n case 'ArticlesTab':\n return (\n <Image\n source={require('../../../assets/images/articles.svg')}\n style={{ width: 26, height: 30, tintColor: tabStatus.color }}\n />\n );\n case 'SongsTab':\n return (\n <Image\n source={require('../../../assets/images/songs.svg')}\n style={{ width: 26, height: 26, tintColor: tabStatus.color }}\n />\n );\n case 'PreferencesTab':\n return (\n <Image\n source={require('../../../assets/images/preferences.svg')}\n style={{ width: 26, height: 26, tintColor: tabStatus.color }}\n />\n );\n // add more...\n }\n};\n\nexport default function TabNavigator() {\n return (\n <Tab.Navigator\n screenOptions={({ route }) => ({\n tabBarStyle: {\n borderWidth: 0,\n backgroundColor: colors.smartPurple,\n paddingVertical: 0,\n paddingBottom: Platform.OS === 'web' ? 5 : 0,\n overflow: 'hidden',\n height: Platform.OS === 'web' ? 60 : 70,\n },\n tabBarIcon: renderTabBarIcon(route.name),\n headerShown: false,\n tabBarInactiveTintColor: 'grey',\n tabBarInactiveBackgroundColor: colors.smartPurple,\n tabBarActiveTintColor: colors.white,\n tabBarActiveBackgroundColor: colors.smartPurple,\n })}\n screenListeners={{\n tabPress: e => {\n const tab = e.target?.split('-')[0];\n dataLayerPush({\n event: 'page_view',\n page:\n tab === 'ArticlesTab'\n ? 'Articles'\n : tab === 'SongsTab'\n ? 'Song Book'\n : tab === 'HomeTab'\n ? 'Home'\n : tab === 'PreferencesTab'\n ? 'Preferences'\n : 'Favorites',\n });\n dataLayerPush({ event: 'tab_press', tab: tab });\n },\n }}>\n <Tab.Screen name=\"HomeTab\" component={HomeStackNavigator} options={{ title: 'Home' }} />\n <Tab.Screen\n name=\"ArticlesTab\"\n component={ArticlesStackNavigator}\n options={{ title: 'Articles' }}\n />\n <Tab.Screen\n name=\"SongsTab\"\n component={SongsStackNavigator}\n options={{ title: 'Song Book' }}\n />\n <Tab.Screen\n name=\"PreferencesTab\"\n component={PreferencesStackNavigator}\n options={{ title: 'Preferences' }}\n />\n <Tab.Screen\n name=\"FavoritesTab\"\n component={FavoritesStackNavigator}\n options={{ title: 'Favorites', tabBarButton: () => null }}\n />\n </Tab.Navigator>\n );\n}\n","import React, { useRef, useState } from 'react';\nimport { SafeAreaView, TouchableOpacity, Text, View, StyleSheet, ScrollView } from 'react-native';\nimport { createDrawerNavigator } from '@react-navigation/drawer';\nimport TabNavigator from '../tab/Tab';\nimport { DrawerParamList } from './Drawer.typeDefs';\nimport { colors } from '@theme';\nimport { AntDesign } from '@expo/vector-icons';\nimport { Image } from 'react-native';\nimport { Drawer } from 'react-native-drawer-layout';\nimport { useAppModule } from '@modules/app.module';\n//import { Checkbox, CheckboxGroup,VStack, CheckboxLabel,CheckboxIcon,CheckboxIndicator,CheckIcon } from '@gluestack-ui/themed';\n//import {renderTabBarIcon} from './../tab/Tab';\nimport Checkbox from 'expo-checkbox';\nimport { Input, InputField } from '@gluestack-ui/themed';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst renderTabBarIcon = tabName => {\n switch (tabName) {\n case 'HomeTab':\n return <AntDesign name=\"home\" size={26} color={colors.white} />;\n case 'ArticlesTab':\n return (\n <Image\n source={require('../../../assets/images/articles.svg')}\n style={{ width: 26, height: 30, tintColor: colors.white }}\n />\n );\n case 'SongsTab':\n return (\n <Image\n source={require('../../../assets/images/songs.svg')}\n style={{ width: 26, height: 26, tintColor: colors.white }}\n />\n );\n case 'FavoritesTab':\n return <AntDesign name=\"staro\" size={26} color={colors.white} />;\n case 'PreferencesTab':\n return (\n <Image\n source={require('../../../assets/images/preferences.svg')}\n style={{ width: 26, height: 26, tintColor: colors.white }}\n />\n );\n // add more...\n }\n};\n\n//const Drawer = createDrawerNavigator<DrawerParamList>();\n\nconst styles = StyleSheet.create({\n root: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n height: '100%',\n backgroundColor: colors.smartPurple,\n color: colors.white,\n },\n rootScroll: {},\n catHeader: {\n color: colors.white,\n marginLeft: 20,\n marginTop: 10,\n marginBottom: 10,\n fontSize: 14,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n favoriteHeader: {\n marginTop: 5,\n marginBottom: 5,\n },\n tag: {\n color: colors.white,\n marginTop: 0,\n marginBottom: 0,\n fontSize: 14,\n padding: 0,\n textTransform: 'capitalize',\n fontFamily: 'Nunito_500Medium',\n },\n menuItem: {\n color: colors.white,\n marginLeft: 20,\n marginTop: 10,\n marginBottom: 10,\n fontSize: 16,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n tagHeaderWrapper: {\n paddingLeft: 0,\n },\n tagHeaderContainerFirst: {\n marginTop: 10,\n },\n tagHeaderContainerLast: {\n marginBottom: 10,\n },\n tagItemWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n paddingLeft: 20,\n paddingRight: 10,\n marginTop: 2,\n marginBottom: 2,\n },\n menuItemWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n width: '100%',\n marginLeft: 20,\n marginTop: 10,\n marginBottom: 10,\n },\n section: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n paragraph: {\n fontSize: 15,\n },\n checkbox: {\n margin: 8,\n },\n searchBox: {\n color: colors.white,\n margin: 20,\n backgroundColor: colors.white,\n },\n});\n\nconst drawerContents = ({ navigation }) => {\n /* {navigation} */\n const handleItemClick = item => {\n dataLayerPush({ event: 'tab_press', tab: item.navigation });\n dataLayerPush({ event: 'page_view', page: item.title });\n navigation.navigate(item.navigation);\n };\n\n const items = [\n { title: 'Home', navigation: 'HomeTab' },\n { title: 'Articles', navigation: 'ArticlesTab' },\n { title: 'Song Book', navigation: 'SongsTab' },\n { title: 'Favorites', navigation: 'FavoritesTab' },\n { title: 'Preferences', navigation: 'PreferencesTab' },\n ];\n return (\n <SafeAreaView style={{ height: '100%' }}>\n <View style={styles.root}>\n {items.map((item, index) => (\n <TouchableOpacity key={index} onPress={() => handleItemClick(item)}>\n <View style={styles.menuItemWrapper}>\n {renderTabBarIcon(item.navigation)}\n <Text style={styles.menuItem}>{item.title}</Text>\n </View>\n </TouchableOpacity>\n ))}\n </View>\n </SafeAreaView>\n );\n};\n\nconst RightDrawerContext = React.createContext();\nconst LeftDrawer = createDrawerNavigator();\n\nconst LeftDrawerScreen = () => {\n return (\n <LeftDrawer.Navigator\n initialRouteName=\"MainDrawer\"\n screenOptions={{ headerShown: false }}\n drawerContent={drawerContents}>\n <LeftDrawer.Screen name=\"MainDrawer\" component={TabNavigator} />\n </LeftDrawer.Navigator>\n );\n};\n\nfunction RightDrawerScreen() {\n const {\n feed,\n filterArticlesKeyword,\n filterSongsKeyword,\n filterFavoriteArticles,\n filterFavoriteSongs,\n filterArticles,\n filterSongs,\n filterSongsLevels,\n dispatch,\n setFilterArticles,\n setFilterSongs,\n setFilterSongsLevels /*, filterArticles, filterSongs*/,\n setFilterArticlesKeyword,\n setFilterSongsKeyword,\n setFilterFavoriteArticles,\n setFilterFavoriteSongs,\n } = useAppModule();\n const [rightDrawerOpen, setRightDrawerOpen] = React.useState(false);\n\n const [mode, setMode] = useState('articles');\n const value = React.useMemo(\n () => ({\n openRightDrawer: (mode = 'articles') => {\n setRightDrawerOpen(true);\n setMode(mode);\n },\n closeRightDrawer: () => setRightDrawerOpen(false),\n }),\n [],\n );\n\n const handleKeywordChange = (newValue: string) => {\n dispatch(\n mode === 'articles' ? setFilterArticlesKeyword(newValue) : setFilterSongsKeyword(newValue),\n );\n };\n\n const handleFavoriteChange = (newValue: boolean) => {\n dispatch(\n mode === 'articles' ? setFilterFavoriteArticles(newValue) : setFilterFavoriteSongs(newValue),\n );\n };\n\n const handleCheckboxChange = (newValue: boolean, tag: any) => {\n if (mode === 'articles') {\n dispatch(\n setFilterArticles(\n newValue === true\n ? [...filterArticles, { id: tag.id, title: tag.title }]\n : filterArticles?.filter(item => item.id !== tag.id),\n ),\n );\n } else {\n dispatch(\n setFilterSongs(\n newValue === true\n ? [...filterSongs, { id: tag.id, title: tag.title }]\n : filterSongs?.filter(item => item.id !== tag.id),\n ),\n );\n }\n };\n\n const handleLevelChange = (newValue: boolean, level: any) => {\n dispatch(\n setFilterSongsLevels(\n newValue === true\n ? [...filterSongsLevels, { id: level.id, title: level?.title }]\n : filterSongsLevels?.filter(item => item.id !== level.id),\n ),\n );\n };\n\n const items = mode === 'articles' ? feed?.articleTags : feed?.songTags;\n const keys = Object.keys(items || {});\n keys.sort((a, b) => a - b);\n return (\n <Drawer\n open={rightDrawerOpen}\n onOpen={() => setRightDrawerOpen(true)}\n onClose={() => setRightDrawerOpen(false)}\n // drawerPosition=\"right\"\n drawerType=\"slide\"\n renderDrawerContent={() => {\n return (\n keys.length > 0 && (\n <View style={{ backgroundColor: colors.smartPink, height: '100%', width: '100%' }}>\n <Input style={styles.searchBox} variant=\"outline\" size=\"md\">\n <InputField\n placeholder=\"Search Here\"\n value={mode === 'songs' ? filterSongsKeyword : filterArticlesKeyword}\n onChange={e => handleKeywordChange(e.target.value)}\n />\n </Input>\n <ScrollView style={styles.rootScroll}>\n <React.Fragment>\n <TouchableOpacity\n style={{ ...styles.tagHeaderContainerFirst, ...styles.tagHeaderContainerLast }}\n onPress={() =>\n handleFavoriteChange(\n !(mode === 'songs' ? filterFavoriteSongs : filterFavoriteArticles),\n )\n }>\n <View style={{ ...styles.tagItemWrapper, ...styles.tagHeaderWrapper }}>\n <Text style={{ ...styles.catHeader, ...styles.favoriteHeader }}>\n Favorites\n </Text>\n <Checkbox\n style={{ ...styles.checkbox, ...styles.favoriteHeader }}\n value={mode === 'songs' ? filterFavoriteSongs : filterFavoriteArticles}\n onValueChange={() =>\n handleFavoriteChange(\n !(mode === 'songs' ? filterFavoriteSongs : filterFavoriteArticles),\n )\n }\n />\n </View>\n </TouchableOpacity>\n </React.Fragment>\n {mode === 'songs' && (\n <React.Fragment>\n <Text style={styles.catHeader}>Age</Text>\n {feed?.levels?.map((level, index) => {\n return (\n <TouchableOpacity\n key={index}\n onPress={() => {\n handleLevelChange(\n !filterSongsLevels.find(l => l.id === level.id),\n level,\n );\n }}>\n <View style={{ ...styles.tagItemWrapper }}>\n <Text style={styles.tag}>{`${level?.title}`}</Text>\n <Checkbox\n style={styles.checkbox}\n value={filterSongsLevels.find(l => l.id === level.id)}\n onValueChange={() =>\n handleLevelChange(\n !filterSongsLevels.find(l => l.id === level.id),\n level,\n )\n }\n />\n </View>\n </TouchableOpacity>\n );\n })}\n </React.Fragment>\n )}\n {keys?.map((key, index) => {\n const tagCategory = items?.[key];\n return (\n <React.Fragment key={index}>\n <Text style={styles.catHeader}>{tagCategory.title}</Text>\n {tagCategory.tags.map((tag, jindex) => {\n //checkbox with tag title\n return (\n <TouchableOpacity\n key={jindex}\n onPress={() => {\n handleCheckboxChange(\n mode === 'articles'\n ? !filterArticles?.find(t => t.id === tag.id)\n : !filterSongs?.find(t => t.id === tag.id),\n tag,\n );\n }}>\n <View style={{ ...styles.tagItemWrapper }}>\n <Text style={styles.tag}>{tag.title}</Text>\n <Checkbox\n style={styles.checkbox}\n value={\n mode === 'articles'\n ? filterArticles?.find(t => t.id === tag.id)\n : filterSongs?.find(t => t.id === tag.id)\n }\n onValueChange={() => {\n handleCheckboxChange(\n mode === 'articles'\n ? !filterArticles?.find(t => t.id === tag.id)\n : !filterSongs?.find(t => t.id === tag.id),\n tag,\n );\n }}\n />\n </View>\n </TouchableOpacity>\n );\n })}\n </React.Fragment>\n );\n })}\n </ScrollView>\n </View>\n )\n );\n }}>\n <RightDrawerContext.Provider value={value}>\n <LeftDrawerScreen />\n </RightDrawerContext.Provider>\n </Drawer>\n );\n}\n\nexport { RightDrawerContext };\nexport default RightDrawerScreen;\n","import React, { useState } from 'react';\nimport {\n ImageBackground,\n Text,\n TouchableOpacity,\n View,\n ScrollView,\n StyleSheet,\n StatusBar,\n useWindowDimensions,\n} from 'react-native';\nimport Button from '@components/Button';\nimport { StackProps } from '@navigator/stack';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\n//import { Image } from 'expo-image';\nimport { mediaUrl } from '@utils/mediaUrl';\nimport { RightDrawerContext } from './../../navigator/drawer/Drawer';\nimport { Dimensions } from 'react-native';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n container: {\n width: '100%',\n maxWidth: 1200,\n padding: 22,\n paddingTop: 0,\n marginHorizontal: 'auto',\n alignItems: 'center',\n },\n catTitle: {\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 16,\n fontWeight: '900',\n lineHeight: 16,\n letterSpacing: 1.92,\n marginTop: 20,\n marginBottom: 10,\n },\n caption: {\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 12,\n marginTop: 10,\n },\n title: {\n fontSize: 24,\n marginBottom: 20,\n },\n imgTitle: {\n fontSize: 24,\n color: colors.white,\n textAlign: 'center',\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 22,\n letterSpacing: 2.16,\n },\n overlay: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n img: {\n height: 173,\n marginBottom: 20,\n },\n wrapper: {\n marginTop: 5,\n cursor: 'pointer',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 6,\n marginBottom: 20,\n backgroundColor: colors.smartPurple,\n },\n notFound: {\n color: colors.smartPurple,\n fontSize: 14,\n textAlign: 'center',\n marginTop: 20,\n },\n});\n\nexport default function Articles({ navigation }: StackProps) {\n const { feed } = useAppModule();\n const { openRightDrawer } = React.useContext(RightDrawerContext);\n const { width } = useWindowDimensions();\n\n const articles = JSON.parse(JSON.stringify(feed?.articles || []));\n const categories = JSON.parse(JSON.stringify(feed?.categories || []));\n const cats = categories?.sort(\n (a, b) => parseInt(a.attributes?.order) - parseInt(b.attributes?.order),\n );\n\n dataLayerPush({ event: 'page_load', page: 'Articles' });\n\n return (\n <ScrollView style={styles.root}>\n {categories?.length > 0 && (\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n {/* <TouchableOpacity onPress={() => {openRightDrawer()}}>\n <Text style={styles.caption}>FILTER</Text>\n </TouchableOpacity> */}\n\n <View>\n <Text style={styles.catTitle}>BROWSE BY THEME</Text>\n {cats?.map((cat, index) => {\n const img = cat.attributes?.image?.data?.attributes?.formats?.thumbnail?.url;\n return (\n <TouchableOpacity\n key={`cat_${cat.id}`}\n onPress={() => {\n navigation.navigate('ArticlesListStack', { from: 'Articles', catId: cat.id });\n }}>\n <View style={styles.wrapper}>\n {img ? (\n <ImageBackground\n source={mediaUrl(img)}\n style={{ ...styles.img, width: Math.min(width - 40, 357) }}>\n <View style={styles.overlay}>\n <Text key={index} style={styles.imgTitle}>\n {cat.attributes?.title}\n </Text>\n </View>\n </ImageBackground>\n ) : (\n <Text key={index} style={styles.title}>\n {cat.attributes?.title}\n </Text>\n )}\n </View>\n </TouchableOpacity>\n );\n })}\n </View>\n <Button\n title=\"See All\"\n titleStyle={styles.buttonTitle}\n style={{ ...styles.button, width: Math.min(width - 40, 357) }}\n onPress={() => {\n navigation.navigate('ArticlesListStack', { from: 'Articles', catId: 0 });\n //setCategory(0);\n }}\n />\n </View>\n )}\n {articles.length === 0 && <Text style={styles.notFound}>No articles found</Text>}\n </ScrollView>\n );\n}\n","import React, { useState } from 'react';\nimport {\n ImageBackground,\n TouchableOpacity,\n Text,\n View,\n StyleSheet,\n ScrollView,\n StatusBar,\n} from 'react-native';\n// import Button from '@components/Button';\n// import { Image } from 'expo-image';\n// import {mediaUrl} from '@utils/mediaUrl'\nimport { StackProps } from '@navigator/stack';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport ArticleListItem from '@components/ArticleListItem';\nimport { RightDrawerContext } from './../../navigator/drawer/Drawer';\nimport { Button } from '@gluestack-ui/themed';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n scrollRoot: {\n width: '100%',\n height: '100%',\n paddingTop: 0,\n marginTop: 0,\n },\n container: {\n width: '100%',\n maxWidth: 1200,\n padding: 22,\n paddingTop: 0,\n marginHorizontal: 'auto',\n marginTop: 0,\n },\n author: {\n color: colors.smartPurple,\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 12,\n fontWeight: '500',\n lineHeight: 12,\n marginBottom: 10,\n },\n text: {\n color: colors.smartPurple,\n textAlign: 'left',\n includeFontPadding: false,\n fontFamily: 'Nunito_500Medium',\n fontSize: 12,\n fontWeight: '500',\n lineHeight: 12,\n },\n catTitle: {\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 16,\n fontWeight: '900',\n lineHeight: 16,\n letterSpacing: 1.92,\n marginTop: 10,\n marginBottom: 10,\n },\n caption: {\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 12,\n marginTop: 10,\n marginBottom: 0,\n marginRight: 20,\n marginLeft: 20,\n },\n title: {\n fontSize: 22,\n marginBottom: 10,\n marginTop: 10,\n color: colors.smartPurple,\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n lineHeight: 22,\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n img: {\n width: 364,\n height: 173,\n marginBottom: 20,\n },\n wrapper: {\n marginTop: 5,\n marginBottom: 20,\n paddingBottom: 20,\n cursor: 'pointer',\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 5,\n backgroundColor: colors.smartPurple,\n },\n readMore: {\n color: colors.smartPurple,\n marginTop: 10,\n textAlign: 'left',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n lineHeight: 12,\n },\n tag: {\n backgroundColor: colors.ltPurple,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n tagWrapper: {\n marginTop: 10,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n },\n filterItems: {\n marginTop: 0,\n marginBottom: 10,\n marginRight: 20,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n },\n deleteFilterButton: {\n backgroundColor: colors.transparent,\n paddingLeft: 8,\n paddingRight: 0,\n height: 'unset',\n },\n notFound: {\n color: colors.smartPurple,\n fontSize: 14,\n textAlign: 'center',\n marginTop: 20,\n },\n});\n\nexport default function Articles({ navigation, route }: StackProps) {\n const { catId } = route.params;\n const { openRightDrawer } = React.useContext(RightDrawerContext);\n const {\n feed,\n user,\n filterArticles,\n filterArticlesKeyword,\n filterFavoriteArticles,\n dispatch,\n setFilterArticles,\n setFilterArticlesKeyword,\n setFilterFavoriteArticles,\n } = useAppModule();\n\n const articles = JSON.parse(JSON.stringify(feed?.articles || []));\n const categories = JSON.parse(JSON.stringify(feed?.categories || []));\n const favoriteArticles = JSON.parse(JSON.stringify(user?.user?.favoriteArticles || []));\n\n const filteredArcicles = articles?.filter((a: any) => {\n let display = true;\n if (catId && a?.article_category?.id !== catId) display = false;\n if (filterArticles?.length > 0) {\n let found = false;\n filterArticles.forEach(tag => {\n if (a?.tags?.find((t: any) => t.id === tag.id)) found = true;\n });\n if (!found) display = false;\n }\n\n if (!!filterArticlesKeyword && filterArticlesKeyword !== '') {\n if (!a?.title?.toLowerCase().includes(filterArticlesKeyword.toLowerCase())) display = false;\n }\n\n if (filterFavoriteArticles) {\n let found = false;\n favoriteArticles.forEach(s => {\n if (a?.id === s.id) found = true;\n });\n if (!found) display = false;\n }\n\n return display;\n });\n\n dataLayerPush({\n event: 'page_view',\n page: 'Articles List',\n category: categories.find((c: any) => c.id === catId)?.attributes?.title || 'All',\n });\n dataLayerPush({\n event: 'page_load',\n page: 'Articles List',\n category: categories.find((c: any) => c.id === catId)?.attributes?.title || 'All',\n });\n\n return (\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n <Text style={styles.catTitle}>\n {categories.find((c: any) => c.id === catId)?.attributes?.title}\n </Text>\n {articles?.length > 0 && (\n <TouchableOpacity\n onPress={() => {\n openRightDrawer();\n }}>\n <View style={styles.filterItems}>\n <Text style={styles.caption}>FILTER</Text>\n {(filterArticles?.length > 0 ||\n (!!filterArticlesKeyword && filterArticlesKeyword !== '') ||\n filterFavoriteArticles) && (\n <React.Fragment>\n {filterArticles?.map((tag, ind) => (\n <Text key={`tag2_${ind}`} style={styles.tag}>\n {tag.title}\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() =>\n dispatch(\n setFilterArticles(filterArticles.filter((t: any) => t.id !== tag.id)),\n )\n }>\n x\n </Button>\n </Text>\n ))}\n {!!filterArticlesKeyword && filterArticlesKeyword !== '' && (\n <>\n <Text style={{ ...styles.tag, backgroundColor: colors.ltYellow }}>\n {filterArticlesKeyword}\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() => dispatch(setFilterArticlesKeyword(''))}>\n x\n </Button>\n </Text>\n </>\n )}\n {filterFavoriteArticles && (\n <>\n <Text style={{ ...styles.tag, backgroundColor: colors.ltYellow }}>\n Favorite Articles\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() => dispatch(setFilterFavoriteArticles(false))}>\n x\n </Button>\n </Text>\n </>\n )}\n </React.Fragment>\n )}\n </View>\n </TouchableOpacity>\n )}\n {filteredArcicles.map((article, index) => (\n <ArticleListItem\n navigation={navigation}\n key={`art_${index}`}\n article={article}\n showFavorite={true}\n />\n ))}\n {(filteredArcicles.length === 0 || articles.length === 0) && (\n <Text style={styles.notFound}>No articles found</Text>\n )}\n </View>\n </ScrollView>\n );\n}\n","import React, { useRef } from 'react';\nimport { TouchableOpacity, Text, View, ScrollView, StyleSheet, StatusBar } from 'react-native';\nimport { AntDesign } from '@expo/vector-icons';\nimport { StackProps } from '@navigator/stack';\nimport { colors } from '@theme';\nimport { useAppModule } from '@modules/app.module';\nimport { RightDrawerContext } from './../../navigator/drawer/Drawer';\nimport { Button } from '@gluestack-ui/themed';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n scrollRoot: {\n width: '100%',\n height: '100%',\n },\n container: {\n width: '100%',\n maxWidth: 1200,\n padding: 22,\n paddingTop: 0,\n marginHorizontal: 'auto',\n },\n wrapper: {\n marginTop: 20,\n flexDirection: 'row',\n alignItems: 'center',\n cursor: 'pointer',\n },\n circle: {\n width: 40,\n height: 40,\n borderRadius: 20,\n backgroundColor: colors.smartPink,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 15,\n },\n circleTitle: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 20,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 8,\n },\n circleTitleSmall: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 12,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 8,\n },\n circleSubtitle: {\n color: colors.white,\n textAlign: 'center',\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 7,\n fontWeight: '900',\n lineHeight: 20,\n },\n songWrapper: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n songDetails: {\n flex: 1,\n },\n title: {\n fontSize: 16,\n marginBottom: 2,\n color: colors.smartPurple,\n fontFamily: 'Nunito_900Black',\n fontWeight: '900',\n },\n subtitle: {\n fontSize: 10,\n marginBottom: 5,\n color: colors.smartPurple,\n fontFamily: 'Nunito_600SemiBold',\n textTransform: 'uppercase',\n fontWeight: '900',\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 5,\n backgroundColor: colors.lightPurple,\n },\n caption: {\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_400Regular',\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 12,\n marginTop: 10,\n marginBottom: 0,\n marginLeft: 20,\n marginRight: 20,\n },\n tagWrapper: {\n marginTop: 0,\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'baseline',\n alignContent: 'flex-start',\n },\n tag: {\n backgroundColor: colors.ltPurple,\n borderRadius: 4,\n color: colors.smartPurple,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito',\n fontSize: 12,\n fontWeight: '600',\n lineHeight: 12,\n letterSpacing: 0.72,\n padding: 5,\n paddingRight: 10,\n marginRight: 10,\n marginBottom: 5,\n },\n deleteFilterButton: {\n backgroundColor: colors.transparent,\n paddingLeft: 8,\n paddingRight: 0,\n height: 'unset',\n },\n alphabetContainer: {\n // fixed position in the right\n position: 'absolute',\n right: 0,\n top: 50,\n zIndex: 100,\n backgroundColor: 'rgba(255, 255, 255, 0.8)',\n borderTopLeftRadius: 10,\n borderBottomLeftRadius: 10,\n padding: 5,\n },\n alphabet: {\n color: colors.smartPurple,\n fontSize: 14,\n lineHeight: 18,\n textAlign: 'center',\n marginBottom: 3,\n },\n notFound: {\n color: colors.smartPurple,\n fontSize: 14,\n textAlign: 'center',\n marginTop: 20,\n },\n});\n\nexport default function Songs({ navigation }: StackProps) {\n const {\n feed,\n user,\n filterSongs,\n filterSongsLevels,\n filterSongsKeyword,\n filterFavoriteSongs,\n dispatch,\n setFavoriteSongs,\n setFilterSongs,\n setFilterSongsLevels,\n setFilterSongsKeyword,\n setFilterFavoriteSongs,\n } = useAppModule();\n const scrollRef = useRef(null);\n const songs = JSON.parse(JSON.stringify(feed?.songs || []));\n const favoriteSongs = JSON.parse(JSON.stringify(user?.user?.favoriteSongs || []));\n const { openRightDrawer } = React.useContext(RightDrawerContext);\n\n const filteredSongs = songs?.filter(a => {\n let display = true;\n if (filterSongs?.length > 0) {\n let found = false;\n filterSongs.forEach(tag => {\n if (a?.tags?.find(t => t.id === tag.id)) found = true;\n });\n if (!found) display = false;\n }\n\n if (filterSongsLevels?.length > 0) {\n let found = false;\n filterSongsLevels.forEach(tag => {\n if (a?.level?.id === tag.id) found = true;\n });\n if (!found) display = false;\n }\n\n if (!!filterSongsKeyword && filterSongsKeyword !== '') {\n if (\n !a?.title?.toLowerCase().includes(filterSongsKeyword.toLowerCase()) &&\n !a?.subtitle?.toLowerCase().includes(filterSongsKeyword.toLowerCase())\n )\n display = false;\n }\n\n if (filterFavoriteSongs) {\n let found = false;\n favoriteSongs.forEach(s => {\n if (a?.id === s.id) found = true;\n });\n if (!found) display = false;\n }\n\n return display;\n });\n\n dataLayerPush({\n event: 'page_load',\n page: 'Song Book',\n });\n\n return (\n <View style={styles.root}>\n {songs?.length > 0 && (\n <TouchableOpacity\n onPress={() => {\n openRightDrawer('songs');\n }}>\n <View style={styles.tagWrapper}>\n <Text style={styles.caption}>FILTER</Text>\n {(filterSongs?.length > 0 ||\n filterSongsLevels?.length > 0 ||\n (!!filterSongsKeyword && filterSongsKeyword !== '') ||\n filterFavoriteSongs) && (\n <React.Fragment>\n {filterSongsLevels?.map((tag, ind) => (\n <Text\n key={`tag2_${ind}`}\n style={{ ...styles.tag, backgroundColor: colors.ltPink }}>\n {tag.title}\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() =>\n dispatch(\n setFilterSongsLevels(\n filterSongsLevels.filter((t: any) => t.id !== tag.id),\n ),\n )\n }>\n x\n </Button>\n </Text>\n ))}\n {filterSongs?.map((tag, ind) => (\n <Text key={`tag3_${ind}`} style={styles.tag}>\n {tag.title}\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() =>\n dispatch(setFilterSongs(filterSongs.filter((t: any) => t.id !== tag.id)))\n }>\n x\n </Button>\n </Text>\n ))}\n {!!filterSongsKeyword && filterSongsKeyword !== '' && (\n <>\n <Text style={{ ...styles.tag, backgroundColor: colors.ltYellow }}>\n {filterSongsKeyword}\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() => dispatch(setFilterSongsKeyword(''))}>\n x\n </Button>\n </Text>\n </>\n )}\n {filterFavoriteSongs && (\n <>\n <Text style={{ ...styles.tag, backgroundColor: colors.ltYellow }}>\n Favorite Songs\n <Button\n style={styles.deleteFilterButton}\n size=\"sm\"\n onPress={() => dispatch(setFilterFavoriteSongs(false))}>\n x\n </Button>\n </Text>\n </>\n )}\n </React.Fragment>\n )}\n </View>\n </TouchableOpacity>\n )}\n <View style={styles.alphabetContainer}>\n {[...Array(26)].map((_, i) => {\n // is no songs with this letter, skip\n if (\n filteredSongs.findIndex(song =>\n song.title.toUpperCase().startsWith(String.fromCharCode(65 + i)),\n ) === -1\n )\n return null;\n return (\n <Text\n key={`letter_${i}`}\n style={styles.alphabet}\n onPress={() => {\n const letter = String.fromCharCode(65 + i);\n const index = filteredSongs.findIndex(song =>\n song.title.toUpperCase().startsWith(letter),\n );\n if (index !== -1) {\n const scrollY = index * 60;\n scrollRef.current.scrollTo({ y: scrollY });\n }\n }}>\n {String.fromCharCode(65 + i)}\n </Text>\n );\n })}\n </View>\n <ScrollView ref={scrollRef} style={styles.scrollRoot}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n {filteredSongs\n .sort((a, b) => a.title.localeCompare(b.title))\n .map(song => {\n const lvl = song.level?.levelNumber;\n const { id, title, subtitle } = song;\n const isFavorite = favoriteSongs && favoriteSongs.findIndex(s => s.id === id) !== -1;\n const colorsArray = [\n colors.smartPink,\n colors.smartOrange,\n colors.smartYellow,\n colors.smartTeal,\n colors.smartPurple,\n colors.ltPink,\n colors.ltOrange,\n colors.ltYellow,\n colors.ltTeal,\n colors.ltPurple,\n ];\n return (\n <View key={`song_${song.id}`} style={styles.songWrapper}>\n <TouchableOpacity\n style={styles.songDetails}\n onPress={() =>\n navigation.navigate('DetailsStack', { view: 'song', data: song })\n }>\n <View style={styles.wrapper}>\n <View\n style={{ ...styles.circle, backgroundColor: colorsArray[parseInt(lvl)] }}>\n {lvl === '0' ? (\n <Text style={styles.circleTitleSmall}>0-12</Text>\n ) : (\n <Text style={styles.circleTitle}>{lvl}</Text>\n )}\n <Text style={styles.circleSubtitle}>\n {lvl === '0' ? 'MON' : lvl === '1' ? 'YR' : 'YRS'}\n </Text>\n </View>\n\n <View style={styles.songDetails}>\n <Text style={styles.title}>{title}</Text>\n <Text style={styles.subtitle}>{subtitle}</Text>\n </View>\n </View>\n </TouchableOpacity>\n <AntDesign.Button\n name={isFavorite ? 'heart' : 'hearto'}\n size={24}\n color={colors.smartPurple}\n backgroundColor={colors.transparent}\n onPress={() => dispatch(setFavoriteSongs(favoriteSongs, id, isFavorite))}\n />\n </View>\n );\n })}\n {(filteredSongs.length === 0 || songs.length === 0) && (\n <Text style={styles.notFound}>No songs found</Text>\n )}\n </View>\n </ScrollView>\n </View>\n );\n}\n","import React from 'react';\nimport { Text, TextInput, TextInputProps } from 'react-native';\n\ninterface LabeledTextInputProps extends TextInputProps {\n label: string;\n isMandatory?: boolean;\n}\n\nexport default function LabeledTextInput({ label, isMandatory, ...other }: LabeledTextInputProps) {\n return (\n <>\n <Text\n style={{\n color: 'white',\n fontSize: 12,\n marginBottom: 0,\n marginTop: 20,\n padding: 1.5,\n }}>\n {`${label} ${isMandatory ? '*' : ''}`}\n </Text>\n <TextInput {...other} />\n </>\n );\n}\n","import { colors } from \"@theme\";\nimport { StyleSheet } from \"react-native\";\n\nexport const styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.smartPurple,\n },\n container: {\n width: '100%',\n maxWidth: 600,\n padding: 22,\n marginHorizontal: 'auto',\n backgroundColor: colors.smartPurple,\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n },\n title: {\n color: colors.white,\n includeFontPadding: false,\n textTransform: 'uppercase',\n fontFamily: 'Nunito_900Black',\n fontSize: 16,\n fontWeight: '900',\n lineHeight: 16,\n letterSpacing: 1.92,\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n borderRadius: 5,\n backgroundColor: colors.lightPurple,\n marginTop: 32,\n },\n input: {\n height: 40,\n padding: 10,\n borderWidth: 1,\n backgroundColor: colors.white,\n borderRadius: 6,\n borderStyle: 'none',\n placeholderTextColor: colors.ltPurple,\n },\n});","import { colors } from \"@theme\";\nimport { StyleSheet } from \"react-native\";\nimport { View } from \"react-native\";\n\nexport default function HorizontalLine() {\n return (\n <View\n style={{\n borderBottomColor: colors.ltPurple,\n borderBottomWidth: StyleSheet.hairlineWidth,\n width: '100%',\n marginTop: 64,\n marginBottom: 6,\n zIndex: -1,\n }}\n />\n );\n}","import React from 'react';\nimport { Text, TextInput, TextInputProps } from 'react-native';\n//colors\nimport { colors } from '@theme';\n\ninterface LabeledTextInputProps extends TextInputProps {\n message: string;\n}\n\nexport default function ErrorDisplay({ message }: LabeledTextInputProps) {\n return (\n <>\n <Text\n style={{\n color: 'white',\n backgroundColor: colors.smartPink,\n fontSize: 12,\n marginBottom: 0,\n marginTop: 20,\n padding: 10,\n borderRadius: 6,\n }}>\n {message}\n </Text>\n </>\n );\n}\n","import React from 'react';\nimport { Text } from 'react-native';\nimport { colors } from '@theme';\n\ninterface MessageDisplayProps {\n readonly message: string;\n}\n\nexport default function MessageDisplay({ message }: MessageDisplayProps) {\n return (\n <Text\n style={{\n color: 'white',\n backgroundColor: colors.smartTeal,\n fontSize: 12,\n marginBottom: 0,\n marginTop: 20,\n padding: 10,\n borderRadius: 6,\n }}>\n {message}\n </Text>\n );\n}\n","import React, { useState } from 'react';\nimport { Text, View, StatusBar, ScrollView } from 'react-native';\nimport Button from '@components/Button';\nimport { useAppModule, SET_USER_LEVEL } from '@modules/app.module';\nimport DropDownPicker from 'react-native-dropdown-picker';\nimport { cmsAPI } from '@utils/cmsApi';\nimport LabeledTextInput from '@components/LabeledTextInput';\nimport { styles } from './styles';\nimport HorizontalLine from '@components/HorizontalLine';\nimport ErrorDisplay from '@components/ErrorDisplay';\nimport MessageDisplay from '@components/MessageDisplay';\nimport { colors } from '@theme';\n\nexport default function Preferences() {\n const { user, feed, dispatch, logoutUser } = useAppModule();\n const [open, setOpen] = useState(false);\n const [studentLevel, onChangeStudentLevel] = useState(user?.user?.level?.id);\n\n const [changePasswordError, setChangePasswordError] = useState('');\n const [changePasswordMessage, setChangePasswordMessage] = useState('');\n const [currentPassword, setCurrentPassword] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n\n const handleChangePassword = async () => {\n if (!currentPassword || !newPassword || !confirmPassword) {\n setChangePasswordError('Please fill all fields');\n return;\n }\n\n if (newPassword !== confirmPassword) {\n setChangePasswordError('New password and confirm password do not match');\n return;\n }\n\n try {\n await cmsAPI.post(`${process.env.EXPO_PUBLIC_CMS}/api/auth/change-password`, {\n currentPassword: currentPassword,\n password: newPassword,\n passwordConfirmation: confirmPassword\n });\n\n setChangePasswordMessage('Password changed successfully');\n setChangePasswordError('');\n setCurrentPassword('');\n setNewPassword('');\n setConfirmPassword('');\n } catch (err) {\n setChangePasswordError(err?.response?.data?.error?.message || 'Password change failed');\n return;\n }\n\n };\n\n const expirationTimestamp = user?.user?.redemptionCodeExpirationTimestamp * 1;\n\n return (\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n <Text style={styles.title}>Account info</Text>\n {feed?.levels && (\n <View>\n <Text\n style={{\n color: colors.white,\n fontSize: 12,\n marginBottom: 0,\n marginTop: 20,\n padding: 1.5,\n }}>\n Student's age*\n </Text>\n <DropDownPicker\n open={open}\n value={studentLevel}\n items={feed?.levels?.map((l: any) => ({ label: l?.title, value: l.id }))}\n setOpen={setOpen}\n setValue={(value: any) => {\n const val = value();\n onChangeStudentLevel(val);\n try {\n cmsAPI.patch(`${process.env.EXPO_PUBLIC_CMS}/api/smartstart/user`, {\n data: { level: val },\n });\n dispatch(SET_USER_LEVEL({ level: { id: val } }));\n } catch (err) {}\n }}\n placeholder=\"Select age\"\n />\n </View>\n )}\n\n <HorizontalLine />\n <Text style={styles.title}>App Access</Text>\n\n <Text style={{ color: colors.white, marginTop: 5, padding: 1.5 }}>\n Expiration date:{' '}\n {(expirationTimestamp > 0 && new Date(expirationTimestamp).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })) || 'N/A'}\n </Text>\n\n <HorizontalLine />\n <Text style={styles.title}>Change Password</Text>\n\n {!!changePasswordMessage && <MessageDisplay message={changePasswordMessage} />}\n {!!changePasswordError && <ErrorDisplay message={changePasswordError} />}\n\n <LabeledTextInput\n label=\"Current Password\"\n isMandatory={true}\n secureTextEntry={true}\n onChangeText={setCurrentPassword}\n placeholder=\"Current password\"\n value={currentPassword}\n style={styles.input}\n />\n <LabeledTextInput\n label=\"New Password\"\n isMandatory={true}\n secureTextEntry={true}\n onChangeText={setNewPassword}\n placeholder=\"New password\"\n value={newPassword}\n style={styles.input}\n />\n <LabeledTextInput\n label=\"Confirm Password\"\n isMandatory={true}\n secureTextEntry={true}\n onChangeText={setConfirmPassword}\n placeholder=\"Confirm new password\"\n value={confirmPassword}\n style={styles.input}\n />\n <Button\n title=\"Change Password\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!currentPassword || !newPassword || !confirmPassword || !!changePasswordMessage}\n onPress={handleChangePassword}\n />\n\n <HorizontalLine />\n <Button\n title=\"Logout\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n onPress={async () => {\n dispatch(logoutUser());\n }}\n />\n </View>\n </ScrollView>\n );\n}\n","import React from 'react';\nimport { createNativeStackNavigator } from '@react-navigation/native-stack';\nimport { StackParamList } from './Stack.typeDefs';\nimport { DrawerProps } from '../drawer/Drawer.typeDefs';\nimport {\n StackHeaderLeft,\n StackHeaderLeftDark,\n StackHeaderTitle,\n StackHeaderTitleDark,\n StackHeaderLeftBack,\n StackHeaderLeftBackDark,\n} from './components';\nimport { colors } from '@theme';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { AntDesign } from '@expo/vector-icons';\n// views\nimport Home from '@views/Home';\nimport Favorites from '@views/Favorites';\nimport Details from '@views/Details';\nimport Articles from '@views/Articles';\nimport ArticlesList from '@views/ArticlesList';\nimport Songs from '@views/Songs';\nimport Preferences from '@views/Preferences';\nimport { Image } from 'react-native';\nimport { useAppModule } from '@modules/app.module';\nimport { dataLayerPush } from '@utils/gtm';\n\nconst styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.lightGrayPurple,\n },\n container: {\n flex: 1,\n flexDirection: 'column',\n alignItems: 'baseline',\n justifyContent: 'flex-start',\n borderTopWidth: StyleSheet.hairlineWidth,\n borderColor: colors.ltPurple,\n marginHorizontal: 20,\n },\n wrapper: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n homeTitleWrapper: {\n flex: 1,\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n headerTitle: {\n color: colors.smartPurple,\n textAlign: 'center',\n includeFontPadding: false,\n fontFamily: 'Nunito_900Black',\n fontSize: 20,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 5,\n },\n homeHeaderTitle: {\n color: colors.smartPurple,\n textAlign: 'center',\n fontFamily: 'Nunito_900Black',\n fontSize: 16,\n fontWeight: '900',\n lineHeight: 10,\n marginTop: 5,\n },\n});\n\nconst Stack = createNativeStackNavigator<StackParamList>();\n\nconst navigationPropsHome = {\n headerTintColor: colors.white,\n headerStyle: {\n backgroundColor: colors.smartPurple,\n shadowColor: 'transparent',\n borderWidth: 0,\n elevation: 0,\n },\n headerTitleStyle: { fontSize: 18 },\n headerTitleAlign: 'center',\n};\n\nconst navigationProps = {\n headerTintColor: colors.smartPurple,\n headerStyle: {\n backgroundColor: colors.lightGrayPurple,\n shadowColor: 'transparent',\n borderWidth: 0,\n elevation: 0,\n },\n headerTitleStyle: { fontSize: 18, color: colors.smartPurple },\n headerTitleAlign: 'center',\n};\n\nexport function HomeStackNavigator({ navigation }: DrawerProps) {\n const { user } = useAppModule();\n\n const expirationTimestamp = user?.user?.redemptionCodeExpirationTimestamp * 1;\n const now = Date.now();\n const gracePeriod = 1000 * 60 * 60 * 24 * 30; // 30 days\n const isExpired = !!expirationTimestamp && expirationTimestamp < now;\n const isInGracePeriod = !!expirationTimestamp && expirationTimestamp < now + gracePeriod;\n const isRedemptionCodeExpiring = isExpired || isInGracePeriod;\n\n return (\n <Stack.Navigator screenOptions={navigationProps}>\n <Stack.Screen\n component={Home}\n initialParams={{ isRedemptionCodeExpiring }}\n name=\"HomeStack\"\n options={{\n title: 'Home',\n headerTitle: () => (\n <View style={styles.homeTitleWrapper}>\n <Text style={styles.homeHeaderTitle}>Welcome{user.user.parentName ? `,` : ``}</Text>\n <Text style={styles.homeHeaderTitle}>{user.user.parentName}</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => <StackHeaderLeftDark onPress={() => navigation.toggleDrawer()} />,\n }}\n />\n <Stack.Screen\n component={Details}\n name=\"DetailsStack\"\n options={{\n title: 'Details',\n headerTitle: 'Details',\n headerTintColor: colors.smartPurple,\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerTitleAlign: 'center',\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n }}\n />\n <Stack.Screen\n component={ArticlesList}\n name=\"ArticlesListStack\"\n options={{\n title: 'Articles',\n headerTintColor: colors.white,\n headerRight: () => <StackHeaderTitle navigation={navigation} />,\n headerTitleAlign: 'center',\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n }}\n />\n </Stack.Navigator>\n );\n}\n\nexport function ArticlesStackNavigator({ navigation }: DrawerProps) {\n return (\n <Stack.Navigator screenOptions={navigationProps}>\n <Stack.Screen\n component={Articles}\n name=\"ArticlesStack\"\n options={{\n title: 'Articles',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <Image\n source={require('../../../assets/images/articles.svg')}\n style={{ width: 24, height: 30, marginRight: 5, tintColor: colors.smartPurple }}\n />\n <Text style={styles.headerTitle}>Articles</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => <StackHeaderLeftDark onPress={() => navigation.toggleDrawer()} />,\n headerTitleAlign: 'center',\n }}\n />\n <Stack.Screen\n component={Details}\n name=\"DetailsStack\"\n options={{\n title: 'Articles',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <Image\n source={require('../../../assets/images/articles.svg')}\n style={{ width: 24, height: 30, marginRight: 5, tintColor: colors.smartPurple }}\n />\n <Text style={styles.headerTitle}>Articles</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n headerTitleAlign: 'center',\n }}\n />\n <Stack.Screen\n component={ArticlesList}\n name=\"ArticlesListStack\"\n options={{\n title: 'Articles',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <Image\n source={require('../../../assets/images/articles.svg')}\n style={{ width: 24, height: 30, marginRight: 5, tintColor: colors.smartPurple }}\n />\n <Text style={styles.headerTitle}>Articles</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n headerTitleAlign: 'center',\n }}\n />\n </Stack.Navigator>\n );\n}\n\nexport function SongsStackNavigator({ navigation }: DrawerProps) {\n return (\n <Stack.Navigator screenOptions={navigationProps}>\n <Stack.Screen\n component={Songs}\n name=\"SongsStack\"\n options={{\n title: 'Song Book',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <Image\n source={require('../../../assets/images/songs.svg')}\n style={{ width: 30, height: 30, tintColor: colors.smartPurple }}\n />\n <Text style={styles.headerTitle}>Song Book</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => <StackHeaderLeftDark onPress={() => navigation.toggleDrawer()} />,\n headerTitleAlign: 'center',\n }}\n />\n <Stack.Screen\n component={Details}\n name=\"DetailsStack\"\n options={{\n title: 'Details',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <Image\n source={require('../../../assets/images/songs.svg')}\n style={{ width: 30, height: 30, tintColor: colors.smartPurple }}\n />\n <Text style={styles.headerTitle}>Song Book</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n headerTitleAlign: 'center',\n }}\n />\n </Stack.Navigator>\n );\n}\n\nexport function FavoritesStackNavigator({ navigation }: DrawerProps) {\n const { user } = useAppModule();\n\n const expirationTimestamp = user?.user?.redemptionCodeExpirationTimestamp * 1;\n const now = Date.now();\n const gracePeriod = 1000 * 60 * 60 * 24 * 30; // 30 days\n const isExpired = !!expirationTimestamp && expirationTimestamp < now;\n const isInGracePeriod = !!expirationTimestamp && expirationTimestamp < now + gracePeriod;\n const isRedemptionCodeExpiring = isExpired || isInGracePeriod;\n\n return (\n <Stack.Navigator screenOptions={navigationProps}>\n <Stack.Screen\n component={Favorites}\n initialParams={{ isRedemptionCodeExpiring }}\n name=\"FavoritesStack\"\n options={{\n title: 'Home',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <AntDesign name=\"staro\" size={30} color={colors.darkPurple} />\n <Text style={styles.headerTitle}>Favorites</Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerLeft: () => <StackHeaderLeftDark onPress={() => navigation.toggleDrawer()} />,\n }}\n />\n <Stack.Screen\n component={Details}\n name=\"DetailsStack\"\n options={{\n title: 'Details',\n headerTitle: 'Details',\n headerTintColor: colors.smartPurple,\n headerRight: () => <StackHeaderTitleDark navigation={navigation} />,\n headerTitleAlign: 'center',\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n }}\n />\n <Stack.Screen\n component={ArticlesList}\n name=\"ArticlesListStack\"\n options={{\n title: 'Articles',\n headerTintColor: colors.white,\n headerRight: () => <StackHeaderTitle navigation={navigation} />,\n headerLeft: () => (\n <StackHeaderLeftBackDark\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n headerTitleAlign: 'center',\n }}\n />\n </Stack.Navigator>\n );\n}\n\nexport function PreferencesStackNavigator({ navigation }: DrawerProps) {\n return (\n <Stack.Navigator screenOptions={navigationPropsHome}>\n <Stack.Screen\n component={Preferences}\n name=\"PreferencesStack\"\n options={{\n title: 'Preferences',\n headerTitle: () => (\n <View style={styles.wrapper}>\n <Image\n source={require('../../../assets/images/preferences.svg')}\n style={{ width: 30, height: 30, marginRight: 5, tintColor: colors.white }}\n />\n <Text style={{ ...styles.headerTitle, fontSize: 15, color: colors.white }}>\n Preferences\n </Text>\n </View>\n ),\n headerRight: () => <StackHeaderTitle navigation={navigation} />,\n headerLeft: () => <StackHeaderLeft onPress={() => navigation.toggleDrawer()} />,\n headerTitleAlign: 'center',\n }}\n />\n <Stack.Screen\n component={Details}\n name=\"DetailsStack\"\n options={{\n title: 'Details',\n headerRight: () => <StackHeaderTitle navigation={navigation} />,\n headerLeft: () => (\n <StackHeaderLeftBack\n onPress={() => {\n dataLayerPush({ event: 'back_button_press' }, false);\n navigation.goBack();\n }}\n />\n ),\n headerTitleAlign: 'center',\n }}\n />\n </Stack.Navigator>\n );\n}\n","import { colors } from \"@theme\";\nimport { StyleSheet } from \"react-native\";\n\nexport const styles = StyleSheet.create({\n root: {\n width: '100%',\n height: '100%',\n backgroundColor: colors.smartPurple,\n },\n container: {\n width: '100%',\n maxWidth: 600,\n marginTop: 20,\n padding: 22,\n marginHorizontal: 'auto',\n backgroundColor: colors.smartPurple,\n },\n input: {\n height: 40,\n padding: 10,\n borderWidth: 1,\n backgroundColor: colors.white,\n borderRadius: 6,\n borderStyle: 'none',\n placeholderTextColor: colors.ltPurple,\n },\n title: {\n fontSize: 24,\n color: colors.white,\n marginTop: 20,\n textAlign: 'center',\n },\n buttonTitle: {\n fontSize: 16,\n color: colors.white,\n textAlign: 'center',\n },\n button: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n marginTop: 32,\n backgroundColor: colors.lightPurple,\n borderRadius: 6,\n borderStyle: 'none',\n },\n link: {\n fontSize: 16,\n marginTop: 20,\n color: colors.white,\n alignSelf: 'center',\n textDecorationLine: 'underline',\n },\n});\n","import { useEffect, useState } from 'react';\nimport { Text } from 'react-native';\nimport { styles } from '../styles';\nimport LabeledTextInput from '@components/LabeledTextInput';\nimport axios from 'axios';\nimport Button from '@components/Button';\nimport DropDownPicker from 'react-native-dropdown-picker';\nimport { cmsAPI } from '@utils/cmsApi';\nimport ErrorDisplay from '@components/ErrorDisplay';\n\nexport default function RegistrationComponent({ verifyEmail }) {\n const [error, setError] = useState('');\n const [open, setOpen] = useState(false);\n const [levels, setLevels] = useState([]);\n\n useEffect(() => {\n fetchLevels()\n }, []);\n\n const [parentName, onChangeParentName] = useState('');\n const [parentEmail, onChangeParentEmail] = useState('');\n const [studentName, onChangeStudentName] = useState('');\n const [studentLevel, onChangeStudentLevel] = useState('');\n const [teacherName, onChangeTeacherName] = useState('');\n const [schoolName, onChangeSchoolName] = useState('');\n const [password, onChangePassword] = useState('');\n const [redemptionCode, onChangeRedemptionCode] = useState('');\n\n const fetchLevels = async () => {\n try {\n setError('');\n const result = await cmsAPI.get(`${process.env.EXPO_PUBLIC_CMS}/api/levels`)\n if (result?.data) {\n setLevels(result.data.map((l: any) => ({ label: l?.title, value: l.id })));\n } else {\n throw new Error();\n }\n } catch (err) {\n setError('Fail to fetch levels');\n }\n }\n\n const handleRegister = async () => {\n setError('');\n try {\n const result = await axios.post(`${process.env.EXPO_PUBLIC_CMS}/api/auth/local/register`, {\n username: parentEmail,\n email: parentEmail,\n parentName: parentName,\n studentName: studentName,\n level: studentLevel || null,\n teacherName: teacherName,\n schoolName: schoolName,\n password: password,\n redemptionCode: redemptionCode,\n });\n verifyEmail(result.data.user.email);\n } catch (error) {\n const msg =\n error?.response?.data?.error?.details?.errors?.[0]?.message ||\n error?.response?.data?.error?.message ||\n 'Registration failed';\n setError(msg);\n }\n };\n\n return (\n <>\n <Text style={styles.title}>Register Smart Start account</Text>\n\n {!!error && <ErrorDisplay message={error} />}\n\n <LabeledTextInput\n label=\"Parent/Care Provider Name\"\n style={styles.input}\n isMandatory={true}\n value={parentName}\n onChangeText={onChangeParentName}\n placeholder=\"John Doe\"\n keyboardType=\"default\"\n />\n\n <LabeledTextInput\n label=\"Parent/Care Provider Email\"\n style={styles.input}\n isMandatory={true}\n value={parentEmail}\n onChangeText={onChangeParentEmail}\n placeholder=\"john.doe@example.com\"\n keyboardType=\"email-address\"\n />\n\n <LabeledTextInput\n label=\"Student Name\"\n style={styles.input}\n isMandatory={true}\n value={studentName}\n onChangeText={onChangeStudentName}\n placeholder=\"Jane Doe\"\n keyboardType=\"default\"\n />\n\n <Text\n style={{\n color: 'white',\n fontSize: 12,\n marginBottom: 0,\n marginTop: 20,\n padding: 1.5,\n }}>\n Student's age*\n </Text>\n <DropDownPicker\n open={open}\n value={studentLevel}\n items={levels}\n setOpen={setOpen}\n setValue={onChangeStudentLevel}\n placeholder=\"Select age\"\n style={{ marginBottom: 0, marginHorizontal:'auto', marginTop:0 }}\n />\n\n <LabeledTextInput\n label=\"Teacher Name\"\n style={styles.input}\n onChangeText={onChangeTeacherName}\n isMandatory={true}\n value={teacherName}\n placeholder=\"Jane Doe\"\n keyboardType=\"default\"\n />\n <LabeledTextInput\n label=\"School Name\"\n style={styles.input}\n onChangeText={onChangeSchoolName}\n isMandatory={true}\n value={schoolName}\n placeholder=\"School name\"\n keyboardType=\"default\"\n />\n\n <LabeledTextInput\n label=\"Password\"\n style={styles.input}\n onChangeText={onChangePassword}\n isMandatory={true}\n value={password}\n placeholder=\"Password\"\n secureTextEntry={true}\n keyboardType=\"default\"\n />\n <Text\n style={{\n color: 'white',\n fontSize: 12,\n marginBottom: 0,\n marginTop: 0,\n padding: 1.5,\n }}>\n at least 8 characters, one special character, one number, and one capital letter\n </Text>\n\n <LabeledTextInput\n label=\"Redemption Code\"\n style={styles.input}\n onChangeText={onChangeRedemptionCode}\n value={redemptionCode}\n placeholder=\"Redemption Code\"\n keyboardType=\"default\"\n />\n\n <Button\n title=\"Register\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!parentName || !parentEmail || !studentName || !studentLevel || !teacherName || !schoolName || !password}\n onPress={handleRegister}\n />\n </>\n );\n}\n","import React, {useState} from 'react';\nimport { Text, Pressable, Image} from 'react-native';\nimport { styles } from '../styles';\nimport LabeledTextInput from '@components/LabeledTextInput';\nimport Button from '@components/Button';\nimport { useAppModule } from '@modules/app.module';\nimport axios from 'axios';\nimport ErrorDisplay from '@components/ErrorDisplay';\nimport MessageDisplay from '@components/MessageDisplay';\n\nexport default function LoginComponent({verifyEmail, registered, message, registeredEmail}) {\n const { dispatch, loginUser } = useAppModule();\n const [email, onChangeEmail] = useState('');\n const [password, onChangePassword] = useState('');\n const [code, onChangeCode] = useState('');\n const [error, setError] = useState('');\n const [resent, setResent] = useState(false);\n\n const handleLogin = async () => {\n setError('');\n try {\n const result = await axios.post(`${process.env.EXPO_PUBLIC_CMS}/api/smartstart/auth`, {\n identifier: email,\n password: password,\n });\n await dispatch(loginUser(result.data));\n } catch (error) {\n if (error?.response?.status === 481) {\n verifyEmail(email);\n } else {\n setError(error?.response?.data?.error?.message || 'authentication error');\n }\n }\n };\n\n const handleVerify = async () => {\n setError('');\n try {\n const result = await axios.get(`${process.env.EXPO_PUBLIC_CMS}/api/auth/email-confirmation?confirmation=${code}`);\n await dispatch(loginUser(result.data));\n } catch (error) {\n console.log(error);\n setError('wrong code');\n }\n };\n\n return (\n <>\n {!!registered && <Text style={styles.title}>You have been registered. Please enter the confirmation code from your email address at {registeredEmail}:</Text>}\n {!registered && <Text style={styles.title}>Sign in with your existing Smart Start account</Text> }\n\n {/* resend email */}\n {resent && registered ? <Text style={{ color: 'white',alignSelf: 'center',}}> Email resent. </Text>: null}\n {!resent && registered ? <Pressable onPress={async ()=>{\n try {\n await axios.post(`${process.env.EXPO_PUBLIC_CMS}/api/auth/send-email-confirmation`, { email: registeredEmail });\n setResent(true);\n } catch (error) {\n setError('Email sending error');\n }\n }} >\n <Text\n style={{\n color: 'white',\n alignSelf: 'center',\n textDecorationLine: 'underline'\n }}>\n Resend email\n </Text>\n </Pressable>: null}\n\n {!!message && <MessageDisplay message={message} />}\n {!!error && <ErrorDisplay message={error}/>}\n\n {registered? \n <React.Fragment>\n <LabeledTextInput\n label=\"Confirmation Code\"\n style={styles.input}\n isMandatory={true}\n value={code}\n onChangeText={onChangeCode}\n keyboardType=\"numeric\"\n placeholder=\"xxxxxxxx\"\n />\n <Button\n title=\"Verify\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!code}\n onPress={handleVerify}\n />\n </React.Fragment> :\n <React.Fragment>\n <LabeledTextInput\n label=\"Email address\"\n style={styles.input}\n isMandatory={true}\n value={email}\n onChangeText={onChangeEmail}\n placeholder=\"john.doe@example.com\"\n keyboardType=\"email-address\"\n />\n\n <LabeledTextInput\n label=\"Password\"\n style={styles.input}\n isMandatory={true}\n value={password}\n onChangeText={onChangePassword}\n placeholder=\"Password\"\n secureTextEntry={true}\n keyboardType=\"default\"\n />\n\n <Button\n title=\"Login\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!email || !password}\n onPress={handleLogin}\n />\n </React.Fragment>}\n </>\n );\n}\n","import { Text } from 'react-native';\nimport { styles } from '../styles';\nimport LabeledTextInput from '@components/LabeledTextInput';\nimport Button from '@components/Button';\nimport { useState } from 'react';\nimport ErrorDisplay from '@components/ErrorDisplay';\nimport { cmsAPI } from '@utils/cmsApi';\nimport LoginComponent from './LoginComponent';\nimport { useAppModule } from '@modules/app.module';\nimport MessageDisplay from '@components/MessageDisplay';\n\nexport default function ResetPasswordComponent({ }) {\n const { dispatch, loginUser } = useAppModule();\n const [error, setError] = useState('');\n const [code, setCode] = useState('');\n \n const [password, onChangePassword] = useState('');\n const [repeatPassword, onChangeRepeatPassword] = useState('');\n\n\n const handlePasswordReset = async () => {\n setError('');\n if (password !== repeatPassword) {\n setError('Passwords do not match');\n return;\n }\n\n try {\n const result = await cmsAPI.post(`${process.env.EXPO_PUBLIC_CMS}/api/auth/reset-password`, {\n code: code,\n password: password,\n passwordConfirmation: repeatPassword,\n });\n //dispatch login user\n await dispatch(loginUser(result.data));\n\n\n } catch (error) {\n setError(error?.response?.data?.error?.message || 'Password reset failed');\n }\n };\n\n return (\n <>\n <MessageDisplay message={`Password reset code has been sent to the provided email. Please enter the code and set the new password.`} />\n\n {!!error && <ErrorDisplay message={error} />}\n\n <LabeledTextInput\n label=\"Code\"\n style={styles.input}\n value={code}\n onChangeText={setCode}\n isMandatory={true}\n placeholder=\"Email code\"\n keyboardType=\"default\"\n />\n\n <LabeledTextInput\n label=\"New password\"\n style={styles.input}\n value={password}\n onChangeText={onChangePassword}\n isMandatory={true}\n placeholder=\"Password\"\n secureTextEntry={true}\n keyboardType=\"default\"\n />\n <Text\n style={{\n color: 'white',\n fontSize: 12,\n marginBottom: 0,\n marginTop: 0,\n padding: 1.5,\n }}>\n at least 8 characters, one special character, one number, and one capital letter\n </Text>\n\n <LabeledTextInput\n label=\"Repeat password\"\n style={styles.input}\n value={repeatPassword}\n onChangeText={onChangeRepeatPassword}\n isMandatory={true}\n placeholder=\"Password\"\n secureTextEntry={true}\n keyboardType=\"default\"\n />\n\n <Button\n title=\"Reset\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!code || !password || !repeatPassword}\n onPress={handlePasswordReset}\n />\n </>\n );\n}\n","import { Text } from 'react-native';\nimport { styles } from '../styles';\nimport LabeledTextInput from '@components/LabeledTextInput';\nimport Button from '@components/Button';\nimport { useState } from 'react';\nimport ErrorDisplay from '@components/ErrorDisplay';\nimport { cmsAPI } from '@utils/cmsApi';\nimport MessageDisplay from '@components/MessageDisplay';\nimport { set } from '@gluestack-style/react';\nimport ResetPasswordComponent from './ResetPasswordComponent';\n\nexport default function ForgotPasswordComponent() {\n const [error, setError] = useState('');\n const [codeSent, setCodeSent] = useState(false);\n const [email, onChangeEmail] = useState('');\n\n const handlePasswordReset = async () => {\n try {\n setError('');\n const isValidEmail = email.match(/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g);\n if (!isValidEmail) {\n setError('Please enter a valid email');\n return;\n }\n cmsAPI.post(`${process.env.EXPO_PUBLIC_CMS}/api/auth/forgot-password-mobile`, {\n email: email,\n });\n setCodeSent(true);\n } catch (error) {\n setError(error?.response?.data?.error?.message || 'Password reset failed');\n }\n };\n\n return (\n <>\n <Text style={styles.title}>Reset password</Text>\n {!!error && <ErrorDisplay message={error}/>}\n\n {codeSent && \n <>\n <ResetPasswordComponent />\n </>\n }\n\n {!codeSent && \n <>\n <LabeledTextInput\n label=\"Email address\"\n style={styles.input}\n isMandatory={true}\n value={email}\n onChangeText={onChangeEmail}\n placeholder=\"john.doe@example.com\"\n />\n\n <Button\n title=\"Send reset code\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!email}\n onPress={handlePasswordReset}\n />\n </>}\n\n </>\n );\n}\n","import { useState } from 'react';\nimport { Text, View, ScrollView, StatusBar, Image } from 'react-native';\nimport { styles } from './styles';\nimport { NavigationContainer } from '@react-navigation/native';\nimport RegistrationComponent from './components/RegistrationComponent';\nimport LoginComponent from './components/LoginComponent';\nimport ForgotPasswordComponent from './components/ForgotPasswordComponent';\n\nexport default function AuthScreen() {\n const [layout, onChangeLayout] = useState('login');\n const [email, setEmail] = useState('');\n\n const links = {\n login: {\n value: 'Log In',\n onPress: () => onChangeLayout('login'),\n },\n register: {\n value: 'Register',\n onPress: () => onChangeLayout('register'),\n },\n forgotPassword: {\n value: 'Forgot password?',\n onPress: () => onChangeLayout('forgotPassword'),\n },\n };\n const linksToShow = Object.keys(links).filter(key => key !== layout && key !== 'registered'); //&& !(layout==='registered' && key === 'login' )\n\n const authScreens = {\n login: (\n <LoginComponent\n verifyEmail={registeredEmail => {\n setEmail(registeredEmail);\n onChangeLayout('registered');\n }}\n />\n ),\n registered: <LoginComponent registered={true} registeredEmail={email} />,\n register: (\n <RegistrationComponent\n verifyEmail={registeredEmail => {\n setEmail(registeredEmail);\n onChangeLayout('registered');\n }}\n />\n ),\n forgotPassword: <ForgotPasswordComponent />,\n };\n\n return (\n <NavigationContainer\n documentTitle={{\n formatter: () => `Smart Start${links?.[layout]?.value ? ` - ${links?.[layout]?.value}` : ''}`,\n }}>\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n <Image\n style={{\n width: 87,\n height: 41,\n alignSelf: 'center',\n }}\n source={require('./../../../assets/images/logo.png')}\n />\n\n {authScreens[layout]}\n\n {linksToShow.map(key => {\n const { value, onPress } = links[key];\n return (\n <Text key={key} style={styles.link} onPress={onPress}>\n {value}\n </Text>\n );\n })}\n </View>\n </ScrollView>\n </NavigationContainer>\n );\n}\n","import React from 'react';\nimport { Text } from 'react-native';\nimport { colors } from '@theme';\n\nexport default function WarningDisplay({ message }: { message: string | (string | React.JSX.Element)[] }) {\n\n return (\n <Text\n style={{\n color: colors.black,\n backgroundColor: colors.smartYellow,\n marginVertical: 32,\n padding: 15,\n borderRadius: 6,\n }}>\n {message}\n </Text>\n );\n}\n","import { useState } from 'react';\nimport { ScrollView, StatusBar, Text } from 'react-native';\nimport { styles } from '../styles';\nimport LabeledTextInput from '@components/LabeledTextInput';\nimport Button from '@components/Button';\nimport { cmsAPI } from '@utils/cmsApi';\nimport ErrorDisplay from '@components/ErrorDisplay';\nimport MessageDisplay from '@components/MessageDisplay';\nimport {\n SET_REDEMPTION_CODE,\n SET_REDEMPTION_CODE_EXPIRATION,\n useAppModule,\n} from '@modules/app.module';\nimport { Image } from 'react-native';\nimport { View } from 'react-native';\nimport WarningDisplay from '@components/WarningDisplay';\n\nexport default function RedeemCodeComponent() {\n const { user, dispatch, logoutUser } = useAppModule();\n\n const [error, setError] = useState('');\n const [message, setMessage] = useState('');\n const [code, onChangeCode] = useState('');\n\n const handleRedeemCode = async () => {\n setError('');\n setMessage('');\n try {\n const result = await cmsAPI.post(`${process.env.EXPO_PUBLIC_CMS}/api/smartstart/redeem`, {\n code: code,\n });\n\n const redemptionCode = result.data.code;\n const redemptionCodeExpirationTimestamp = result.data.redemptionCodeExpirationTimestamp;\n setMessage(\n `Code ${redemptionCode} redeemed successfully. Your code is valid until ${new Date(\n redemptionCodeExpirationTimestamp,\n ).toLocaleDateString()}`,\n );\n dispatch(SET_REDEMPTION_CODE({ code: redemptionCode }));\n dispatch(\n SET_REDEMPTION_CODE_EXPIRATION({\n redemptionCodeExpirationTimestamp: redemptionCodeExpirationTimestamp,\n }),\n );\n } catch (error) {\n const msg =\n error?.response?.data?.error?.details?.errors?.[0]?.message ||\n error?.response?.data?.error?.message ||\n 'Code redemption failed';\n setError(msg);\n }\n };\n\n const isFirstLogin = user?.user?.redemptionCodeExpirationTimestamp == 0;\n const warningMessage = isFirstLogin\n ? 'To start using the app, please redeem your Smart Start code.'\n : 'To continue using the app, please redeem your Smart Start code.';\n\n return (\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n <Image\n style={{\n width: 87,\n height: 41,\n alignSelf: 'center',\n }}\n source={require('./../../../../assets/images/logo.png')}\n />\n\n <WarningDisplay message={warningMessage} />\n\n <Text style={styles.title}>Redeem Smart Start code</Text>\n\n {!!message && <MessageDisplay message={message} />}\n {!!error && <ErrorDisplay message={error} />}\n\n <LabeledTextInput\n label=\"Code\"\n style={styles.input}\n isMandatory={true}\n onChangeText={onChangeCode}\n placeholder=\"XXXXXXXXXXXXXXXX\"\n keyboardType=\"default\"\n />\n\n <Button\n title=\"Redeem code\"\n titleStyle={styles.buttonTitle}\n style={styles.button}\n disabled={!code}\n onPress={handleRedeemCode}\n />\n\n <Text\n onPress={async () => {\n dispatch(logoutUser());\n }}\n style={styles.link}>\n Log out\n </Text>\n </View>\n </ScrollView>\n );\n}\n","import { useEffect, useState } from 'react';\nimport { ScrollView, StatusBar, Text } from 'react-native';\nimport { styles } from '../styles';\nimport { cmsAPI } from '@utils/cmsApi';\nimport { SET_REDEMPTION_CODE_EXPIRATION, useAppModule } from '@modules/app.module';\nimport { Image } from 'react-native';\nimport { View } from 'react-native';\nimport WarningDisplay from '@components/WarningDisplay';\nimport RedeemCodeComponent from './RedeemCodeComponent';\n\nexport default function AccessDeniedComponent() {\n const [redeemCode, setRedeemCode] = useState(false);\n const { user, dispatch, logoutUser } = useAppModule();\n\n useEffect(() => {\n validateAccess();\n }, []);\n\n const validateAccess = async () => {\n try {\n const result = await cmsAPI.post(`${process.env.EXPO_PUBLIC_CMS}/api/smartstart/redeem`);\n const redemptionCodeExpirationTimestamp = result.data.redemptionCodeExpirationTimestamp;\n dispatch(\n SET_REDEMPTION_CODE_EXPIRATION({\n redemptionCodeExpirationTimestamp: redemptionCodeExpirationTimestamp,\n }),\n );\n } catch (error) {\n // noop\n }\n };\n\n const redeemCodeHandler = () => {\n setRedeemCode(true);\n };\n\n const userEmail = user?.user?.email;\n const warningMessage = [\n `Email ${userEmail} is not registered for the the current/upcoming semester. Please contact your Smart Start provider, or `,\n <a href=\"#\" onClick={redeemCodeHandler}>click here</a>,\n \" to enter your ECE Redemption Code.\",\n ];\n\n if (redeemCode) {\n return <RedeemCodeComponent />;\n } else {\n return (\n <ScrollView style={styles.root}>\n <View style={styles.container}>\n <StatusBar barStyle=\"light-content\" />\n\n <Image\n style={{\n width: 87,\n height: 41,\n alignSelf: 'center',\n }}\n source={require('./../../../../assets/images/logo.png')}\n />\n\n <WarningDisplay message={warningMessage} />\n\n <Text\n onPress={async () => {\n dispatch(logoutUser());\n }}\n style={styles.link}>\n Log out\n </Text>\n </View>\n </ScrollView>\n );\n }\n}\n","import { useEffect, useState } from 'react';\nimport { View, Text } from 'react-native';\nimport { NavigationContainer } from '@react-navigation/native';\nimport { useAppModule } from '@modules/app.module';\nimport DrawerNavigator from './drawer';\nimport { colors } from '@theme';\nimport AuthScreen from '@views/Auth';\nimport AccessDeniedComponent from '@views/Auth/components/AccessDeniedComponent';\n\nfunction Navigator() {\n const { dispatch, user, loading, loggedIn, loadUser, loadFeed } = useAppModule();\n const [authorized, setAuthorized] = useState('');\n\n useEffect(() => {\n dispatch(loadUser());\n if (!loggedIn) return;\n const expirationTimestamp = user?.user?.redemptionCodeExpirationTimestamp * 1;\n const now = Date.now();\n const gracePeriod = 1000 * 60 * 60 * 24 * 30; // 30 days\n const isExpired = expirationTimestamp < now;\n const isInGracePeriod = isExpired && expirationTimestamp + gracePeriod > now;\n const isAuthorized = !isExpired || isInGracePeriod;\n setAuthorized(isAuthorized ? 'yes' : 'no');\n if (isAuthorized) dispatch(loadFeed());\n }, [loggedIn, user?.user?.redemptionCodeExpirationTimestamp]);\n\n if (loading) {\n return (\n <View\n style={{\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: colors.smartPurple,\n }}>\n <Text\n style={{\n color: 'white',\n }}>\n Loading...\n </Text>\n </View>\n );\n }\n\n if (!loggedIn) {\n return <AuthScreen />;\n }\n\n if (authorized === 'no') {\n return <AccessDeniedComponent />;\n }\n\n if (authorized === 'yes')\n return (\n <NavigationContainer\n documentTitle={{\n formatter: (options, route) => `Smart Start - ${options?.title ?? route?.name}`,\n }}>\n <DrawerNavigator />\n </NavigationContainer>\n );\n\n return <></>;\n}\n\nexport default Navigator;\n","import { useState, useEffect } from 'react';\nimport { Provider } from 'react-redux';\nimport * as SplashScreen from 'expo-splash-screen';\nimport { RecoilRoot } from 'recoil';\nimport Navigator from '@navigator';\nimport store from '@utils/store';\nimport { loadImages, loadFonts } from '@theme';\nimport 'react-native-gesture-handler';\nimport { GluestackUIProvider, Text, Box } from '@gluestack-ui/themed';\nimport { config } from '@gluestack-ui/config'; // O\nimport {\n useFonts,\n Nunito_200ExtraLight,\n Nunito_300Light,\n Nunito_400Regular,\n Nunito_500Medium,\n Nunito_600SemiBold,\n Nunito_700Bold,\n Nunito_800ExtraBold,\n Nunito_900Black,\n Nunito_200ExtraLight_Italic,\n Nunito_300Light_Italic,\n Nunito_400Regular_Italic,\n Nunito_500Medium_Italic,\n Nunito_600SemiBold_Italic,\n Nunito_700Bold_Italic,\n Nunito_800ExtraBold_Italic,\n Nunito_900Black_Italic,\n} from '@expo-google-fonts/nunito';\n\n// keep the splash screen visible while we fetch resources\nSplashScreen.preventAutoHideAsync();\n\nfunction App() {\n const [isReady, setReady] = useState<boolean>(false);\n let [fontsLoaded, fontError] = useFonts({\n Nunito_200ExtraLight,\n Nunito_300Light,\n Nunito_400Regular,\n Nunito_500Medium,\n Nunito_600SemiBold,\n Nunito_700Bold,\n Nunito_800ExtraBold,\n Nunito_900Black,\n Nunito_200ExtraLight_Italic,\n Nunito_300Light_Italic,\n Nunito_400Regular_Italic,\n Nunito_500Medium_Italic,\n Nunito_600SemiBold_Italic,\n Nunito_700Bold_Italic,\n Nunito_800ExtraBold_Italic,\n Nunito_900Black_Italic,\n });\n\n // assets preloading\n const preloadAssets = async () => {\n try {\n await Promise.all([loadImages(), loadFonts()]);\n } finally {\n setReady(true);\n SplashScreen.hideAsync();\n }\n };\n\n useEffect(() => {\n preloadAssets();\n }, []);\n\n if (!fontsLoaded || !isReady) return null;\n return (\n <Provider store={store}>\n <GluestackUIProvider config={config}>\n <RecoilRoot>\n <Navigator />\n </RecoilRoot>\n </GluestackUIProvider>\n </Provider>\n );\n}\n\nexport default App;\n","import { useDispatch, useSelector } from 'react-redux';\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { State, Dispatch } from '@utils/store';\nimport { storage } from '@utils/storage';\nimport { cmsAPI } from \"@utils/cmsApi\";\ninterface IAppUser {\n name: string;\n email: string;\n}\n\ninterface IAppFeed {\n songs: any[];\n articles: any[];\n categories: any[];\n levels: any[];\n tags: any[];\n articleTags: any[];\n songTags: any[];\n\n}\n\ninterface IAppState {\n loading: boolean;\n loggedIn: boolean;\n user?: any;\n feed?: IAppFeed;\n filterArticles: any[],\n filterSongs: any[],\n filterSongsLevels: any[],\n filterArticlesKeyword: string,\n filterSongsKeyword: string,\n filterFavoriteArticles: boolean,\n filterFavoriteSongs: boolean,\n}\n\n\n\nconst initialState: IAppState = {\n loading: true,\n loggedIn: false,\n user: undefined,\n filterArticles: [],\n filterSongs: [],\n filterSongsLevels: [],\n filterArticlesKeyword: '',\n filterSongsKeyword: '',\n filterFavoriteArticles: false,\n filterFavoriteSongs: false,\n};\n\nconst slice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n //SET_USER_LEVEL\n SET_USER_LEVEL: (state: IAppState, { payload }: PayloadAction<{ level: number }>) => {\n //set storage\n storage.set('user', JSON.stringify({\n ...state.user,\n user: {\n ...state.user?.user,\n level: payload.level\n }\n }));\n state.user = {\n ...state.user,\n user: {\n ...state.user?.user,\n level: payload.level\n }\n }\n },\n //SET_FAVORITE_ARTICLES\n SET_FAVORITE_ARTICLES: (state: IAppState, { payload }: PayloadAction<{ favoriteArticles: any[] }>) => {\n //set storage\n storage.set('user', JSON.stringify({\n ...state.user,\n user: {\n ...state.user?.user,\n favoriteArticles: payload.favoriteArticles\n }\n }));\n state.user = {\n ...state.user,\n user: {\n ...state.user?.user,\n favoriteArticles: payload.favoriteArticles\n }\n }\n },\n //SET_FAVORITE_SONGS\n SET_FAVORITE_SONGS: (state: IAppState, { payload }: PayloadAction<{ favoriteSongs: any[] }>) => {\n //set storage\n storage.set('user', JSON.stringify({\n ...state.user,\n user: {\n ...state.user?.user,\n favoriteSongs: payload.favoriteSongs\n }\n }));\n state.user = {\n ...state.user,\n user: {\n ...state.user?.user,\n favoriteSongs: payload.favoriteSongs\n }\n }\n },\n // SET_REDEMPTION_CODE\n SET_REDEMPTION_CODE: (state: IAppState, { payload }: PayloadAction<{ code: string }>) => {\n //set storage\n storage.set('user', JSON.stringify({\n ...state.user,\n user: {\n ...state.user?.user,\n redemptionCode: payload.code\n }\n }));\n state.user = {\n ...state.user,\n user: {\n ...state.user?.user,\n redemptionCode: payload.code\n }\n }\n },\n SET_REDEMPTION_CODE_EXPIRATION: (state: IAppState, { payload }: PayloadAction<{ redemptionCodeExpirationTimestamp: number }>) => {\n //set storage\n storage.set('user', JSON.stringify({\n ...state.user,\n user: {\n ...state.user?.user,\n redemptionCodeExpirationTimestamp: payload.redemptionCodeExpirationTimestamp\n }\n }));\n state.user = {\n ...state.user,\n user: {\n ...state.user?.user,\n redemptionCodeExpirationTimestamp: payload.redemptionCodeExpirationTimestamp\n }\n }\n },\n authenticate: (\n state: IAppState,\n { payload }: PayloadAction<{ loggedIn: boolean; user?: any }>,\n ) => {\n state.loggedIn = payload.loggedIn;\n state.loading = false;\n state.user = payload.user;\n },\n LOGOUT_ACTION: (state: IAppState) => {\n // Reset the state to its initial state\n state.loggedIn = false;\n state.user = false;\n },\n //LOAD feed\n loadFeed: (\n state: IAppState,\n { payload }: PayloadAction<{ feed: IAppFeed }>,\n ) => {\n state.feed = payload.feed;\n state.loading = false;\n },\n setFilterArticles: (\n state: IAppState,\n { payload }: PayloadAction<{ filterArticles: any[] }>,\n ) => {\n state.filterArticles = payload.filterArticles;\n },\n setFilterSongs: (\n state: IAppState,\n { payload }: PayloadAction<{ filterSongs: any[] }>,\n ) => {\n state.filterSongs = payload.filterSongs;\n },\n setFilterSongsLevels: (\n state: IAppState,\n { payload }: PayloadAction<{ filterSongsLevels: any[] }>,\n ) => {\n state.filterSongsLevels = payload.filterSongsLevels;\n },\n setFilterArticlesKeyword: (\n state: IAppState,\n { payload }: PayloadAction<{ filterArticlesKeyword: string }>,\n ) => {\n state.filterArticlesKeyword = payload.filterArticlesKeyword;\n },\n setFilterSongsKeyword: (\n state: IAppState,\n { payload }: PayloadAction<{ filterSongsKeyword: string }>,\n ) => {\n state.filterSongsKeyword = payload.filterSongsKeyword;\n },\n setFilterFavoriteArticles: (\n state: IAppState,\n { payload }: PayloadAction<{ filterFavoriteArticles: boolean }>,\n ) => {\n state.filterFavoriteArticles = payload.filterFavoriteArticles;\n },\n setFilterFavoriteSongs: (\n state: IAppState,\n { payload }: PayloadAction<{ filterFavoriteSongs: boolean }>,\n ) => {\n state.filterFavoriteSongs = payload.filterFavoriteSongs;\n },\n setLoading: (\n state: IAppState,\n { payload }: PayloadAction<{ loading: boolean }>,\n ) => {\n state.loading = payload.loading;\n },\n\n reset: () => initialState,\n },\n});\n\nconst asyncActions = {\n setFavoriteArticles: (favoriteArticles: object[], id: number, isFavorite: boolean) => async (dispatch: Dispatch) => {\n if (isFavorite) {\n favoriteArticles.splice(favoriteArticles.findIndex((s: any) => s.id == id), 1)\n } else {\n favoriteArticles.push({ id })\n }\n try {\n await cmsAPI.patch(`${process.env.EXPO_PUBLIC_CMS}/api/smartstart/user`, {\n data: { favoriteArticles },\n });\n dispatch(\n slice.actions.SET_FAVORITE_ARTICLES({ favoriteArticles })\n )\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFavoriteSongs: (favoriteSongs: object[], id: number, isFavorite: boolean) => async (dispatch: Dispatch) => {\n if (isFavorite) {\n favoriteSongs.splice(favoriteSongs.findIndex((s: any) => s.id == id), 1)\n } else {\n favoriteSongs.push({ id })\n }\n try {\n await cmsAPI.patch(`${process.env.EXPO_PUBLIC_CMS}/api/smartstart/user`, {\n data: { favoriteSongs },\n });\n dispatch(\n slice.actions.SET_FAVORITE_SONGS({ favoriteSongs })\n )\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterArticles: (filter: any) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterArticles({\n filterArticles: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterSongs: (filter: any) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterSongs({\n filterSongs: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterSongsLevels: (filter: any) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterSongsLevels({\n filterSongsLevels: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterArticlesKeyword: (filter: any) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterArticlesKeyword({\n filterArticlesKeyword: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterSongsKeyword: (filter: any) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterSongsKeyword({\n filterSongsKeyword: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterFavoriteArticles: (filter: boolean) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterFavoriteArticles({\n filterFavoriteArticles: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n setFilterFavoriteSongs: (filter: boolean) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.setFilterFavoriteSongs({\n filterFavoriteSongs: filter,\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n loadUser: () => async (dispatch: Dispatch) => {\n try {\n // load user from storage\n const user = await storage.get('user');\n if (!user || !JSON.parse(user)?.jwt) {\n dispatch(\n slice.actions.authenticate({\n loggedIn: false,\n user: null\n }),\n );\n } else {\n // update user\n dispatch(\n slice.actions.authenticate({\n loggedIn: true,\n user: JSON.parse(user)\n }),\n );\n }\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n loginUser: (data: any) => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.authenticate({\n loggedIn: true,\n user: data,\n }),\n );\n await storage.set('user', JSON.stringify(data));\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n logoutUser: () => async (dispatch: Dispatch) => {\n try {\n dispatch(\n slice.actions.authenticate({\n loggedIn: false,\n user: null,\n }),\n );\n await storage.delete('user');\n } catch (err) {\n console.log('[##] err', err);\n }\n },\n loadFeed: () => async (dispatch: Dispatch) => {\n //if not authenticated, return\n if (!storage.get('user')) {\n return;\n }\n\n dispatch(\n slice.actions.setLoading({loading: true}),\n );\n\n try {\n const [levels, articles, songs, categories, tags] = await Promise.all([\n cmsAPI.get(`${process.env.EXPO_PUBLIC_CMS}/api/levels`),\n cmsAPI.get(`${process.env.EXPO_PUBLIC_CMS}/api/articles`),\n cmsAPI.get(`${process.env.EXPO_PUBLIC_CMS}/api/songs`),\n cmsAPI.get(`${process.env.EXPO_PUBLIC_CMS}/api/article-categories`),\n cmsAPI.get(`${process.env.EXPO_PUBLIC_CMS}/api/tags`)\n ]);\n\n const articleTags = articles?.data?.reduce((acc: any, article: any) => {\n return [...acc, ...article?.tags?.map((tag: any) => tag?.id)];\n }, []).filter((v: any, i: any, a: any) => a.indexOf(v) === i);\n\n const articleTagsGrouped = articleTags?.reduce((acc: any, tag: any) => {\n const tagData = tags?.data?.data?.find((t: any) => t?.id === tag);\n const categoryData = tagData?.attributes?.tag_category;\n const category = parseInt(categoryData?.data?.attributes?.order) * 100000 + categoryData?.data?.id || categoryData?.data?.id;\n const tagTitle = tagData?.attributes?.title;\n const tagId = tagData?.id;\n if (!acc[category]) {\n acc[category] = {\n title: categoryData?.data?.attributes?.title,\n tags: [],\n };\n }\n acc[category].tags.push({\n title: tagTitle,\n id: tagId,\n });\n return acc;\n }, {});\n\n const songTags = songs?.data?.reduce((acc: any, song: any) => {\n return [...acc, ...song?.tags?.map((tag: any) => tag?.id)];\n }, []).filter((v: any, i: any, a: any) => a.indexOf(v) === i);\n\n const songTagsGrouped = songTags?.reduce((acc: any, tag: any) => {\n const tagData = tags?.data?.data?.find((t: any) => t?.id === tag);\n const categoryData = tagData?.attributes?.tag_category;\n const category = parseInt(categoryData?.data?.attributes?.order) * 100000 + categoryData?.data?.id || categoryData?.data?.id;\n const tagTitle = tagData?.attributes?.title;\n const tagId = tagData?.id;\n if (!acc[category]) {\n acc[category] = {\n title: categoryData?.data?.attributes?.title,\n tags: [],\n };\n }\n acc[category].tags.push({\n title: tagTitle,\n id: tagId,\n });\n return acc;\n }, {});\n\n // update\n dispatch(\n slice.actions.loadFeed({\n feed: {\n songs: songs?.data,\n articles: articles?.data,\n categories: categories?.data?.data,\n levels: levels?.data.sort((a: any, b: any) => a?.levelNumber - b?.levelNumber),\n tags: tags?.data?.data,\n articleTags: articleTagsGrouped,\n songTags: songTagsGrouped\n },\n }),\n );\n } catch (err) {\n console.log('[##] err', err);\n dispatch(\n slice.actions.setLoading({loading: false}),\n );\n }\n },\n};\n\nexport const {\n LOGOUT_ACTION,\n SET_USER_LEVEL,\n SET_REDEMPTION_CODE,\n SET_REDEMPTION_CODE_EXPIRATION\n} = slice.actions;\n\nexport function useAppModule() {\n const dispatch = useDispatch<Dispatch>();\n const state = useSelector(({ app }: State) => app);\n return { dispatch, ...state, ...slice.actions, ...asyncActions };\n}\n\nexport default slice.reducer;\n","import axios from 'axios';\nimport { storage } from '@utils/storage';\nimport { LOGOUT_ACTION, SET_REDEMPTION_CODE_EXPIRATION } from '@modules/app.module';\n\nvar Buffer = require('buffer/').Buffer;\nfunction atob(str) {\n return Buffer.from(str, 'base64').toString('binary');\n}\n\nlet store;\n\nconst getStore = async () => {\n if (!store) {\n store = (await import('./store')).default;\n }\n return store;\n};\n\nconst isExpired = token => {\n const currentTime = new Date();\n const jwtTokenExpiry = new Date(JSON.parse(atob(token.split('.')[1])).exp * 1000).getTime();\n return jwtTokenExpiry - currentTime < 5 * 60 * 1000;\n};\n\nconst cmsAPI = axios.create({\n baseURL: process.env.EXPO_PUBLIC_CMS,\n headers: {},\n});\n\ncmsAPI.interceptors.request.use(\n async config => {\n try {\n const userData = await storage.get('user');\n if (userData === null) return config;\n const user = JSON.parse(userData);\n const token = user?.jwt;\n if (token) {\n if (isExpired(token)) {\n await storage.delete('user');\n if (!store) {\n store = await getStore();\n if (store) {\n setTimeout(() => store?.dispatch({ type: LOGOUT_ACTION }), 1);\n }\n }\n throw new Error('Token expired');\n } else config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n } catch (error) {\n return config;\n }\n },\n error => {\n Promise.reject(error);\n },\n);\n\ncmsAPI.interceptors.response.use(\n config => {\n return config;\n },\n async error => {\n console.log('err', error);\n const status = error.response?.status || 500;\n if (status === 401) {\n await storage.delete('user');\n if (!store) {\n store = await getStore();\n if (store) {\n setTimeout(() => store?.dispatch({ type: LOGOUT_ACTION }), 1);\n }\n }\n }\n\n if (status === 400) {\n const message = error.response?.data?.error?.message;\n if (message === 'Redemption code expired') {\n store = await getStore();\n if (store) {\n setTimeout(() =>\n store?.dispatch(\n SET_REDEMPTION_CODE_EXPIRATION({ redemptionCodeExpirationTimestamp: 1 }),\n ),\n );\n }\n }\n }\n\n throw error;\n },\n);\n\nexport { cmsAPI };\n","import { MMKV } from 'react-native-mmkv';\nimport { Storage } from 'expo-storage';\nimport { Platform } from 'react-native';\n\nlet mmkv = null;\nif (Platform.OS === 'web') {\n mmkv = new MMKV();\n}\nexport class storageClass {\n set = async (key, value) => {\n if (Platform.OS === 'web') {\n mmkv.set(key, value);\n } else {\n await Storage.setItem({\n key: key,\n value: value,\n });\n }\n };\n\n get = async key => {\n if (Platform.OS === 'web') {\n return mmkv.getString(key);\n } else {\n return await Storage.getItem({ key: key });\n }\n };\n\n delete = async key => {\n if (Platform.OS === 'web') {\n return mmkv.delete(key);\n } else {\n return await Storage.removeItem({ key: key });\n }\n };\n}\n\nexport const storage = new storageClass();\n","import Constants from 'expo-constants';\n\ninterface AppConfig {\n env: string;\n // add more\n}\n\n/**\n * export env variables\n * to add new env variables, add in app.config.ts first\n */\nconst config: AppConfig = {\n env: Constants.expoConfig?.extra?.env || 'prod',\n // add more...\n} as AppConfig;\n\nexport default config;\n","import { configureStore } from '@reduxjs/toolkit';\nimport logger from 'redux-logger';\nimport app from '@modules/app.module';\nimport config from '@utils/config';\n\nconst store = configureStore({\n reducer: {\n app,\n // add more store ...\n },\n middleware: getDefaultMiddleware =>\n config.env === 'dev' ? getDefaultMiddleware().concat(logger) : getDefaultMiddleware(),\n devTools: config.env === 'dev',\n});\n\nexport type State = ReturnType<typeof store.getState>;\nexport type Dispatch = typeof store.dispatch;\n\nexport default store;\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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\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\t179: 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, [613], () => (__webpack_require__(15530)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["colors","darkPurple","purple","lightPurple","lightGrayPurple","pink","gray","black","white","transparent","smartPurple","smartPink","smartOrange","smartYellow","smartTeal","ltPurple","ltPink","ltOrange","ltYellow","ltTeal","images","logo","require","logoRCM","logoDark","logo_sm","logo_lg","imageAssets","Object","keys","map","key","Asset","fromModule","downloadAsync","loadFonts","_ref","_asyncToGenerator","loadAsync","openSans_regular","openSans_regular_italic","openSans_semiBold","openSans_semiBold_italic","openSans_bold","openSans_bold_italic","apply","arguments","StackHeaderLeft","onPress","_jsx","SimpleLineIcons","Button","name","size","color","backgroundColor","style","marginLeft","StackHeaderLeftDark","_ref2","StackHeaderLeftBack","_ref3","StackHeaderLeftBackDark","_ref4","styles","StyleSheet","create","width","height","marginRight","stylesDark","StackHeaderTitle","navigation","View","children","TouchableOpacity","navigate","Image","source","StackHeaderTitleDark","mediaUrl","path","process","includes","stylesWhite","author","textAlign","includeFontPadding","fontFamily","fontSize","fontWeight","lineHeight","marginBottom","titleWrapper","alignItems","flexDirection","justifyContent","title","marginTop","subtitle","textTransform","text","wrapper","paddingBottom","paddingTop","borderBottomWidth","hairlineWidth","borderColor","readMore","tag","borderRadius","letterSpacing","padding","paddingRight","tagWrapper","display","flexWrap","alignContent","img","cursor","flex","pointer","ArticleListItem","props","_user$user","_tags","_article$image","_useAppModule","useAppModule","user","dispatch","setFavoriteArticles","favoriteArticles","JSON","parse","stringify","article","_props$theme","theme","_props$showFavorite","showFavorite","useWindowDimensions","id","tags","shortText","isFavorite","findIndex","s","length","t","replace","substring","lastIndexOf","image","thumbnail_url","articleOnClick","view","data","_jsxs","_objectSpread","isFirst","maxWidth","ScrollView","showsHorizontalScrollIndicator","horizontal","contentContainerStyle","Text","index","containerStyle","AntDesign","songIdPlayingState","atom","default","undefined","ms","Promise","resolve","reject","setTimeout","_x","dataLayerPush","payload","clear","window","dataLayer","push","this","reset","useNavigation","_useState","useState","_useState2","_slicedToArray","playing","setPlaying","_useState3","_useState4","currentTime","setCurrentTime","_useState5","_useState6","duration","setDuration","_useState7","_useState8","trackLayout","setTrackLayout","dotOffset","useRef","Animated","ValueXY","current","xDotOffsetAtAnimationStart","_useState9","Audio","_useState10","soundObject","_useRecoilState","useRecoilState","_useRecoilState2","songIdPlaying","setSongIdPlaying","useEffect","unsubscribe","addListener","pause","songId","_panResponder","PanResponder","onMoveShouldSetResponderCapture","onMoveShouldSetPanResponderCapture","onPanResponderGrant","_onPanResponderGrant","e","gestureState","x","_value","setOffset","setValue","y","_x2","onPanResponderMove","event","dx","dy","onPanResponderTerminationRequest","onPanResponderTerminate","_onPanResponderTerminate","evt","currentOffsetX","flattenOffset","mapAudioToCurrentTime","_x3","_x4","onPanResponderRelease","_onPanResponderRelease","vx","_x5","_x6","setPositionAsync","onPressPlayPause","play","_ref5","playAsync","startMovingDot","song","songTitle","_ref6","pauseAsync","timing","stop","_ref7","status","getStatusAsync","durationLeft","toValue","easing","Easing","linear","start","animationPausedOrStopped","_ref8","sleep","loadAudio","_ref9","audio","durationMillis","animatedCurrentTime","interpolate","inputRange","outputRange","extrapolate","__getValue","unloadAsync","removeAllListeners","animatedWidth","marginHorizontal","fullWidth","paddingLeft","zIndex","onLayout","nativeEvent","layout","TRACK_SIZE","panHandlers","colorsArray","root","container","borderTopWidth","levelTag","SongListItem","_song$audio","_tags2","setFavoriteSongs","favoriteSongs","level","description","origin","url","songOnClick","parseInt","levelNumber","HTMLView","textComponentProps","value","AudioPlayer","onClick","buttonTitle","button","paddingVertical","paddingHorizontal","circle","circleTitle","circleTitleSmall","circleSubtitle","levelWrapper","notFound","Home","_user$user$level","_feed$levels$","_feed$levels","_feed$levels2","_level$feed","feed","loading","currenUserLevel","levels","activeLevel","setActiveLevel","find","lvl","page","StatusBar","barStyle","l","feedItem","jindex","songaudio","React","Favorites","_user$user2","songs","articles","filter","titleStyle","activeOpacity","disabled","isLoading","loaderColor","imageStyle","rest","_objectWithoutProperties","_excluded","opacityStyle","opacity","ActivityIndicator","caption","articleTitle","songSubtitle","songSubtitleBg","songWrapper","instructionsWrapper","border","imgContainer","Details","_data$video","_data$audio","route","_route$params","params","from","video","vimeo_video_id","mediaWidth","imgHeight","Video","videoStyle","uri","useNativeControls","resizeMode","ResizeMode","CONTAIN","isLooping","_Fragment","Platform","OS","margin","position","top","left","src","allow","Vimeo","videoId","Lightbox","instructions","musicLearning","cognitiveSkills","tagTitles","_t$tag_category","tag_category","_t$tag_category2","i","console","log","Tab","createBottomTabNavigator","TabNavigator","Navigator","screenOptions","tabName","tabBarStyle","borderWidth","overflow","tabBarIcon","tabStatus","tintColor","headerShown","tabBarInactiveTintColor","tabBarInactiveBackgroundColor","tabBarActiveTintColor","tabBarActiveBackgroundColor","screenListeners","tabPress","_e$target","tab","target","split","Screen","component","HomeStackNavigator","options","ArticlesStackNavigator","SongsStackNavigator","PreferencesStackNavigator","FavoritesStackNavigator","tabBarButton","renderTabBarIcon","rootScroll","catHeader","favoriteHeader","menuItem","tagHeaderWrapper","tagHeaderContainerFirst","tagHeaderContainerLast","tagItemWrapper","menuItemWrapper","section","paragraph","checkbox","searchBox","drawerContents","SafeAreaView","item","handleItemClick","RightDrawerContext","LeftDrawer","createDrawerNavigator","LeftDrawerScreen","initialRouteName","drawerContent","filterArticlesKeyword","filterSongsKeyword","filterFavoriteArticles","filterFavoriteSongs","filterArticles","filterSongs","filterSongsLevels","setFilterArticles","setFilterSongs","setFilterSongsLevels","setFilterArticlesKeyword","setFilterSongsKeyword","setFilterFavoriteArticles","setFilterFavoriteSongs","_React$useState","_React$useState2","rightDrawerOpen","setRightDrawerOpen","mode","setMode","openRightDrawer","closeRightDrawer","handleFavoriteChange","newValue","handleCheckboxChange","concat","_toConsumableArray","handleLevelChange","items","articleTags","songTags","sort","a","b","Drawer","open","onOpen","onClose","drawerType","renderDrawerContent","Input","variant","InputField","placeholder","onChange","Checkbox","onValueChange","tagCategory","Provider","catTitle","imgTitle","overlay","Articles","categories","cats","_a$attributes","_b$attributes","attributes","order","cat","_cat$attributes","_cat$attributes$image","_cat$attributes$image2","_cat$attributes$image3","_cat$attributes$image4","_cat$attributes$image5","_cat$attributes2","_cat$attributes3","formats","thumbnail","catId","ImageBackground","Math","min","scrollRoot","filterItems","deleteFilterButton","_categories$find","_categories$find$attr","_categories$find2","_categories$find2$att","_categories$find3","_categories$find3$att","filteredArcicles","_a$article_category","_a$title","article_category","found","forEach","_a$tags","toLowerCase","category","c","ind","songDetails","alphabetContainer","right","borderTopLeftRadius","borderBottomLeftRadius","alphabet","Songs","scrollRef","filteredSongs","_a$subtitle","_a$level","Array","_","toUpperCase","startsWith","String","fromCharCode","letter","scrollY","scrollTo","ref","localeCompare","_song$level","LabeledTextInput","label","isMandatory","other","TextInput","input","borderStyle","placeholderTextColor","HorizontalLine","borderBottomColor","ErrorDisplay","message","MessageDisplay","Preferences","logoutUser","setOpen","studentLevel","onChangeStudentLevel","changePasswordError","setChangePasswordError","changePasswordMessage","setChangePasswordMessage","currentPassword","setCurrentPassword","_useState11","_useState12","newPassword","setNewPassword","_useState13","_useState14","confirmPassword","setConfirmPassword","handleChangePassword","cmsAPI","post","password","passwordConfirmation","err","_err$response","_err$response$data","_err$response$data$er","response","error","expirationTimestamp","redemptionCodeExpirationTimestamp","DropDownPicker","val","patch","SET_USER_LEVEL","Date","toLocaleDateString","year","month","day","secureTextEntry","onChangeText","homeTitleWrapper","headerTitle","homeHeaderTitle","Stack","createNativeStackNavigator","navigationPropsHome","headerTintColor","headerStyle","shadowColor","elevation","headerTitleStyle","headerTitleAlign","navigationProps","now","isRedemptionCodeExpiring","initialParams","parentName","headerRight","headerLeft","toggleDrawer","goBack","ArticlesList","link","alignSelf","textDecorationLine","RegistrationComponent","verifyEmail","setError","setLevels","fetchLevels","onChangeParentName","parentEmail","onChangeParentEmail","studentName","onChangeStudentName","_useState15","_useState16","teacherName","onChangeTeacherName","_useState17","_useState18","schoolName","onChangeSchoolName","_useState19","_useState20","onChangePassword","_useState21","_useState22","redemptionCode","onChangeRedemptionCode","result","get","Error","handleRegister","axios","username","email","_error$response","_error$response$data","_error$response$data$","_error$response$data$2","_error$response$data$3","_error$response$data$4","_error$response2","_error$response2$data","_error$response2$data2","msg","details","errors","keyboardType","LoginComponent","registered","registeredEmail","loginUser","onChangeEmail","code","onChangeCode","resent","setResent","handleLogin","identifier","handleVerify","Pressable","ResetPasswordComponent","_objectDestructuringEmpty","setCode","repeatPassword","onChangeRepeatPassword","handlePasswordReset","ForgotPasswordComponent","codeSent","setCodeSent","match","AuthScreen","onChangeLayout","setEmail","links","login","register","forgotPassword","linksToShow","authScreens","NavigationContainer","documentTitle","formatter","_links$layout","_links$layout2","_links$key","WarningDisplay","marginVertical","RedeemCodeComponent","setMessage","handleRedeemCode","SET_REDEMPTION_CODE","SET_REDEMPTION_CODE_EXPIRATION","warningMessage","AccessDeniedComponent","redeemCode","setRedeemCode","validateAccess","href","loggedIn","loadUser","loadFeed","authorized","setAuthorized","isExpired","isAuthorized","_options$title","DrawerNavigator","SplashScreen","isReady","setReady","_useFonts","useFonts","Nunito_200ExtraLight","Nunito_300Light","Nunito_400Regular","Nunito_500Medium","Nunito_600SemiBold","Nunito_700Bold","Nunito_800ExtraBold","Nunito_900Black","Nunito_200ExtraLight_Italic","Nunito_300Light_Italic","Nunito_400Regular_Italic","Nunito_500Medium_Italic","Nunito_600SemiBold_Italic","Nunito_700Bold_Italic","Nunito_800ExtraBold_Italic","Nunito_900Black_Italic","_useFonts2","fontsLoaded","preloadAssets","all","store","GluestackUIProvider","config","RecoilRoot","initialState","slice","createSlice","reducers","state","_state$user","_state$user2","storage","set","SET_FAVORITE_ARTICLES","_state$user3","_state$user4","SET_FAVORITE_SONGS","_state$user5","_state$user6","_state$user7","_state$user8","_state$user9","_state$user10","authenticate","LOGOUT_ACTION","_ref10","_ref11","_ref12","_ref13","_ref14","setLoading","_ref15","asyncActions","_ref16","splice","actions","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_x7","_ref23","_x8","_ref24","_x9","_ref25","_JSON$parse","jwt","_x10","_ref26","_x11","_ref27","delete","_x12","_ref28","_articles$data","_songs$data","_categories$data","_tags$data3","_yield$Promise$all","_yield$Promise$all2","reduce","acc","_article$tags","v","indexOf","articleTagsGrouped","_tags$data","_tags$data$data","_tagData$attributes","_categoryData$data","_categoryData$data$at","_categoryData$data2","_categoryData$data3","_tagData$attributes2","_categoryData$data4","_categoryData$data4$a","tagData","categoryData","tagTitle","tagId","_song$tags","songTagsGrouped","_tags$data2","_tags$data2$data","_tagData$attributes3","_categoryData$data5","_categoryData$data5$a","_categoryData$data6","_categoryData$data7","_tagData$attributes4","_categoryData$data8","_categoryData$data8$a","_x13","_slice$actions","useDispatch","useSelector","_ref29","app","Buffer","getStore","token","str","toString","exp","getTime","baseURL","headers","interceptors","request","use","userData","_store","type","Authorization","_store2","_store3","mmkv","MMKV","storageClass","_createClass","_classCallCheck","Storage","setItem","getString","getItem","removeItem","env","_Constants$expoConfig","Constants","expoConfig","_Constants$expoConfig2","extra","configureStore","reducer","middleware","getDefaultMiddleware","logger","devTools","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","leafPrototypes","getProto","getPrototypeOf","obj","then","ns","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}