add sahay framework visualization to gh-pages (#22)

* add sahay framework visualization

* add Licence info

* remove graphjson processing
This commit is contained in:
Prateek Chanda 2021-08-02 13:34:00 +05:30 коммит произвёл GitHub
Родитель 40e59d0549
Коммит 45c5c29b92
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
127 изменённых файлов: 8303 добавлений и 23121 удалений

67
.github/workflows/codeql-analysis.yml поставляемый
Просмотреть файл

@ -1,67 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '40 16 * * 6'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

Просмотреть файл

@ -1,4 +1,4 @@
MIT License MIT License
Copyright (c) Microsoft Corporation. Copyright (c) Microsoft Corporation.

Просмотреть файл

@ -1,6 +0,0 @@
[android]
target = Google Inc.:Google APIs:23
[maven_repositories]
central = https://repo1.maven.org/maven2

Просмотреть файл

@ -1,46 +0,0 @@
module.exports = {
root: true,
extends: [
'@react-native-community',
'prettier',
'prettier/@typescript-eslint',
'prettier/react',
'plugin:@typescript-eslint/recommended',
],
rules: {
'@typescript-eslint/explicit-function-return-type': [
'error',
{
allowExpressions: true,
allowTypedFunctionExpressions: true,
},
],
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'interface',
format: ['PascalCase'],
custom: {
regex: '^I[A-Z]',
match: true,
},
},
],
'@typescript-eslint/indent': 'off',
'@typescript-eslint/no-namespace': 'off',
'@typescript-eslint/no-explicit-any': 2,
'@typescript-eslint/no-require-imports': 'error',
'@typescript-eslint/no-empty-interface': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
},
],
'@typescript-eslint/no-use-before-define': 'off',
'array-bracket-newline': ['warn', 'consistent'],
'array-element-newline': ['warn', 'consistent'],
'no-console': 2,
'no-multiple-empty-lines': [2, {max: 1, maxEOF: 1, maxBOF: 1}],
},
};

Просмотреть файл

@ -1,73 +0,0 @@
[ignore]
; We fork some components by platform
.*/*[.]android.js
; Ignore "BUCK" generated dirs
<PROJECT_ROOT>/\.buckd/
; Ignore polyfills
node_modules/react-native/Libraries/polyfills/.*
; These should not be required directly
; require from fbjs/lib instead: require('fbjs/lib/warning')
node_modules/warning/.*
; Flow doesn't support platforms
.*/Libraries/Utilities/LoadingView.js
[untyped]
.*/node_modules/@react-native-community/cli/.*/.*
[include]
[libs]
node_modules/react-native/interface.js
node_modules/react-native/flow/
[options]
emoji=true
esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable
module.file_ext=.js
module.file_ext=.json
module.file_ext=.ios.js
munge_underscores=true
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
[lints]
sketchy-null-number=warn
sketchy-null-mixed=warn
sketchy-number=warn
untyped-type-import=warn
nonstrict-import=warn
deprecated-type=warn
unsafe-getters-setters=warn
unnecessary-invariant=warn
signature-verification-failure=warn
deprecated-utility=error
[strict]
deprecated-type
nonstrict-import
sketchy-null
unclear-type
unsafe-getters-setters
untyped-import
untyped-type-import
[version]
^0.122.0

1
Sahay/.gitattributes поставляемый
Просмотреть файл

@ -1 +0,0 @@
*.pbxproj -text

59
Sahay/.gitignore поставляемый
Просмотреть файл

@ -1,59 +0,0 @@
# OSX
#
.DS_Store
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
# Bundle artifact
*.jsbundle
# CocoaPods
/ios/Pods/

Просмотреть файл

@ -1,9 +0,0 @@
module.exports = {
bracketSpacing: false,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
tabWidth: 2,
semi: true,
printWidth: 80,
};

Просмотреть файл

@ -1 +0,0 @@
{}

Просмотреть файл

@ -1,81 +0,0 @@
import React, {Component, ReactNode} from 'react';
import {Text, StyleSheet, View, FlatList, TouchableOpacity} from 'react-native';
import {Actions} from 'react-native-router-flux';
import {IFlatListCompData} from './App.types';
import {Themes} from './constants/Themes';
import {NavigationScenes} from './src/AppNavigator/AppNavigator.types';
import {exampleTextImgData} from './src/content-examples/englishSpeakingTutorial/TextIntroData/data';
import {ComponentType} from './src/SahayFramework/SahayFramework.types';
interface IProps {}
export default class App extends Component<IProps> {
constructor(props: IProps) {
super(props);
}
public render(): ReactNode {
const componentData: Array<IFlatListCompData> = [
{
componentName: 'Text Image Component',
goto: NavigationScenes.SAHAY_TEXT_IMAGE_COMPONENT,
gotoProps: {
content: exampleTextImgData,
componentType: ComponentType.TEXT_IMAGE_COMPONENT,
themeColor: Themes.ORANGE_THEME,
},
},
{
componentName: 'Polar Type Question Component',
goto: NavigationScenes.SAHAY_POLAR_QUESTION_COMPONENT,
},
];
return (
<FlatList
data={componentData}
renderItem={({item}) => (
<View style={styles.listItem}>
<View style={styles.componentNameView}>
<Text style={styles.title}>{item.componentName}</Text>
</View>
<TouchableOpacity
style={styles.gotoStyle}
onPress={() => {
Actions.push(item.goto);
}}>
<Text style={{color: 'green'}}>Check</Text>
</TouchableOpacity>
</View>
)}
keyExtractor={(item) => item.componentName}
/>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#F7F7F7',
marginTop: 60,
},
listItem: {
margin: 10,
padding: 10,
backgroundColor: '#FFF',
width: '80%',
flex: 1,
alignSelf: 'center',
flexDirection: 'row',
borderRadius: 5,
},
componentNameView: {alignItems: 'center', flex: 1},
title: {fontWeight: 'bold'},
gotoStyle: {
height: 50,
width: 50,
justifyContent: 'center',
alignItems: 'center',
},
});

Просмотреть файл

@ -1,8 +0,0 @@
import {NavigationScenes} from './src/AppNavigator/AppNavigator.types';
import {ISahayFrameworkProps} from './src/SahayFramework/SahayFramework.types';
export interface IFlatListCompData {
componentName: string;
goto: NavigationScenes;
gotoProps?: ISahayFrameworkProps;
}

Просмотреть файл

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2021 Microsoft
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Просмотреть файл

@ -1,7 +0,0 @@
# :space_invader: Component Structure
### Template Components currently in Use
- Polar Question Type Component
- Text Image Component
- Numbered List Type Component

Просмотреть файл

@ -1,14 +0,0 @@
/**
* @format
*/
import 'react-native';
import React from 'react';
import App from '../App';
// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';
it('renders correctly', () => {
renderer.create(<App />);
});

Просмотреть файл

@ -1,55 +0,0 @@
# To learn about Buck see [Docs](https://buckbuild.com/).
# To run your application with Buck:
# - install Buck
# - `npm start` - to start the packager
# - `cd android`
# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
# - `buck install -r android/app` - compile, install and run application
#
load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
lib_deps = []
create_aar_targets(glob(["libs/*.aar"]))
create_jar_targets(glob(["libs/*.jar"]))
android_library(
name = "all-libs",
exported_deps = lib_deps,
)
android_library(
name = "app-code",
srcs = glob([
"src/main/java/**/*.java",
]),
deps = [
":all-libs",
":build_config",
":res",
],
)
android_build_config(
name = "build_config",
package = "com.sahay",
)
android_resource(
name = "res",
package = "com.sahay",
res = "src/main/res",
)
android_binary(
name = "app",
keystore = "//android/keystores:debug",
manifest = "src/main/AndroidManifest.xml",
package_type = "debug",
deps = [
":app-code",
],
)

Просмотреть файл

