├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── example ├── .buckconfig ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .gitignore ├── .prettierrc.js ├── .watchmanconfig ├── App.js ├── __tests__ │ └── App-test.js ├── android │ ├── app │ │ ├── BUCK │ │ ├── build.gradle │ │ ├── build_defs.bzl │ │ ├── debug.keystore │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── MainActivity.java │ │ │ │ └── MainApplication.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app.json ├── babel.config.js ├── index.js ├── ios │ ├── Podfile │ ├── Podfile.lock │ ├── example-tvOS │ │ └── Info.plist │ ├── example-tvOSTests │ │ └── Info.plist │ ├── example.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── example-tvOS.xcscheme │ │ │ └── example.xcscheme │ ├── example.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── example │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj │ │ │ └── LaunchScreen.xib │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── DianPing │ │ │ │ ├── Contents.json │ │ │ │ ├── dropdown_anim__0001.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0001@2x.png │ │ │ │ ├── dropdown_anim__00010.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00010@2x.png │ │ │ │ ├── dropdown_anim__00011.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00011@2x.png │ │ │ │ ├── dropdown_anim__00012.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00012@2x.png │ │ │ │ ├── dropdown_anim__00013.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00013@2x.png │ │ │ │ ├── dropdown_anim__00014.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00014@2x.png │ │ │ │ ├── dropdown_anim__00015.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00015@2x.png │ │ │ │ ├── dropdown_anim__00016.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00016@2x.png │ │ │ │ ├── dropdown_anim__00017.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00017@2x.png │ │ │ │ ├── dropdown_anim__00018.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00018@2x.png │ │ │ │ ├── dropdown_anim__00019.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00019@2x.png │ │ │ │ ├── dropdown_anim__0002.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0002@2x.png │ │ │ │ ├── dropdown_anim__00020.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00020@2x.png │ │ │ │ ├── dropdown_anim__00021.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00021@2x.png │ │ │ │ ├── dropdown_anim__00022.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00022@2x.png │ │ │ │ ├── dropdown_anim__00023.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00023@2x.png │ │ │ │ ├── dropdown_anim__00024.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00024@2x.png │ │ │ │ ├── dropdown_anim__00025.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00025@2x.png │ │ │ │ ├── dropdown_anim__00026.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00026@2x.png │ │ │ │ ├── dropdown_anim__00027.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00027@2x.png │ │ │ │ ├── dropdown_anim__00028.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00028@2x.png │ │ │ │ ├── dropdown_anim__00029.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00029@2x.png │ │ │ │ ├── dropdown_anim__0003.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0003@2x.png │ │ │ │ ├── dropdown_anim__00030.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00030@2x.png │ │ │ │ ├── dropdown_anim__00031.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00031@2x.png │ │ │ │ ├── dropdown_anim__00032.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00032@2x.png │ │ │ │ ├── dropdown_anim__00033.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00033@2x.png │ │ │ │ ├── dropdown_anim__00034.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00034@2x.png │ │ │ │ ├── dropdown_anim__00035.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00035@2x.png │ │ │ │ ├── dropdown_anim__00036.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00036@2x.png │ │ │ │ ├── dropdown_anim__00037.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00037@2x.png │ │ │ │ ├── dropdown_anim__00038.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00038@2x.png │ │ │ │ ├── dropdown_anim__00039.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00039@2x.png │ │ │ │ ├── dropdown_anim__0004.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0004@2x.png │ │ │ │ ├── dropdown_anim__00040.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00040@2x.png │ │ │ │ ├── dropdown_anim__00041.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00041@2x.png │ │ │ │ ├── dropdown_anim__00042.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00042@2x.png │ │ │ │ ├── dropdown_anim__00043.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00043@2x.png │ │ │ │ ├── dropdown_anim__00044.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00044@2x.png │ │ │ │ ├── dropdown_anim__00045.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00045@2x.png │ │ │ │ ├── dropdown_anim__00046.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00046@2x.png │ │ │ │ ├── dropdown_anim__00047.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00047@2x.png │ │ │ │ ├── dropdown_anim__00048.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00048@2x.png │ │ │ │ ├── dropdown_anim__00049.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00049@2x.png │ │ │ │ ├── dropdown_anim__0005.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0005@2x.png │ │ │ │ ├── dropdown_anim__00050.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00050@2x.png │ │ │ │ ├── dropdown_anim__00051.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00051@2x.png │ │ │ │ ├── dropdown_anim__00052.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00052@2x.png │ │ │ │ ├── dropdown_anim__00053.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00053@2x.png │ │ │ │ ├── dropdown_anim__00054.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00054@2x.png │ │ │ │ ├── dropdown_anim__00055.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00055@2x.png │ │ │ │ ├── dropdown_anim__00056.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00056@2x.png │ │ │ │ ├── dropdown_anim__00057.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00057@2x.png │ │ │ │ ├── dropdown_anim__00058.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00058@2x.png │ │ │ │ ├── dropdown_anim__00059.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00059@2x.png │ │ │ │ ├── dropdown_anim__0006.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0006@2x.png │ │ │ │ ├── dropdown_anim__00060.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__00060@2x.png │ │ │ │ ├── dropdown_anim__0007.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0007@2x.png │ │ │ │ ├── dropdown_anim__0008.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0008@2x.png │ │ │ │ ├── dropdown_anim__0009.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_anim__0009@2x.png │ │ │ │ ├── dropdown_loading_01.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_loading_01@2x.png │ │ │ │ ├── dropdown_loading_02.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_loading_02@2x.png │ │ │ │ └── dropdown_loading_03.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── dropdown_loading_03@2x.png │ │ │ └── yuanquan.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── yuanquan@2x.png │ │ ├── Info.plist │ │ └── main.m │ └── exampleTests │ │ ├── Info.plist │ │ └── exampleTests.m ├── metro.config.js ├── package.json ├── shotscreen │ └── example.gif ├── src │ ├── images │ │ ├── loading.gif │ │ └── loading1.gif │ ├── router │ │ └── mainStackRouter.js │ └── screen │ │ ├── homeScreen.js │ │ ├── listDemoScreen.js │ │ ├── tipsScreen.js │ │ └── webViewScreen.js └── yarn.lock ├── index.d.ts ├── index.js ├── lib ├── Toast.js └── ToastContainer.js ├── node_modules ├── .bin │ └── loose-envify ├── js-tokens │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── index.js │ └── package.json ├── loose-envify │ ├── LICENSE │ ├── README.md │ ├── cli.js │ ├── custom.js │ ├── index.js │ ├── loose-envify.js │ ├── package.json │ └── replace.js ├── object-assign │ ├── index.js │ ├── license │ ├── package.json │ └── readme.md ├── prop-types │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── checkPropTypes.js │ ├── factory.js │ ├── factoryWithThrowingShims.js │ ├── factoryWithTypeCheckers.js │ ├── index.js │ ├── lib │ │ └── ReactPropTypesSecret.js │ ├── package.json │ ├── prop-types.js │ └── prop-types.min.js ├── react-native-root-siblings │ ├── .editorconfig │ ├── .gitattributes │ ├── LICENSE │ ├── README.md │ ├── index.js │ └── package.json └── static-container │ ├── LICENSE │ ├── StaticContainer.js │ └── package.json ├── package-lock.json ├── package.json └── src ├── error.png ├── example.gif ├── info.png ├── loading.gif ├── success.png └── warn.png /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | example/node_modules/ 3 | .idea 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | example/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 opu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /example/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /example/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native-community', 4 | }; 5 | -------------------------------------------------------------------------------- /example/.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore polyfills 9 | node_modules/react-native/Libraries/polyfills/.* 10 | 11 | ; These should not be required directly 12 | ; require from fbjs/lib instead: require('fbjs/lib/warning') 13 | node_modules/warning/.* 14 | 15 | ; Flow doesn't support platforms 16 | .*/Libraries/Utilities/LoadingView.js 17 | 18 | [untyped] 19 | .*/node_modules/@react-native-community/cli/.*/.* 20 | 21 | [include] 22 | 23 | [libs] 24 | node_modules/react-native/Libraries/react-native/react-native-interface.js 25 | node_modules/react-native/flow/ 26 | 27 | [options] 28 | emoji=true 29 | 30 | esproposal.optional_chaining=enable 31 | esproposal.nullish_coalescing=enable 32 | 33 | module.file_ext=.js 34 | module.file_ext=.json 35 | module.file_ext=.ios.js 36 | 37 | munge_underscores=true 38 | 39 | module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation' 40 | module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' 41 | 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\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' 42 | 43 | suppress_type=$FlowIssue 44 | suppress_type=$FlowFixMe 45 | suppress_type=$FlowFixMeProps 46 | suppress_type=$FlowFixMeState 47 | 48 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) 49 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ 50 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 51 | 52 | [lints] 53 | sketchy-null-number=warn 54 | sketchy-null-mixed=warn 55 | sketchy-number=warn 56 | untyped-type-import=warn 57 | nonstrict-import=warn 58 | deprecated-type=warn 59 | unsafe-getters-setters=warn 60 | inexact-spread=warn 61 | unnecessary-invariant=warn 62 | signature-verification-failure=warn 63 | deprecated-utility=error 64 | 65 | [strict] 66 | deprecated-type 67 | nonstrict-import 68 | sketchy-null 69 | unclear-type 70 | unsafe-getters-setters 71 | untyped-import 72 | untyped-type-import 73 | 74 | [version] 75 | ^0.105.0 76 | -------------------------------------------------------------------------------- /example/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # Android/IntelliJ 25 | # 26 | build/ 27 | .idea 28 | .gradle 29 | local.properties 30 | *.iml 31 | 32 | # node.js 33 | # 34 | node_modules/ 35 | npm-debug.log 36 | yarn-error.log 37 | 38 | # BUCK 39 | buck-out/ 40 | \.buckd/ 41 | *.keystore 42 | !debug.keystore 43 | 44 | # fastlane 45 | # 46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 47 | # screenshots whenever they are needed. 48 | # For more information about the recommended setup visit: 49 | # https://docs.fastlane.tools/best-practices/source-control/ 50 | 51 | */fastlane/report.xml 52 | */fastlane/Preview.html 53 | */fastlane/screenshots 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # CocoaPods 59 | /ios/Pods/ 60 | -------------------------------------------------------------------------------- /example/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: false, 3 | jsxBracketSameLine: true, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | }; 7 | -------------------------------------------------------------------------------- /example/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /example/App.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | * @flow 7 | */ 8 | 9 | import React, {Component} from 'react'; 10 | import { 11 | SafeAreaView, 12 | StyleSheet, 13 | ScrollView, 14 | View, 15 | Text, 16 | StatusBar, 17 | } from 'react-native'; 18 | 19 | import 'react-native-gesture-handler'; 20 | import AppStackNavigator from './src/router/mainStackRouter'; 21 | import {createAppContainer} from 'react-navigation'; 22 | export default createAppContainer(AppStackNavigator); 23 | 24 | // import { 25 | // Header, 26 | // LearnMoreLinks, 27 | // Colors, 28 | // DebugInstructions, 29 | // ReloadInstructions, 30 | // } from 'react-native/Libraries/NewAppScreen'; 31 | 32 | // const App: () => React$Node = () => { 33 | // return ( 34 | // <> 35 | // 36 | // 37 | // 40 | //
41 | // {global.HermesInternal == null ? null : ( 42 | // 43 | // Engine: Hermes 44 | // 45 | // )} 46 | // 47 | // 48 | // Step One 49 | // 50 | // Edit App.js to change this 51 | // screen and then come back to see your edits. 52 | // 53 | // 54 | // 55 | // See Your Changes 56 | // 57 | // 58 | // 59 | // 60 | // 61 | // Debug 62 | // 63 | // 64 | // 65 | // 66 | // 67 | // Learn More 68 | // 69 | // Read the docs to discover what to do next: 70 | // 71 | // 72 | // 73 | // 74 | // 75 | // 76 | // 77 | // ); 78 | // }; 79 | 80 | // const styles = StyleSheet.create({ 81 | // scrollView: { 82 | // backgroundColor: Colors.lighter, 83 | // }, 84 | // engine: { 85 | // position: 'absolute', 86 | // right: 0, 87 | // }, 88 | // body: { 89 | // backgroundColor: Colors.white, 90 | // }, 91 | // sectionContainer: { 92 | // marginTop: 32, 93 | // paddingHorizontal: 24, 94 | // }, 95 | // sectionTitle: { 96 | // fontSize: 24, 97 | // fontWeight: '600', 98 | // color: Colors.black, 99 | // }, 100 | // sectionDescription: { 101 | // marginTop: 8, 102 | // fontSize: 18, 103 | // fontWeight: '400', 104 | // color: Colors.dark, 105 | // }, 106 | // highlight: { 107 | // fontWeight: '700', 108 | // }, 109 | // footer: { 110 | // color: Colors.dark, 111 | // fontSize: 12, 112 | // fontWeight: '600', 113 | // padding: 4, 114 | // paddingRight: 12, 115 | // textAlign: 'right', 116 | // }, 117 | // }); 118 | 119 | // export default App; 120 | -------------------------------------------------------------------------------- /example/__tests__/App-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import 'react-native'; 6 | import React from 'react'; 7 | import App from '../App'; 8 | 9 | // Note: test renderer must be required after react-native. 10 | import renderer from 'react-test-renderer'; 11 | 12 | it('renders correctly', () => { 13 | renderer.create(); 14 | }); 15 | -------------------------------------------------------------------------------- /example/android/app/BUCK: -------------------------------------------------------------------------------- 1 | # To learn about Buck see [Docs](https://buckbuild.com/). 2 | # To run your application with Buck: 3 | # - install Buck 4 | # - `npm start` - to start the packager 5 | # - `cd android` 6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` 7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck 8 | # - `buck install -r android/app` - compile, install and run application 9 | # 10 | 11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") 12 | 13 | lib_deps = [] 14 | 15 | create_aar_targets(glob(["libs/*.aar"])) 16 | 17 | create_jar_targets(glob(["libs/*.jar"])) 18 | 19 | android_library( 20 | name = "all-libs", 21 | exported_deps = lib_deps, 22 | ) 23 | 24 | android_library( 25 | name = "app-code", 26 | srcs = glob([ 27 | "src/main/java/**/*.java", 28 | ]), 29 | deps = [ 30 | ":all-libs", 31 | ":build_config", 32 | ":res", 33 | ], 34 | ) 35 | 36 | android_build_config( 37 | name = "build_config", 38 | package = "com.example", 39 | ) 40 | 41 | android_resource( 42 | name = "res", 43 | package = "com.example", 44 | res = "src/main/res", 45 | ) 46 | 47 | android_binary( 48 | name = "app", 49 | keystore = "//android/keystores:debug", 50 | manifest = "src/main/AndroidManifest.xml", 51 | package_type = "debug", 52 | deps = [ 53 | ":app-code", 54 | ], 55 | ) 56 | -------------------------------------------------------------------------------- /example/android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /example/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/debug.keystore -------------------------------------------------------------------------------- /example/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /example/android/app/src/main/java/com/example/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import com.facebook.react.ReactActivity; 4 | 5 | public class MainActivity extends ReactActivity { 6 | 7 | /** 8 | * Returns the name of the main component registered from JavaScript. This is used to schedule 9 | * rendering of the component. 10 | */ 11 | @Override 12 | protected String getMainComponentName() { 13 | return "example"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /example/android/app/src/main/java/com/example/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | import com.facebook.react.PackageList; 6 | import com.facebook.react.ReactApplication; 7 | import com.reactnativecommunity.webview.RNCWebViewPackage; 8 | import com.facebook.react.ReactNativeHost; 9 | import com.facebook.react.ReactPackage; 10 | import com.facebook.soloader.SoLoader; 11 | import java.lang.reflect.InvocationTargetException; 12 | import java.util.List; 13 | 14 | public class MainApplication extends Application implements ReactApplication { 15 | 16 | private final ReactNativeHost mReactNativeHost = 17 | new ReactNativeHost(this) { 18 | @Override 19 | public boolean getUseDeveloperSupport() { 20 | return BuildConfig.DEBUG; 21 | } 22 | 23 | @Override 24 | protected List getPackages() { 25 | @SuppressWarnings("UnnecessaryLocalVariable") 26 | List packages = new PackageList(this).getPackages(); 27 | // Packages that cannot be autolinked yet can be added manually here, for example: 28 | // packages.add(new MyReactNativePackage()); 29 | return packages; 30 | } 31 | 32 | @Override 33 | protected String getJSMainModuleName() { 34 | return "index"; 35 | } 36 | }; 37 | 38 | @Override 39 | public ReactNativeHost getReactNativeHost() { 40 | return mReactNativeHost; 41 | } 42 | 43 | @Override 44 | public void onCreate() { 45 | super.onCreate(); 46 | SoLoader.init(this, /* native exopackage */ false); 47 | initializeFlipper(this); // Remove this line if you don't want Flipper enabled 48 | } 49 | 50 | /** 51 | * Loads Flipper in React Native templates. 52 | * 53 | * @param context 54 | */ 55 | private static void initializeFlipper(Context context) { 56 | if (BuildConfig.DEBUG) { 57 | try { 58 | /* 59 | We use reflection here to pick up the class that initializes Flipper, 60 | since Flipper library is not available in release mode 61 | */ 62 | Class aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper"); 63 | aClass.getMethod("initializeFlipper", Context.class).invoke(null, context); 64 | } catch (ClassNotFoundException e) { 65 | e.printStackTrace(); 66 | } catch (NoSuchMethodException e) { 67 | e.printStackTrace(); 68 | } catch (IllegalAccessException e) { 69 | e.printStackTrace(); 70 | } catch (InvocationTargetException e) { 71 | e.printStackTrace(); 72 | } 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | example 3 | 4 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /example/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = "28.0.3" 6 | minSdkVersion = 16 7 | compileSdkVersion = 28 8 | targetSdkVersion = 28 9 | } 10 | repositories { 11 | google() 12 | jcenter() 13 | } 14 | dependencies { 15 | classpath("com.android.tools.build:gradle:3.4.2") 16 | 17 | // NOTE: Do not place your application dependencies here; they belong 18 | // in the individual module build.gradle files 19 | } 20 | } 21 | 22 | allprojects { 23 | repositories { 24 | mavenLocal() 25 | maven { 26 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 27 | url("$rootDir/../node_modules/react-native/android") 28 | } 29 | maven { 30 | // Android JSC is installed from npm 31 | url("$rootDir/../node_modules/jsc-android/dist") 32 | } 33 | 34 | google() 35 | jcenter() 36 | maven { url 'https://jitpack.io' } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useAndroidX=true 21 | android.enableJetifier=true 22 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /example/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | # Determine the Java command to use to start the JVM. 86 | if [ -n "$JAVA_HOME" ] ; then 87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 88 | # IBM's JDK on AIX uses strange locations for the executables 89 | JAVACMD="$JAVA_HOME/jre/sh/java" 90 | else 91 | JAVACMD="$JAVA_HOME/bin/java" 92 | fi 93 | if [ ! -x "$JAVACMD" ] ; then 94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 95 | 96 | Please set the JAVA_HOME variable in your environment to match the 97 | location of your Java installation." 98 | fi 99 | else 100 | JAVACMD="java" 101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 102 | 103 | Please set the JAVA_HOME variable in your environment to match the 104 | location of your Java installation." 105 | fi 106 | 107 | # Increase the maximum file descriptors if we can. 108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 109 | MAX_FD_LIMIT=`ulimit -H -n` 110 | if [ $? -eq 0 ] ; then 111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 112 | MAX_FD="$MAX_FD_LIMIT" 113 | fi 114 | ulimit -n $MAX_FD 115 | if [ $? -ne 0 ] ; then 116 | warn "Could not set maximum file descriptor limit: $MAX_FD" 117 | fi 118 | else 119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 120 | fi 121 | fi 122 | 123 | # For Darwin, add options to specify how the application appears in the dock 124 | if $darwin; then 125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 126 | fi 127 | 128 | # For Cygwin, switch paths to Windows format before running java 129 | if $cygwin ; then 130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 132 | JAVACMD=`cygpath --unix "$JAVACMD"` 133 | 134 | # We build the pattern for arguments to be converted via cygpath 135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 136 | SEP="" 137 | for dir in $ROOTDIRSRAW ; do 138 | ROOTDIRS="$ROOTDIRS$SEP$dir" 139 | SEP="|" 140 | done 141 | OURCYGPATTERN="(^($ROOTDIRS))" 142 | # Add a user-defined pattern to the cygpath arguments 143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 145 | fi 146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 147 | i=0 148 | for arg in "$@" ; do 149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 151 | 152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 154 | else 155 | eval `echo args$i`="\"$arg\"" 156 | fi 157 | i=$((i+1)) 158 | done 159 | case $i in 160 | (0) set -- ;; 161 | (1) set -- "$args0" ;; 162 | (2) set -- "$args0" "$args1" ;; 163 | (3) set -- "$args0" "$args1" "$args2" ;; 164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 170 | esac 171 | fi 172 | 173 | # Escape application args 174 | save () { 175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 176 | echo " " 177 | } 178 | APP_ARGS=$(save "$@") 179 | 180 | # Collect all arguments for the java command, following the shell quoting and substitution rules 181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 182 | 183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 185 | cd "$(dirname "$0")" 186 | fi 187 | 188 | exec "$JAVACMD" "$@" 189 | -------------------------------------------------------------------------------- /example/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem http://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 34 | 35 | @rem Find java.exe 36 | if defined JAVA_HOME goto findJavaFromJavaHome 37 | 38 | set JAVA_EXE=java.exe 39 | %JAVA_EXE% -version >NUL 2>&1 40 | if "%ERRORLEVEL%" == "0" goto init 41 | 42 | echo. 43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 44 | echo. 45 | echo Please set the JAVA_HOME variable in your environment to match the 46 | echo location of your Java installation. 47 | 48 | goto fail 49 | 50 | :findJavaFromJavaHome 51 | set JAVA_HOME=%JAVA_HOME:"=% 52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 53 | 54 | if exist "%JAVA_EXE%" goto init 55 | 56 | echo. 57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 58 | echo. 59 | echo Please set the JAVA_HOME variable in your environment to match the 60 | echo location of your Java installation. 61 | 62 | goto fail 63 | 64 | :init 65 | @rem Get command-line arguments, handling Windows variants 66 | 67 | if not "%OS%" == "Windows_NT" goto win9xME_args 68 | 69 | :win9xME_args 70 | @rem Slurp the command line arguments. 71 | set CMD_LINE_ARGS= 72 | set _SKIP=2 73 | 74 | :win9xME_args_slurp 75 | if "x%~1" == "x" goto execute 76 | 77 | set CMD_LINE_ARGS=%* 78 | 79 | :execute 80 | @rem Setup the command line 81 | 82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 83 | 84 | @rem Execute Gradle 85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 86 | 87 | :end 88 | @rem End local scope for the variables with windows NT shell 89 | if "%ERRORLEVEL%"=="0" goto mainEnd 90 | 91 | :fail 92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 93 | rem the _cmd.exe /c_ return code! 94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 95 | exit /b 1 96 | 97 | :mainEnd 98 | if "%OS%"=="Windows_NT" endlocal 99 | 100 | :omega 101 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'example' 2 | include ':react-native-webview' 3 | project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android') 4 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 5 | include ':app' 6 | -------------------------------------------------------------------------------- /example/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "displayName": "example" 4 | } -------------------------------------------------------------------------------- /example/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:metro-react-native-babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /example/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import {AppRegistry} from 'react-native'; 6 | import App from './App'; 7 | import {name as appName} from './app.json'; 8 | 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /example/ios/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '9.0' 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 3 | 4 | target 'example' do 5 | # Pods for example 6 | pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" 7 | pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" 8 | pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" 9 | pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety" 10 | pod 'React', :path => '../node_modules/react-native/' 11 | pod 'React-Core', :path => '../node_modules/react-native/' 12 | pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules' 13 | pod 'React-Core/DevSupport', :path => '../node_modules/react-native/' 14 | pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' 15 | pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' 16 | pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' 17 | pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' 18 | pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' 19 | pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' 20 | pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' 21 | pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' 22 | pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' 23 | pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/' 24 | 25 | pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' 26 | pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' 27 | pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' 28 | pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' 29 | pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon" 30 | pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" 31 | pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga' 32 | 33 | pod 'boost-for-react-native', :git => 'https://gitee.com/damon-s/boost-for-react-native.git' 34 | pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' 35 | pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' 36 | pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' 37 | 38 | pod 'MJRefresh', '~> 3.4.0' 39 | 40 | pod 'react-native-webview', :path => '../node_modules/react-native-webview' 41 | 42 | target 'exampleTests' do 43 | inherit! :search_paths 44 | # Pods for testing 45 | end 46 | 47 | use_native_modules! 48 | end 49 | 50 | target 'example-tvOS' do 51 | # Pods for example-tvOS 52 | 53 | target 'example-tvOSTests' do 54 | inherit! :search_paths 55 | # Pods for testing 56 | end 57 | 58 | end 59 | -------------------------------------------------------------------------------- /example/ios/example-tvOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSAppTransportSecurity 26 | 27 | NSExceptionDomains 28 | 29 | localhost 30 | 31 | NSExceptionAllowsInsecureHTTPLoads 32 | 33 | 34 | 35 | 36 | NSLocationWhenInUseUsageDescription 37 | 38 | UILaunchStoryboardName 39 | LaunchScreen 40 | UIRequiredDeviceCapabilities 41 | 42 | armv7 43 | 44 | UISupportedInterfaceOrientations 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIViewControllerBasedStatusBarAppearance 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /example/ios/example-tvOSTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 61 | 67 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 92 | 94 | 100 | 101 | 102 | 103 | 104 | 105 | 111 | 113 | 119 | 120 | 121 | 122 | 124 | 125 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 65 | 66 | 67 | 68 | 70 | 76 | 77 | 78 | 79 | 80 | 90 | 92 | 98 | 99 | 100 | 101 | 107 | 109 | 115 | 116 | 117 | 118 | 120 | 121 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /example/ios/example.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/example/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (nonatomic, strong) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /example/ios/example/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "AppDelegate.h" 9 | 10 | #import 11 | #import 12 | #import 13 | 14 | @implementation AppDelegate 15 | 16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 17 | { 18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; 19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge 20 | moduleName:@"example" 21 | initialProperties:nil]; 22 | 23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; 24 | 25 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 26 | UIViewController *rootViewController = [UIViewController new]; 27 | rootViewController.view = rootView; 28 | self.window.rootViewController = rootViewController; 29 | [self.window makeKeyAndVisible]; 30 | return YES; 31 | } 32 | 33 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 34 | { 35 | #if DEBUG 36 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; 37 | #else 38 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 39 | #endif 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /example/ios/example/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 22 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "scale" : "1x", 46 | "size" : "1024x1024" 47 | } 48 | ], 49 | "info" : { 50 | "author" : "xcode", 51 | "version" : 1 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0001.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0001@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0001.imageset/dropdown_anim__0001@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0001.imageset/dropdown_anim__0001@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00010.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00010@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00010.imageset/dropdown_anim__00010@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00010.imageset/dropdown_anim__00010@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00011.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00011@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00011.imageset/dropdown_anim__00011@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00011.imageset/dropdown_anim__00011@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00012.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00012@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00012.imageset/dropdown_anim__00012@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00012.imageset/dropdown_anim__00012@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00013.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00013@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00013.imageset/dropdown_anim__00013@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00013.imageset/dropdown_anim__00013@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00014.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00014@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00014.imageset/dropdown_anim__00014@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00014.imageset/dropdown_anim__00014@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00015.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00015@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00015.imageset/dropdown_anim__00015@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00015.imageset/dropdown_anim__00015@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00016.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00016@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00016.imageset/dropdown_anim__00016@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00016.imageset/dropdown_anim__00016@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00017.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00017@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00017.imageset/dropdown_anim__00017@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00017.imageset/dropdown_anim__00017@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00018.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00018@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00018.imageset/dropdown_anim__00018@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00018.imageset/dropdown_anim__00018@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00019.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00019@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00019.imageset/dropdown_anim__00019@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00019.imageset/dropdown_anim__00019@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0002.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0002@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0002.imageset/dropdown_anim__0002@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0002.imageset/dropdown_anim__0002@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00020.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00020@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00020.imageset/dropdown_anim__00020@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00020.imageset/dropdown_anim__00020@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00021.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00021@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00021.imageset/dropdown_anim__00021@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00021.imageset/dropdown_anim__00021@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00022.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00022@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00022.imageset/dropdown_anim__00022@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00022.imageset/dropdown_anim__00022@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00023.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00023@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00023.imageset/dropdown_anim__00023@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00023.imageset/dropdown_anim__00023@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00024.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00024@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00024.imageset/dropdown_anim__00024@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00024.imageset/dropdown_anim__00024@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00025.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00025@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00025.imageset/dropdown_anim__00025@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00025.imageset/dropdown_anim__00025@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00026.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00026@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00026.imageset/dropdown_anim__00026@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00026.imageset/dropdown_anim__00026@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00027.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00027@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00027.imageset/dropdown_anim__00027@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00027.imageset/dropdown_anim__00027@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00028.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00028@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00028.imageset/dropdown_anim__00028@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00028.imageset/dropdown_anim__00028@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00029.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00029@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00029.imageset/dropdown_anim__00029@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00029.imageset/dropdown_anim__00029@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0003.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0003@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0003.imageset/dropdown_anim__0003@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0003.imageset/dropdown_anim__0003@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00030.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00030@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00030.imageset/dropdown_anim__00030@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00030.imageset/dropdown_anim__00030@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00031.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00031@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00031.imageset/dropdown_anim__00031@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00031.imageset/dropdown_anim__00031@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00032.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00032@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00032.imageset/dropdown_anim__00032@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00032.imageset/dropdown_anim__00032@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00033.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00033@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00033.imageset/dropdown_anim__00033@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00033.imageset/dropdown_anim__00033@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00034.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00034@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00034.imageset/dropdown_anim__00034@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00034.imageset/dropdown_anim__00034@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00035.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00035@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00035.imageset/dropdown_anim__00035@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00035.imageset/dropdown_anim__00035@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00036.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00036@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00036.imageset/dropdown_anim__00036@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00036.imageset/dropdown_anim__00036@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00037.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00037@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00037.imageset/dropdown_anim__00037@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00037.imageset/dropdown_anim__00037@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00038.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00038@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00038.imageset/dropdown_anim__00038@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00038.imageset/dropdown_anim__00038@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00039.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00039@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00039.imageset/dropdown_anim__00039@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00039.imageset/dropdown_anim__00039@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0004.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0004@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0004.imageset/dropdown_anim__0004@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0004.imageset/dropdown_anim__0004@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00040.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00040@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00040.imageset/dropdown_anim__00040@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00040.imageset/dropdown_anim__00040@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00041.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00041@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00041.imageset/dropdown_anim__00041@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00041.imageset/dropdown_anim__00041@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00042.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00042@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00042.imageset/dropdown_anim__00042@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00042.imageset/dropdown_anim__00042@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00043.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00043@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00043.imageset/dropdown_anim__00043@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00043.imageset/dropdown_anim__00043@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00044.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00044@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00044.imageset/dropdown_anim__00044@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00044.imageset/dropdown_anim__00044@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00045.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00045@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00045.imageset/dropdown_anim__00045@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00045.imageset/dropdown_anim__00045@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00046.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00046@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00046.imageset/dropdown_anim__00046@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00046.imageset/dropdown_anim__00046@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00047.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00047@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00047.imageset/dropdown_anim__00047@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00047.imageset/dropdown_anim__00047@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00048.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00048@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00048.imageset/dropdown_anim__00048@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00048.imageset/dropdown_anim__00048@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00049.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00049@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00049.imageset/dropdown_anim__00049@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00049.imageset/dropdown_anim__00049@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0005.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0005@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0005.imageset/dropdown_anim__0005@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0005.imageset/dropdown_anim__0005@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00050.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00050@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00050.imageset/dropdown_anim__00050@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00050.imageset/dropdown_anim__00050@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00051.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00051@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00051.imageset/dropdown_anim__00051@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00051.imageset/dropdown_anim__00051@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00052.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00052@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00052.imageset/dropdown_anim__00052@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00052.imageset/dropdown_anim__00052@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00053.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00053@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00053.imageset/dropdown_anim__00053@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00053.imageset/dropdown_anim__00053@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00054.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00054@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00054.imageset/dropdown_anim__00054@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00054.imageset/dropdown_anim__00054@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00055.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00055@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00055.imageset/dropdown_anim__00055@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00055.imageset/dropdown_anim__00055@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00056.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00056@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00056.imageset/dropdown_anim__00056@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00056.imageset/dropdown_anim__00056@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00057.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00057@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00057.imageset/dropdown_anim__00057@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00057.imageset/dropdown_anim__00057@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00058.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00058@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00058.imageset/dropdown_anim__00058@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00058.imageset/dropdown_anim__00058@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00059.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00059@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00059.imageset/dropdown_anim__00059@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00059.imageset/dropdown_anim__00059@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0006.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0006@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0006.imageset/dropdown_anim__0006@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0006.imageset/dropdown_anim__0006@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00060.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__00060@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__00060.imageset/dropdown_anim__00060@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__00060.imageset/dropdown_anim__00060@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0007.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0007@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0007.imageset/dropdown_anim__0007@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0007.imageset/dropdown_anim__0007@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0008.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0008@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0008.imageset/dropdown_anim__0008@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0008.imageset/dropdown_anim__0008@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0009.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_anim__0009@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_anim__0009.imageset/dropdown_anim__0009@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_anim__0009.imageset/dropdown_anim__0009@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_loading_01.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_loading_01@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_loading_01.imageset/dropdown_loading_01@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_loading_01.imageset/dropdown_loading_01@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_loading_02.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_loading_02@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_loading_02.imageset/dropdown_loading_02@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_loading_02.imageset/dropdown_loading_02@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_loading_03.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "dropdown_loading_03@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/DianPing/dropdown_loading_03.imageset/dropdown_loading_03@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/DianPing/dropdown_loading_03.imageset/dropdown_loading_03@2x.png -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/yuanquan.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "yuanquan@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /example/ios/example/Images.xcassets/yuanquan.imageset/yuanquan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/ios/example/Images.xcassets/yuanquan.imageset/yuanquan@2x.png -------------------------------------------------------------------------------- /example/ios/example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | example 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | NSExceptionDomains 32 | 33 | localhost 34 | 35 | NSExceptionAllowsInsecureHTTPLoads 36 | 37 | 38 | 39 | 40 | NSLocationWhenInUseUsageDescription 41 | 42 | UILaunchStoryboardName 43 | LaunchScreen 44 | UIRequiredDeviceCapabilities 45 | 46 | armv7 47 | 48 | UISupportedInterfaceOrientations 49 | 50 | UIInterfaceOrientationPortrait 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | UIViewControllerBasedStatusBarAppearance 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /example/ios/example/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /example/ios/exampleTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /example/ios/exampleTests/exampleTests.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | #import 10 | 11 | #import 12 | #import 13 | 14 | #define TIMEOUT_SECONDS 600 15 | #define TEXT_TO_LOOK_FOR @"Welcome to React" 16 | 17 | @interface exampleTests : XCTestCase 18 | 19 | @end 20 | 21 | @implementation exampleTests 22 | 23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 24 | { 25 | if (test(view)) { 26 | return YES; 27 | } 28 | for (UIView *subview in [view subviews]) { 29 | if ([self findSubviewInView:subview matching:test]) { 30 | return YES; 31 | } 32 | } 33 | return NO; 34 | } 35 | 36 | - (void)testRendersWelcomeScreen 37 | { 38 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 39 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 40 | BOOL foundElement = NO; 41 | 42 | __block NSString *redboxError = nil; 43 | #ifdef DEBUG 44 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 45 | if (level >= RCTLogLevelError) { 46 | redboxError = message; 47 | } 48 | }); 49 | #endif 50 | 51 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 52 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 53 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 54 | 55 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 56 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 57 | return YES; 58 | } 59 | return NO; 60 | }]; 61 | } 62 | 63 | #ifdef DEBUG 64 | RCTSetLogFunction(RCTDefaultLogFunction); 65 | #endif 66 | 67 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 68 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 69 | } 70 | 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /example/metro.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Metro configuration for React Native 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | */ 7 | 8 | module.exports = { 9 | transformer: { 10 | getTransformOptions: async () => ({ 11 | transform: { 12 | experimentalImportSupport: false, 13 | inlineRequires: false, 14 | }, 15 | }), 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "android": "react-native run-android", 7 | "ios": "react-native run-ios", 8 | "start": "react-native start", 9 | "test": "jest", 10 | "lint": "eslint ." 11 | }, 12 | "dependencies": { 13 | "@react-native-community/masked-view": "^0.1.10", 14 | "react": "16.9.0", 15 | "react-native": "0.61.4", 16 | "react-native-gesture-handler": "^1.6.1", 17 | "react-native-mjrefresh-ios": "^0.5.0", 18 | "react-native-reanimated": "^1.9.0", 19 | "react-native-root-tips": "^1.1.2", 20 | "react-native-safe-area-context": "^2.0.3", 21 | "react-native-screens": "^2.8.0", 22 | "react-native-webview": "^10.1.0", 23 | "react-navigation": "^4.3.9", 24 | "react-navigation-stack": "^2.5.1" 25 | }, 26 | "devDependencies": { 27 | "@babel/core": "^7.10.1", 28 | "@babel/runtime": "^7.10.1", 29 | "@react-native-community/eslint-config": "^1.1.0", 30 | "babel-jest": "^26.0.1", 31 | "eslint": "^7.1.0", 32 | "jest": "^26.0.1", 33 | "metro-react-native-babel-preset": "^0.59.0", 34 | "react-test-renderer": "16.9.0" 35 | }, 36 | "jest": { 37 | "preset": "react-native" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /example/shotscreen/example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/shotscreen/example.gif -------------------------------------------------------------------------------- /example/src/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/src/images/loading.gif -------------------------------------------------------------------------------- /example/src/images/loading1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/example/src/images/loading1.gif -------------------------------------------------------------------------------- /example/src/router/mainStackRouter.js: -------------------------------------------------------------------------------- 1 | import {createStackNavigator} from 'react-navigation-stack'; 2 | 3 | import HomeScreen from '../screen/homeScreen'; 4 | import ListDemoScreen from '../screen/listDemoScreen'; 5 | import WebViewScreen from '../screen/webViewScreen'; 6 | import TipsScreen from '../screen/tipsScreen'; 7 | 8 | export default createStackNavigator({ 9 | Tips: { 10 | screen: TipsScreen, 11 | navigationOptions: { 12 | title: 'Tips', 13 | }, 14 | }, 15 | Home: { 16 | screen: HomeScreen, 17 | navigationOptions: { 18 | title: 'Refresh', 19 | // headerStyle: { 20 | // backgroundColor: '#10f9fa' 21 | // } 22 | }, 23 | }, 24 | ListDemo: { 25 | screen: ListDemoScreen, 26 | }, 27 | WebView: { 28 | screen: WebViewScreen, 29 | }, 30 | }); 31 | -------------------------------------------------------------------------------- /example/src/screen/listDemoScreen.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable react-native/no-inline-styles */ 2 | /** 3 | * listDemoScreen 4 | * 5 | * opu 6 | * 19年10月9日 7 | */ 8 | import React, {Component} from 'react'; 9 | import {FlatList, Text, StyleSheet, View} from 'react-native'; 10 | 11 | export default class ListViewDemoContianer extends Component { 12 | static navigationOptions = ({navigation}) => { 13 | return { 14 | title: navigation.getParam('title', '效果'), 15 | }; 16 | }; 17 | // 构造函数 18 | constructor(props) { 19 | super(props); 20 | this.state = { 21 | enableRefresh: true, 22 | refreshing: false, 23 | 24 | enableLoadMore: false, 25 | loadingMore: false, 26 | isLoadAll: false, 27 | list: [], 28 | }; 29 | } 30 | componentDidMount() { 31 | // 加载数据 32 | this.loadDataList(); 33 | } 34 | loadDataList = () => { 35 | console.log('调用了请求方法'); 36 | this.setState({ 37 | refreshing: true, 38 | }); 39 | // 网络请求 40 | setTimeout(() => { 41 | let count = Math.floor(Math.random() * 10) + 4; 42 | let arr = []; 43 | for (let i = 0; i < count; i++) { 44 | arr.push(`随机数据${Math.floor(Math.random() * 10000)}`); 45 | } 46 | this.setState({ 47 | refreshing: false, 48 | list: arr, 49 | enableLoadMore: true, 50 | isLoadAll: arr.length > 18, 51 | }); 52 | console.log('刷新结束:'); 53 | }, 1000); 54 | }; 55 | loadMoreData = () => { 56 | this.setState({ 57 | loadingMore: true, 58 | }); 59 | // 网络请求 60 | setTimeout(() => { 61 | let count = Math.floor(Math.random() * 10) + 5; 62 | let arr = []; 63 | for (let i = 0; i < count; i++) { 64 | arr.push(`随机数据${Math.floor(Math.random() * 10000)}`); 65 | } 66 | let newlist = this.state.list.concat(arr); 67 | this.setState({ 68 | loadingMore: false, 69 | list: newlist, 70 | isLoadAll: newlist.length > 20, 71 | }); 72 | console.log('加载更多结束:'); 73 | }, 600); 74 | }; 75 | // 渲染组件 76 | render() { 77 | return ( 78 | '' + index + item} 82 | renderItem={({item, index}) => { 83 | return ( 84 | 92 | {item} 93 | 94 | ); 95 | }} 96 | enableMJRefresh={true} 97 | mjRefreshing={this.state.refreshing} 98 | onMJRefresh={this.loadDataList} 99 | mjHeaderStyle={this.props.navigation.getParam('headerStyles')} 100 | enableMJLoadMore={this.state.enableLoadMore} 101 | mjLoadingMore={this.state.loadingMore} 102 | mjLoadAll={this.state.isLoadAll} 103 | onMJLoadMore={this.loadMoreData} 104 | mjFooterStyle={this.props.navigation.getParam('footerStyles')} 105 | /> 106 | ); 107 | } 108 | } 109 | 110 | const styles = StyleSheet.create({ 111 | listview: { 112 | flex: 1, 113 | backgroundColor: '#f5f9fa', 114 | }, 115 | }); 116 | -------------------------------------------------------------------------------- /example/src/screen/tipsScreen.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable react-native/no-inline-styles */ 2 | /** 3 | * Sample React Native App 4 | * https://github.com/facebook/react-native 5 | * @flow 6 | */ 7 | 8 | import React, {Component} from 'react'; 9 | import {AppRegistry, StyleSheet, ScrollView, Text, View} from 'react-native'; 10 | 11 | import Tips from 'react-native-root-tips'; 12 | 13 | export default class RootTipsDemo extends Component { 14 | constructor(props) { 15 | super(props); 16 | this.state = {}; 17 | //you can set a global default options you like 18 | Tips.setDefaultOptions({ 19 | backgroundColor: 'black', 20 | opacity: 0.95, 21 | textColor: 'white', 22 | 23 | //setting image you like 24 | // imageLoading: require('./src/loading.gif'), 25 | // imageLoading: require('xxxxxxxxxx'), 26 | // imageSuccess: require('xxxxxxxxxx'), 27 | // imageFail: require('xxxxxxxxxx'), 28 | // imageInfo: require('xxxxxxxxxx'), 29 | // imageWarn: require('xxxxxxxxxx'), 30 | }); 31 | } 32 | 33 | _convenienceUseage() { 34 | // show a loading tips 35 | // you need call Tips.hide() to make tips disappear 36 | Tips.showLoading('loading...'); 37 | 38 | // show a successful tips 39 | // Tips.showSuccess('wow! success'); 40 | 41 | // show a failed tips 42 | // Tips.showFail('em...failed'); 43 | 44 | // show a Info tips 45 | // Tips.showInfo('info tips'); 46 | 47 | // show a warning tips 48 | // Tips.showWarn('warning'); 49 | 50 | // ** you can call hide() to hide showing tips ** 51 | // Tips.hide(); 52 | } 53 | 54 | _sampleSimple() { 55 | Tips.show('hello world!'); 56 | } 57 | _sampleDefaultLoading() { 58 | Tips.show('loading...', {showLoading: true}); 59 | } 60 | _sampleDefaultSuccess() { 61 | Tips.show('loading success', {showSuccess: true}); 62 | } 63 | _sampleDefaultFail() { 64 | Tips.show('loading fail', {showFail: true}); 65 | } 66 | 67 | _sampleCustomImage() { 68 | // you can use local Image and net image 69 | // Tips.show('Custom Images', { backgroundColor: 'white',textColor:'black',opacity:0.9, image:{uri:'https://github.com/openUmbrella/react-native-root-tips/raw/master/example/src/loading1.gif'}}); 70 | 71 | // local Image 72 | Tips.show('Custom Images', { 73 | backgroundColor: 'white', 74 | textColor: 'black', 75 | opacity: 0.9, 76 | image: require('../images/loading1.gif'), 77 | }); 78 | } 79 | _sampleOnlyImage() { 80 | Tips.show('tips will not show', {showText: false, showLoading: true}); 81 | } 82 | _sampleMask() { 83 | //when showing, you can't touch anything 84 | Tips.show('masking...', {mask: true, showLoading: true, maskColor: 'gray'}); 85 | } 86 | 87 | render() { 88 | return ( 89 | 90 | 91 | 92 | Simple Tips 93 | 94 | 95 | Default Loading 96 | 97 | 98 | Default Success 99 | 100 | 101 | Default Fail 102 | 103 | 104 | Custom Image 105 | 106 | 107 | Only Image 108 | 109 | 110 | Showing with Mask 111 | 112 | { 115 | this.props.navigation.push('Home'); 116 | }}> 117 | refresh 118 | 119 | 120 | 121 | ); 122 | } 123 | } 124 | 125 | const styles = StyleSheet.create({ 126 | container: { 127 | flex: 1, 128 | justifyContent: 'center', 129 | alignItems: 'center', 130 | // backgroundColor: 'blue', 131 | marginTop: 150, 132 | }, 133 | welcome: { 134 | fontSize: 20, 135 | padding: 5, 136 | marginTop: 10, 137 | textAlign: 'center', 138 | backgroundColor: '#E6E6FA', 139 | }, 140 | }); 141 | 142 | AppRegistry.registerComponent('RootTipsDemo', () => RootTipsDemo); 143 | -------------------------------------------------------------------------------- /example/src/screen/webViewScreen.js: -------------------------------------------------------------------------------- 1 | /** 2 | * WebViewScreen 3 | * 4 | * opu 5 | * 19年10月9日 6 | */ 7 | import React, {Component} from 'react'; 8 | import {WebView, StyleSheet, View} from 'react-native'; 9 | 10 | import WKWebView from 'react-native-webview'; 11 | 12 | export default class WebViewDemoContainer extends Component { 13 | static navigationOptions = ({navigation}) => { 14 | return { 15 | title: navigation.getParam('title', '效果'), 16 | }; 17 | }; 18 | // 构造函数 19 | constructor(props) { 20 | super(props); 21 | this.state = { 22 | enableRefresh: true, 23 | refreshing: false, 24 | }; 25 | this.webview = React.createRef(); 26 | } 27 | componentDidMount() {} 28 | loadData = (data) => { 29 | this.setState({ 30 | refreshing: true, 31 | }); 32 | this.webview.reload(); 33 | // 做其他额外的操作... 34 | }; 35 | onError = () => { 36 | this.setState({ 37 | refreshing: false, 38 | }); 39 | }; 40 | onLoad = () => { 41 | console.log('网页开始加载中'); 42 | }; 43 | onLoadEnd = () => { 44 | this.setState({ 45 | refreshing: false, 46 | }); 47 | console.log('网页加载完毕'); 48 | }; 49 | // 渲染组件 50 | render() { 51 | let webType = this.props.navigation.getParam('webType'); 52 | // let {refreshing} = this.state; 53 | return ( 54 | 55 | {webType === 'UIWebView' ? ( 56 | // RN提供的WebView 57 | 78 | ) : ( 79 | // react-native-webview提供的WKWebView 80 | 96 | )} 97 | 98 | ); 99 | } 100 | } 101 | // 样式 102 | const styles = StyleSheet.create({ 103 | container: { 104 | flex: 1, 105 | backgroundColor: '#f5f9fa', 106 | }, 107 | }); 108 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * typescript definition 3 | * @author wallel 4 | */ 5 | declare module "react-native-root-tips" { 6 | import * as React from 'react'; 7 | import * as ReactNative from "react-native"; 8 | import {TextStyle, StyleProp, ViewStyle, ImageStyle} from "react-native"; 9 | 10 | export interface ToastOptions { 11 | containerStyle?: StyleProp 12 | duration?: number 13 | visible?: boolean, 14 | position?: number, 15 | animation?: boolean, 16 | shadow?: boolean, 17 | backgroundColor?: string, 18 | opacity?: number, 19 | shadowColor?: string, 20 | textColor?: string, 21 | textStyle?: StyleProp, 22 | delay?: number, 23 | // keyboardAvoiding?: boolean, 已经写死是监听keyboardDidChangeFrame 24 | hideOnPress?: boolean, 25 | onHide?: Function, 26 | onHidden?: Function, 27 | onShow?: Function, 28 | onShown?: Function, 29 | // onPress?: Function 30 | showLoading?: boolean, 31 | showSuccess?: boolean, 32 | showFail?: boolean, 33 | image?: any, 34 | imageLoading?: any, 35 | imageSuccess?: any, 36 | imageFail?: any, 37 | imageWarn?: any, 38 | imageInfo?: any, 39 | imageStyle?: StyleProp, 40 | mask?: boolean, 41 | maskColor?: string, 42 | maskOpacity?: number, 43 | showText?: boolean, 44 | textFont?: number, 45 | } 46 | 47 | export interface ToastProps extends ToastOptions, ReactNative.ViewProperties { 48 | } 49 | 50 | export interface Durations { 51 | LONG: number, 52 | SHORT: number 53 | } 54 | 55 | export interface Positions { 56 | TOP: number, 57 | BOTTOM: number, 58 | CENTER: number, 59 | } 60 | 61 | export default class Toast extends React.Component { 62 | static show: (message: string, options?: ToastOptions) => any; 63 | static hide: (toast: any) => void; 64 | static durations: Durations; 65 | static positions: Positions; 66 | } 67 | 68 | export class ToastContainer extends React.Component { 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import Toast from './lib/Toast'; 2 | export * from './lib/Toast'; 3 | export default Toast; 4 | 5 | /** 6 | Properties you can set 7 | 8 | Name | Default | Type | Description 9 | --------------------|--------------------------|----------|--------------------------- 10 | duration | Toast.durations.SHORT | Number | The duration of the toast. (Only for api calling method) 11 | visible | false | Bool | The visibility of toast. (Only for Toast Component) 12 | position | Toast.positions.CENTER | Number | The position of toast showing on screen (A negative number represents the distance from the bottom of screen. A positive number represents the distance form the top of screen. `0` will position the toast to the middle of screen.) 13 | animation | true | Bool | Should preform an animation on toast appearing or disappearing. 14 | shadow | true | Bool | Should drop shadow around Toast element. 15 | backgroundColor | null | String | The background color of the toast. 16 | shadowColor | null | String | The shadow color of the toast. 17 | textColor | null | String | The text color of the toast. 18 | delay | 0 | Number | The delay duration before toast start appearing on screen. 19 | hideOnPress | true | Bool | Should hide toast that appears by pressing on the toast. 20 | onShow | null | Function | Callback for toast\`s appear animation start 21 | onShown | null | Function | Callback for toast\`s appear animation end 22 | onHide | null | Function | Callback for toast\`s hide animation start 23 | onHidden | null | Function | Callback for toast\`s hide animation end 24 | 25 | 26 | showLoading         | null                   | Function | convenience method,show an Loading tips 27 | showSuccess         | null                   | Function | convenience method,show an Success tips 28 | showFail         | null                   | Function | convenience method,show an Fail tips 29 | showInfo         | null                   | Function | convenience method,show an Info tips 30 | showWarn         | null                   | Function | convenience method,show an Warn tips 31 | hide         | null                   | Function | hide showing tips 32 | 33 | imageLoading        | null               | Object | showLoading method custom Image 34 | imageSuccess        | null               | Object | showSuccess method custom Image 35 | imageFail       | null               | Object | showFail method custom Image 36 | imageInfo        | null               | Object | showInfo method custom Image 37 | imageWarn        | null               | Object | showWarn method custom Image 38 | 39 | textFont            | 14                     | Number   | text's font 40 | mask               | false                    | Bool     | If can touch other place when showing 41 | maskColor           | string                   | Bool     | The mask's color 42 | maskOpacity         | false                    | Bool     | The mask's opacity 43 | image         | null                     | Object   | show image icon that you like. notice: if you setting image/showSuccess/showFail/showLoading at once, the priority is descendant 44 | imageStyle         | null                     | Object   | the image style 45 | showSuccess         | false                    | Bool     | If show default success icon 46 | showFail         | false                    | Bool     | If show default fail icon 47 | showLoading         | false                    | Bool     | If show default loading icon 48 | 49 | */ 50 | -------------------------------------------------------------------------------- /lib/Toast.js: -------------------------------------------------------------------------------- 1 | import React, { 2 | Component, 3 | } from 'react'; 4 | import RootSiblings from 'react-native-root-siblings'; 5 | import ToastContainer, {positions, durations} from './ToastContainer'; 6 | 7 | 8 | let lastToast = null; 9 | 10 | let defaultOptions = {} 11 | 12 | class Toast extends Component { 13 | static displayName = 'Toast'; 14 | static propTypes = ToastContainer.propTypes; 15 | static positions = positions; 16 | static durations = durations; 17 | static setDefaultOptions = (options) => { 18 | 19 | defaultOptions = options; 20 | } 21 | 22 | //convenience method 23 | static showLoading = function (message, options) { 24 | 25 | let opts = Object.assign({ duration: 9007199254740992 }, options, { image: defaultOptions.imageLoading ? defaultOptions.imageLoading : require('../src/loading.gif') }); 26 | 27 | this.show(message, opts); 28 | } 29 | 30 | static showSuccess = function (message, options) { 31 | 32 | let opts = Object.assign({}, options, { image: defaultOptions.imageSuccess ? defaultOptions.imageSuccess : require('../src/success.png') }); 33 | 34 | this.show(message, opts); 35 | } 36 | 37 | static showFail = function (message, options) { 38 | 39 | let opts = Object.assign({}, options, { image: defaultOptions.imageFail ? defaultOptions.imageFail : require('../src/error.png') }); 40 | 41 | this.show(message, opts); 42 | } 43 | 44 | static showInfo = function (message, options) { 45 | 46 | let opts = Object.assign({}, options, { image: defaultOptions.imageInfo ? defaultOptions.imageInfo : require('../src/info.png') }); 47 | 48 | this.show(message, opts); 49 | } 50 | 51 | static showWarn = function (message, options) { 52 | 53 | let opts = Object.assign({}, options, { image: defaultOptions.imageWarn ? defaultOptions.imageWarn : require('../src/warn.png') }); 54 | 55 | this.show(message, opts); 56 | } 57 | 58 | static hide = function () { 59 | if (lastToast != null) { 60 | lastToast.destroy(); 61 | } 62 | } 63 | 64 | 65 | //raw method 66 | static show = (message, options) => { 67 | 68 | if (lastToast != null) { 69 | lastToast.destroy(); 70 | } 71 | 72 | let RawDefaultOptions = { 73 | duration: durations.SHORT, 74 | position: positions.CENTER, 75 | 76 | } 77 | 78 | let opts = Object.assign(RawDefaultOptions, defaultOptions, options); 79 | 80 | let onHidden = opts.onHidden; 81 | 82 | let hidenFunc = function () { 83 | toast && toast.destroy(); 84 | onHidden && onHidden(); 85 | } 86 | 87 | opts.onHidden = hidenFunc; 88 | 89 | let toast = new RootSiblings( 93 | { message } 94 | ); 95 | 96 | lastToast = toast; 97 | 98 | return toast; 99 | }; 100 | 101 | static hide = toast => { 102 | if (toast instanceof RootSiblings) { 103 | 104 | toast.destroy(); 105 | } 106 | 107 | if (lastToast != null) { 108 | lastToast.destroy(); 109 | } 110 | }; 111 | 112 | 113 | _toast = null; 114 | 115 | constructor(props) { 116 | super(props); 117 | 118 | } 119 | 120 | componentDidMount = () => { 121 | this._toast = new RootSiblings(); 125 | } 126 | 127 | componentWillReceiveProps = nextProps => { 128 | this._toast.update(); 132 | }; 133 | 134 | componentWillUnmount = () => { 135 | this._toast.destroy(); 136 | }; 137 | 138 | render() { 139 | return null; 140 | } 141 | } 142 | 143 | export { 144 | RootSiblings as Manager 145 | }; 146 | export default Toast; 147 | -------------------------------------------------------------------------------- /node_modules/.bin/loose-envify: -------------------------------------------------------------------------------- 1 | ../loose-envify/cli.js -------------------------------------------------------------------------------- /node_modules/js-tokens/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### Version 4.0.0 (2018-01-28) ### 2 | 3 | - Added: Support for ES2018. The only change needed was recognizing the `s` 4 | regex flag. 5 | - Changed: _All_ tokens returned by the `matchToToken` function now have a 6 | `closed` property. It is set to `undefined` for the tokens where “closed” 7 | doesn’t make sense. This means that all tokens objects have the same shape, 8 | which might improve performance. 9 | 10 | These are the breaking changes: 11 | 12 | - `'/a/s'.match(jsTokens)` no longer returns `['/', 'a', '/', 's']`, but 13 | `['/a/s']`. (There are of course other variations of this.) 14 | - Code that rely on some token objects not having the `closed` property could 15 | now behave differently. 16 | 17 | 18 | ### Version 3.0.2 (2017-06-28) ### 19 | 20 | - No code changes. Just updates to the readme. 21 | 22 | 23 | ### Version 3.0.1 (2017-01-30) ### 24 | 25 | - Fixed: ES2015 unicode escapes with more than 6 hex digits are now matched 26 | correctly. 27 | 28 | 29 | ### Version 3.0.0 (2017-01-11) ### 30 | 31 | This release contains one breaking change, that should [improve performance in 32 | V8][v8-perf]: 33 | 34 | > So how can you, as a JavaScript developer, ensure that your RegExps are fast? 35 | > If you are not interested in hooking into RegExp internals, make sure that 36 | > neither the RegExp instance, nor its prototype is modified in order to get the 37 | > best performance: 38 | > 39 | > ```js 40 | > var re = /./g; 41 | > re.exec(''); // Fast path. 42 | > re.new_property = 'slow'; 43 | > ``` 44 | 45 | This module used to export a single regex, with `.matchToToken` bolted 46 | on, just like in the above example. This release changes the exports of 47 | the module to avoid this issue. 48 | 49 | Before: 50 | 51 | ```js 52 | import jsTokens from "js-tokens" 53 | // or: 54 | var jsTokens = require("js-tokens") 55 | var matchToToken = jsTokens.matchToToken 56 | ``` 57 | 58 | After: 59 | 60 | ```js 61 | import jsTokens, {matchToToken} from "js-tokens" 62 | // or: 63 | var jsTokens = require("js-tokens").default 64 | var matchToToken = require("js-tokens").matchToToken 65 | ``` 66 | 67 | [v8-perf]: http://v8project.blogspot.se/2017/01/speeding-up-v8-regular-expressions.html 68 | 69 | 70 | ### Version 2.0.0 (2016-06-19) ### 71 | 72 | - Added: Support for ES2016. In other words, support for the `**` exponentiation 73 | operator. 74 | 75 | These are the breaking changes: 76 | 77 | - `'**'.match(jsTokens)` no longer returns `['*', '*']`, but `['**']`. 78 | - `'**='.match(jsTokens)` no longer returns `['*', '*=']`, but `['**=']`. 79 | 80 | 81 | ### Version 1.0.3 (2016-03-27) ### 82 | 83 | - Improved: Made the regex ever so slightly smaller. 84 | - Updated: The readme. 85 | 86 | 87 | ### Version 1.0.2 (2015-10-18) ### 88 | 89 | - Improved: Limited npm package contents for a smaller download. Thanks to 90 | @zertosh! 91 | 92 | 93 | ### Version 1.0.1 (2015-06-20) ### 94 | 95 | - Fixed: Declared an undeclared variable. 96 | 97 | 98 | ### Version 1.0.0 (2015-02-26) ### 99 | 100 | - Changed: Merged the 'operator' and 'punctuation' types into 'punctuator'. That 101 | type is now equivalent to the Punctuator token in the ECMAScript 102 | specification. (Backwards-incompatible change.) 103 | - Fixed: A `-` followed by a number is now correctly matched as a punctuator 104 | followed by a number. It used to be matched as just a number, but there is no 105 | such thing as negative number literals. (Possibly backwards-incompatible 106 | change.) 107 | 108 | 109 | ### Version 0.4.1 (2015-02-21) ### 110 | 111 | - Added: Support for the regex `u` flag. 112 | 113 | 114 | ### Version 0.4.0 (2015-02-21) ### 115 | 116 | - Improved: `jsTokens.matchToToken` performance. 117 | - Added: Support for octal and binary number literals. 118 | - Added: Support for template strings. 119 | 120 | 121 | ### Version 0.3.1 (2015-01-06) ### 122 | 123 | - Fixed: Support for unicode spaces. They used to be allowed in names (which is 124 | very confusing), and some unicode newlines were wrongly allowed in strings and 125 | regexes. 126 | 127 | 128 | ### Version 0.3.0 (2014-12-19) ### 129 | 130 | - Changed: The `jsTokens.names` array has been replaced with the 131 | `jsTokens.matchToToken` function. The capturing groups of `jsTokens` are no 132 | longer part of the public API; instead use said function. See this [gist] for 133 | an example. (Backwards-incompatible change.) 134 | - Changed: The empty string is now considered an “invalid” token, instead an 135 | “empty” token (its own group). (Backwards-incompatible change.) 136 | - Removed: component support. (Backwards-incompatible change.) 137 | 138 | [gist]: https://gist.github.com/lydell/be49dbf80c382c473004 139 | 140 | 141 | ### Version 0.2.0 (2014-06-19) ### 142 | 143 | - Changed: Match ES6 function arrows (`=>`) as an operator, instead of its own 144 | category (“functionArrow”), for simplicity. (Backwards-incompatible change.) 145 | - Added: ES6 splats (`...`) are now matched as an operator (instead of three 146 | punctuations). (Backwards-incompatible change.) 147 | 148 | 149 | ### Version 0.1.0 (2014-03-08) ### 150 | 151 | - Initial release. 152 | -------------------------------------------------------------------------------- /node_modules/js-tokens/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /node_modules/js-tokens/index.js: -------------------------------------------------------------------------------- 1 | // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell 2 | // License: MIT. (See LICENSE.) 3 | 4 | Object.defineProperty(exports, "__esModule", { 5 | value: true 6 | }) 7 | 8 | // This regex comes from regex.coffee, and is inserted here by generate-index.js 9 | // (run `npm run build`). 10 | exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g 11 | 12 | exports.matchToToken = function(match) { 13 | var token = {type: "invalid", value: match[0], closed: undefined} 14 | if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]) 15 | else if (match[ 5]) token.type = "comment" 16 | else if (match[ 6]) token.type = "comment", token.closed = !!match[7] 17 | else if (match[ 8]) token.type = "regex" 18 | else if (match[ 9]) token.type = "number" 19 | else if (match[10]) token.type = "name" 20 | else if (match[11]) token.type = "punctuator" 21 | else if (match[12]) token.type = "whitespace" 22 | return token 23 | } 24 | -------------------------------------------------------------------------------- /node_modules/js-tokens/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-tokens", 3 | "version": "4.0.0", 4 | "author": "Simon Lydell", 5 | "license": "MIT", 6 | "description": "A regex that tokenizes JavaScript.", 7 | "keywords": [ 8 | "JavaScript", 9 | "js", 10 | "token", 11 | "tokenize", 12 | "regex" 13 | ], 14 | "files": [ 15 | "index.js" 16 | ], 17 | "repository": "lydell/js-tokens", 18 | "scripts": { 19 | "test": "mocha --ui tdd", 20 | "esprima-compare": "node esprima-compare ./index.js everything.js/es5.js", 21 | "build": "node generate-index.js", 22 | "dev": "npm run build && npm test" 23 | }, 24 | "devDependencies": { 25 | "coffeescript": "2.1.1", 26 | "esprima": "4.0.0", 27 | "everything.js": "1.0.3", 28 | "mocha": "5.0.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /node_modules/loose-envify/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Andres Suarez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /node_modules/loose-envify/README.md: -------------------------------------------------------------------------------- 1 | # loose-envify 2 | 3 | [![Build Status](https://travis-ci.org/zertosh/loose-envify.svg?branch=master)](https://travis-ci.org/zertosh/loose-envify) 4 | 5 | Fast (and loose) selective `process.env` replacer using [js-tokens](https://github.com/lydell/js-tokens) instead of an AST. Works just like [envify](https://github.com/hughsk/envify) but much faster. 6 | 7 | ## Gotchas 8 | 9 | * Doesn't handle broken syntax. 10 | * Doesn't look inside embedded expressions in template strings. 11 | - **this won't work:** 12 | ```js 13 | console.log(`the current env is ${process.env.NODE_ENV}`); 14 | ``` 15 | * Doesn't replace oddly-spaced or oddly-commented expressions. 16 | - **this won't work:** 17 | ```js 18 | console.log(process./*won't*/env./*work*/NODE_ENV); 19 | ``` 20 | 21 | ## Usage/Options 22 | 23 | loose-envify has the exact same interface as [envify](https://github.com/hughsk/envify), including the CLI. 24 | 25 | ## Benchmark 26 | 27 | ``` 28 | envify: 29 | 30 | $ for i in {1..5}; do node bench/bench.js 'envify'; done 31 | 708ms 32 | 727ms 33 | 791ms 34 | 719ms 35 | 720ms 36 | 37 | loose-envify: 38 | 39 | $ for i in {1..5}; do node bench/bench.js '../'; done 40 | 51ms 41 | 52ms 42 | 52ms 43 | 52ms 44 | 52ms 45 | ``` 46 | -------------------------------------------------------------------------------- /node_modules/loose-envify/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | 4 | var looseEnvify = require('./'); 5 | var fs = require('fs'); 6 | 7 | if (process.argv[2]) { 8 | fs.createReadStream(process.argv[2], {encoding: 'utf8'}) 9 | .pipe(looseEnvify(process.argv[2])) 10 | .pipe(process.stdout); 11 | } else { 12 | process.stdin.resume() 13 | process.stdin 14 | .pipe(looseEnvify(__filename)) 15 | .pipe(process.stdout); 16 | } 17 | -------------------------------------------------------------------------------- /node_modules/loose-envify/custom.js: -------------------------------------------------------------------------------- 1 | // envify compatibility 2 | 'use strict'; 3 | 4 | module.exports = require('./loose-envify'); 5 | -------------------------------------------------------------------------------- /node_modules/loose-envify/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./loose-envify')(process.env); 4 | -------------------------------------------------------------------------------- /node_modules/loose-envify/loose-envify.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var stream = require('stream'); 4 | var util = require('util'); 5 | var replace = require('./replace'); 6 | 7 | var jsonExtRe = /\.json$/; 8 | 9 | module.exports = function(rootEnv) { 10 | rootEnv = rootEnv || process.env; 11 | return function (file, trOpts) { 12 | if (jsonExtRe.test(file)) { 13 | return stream.PassThrough(); 14 | } 15 | var envs = trOpts ? [rootEnv, trOpts] : [rootEnv]; 16 | return new LooseEnvify(envs); 17 | }; 18 | }; 19 | 20 | function LooseEnvify(envs) { 21 | stream.Transform.call(this); 22 | this._data = ''; 23 | this._envs = envs; 24 | } 25 | util.inherits(LooseEnvify, stream.Transform); 26 | 27 | LooseEnvify.prototype._transform = function(buf, enc, cb) { 28 | this._data += buf; 29 | cb(); 30 | }; 31 | 32 | LooseEnvify.prototype._flush = function(cb) { 33 | var replaced = replace(this._data, this._envs); 34 | this.push(replaced); 35 | cb(); 36 | }; 37 | -------------------------------------------------------------------------------- /node_modules/loose-envify/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "loose-envify", 3 | "version": "1.4.0", 4 | "description": "Fast (and loose) selective `process.env` replacer using js-tokens instead of an AST", 5 | "keywords": [ 6 | "environment", 7 | "variables", 8 | "browserify", 9 | "browserify-transform", 10 | "transform", 11 | "source", 12 | "configuration" 13 | ], 14 | "homepage": "https://github.com/zertosh/loose-envify", 15 | "license": "MIT", 16 | "author": "Andres Suarez ", 17 | "main": "index.js", 18 | "bin": { 19 | "loose-envify": "cli.js" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "git://github.com/zertosh/loose-envify.git" 24 | }, 25 | "scripts": { 26 | "test": "tap test/*.js" 27 | }, 28 | "dependencies": { 29 | "js-tokens": "^3.0.0 || ^4.0.0" 30 | }, 31 | "devDependencies": { 32 | "browserify": "^13.1.1", 33 | "envify": "^3.4.0", 34 | "tap": "^8.0.0" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /node_modules/loose-envify/replace.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var jsTokens = require('js-tokens').default; 4 | 5 | var processEnvRe = /\bprocess\.env\.[_$a-zA-Z][$\w]+\b/; 6 | var spaceOrCommentRe = /^(?:\s|\/[/*])/; 7 | 8 | function replace(src, envs) { 9 | if (!processEnvRe.test(src)) { 10 | return src; 11 | } 12 | 13 | var out = []; 14 | var purge = envs.some(function(env) { 15 | return env._ && env._.indexOf('purge') !== -1; 16 | }); 17 | 18 | jsTokens.lastIndex = 0 19 | var parts = src.match(jsTokens); 20 | 21 | for (var i = 0; i < parts.length; i++) { 22 | if (parts[i ] === 'process' && 23 | parts[i + 1] === '.' && 24 | parts[i + 2] === 'env' && 25 | parts[i + 3] === '.') { 26 | var prevCodeToken = getAdjacentCodeToken(-1, parts, i); 27 | var nextCodeToken = getAdjacentCodeToken(1, parts, i + 4); 28 | var replacement = getReplacementString(envs, parts[i + 4], purge); 29 | if (prevCodeToken !== '.' && 30 | nextCodeToken !== '.' && 31 | nextCodeToken !== '=' && 32 | typeof replacement === 'string') { 33 | out.push(replacement); 34 | i += 4; 35 | continue; 36 | } 37 | } 38 | out.push(parts[i]); 39 | } 40 | 41 | return out.join(''); 42 | } 43 | 44 | function getAdjacentCodeToken(dir, parts, i) { 45 | while (true) { 46 | var part = parts[i += dir]; 47 | if (!spaceOrCommentRe.test(part)) { 48 | return part; 49 | } 50 | } 51 | } 52 | 53 | function getReplacementString(envs, name, purge) { 54 | for (var j = 0; j < envs.length; j++) { 55 | var env = envs[j]; 56 | if (typeof env[name] !== 'undefined') { 57 | return JSON.stringify(env[name]); 58 | } 59 | } 60 | if (purge) { 61 | return 'undefined'; 62 | } 63 | } 64 | 65 | module.exports = replace; 66 | -------------------------------------------------------------------------------- /node_modules/object-assign/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | object-assign 3 | (c) Sindre Sorhus 4 | @license MIT 5 | */ 6 | 7 | 'use strict'; 8 | /* eslint-disable no-unused-vars */ 9 | var getOwnPropertySymbols = Object.getOwnPropertySymbols; 10 | var hasOwnProperty = Object.prototype.hasOwnProperty; 11 | var propIsEnumerable = Object.prototype.propertyIsEnumerable; 12 | 13 | function toObject(val) { 14 | if (val === null || val === undefined) { 15 | throw new TypeError('Object.assign cannot be called with null or undefined'); 16 | } 17 | 18 | return Object(val); 19 | } 20 | 21 | function shouldUseNative() { 22 | try { 23 | if (!Object.assign) { 24 | return false; 25 | } 26 | 27 | // Detect buggy property enumeration order in older V8 versions. 28 | 29 | // https://bugs.chromium.org/p/v8/issues/detail?id=4118 30 | var test1 = new String('abc'); // eslint-disable-line no-new-wrappers 31 | test1[5] = 'de'; 32 | if (Object.getOwnPropertyNames(test1)[0] === '5') { 33 | return false; 34 | } 35 | 36 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056 37 | var test2 = {}; 38 | for (var i = 0; i < 10; i++) { 39 | test2['_' + String.fromCharCode(i)] = i; 40 | } 41 | var order2 = Object.getOwnPropertyNames(test2).map(function (n) { 42 | return test2[n]; 43 | }); 44 | if (order2.join('') !== '0123456789') { 45 | return false; 46 | } 47 | 48 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056 49 | var test3 = {}; 50 | 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { 51 | test3[letter] = letter; 52 | }); 53 | if (Object.keys(Object.assign({}, test3)).join('') !== 54 | 'abcdefghijklmnopqrst') { 55 | return false; 56 | } 57 | 58 | return true; 59 | } catch (err) { 60 | // We don't expect any of the above to throw, but better to be safe. 61 | return false; 62 | } 63 | } 64 | 65 | module.exports = shouldUseNative() ? Object.assign : function (target, source) { 66 | var from; 67 | var to = toObject(target); 68 | var symbols; 69 | 70 | for (var s = 1; s < arguments.length; s++) { 71 | from = Object(arguments[s]); 72 | 73 | for (var key in from) { 74 | if (hasOwnProperty.call(from, key)) { 75 | to[key] = from[key]; 76 | } 77 | } 78 | 79 | if (getOwnPropertySymbols) { 80 | symbols = getOwnPropertySymbols(from); 81 | for (var i = 0; i < symbols.length; i++) { 82 | if (propIsEnumerable.call(from, symbols[i])) { 83 | to[symbols[i]] = from[symbols[i]]; 84 | } 85 | } 86 | } 87 | } 88 | 89 | return to; 90 | }; 91 | -------------------------------------------------------------------------------- /node_modules/object-assign/license: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Sindre Sorhus (sindresorhus.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /node_modules/object-assign/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "object-assign", 3 | "version": "4.1.1", 4 | "description": "ES2015 `Object.assign()` ponyfill", 5 | "license": "MIT", 6 | "repository": "sindresorhus/object-assign", 7 | "author": { 8 | "name": "Sindre Sorhus", 9 | "email": "sindresorhus@gmail.com", 10 | "url": "sindresorhus.com" 11 | }, 12 | "engines": { 13 | "node": ">=0.10.0" 14 | }, 15 | "scripts": { 16 | "test": "xo && ava", 17 | "bench": "matcha bench.js" 18 | }, 19 | "files": [ 20 | "index.js" 21 | ], 22 | "keywords": [ 23 | "object", 24 | "assign", 25 | "extend", 26 | "properties", 27 | "es2015", 28 | "ecmascript", 29 | "harmony", 30 | "ponyfill", 31 | "prollyfill", 32 | "polyfill", 33 | "shim", 34 | "browser" 35 | ], 36 | "devDependencies": { 37 | "ava": "^0.16.0", 38 | "lodash": "^4.16.4", 39 | "matcha": "^0.7.0", 40 | "xo": "^0.16.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /node_modules/object-assign/readme.md: -------------------------------------------------------------------------------- 1 | # object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) 2 | 3 | > ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com) 4 | 5 | 6 | ## Use the built-in 7 | 8 | Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari), 9 | support `Object.assign()` :tada:. If you target only those environments, then by all 10 | means, use `Object.assign()` instead of this package. 11 | 12 | 13 | ## Install 14 | 15 | ``` 16 | $ npm install --save object-assign 17 | ``` 18 | 19 | 20 | ## Usage 21 | 22 | ```js 23 | const objectAssign = require('object-assign'); 24 | 25 | objectAssign({foo: 0}, {bar: 1}); 26 | //=> {foo: 0, bar: 1} 27 | 28 | // multiple sources 29 | objectAssign({foo: 0}, {bar: 1}, {baz: 2}); 30 | //=> {foo: 0, bar: 1, baz: 2} 31 | 32 | // overwrites equal keys 33 | objectAssign({foo: 0}, {foo: 1}, {foo: 2}); 34 | //=> {foo: 2} 35 | 36 | // ignores null and undefined sources 37 | objectAssign({foo: 0}, null, {bar: 1}, undefined); 38 | //=> {foo: 0, bar: 1} 39 | ``` 40 | 41 | 42 | ## API 43 | 44 | ### objectAssign(target, [source, ...]) 45 | 46 | Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. 47 | 48 | 49 | ## Resources 50 | 51 | - [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) 52 | 53 | 54 | ## Related 55 | 56 | - [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()` 57 | 58 | 59 | ## License 60 | 61 | MIT © [Sindre Sorhus](https://sindresorhus.com) 62 | -------------------------------------------------------------------------------- /node_modules/prop-types/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 15.7.2 2 | * [Fix] ensure nullish values in `oneOf` do not crash ([#256](https://github.com/facebook/prop-types/issues/256)) 3 | * [Fix] move `loose-envify` back to production deps, for browerify usage ([#203](https://github.com/facebook/prop-types/issues/203)) 4 | 5 | ## 15.7.1 6 | * [Fix] avoid template literal syntax ([#255](https://github.com/facebook/prop-types/issues/255), [#254](https://github.com/facebook/prop-types/issues/254)) 7 | 8 | ## 15.7.0 9 | * [New] Add `.elementType` ([#211](https://github.com/facebook/prop-types/pull/211)) 10 | * [New] add `PropTypes.resetWarningCache` ([#178](https://github.com/facebook/prop-types/pull/178)) 11 | * `oneOf`: improve warning when multiple arguments are supplied ([#244](https://github.com/facebook/prop-types/pull/244)) 12 | * Fix `oneOf` when used with Symbols ([#224](https://github.com/facebook/prop-types/pull/224)) 13 | * Avoid relying on `hasOwnProperty` being present on values' prototypes ([#112](https://github.com/facebook/prop-types/pull/112), [#187](https://github.com/facebook/prop-types/pull/187)) 14 | * Improve readme ([#248](https://github.com/facebook/prop-types/pull/248), [#233](https://github.com/facebook/prop-types/pull/233)) 15 | * Clean up mistaken runtime dep, swap envify for loose-envify ([#204](https://github.com/facebook/prop-types/pull/204)) 16 | 17 | ## 15.6.2 18 | * Remove the `fbjs` dependency by inlining some helpers from it ([#194](https://github.com/facebook/prop-types/pull/194))) 19 | 20 | ## 15.6.1 21 | * Fix an issue where outdated BSD license headers were still present in the published bundle [#162](https://github.com/facebook/prop-types/issues/162) 22 | 23 | ## 15.6.0 24 | 25 | * Switch from BSD + Patents to MIT license 26 | * Add PropTypes.exact, like PropTypes.shape but warns on extra object keys. ([@thejameskyle](https://github.com/thejameskyle) and [@aweary](https://github.com/aweary) in [#41](https://github.com/facebook/prop-types/pull/41) and [#87](https://github.com/facebook/prop-types/pull/87)) 27 | 28 | ## 15.5.10 29 | 30 | * Fix a false positive warning when using a production UMD build of a third-party library with a DEV version of React. ([@gaearon](https://github.com/gaearon) in [#50](https://github.com/facebook/prop-types/pull/50)) 31 | 32 | ## 15.5.9 33 | 34 | * Add `loose-envify` Browserify transform for users who don't envify globally. ([@mridgway](https://github.com/mridgway) in [#45](https://github.com/facebook/prop-types/pull/45)) 35 | 36 | ## 15.5.8 37 | 38 | * Limit the manual PropTypes call warning count because it has false positives with React versions earlier than 15.2.0 in the 15.x branch and 0.14.9 in the 0.14.x branch. ([@gaearon](https://github.com/gaearon) in [#26](https://github.com/facebook/prop-types/pull/26)) 39 | 40 | ## 15.5.7 41 | 42 | * **Critical Bugfix:** Fix an accidental breaking change that caused errors in production when used through `React.PropTypes`. ([@gaearon](https://github.com/gaearon) in [#20](https://github.com/facebook/prop-types/pull/20)) 43 | * Improve the size of production UMD build. ([@aweary](https://github.com/aweary) in [38ba18](https://github.com/facebook/prop-types/commit/38ba18a4a8f705f4b2b33c88204573ddd604f2d6) and [7882a7](https://github.com/facebook/prop-types/commit/7882a7285293db5f284bcf559b869fd2cd4c44d4)) 44 | 45 | ## 15.5.6 46 | 47 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 48 | 49 | * Fix a markdown issue in README. ([@bvaughn](https://github.com/bvaughn) in [174f77](https://github.com/facebook/prop-types/commit/174f77a50484fa628593e84b871fb40eed78b69a)) 50 | 51 | ## 15.5.5 52 | 53 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 54 | 55 | * Add missing documentation and license files. ([@bvaughn](https://github.com/bvaughn) in [0a53d3](https://github.com/facebook/prop-types/commit/0a53d3a34283ae1e2d3aa396632b6dc2a2061e6a)) 56 | 57 | ## 15.5.4 58 | 59 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 60 | 61 | * Reduce the size of the UMD Build. ([@acdlite](https://github.com/acdlite) in [31e9344](https://github.com/facebook/prop-types/commit/31e9344ca3233159928da66295da17dad82db1a8)) 62 | * Remove bad package url. ([@ljharb](https://github.com/ljharb) in [158198f](https://github.com/facebook/prop-types/commit/158198fd6c468a3f6f742e0e355e622b3914048a)) 63 | * Remove the accidentally included typechecking code from the production build. 64 | 65 | ## 15.5.3 66 | 67 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 68 | 69 | * Remove the accidentally included React package code from the UMD bundle. ([@acdlite](https://github.com/acdlite) in [df318bb](https://github.com/facebook/prop-types/commit/df318bba8a89bc5aadbb0292822cf4ed71d27ace)) 70 | 71 | ## 15.5.2 72 | 73 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 74 | 75 | * Remove dependency on React for CommonJS entry point. ([@acdlite](https://github.com/acdlite) in [cae72bb](https://github.com/facebook/prop-types/commit/cae72bb281a3766c765e3624f6088c3713567e6d)) 76 | 77 | 78 | ## 15.5.1 79 | 80 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 81 | 82 | * Remove accidental uncompiled ES6 syntax in the published package. ([@acdlite](https://github.com/acdlite) in [e191963](https://github.com/facebook/react/commit/e1919638b39dd65eedd250a8bb649773ca61b6f1)) 83 | 84 | ## 15.5.0 85 | 86 | **Note: this release has a critical issue and was deprecated. Please update to 15.5.7 or higher.** 87 | 88 | * Initial release. 89 | 90 | ## Before 15.5.0 91 | 92 | PropTypes was previously included in React, but is now a separate package. For earlier history of PropTypes [see the React change log.](https://github.com/facebook/react/blob/master/CHANGELOG.md) 93 | -------------------------------------------------------------------------------- /node_modules/prop-types/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2013-present, Facebook, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /node_modules/prop-types/checkPropTypes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-present, Facebook, Inc. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var printWarning = function() {}; 11 | 12 | if (process.env.NODE_ENV !== 'production') { 13 | var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); 14 | var loggedTypeFailures = {}; 15 | var has = Function.call.bind(Object.prototype.hasOwnProperty); 16 | 17 | printWarning = function(text) { 18 | var message = 'Warning: ' + text; 19 | if (typeof console !== 'undefined') { 20 | console.error(message); 21 | } 22 | try { 23 | // --- Welcome to debugging React --- 24 | // This error was thrown as a convenience so that you can use this stack 25 | // to find the callsite that caused this warning to fire. 26 | throw new Error(message); 27 | } catch (x) {} 28 | }; 29 | } 30 | 31 | /** 32 | * Assert that the values match with the type specs. 33 | * Error messages are memorized and will only be shown once. 34 | * 35 | * @param {object} typeSpecs Map of name to a ReactPropType 36 | * @param {object} values Runtime values that need to be type-checked 37 | * @param {string} location e.g. "prop", "context", "child context" 38 | * @param {string} componentName Name of the component for error messages. 39 | * @param {?Function} getStack Returns the component stack. 40 | * @private 41 | */ 42 | function checkPropTypes(typeSpecs, values, location, componentName, getStack) { 43 | if (process.env.NODE_ENV !== 'production') { 44 | for (var typeSpecName in typeSpecs) { 45 | if (has(typeSpecs, typeSpecName)) { 46 | var error; 47 | // Prop type validation may throw. In case they do, we don't want to 48 | // fail the render phase where it didn't fail before. So we log it. 49 | // After these have been cleaned up, we'll let them throw. 50 | try { 51 | // This is intentionally an invariant that gets caught. It's the same 52 | // behavior as without this statement except with a better message. 53 | if (typeof typeSpecs[typeSpecName] !== 'function') { 54 | var err = Error( 55 | (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 56 | 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' 57 | ); 58 | err.name = 'Invariant Violation'; 59 | throw err; 60 | } 61 | error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); 62 | } catch (ex) { 63 | error = ex; 64 | } 65 | if (error && !(error instanceof Error)) { 66 | printWarning( 67 | (componentName || 'React class') + ': type specification of ' + 68 | location + ' `' + typeSpecName + '` is invalid; the type checker ' + 69 | 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 70 | 'You may have forgotten to pass an argument to the type checker ' + 71 | 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 72 | 'shape all require an argument).' 73 | ); 74 | } 75 | if (error instanceof Error && !(error.message in loggedTypeFailures)) { 76 | // Only monitor this failure once because there tends to be a lot of the 77 | // same error. 78 | loggedTypeFailures[error.message] = true; 79 | 80 | var stack = getStack ? getStack() : ''; 81 | 82 | printWarning( 83 | 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') 84 | ); 85 | } 86 | } 87 | } 88 | } 89 | } 90 | 91 | /** 92 | * Resets warning cache when testing. 93 | * 94 | * @private 95 | */ 96 | checkPropTypes.resetWarningCache = function() { 97 | if (process.env.NODE_ENV !== 'production') { 98 | loggedTypeFailures = {}; 99 | } 100 | } 101 | 102 | module.exports = checkPropTypes; 103 | -------------------------------------------------------------------------------- /node_modules/prop-types/factory.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-present, Facebook, Inc. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | 'use strict'; 9 | 10 | // React 15.5 references this module, and assumes PropTypes are still callable in production. 11 | // Therefore we re-export development-only version with all the PropTypes checks here. 12 | // However if one is migrating to the `prop-types` npm library, they will go through the 13 | // `index.js` entry point, and it will branch depending on the environment. 14 | var factory = require('./factoryWithTypeCheckers'); 15 | module.exports = function(isValidElement) { 16 | // It is still allowed in 15.5. 17 | var throwOnDirectAccess = false; 18 | return factory(isValidElement, throwOnDirectAccess); 19 | }; 20 | -------------------------------------------------------------------------------- /node_modules/prop-types/factoryWithThrowingShims.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-present, Facebook, Inc. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); 11 | 12 | function emptyFunction() {} 13 | function emptyFunctionWithReset() {} 14 | emptyFunctionWithReset.resetWarningCache = emptyFunction; 15 | 16 | module.exports = function() { 17 | function shim(props, propName, componentName, location, propFullName, secret) { 18 | if (secret === ReactPropTypesSecret) { 19 | // It is still safe when called from React. 20 | return; 21 | } 22 | var err = new Error( 23 | 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 24 | 'Use PropTypes.checkPropTypes() to call them. ' + 25 | 'Read more at http://fb.me/use-check-prop-types' 26 | ); 27 | err.name = 'Invariant Violation'; 28 | throw err; 29 | }; 30 | shim.isRequired = shim; 31 | function getShim() { 32 | return shim; 33 | }; 34 | // Important! 35 | // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. 36 | var ReactPropTypes = { 37 | array: shim, 38 | bool: shim, 39 | func: shim, 40 | number: shim, 41 | object: shim, 42 | string: shim, 43 | symbol: shim, 44 | 45 | any: shim, 46 | arrayOf: getShim, 47 | element: shim, 48 | elementType: shim, 49 | instanceOf: getShim, 50 | node: shim, 51 | objectOf: getShim, 52 | oneOf: getShim, 53 | oneOfType: getShim, 54 | shape: getShim, 55 | exact: getShim, 56 | 57 | checkPropTypes: emptyFunctionWithReset, 58 | resetWarningCache: emptyFunction 59 | }; 60 | 61 | ReactPropTypes.PropTypes = ReactPropTypes; 62 | 63 | return ReactPropTypes; 64 | }; 65 | -------------------------------------------------------------------------------- /node_modules/prop-types/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-present, Facebook, Inc. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | if (process.env.NODE_ENV !== 'production') { 9 | var ReactIs = require('react-is'); 10 | 11 | // By explicitly using `prop-types` you are opting into new development behavior. 12 | // http://fb.me/prop-types-in-prod 13 | var throwOnDirectAccess = true; 14 | module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); 15 | } else { 16 | // By explicitly using `prop-types` you are opting into new production behavior. 17 | // http://fb.me/prop-types-in-prod 18 | module.exports = require('./factoryWithThrowingShims')(); 19 | } 20 | -------------------------------------------------------------------------------- /node_modules/prop-types/lib/ReactPropTypesSecret.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-present, Facebook, Inc. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | 'use strict'; 9 | 10 | var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; 11 | 12 | module.exports = ReactPropTypesSecret; 13 | -------------------------------------------------------------------------------- /node_modules/prop-types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "prop-types", 3 | "version": "15.7.2", 4 | "description": "Runtime type checking for React props and similar objects.", 5 | "main": "index.js", 6 | "license": "MIT", 7 | "files": [ 8 | "LICENSE", 9 | "README.md", 10 | "checkPropTypes.js", 11 | "factory.js", 12 | "factoryWithThrowingShims.js", 13 | "factoryWithTypeCheckers.js", 14 | "index.js", 15 | "prop-types.js", 16 | "prop-types.min.js", 17 | "lib" 18 | ], 19 | "repository": "facebook/prop-types", 20 | "keywords": [ 21 | "react" 22 | ], 23 | "bugs": { 24 | "url": "https://github.com/facebook/prop-types/issues" 25 | }, 26 | "homepage": "https://facebook.github.io/react/", 27 | "dependencies": { 28 | "loose-envify": "^1.4.0", 29 | "object-assign": "^4.1.1", 30 | "react-is": "^16.8.1" 31 | }, 32 | "scripts": { 33 | "pretest": "npm run lint", 34 | "lint": "eslint .", 35 | "test": "npm run tests-only", 36 | "tests-only": "jest", 37 | "umd": "NODE_ENV=development browserify index.js -t loose-envify --standalone PropTypes -o prop-types.js", 38 | "umd-min": "NODE_ENV=production browserify index.js -t loose-envify -t uglifyify --standalone PropTypes -p bundle-collapser/plugin -o | uglifyjs --compress unused,dead_code -o prop-types.min.js", 39 | "build": "yarn umd && yarn umd-min", 40 | "prepublish": "yarn build" 41 | }, 42 | "devDependencies": { 43 | "babel-jest": "^19.0.0", 44 | "babel-preset-react": "^6.24.1", 45 | "browserify": "^16.2.3", 46 | "bundle-collapser": "^1.2.1", 47 | "eslint": "^5.13.0", 48 | "jest": "^19.0.2", 49 | "react": "^15.5.1", 50 | "uglifyify": "^3.0.4", 51 | "uglifyjs": "^2.4.10" 52 | }, 53 | "browserify": { 54 | "transform": [ 55 | "loose-envify" 56 | ] 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /node_modules/prop-types/prop-types.min.js: -------------------------------------------------------------------------------- 1 | !function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,g.PropTypes=f()}}(function(){return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o= 0.47 5 | 6 | Add sibling elements after your app root element. 7 | The created sibling elements are above the rest of your app elements. 8 | This can be used to create a `Modal` component or something should be over your app. 9 | 10 | # BREAKING CHANGE 11 | From 3.0 the default style has been removed from the element. 12 | https://github.com/magicismight/react-native-root-siblings/commit/75b1f65502f41a5ecad0d17fd8d6ebb400365928 13 | 14 | ### Add it to your project 15 | 16 | Run `npm install react-native-root-siblings --save` 17 | 18 | ### USAGE 19 | This library can add element above the root app component registered by `AppRegistry.registerComponent`. 20 | 21 | 1. Create sibling element 22 | 23 | ```js 24 | let sibling = new RootSiblings(); 27 | ``` 28 | 29 | This will create a View element cover all of your app elements, 30 | and returns a sibling instance. 31 | You can create a sibling anywhere inside your react native code. 32 | 33 | 2. Update sibling element 34 | 35 | ```js 36 | sibling.update(); 39 | ``` 40 | 41 | This will update the sibling instance to a View with blue backgroundColor and cover the screen by `10` offset distance. 42 | 43 | 3. Destroy sibling element 44 | 45 | ```js 46 | sibling.destroy(); 47 | ``` 48 | 49 | This will remove the sibling element. 50 | 51 | ### EXAMPLE 52 | 53 | ```js 54 | 'use strict'; 55 | import React, { 56 | AppRegistry, 57 | View, 58 | Component, 59 | TouchableHighlight, 60 | StyleSheet, 61 | Text 62 | } from 'react-native'; 63 | import Dimensions from 'Dimensions'; 64 | 65 | // Import library there,it will wrap everything registered by AppRegistry.registerComponent 66 | // And add or remove other elements after the root component 67 | import RootSiblings from 'react-native-root-siblings'; 68 | 69 | var id = 0; 70 | var elements = []; 71 | class SiblingsExample extends Component{ 72 | addSibling = () => { 73 | let sibling = new RootSiblings( 76 | I`m No.{id} 77 | ); 78 | id++; 79 | elements.push(sibling); 80 | }; 81 | 82 | destroySibling = () => { 83 | let lastSibling = elements.pop(); 84 | lastSibling && lastSibling.destroy(); 85 | }; 86 | 87 | updateSibling = () => { 88 | let lastId = elements.length - 1; 89 | lastId >= 0 && elements[lastId].update( 92 | I`m No.{lastId} : {Math.random()} 93 | ); 94 | }; 95 | 96 | render() { 97 | return 98 | 102 | Add element 103 | 104 | 108 | Destroy element 109 | 110 | 114 | Update element 115 | 116 | ; 117 | } 118 | } 119 | 120 | AppRegistry.registerComponent('SiblingsExample', () => SiblingsExample); 121 | 122 | var styles = StyleSheet.create({ 123 | container: { 124 | flex: 1, 125 | alignItems: 'center', 126 | justifyContent: 'center', 127 | backgroundColor: 'green', 128 | }, 129 | button: { 130 | borderRadius: 4, 131 | padding: 10, 132 | marginLeft: 10, 133 | marginRight: 10, 134 | backgroundColor: '#ccc', 135 | borderColor: '#333', 136 | borderWidth: 1, 137 | }, 138 | buttonText: { 139 | color: '#000' 140 | }, 141 | sibling: { 142 | left: 0, 143 | height: 20, 144 | width: Dimensions.get('window').width / 2, 145 | backgroundColor: 'blue', 146 | opacity: 0.5 147 | } 148 | }); 149 | 150 | ``` 151 | 152 | ![screen shoot](./Examples/screen-shoot.gif) 153 | 154 | ### RUN EXAMPLE 155 | 156 | 1. fork this repository 157 | 2. change dictionary to `Examples` 158 | 3. run `npm i` 159 | -------------------------------------------------------------------------------- /node_modules/react-native-root-siblings/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | import { StyleSheet, View, AppRegistry } from "react-native"; 3 | import StaticContainer from "static-container"; 4 | import PropTypes from "prop-types"; 5 | 6 | const styles = StyleSheet.create({ 7 | container: { 8 | flex: 1 9 | } 10 | }); 11 | 12 | class Provider extends Component { 13 | static childContextTypes = { 14 | store: PropTypes.shape({ 15 | subscribe: PropTypes.func.isRequired, 16 | dispatch: PropTypes.func.isRequired, 17 | getState: PropTypes.func.isRequired 18 | }) 19 | }; 20 | 21 | getChildContext() { 22 | return { store: this.props.store }; 23 | } 24 | 25 | render() { 26 | return this.props.children; 27 | } 28 | } 29 | 30 | function RootSiblingsWrapper(props) { 31 | return ( 32 | 33 | {props.children} 34 | 35 | 36 | ); 37 | }; 38 | 39 | if (!global.__rootSiblingsInjected) { 40 | AppRegistry.setWrapperComponentProvider(function() { 41 | return RootSiblingsWrapper; 42 | }); 43 | global.__rootSiblingsInjected = true; 44 | } 45 | 46 | let uuid = 0; 47 | const triggers = []; 48 | class RootSiblings extends Component { 49 | _updatedSiblings = {}; 50 | _siblings = {}; 51 | _stores = {}; 52 | 53 | constructor(props) { 54 | super(props); 55 | this._siblings = {}; 56 | triggers.push(this._update); 57 | } 58 | 59 | componentWillUnmount() { 60 | triggers.splice(triggers.indexOf(this._update), 1); 61 | } 62 | 63 | _update = (id, element, callback, store) => { 64 | const siblings = { ...this._siblings }; 65 | const stores = { ...this._stores }; 66 | if (siblings[id] && !element) { 67 | delete siblings[id]; 68 | delete stores[id]; 69 | } else if (element) { 70 | siblings[id] = element; 71 | stores[id] = store; 72 | } 73 | this._updatedSiblings[id] = true; 74 | this._siblings = siblings; 75 | this._stores = stores; 76 | this.forceUpdate(callback); 77 | }; 78 | 79 | render() { 80 | const siblings = this._siblings; 81 | const stores = this._stores; 82 | const elements = []; 83 | Object.keys(siblings).forEach(key => { 84 | const element = siblings[key]; 85 | if (element) { 86 | const sibling = ( 87 | 91 | {element} 92 | 93 | ); 94 | 95 | const store = stores[key]; 96 | if (store) { 97 | elements.push( 98 | 99 | {sibling} 100 | 101 | ); 102 | } else { 103 | elements.push(sibling); 104 | } 105 | } 106 | }); 107 | this._updatedSiblings = {}; 108 | return elements; 109 | } 110 | } 111 | 112 | export default class RootSiblingManager { 113 | constructor(element, callback, store) { 114 | const id = uuid++; 115 | function update(element, callback, store) { 116 | triggers.forEach(function(trigger) { 117 | trigger(id, element, callback, store); 118 | }); 119 | } 120 | 121 | function destroy(callback) { 122 | triggers.forEach(function(trigger) { 123 | trigger(id, null, callback); 124 | }); 125 | } 126 | 127 | update(element, callback, store); 128 | this.update = update; 129 | this.destroy = destroy; 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /node_modules/react-native-root-siblings/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.2.3", 3 | "name": "react-native-root-siblings", 4 | "repository": { 5 | "type": "git", 6 | "url": "git@github.com:magicismight/react-native-root-siblings.git" 7 | }, 8 | "license": "MIT", 9 | "description": "react native root sibling elements manager", 10 | "dependencies": { 11 | "prop-types": "^15.6.2", 12 | "static-container": "^1.0.0" 13 | }, 14 | "keywords": [ 15 | "react-component", 16 | "react-native", 17 | "ios", 18 | "android" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /node_modules/static-container/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) [2015-2017] [Horcrux] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /node_modules/static-container/StaticContainer.js: -------------------------------------------------------------------------------- 1 | import { Component, Children } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | 4 | export default class extends Component { 5 | static propTypes = { 6 | shouldUpdate: PropTypes.bool.isRequired 7 | }; 8 | 9 | shouldComponentUpdate(nextProps) { 10 | return nextProps.shouldUpdate; 11 | } 12 | 13 | render() { 14 | const child = this.props.children; 15 | return (child === null || child === false) ? null : Children.only(child); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /node_modules/static-container/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.5.1", 3 | "name": "static-container", 4 | "repository": { 5 | "type": "git", 6 | "url": "git@github.com:magicismight/StaticContainer.git" 7 | }, 8 | "license": "MIT", 9 | "main": "./StaticContainer", 10 | "description": "react StaticContainer", 11 | "keywords": [ 12 | "react-component", 13 | "static-container", 14 | "performance" 15 | ], 16 | "peerDependencies": { 17 | "prop-types": "^15.5.10" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-root-tips", 3 | "version": "1.1.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "js-tokens": { 8 | "version": "4.0.0", 9 | "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz?cache=0&sync_timestamp=1586796260005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-tokens%2Fdownload%2Fjs-tokens-4.0.0.tgz", 10 | "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" 11 | }, 12 | "loose-envify": { 13 | "version": "1.4.0", 14 | "resolved": "http://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", 15 | "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", 16 | "requires": { 17 | "js-tokens": "^3.0.0 || ^4.0.0" 18 | } 19 | }, 20 | "object-assign": { 21 | "version": "4.1.1", 22 | "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", 23 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 24 | }, 25 | "prop-types": { 26 | "version": "15.7.2", 27 | "resolved": "http://registry.npm.taobao.org/prop-types/download/prop-types-15.7.2.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fprop-types%2Fdownload%2Fprop-types-15.7.2.tgz", 28 | "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", 29 | "requires": { 30 | "loose-envify": "^1.4.0", 31 | "object-assign": "^4.1.1", 32 | "react-is": "^16.8.1" 33 | } 34 | }, 35 | "react-is": { 36 | "version": "16.13.1", 37 | "resolved": "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz", 38 | "integrity": "sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ=" 39 | }, 40 | "react-native-root-siblings": { 41 | "version": "3.2.3", 42 | "resolved": "https://registry.npm.taobao.org/react-native-root-siblings/download/react-native-root-siblings-3.2.3.tgz?cache=0&sync_timestamp=1576147516913&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-native-root-siblings%2Fdownload%2Freact-native-root-siblings-3.2.3.tgz", 43 | "integrity": "sha1-31oc/zo6H0M/VzIOHK5xnxsVo/I=", 44 | "requires": { 45 | "prop-types": "^15.6.2", 46 | "static-container": "^1.0.0" 47 | } 48 | }, 49 | "static-container": { 50 | "version": "1.5.1", 51 | "resolved": "https://registry.npm.taobao.org/static-container/download/static-container-1.5.1.tgz", 52 | "integrity": "sha1-nXqU4E3qhkU5p7ahMEhDradA3Bk=" 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-root-tips", 3 | "version": "1.1.4", 4 | "description": "very simple and powerful way to show a toast in react-native", 5 | "main": "./index.js", 6 | "types": "./index.d.ts", 7 | "dependencies": { 8 | "prop-types": "^15.7.2", 9 | "react-native-root-siblings": "^4.0.0" 10 | }, 11 | "peerDependencies": { 12 | "react-native": ">=0.47.0" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/openUmbrella/react-native-root-tips" 17 | }, 18 | "scripts": { 19 | "test": "echo \"Error: no test specified\" && exit 1" 20 | }, 21 | "keywords": [ 22 | "react-component", 23 | "react-native", 24 | "ios", 25 | "android", 26 | "image", 27 | "focus", 28 | "toast", 29 | "tips" 30 | ], 31 | "author": "opu", 32 | "license": "MIT" 33 | } 34 | -------------------------------------------------------------------------------- /src/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/src/error.png -------------------------------------------------------------------------------- /src/example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/src/example.gif -------------------------------------------------------------------------------- /src/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/src/info.png -------------------------------------------------------------------------------- /src/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/src/loading.gif -------------------------------------------------------------------------------- /src/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/src/success.png -------------------------------------------------------------------------------- /src/warn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openUmbrella/react-native-root-tips/940bafdecafa3e587651a222b5d76b67aa0e93ac/src/warn.png --------------------------------------------------------------------------------