first commit
|
@ -0,0 +1,6 @@
|
|||
|
||||
[android]
|
||||
target = Google Inc.:Google APIs:23
|
||||
|
||||
[maven_repositories]
|
||||
central = https://repo1.maven.org/maven2
|
|
@ -0,0 +1,4 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
extends: '@react-native-community',
|
||||
};
|
|
@ -0,0 +1,65 @@
|
|||
[ignore]
|
||||
; We fork some components by platform
|
||||
.*/*[.]android.js
|
||||
|
||||
; Ignore "BUCK" generated dirs
|
||||
<PROJECT_ROOT>/\.buckd/
|
||||
|
||||
; Ignore polyfills
|
||||
node_modules/react-native/Libraries/polyfills/.*
|
||||
|
||||
; Flow doesn't support platforms
|
||||
.*/Libraries/Utilities/LoadingView.js
|
||||
|
||||
[untyped]
|
||||
.*/node_modules/@react-native-community/cli/.*/.*
|
||||
|
||||
[include]
|
||||
|
||||
[libs]
|
||||
node_modules/react-native/interface.js
|
||||
node_modules/react-native/flow/
|
||||
|
||||
[options]
|
||||
emoji=true
|
||||
|
||||
exact_by_default=true
|
||||
|
||||
format.bracket_spacing=false
|
||||
|
||||
module.file_ext=.js
|
||||
module.file_ext=.json
|
||||
module.file_ext=.ios.js
|
||||
|
||||
munge_underscores=true
|
||||
|
||||
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
|
||||
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
|
||||
|
||||
suppress_type=$FlowIssue
|
||||
suppress_type=$FlowFixMe
|
||||
suppress_type=$FlowFixMeProps
|
||||
suppress_type=$FlowFixMeState
|
||||
|
||||
[lints]
|
||||
sketchy-null-number=warn
|
||||
sketchy-null-mixed=warn
|
||||
sketchy-number=warn
|
||||
untyped-type-import=warn
|
||||
nonstrict-import=warn
|
||||
deprecated-type=warn
|
||||
unsafe-getters-setters=warn
|
||||
unnecessary-invariant=warn
|
||||
signature-verification-failure=warn
|
||||
|
||||
[strict]
|
||||
deprecated-type
|
||||
nonstrict-import
|
||||
sketchy-null
|
||||
unclear-type
|
||||
unsafe-getters-setters
|
||||
untyped-import
|
||||
untyped-type-import
|
||||
|
||||
[version]
|
||||
^0.158.0
|
|
@ -0,0 +1 @@
|
|||
*.pbxproj -text
|
|
@ -0,0 +1,59 @@
|
|||
# OSX
|
||||
#
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
#
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
|
||||
# Android/IntelliJ
|
||||
#
|
||||
build/
|
||||
.idea
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
|
||||
# node.js
|
||||
#
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# BUCK
|
||||
buck-out/
|
||||
\.buckd/
|
||||
*.keystore
|
||||
!debug.keystore
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
# screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/
|
||||
|
||||
*/fastlane/report.xml
|
||||
*/fastlane/Preview.html
|
||||
*/fastlane/screenshots
|
||||
|
||||
# Bundle artifact
|
||||
*.jsbundle
|
||||
|
||||
# CocoaPods
|
||||
/ios/Pods/
|
|
@ -0,0 +1,6 @@
|
|||
module.exports = {
|
||||
bracketSpacing: false,
|
||||
jsxBracketSameLine: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
{}
|
|
@ -0,0 +1,162 @@
|
|||
/**
|
||||
* Sample React Native App
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
* @flow strict-local
|
||||
*/
|
||||
|
||||
import React, { useEffect } from 'react';
|
||||
import moment from 'moment';
|
||||
import messaging from '@react-native-firebase/messaging';
|
||||
import AsyncStorage from '@react-native-community/async-storage';
|
||||
import { StyleSheet, ScrollView, View, Text, StatusBar } from 'react-native';
|
||||
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
||||
import { colors } from './src/assets/styles/colors-theme';
|
||||
import Router from './router';
|
||||
import { Provider } from 'mobx-react';
|
||||
import { ModalPortal } from 'react-native-modals';
|
||||
import Store from './src/stores/index';
|
||||
import { NavigationContainer, useFocusEffect } from '@react-navigation/native';
|
||||
import { createStackNavigator, HeaderBackButton } from '@react-navigation/stack';
|
||||
import { createMaterialBottomTabNavigator } from '@react-navigation/material-bottom-tabs';
|
||||
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
||||
import {
|
||||
Header,
|
||||
LearnMoreLinks,
|
||||
Colors,
|
||||
DebugInstructions,
|
||||
ReloadInstructions,
|
||||
} from 'react-native/Libraries/NewAppScreen';
|
||||
import Icon from 'react-native-vector-icons/dist/MaterialCommunityIcons';
|
||||
import SplashScreen from './src/pages/splash/splashScreen';
|
||||
import Main from './src/pages/main/main';
|
||||
import buyHistory from './src/pages/buyHistory/buyHistory';
|
||||
import Favorite from './src/pages/favorite/favorite';
|
||||
import Profile from './src/pages/profile/profile';
|
||||
import BuyHistory from './src/pages/buyHistory/buyHistory';
|
||||
|
||||
Icon.loadFont();
|
||||
console.disableYellowBox = true;
|
||||
const Stack = createStackNavigator();
|
||||
const BottomTab = createBottomTabNavigator();
|
||||
const BottomTabScreen = () => (
|
||||
<BottomTab.Navigator
|
||||
screenOptions={({ route }) => ({
|
||||
tabBarIcon: ({ focused, color, size }) => {
|
||||
let iconName;
|
||||
switch (route.name) {
|
||||
case 'Main':
|
||||
iconName = 'home-variant';
|
||||
break;
|
||||
case 'BuyHistory':
|
||||
iconName = 'cart';
|
||||
break;
|
||||
case 'Favorite':
|
||||
iconName = 'heart';
|
||||
break;
|
||||
case 'Profile':
|
||||
iconName = 'account-circle';
|
||||
break;
|
||||
}
|
||||
return (
|
||||
<Icon
|
||||
name={iconName}
|
||||
size={size}
|
||||
color={color}
|
||||
style={{ marginTop: 5 }}
|
||||
/>
|
||||
);
|
||||
},
|
||||
})}
|
||||
tabBarOptions={{
|
||||
activeTintColor: 'tomato',
|
||||
inactiveTintColor: 'gray',
|
||||
}}>
|
||||
<Stack.Screen
|
||||
name="Main"
|
||||
component={Main}
|
||||
options={{ tabBarLabel: '主頁' }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Favorite"
|
||||
component={Favorite}
|
||||
options={{ tabBarLabel: '我的清單' }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="BuyHistory"
|
||||
component={BuyHistory}
|
||||
options={{ tabBarLabel: '購買記錄' }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Profile"
|
||||
component={Profile}
|
||||
options={{ tabBarLabel: '賬號/設定' }}
|
||||
/>
|
||||
</BottomTab.Navigator>
|
||||
);
|
||||
const App: () => React$Node = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Provider {...Store}>
|
||||
|
||||
<SafeAreaProvider>
|
||||
<StatusBar
|
||||
animated={true}
|
||||
barStyle={'default'}
|
||||
backgroundColor={'white'}
|
||||
translucent={true}
|
||||
/>
|
||||
<NavigationContainer
|
||||
onStateChange={state => Store.appStore.setRouterState(state)}
|
||||
ref={navigatorRef => Store.appStore.setRouterRef(navigatorRef)}>
|
||||
<Router />
|
||||
</NavigationContainer>
|
||||
<ModalPortal />
|
||||
</SafeAreaProvider>
|
||||
</Provider>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
scrollView: {
|
||||
backgroundColor: Colors.lighter,
|
||||
},
|
||||
engine: {
|
||||
position: 'absolute',
|
||||
right: 0,
|
||||
},
|
||||
body: {
|
||||
backgroundColor: colors.bgc,
|
||||
},
|
||||
sectionContainer: {
|
||||
marginTop: 32,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 24,
|
||||
fontWeight: '600',
|
||||
color: Colors.black,
|
||||
},
|
||||
sectionDescription: {
|
||||
marginTop: 8,
|
||||
fontSize: 18,
|
||||
fontWeight: '400',
|
||||
color: Colors.dark,
|
||||
},
|
||||
highlight: {
|
||||
fontWeight: '700',
|
||||
},
|
||||
footer: {
|
||||
color: Colors.dark,
|
||||
fontSize: 12,
|
||||
fontWeight: '600',
|
||||
padding: 4,
|
||||
paddingRight: 12,
|
||||
textAlign: 'right',
|
||||
},
|
||||
});
|
||||
|
||||
export default App;
|
|
@ -0,0 +1,170 @@
|
|||
import React from 'react';
|
||||
import {
|
||||
SafeAreaView,
|
||||
Text,
|
||||
View,
|
||||
TouchableOpacity,
|
||||
Image,
|
||||
TextInput,
|
||||
Keyboard,
|
||||
} from 'react-native';
|
||||
import { inject, observer } from 'mobx-react';
|
||||
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
|
||||
import Toast, { DURATION } from 'react-native-easy-toast';
|
||||
import Icon from 'react-native-vector-icons/dist/MaterialCommunityIcons';
|
||||
import { observable } from 'mobx';
|
||||
import { colors } from './src/assets/styles/colors-theme';
|
||||
import { s, vs, ms } from 'react-native-size-matters';
|
||||
import DeviceInfo from 'react-native-device-info';
|
||||
Icon.loadFont();
|
||||
@inject('appStore')
|
||||
@observer
|
||||
export default class MyTabBar extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.store = props.appStore;
|
||||
}
|
||||
|
||||
langLabelReturn(label) {
|
||||
switch (label) {
|
||||
case 'main':
|
||||
return this.store.text.main;
|
||||
break;
|
||||
case 'myfavourite':
|
||||
return this.store.text.myfavourite;
|
||||
break;
|
||||
|
||||
case 'ShoppingCart':
|
||||
return this.store.text.shoppingcart;
|
||||
break;
|
||||
|
||||
case 'shoppingHistory':
|
||||
return this.store.text.shoppingHistory;
|
||||
break;
|
||||
|
||||
case 'acAndSetting':
|
||||
return this.store.text.acAndSetting;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
var { state, descriptors, navigation, logined } = this.props;
|
||||
return (
|
||||
<View style={{ flexDirection: 'row', backgroundColor: 'white' }}>
|
||||
{state.routes.map((route, index) => {
|
||||
const { options } = descriptors[route.key];
|
||||
const label =
|
||||
options.tabBarLabel !== undefined
|
||||
? options.tabBarLabel
|
||||
: options.title !== undefined
|
||||
? options.title
|
||||
: route.name;
|
||||
let iconName;
|
||||
switch (route.name) {
|
||||
case 'Main':
|
||||
iconName = 'home-outline';
|
||||
break;
|
||||
case 'BuyHistory':
|
||||
iconName = 'history';
|
||||
break;
|
||||
case 'ShoppingCart':
|
||||
iconName = 'shopping-outline';
|
||||
break;
|
||||
case 'Favorite':
|
||||
iconName = 'heart-outline';
|
||||
break;
|
||||
case 'Profile':
|
||||
iconName = 'account-outline';
|
||||
break;
|
||||
}
|
||||
|
||||
const isFocused = state.index === index;
|
||||
|
||||
const onPress = () => {
|
||||
const event = navigation.emit({
|
||||
type: 'tabPress',
|
||||
target: route.key,
|
||||
});
|
||||
|
||||
if (!isFocused && !event.defaultPrevented) {
|
||||
this.store.catalogueSelected = null;
|
||||
console.log(route.name);
|
||||
if (route.name == 'Profile' && !this.store.logined) {
|
||||
navigation.navigate('Signin');
|
||||
} else if (route.name == 'Favorite' && !this.store.logined) {
|
||||
navigation.navigate('Signin');
|
||||
} else if (route.name == 'BuyHistory' && !this.store.logined) {
|
||||
navigation.navigate('Signin');
|
||||
} else {
|
||||
navigation.navigate(route.name);
|
||||
}
|
||||
} else if (isFocused && route.name == 'Main') {
|
||||
this.store.catalogueSelected = null;
|
||||
}
|
||||
};
|
||||
|
||||
const onLongPress = () => {
|
||||
navigation.emit({
|
||||
type: 'tabLongPress',
|
||||
target: route.key,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<TouchableOpacity
|
||||
accessibilityRole="button"
|
||||
accessibilityStates={isFocused ? ['selected'] : []}
|
||||
accessibilityLabel={options.tabBarAccessibilityLabel}
|
||||
testID={options.tabBarTestID}
|
||||
onPress={onPress}
|
||||
onLongPress={onLongPress}
|
||||
style={{
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
marginTop: 5,
|
||||
marginBottom: 5,
|
||||
}}>
|
||||
<Icon
|
||||
name={iconName}
|
||||
size={28}
|
||||
color={isFocused ? colors.mainColor : 'black'}
|
||||
/>
|
||||
<Text
|
||||
style={{
|
||||
color: isFocused ? colors.mainColor : 'black',
|
||||
fontSize: 12,
|
||||
}}>
|
||||
{this.langLabelReturn(label)}
|
||||
</Text>
|
||||
{label == 'ShoppingCart' ? (
|
||||
<View
|
||||
style={{
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
position: 'absolute',
|
||||
|
||||
right: DeviceInfo.isTablet() ? s(30) : s(24),
|
||||
}}>
|
||||
<Icon name="circle" color={colors.mainColor} size={18} />
|
||||
<Text
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: 4,
|
||||
fontSize: 8,
|
||||
color: 'white',
|
||||
}}>
|
||||
{this.store.shoppingCartList.length}
|
||||
</Text>
|
||||
</View>
|
||||
) : (
|
||||
<View />
|
||||
)}
|
||||
</TouchableOpacity>
|
||||
);
|
||||
})}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,95 @@
|
|||
## Pure Mall
|
||||
|
||||
## Description
|
||||
The mobile application is an online shopping platform that offers various features such as coupons, online payment, notifications, group shopping formation, group shopping discounts, monthly sales targets with shopping incentives, point rewards, and the ability for teams to use their exclusive points to redeem gifts. users can also check the shopping records of other members in their shopping group.
|
||||
|
||||
### Screenshot
|
||||
|
||||
<img src="./src/assets/screenshot/1.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/2.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/3.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/4.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/5.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/6.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/7.png" width="20%" height="20%">
|
||||
<img src="./src/assets/screenshot/banner.png" >
|
||||
|
||||
This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
|
||||
|
||||
# Getting Started
|
||||
|
||||
>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
|
||||
|
||||
## Step 1: Start the Metro Server
|
||||
|
||||
First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
|
||||
|
||||
To start Metro, run the following command from the _root_ of your React Native project:
|
||||
|
||||
```bash
|
||||
# using npm
|
||||
npm start
|
||||
|
||||
# OR using Yarn
|
||||
yarn start
|
||||
```
|
||||
|
||||
## Step 2: Start your Application
|
||||
|
||||
Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
|
||||
|
||||
### For Android
|
||||
|
||||
```bash
|
||||
# using npm
|
||||
npm run android
|
||||
|
||||
# OR using Yarn
|
||||
yarn android
|
||||
```
|
||||
|
||||
### For iOS
|
||||
|
||||
```bash
|
||||
# using npm
|
||||
npm run ios
|
||||
|
||||
# OR using Yarn
|
||||
yarn ios
|
||||
```
|
||||
|
||||
If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
|
||||
|
||||
This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
|
||||
|
||||
## Step 3: Modifying your App
|
||||
|
||||
Now that you have successfully run the app, let's modify it.
|
||||
|
||||
1. Open `App.tsx` in your text editor of choice and edit some lines.
|
||||
2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
|
||||
|
||||
For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
|
||||
|
||||
## Congratulations! :tada:
|
||||
|
||||
You've successfully run and modified your React Native App. :partying_face:
|
||||
|
||||
### Now what?
|
||||
|
||||
- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
|
||||
- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
|
||||
|
||||
# Learn More
|
||||
|
||||
To learn more about React Native, take a look at the following resources:
|
||||
|
||||
- [React Native Website](https://reactnative.dev) - learn more about React Native.
|
||||
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
|
||||
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
|
||||
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
|
||||
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
|
|
@ -0,0 +1,14 @@
|
|||
/**
|
||||
* @format
|
||||
*/
|
||||
|
||||
import 'react-native';
|
||||
import React from 'react';
|
||||
import App from '../App';
|
||||
|
||||
// Note: test renderer must be required after react-native.
|
||||
import renderer from 'react-test-renderer';
|
||||
|
||||
it('renders correctly', () => {
|
||||
renderer.create(<App />);
|
||||
});
|
|
@ -0,0 +1,3 @@
|
|||
export default {
|
||||
version: '1.0',
|
||||
};
|
|
@ -0,0 +1,8 @@
|
|||
module.exports = {
|
||||
presets: ['module:metro-react-native-babel-preset'],
|
||||
plugins: [
|
||||
['@babel/plugin-transform-flow-strip-types'],
|
||||
['@babel/plugin-proposal-decorators', {legacy: true}],
|
||||
['@babel/plugin-proposal-class-properties', {loose: true}],
|
||||
],
|
||||
};
|
|
@ -0,0 +1,67 @@
|
|||
/**
|
||||
* @format
|
||||
*/
|
||||
import React from 'react';
|
||||
import { AppRegistry, Platform } from 'react-native';
|
||||
import App from './App';
|
||||
import { name as appName } from './app.json';
|
||||
import codePush from 'react-native-code-push';
|
||||
import moment from 'moment';
|
||||
import messaging from '@react-native-firebase/messaging';
|
||||
import AsyncStorage from '@react-native-community/async-storage';
|
||||
var CheckisHeadless = true
|
||||
messaging().setBackgroundMessageHandler(async remoteMessage => {
|
||||
var notificationRecord = {
|
||||
notifications: [],
|
||||
unread: 0,
|
||||
}
|
||||
const data = {
|
||||
id: remoteMessage.messageId,
|
||||
date: moment().valueOf(),
|
||||
title: remoteMessage.notification.title,
|
||||
message: remoteMessage.notification.body,
|
||||
read: false,
|
||||
}
|
||||
console.log(data)
|
||||
try {
|
||||
const jsonValue = await AsyncStorage.getItem('notification')
|
||||
if (jsonValue != null) {
|
||||
notificationRecord = JSON.parse(jsonValue)
|
||||
}
|
||||
console.log(notificationRecord)
|
||||
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
await notificationRecord.notifications.push(data);
|
||||
notificationRecord.unread += 1;
|
||||
console.log(notificationRecord)
|
||||
try {
|
||||
const saveItem = JSON.stringify(notificationRecord)
|
||||
await AsyncStorage.setItem('notification', saveItem)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
function HeadlessCheck({ isHeadless }) {
|
||||
console.log(isHeadless)
|
||||
if (isHeadless) {
|
||||
// App has been launched in the background by iOS, ignore
|
||||
return null;
|
||||
}
|
||||
|
||||
return <App />
|
||||
}
|
||||
// HeadlessCheck()=> {
|
||||
// return codePush(App);
|
||||
// }
|
||||
function RealApp() {
|
||||
return codePush(App);
|
||||
}
|
||||
|
||||
AppRegistry.registerComponent(appName, () => RealApp());
|
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
* Metro configuration for React Native
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
transformer: {
|
||||
getTransformOptions: async () => ({
|
||||
transform: {
|
||||
experimentalImportSupport: false,
|
||||
inlineRequires: false,
|
||||
},
|
||||
}),
|
||||
},
|
||||
};
|
|
@ -0,0 +1,17 @@
|
|||
/**
|
||||
* Metro configuration for React Native
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
transformer: {
|
||||
getTransformOptions: async () => ({
|
||||
transform: {
|
||||
experimentalImportSupport: false,
|
||||
inlineRequires: false,
|
||||
},
|
||||
}),
|
||||
},
|
||||
};
|
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"name": "puremall",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"android": "react-native run-android",
|
||||
"ios": "react-native run-ios",
|
||||
"start": "react-native start",
|
||||
"test": "jest",
|
||||
"lint": "eslint ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-decorators": "^7.12.1",
|
||||
"@invertase/react-native-apple-authentication": "^2.1.2",
|
||||
"@react-native-community/async-storage": "^1.12.1",
|
||||
"@react-native-community/datetimepicker": "^3.5.2",
|
||||
"@react-native-community/masked-view": "^0.1.10",
|
||||
"@react-native-firebase/app": "^11.2.0",
|
||||
"@react-native-firebase/messaging": "^11.2.0",
|
||||
"@react-native-google-signin/google-signin": "^8.1.0",
|
||||
"@react-navigation/bottom-tabs": "^5.11.2",
|
||||
"@react-navigation/material-bottom-tabs": "^5.3.10",
|
||||
"@react-navigation/native": "^5.8.10",
|
||||
"@react-navigation/stack": "^5.12.8",
|
||||
"axios": "^0.21.0",
|
||||
"babel-plugin-transform-decorators-legacy": "^1.3.5",
|
||||
"buffer": "^6.0.3",
|
||||
"date-time-format-timezone": "^1.0.22",
|
||||
"lodash": "^4.17.20",
|
||||
"lottie-ios": "^3.2.3",
|
||||
"lottie-react-native": "^4.0.3",
|
||||
"mobx": "^5.15.4",
|
||||
"mobx-react": "^6.2.2",
|
||||
"moment": "^2.29.1",
|
||||
"qs": "^6.9.4",
|
||||
"query-string": "^6.13.7",
|
||||
"react": "16.13.1",
|
||||
"react-native": "0.63.4",
|
||||
"react-native-app-intro-slider": "^4.0.4",
|
||||
"react-native-base64": "^0.1.0",
|
||||
"react-native-circular-progress": "^1.3.7",
|
||||
"react-native-code-push": "^7.0.1",
|
||||
"react-native-confirmation-code-field": "^6.5.1",
|
||||
"react-native-countdown-component": "^2.7.1",
|
||||
"react-native-credit-card-input": "^0.4.1",
|
||||
"react-native-date-picker": "^4.1.1",
|
||||
"react-native-device-info": "^8.4.8",
|
||||
"react-native-dialog": "^8.2.0",
|
||||
"react-native-easy-toast": "^1.2.0",
|
||||
"react-native-elements": "^3.4.2",
|
||||
"react-native-fast-image": "^8.3.4",
|
||||
"react-native-gallery-swiper": "^1.26.4",
|
||||
"react-native-general-statusbar": "^1.0.1",
|
||||
"react-native-gesture-handler": "^1.10.3",
|
||||
"react-native-htmlview": "^0.16.0",
|
||||
"react-native-image-picker": "^3.2.1",
|
||||
"react-native-image-viewing": "^0.2.0",
|
||||
"react-native-keyboard-aware-scroll-view": "^0.9.3",
|
||||
"react-native-loading-spinner-overlay": "^2.0.0",
|
||||
"react-native-modal": "^12.0.2",
|
||||
"react-native-modal-datetime-picker": "^10.2.0",
|
||||
"react-native-modalize": "^2.0.8",
|
||||
"react-native-modals": "^0.22.3",
|
||||
"react-native-paper": "^4.4.1",
|
||||
"react-native-popup-menu": "^0.15.9",
|
||||
"react-native-progress": "^4.1.2",
|
||||
"react-native-reanimated": "^1.13.2",
|
||||
"react-native-safe-area-context": "^3.1.9",
|
||||
"react-native-safe-area-view": "^1.1.1",
|
||||
"react-native-screens": "^2.15.0",
|
||||
"react-native-size-matters": "^0.3.1",
|
||||
"react-native-status-bar-height": "^2.6.0",
|
||||
"react-native-svg": "^12.1.1",
|
||||
"react-native-swiper": "^1.6.0",
|
||||
"react-native-switch-pro": "^1.0.5",
|
||||
"react-native-tab-view": "^2.15.2",
|
||||
"react-native-textinput-effects": "^0.6.1",
|
||||
"react-native-uuid": "^1.4.9",
|
||||
"react-native-vector-icons": "^7.1.0",
|
||||
"underscore": "^1.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.8.4",
|
||||
"@babel/runtime": "^7.8.4",
|
||||
"@react-native-community/eslint-config": "^1.1.0",
|
||||
"babel-jest": "^25.1.0",
|
||||
"eslint": "^6.5.1",
|
||||
"jest": "^25.1.0",
|
||||
"metro-react-native-babel-preset": "^0.59.0",
|
||||
"react-test-renderer": "16.13.1"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "react-native"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,336 @@
|
|||
/**
|
||||
* Sample React Native App
|
||||
* https://github.com/facebook/react-native
|
||||
*
|
||||
* @format
|
||||
* @flow strict-local
|
||||
*/
|
||||
|
||||
|
||||
import React, { useEffect } from 'react';
|
||||
import messaging from '@react-native-firebase/messaging';
|
||||
import { colors } from './src/assets/styles/colors-theme';
|
||||
import {
|
||||
StyleSheet,
|
||||
ScrollView,
|
||||
View,
|
||||
Text,
|
||||
StatusBar,
|
||||
TouchableOpacity,
|
||||
} from 'react-native';
|
||||
import SafeAreaView from 'react-native-safe-area-view';
|
||||
import { Provider } from 'mobx-react';
|
||||
import Store from './src/stores/index';
|
||||
import { NavigationContainer, useFocusEffect } from '@react-navigation/native';
|
||||
import { createStackNavigator, HeaderBackButton } from '@react-navigation/stack';
|
||||
import { createMaterialBottomTabNavigator } from '@react-navigation/material-bottom-tabs';
|
||||
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
||||
import {
|
||||
Header,
|
||||
LearnMoreLinks,
|
||||
Colors,
|
||||
DebugInstructions,
|
||||
ReloadInstructions,
|
||||
} from 'react-native/Libraries/NewAppScreen';
|
||||
import Icon from 'react-native-vector-icons/dist/MaterialCommunityIcons';
|
||||
import SplashScreen from './src/pages/splash/splashScreen';
|
||||
import Main from './src/pages/main/main';
|
||||
import Search from './src/pages/search/search';
|
||||
import Favorite from './src/pages/favorite/favorite';
|
||||
import MyTabBar from './MyTabBar';
|
||||
import Order from './src/pages/order/order';
|
||||
import Profile from './src/pages/profile/profile';
|
||||
import Setting from './src/pages/profile/Setting';
|
||||
import AddName from './src/pages/profile/addName';
|
||||
import CreditCard from './src/pages/profile/creditCard';
|
||||
import AddressSetting from './src/pages/profile/addressSetting';
|
||||
import BuyHistory from './src/pages/buyHistory/buyHistory';
|
||||
import HistoryDetails from './src/pages/buyHistory/historyDetails';
|
||||
import ProductsDetails from './src/pages/productsDetails/productsDetails';
|
||||
import ShoppingCart from './src/pages/shoppingCart/shoppingCart';
|
||||
import Signin from './src/pages/signin/signin';
|
||||
import Signup from './src/pages/signup/signup';
|
||||
import News from './src/pages/news/news';
|
||||
import SignUpVerify from './src/pages/signup/signUpVerify';
|
||||
import ForgotPassword from './src/pages/signup/forgotPassword';
|
||||
import GroupDetails from './src/pages/group/groupDetails';
|
||||
import RedeemGifts from './src/pages/group/redeemGifts';
|
||||
import ManageMembers from './src/pages/group/manageMembers';
|
||||
import SalesRecord from './src/pages/group/salesRecord';
|
||||
import GroupList from './src/pages/group/groupList';
|
||||
import RedeemRecord from './src/pages/profile/redeemRecord'
|
||||
import FullScreen from './src/pages/fullScreen/fullScreen'
|
||||
import Notification from './src/pages/notificaation/notification'
|
||||
import Tutorial from './src/pages/tutorial/tutorial'
|
||||
Icon.loadFont();
|
||||
|
||||
const Stack = createStackNavigator();
|
||||
const BottomTab = createBottomTabNavigator();
|
||||
|
||||
import { inject, observer } from 'mobx-react';
|
||||
|
||||
@inject('appStore')
|
||||
@observer
|
||||
class Router extends React.Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.store = props.appStore;
|
||||
// this.handleFrontNotification = this.handleFrontNotification.bind(this);
|
||||
}
|
||||
|
||||
|
||||
handleFrontNotification() {
|
||||
const unsubscribe = messaging().onMessage(async remoteMessage => {
|
||||
console.log('A new FCM message arrived!', JSON.stringify(remoteMessage));
|
||||
});
|
||||
}
|
||||
|
||||
async componentDidMount() {
|
||||
this.messageListener = messaging().onMessage(async message => this.store.saveNotification(message))
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this.messageListener();
|
||||
}
|
||||
BottomTabScreen = () => {
|
||||
return (
|
||||
<BottomTab.Navigator
|
||||
tabBar={props => <MyTabBar {...props} logined={this.store.logined} />}>
|
||||
<Stack.Screen
|
||||
name="Main"
|
||||
component={Main}
|
||||
options={{ tabBarLabel: 'main' }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="BuyHistory"
|
||||
component={BuyHistory}
|
||||
options={{ tabBarLabel: 'shoppingHistory' }}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="ShoppingCart"
|
||||
component={ShoppingCart}
|
||||
options={{ tabBarLabel: 'ShoppingCart' }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Favorite"
|
||||
component={Favorite}
|
||||
options={{ tabBarLabel: 'myfavourite' }}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="Profile"
|
||||
component={Profile}
|
||||
options={{ tabBarLabel: 'acAndSetting' }}
|
||||
/>
|
||||
</BottomTab.Navigator>
|
||||
);
|
||||
};
|
||||
render() {
|
||||
return (
|
||||
<SafeAreaView style={{ flex: 1,backgroundColor:'white' }}>
|
||||
<Stack.Navigator initialRouteName="SplashScreen">
|
||||
{!this.store.splash ? (
|
||||
<>
|
||||
<Stack.Screen
|
||||
name="SplashScreen"
|
||||
component={SplashScreen}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<Stack.Screen
|
||||
name="BottomTabScreen"
|
||||
component={this.BottomTabScreen}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="ProductsDetails"
|
||||
component={ProductsDetails}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="Signin"
|
||||
component={Signin}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Signup"
|
||||
component={Signup}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="SignUpVerify"
|
||||
component={SignUpVerify}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="AddName"
|
||||
component={AddName}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="ForgotPassword"
|
||||
component={ForgotPassword}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="ShoppingCart"
|
||||
component={ShoppingCart}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Order"
|
||||
component={Order}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="News"
|
||||
component={News}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="HistoryDetails"
|
||||
component={HistoryDetails}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
|
||||
<Stack.Screen
|
||||
name="CreditCard"
|
||||
component={CreditCard}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="AddressSetting"
|
||||
component={AddressSetting}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Setting"
|
||||
component={Setting}
|
||||
options={{ headerShown: false }}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Search"
|
||||
component={Search}
|
||||
options={{
|
||||
headerShown: false,
|
||||
// animationEnabled: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="GroupDetails"
|
||||
component={GroupDetails}
|
||||
options={{
|
||||
headerShown: false,
|
||||
// animationEnabled: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="GroupList"
|
||||
component={GroupList}
|
||||
options={{
|
||||
headerShown: false,
|
||||
// animationEnabled: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="RedeemGifts"
|
||||
component={RedeemGifts}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="ManageMembers"
|
||||
component={ManageMembers}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="SalesRecord"
|
||||
component={SalesRecord}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="RedeemRecord"
|
||||
component={RedeemRecord}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="FullScreen"
|
||||
component={FullScreen}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Notification"
|
||||
component={Notification}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Tutorial"
|
||||
component={Tutorial}
|
||||
options={{
|
||||
headerShown: false,
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</Stack.Navigator>
|
||||
</SafeAreaView>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
scrollView: {
|
||||
backgroundColor: Colors.lighter,
|
||||
},
|
||||
engine: {
|
||||
position: 'absolute',
|
||||
right: 0,
|
||||
},
|
||||
body: {
|
||||
backgroundColor: Colors.white,
|
||||
},
|
||||
sectionContainer: {
|
||||
marginTop: 32,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 24,
|
||||
fontWeight: '600',
|
||||
color: Colors.black,
|
||||
},
|
||||
sectionDescription: {
|
||||
marginTop: 8,
|
||||
fontSize: 18,
|
||||
fontWeight: '400',
|
||||
color: Colors.dark,
|
||||
},
|
||||
highlight: {
|
||||
fontWeight: '700',
|
||||
},
|
||||
footer: {
|
||||
color: Colors.dark,
|
||||
fontSize: 12,
|
||||
fontWeight: '600',
|
||||
padding: 4,
|
||||
paddingRight: 12,
|
||||
textAlign: 'right',
|
||||
},
|
||||
});
|
||||
|
||||
export default Router;
|
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1 @@
|
|||
F81D0BFFE116347EE09EF84A5EF84824DB8EE17AD9FF86FB240BFDFEA61EF0FD comodoca.com 5fd97c3b2d29c
|
After Width: | Height: | Size: 6.6 MiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 601 B |
After Width: | Height: | Size: 783 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 7.7 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 36 KiB |
|
@ -0,0 +1,48 @@
|
|||
export const images = {
|
||||
productCatalogue: {
|
||||
alcoholic: require('./Alcoholic.png'),
|
||||
frozenmeat: require('./Frozenmeat.png'),
|
||||
drink: require('./drink.png'),
|
||||
frozenfood: require('./frozenfood.png'),
|
||||
fruit: require('./fruit.png'),
|
||||
pasta: require('./pasta.png'),
|
||||
seafood: require('./seafood.png'),
|
||||
sneck: require('./sneck.png'),
|
||||
vegetables: require('./vegetables.png'),
|
||||
},
|
||||
main: {
|
||||
mostcheapstar: require('./mostcheapstar.png'),
|
||||
ranking: require('./ranking.png'),
|
||||
whiteStar: require('./whitestar.png'),
|
||||
yellowStar: require('./yellowstar.png'),
|
||||
goldenApple: require('./goldenApple.png'),
|
||||
youmaylike: require('./youmaylike.png'),
|
||||
template: require('./template.png'),
|
||||
foodcat: require('./foodcat.png'),
|
||||
},
|
||||
details: {
|
||||
share: require('./share.png'),
|
||||
favourite: require('./favourite.png'),
|
||||
comment: require('./comment.png'),
|
||||
},
|
||||
signIn: {
|
||||
illustration: require('./illustration.png'),
|
||||
facebook: require('./facebook.png'),
|
||||
google: require('./google.png'),
|
||||
bitMap: require('./Bitmap.png'),
|
||||
logo: require('./logo.png'),
|
||||
},
|
||||
profile: {
|
||||
creditCardIcon: require('./creditcardicon.png'),
|
||||
profileShare: require('./profileshare.png'),
|
||||
},
|
||||
search: {
|
||||
greenMagnifier: require('./Icon_Magnifier.png'),
|
||||
smallGreenMagnifier: require('./Icon_Magnifier_Small.png'),
|
||||
},
|
||||
tutorial:{
|
||||
tut1:require('./tut1.png'),
|
||||
tut2:require('./tut2.png'),
|
||||
tut3:require('./tut3.png'),
|
||||
}
|
||||
};
|
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 742 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 583 KiB |
After Width: | Height: | Size: 910 KiB |
After Width: | Height: | Size: 695 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,981 @@
|
|||
{
|
||||
"v": "4.10.1",
|
||||
"fr": 30,
|
||||
"ip": 0,
|
||||
"op": 40,
|
||||
"w": 80,
|
||||
"h": 80,
|
||||
"nm": "Success Checkmark",
|
||||
"ddd": 0,
|
||||
"assets": [],
|
||||
"layers": [
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 1,
|
||||
"ty": 4,
|
||||
"nm": "Check Mark",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
40,
|
||||
40,
|
||||
0
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-1.312,
|
||||
6,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"ty": "gr",
|
||||
"it": [
|
||||
{
|
||||
"ind": 0,
|
||||
"ty": "sh",
|
||||
"ix": 1,
|
||||
"ks": {
|
||||
"a": 0,
|
||||
"k": {
|
||||
"i": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"o": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"v": [
|
||||
[
|
||||
-15.75,
|
||||
8
|
||||
],
|
||||
[
|
||||
-8,
|
||||
16
|
||||
],
|
||||
[
|
||||
13.125,
|
||||
-4
|
||||
]
|
||||
],
|
||||
"c": false
|
||||
},
|
||||
"ix": 2
|
||||
},
|
||||
"nm": "Path 1",
|
||||
"mn": "ADBE Vector Shape - Group",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tm",
|
||||
"s": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 25,
|
||||
"s": [
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 33
|
||||
}
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"e": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 2
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 3
|
||||
},
|
||||
"m": 1,
|
||||
"ix": 2,
|
||||
"nm": "Trim Paths 1",
|
||||
"mn": "ADBE Vector Filter - Trim",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "st",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 4
|
||||
},
|
||||
"w": {
|
||||
"a": 0,
|
||||
"k": 3,
|
||||
"ix": 5
|
||||
},
|
||||
"lc": 2,
|
||||
"lj": 2,
|
||||
"nm": "Stroke 1",
|
||||
"mn": "ADBE Vector Graphic - Stroke",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tr",
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 6
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 7
|
||||
},
|
||||
"sk": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 4
|
||||
},
|
||||
"sa": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 5
|
||||
},
|
||||
"nm": "Transform"
|
||||
}
|
||||
],
|
||||
"nm": "Shape 1",
|
||||
"np": 3,
|
||||
"cix": 2,
|
||||
"ix": 1,
|
||||
"mn": "ADBE Vector Group",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 40,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
},
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 2,
|
||||
"ty": 4,
|
||||
"nm": "Circle Flash",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.833
|
||||
],
|
||||
"y": [
|
||||
0.833
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.167
|
||||
],
|
||||
"y": [
|
||||
0.167
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p833_0p833_0p167_0p167"
|
||||
],
|
||||
"t": 25,
|
||||
"s": [
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
98
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.833
|
||||
],
|
||||
"y": [
|
||||
0.833
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.167
|
||||
],
|
||||
"y": [
|
||||
0.167
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p833_0p833_0p167_0p167"
|
||||
],
|
||||
"t": 30,
|
||||
"s": [
|
||||
98
|
||||
],
|
||||
"e": [
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 38
|
||||
}
|
||||
],
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
40,
|
||||
40,
|
||||
0
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667,
|
||||
0.667,
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333,
|
||||
0.333,
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 25,
|
||||
"s": [
|
||||
0,
|
||||
0,
|
||||
100
|
||||
],
|
||||
"e": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 30
|
||||
}
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"d": 1,
|
||||
"ty": "el",
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
64,
|
||||
64
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"nm": "Ellipse Path 1",
|
||||
"mn": "ADBE Vector Shape - Ellipse",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "fl",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0.529866635799,
|
||||
0.961458325386,
|
||||
0.448091417551,
|
||||
1
|
||||
],
|
||||
"ix": 4
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 5
|
||||
},
|
||||
"r": 1,
|
||||
"nm": "Fill 1",
|
||||
"mn": "ADBE Vector Graphic - Fill",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 40,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
},
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 3,
|
||||
"ty": 4,
|
||||
"nm": "Circle Stroke",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
39.022,
|
||||
39.022,
|
||||
0
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667,
|
||||
0.667,
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333,
|
||||
0.333,
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 16,
|
||||
"s": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
],
|
||||
"e": [
|
||||
80,
|
||||
80,
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667,
|
||||
0.667,
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333,
|
||||
0.333,
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 22,
|
||||
"s": [
|
||||
80,
|
||||
80,
|
||||
100
|
||||
],
|
||||
"e": [
|
||||
120,
|
||||
120,
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667,
|
||||
0.667,
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333,
|
||||
0.333,
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 25,
|
||||
"s": [
|
||||
120,
|
||||
120,
|
||||
100
|
||||
],
|
||||
"e": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 29
|
||||
}
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"ty": "gr",
|
||||
"it": [
|
||||
{
|
||||
"d": 1,
|
||||
"ty": "el",
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
60,
|
||||
60
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"nm": "Ellipse Path 1",
|
||||
"mn": "ADBE Vector Shape - Ellipse",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tm",
|
||||
"s": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 0,
|
||||
"s": [
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 16
|
||||
}
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"e": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 2
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 3
|
||||
},
|
||||
"m": 1,
|
||||
"ix": 2,
|
||||
"nm": "Trim Paths 1",
|
||||
"mn": "ADBE Vector Filter - Trim",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "st",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0.427450984716,
|
||||
0.800000011921,
|
||||
0.35686275363,
|
||||
1
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 4
|
||||
},
|
||||
"w": {
|
||||
"a": 0,
|
||||
"k": 3,
|
||||
"ix": 5
|
||||
},
|
||||
"lc": 2,
|
||||
"lj": 2,
|
||||
"nm": "Stroke 1",
|
||||
"mn": "ADBE Vector Graphic - Stroke",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tr",
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0.978,
|
||||
0.978
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 6
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 7
|
||||
},
|
||||
"sk": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 4
|
||||
},
|
||||
"sa": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 5
|
||||
},
|
||||
"nm": "Transform"
|
||||
}
|
||||
],
|
||||
"nm": "Ellipse 1",
|
||||
"np": 3,
|
||||
"cix": 2,
|
||||
"ix": 1,
|
||||
"mn": "ADBE Vector Group",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 40,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
},
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 4,
|
||||
"ty": 4,
|
||||
"nm": "Circle Green Fill",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.833
|
||||
],
|
||||
"y": [
|
||||
0.833
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.167
|
||||
],
|
||||
"y": [
|
||||
0.167
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p833_0p833_0p167_0p167"
|
||||
],
|
||||
"t": 21,
|
||||
"s": [
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
98
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 28
|
||||
}
|
||||
],
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
40,
|
||||
40,
|
||||
0
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": [
|
||||
0.667,
|
||||
0.667,
|
||||
0.667
|
||||
],
|
||||
"y": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"o": {
|
||||
"x": [
|
||||
0.333,
|
||||
0.333,
|
||||
0.333
|
||||
],
|
||||
"y": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"n": [
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0",
|
||||
"0p667_1_0p333_0"
|
||||
],
|
||||
"t": 21,
|
||||
"s": [
|
||||
0,
|
||||
0,
|
||||
100
|
||||
],
|
||||
"e": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 28
|
||||
}
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"d": 1,
|
||||
"ty": "el",
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
64,
|
||||
64
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"nm": "Ellipse Path 1",
|
||||
"mn": "ADBE Vector Shape - Ellipse",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "fl",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0.427450984716,
|
||||
0.800000011921,
|
||||
0.35686275363,
|
||||
1
|
||||
],
|
||||
"ix": 4
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 5
|
||||
},
|
||||
"r": 1,
|
||||
"nm": "Fill 1",
|
||||
"mn": "ADBE Vector Graphic - Fill",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 40,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,708 @@
|
|||
{
|
||||
"v": "5.6.10",
|
||||
"fr": 120,
|
||||
"ip": 0,
|
||||
"op": 160,
|
||||
"w": 1000,
|
||||
"h": 1000,
|
||||
"nm": "Composição 1",
|
||||
"ddd": 0,
|
||||
"assets": [],
|
||||
"layers": [
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 1,
|
||||
"ty": 4,
|
||||
"nm": "Left",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": 0.833,
|
||||
"y": 0.833
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0.333
|
||||
},
|
||||
"t": 0,
|
||||
"s": [
|
||||
650,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
650,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": 0.667,
|
||||
"y": 1
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
"t": 20,
|
||||
"s": [
|
||||
650,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
650,
|
||||
300,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
0,
|
||||
-33.333,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
-3.333,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": 0.209,
|
||||
"y": 1
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
"t": 70,
|
||||
"s": [
|
||||
650,
|
||||
300,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
650,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
3.329,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
-0.005,
|
||||
-0.047,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 120
|
||||
}
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-233,
|
||||
-9,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"ty": "gr",
|
||||
"it": [
|
||||
{
|
||||
"d": 1,
|
||||
"ty": "el",
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
90,
|
||||
90
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"nm": "Caminho da elipse 1",
|
||||
"mn": "ADBE Vector Shape - Ellipse",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "fl",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"ix": 4
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 5
|
||||
},
|
||||
"r": 1,
|
||||
"bm": 0,
|
||||
"nm": "Preenchimento 1",
|
||||
"mn": "ADBE Vector Graphic - Fill",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tr",
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-233,
|
||||
-9
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 6
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 7
|
||||
},
|
||||
"sk": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 4
|
||||
},
|
||||
"sa": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 5
|
||||
},
|
||||
"nm": "Transformar"
|
||||
}
|
||||
],
|
||||
"nm": "Elipse 1",
|
||||
"np": 3,
|
||||
"cix": 2,
|
||||
"bm": 0,
|
||||
"ix": 1,
|
||||
"mn": "ADBE Vector Group",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 160,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
},
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 2,
|
||||
"ty": 4,
|
||||
"nm": "Center",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": 0.607,
|
||||
"y": 1
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
"t": 10,
|
||||
"s": [
|
||||
500,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
500,
|
||||
300,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
0,
|
||||
-33.333,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": 0.121,
|
||||
"y": 1
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
"t": 55,
|
||||
"s": [
|
||||
500,
|
||||
300,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
500,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
0,
|
||||
-33.333,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 115
|
||||
}
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-233,
|
||||
-9,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"ty": "gr",
|
||||
"it": [
|
||||
{
|
||||
"d": 1,
|
||||
"ty": "el",
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
90,
|
||||
90
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"nm": "Caminho da elipse 1",
|
||||
"mn": "ADBE Vector Shape - Ellipse",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "fl",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"ix": 4
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 5
|
||||
},
|
||||
"r": 1,
|
||||
"bm": 0,
|
||||
"nm": "Preenchimento 1",
|
||||
"mn": "ADBE Vector Graphic - Fill",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tr",
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-233,
|
||||
-9
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 6
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 7
|
||||
},
|
||||
"sk": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 4
|
||||
},
|
||||
"sa": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 5
|
||||
},
|
||||
"nm": "Transformar"
|
||||
}
|
||||
],
|
||||
"nm": "Elipse 1",
|
||||
"np": 3,
|
||||
"cix": 2,
|
||||
"bm": 0,
|
||||
"ix": 1,
|
||||
"mn": "ADBE Vector Group",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 160,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
},
|
||||
{
|
||||
"ddd": 0,
|
||||
"ind": 3,
|
||||
"ty": 4,
|
||||
"nm": "Rigth",
|
||||
"sr": 1,
|
||||
"ks": {
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 11
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 10
|
||||
},
|
||||
"p": {
|
||||
"a": 1,
|
||||
"k": [
|
||||
{
|
||||
"i": {
|
||||
"x": 0.667,
|
||||
"y": 1
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
"t": 0,
|
||||
"s": [
|
||||
360,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
360,
|
||||
300,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
0,
|
||||
-13.366,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
0,
|
||||
36.899,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"i": {
|
||||
"x": 0.163,
|
||||
"y": 1
|
||||
},
|
||||
"o": {
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
"t": 35,
|
||||
"s": [
|
||||
360,
|
||||
300,
|
||||
0
|
||||
],
|
||||
"e": [
|
||||
360,
|
||||
500,
|
||||
0
|
||||
],
|
||||
"to": [
|
||||
0,
|
||||
-55.126,
|
||||
0
|
||||
],
|
||||
"ti": [
|
||||
0,
|
||||
-33.333,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"t": 95
|
||||
}
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-233,
|
||||
-9,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 6
|
||||
}
|
||||
},
|
||||
"ao": 0,
|
||||
"shapes": [
|
||||
{
|
||||
"ty": "gr",
|
||||
"it": [
|
||||
{
|
||||
"d": 1,
|
||||
"ty": "el",
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
90,
|
||||
90
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"nm": "Caminho da elipse 1",
|
||||
"mn": "ADBE Vector Shape - Ellipse",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "fl",
|
||||
"c": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"ix": 4
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 5
|
||||
},
|
||||
"r": 1,
|
||||
"bm": 0,
|
||||
"nm": "Preenchimento 1",
|
||||
"mn": "ADBE Vector Graphic - Fill",
|
||||
"hd": false
|
||||
},
|
||||
{
|
||||
"ty": "tr",
|
||||
"p": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
-233,
|
||||
-9
|
||||
],
|
||||
"ix": 2
|
||||
},
|
||||
"a": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"ix": 1
|
||||
},
|
||||
"s": {
|
||||
"a": 0,
|
||||
"k": [
|
||||
100,
|
||||
100
|
||||
],
|
||||
"ix": 3
|
||||
},
|
||||
"r": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 6
|
||||
},
|
||||
"o": {
|
||||
"a": 0,
|
||||
"k": 100,
|
||||
"ix": 7
|
||||
},
|
||||
"sk": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 4
|
||||
},
|
||||
"sa": {
|
||||
"a": 0,
|
||||
"k": 0,
|
||||
"ix": 5
|
||||
},
|
||||
"nm": "Transformar"
|
||||
}
|
||||
],
|
||||
"nm": "Elipse 1",
|
||||
"np": 3,
|
||||
"cix": 2,
|
||||
"bm": 0,
|
||||
"ix": 1,
|
||||
"mn": "ADBE Vector Group",
|
||||
"hd": false
|
||||
}
|
||||
],
|
||||
"ip": 0,
|
||||
"op": 160,
|
||||
"st": 0,
|
||||
"bm": 0
|
||||
}
|
||||
],
|
||||
"markers": []
|
||||
}
|
After Width: | Height: | Size: 2.4 MiB |
After Width: | Height: | Size: 2.7 MiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 5.6 MiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 359 KiB |
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* 控制全app的颜色
|
||||
* @type {{statusBarColor: string}}
|
||||
*/
|
||||
export const colors = {
|
||||
backgroundColor:'#4AB066',
|
||||
labelColor: '#A4A3A7',
|
||||
bgc: 'white',
|
||||
catColor: '#D0B895',
|
||||
historyListColor: '#F6EFE0',
|
||||
statusBarColor: '#23A2FF',
|
||||
inputBgc: '#E6E7E8',
|
||||
signupInputBgc: '#F0E1C9',
|
||||
shoppingcartColor: '#F0DEC1',
|
||||
inputText: '#4D4D4D',
|
||||
profileBg: '#D29686',
|
||||
mainColor: '#3EB873',
|
||||
otherGreen: '#6EB7A0',
|
||||
maingray: '#888A8D',
|
||||
lineColor: '#E5E5E5',
|
||||
textColor: '#000000',
|
||||
subTextColor: '#98AD86',
|
||||
baseColor: '#1BBC9B',
|
||||
line2Color: '#9EA3A6',
|
||||
borderLineColor: '#E6E6E6',
|
||||
loginButtonColor: '#3E9B42',
|
||||
titleColor: '#57A75A',
|
||||
grayTextColor: '#E9E9E9',
|
||||
shoppingGroupColor: '#F7F7F7',
|
||||
};
|
|
@ -0,0 +1,91 @@
|
|||
import React, {Component} from 'react';
|
||||
import {
|
||||
Platform,
|
||||
StyleSheet,
|
||||
Text,
|
||||
View,
|
||||
Modal,
|
||||
ActivityIndicator,
|
||||
} from 'react-native';
|
||||
import Spinner from 'react-native-loading-spinner-overlay';
|
||||
import {colors} from '../assets/styles/colors-theme';
|
||||
import LottieView from 'lottie-react-native';
|
||||
import {width, height} from '../services/screen';
|
||||
|
||||
export default class Loading extends Component {
|
||||
state = {
|
||||
spinner: false,
|
||||
};
|
||||
|
||||
render() {
|
||||
return (
|
||||
<Modal
|
||||
transparent={true}
|
||||
animationType={'none'}
|
||||
visible={this.props.loading}
|
||||
onRequestClose={() => {
|
||||
console.log('c lose modal');
|
||||
}}>
|
||||
<View style={styles.modalBackground}>
|
||||
<View style={styles.activityIndicatorWrapper}>
|
||||
{/* <ActivityIndicator animating={this.props.loading} /> */}
|
||||
<LottieView
|
||||
ref={animation => {
|
||||
this.animation = animation;
|
||||
}}
|
||||
colorFilters={[
|
||||
{
|
||||
keypath: 'Left',
|
||||
color: colors.mainColor,
|
||||
},
|
||||
{
|
||||
keypath: 'Center',
|
||||
color: colors.mainColor,
|
||||
},
|
||||
{
|
||||
keypath: 'Rigth',
|
||||
color: colors.mainColor,
|
||||
},
|
||||
]}
|
||||
style={{height: 150, width: 150}}
|
||||
source={require('../assets/lottie/loading')}
|
||||
autoPlay
|
||||
loop
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</Modal>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const styles = StyleSheet.flatten({
|
||||
wrapper: {
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
width: width,
|
||||
height: height,
|
||||
},
|
||||
loading: {
|
||||
position: 'absolute',
|
||||
top: height / 2 - 100,
|
||||
left: width / 2 - 70,
|
||||
width: 140,
|
||||
height: 140,
|
||||
},
|
||||
modalBackground: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
activityIndicatorWrapper: {
|
||||
height: 200,
|
||||
width: 200,
|
||||
borderRadius: 10,
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-around',
|
||||
},
|
||||
});
|