@ -1,219 +0,0 @@
apply plugin: "com.android.application"
import com.android.build.OutputFile
/**
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
* and bundleReleaseJsAndAssets).
* These basically call `react-native bundle` with the correct arguments during the Android build
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
* bundle directly from the development server. Below you can see all the possible configurations
* and their defaults. If you decide to add a configuration block, make sure to add it before the
* `apply from: "../../node_modules/react-native/react.gradle"` line.
*
* project.ext.react = [
* // the name of the generated asset file containing your JS bundle
* bundleAssetName: "index.android.bundle",
*
* // the entry file for bundle generation. If none specified and
* // "index.android.js" exists, it will be used. Otherwise "index.js" is
* // default. Can be overridden with ENTRY_FILE environment variable.
* entryFile: "index.android.js",
*
* // https://reactnative.dev/docs/performance#enable-the-ram-format
* bundleCommand: "ram-bundle",
*
* // whether to bundle JS and assets in debug mode
* bundleInDebug: false,
*
* // whether to bundle JS and assets in release mode
* bundleInRelease: true,
*
* // whether to bundle JS and assets in another build variant (if configured).
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
* // The configuration property can be in the following formats
* // 'bundleIn${productFlavor}${buildType}'
* // 'bundleIn${buildType}'
* // bundleInFreeDebug: true,
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // 'devDisabledIn${productFlavor}${buildType}'
* // 'devDisabledIn${buildType}'
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
* // where to put the JS bundle asset in debug mode
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
*
* // where to put the JS bundle asset in release mode
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in debug mode
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in release mode
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
*
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
* // for example, you might want to remove it from here.
* inputExcludes: ["android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* ]
*/
project.ext.react = [
enableHermes: false, // clean and rebuild if changing
]
apply from: "../../node_modules/react-native/react.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
/**
* The preferred build flavor of JavaScriptCore.
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
/**
* Whether to enable the Hermes VM.
*
* This should be set on project.ext.react and mirrored here. If it is not set
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
* and the benefits of using Hermes will therefore be sharply reduced.
*/
def enableHermes = project.ext.react.get("enableHermes", false);
android {
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.sahay"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
// Caution! In production, you need to generate your own keystore file.
// see https://reactnative.dev/docs/signed-apk-android.
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// https://developer.android.com/studio/build/configure-apk-splits.html
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+" // From node_modules
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
exclude group:'com.facebook.fbjni'
}
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
exclude group:'com.squareup.okhttp3', module:'okhttp'
}
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
}
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

Просмотреть файл

@ -1,19 +0,0 @@
"""Helper definitions to glob .aar and .jar targets"""
def create_aar_targets(aarfiles):
for aarfile in aarfiles:
name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
lib_deps.append(":" + name)
android_prebuilt_aar(
name = name,
aar = aarfile,
)
def create_jar_targets(jarfiles):
for jarfile in jarfiles:
name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
lib_deps.append(":" + name)
prebuilt_jar(
name = name,
binary_jar = jarfile,
)

Двоичные данные
Sahay/android/app/debug.keystore

Двоичный файл не отображается.

10
Sahay/android/app/proguard-rules.pro поставляемый
Просмотреть файл

@ -1,10 +0,0 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:

Просмотреть файл

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>

Просмотреть файл

@ -1,72 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
package com.sahay;
import android.content.Context;
import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.android.utils.FlipperUtils;
import com.facebook.flipper.core.FlipperClient;
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
import com.facebook.flipper.plugins.inspector.DescriptorMapping;
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.network.NetworkingModule;
import okhttp3.OkHttpClient;
public class ReactNativeFlipper {
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
if (FlipperUtils.shouldEnableFlipper(context)) {
final FlipperClient client = AndroidFlipperClient.getInstance(context);
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
client.addPlugin(new ReactFlipperPlugin());
client.addPlugin(new DatabasesFlipperPlugin(context));
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
client.addPlugin(CrashReporterPlugin.getInstance());
NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
NetworkingModule.setCustomClientBuilder(
new NetworkingModule.CustomClientBuilder() {
@Override
public void apply(OkHttpClient.Builder builder) {
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
}
});
client.addPlugin(networkFlipperPlugin);
client.start();
// Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
// Hence we run if after all native modules have been initialized
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
if (reactContext == null) {
reactInstanceManager.addReactInstanceEventListener(
new ReactInstanceManager.ReactInstanceEventListener() {
@Override
public void onReactContextInitialized(ReactContext reactContext) {
reactInstanceManager.removeReactInstanceEventListener(this);
reactContext.runOnNativeModulesQueueThread(
new Runnable() {
@Override
public void run() {
client.addPlugin(new FrescoFlipperPlugin());
}
});
}
});
} else {
client.addPlugin(new FrescoFlipperPlugin());
}
}
}
}

Просмотреть файл

@ -1,27 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sahay">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
</manifest>

Просмотреть файл

@ -1,15 +0,0 @@
package com.sahay;
import com.facebook.react.ReactActivity;
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
@Override
protected String getMainComponentName() {
return "Sahay";
}
}

Просмотреть файл

@ -1,80 +0,0 @@
package com.sahay;
import android.app.Application;
import android.content.Context;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.soloader.SoLoader;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost =
new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
}
/**
* Loads Flipper in React Native templates. Call this in the onCreate method with something like
* initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
*
* @param context
* @param reactInstanceManager
*/
private static void initializeFlipper(
Context context, ReactInstanceManager reactInstanceManager) {
if (BuildConfig.DEBUG) {
try {
/*
We use reflection here to pick up the class that initializes Flipper,
since Flipper library is not available in release mode
*/
Class<?> aClass = Class.forName("com.sahay.ReactNativeFlipper");
aClass
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
.invoke(null, context, reactInstanceManager);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 2.0 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 2.8 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 4.5 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 6.9 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 6.3 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 10 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 9.0 KiB

Двоичный файл не отображается.

До

Ширина:  |  Высота:  |  Размер: 15 KiB

Просмотреть файл

@ -1,3 +0,0 @@
<resources>
<string name="app_name">Sahay</string>
</resources>

Просмотреть файл

@ -1,9 +0,0 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
</style>
</resources>

Просмотреть файл

@ -1,37 +0,0 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = "29.0.2"
minSdkVersion = 16
compileSdkVersion = 29
targetSdkVersion = 29
}
repositories {
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:3.5.3")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
}
}

Просмотреть файл

@ -1,28 +0,0 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.54.0

Двоичные данные
Sahay/android/gradle/wrapper/gradle-wrapper.jar поставляемый

Двоичный файл не отображается.

Просмотреть файл

@ -1,5 +0,0 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

183
Sahay/android/gradlew поставляемый
Просмотреть файл

@ -1,183 +0,0 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"

103
Sahay/android/gradlew.bat поставляемый
Просмотреть файл

@ -1,103 +0,0 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

Просмотреть файл

@ -1,3 +0,0 @@
rootProject.name = 'Sahay'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app'

Просмотреть файл

@ -1,4 +0,0 @@
{
"name": "Sahay",
"displayName": "Sahay"
}

Просмотреть файл

@ -1,3 +0,0 @@
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
};

Просмотреть файл

@ -1,42 +0,0 @@
export enum Colors {
AERO_BLUE = '#C4EBD6',
ALICE_BLUE = '#E4F8FF',
AQUAMARINE = '#70FFE5',
BLACK = '#000000',
CHETWODE_BLUE = '#6B7DC1',
DARK_GREY = '#606060',
DEEP_SKY_BLUE = '#24D0F5',
GREY_WHITE = '#ecf0f1',
BLUE_BLACK = '#1c1f1f',
TRANSPARENT_WHITE = 'rgba(255, 255, 255, 0.4)',
TACAO = '#FFAE74',
GREY = '#757575',
SUNDOWN = '#FFB3AC',
GREY_24 = '#3D3D3D',
FREE_SPEECH_MAGENTA = '#DF62EA',
MALIBU = '#4EC1F2',
LIGHT_GREY = '#C4C4C4',
LIGHT_SEA_GREEN = '#0EBCA7',
MOCCASIN = '#FFE8BA',
MEDIUM_ORCHID = '#BB6BD9',
GAINS_BORROW = '#E3E3E3',
MIDNIGHT_BLUE = '#1B035E',
LIGHT_BLACK = '#333333',
PEACH_PUFF = '#FFD8BB',
PINK_CRISIS = '#DF1F72',
NOBEL = '#949494',
ROYAL_BLUE = '#3353F5',
SCOOTER = '#297EA3',
SILVER = '#C6C6C6',
SUMMER_SKY = '#2D9CDB',
SUNSHADE = '#FF9A51',
VERY_PALE_BLUE = '#E9E4FF',
VERY_SOFT_BLUE = '#B6AEDA',
VERY_SOFT_VIOLET = '#B6AEDA',
WAIKAWA_GREY = '#65698B',
WILD_STRAWBERRY = '#FF2D85',
WHISPER = '#E4E4E4',
WHITE = '#ffffff',
WHITE_SMOKE = '#F5F5F5',
HOME_BARRIERS_BLUE = '#D3ECFB',
}

Просмотреть файл

@ -1,16 +0,0 @@
import {Dimensions} from 'react-native';
const windowWidth = Dimensions.get('window').width;
const windowHeight = Dimensions.get('window').height;
export enum WINDOW_DIMENSIONS {
WIDTH = windowWidth,
HEIGHT = windowHeight,
}
export const relativeWidth = (width: number): number => {
return Math.round(WINDOW_DIMENSIONS.WIDTH / width);
};
export const relativeHeight = (height: number): number => {
return Math.round(WINDOW_DIMENSIONS.HEIGHT / height);
};

Просмотреть файл

@ -1,16 +0,0 @@
import {WINDOW_DIMENSIONS} from './Dimensions';
export enum Fonts {
POPPINS_REGULAR = 'Poppins-Regular',
MONTSERRAT_REGULAR = 'Montserrat-Regular',
}
const scaleFactor: number = WINDOW_DIMENSIONS.WIDTH / 380;
export const relativeFontSize = (size: number): number => {
return Math.round(scaleFactor * size);
};
export const lineHeight = (val: number): number => {
return scaleFactor * val;
};

Просмотреть файл

@ -1,28 +0,0 @@
import {Colors} from './Colors';
export enum ThemeTypes {
ORANGE_THEME = 'ORANGE_THEME',
BLUE_THEME = 'BLUE_THEME',
MAGENTA_THEME = 'MAGENTA_THEME',
}
export interface ITheme {
MAIN_COLOR: Colors;
}
export type IThemes<ThemeTypes extends string> = {
[key in ThemeTypes]: ITheme;
};
export const Themes: IThemes<ThemeTypes> = {
[ThemeTypes.ORANGE_THEME]: {
MAIN_COLOR: Colors.SUNSHADE,
},
[ThemeTypes.BLUE_THEME]: {
MAIN_COLOR: Colors.SUMMER_SKY,
},
[ThemeTypes.MAGENTA_THEME]: {
MAIN_COLOR: Colors.PINK_CRISIS,
},
};

Просмотреть файл

@ -1,3 +0,0 @@
export {Colors} from './Colors';
export {Fonts, relativeFontSize, lineHeight} from './Fonts';
export {WINDOW_DIMENSIONS, relativeWidth, relativeHeight} from './Dimensions';

133
Sahay/custom_typings/slider.d.ts поставляемый
Просмотреть файл

@ -1,133 +0,0 @@
declare module 'react-native-slider' {
import {ComponentClass, PureComponent} from 'react';
import {
ImageSourcePropType,
SpringAnimationConfig,
StyleProp,
TimingAnimationConfig,
ViewStyle,
} from 'react-native';
interface ISliderProps {
/**
* Initial value of the slider. The value should be between minimumValue
* and maximumValue, which default to 0 and 1 respectively.
* Default value is 0.
*
* *This is not a controlled component*, e.g. if you don't update
* the value, the component won't be reset to its inital value.
*/
value?: number;
/**
* If true the user won't be able to move the slider.
* Default value is false.
*/
disabled?: boolean;
/**
* Initial minimum value of the slider. Default value is 0.
*/
minimumValue?: number;
/**
* Initial maximum value of the slider. Default value is 1.
*/
maximumValue?: number;
/**
* Step value of the slider. The value should be between 0 and
* (maximumValue - minimumValue). Default value is 0.
*/
step?: number;
/**
* The color used for the track to the left of the button. Overrides the
* default blue gradient image.
*/
minimumTrackTintColor?: string;
/**
* The color used for the track to the right of the button. Overrides the
* default blue gradient image.
*/
maximumTrackTintColor?: string;
/**
* The color used for the thumb.
*/
thumbTintColor?: string;
/**
* The size of the touch area that allows moving the thumb.
* The touch area has the same center has the visible thumb.
* This allows to have a visually small thumb while still allowing the user
* to move it easily.
* The default is {width: 40, height: 40}.
*/
thumbTouchSize?: {width: number; height: number};
/**
* Callback continuously called while the user is dragging the slider.
*/
onValueChange?: (value: number) => void;
/**
* Callback called when the user starts changing the value (e.g. when
* the slider is pressed).
*/
onSlidingStart?: (value: number) => void;
/**
* Callback called when the user finishes changing the value (e.g. when
* the slider is released).
*/
onSlidingComplete?: (value: number) => void;
/**
* The style applied to the slider container.
*/
style?: StyleProp<ViewStyle>;
/**
* The style applied to the track.
*/
trackStyle?: StyleProp<ViewStyle>;
/**
* The style applied to the thumb.
*/
thumbStyle?: StyleProp<ViewStyle>;
/**
* Sets an image for the thumb.
*/
thumbImage?: ImageSourcePropType;
/**
* Set this to true to visually see the thumb touch rect in green.
*/
debugTouchArea?: boolean;
/**
* Set to true to animate values with default 'timing' animation type
*/
animateTransitions?: boolean;
/**
* Custom Animation type. 'spring' or 'timing'.
*/
animationType?: 'spring' | 'timing';
/**
* Used to configure the animation parameters. These are the same parameters in the Animated library.
*/
animationConfig?: SpringAnimationConfig | TimingAnimationConfig;
}
const Slider: ComponentClass<ISliderProps>;
export default Slider;
}

5
Sahay/custom_typings/svg.d.ts поставляемый
Просмотреть файл

@ -1,5 +0,0 @@
declare module '*.svg' {
import {SvgProps} from 'react-native-svg';
const content: React.FC<SvgProps>;
export default content;
}

Просмотреть файл

@ -1,9 +0,0 @@
/**
* @format
*/
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
AppRegistry.registerComponent(appName, () => App);

Просмотреть файл

@ -1,33 +0,0 @@
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'
target 'Sahay' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
target 'SahayTests' do
inherit! :complete
# Pods for testing
end
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
use_flipper!
post_install do |installer|
flipper_post_install(installer)
end
end
target 'Sahay-tvOS' do
# Pods for Sahay-tvOS
target 'Sahay-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
end

Просмотреть файл

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

Просмотреть файл

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

Просмотреть файл

@ -1,791 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00E356F31AD99517003FC87E /* SahayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* SahayTests.m */; };
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2DCD954D1E0B4F2C00145EB5 /* SahayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* SahayTests.m */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = Sahay;
};
2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
remoteInfo = "Sahay-tvOS";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
00E356EE1AD99517003FC87E /* SahayTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SahayTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* SahayTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SahayTests.m; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* Sahay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sahay.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Sahay/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Sahay/AppDelegate.m; sourceTree = "<group>"; };
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Sahay/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Sahay/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sahay/main.m; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* Sahay-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Sahay-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* Sahay-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Sahay-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = Sahay/LaunchScreen.storyboard; sourceTree = "<group>"; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
00E356EB1AD99517003FC87E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
00E356EF1AD99517003FC87E /* SahayTests */ = {
isa = PBXGroup;
children = (
00E356F21AD99517003FC87E /* SahayTests.m */,
00E356F01AD99517003FC87E /* Supporting Files */,
);
path = SahayTests;
sourceTree = "<group>";
};
00E356F01AD99517003FC87E /* Supporting Files */ = {
isa = PBXGroup;
children = (
00E356F11AD99517003FC87E /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
13B07FAE1A68108700A75B9A /* Sahay */ = {
isa = PBXGroup;
children = (
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
13B07FB01A68108700A75B9A /* AppDelegate.m */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
13B07FB61A68108700A75B9A /* Info.plist */,
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
13B07FB71A68108700A75B9A /* main.m */,
);
name = Sahay;
sourceTree = "<group>";
};
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
);
name = Libraries;
sourceTree = "<group>";
};
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
13B07FAE1A68108700A75B9A /* Sahay */,
832341AE1AAA6A7D00B99B32 /* Libraries */,
00E356EF1AD99517003FC87E /* SahayTests */,
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
);
indentWidth = 2;
sourceTree = "<group>";
tabWidth = 2;
usesTabs = 0;
};
83CBBA001A601CBA00E9B192 /* Products */ = {
isa = PBXGroup;
children = (
13B07F961A680F5B00A75B9A /* Sahay.app */,
00E356EE1AD99517003FC87E /* SahayTests.xctest */,
2D02E47B1E0B4A5D006451C7 /* Sahay-tvOS.app */,
2D02E4901E0B4A5D006451C7 /* Sahay-tvOSTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
00E356ED1AD99517003FC87E /* SahayTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "SahayTests" */;
buildPhases = (
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
);
buildRules = (
);
dependencies = (
00E356F51AD99517003FC87E /* PBXTargetDependency */,
);
name = SahayTests;
productName = SahayTests;
productReference = 00E356EE1AD99517003FC87E /* SahayTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
13B07F861A680F5B00A75B9A /* Sahay */ = {
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Sahay" */;
buildPhases = (
FD10A7F022414F080027D42C /* Start Packager */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
);
buildRules = (
);
dependencies = (
);
name = Sahay;
productName = Sahay;
productReference = 13B07F961A680F5B00A75B9A /* Sahay.app */;
productType = "com.apple.product-type.application";
};
2D02E47A1E0B4A5D006451C7 /* Sahay-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Sahay-tvOS" */;
buildPhases = (
FD10A7F122414F3F0027D42C /* Start Packager */,
2D02E4771E0B4A5D006451C7 /* Sources */,
2D02E4781E0B4A5D006451C7 /* Frameworks */,
2D02E4791E0B4A5D006451C7 /* Resources */,
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
);
buildRules = (
);
dependencies = (
);
name = "Sahay-tvOS";
productName = "Sahay-tvOS";
productReference = 2D02E47B1E0B4A5D006451C7 /* Sahay-tvOS.app */;
productType = "com.apple.product-type.application";
};
2D02E48F1E0B4A5D006451C7 /* Sahay-tvOSTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Sahay-tvOSTests" */;
buildPhases = (
2D02E48C1E0B4A5D006451C7 /* Sources */,
2D02E48D1E0B4A5D006451C7 /* Frameworks */,
2D02E48E1E0B4A5D006451C7 /* Resources */,
);
buildRules = (
);
dependencies = (
2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
);
name = "Sahay-tvOSTests";
productName = "Sahay-tvOSTests";
productReference = 2D02E4901E0B4A5D006451C7 /* Sahay-tvOSTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1130;
TargetAttributes = {
00E356ED1AD99517003FC87E = {
CreatedOnToolsVersion = 6.2;
TestTargetID = 13B07F861A680F5B00A75B9A;
};
13B07F861A680F5B00A75B9A = {
LastSwiftMigration = 1120;
};
2D02E47A1E0B4A5D006451C7 = {
CreatedOnToolsVersion = 8.2.1;
ProvisioningStyle = Automatic;
};
2D02E48F1E0B4A5D006451C7 = {
CreatedOnToolsVersion = 8.2.1;
ProvisioningStyle = Automatic;
TestTargetID = 2D02E47A1E0B4A5D006451C7;
};
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Sahay" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 83CBB9F61A601CBA00E9B192;
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
13B07F861A680F5B00A75B9A /* Sahay */,
00E356ED1AD99517003FC87E /* SahayTests */,
2D02E47A1E0B4A5D006451C7 /* Sahay-tvOS */,
2D02E48F1E0B4A5D006451C7 /* Sahay-tvOSTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
00E356EC1AD99517003FC87E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
13B07F8E1A680F5B00A75B9A /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2D02E4791E0B4A5D006451C7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2D02E48E1E0B4A5D006451C7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Bundle React Native code and images";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Bundle React Native Code And Images";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
FD10A7F022414F080027D42C /* Start Packager */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Start Packager";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
showEnvVarsInLog = 0;
};
FD10A7F122414F3F0027D42C /* Start Packager */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Start Packager";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
00E356EA1AD99517003FC87E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
00E356F31AD99517003FC87E /* SahayTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
13B07F871A680F5B00A75B9A /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
13B07FC11A68108700A75B9A /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2D02E4771E0B4A5D006451C7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2D02E48C1E0B4A5D006451C7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2DCD954D1E0B4F2C00145EB5 /* SahayTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 13B07F861A680F5B00A75B9A /* Sahay */;
targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
};
2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 2D02E47A1E0B4A5D006451C7 /* Sahay-tvOS */;
targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = SahayTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
"$(inherited)",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sahay.app/Sahay";
};
name = Debug;
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
INFOPLIST_FILE = SahayTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
OTHER_LDFLAGS = (
"-ObjC",
"-lc++",
"$(inherited)",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sahay.app/Sahay";
};
name = Release;
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 1;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Sahay/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Sahay;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 1;
INFOPLIST_FILE = Sahay/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Sahay;
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
2D02E4971E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = "Sahay-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.Sahay-tvOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 10.0;
};
name = Debug;
};
2D02E4981E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = "Sahay-tvOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.Sahay-tvOS";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 10.0;
};
name = Release;
};
2D02E4991E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = "Sahay-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.Sahay-tvOSTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sahay-tvOS.app/Sahay-tvOS";
TVOS_DEPLOYMENT_TARGET = 10.1;
};
name = Debug;
};
2D02E49A1E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = "Sahay-tvOSTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.Sahay-tvOSTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Sahay-tvOS.app/Sahay-tvOS";
TVOS_DEPLOYMENT_TARGET = 10.1;
};
name = Release;
};
83CBBA201A601CBA00E9B192 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
LIBRARY_SEARCH_PATHS = (
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
"\"$(inherited)\"",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
83CBBA211A601CBA00E9B192 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
LIBRARY_SEARCH_PATHS = (
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
"\"$(inherited)\"",
);
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "SahayTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
00E356F61AD99517003FC87E /* Debug */,
00E356F71AD99517003FC87E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Sahay" */ = {
isa = XCConfigurationList;
buildConfigurations = (
13B07F941A680F5B00A75B9A /* Debug */,
13B07F951A680F5B00A75B9A /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Sahay-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2D02E4971E0B4A5E006451C7 /* Debug */,
2D02E4981E0B4A5E006451C7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Sahay-tvOSTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2D02E4991E0B4A5E006451C7 /* Debug */,
2D02E49A1E0B4A5E006451C7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Sahay" */ = {
isa = XCConfigurationList;
buildConfigurations = (
83CBBA201A601CBA00E9B192 /* Debug */,
83CBBA211A601CBA00E9B192 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
}

Просмотреть файл

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1130"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Sahay-tvOS.app"
BlueprintName = "Sahay-tvOS"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "Sahay-tvOSTests.xctest"
BlueprintName = "Sahay-tvOSTests"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Sahay-tvOS.app"
BlueprintName = "Sahay-tvOS"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Sahay-tvOS.app"
BlueprintName = "Sahay-tvOS"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

Просмотреть файл

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1130"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "Sahay.app"
BlueprintName = "Sahay"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E"
BuildableName = "SahayTests.xctest"
BlueprintName = "SahayTests"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "Sahay.app"
BlueprintName = "Sahay"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "Sahay.app"
BlueprintName = "Sahay"
ReferencedContainer = "container:Sahay.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

Просмотреть файл

@ -1,8 +0,0 @@
#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
@property (nonatomic, strong) UIWindow *window;
@end

Просмотреть файл

@ -1,58 +0,0 @@
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#ifdef FB_SONARKIT_ENABLED
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
static void InitializeFlipper(UIApplication *application) {
FlipperClient *client = [FlipperClient sharedClient];
SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
[client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
[client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
[client addPlugin:[FlipperKitReactPlugin new]];
[client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
[client start];
}
#endif
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef FB_SONARKIT_ENABLED
InitializeFlipper(application);
#endif
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"Sahay"
initialProperties:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
@end

Просмотреть файл

@ -1,38 +0,0 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Просмотреть файл

@ -1,6 +0,0 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Просмотреть файл

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Sahay</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

Просмотреть файл

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
<rect key="frame" x="0.0" y="647" width="375" height="0.0"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sahay" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu">
<rect key="frame" x="0.0" y="626" width="375" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
<constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/>
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/>
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
<constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/>
<constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/>
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>
</constraints>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="52.173913043478265" y="375"/>
</scene>
</scenes>
</document>

Просмотреть файл

@ -1,9 +0,0 @@
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

Просмотреть файл

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

Просмотреть файл

@ -1,65 +0,0 @@
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import <React/RCTLog.h>
#import <React/RCTRootView.h>
#define TIMEOUT_SECONDS 600
#define TEXT_TO_LOOK_FOR @"Welcome to React"
@interface SahayTests : XCTestCase
@end
@implementation SahayTests
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
{
if (test(view)) {
return YES;
}
for (UIView *subview in [view subviews]) {
if ([self findSubviewInView:subview matching:test]) {
return YES;
}
}
return NO;
}
- (void)testRendersWelcomeScreen
{
UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
BOOL foundElement = NO;
__block NSString *redboxError = nil;
#ifdef DEBUG
RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
if (level >= RCTLogLevelError) {
redboxError = message;
}
});
#endif
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
return YES;
}
return NO;
}];
}
#ifdef DEBUG
RCTSetLogFunction(RCTDefaultLogFunction);
#endif
XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
}
@end

Просмотреть файл

@ -1,30 +0,0 @@
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
/* eslint-disable */
const {getDefaultConfig} = require('metro-config');
module.exports = (async () => {
const {
resolver: {sourceExts, assetExts},
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== 'svg'),
sourceExts: [...sourceExts, 'svg'],
},
};
})();

11131
Sahay/package-lock.json сгенерированный

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,43 +0,0 @@
{
"name": "Sahay",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"prettier:write": "prettier --write **/*.{js,jsx,ts,tsx,json}",
"lint": "tsc --noEmit && eslint --ext .js,.jsx,.ts,.tsx ./ --quiet --fix"
},
"dependencies": {
"native-base": "^2.15.0",
"react": "16.13.1",
"react-native": "0.63.4",
"react-native-htmlview": "^0.16.0",
"react-native-router-flux": "^4.2.0",
"react-native-svg": "^12.1.0",
"react-native-slider": "^0.11.0",
"react-native-linear-gradient": "^2.5.6",
"react-redux": "^7.1.1",
"redux": "^4.0.4",
"redux-logger": "^3.0.6",
"redux-persist": "^6.0.0-pre2.1"
},
"devDependencies": {
"@babel/core": "^7.12.10",
"@babel/runtime": "^7.12.5",
"@react-native-community/eslint-config": "^2.0.0",
"@types/react-native": "^0.63.43",
"@types/react-native-htmlview": "^0.12.2",
"babel-jest": "^26.6.3",
"eslint": "^7.17.0",
"jest": "^26.6.3",
"metro-react-native-babel-preset": "^0.64.0",
"react-native-typescript-transformer": "^1.2.13",
"react-test-renderer": "16.13.1",
"typescript": "^4.1.3"
},
"jest": {
"preset": "react-native"
}
}

Просмотреть файл

@ -1,8 +0,0 @@
module.exports = {
getTransformModulePath() {
return require.resolve('react-native-typescript-transformer');
},
getSourceExts() {
return ['ts', 'tsx'];
},
};

Просмотреть файл

@ -1,29 +0,0 @@
import React from 'react';
import {ReactElement} from 'react';
import {ActionConst, Router, Scene, Stack} from 'react-native-router-flux';
import {SahayFramework} from '../SahayFramework';
import {NavigationScenes} from './AppNavigator.types';
export const AppNavigator = (): ReactElement => {
return (
<Router>
<Stack key="root" hideNavBar={true} type={ActionConst.RESET}>
<Scene
key={NavigationScenes.SAHAY_TEXT_IMAGE_COMPONENT}
component={SahayFramework}
title="Sahay Text Image Component"
/>
<Scene
key={NavigationScenes.SAHAY_MULTI_CHOICE_COMPONENT}
component={SahayFramework}
title="Sahay Multi Choice Component"
/>
<Scene
key={NavigationScenes.SAHAY_POLAR_QUESTION_COMPONENT}
component={SahayFramework}
title="Sahay Multi Choice Component"
/>
</Stack>
</Router>
);
};

Просмотреть файл

@ -1,8 +0,0 @@
export enum NavigationScenes {
ROOT = 'root',
HOME = 'home',
SAHAY_TEXT_IMAGE_COMPONENT = 'sahayTextImageComponent',
SAHAY_MULTI_CHOICE_COMPONENT = 'sahayMultiChoiceComponent',
SAHAY_POLAR_QUESTION_COMPONENT = 'sahayPolarQuestionComponent',
// COMPONENT_KEY_NAME = componentName
}

Просмотреть файл

@ -1 +0,0 @@
export {AppNavigator} from './AppNavigator';

Просмотреть файл

@ -1,37 +0,0 @@
import React from 'react';
import {ReactElement} from 'react';
import {View} from 'react-native';
import {PolarQuestionComponent} from '../templateComponents/PolarQuestionComponent';
import {IPolarQuestionArray} from '../templateComponents/PolarQuestionComponent/PolarQuestionComponent.types';
import {TextImageComponent} from '../templateComponents/TextImageComponent/TextImageComponent';
import {ITextImageDataArray} from '../templateComponents/TextImageComponent/TextImageComponent.types';
import {ComponentType, ISahayFrameworkProps} from './SahayFramework.types';
export const SahayFramework = ({
content,
componentType,
themeColor,
}: ISahayFrameworkProps): ReactElement => {
switch (componentType) {
case ComponentType.TEXT_IMAGE_COMPONENT: {
return (
<TextImageComponent
data={content as ITextImageDataArray}
themeColor={themeColor}
/>
);
}
case ComponentType.POLAR_QUESTION_COMPONENT: {
return (
<PolarQuestionComponent
data={content as IPolarQuestionArray}
themeColor={themeColor}
/>
);
}
default: {
return <View></View>; // DEFAULT case would be changed later
}
}
};

Просмотреть файл

@ -1,19 +0,0 @@
import {ITheme} from '../../constants/Themes';
import {
IPolarQuestionArray,
} from '../templateComponents/PolarQuestionComponent/PolarQuestionComponent.types';
import {ITextImageDataArray} from '../templateComponents/TextImageComponent/TextImageComponent.types';
export type IContentInterface = ITextImageDataArray | IPolarQuestionArray;
export enum ComponentType {
TEXT_IMAGE_COMPONENT = 'TEXT_IMAGE_COMPONENT',
MULTI_CHOICE_COMPONENT = 'MULTI_CHOICE_COMPONENT',
POLAR_QUESTION_COMPONENT = 'POLAR_QUESTION_COMPONENT',
}
export interface ISahayFrameworkProps {
content: IContentInterface;
componentType: ComponentType;
themeColor: ITheme;
}

Просмотреть файл

@ -1 +0,0 @@
export {SahayFramework} from './SahayFramework';

Просмотреть файл

@ -1,19 +0,0 @@
import {NavigationScenes} from '../../../AppNavigator/AppNavigator.types';
import {ITextImageDataArray} from '../../../templateComponents/TextImageComponent/TextImageComponent.types';
import {englishSpeakingIntro} from '../assets';
export const exampleTextImgData: ITextImageDataArray = {
quid1: {
descriptionTexts:
'Although effectively speaking in English requires practice, it isnt an impossible task and can be achieved easily',
imageComponent: englishSpeakingIntro,
next: 'quid2',
},
quid2: {
descriptionTexts:
'Let us embark on a journey where we provide you curated list of resources to help you excel at having great oratory skills in English',
imageComponent: englishSpeakingIntro,
goto: NavigationScenes.HOME,
},
};

Просмотреть файл

@ -1,24 +0,0 @@
<svg width="280" height="240" viewBox="0 0 280 240" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.48">
<circle cx="144.5" cy="123.5" r="56.5" fill="white"/>
<circle cx="144.5" cy="123.5" r="56.5" fill="url(#paint0_radial)" fill-opacity="0.7"/>
</g>
<path d="M108.215 166.81C110.668 137.836 117.171 112.035 125.879 97.3233C132.992 85.3053 144.693 81.3303 148.027 84.5823L157.675 95.6931L164.845 109.781L168.93 123.774L174.274 135.365C180.855 148.303 182.598 156.4 183.776 161.867C183.917 162.521 184.049 163.137 184.181 163.72C173.979 173.787 159.965 180 144.5 180C130.686 180 118.031 175.043 108.215 166.81Z" fill="white"/>
<path d="M108.215 166.81C110.668 137.836 117.171 112.035 125.879 97.3233C132.992 85.3053 144.693 81.3303 148.027 84.5823L157.675 95.6931L164.845 109.781L168.93 123.774L174.274 135.365C180.855 148.303 182.598 156.4 183.776 161.867C183.917 162.521 184.049 163.137 184.181 163.72C173.979 173.787 159.965 180 144.5 180C130.686 180 118.031 175.043 108.215 166.81Z" fill="url(#paint1_linear)" fill-opacity="0.7"/>
<path d="M105.007 157.484C104.548 160.078 104.212 161.508 103.984 162.902L103.612 162.53C103.772 161.127 104.23 160.031 104.58 157.418C104.931 154.804 105.366 151.631 105.95 148.003C106.531 144.376 107.227 140.287 108.117 135.848C109.014 131.412 110.05 126.613 111.417 121.594C112.103 119.086 112.858 116.52 113.732 113.921C114.603 111.325 115.601 108.691 116.836 106.095C118.055 103.519 119.41 100.945 120.938 98.4264C122.465 95.9075 124.161 93.4327 126.12 91.1158C128.077 88.8034 130.274 86.6073 132.886 84.8433C134.189 83.9636 135.607 83.207 137.132 82.6617C138.656 82.1189 140.306 81.8184 141.965 81.8757C143.622 81.9272 145.269 82.3287 146.753 83.0147C148.243 83.6951 149.579 84.623 150.768 85.6691C151.955 86.7191 153.01 87.8858 153.956 89.1027C154.415 89.6905 154.874 90.2776 155.331 90.8633L156.683 92.6719C158.444 95.0956 160.096 97.5707 161.587 100.112C163.084 102.647 164.388 105.266 165.489 107.919C166.578 110.578 167.408 113.289 168.071 115.953C168.731 118.617 169.241 121.226 169.889 123.695C170.533 126.162 171.342 128.497 172.417 130.63C172.675 131.168 172.962 131.686 173.247 132.2C173.54 132.723 173.83 133.241 174.118 133.754C174.683 134.807 175.221 135.838 175.706 136.867C177.658 140.979 179.094 144.888 180.243 148.384C181.378 151.886 182.217 154.981 182.855 157.542C183.483 160.105 183.999 162.26 184.273 163.645L183.901 164.017C183.567 162.646 183.233 160.165 182.498 157.637C181.768 155.109 180.815 152.058 179.561 148.62C178.312 145.182 176.767 141.347 174.718 137.357C174.206 136.358 173.659 135.355 173.087 134.352C172.788 133.848 172.485 133.339 172.18 132.826C171.868 132.303 171.554 131.775 171.266 131.224C170.076 129.043 169.15 126.622 168.408 124.106C167.679 121.584 167.111 118.983 166.402 116.388C165.695 113.795 164.826 111.205 163.725 108.659C161.549 103.554 158.463 98.6483 154.95 93.9563C154.509 93.3734 154.067 92.7894 153.625 92.2045C153.164 91.621 152.703 91.0361 152.241 90.4504C151.35 89.3146 150.381 88.2603 149.317 87.3275C148.252 86.4 147.088 85.6073 145.836 85.0436C144.588 84.4742 143.25 84.1608 141.899 84.124C140.547 84.0899 139.185 84.3268 137.875 84.7823C136.565 85.2438 135.306 85.9015 134.122 86.6929C131.747 88.2767 129.658 90.329 127.782 92.5259C124.045 96.9555 121.058 101.939 118.594 106.946C116.173 111.937 114.467 117.113 112.997 122.042C111.557 126.988 110.358 131.721 109.345 136.114C108.345 140.508 107.48 144.553 106.77 148.151C106.065 151.749 105.468 154.891 105.007 157.484Z" fill="#1A1A1A"/>
<path d="M148.855 127.174C148.855 131.838 144.313 129.627 139.157 129.627" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M138.043 109.226C137.462 109.218 136.964 110.486 136.929 112.058C136.894 113.63 137.336 114.912 137.917 114.92C138.497 114.929 138.996 113.661 139.031 112.088C139.066 110.516 138.624 109.235 138.043 109.226Z" fill="#111111"/>
<path d="M146.146 109.242C145.63 109.24 145.205 110.514 145.196 112.086C145.187 113.659 145.598 114.935 146.113 114.937C146.629 114.938 147.055 113.665 147.064 112.092C147.073 110.519 146.662 109.243 146.146 109.242Z" fill="#111111"/>
<path d="M151.036 70.2121C160.578 71.3301 169.635 75.0361 177.244 80.9361C184.854 86.8361 190.732 94.7094 194.253 103.719L190.964 105.287C187.545 96.539 181.997 87.9691 174.608 82.2405C167.22 76.5119 160.119 72.8443 150.855 71.7588L151.036 70.2121Z" fill="#FDFDFD"/>
<path d="M195.053 106.03L191.707 107.517C192.302 108.706 192.451 111.234 192.451 112.349L196.168 111.234C196.168 110.044 195.424 107.269 195.053 106.03Z" fill="#FDFDFD"/>
<defs>
<radialGradient id="paint0_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(144.5 123.5) rotate(90) scale(56.5)">
<stop offset="0.390788" stop-color="#DFFFFD"/>
<stop offset="0.953125" stop-color="#5EEBF4"/>
</radialGradient>
<linearGradient id="paint1_linear" x1="162.065" y1="114.778" x2="93.3573" y2="156.177" gradientUnits="userSpaceOnUse">
<stop offset="0.140625" stop-color="#5BF398"/>
<stop offset="1" stop-color="#60C3EE"/>
</linearGradient>
</defs>
</svg>

До

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Просмотреть файл

@ -1,2 +0,0 @@
import englishSpeakingIntro from './englishSpeakingIntro.svg';
export {englishSpeakingIntro};

Просмотреть файл

@ -1,23 +0,0 @@
import {StyleSheet} from 'react-native';
import {
relativeFontSize,
relativeHeight,
relativeWidth,
} from '../../../constants';
import {Colors} from '../../../constants';
const styles = StyleSheet.create({
nextButton: {
width: relativeWidth(7.55),
height: relativeHeight(14),
alignSelf: 'flex-end',
shadowColor: Colors.BLACK,
shadowOpacity: 0.15,
shadowRadius: relativeWidth(2),
},
nextButtonIcon: {
fontSize: relativeFontSize(45),
},
});
export {styles};

Просмотреть файл

@ -1,21 +0,0 @@
import React, {ReactElement} from 'react';
import {Fab, Icon, NativeBase} from 'native-base';
import {styles} from './FAB.styles';
import {IFabProps} from './FAB.types';
const FAB = (props: NativeBase.Fab & IFabProps): ReactElement => {
return (
<Fab
style={{...styles.nextButton, backgroundColor: props.color}}
position="topRight"
{...props}>
<Icon
type="MaterialIcons"
name="navigate-next"
style={styles.nextButtonIcon}
/>
</Fab>
);
};
export {FAB};

Просмотреть файл

@ -1,5 +0,0 @@
import {Colors} from '../../../constants';
export interface IFabProps {
color: Colors;
}

Просмотреть файл

@ -1,22 +0,0 @@
## FAB
### Functionality of the Component
FAB component implements basically a next button functionality, through which users can navigate to the next screen
### Props
- Color : Color of the Fab Icon based on the theme of the component/any color the user wants
### Component Type
Normal Component
### Libraries Used
`native-base` library for using the Icon.
### How to use it?
From a particular component, call the Text Image Component with the data/content and theme Color passed as props.

Просмотреть файл

@ -1 +0,0 @@
export {FAB} from './FAB';

Просмотреть файл

@ -1,160 +0,0 @@
import {StyleSheet} from 'react-native';
import {
relativeWidth,
Colors,
Fonts,
lineHeight,
relativeFontSize,
relativeHeight,
} from '../../../constants';
const styles = StyleSheet.create({
bulletStyle: {
alignItems: 'center',
alignSelf: 'center',
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: 14,
fontStyle: 'normal',
color: Colors.BLACK,
fontWeight: '600',
lineHeight: 21,
textAlign: 'center',
},
circle: {
width: 22,
height: 22,
alignContent: 'center',
alignSelf: 'center',
backgroundColor: Colors.LIGHT_GREY,
borderRadius: 22 / 2,
justifyContent: 'center',
},
bulletItemStyle: {
flex: 1,
fontFamily: Fonts.MONTSERRAT_REGULAR,
fontSize: 14,
fontStyle: 'normal',
fontWeight: '500',
lineHeight: 24,
paddingLeft: 10,
},
container: {
flex: 1,
justifyContent: 'center',
},
reportCardView: {
alignSelf: 'center',
backgroundColor: Colors.WHITE_SMOKE,
borderRadius: relativeWidth(22),
flex: 7 / 9,
width: '90%',
},
questionContainer: {
alignSelf: 'flex-end',
backgroundColor: Colors.WHITE_SMOKE,
borderBottomLeftRadius: relativeWidth(22),
borderBottomRightRadius: relativeWidth(22),
flex: 4 / 7,
width: '100%',
},
questionTextStyles: {
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(14),
fontStyle: 'normal',
fontWeight: '600',
lineHeight: lineHeight(24),
textAlign: 'center',
},
questionTextView: {
alignSelf: 'center',
flex: 3 / 5,
justifyContent: 'center',
width: '80%',
},
nextButtonView: {
alignSelf: 'flex-end',
flex: 1 / 8,
width: '100%',
},
progressView: {
width: '50%',
height: '2%',
alignSelf: 'center',
flex: 1 / 4,
justifyContent: 'center',
},
headerTextView: {
alignContent: 'center',
alignSelf: 'center',
flex: 1 / 5,
justifyContent: 'center',
width: '80%',
},
headerText: {
fontFamily: Fonts.POPPINS_REGULAR,
color: Colors.MEDIUM_ORCHID,
marginTop: relativeHeight(80),
letterSpacing: 0.2,
fontSize: 14,
lineHeight: lineHeight(20),
fontStyle: 'normal',
fontWeight: '700',
textAlign: 'center',
},
progressText: {
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(18),
fontStyle: 'normal',
fontWeight: '500',
letterSpacing: 0.15,
lineHeight: lineHeight(24),
textAlign: 'center',
},
rowView: {flexDirection: 'row', paddingBottom: 17},
sliderBar: {
alignSelf: 'center',
flex: 1 / 4,
justifyContent: 'center',
width: '87.5%',
},
storyText: {
alignSelf: 'center',
fontFamily: Fonts.MONTSERRAT_REGULAR,
fontSize: relativeFontSize(15),
fontStyle: 'normal',
fontWeight: '500',
lineHeight: lineHeight(22.5),
width: '83%',
},
storyIconView: {
flex: 1 / 8,
alignSelf: 'center',
},
storyIcon: {
width: relativeWidth(4),
height: relativeHeight(9),
top: relativeHeight(-40),
},
storyView: {
alignSelf: 'center',
flex: 1,
width: '90%',
},
vignetteStory: {
alignSelf: 'flex-start',
borderRadius: relativeWidth(22),
flex: 1,
justifyContent: 'center',
width: '100%',
},
});
export {styles};

Просмотреть файл

@ -1,56 +0,0 @@
import {View} from 'native-base';
import React from 'react';
import {ReactElement} from 'react';
import {FlatList, Text} from 'react-native';
import {Image} from 'react-native';
import {FAB} from '../FAB';
import {styles} from './NumberedList.styles';
import {INumberListProps} from './NumberedList.types';
const NumberedList = ({
dataSource,
nextGoto,
}: INumberListProps): ReactElement => {
return (
<View style={styles.container}>
<View style={styles.reportCardView}>
<View style={styles.vignetteStory}>
<View style={styles.storyIconView}>
<Image source={dataSource.headerImage} style={styles.storyIcon} />
</View>
<View style={styles.headerTextView}>
<Text style={styles.headerText}>{dataSource.headerTitle}</Text>
</View>
<View style={styles.storyView}>
<FlatList
data={dataSource.listData}
renderItem={({item}) => (
<View style={styles.rowView}>
<View style={styles.circle}>
<Text style={styles.bulletStyle}>{item.num}</Text>
</View>
<Text style={styles.bulletItemStyle}>{item.key}</Text>
</View>
)}
/>
</View>
</View>
</View>
<View
style={styles.nextButtonView}
accessible={true}
accessibilityLabel={'Next Button'}
accessibilityLiveRegion="polite"
accessibilityRole="button">
<FAB
color={dataSource.themeColor.MAIN_COLOR}
onPress={() => {
nextGoto();
}}
/>
</View>
</View>
);
};
export {NumberedList};

Просмотреть файл

@ -1,19 +0,0 @@
import {ImageSourcePropType} from 'react-native';
import {ITheme} from '../../../constants/Themes';
export interface INumberListType {
key: string;
num: number;
}
export interface IComponentData {
themeColor: ITheme;
headerImage: ImageSourcePropType;
headerTitle: string;
listData: Array<INumberListType>;
}
export interface INumberListProps {
dataSource: IComponentData;
nextGoto: Function;
}

Просмотреть файл

@ -1 +0,0 @@
export {NumberedList} from './NumberedList';

Просмотреть файл

@ -1,65 +0,0 @@
import {StyleSheet} from 'react-native';
import {
Colors,
Fonts,
lineHeight,
relativeFontSize,
relativeHeight,
relativeWidth,
} from '../../../constants';
const styles = StyleSheet.create({
buttonText: {
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(15),
},
buttonView: {
alignItems: 'center',
borderColor: Colors.SUMMER_SKY,
borderRadius: relativeWidth(15),
borderWidth: relativeWidth(400),
flex: 2 / 9,
height: relativeHeight(20),
justifyContent: 'center',
},
container: {
alignItems: 'center',
alignSelf: 'center',
flex: 1,
justifyContent: 'center',
width: '90%',
},
contentContainer: {
flex: 8 / 9,
width: '100%',
},
imageView: {
alignSelf: 'center',
aspectRatio: 1,
justifyContent: 'center',
width: '75%',
},
mainText: {
alignSelf: 'center',
fontFamily: Fonts.MONTSERRAT_REGULAR,
fontSize: relativeFontSize(16),
fontWeight: '500',
lineHeight: lineHeight(25),
textAlign: 'center',
},
optionsView: {
alignSelf: 'center',
flex: 1 / 10,
flexDirection: 'row',
justifyContent: 'space-around',
width: '75%',
},
textView: {
alignSelf: 'center',
flexGrow: 1 / 5,
justifyContent: 'center',
width: '82.5%',
},
});
export {styles};

Просмотреть файл

@ -1,55 +0,0 @@
import React, {ReactElement, useState} from 'react';
import {View, Text, SafeAreaView, TouchableNativeFeedback} from 'react-native';
import {Colors} from '../../../constants';
import {styles} from './PolarQuestionComponent.styles';
import {IPolarQuestionComponentProps} from './PolarQuestionComponent.types';
const PolarQuestionComponent = ({
data,
themeColor,
}: IPolarQuestionComponentProps): ReactElement => {
const componentState = {
questionIdentifier: 'quid1',
nextQuestion: '',
};
const [currentComponentState] = useState(componentState);
const ImageComponent = data[currentComponentState.questionIdentifier].image;
const text = data[currentComponentState.questionIdentifier].text;
const onPressNo = data[currentComponentState.questionIdentifier].onPressNo;
const onPressYes = data[currentComponentState.questionIdentifier].onPressYes;
return (
<SafeAreaView style={styles.container}>
<View style={styles.contentContainer}>
<View style={styles.imageView}>
<ImageComponent />
</View>
<View style={styles.textView}>
<Text style={styles.mainText}>{text}</Text>
</View>
<View style={styles.optionsView}>
<TouchableNativeFeedback onPress={() => onPressNo()}>
<View style={[styles.buttonView, {backgroundColor: Colors.WHITE}]}>
<Text style={[styles.buttonText, {color: themeColor.MAIN_COLOR}]}>
No
</Text>
</View>
</TouchableNativeFeedback>
<TouchableNativeFeedback onPress={() => onPressYes()}>
<View
style={[
styles.buttonView,
{backgroundColor: themeColor.MAIN_COLOR},
]}>
<Text style={[styles.buttonText, {color: Colors.WHITE}]}>
Yes
</Text>
</View>
</TouchableNativeFeedback>
</View>
</View>
</SafeAreaView>
);
};
export {PolarQuestionComponent};

Просмотреть файл

@ -1,19 +0,0 @@
import {FC} from 'react';
import {SvgProps} from 'react-native-svg';
import {ITheme} from '../../../constants/Themes';
export interface IPolarQuestionMetaData {
text: string;
image: FC<SvgProps>;
onPressYes: Function;
onPressNo: Function;
}
export interface IPolarQuestionArray {
[key: string]: IPolarQuestionMetaData;
}
export interface IPolarQuestionComponentProps {
data: IPolarQuestionArray;
themeColor: ITheme;
}

Просмотреть файл

@ -1 +0,0 @@
export {PolarQuestionComponent} from './PolarQuestionComponent';

Просмотреть файл

@ -1,142 +0,0 @@
import {StyleSheet} from 'react-native';
import {
Colors,
Fonts,
lineHeight,
relativeFontSize,
relativeHeight,
relativeWidth,
} from '../../../constants';
const styles = StyleSheet.create({
buttonText: {
alignSelf: 'flex-start',
backgroundColor: 'transparent',
color: Colors.LIGHT_BLACK,
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(14),
fontStyle: 'normal',
fontWeight: 'normal',
margin: 20,
},
container: {
flex: 1,
justifyContent: 'center',
},
freeText: {
width: '85%',
height: '60%',
alignSelf: 'center',
backgroundColor: Colors.WHITE,
borderRadius: relativeWidth(24),
justifyContent: 'center',
},
linearGradient: {
borderTopLeftRadius: 10,
borderTopRightRadius: 10,
flexShrink: 1 / 17,
justifyContent: 'center',
},
nextButton: {
width: relativeWidth(7.55),
height: relativeHeight(13.5),
alignSelf: 'flex-end',
backgroundColor: Colors.SUNSHADE,
shadowColor: Colors.BLACK,
shadowOpacity: 0.15,
shadowRadius: relativeWidth(2),
},
nextButtonIcon: {
fontSize: relativeFontSize(45),
},
nextButtonUnselected: {
width: relativeWidth(7.55),
height: relativeHeight(13.5),
alignSelf: 'flex-end',
backgroundColor: Colors.GREY_WHITE,
shadowColor: Colors.BLACK,
shadowOpacity: 0.15,
shadowRadius: relativeWidth(2),
},
optionsText: {
color: Colors.LIGHT_BLACK,
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(14),
fontStyle: 'normal',
fontWeight: 'normal',
},
questionView: {
flexGrow: 4 / 9,
},
optionContainer: {
flexShrink: 4 / 7,
},
paragraph: {
color: Colors.BLACK,
flexShrink: 1,
fontFamily: Fonts.MONTSERRAT_REGULAR,
fontSize: relativeFontSize(16),
fontStyle: 'normal',
fontWeight: '500',
lineHeight: lineHeight(24),
margin: 24,
textAlign: 'left',
},
questionContainer: {
alignSelf: 'center',
flex: 1 / 7,
top: 22,
width: '85%',
},
questionText: {
fontFamily: Fonts.MONTSERRAT_REGULAR,
fontSize: relativeFontSize(16),
fontStyle: 'normal',
fontWeight: '500',
lineHeight: lineHeight(24),
},
nextButtonView: {
flex: 1 / 6,
width: '100%',
},
reportCardView: {
alignSelf: 'center',
backgroundColor: Colors.GREY_WHITE,
borderRadius: 8,
flex: 6 / 8,
width: '90%',
},
reportProgress: {
width: '15%',
height: '44%',
alignSelf: 'flex-end',
backgroundColor: 'transparent',
color: Colors.LIGHT_BLACK,
fontSize: relativeFontSize(16),
position: 'absolute',
},
reportText: {
color: Colors.BLUE_BLACK,
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(14),
fontStyle: 'normal',
fontWeight: 'bold',
lineHeight: lineHeight(24),
},
});
export {styles};

Просмотреть файл

@ -1,201 +0,0 @@
import * as React from 'react';
import {Text, View, TextInput, BackHandler} from 'react-native';
import {styles} from './SingleChoiceComponent.styles';
import {CheckBox, ListItem, Body} from 'native-base';
import {
IButtonState,
IComponentState,
ISingleChoiceCompProps,
} from './SingleChoiceComponent.types';
import {Fragment, ReactElement, useState} from 'react';
import LinearGradient from 'react-native-linear-gradient';
import {Actions} from 'react-native-router-flux';
import {Dispatch} from 'redux';
import {useDispatch, useSelector} from 'react-redux';
import {NavigationScenes} from '../../AppNavigator/AppNavigator.types';
import {FAB} from '../FAB';
import {Colors} from '../../../constants';
export const SingleChoiceComponent = ({
screenData,
linearGradientTheme,
themeColor,
}: ISingleChoiceCompProps): ReactElement => {
const buttonState: Array<IButtonState> = [
{choiceId: 1, checkBoxChosen: false},
{choiceId: 2, checkBoxChosen: false},
{choiceId: 3, checkBoxChosen: false},
{choiceId: 4, checkBoxChosen: false},
];
const componentState: IComponentState = {
currentQuestion: 'quid1',
nextQuestionPointer: '',
nextGotoComponent: undefined,
nextGotoProps: {},
};
const [currentButtonState, setButtonState] = useState(buttonState);
const [currentComponentState, setComponentState] = useState(componentState);
const [freetext, setFreeText] = useState('');
const dispatch: Dispatch = useDispatch();
return (
<Fragment>
<View style={styles.container}>
<View style={styles.questionContainer}>
<Text style={styles.questionText}>
{screenData[currentComponentState.currentQuestion].title}
</Text>
</View>
<View style={styles.reportCardView}>
<LinearGradient
useAngle={true}
angle={90}
locations={[0.25, 1.1]}
colors={linearGradientTheme}
style={styles.linearGradient}>
<Text style={styles.buttonText}>
{screenData[currentComponentState.currentQuestion].CardStatus}
</Text>
<Text style={styles.reportProgress}>
{screenData[currentComponentState.currentQuestion].progress +
' of ' +
Object.keys(screenData).length}
</Text>
</LinearGradient>
<View style={styles.questionView}>
<Text
style={styles.paragraph}
accessible={true}
accessibilityLabel={
screenData[currentComponentState.currentQuestion].description
}
accessibilityRole="text">
{screenData[currentComponentState.currentQuestion].description}
</Text>
</View>
<View style={styles.optionContainer}>
{screenData[currentComponentState.currentQuestion].choice.map(
(item) => {
const {choiceId} = item;
const {label} = item;
const {showFreeText} = item;
const {goto} = screenData[
currentComponentState.currentQuestion
];
const {gotoProps} = screenData[
currentComponentState.currentQuestion
];
currentComponentState.nextGotoComponent = goto;
currentComponentState.nextGotoProps = gotoProps;
return (
<View>
<ListItem key={choiceId} style={{borderBottomWidth: 0}}>
<CheckBox
color={themeColor}
checked={
currentButtonState[choiceId - 1].checkBoxChosen
}
onPress={() => {
const toggleCheckBoxValue = !currentButtonState[
choiceId - 1
].checkBoxChosen;
const newButtonState: Array<IButtonState> = [
...buttonState,
];
newButtonState[
choiceId - 1
].checkBoxChosen = toggleCheckBoxValue;
setButtonState(newButtonState);
}}
style={{borderRadius: 12, marginRight: 30}}
/>
<Body>
<Text style={styles.optionsText}>{label}</Text>
</Body>
</ListItem>
<View>
{currentButtonState[choiceId - 1].checkBoxChosen ==
true && showFreeText == true ? (
<View style={styles.freeText}>
<TextInput
placeholder="Please elaborate"
onChangeText={(freetext) => setFreeText(freetext)}
defaultValue={freetext}
/>
</View>
) : null}
</View>
</View>
);
},
)}
</View>
</View>
<View
style={styles.nextButtonView}
accessible={true}
accessibilityLabel={'Next Button'}
accessibilityLiveRegion="polite"
accessibilityRole="button">
<FAB
onPress={() => {
const currentChoiceId = currentButtonState.find(
(buttonItem) => buttonItem.checkBoxChosen == true,
)?.choiceId;
const newNextQuestion = screenData[
currentComponentState.currentQuestion
].choice.find(
(choiceItem) => choiceItem.choiceId == currentChoiceId,
)?.next;
const newChoiceGoto = screenData[
currentComponentState.currentQuestion
].choice.find(
(choiceItem) => choiceItem.choiceId == currentChoiceId,
)?.choiceGoto;
const newNextGotoComponent = newChoiceGoto
? newChoiceGoto
: currentComponentState.nextGotoComponent;
currentChoiceId
? newNextGotoComponent
? Actions.push(
newNextGotoComponent,
currentComponentState.nextGotoProps,
)
: (setButtonState(buttonState),
setComponentState({
...currentComponentState,
currentQuestion: newNextQuestion
? newNextQuestion
: 'quid1',
nextQuestionPointer: '',
nextGotoComponent: newNextGotoComponent,
nextGotoProps: currentComponentState.nextGotoProps,
}))
: null;
}}
color={
currentButtonState.find(
(buttonItem) => buttonItem.checkBoxChosen == true,
)
? themeColor
: Colors.GREY
}
/>
</View>
</View>
</Fragment>
);
};

Просмотреть файл

@ -1,50 +0,0 @@
import {ElementType} from 'react';
import {Colors} from '../../../constants';
import {NavigationScenes} from '../../AppNavigator/AppNavigator.types';
export interface IContent {
title?: string;
CardStatus?: string;
description?: string;
progress?: number;
image?: ElementType;
video?: ElementType;
choice: Array<IChoices>;
multiChoice: boolean;
goto?: NavigationScenes;
gotoProps?: IGotoProps<IScreenDataType>;
}
export interface IScreenDataType {
[key: string]: IContent;
}
export interface IChoices {
choiceId: number;
label: string;
showFreeText?: boolean;
next: string;
choiceGoto?: NavigationScenes;
}
export interface IButtonState {
choiceId: number;
checkBoxChosen: boolean;
}
export interface IComponentState {
currentQuestion: string;
nextQuestionPointer: string;
nextGotoComponent?: NavigationScenes;
nextGotoProps?: IGotoProps<IScreenDataType>;
}
export type IGotoProps<T> = {
[key: string]: T;
};
export interface ISingleChoiceCompProps {
screenData: IScreenDataType;
themeColor: Colors;
linearGradientTheme: Array<string>; // example = ['rgba(255, 194, 74, 0.43)', 'rgba(255, 119, 21, 0.43)']
}

Просмотреть файл

@ -1 +0,0 @@
export {SingleChoiceComponent} from './SingleChoiceComponent';

Просмотреть файл

@ -1,47 +0,0 @@
import {StyleSheet} from 'react-native';
import {
Colors,
Fonts,
relativeFontSize,
relativeWidth,
relativeHeight,
lineHeight,
} from '../../../constants';
const styles = StyleSheet.create({
markerText: {
fontSize: relativeFontSize(10),
},
markerView: {
flexDirection: 'row',
justifyContent: 'space-between',
marginTop: -relativeHeight(60),
},
optionText: {
fontFamily: Fonts.POPPINS_REGULAR,
fontSize: relativeFontSize(11.5),
lineHeight: lineHeight(17),
textAlign: 'center',
},
optionView: {
flexDirection: 'row',
justifyContent: 'space-between',
width: '100%',
},
sliderContainer: {
alignSelf: 'center',
width: relativeWidth(1.55),
},
track: {
borderRadius: relativeWidth(5),
height: relativeHeight(150),
opacity: 0.6,
},
thumb: {
width: relativeWidth(19),
height: relativeHeight(32),
borderColor: Colors.SUNSHADE,
},
});
export {styles};

Просмотреть файл

@ -1,82 +0,0 @@
import React, {ReactElement, useState, Fragment, useEffect} from 'react';
import {View, Text} from 'react-native';
import {styles} from './SliderOptions.styles';
import {ISliderProps} from './SliderOptions.types';
import Slider from 'react-native-slider';
const SliderOptions = ({
data,
selectedOption = 1,
setSelectedOption,
theme,
}: ISliderProps): ReactElement => {
// This is used to decide the step size and width of the slider.
const [allocationFactor, setAllocationFactor] = useState(0);
const [sliderValue, setSliderValue] = useState(0);
const markersArray = [];
for (let i = 0; i < data.length - 2; i++) {
markersArray.push('|');
}
useEffect(() => {
setAllocationFactor(100 / data.length);
/**
* If Selected Option is 1 from Props then slider value is reset to 0.
* Default value of Selected Option is always 1.
*/
if (selectedOption === 1 || selectedOption > data.length) {
setSliderValue(0);
} else {
setSliderValue((selectedOption - 1) * allocationFactor);
}
}, [data, selectedOption, allocationFactor]);
return (
<Fragment>
<View style={styles.sliderContainer}>
<Slider
thumbStyle={[styles.thumb, {backgroundColor: theme.MAIN_COLOR}]}
trackStyle={[styles.track, {backgroundColor: theme.MAIN_COLOR}]}
minimumValue={0}
maximumValue={100 - allocationFactor}
minimumTrackTintColor={theme.MAIN_COLOR}
step={allocationFactor}
value={sliderValue}
onSlidingComplete={(v: number) => {
setSliderValue(v);
const selectedOptionValue = v / allocationFactor + 1;
setSelectedOption(selectedOptionValue);
}}
/>
<View style={styles.markerView}>
<Text />
{markersArray.map((marker, index) => {
return (
<Text
key={index}
style={[styles.markerText, {color: theme.MAIN_COLOR}]}>
{marker}
</Text>
);
})}
<Text />
</View>
</View>
<View style={styles.optionView}>
{data.map((option, index) => {
return (
<Text
key={index}
style={[styles.optionText, {width: `${allocationFactor}%`}]}>
{option}
</Text>
);
})}
</View>
</Fragment>
);
};
export {SliderOptions};

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше