diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
deleted file mode 100644
index e3bb963fff..0000000000
--- a/.buildkite/pipeline.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-steps:
- - block: ":rocket: Release!"
- prompt: "Fill out the details for release"
- if: 'build.message =~ /^release\$/i'
- fields:
- - text: "VERSION"
- key: "version"
-
- - label: ":hammer_and_pick: Build"
- command:
- - "nvm install"
- - "npm install"
- - "npm run test"
- - "npm run build"
- - "[[ $BUILDKITE_PULL_REQUEST == 'false' ]] && npm run release && npm run demo || true"
- timeout_in_minutes: 15
diff --git a/.bundle/config b/.bundle/config
deleted file mode 100644
index 44d3f461d1..0000000000
--- a/.bundle/config
+++ /dev/null
@@ -1,2 +0,0 @@
-BUNDLE_PATH: "vendor/bundle"
-2 BUNDLE_FORCE_RUBY_PLATFORM: 1
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
deleted file mode 100644
index 06ebb1de7c..0000000000
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-name: Bug Report
-about: Create a report to help us improve
-title: ''
-labels: bug
-assignees: ''
-
----
-
-
-
-## Description
-
-
-
-### Related to
-
-- [ ] Components
-- [ ] Demo
-- [ ] Docs
-- [ ] Typings
-
-### Steps to reproduce
-
-
-
-#### Expected behavior
-
-
-
-#### Actual behavior
-
-
-
-## More Info
-
-### Code snippet
-
-
-
-```
-
-
-```
-
-### Screenshots/Video
-
-
-
-### Environment
-
-
-
-- React Native version:
-- React Native UI Lib version:
-
-### Affected platforms
-
-- [ ] Android
-- [ ] iOS
-- [ ] Web
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 6cadf7c9c4..0000000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-blank_issues_enabled: false
-contact_links:
- - name: Question
- url: https://github.com/wix/react-native-ui-lib/discussions/categories/q-a
- about: Please ask and answer questions here.
- - name: Feature Request
- url: https://github.com/wix/react-native-ui-lib/discussions/categories/ideas
- about: Please submit feature requests here.
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
deleted file mode 100644
index 5114464702..0000000000
--- a/.github/pull_request_template.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## Description
-
-
-## Changelog
-
-
-## Additional info
-
diff --git a/.github/stale.yml b/.github/stale.yml
deleted file mode 100644
index a94074f806..0000000000
--- a/.github/stale.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# Configuration for probot-stale - https://github.com/probot/stale
-
-# Number of days of inactivity before an Issue or Pull Request becomes stale
-daysUntilStale: 60
-
-# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
-# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
-daysUntilClose: 7
-
-# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
-onlyLabels: []
-
-# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
-exemptLabels:
- - pinned
- - WIP
- - "typescript"
-
-# Set to true to ignore issues in a project (defaults to false)
-exemptProjects: true
-
-# Set to true to ignore issues in a milestone (defaults to false)
-exemptMilestones: false
-
-# Set to true to ignore issues with an assignee (defaults to false)
-exemptAssignees: false
-
-# Label to use when marking as stale
-staleLabel: wontfix
-
-# Comment to post when marking as stale. Set to `false` to disable
-markComment: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs. Thank you
- for your contributions.
-
-# Comment to post when removing the stale label.
-# unmarkComment: >
-# Your comment here.
-
-# Comment to post when closing a stale Issue or Pull Request.
-# closeComment: >
-# Your comment here.
-
-# Limit the number of actions per hour, from 1-30. Default is 30
-limitPerRun: 30
-
-# Limit to only `issues` or `pulls`
-# only: issues
-
-# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
-# pulls:
-# daysUntilStale: 30
-# markComment: >
-# This pull request has been automatically marked as stale because it has not had
-# recent activity. It will be closed if no further activity occurs. Thank you
-# for your contributions.
-
-# issues:
-# exemptLabels:
-# - confirmed
diff --git a/.npmignore b/.npmignore
index 178a5650a5..92336c7cbe 100644
--- a/.npmignore
+++ b/.npmignore
@@ -241,6 +241,7 @@ markdowns/
# typings/
# eslint-rules/
scripts/*
+!scripts/postinstall.js
!scripts/prReleaseNotesCommon.js
demo-app.component.js
index.android.js
@@ -254,3 +255,6 @@ index.ios.js
!*.d.ts
!testkit/*.ts
+
+!src/native/v1/*.ts
+!src/native/v2/*.ts
diff --git a/COMMITTERS.md b/COMMITTERS.md
new file mode 100644
index 0000000000..aef6509195
--- /dev/null
+++ b/COMMITTERS.md
@@ -0,0 +1,11 @@
+## Committers列表
+
+### 以下是此项目的committer人员
+
+不区分先后顺序
+
+- [MaDiXin](https://gitee.com/MaDiXin)
+- [xiafeng_xf_admin](https://gitee.com/xiafeng_xf_admin)
+- [ChenLixi](https://gitee.com/Louis-C7)
+- [LinJiacheng](https://gitee.com/LLLLLLin)
+- [ZhengJinshou](https://gitee.com/longziz)
\ No newline at end of file
diff --git a/OAT.XML b/OAT.XML
new file mode 100644
index 0000000000..ce76a544cb
--- /dev/null
+++ b/OAT.XML
@@ -0,0 +1,109 @@
+
+
+
+ LICENSE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.OpenSource b/README.OpenSource
new file mode 100644
index 0000000000..6db87b352c
--- /dev/null
+++ b/README.OpenSource
@@ -0,0 +1,11 @@
+[
+ {
+ "Name": "react-native-ui-lib",
+ "License": "MIT",
+ "License File": "https://github.com/wix/react-native-ui-lib/blob/master/LICENSE",
+ "Version Number": "7.29.1",
+ "Owner" : "xiafeng@huawei.com",
+ "Upstream URL": "https://github.com/wix/react-native-ui-lib",
+ "Description": "react native ui lib"
+ }
+]
\ No newline at end of file
diff --git a/README.md b/README.md
index 5829ebe3e3..55b8dcc0a1 100644
--- a/README.md
+++ b/README.md
@@ -1,137 +1,13 @@
-[](https://stand-with-ukraine.pp.ua)
+# @react-native-oh-tpl/react-native-ui-lib
-
-
-
-UI Toolset & Components Library for React Native
-
-
-
+This project is based on [react-native-ui-lib](https://github.com/wix/react-native-ui-lib)
----
+## Documentation
-[](https://travis-ci.org/wix/react-native-ui-lib)
-[](https://www.npmjs.com/package/react-native-ui-lib)
-[](https://www.npmjs.com/package/react-native-ui-lib)
-
+- [中文](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-ui-lib.md)
+- [English](https://gitee.com/react-native-oh-library/usage-docs/blob/master/en/react-native-ui-lib.md)
-## Links
-- [Docs](https://wix.github.io/react-native-ui-lib/)
-- [Figma library](https://www.figma.com/community/file/1379775092983284111/rnui-library)
-- [Discord Channel](https://discord.gg/2eW4g6Z)
+## License
-
-Download our Expo demo app
-
-(You will need the Expo App)
-or open link in your devices
-[expo ] [exp://exp.host/@vn.chemgio/rnuilib?release-channel=default](exp://exp.host/@vn.chemgio/rnuilib?release-channel=default)
-
-## Installing
-
-See setup instructions [here](https://wix.github.io/react-native-ui-lib/docs/getting-started/setup).
-
-#### New Major Version 6.0
-
-See [breaking changes](https://wix.github.io/react-native-ui-lib/docs/getting-started/v6)
-
-#### For React Native >= 0.60.0
-
-please use `react-native-ui-lib`
-
-#### For React Native < 0.60.0
-
-please use `react-native-ui-lib@^3.0.0`
-
-## Create your own Design System in 3 easy steps
-
-### Step 1
-
-Load your foundations and presets (colors, typography, spacings, etc...)
-
-```js
-// FoundationConfig.js
-
-import {Colors, Typography, Spacings} from 'react-native-ui-lib';
-
-Colors.loadColors({
- primaryColor: '#2364AA',
- secondaryColor: '#81C3D7',
- textColor: '##221D23',
- errorColor: '#E63B2E',
- successColor: '#ADC76F',
- warnColor: '##FF963C'
-});
-
-Typography.loadTypographies({
- heading: {fontSize: 36, fontWeight: '600'},
- subheading: {fontSize: 28, fontWeight: '500'},
- body: {fontSize: 18, fontWeight: '400'}
-});
-
-Spacings.loadSpacings({
- page: 20,
- card: 12,
- gridGutter: 16
-});
-```
-
-### Step 2
-
-Set default configurations to your components
-
-```js
-// ComponentsConfig.js
-
-import {ThemeManager} from 'react-native-ui-lib';
-
-// with plain object
-ThemeManager.setComponentTheme('Card', {
- borderRadius: 8
-});
-
-// with a dynamic function
-ThemeManager.setComponentTheme('Button', (props, context) => {
- // 'square' is not an original Button prop, but a custom prop that can
- // be used to create different variations of buttons in your app
- if (props.square) {
- return {
- borderRadius: 0
- };
- }
-});
-```
-
-### Step 3
-
-Use it all together.
-Your configurations will be applied on uilib components so you can use them easily with [modifiers](https://wix.github.io/react-native-ui-lib/docs/foundation/modifiers).
-
-```jsx
-// MyScreen.js
-
-import React, {Component} from 'react';
-import {View, Text, Card, Button} from 'react-native-ui-lib';
-
-class MyScreen extends Component {
- render() {
- return (
-
-
- My Screen
-
-
- This is an example card
-
-
-
-
- );
- }
-}
-```
-
-## Contributing
- See [Contribution Guide](https://github.com/wix/react-native-ui-lib/blob/master/CONTRIBUTING.md)
-
+This library is licensed under [The MIT License (MIT)](https://github.com/react-native-oh-library/react-native-ui-lib/blob/sig/LICENSE)
diff --git a/android/app/build.gradle b/android/app/build.gradle
deleted file mode 100644
index 96d5d9d552..0000000000
--- a/android/app/build.gradle
+++ /dev/null
@@ -1,170 +0,0 @@
-apply plugin: "com.android.application"
-apply plugin: "com.facebook.react"
-
-import com.android.build.OutputFile
-
-// project.ext.react = [
-// entryFile: "index.js",
-// enableHermes: true, // clean and rebuild if changing
-// ]
-
-/* This is the configuration block to customize your React Native Android app.
- * By default you don't need to apply any configuration, just uncomment the lines you need.
- */
-react {
- /* Folders */
- // The root of your project, i.e. where "package.json" lives. Default is '..'
- root = file("../../")
- // The folder where the react-native NPM package is. Default is ../node_modules/react-native
- reactNativeDir = file("../../node_modules/react-native")
- // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen
- // codegenDir = file("../node_modules/react-native-codegen")
- // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
- // cliFile = file("../node_modules/react-native/cli.js")
- /* Variants */
- // The list of variants to that are debuggable. For those we're going to
- // skip the bundling of the JS bundle and the assets. By default is just 'debug'.
- // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
- // debuggableVariants = ["liteDebug", "prodDebug"]
- /* Bundling */
- // A list containing the node command and its flags. Default is just 'node'.
- // nodeExecutableAndArgs = ["node"]
- //
- // The command to run when bundling. By default is 'bundle'
- // bundleCommand = "ram-bundle"
- //
- // The path to the CLI configuration file. Default is empty.
- // bundleConfig = file(../rn-cli.config.js)
- //
- // The name of the generated asset file containing your JS bundle
- // bundleAssetName = "MyApplication.android.bundle"
- //
- // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
- entryFile = file("index.js")
- //
- // A list of extra flags to pass to the 'bundle' commands.
- // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
- // extraPackagerArgs = []
- /* Hermes Commands */
- // The hermes compiler command to run. By default it is 'hermesc'
- // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
- //
- // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
- // hermesFlags = ["-O", "-output-source-map"]
-}
-
- /* Set this to true to create four separate APKs instead of one,
- * one for each native architecture. This is useful if you don't
- * use App Bundles (https://developer.android.com/guide/app-bundle/)
- * and want to have separate APKs to upload to the Play Store.
- */
-def enableSeparateBuildPerCPUArchitecture = false
-/**
- * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
- */
-def enableProguardInReleaseBuilds = false
-/**
- * The preferred build flavor of JavaScriptCore (JSC)
- *
- * 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:+'
-/* Private function to get the list of Native Architectures you want to build.
- * This reads the value from reactNativeArchitectures in your gradle.properties
- * file and works together with the --active-arch-only flag of react-native run-android.
- */
-def reactNativeArchitectures() {
- def value = project.getProperties().get("reactNativeArchitectures")
- return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
-}
-
-android {
- compileSdkVersion rootProject.ext.compileSdkVersion
- ndkVersion rootProject.ext.ndkVersion
- namespace "com.rnuilib"
-
- defaultConfig {
- applicationId "com.rnuilib"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 1
- versionName "1.0"
- multiDexEnabled true
- }
-
- splits {
- abi {
- reset()
- enable enableSeparateBuildPerCPUArchitecture
- universalApk false // If true, also generate a universal APK
- include (*reactNativeArchitectures())
- }
- }
- 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
- // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
- 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 =
- defaultConfig.versionCode * 1000 + versionCodes.get(abi)
- }
-
- }
- }
-}
-
-dependencies {
- // The version of react-native is set by the React Native Gradle Plugin
- implementation("com.facebook.react:react-android")
- implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0")
-
- debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
- debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
- exclude group:'com.squareup.okhttp3', module:'okhttp'
- }
- debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
-
- implementation project(':react-native-navigation')
- implementation project(':react-native-ui-lib')
- implementation 'com.facebook.fresco:fresco:2.5.0'
- implementation 'com.facebook.fresco:animated-gif:2.5.0'
-
- if (hermesEnabled.toBoolean()) {
- implementation("com.facebook.react:hermes-android")
- } else {
- implementation jscFlavor
- }
-}
-
-apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
diff --git a/android/app/debug.keystore b/android/app/debug.keystore
deleted file mode 100644
index 364e105ed3..0000000000
Binary files a/android/app/debug.keystore and /dev/null differ
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
deleted file mode 100644
index 11b025724a..0000000000
--- a/android/app/proguard-rules.pro
+++ /dev/null
@@ -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:
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index a8b752f342..0000000000
--- a/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/debug/java/com/rnuilib/ReactNativeFlipper.java b/android/app/src/debug/java/com/rnuilib/ReactNativeFlipper.java
deleted file mode 100644
index 01c2c273d9..0000000000
--- a/android/app/src/debug/java/com/rnuilib/ReactNativeFlipper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the LICENSE file in the root
- * directory of this source tree.
- */
-package com.rnuilib;
-
-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.sharedpreferences.SharedPreferencesFlipperPlugin;
-import com.facebook.react.ReactInstanceEventListener;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.bridge.ReactContext;
-import com.facebook.react.modules.network.NetworkingModule;
-import okhttp3.OkHttpClient;
-
-/**
- * Class responsible of loading Flipper inside your React Native application. This is the debug
- * flavor of it. Here you can add your own plugins and customize the Flipper setup.
- */
-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 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 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());
- }
- }
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 4122f36a59..0000000000
--- a/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png
deleted file mode 100644
index 1bf75b2cf3..0000000000
Binary files a/android/app/src/main/ic_launcher-playstore.png and /dev/null differ
diff --git a/android/app/src/main/ic_launcher-web.png b/android/app/src/main/ic_launcher-web.png
deleted file mode 100644
index 80c4892e7a..0000000000
Binary files a/android/app/src/main/ic_launcher-web.png and /dev/null differ
diff --git a/android/app/src/main/java/com/rnuilib/MainActivity.java b/android/app/src/main/java/com/rnuilib/MainActivity.java
deleted file mode 100644
index c6b53a484b..0000000000
--- a/android/app/src/main/java/com/rnuilib/MainActivity.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.rnuilib;
-
-//import com.facebook.react.ReactActivity;
-//import com.facebook.react.ReactActivityDelegate;
-// import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
-// import com.facebook.react.defaults.DefaultReactActivityDelegate;
-import com.reactnativenavigation.NavigationActivity;
-
-public class MainActivity extends NavigationActivity {
-
-// This is needed for the new architecture, RNN needs to support this first (see https://github.com/wix/react-native-navigation/issues/7466)
-// /**
-// * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
-// * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
-// * (aka React 18) with two boolean flags.
-// */
-// @Override
-// protected ReactActivityDelegate createReactActivityDelegate() {
-
-// return new DefaultReactActivityDelegate(
-// this,
-// getMainComponentName(),
-// // If you opted-in for the New Architecture, we enable the Fabric Renderer.
-// DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled
-// // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).
-// DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled
-// );
-}
-
-//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 "rnuilib";
-// }
-//}
-
-
-
diff --git a/android/app/src/main/java/com/rnuilib/MainApplication.java b/android/app/src/main/java/com/rnuilib/MainApplication.java
deleted file mode 100644
index 376c4f39c0..0000000000
--- a/android/app/src/main/java/com/rnuilib/MainApplication.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.rnuilib;
-
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
-import com.facebook.react.defaults.DefaultReactNativeHost;
-import com.facebook.react.bridge.JSIModulePackage;
-
-import com.reactnativenavigation.NavigationApplication;
-import com.reactnativenavigation.react.NavigationReactNativeHost;
-import com.wix.reactnativeuilib.UiLibPackageList;
-
-import java.util.List;
-
-
-public class MainApplication extends NavigationApplication {
-
- private final ReactNativeHost mReactNativeHost = new NavigationReactNativeHost(this) { //DefaultReactNativeHost
- @Override
- protected String getJSMainModuleName() {
- return "demo";
- }
-
- @Override
- public boolean getUseDeveloperSupport() {
- return BuildConfig.DEBUG;
- }
-
- @Override
- protected List getPackages() {
- List packages = new PackageList(this).getPackages();
- packages.addAll(new UiLibPackageList(MainApplication.this).getPackageList());
- return packages;
- }
-
- // private final ReactNativeHost mNewArchitectureNativeHost = new MainApplicationReactNativeHost(this);
- protected boolean isNewArchEnabled() {
- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
- }
- protected Boolean isHermesEnabled() {
- return BuildConfig.IS_HERMES_ENABLED;
- }
- };
-
- @Override
- public ReactNativeHost getReactNativeHost() {
- return mReactNativeHost;
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
-
- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
- // If you opted-in for the New Architecture, we load the native entry point for this app.
- DefaultNewArchitectureEntryPoint.load();
- }
- ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
- }
-}
diff --git a/android/app/src/main/java/com/rnuilib/MainApplicationReactNativeHost.java b/android/app/src/main/java/com/rnuilib/MainApplicationReactNativeHost.java
deleted file mode 100644
index 1a6968902e..0000000000
--- a/android/app/src/main/java/com/rnuilib/MainApplicationReactNativeHost.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.rnuilib;
-import android.app.Application;
-import androidx.annotation.NonNull;
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.JSIModulePackage;
-import com.facebook.react.bridge.JSIModuleProvider;
-import com.facebook.react.bridge.JSIModuleSpec;
-import com.facebook.react.bridge.JSIModuleType;
-import com.facebook.react.bridge.JavaScriptContextHolder;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.UIManager;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.react.fabric.CoreComponentsRegistry;
-import com.facebook.react.fabric.EmptyReactNativeConfig;
-import com.facebook.react.fabric.FabricJSIModuleProvider;
-import com.facebook.react.uimanager.ViewManagerRegistry;
-import com.rnuilib.BuildConfig;
-import java.util.ArrayList;
-import java.util.List;
-/**
- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
- * TurboModule delegates and the Fabric Renderer.
- *
- * Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationReactNativeHost extends ReactNativeHost {
- public MainApplicationReactNativeHost(Application application) {
- super(application);
- }
- @Override
- public boolean getUseDeveloperSupport() {
- return BuildConfig.DEBUG;
- }
- @Override
- protected List getPackages() {
- List packages = new PackageList(this).getPackages();
- // Packages that cannot be autolinked yet can be added manually here, for example:
- // packages.add(new MyReactNativePackage());
- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
- // packages.add(new TurboReactPackage() { ... });
- // If you have custom Fabric Components, their ViewManagers should also be loaded here
- // inside a ReactPackage.
- return packages;
- }
- @Override
- protected String getJSMainModuleName() {
- return "index";
- }
- @NonNull
- @Override
- protected ReactPackageTurboModuleManagerDelegate.Builder
- getReactPackageTurboModuleManagerDelegateBuilder() {
- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
- // for the new architecture and to use TurboModules correctly.
- return new MainApplicationTurboModuleManagerDelegate.Builder();
- }
- @Override
- protected JSIModulePackage getJSIModulePackage() {
- return new JSIModulePackage() {
- @Override
- public List getJSIModules(
- final ReactApplicationContext reactApplicationContext,
- final JavaScriptContextHolder jsContext) {
- final List specs = new ArrayList<>();
- // Here we provide a new JSIModuleSpec that will be responsible of providing the
- // custom Fabric Components.
- specs.add(
- new JSIModuleSpec() {
- @Override
- public JSIModuleType getJSIModuleType() {
- return JSIModuleType.UIManager;
- }
- @Override
- public JSIModuleProvider getJSIModuleProvider() {
- final ComponentFactory componentFactory = new ComponentFactory();
- CoreComponentsRegistry.register(componentFactory);
- // Here we register a Components Registry.
- // The one that is generated with the template contains no components
- // and just provides you the one from React Native core.
- MainComponentsRegistry.register(componentFactory);
- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
- ViewManagerRegistry viewManagerRegistry =
- new ViewManagerRegistry(
- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
- return new FabricJSIModuleProvider(
- reactApplicationContext,
- componentFactory,
- new EmptyReactNativeConfig(),
- viewManagerRegistry);
- }
- });
- return specs;
- }
- };
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/rnuilib/MainApplicationTurboModuleManagerDelegate.java b/android/app/src/main/java/com/rnuilib/MainApplicationTurboModuleManagerDelegate.java
deleted file mode 100644
index 4037e21e8d..0000000000
--- a/android/app/src/main/java/com/rnuilib/MainApplicationTurboModuleManagerDelegate.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.rnuilib;
-
-import com.facebook.jni.HybridData;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.soloader.SoLoader;
-import java.util.List;
-/**
- * Class responsible to load the TurboModules. This class has native methods and needs a
- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/
- * folder for you).
- *
- * Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationTurboModuleManagerDelegate
- extends ReactPackageTurboModuleManagerDelegate {
- private static volatile boolean sIsSoLibraryLoaded;
- protected MainApplicationTurboModuleManagerDelegate(
- ReactApplicationContext reactApplicationContext, List packages) {
- super(reactApplicationContext, packages);
- }
- protected native HybridData initHybrid();
- native boolean canCreateTurboModule(String moduleName);
- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
- protected MainApplicationTurboModuleManagerDelegate build(
- ReactApplicationContext context, List packages) {
- return new MainApplicationTurboModuleManagerDelegate(context, packages);
- }
- }
- @Override
- protected synchronized void maybeLoadOtherSoLibraries() {
- if (!sIsSoLibraryLoaded) {
- // If you change the name of your application .so file in the Android.mk file,
- // make sure you update the name here as well.
- SoLoader.loadLibrary("rnuilib_appmodules");
- sIsSoLibraryLoaded = true;
- }
- }
-}
diff --git a/android/app/src/main/java/com/rnuilib/MainComponentsRegistry.java b/android/app/src/main/java/com/rnuilib/MainComponentsRegistry.java
deleted file mode 100644
index 0361190785..0000000000
--- a/android/app/src/main/java/com/rnuilib/MainComponentsRegistry.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.rnuilib;
-
-import com.facebook.jni.HybridData;
-import com.facebook.proguard.annotations.DoNotStrip;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.soloader.SoLoader;
-/**
- * Class responsible to load the custom Fabric Components. This class has native methods and needs a
- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/
- * folder for you).
- *
- * Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-@DoNotStrip
-public class MainComponentsRegistry {
- static {
- SoLoader.loadLibrary("fabricjni");
- }
- @DoNotStrip private final HybridData mHybridData;
- @DoNotStrip
- private native HybridData initHybrid(ComponentFactory componentFactory);
- @DoNotStrip
- private MainComponentsRegistry(ComponentFactory componentFactory) {
- mHybridData = initHybrid(componentFactory);
- }
- @DoNotStrip
- public static MainComponentsRegistry register(ComponentFactory componentFactory) {
- return new MainComponentsRegistry(componentFactory);
- }
-}
diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index ca3826a46c..0000000000
--- a/android/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml
deleted file mode 100644
index a902b2a3a6..0000000000
--- a/android/app/src/main/res/drawable/rn_edit_text_material.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index c4a603d4cc..0000000000
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index c4a603d4cc..0000000000
--- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index ef2adddcae..0000000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index 0dfe76be09..0000000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index 1f63abc41a..0000000000
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index e73a68fb50..0000000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 1a6ea551af..0000000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index a7dbafab03..0000000000
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 578642d390..0000000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 5b7a00ee50..0000000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 8aa2baaccc..0000000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 29f589dde2..0000000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 866d44ad44..0000000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index b442fb5870..0000000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 1e8e558e11..0000000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 571d815d86..0000000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index 72fb0f05a5..0000000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index 9229ec00ee..0000000000
--- a/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- R N U I L I B
-
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index f988ecc34a..0000000000
--- a/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
diff --git a/android/app/src/release/java/com/rnuilib/ReactNativeFlipper.java b/android/app/src/release/java/com/rnuilib/ReactNativeFlipper.java
deleted file mode 100644
index 86fb652beb..0000000000
--- a/android/app/src/release/java/com/rnuilib/ReactNativeFlipper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- *
This source code is licensed under the MIT license found in the LICENSE file in the root
- * directory of this source tree.
- */
-package com.rnuilib;
-import android.content.Context;
-import com.facebook.react.ReactInstanceManager;
-/**
- * Class responsible of loading Flipper inside your React Native application. This is the release
- * flavor of it so it's empty as we don't want to load Flipper.
- */
-public class ReactNativeFlipper {
- public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
- // Do nothing as we don't want to initialize Flipper on Release.
- }
-}
diff --git a/android/build.gradle b/android/build.gradle
deleted file mode 100644
index 5a7e676638..0000000000
--- a/android/build.gradle
+++ /dev/null
@@ -1,44 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
- ext {
- buildToolsVersion = "33.0.0"
- minSdkVersion = 21
- compileSdkVersion = 33
- targetSdkVersion = 33
- RNNKotlinVersion = "1.8.0"
- // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
- ndkVersion = "23.1.7779620"
- }
- repositories {
- mavenLocal()
- mavenCentral()
- google()
- }
- dependencies {
- classpath("com.android.tools.build:gradle:7.3.1")
- classpath("com.facebook.react:react-native-gradle-plugin")
-
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$RNNKotlinVersion"
- }
-}
-
-// allprojects {
-// repositories {
-// exclusiveContent {
-// // We get React Native's Android binaries exclusively through npm,
-// // from a local Maven repo inside node_modules/react-native/.
-// // (The use of exclusiveContent prevents looking elsewhere like Maven Central
-// // and potentially getting a wrong version.)
-// filter {
-// includeGroup "com.facebook.react"
-// }
-// forRepository {
-// maven {
-// url "$rootDir/../node_modules/react-native/android"
-// }
-// }
-// }
-// jcenter()
-// }
-// }
diff --git a/android/gradle.properties b/android/gradle.properties
deleted file mode 100644
index c4887c5482..0000000000
--- a/android/gradle.properties
+++ /dev/null
@@ -1,38 +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: -Xmx512m -XX:MaxMetaspaceSize=256m
-org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
-
-# 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
-
-android.useAndroidX=true
-android.enableJetifier=true
-
-# Version of flipper SDK to use with React Native
-FLIPPER_VERSION=0.125.0
-# Use this property to specify which architecture you want to build.
-# You can also override it from the CLI using
-# ./gradlew -PreactNativeArchitectures=x86_64
-reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
-# Use this property to enable support to the new architecture.
-# This will allow you to use TurboModules and the Fabric render in
-# your application. You should enable this flag either if you want
-# to write custom TurboModules/Fabric components OR use libraries that
-# are providing them.
-newArchEnabled=false
-
-# Use this property to enable or disable the Hermes JS engine.
-# If set to false, you will be using JSC instead.
-hermesEnabled=true
\ No newline at end of file
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 5c2d1cf016..0000000000
Binary files a/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 8fad3f5a98..0000000000
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/android/gradlew b/android/gradlew
deleted file mode 100755
index 4a403d1bc4..0000000000
--- a/android/gradlew
+++ /dev/null
@@ -1,226 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright © 2015-2021 the original 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 POSIX generated by Gradle.
-#
-# Important for running:
-#
-# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
-# noncompliant, but you have some other compliant shell such as ksh or
-# bash, then to run this script, type that shell name before the whole
-# command line, like:
-#
-# ksh Gradle
-#
-# Busybox and similar reduced shells will NOT work, because this script
-# requires all of these POSIX shell features:
-# * functions;
-# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
-# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
-# * compound commands having a testable exit status, especially «case»;
-# * various built-in commands including «command», «set», and «ulimit».
-#
-# Important for patching:
-#
-# (2) This script targets any POSIX shell, so it avoids extensions provided
-# by Bash, Ksh, etc; in particular arrays are avoided.
-#
-# The "traditional" practice of packing multiple parameters into a
-# space-separated string is a well documented source of bugs and security
-# problems, so this is (mostly) avoided, by progressively accumulating
-# options in "$@", and eventually passing that to Java.
-#
-# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
-# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
-# see the in-line comments for details.
-#
-# There are tweaks for specific operating systems such as AIX, CygWin,
-# Darwin, MinGW, and NonStop.
-#
-# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
-# within the Gradle project.
-#
-# You can find Gradle at https://github.com/gradle/gradle/.
-#
-##############################################################################
-
-# Attempt to set APP_HOME
-
-# Resolve links: $0 may be a link
-app_path=$0
-# Need this for daisy-chained symlinks.
-while
- APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
- [ -h "$app_path" ]
-do
- ls=$( ls -ld "$app_path" )
- link=${ls#*' -> '}
- case $link in #(
- /*) app_path=$link ;; #(
- *) app_path=$APP_HOME$link ;;
- esac
-done
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
-APP_BASE_NAME=${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 "$*"
-} >&2
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-} >&2
-
-# 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 ;; #(
- MSYS* | 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" && ! "$darwin" && ! "$nonstop" ; then
- case $MAX_FD in #(
- max*)
- MAX_FD=$( ulimit -H -n ) ||
- warn "Could not query maximum file descriptor limit"
- esac
- case $MAX_FD in #(
- '' | soft) :;; #(
- *)
- ulimit -n "$MAX_FD" ||
- warn "Could not set maximum file descriptor limit to $MAX_FD"
- esac
-fi
-
-# Collect all arguments for the java command, stacking in reverse order:
-# * args from the command line
-# * the main class name
-# * -classpath
-# * -D...appname settings
-# * --module-path (only if needed)
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if "$cygwin" || "$msys" ; then
- APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
- JAVACMD=$( cygpath --unix "$JAVACMD" )
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- for arg do
- if
- case $arg in #(
- -*) false ;; # don't mess with options #(
- /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
- [ -e "$t" ] ;; #(
- *) false ;;
- esac
- then
- arg=$( cygpath --path --ignore --mixed "$arg" )
- fi
- # Roll the args list around exactly as many times as the number of
- # args, so each arg winds up back in the position where it started, but
- # possibly modified.
- #
- # NB: a `for` loop captures its iteration list before it begins, so
- # changing the positional parameters here affects neither the number of
- # iterations, nor the values presented in `arg`.
- shift # remove old arg
- set -- "$@" "$arg" # push replacement arg
- done
-fi
-
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
-set -- \
- "-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
- "$@"
-# Use "xargs" to parse quoted args.
-#
-# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
-#
-# In Bash we could simply go:
-#
-# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
-# set -- "${ARGS[@]}" "$@"
-#
-# but POSIX shell has neither arrays nor command substitution, so instead we
-# post-process each arg (as a line of input to sed) to backslash-escape any
-# character that might be a shell metacharacter, then use eval to reverse
-# that process (while maintaining the separation between arguments), and wrap
-# the whole thing up as a single "set" statement.
-#
-# This will of course break if any of these variables contains a newline or
-# an unmatched quote.
-#
-eval "set -- $(
- printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
- xargs -n1 |
- sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
- tr '\n' ' '
- )" '"$@"'
-
-exec "$JAVACMD" "$@"
diff --git a/android/settings.gradle b/android/settings.gradle
deleted file mode 100644
index a397a5f31e..0000000000
--- a/android/settings.gradle
+++ /dev/null
@@ -1,7 +0,0 @@
-rootProject.name = 'rnuilib'
-apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
-include ':app'
-includeBuild('../node_modules/react-native-gradle-plugin')
-
-include ':react-native-ui-lib'
-project(':react-native-ui-lib').projectDir = new File(rootProject.projectDir, '../lib/android')
diff --git a/demo/.npmignore b/demo/.npmignore
deleted file mode 100644
index f251868c86..0000000000
--- a/demo/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules/
-.npmignore
-showcase/
diff --git a/demo/package.json b/demo/package.json
deleted file mode 100644
index 9d67ce93a9..0000000000
--- a/demo/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "unicorn-demo-app",
- "version": "1.1.16",
- "main": "src/index.js",
- "author": "Ethan Sharabi ",
- "license": "MIT",
- "publishConfig": {
- "registry": "https://registry.npmjs.org/"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wix/react-native-ui-lib.git"
- },
- "scripts": {
- "release": "node ./scripts/release.js",
- "demoRelease": "node ./scripts/demoRelease.js"
- },
- "dependencies": {
- "light-date": "^1.2.0"
- },
- "devDependencies": {
- "react-native-ui-lib": "7.1.0",
- "shell-utils": "^1.0.10"
- },
- "peerDependencies": {
- "react": "^18.2.0",
- "react-native": "^0.71.2",
- "react-native-ui-lib": "*",
- "semver": "^5.5.0"
- }
-}
diff --git a/demo/scripts/.npmrc b/demo/scripts/.npmrc
deleted file mode 100644
index 1727810128..0000000000
--- a/demo/scripts/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-email=${NPM_EMAIL}
-//registry.npmjs.org/:_authToken=${NPM_TOKEN}
diff --git a/demo/scripts/demoRelease.js b/demo/scripts/demoRelease.js
deleted file mode 100644
index 56e1768c10..0000000000
--- a/demo/scripts/demoRelease.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const exec = require('shell-utils').exec;
-const semver = require('semver');
-const _ = require('lodash');
-const p = require('path');
-const cp = require('child_process');
-
-// Workaround JS
-
-const isRelease = process.env.BUILDKITE_MESSAGE.match(/^release$/i);
-let VERSION;
-if (isRelease) {
- VERSION = cp.execSync(`buildkite-agent meta-data get version`).toString();
-}
-
-const VERSION_TAG = isRelease ? 'latest' : 'snapshot';
-const VERSION_INC = 'patch';
-
-function run() {
- if (!validateEnv()) {
- return;
- }
- createNpmRc();
- versionTagAndPublish();
-}
-
-function validateEnv() {
- if (!process.env.CI) {
- throw new Error('releasing is only available from CI');
- }
- return true;
-}
-
-function createNpmRc() {
- exec.execSync('rm -f package-lock.json');
- const npmrcPath = p.resolve(`${__dirname}/.npmrc`);
- exec.execSync(`cp -rf ${npmrcPath} .`);
-}
-
-function versionTagAndPublish() {
- const currentPublished = findCurrentPublishedVersion();
- console.log(`current published version: ${currentPublished}`);
-
- const version = isRelease ? VERSION : `${currentPublished}-snapshot.${process.env.BUILDKITE_BUILD_NUMBER}`;
- console.log(`Publishing version: ${version}`);
-
- tryPublishAndTag(version);
-}
-
-function findCurrentPublishedVersion() {
- return exec.execSyncRead(`npm view ${process.env.npm_package_name} dist-tags.latest`);
-}
-
-function tryPublishAndTag(version) {
- let theCandidate = version;
- for (let retry = 0; retry < 5; retry++) {
- try {
- tagAndPublish(theCandidate);
- console.log(`Released ${theCandidate}`);
- return;
- } catch (err) {
- const alreadyPublished = _.includes(err.toString(), 'You cannot publish over the previously published version');
- if (!alreadyPublished) {
- throw err;
- }
- console.log(`previously published. retrying with increased ${VERSION_INC}...`);
- theCandidate = semver.inc(theCandidate, VERSION_INC);
- }
- }
-}
-
-function tagAndPublish(newVersion) {
- console.log(`trying to publish ${newVersion}...`);
- exec.execSync(`npm --no-git-tag-version version ${newVersion}`);
- exec.execSync(`npm publish --tag ${VERSION_TAG}`);
-}
-
-run();
diff --git a/demo/scripts/release.js b/demo/scripts/release.js
deleted file mode 100644
index b951f6e505..0000000000
--- a/demo/scripts/release.js
+++ /dev/null
@@ -1,67 +0,0 @@
-const cp = require('child_process');
-const p = require('path');
-const semver = require('semver');
-
-function execSync(cmd) {
- cp.execSync(cmd, { stdio: ['inherit', 'inherit', 'inherit'] });
-}
-
-function execSyncRead(cmd) {
- return String(cp.execSync(cmd, { stdio: ['inherit', 'pipe', 'inherit'] })).trim();
-}
-
-function execSyncSilently(cmd) {
- cp.execSync(cmd, { stdio: ['ignore', 'ignore', 'ignore'] });
-}
-
-function validateEnv() {
- if (!process.env.CI || !process.env.TRAVIS) {
- throw new Error('releasing is only available from Travis CI');
- }
-
- if (process.env.TRAVIS_BRANCH !== 'master') {
- console.error(`not publishing on branch ${process.env.TRAVIS_BRANCH}`);
- return false;
- }
-
- if (process.env.TRAVIS_PULL_REQUEST !== 'false') {
- console.error(`not publishing as triggered by pull request ${process.env.TRAVIS_PULL_REQUEST}`);
- return false;
- }
-
- return true;
-}
-
-function calcNewVersion() {
- const latestVersion = execSyncRead(`npm view ${process.env.npm_package_name}@latest version`);
- console.log(`latest version is: ${latestVersion}`);
- console.log(`package version is: ${process.env.npm_package_version}`);
- if (semver.gt(process.env.npm_package_version, latestVersion)) {
- return semver.inc(process.env.npm_package_version, 'patch');
- } else {
- return semver.inc(latestVersion, 'patch');
- }
-}
-
-function copyNpmRc() {
- execSync('rm -f package-lock.json');
- const npmrcPath = p.resolve(`${__dirname}/.npmrc`);
- execSync(`cp -rf ${npmrcPath} .`);
-}
-
-function tagAndPublish(newVersion) {
- console.log(`new version is: ${newVersion}`);
- execSync(`npm version ${newVersion} -m "v${newVersion} [ci skip]"`);
- execSync('npm publish --tag latest');
- execSyncSilently('git push deploy --tags');
-}
-
-function run() {
- if (!validateEnv()) {
- return;
- }
- copyNpmRc();
- tagAndPublish(calcNewVersion());
-}
-
-run();
diff --git a/demo/showcase/ActionBar/ActionBar.gif b/demo/showcase/ActionBar/ActionBar.gif
deleted file mode 100644
index a42a13da6c..0000000000
Binary files a/demo/showcase/ActionBar/ActionBar.gif and /dev/null differ
diff --git a/demo/showcase/Avatar/Avarat_1.png b/demo/showcase/Avatar/Avarat_1.png
deleted file mode 100644
index a788826ec6..0000000000
Binary files a/demo/showcase/Avatar/Avarat_1.png and /dev/null differ
diff --git a/demo/showcase/Avatar/Avarat_2.png b/demo/showcase/Avatar/Avarat_2.png
deleted file mode 100644
index 3db8dae5b0..0000000000
Binary files a/demo/showcase/Avatar/Avarat_2.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Animated.gif b/demo/showcase/Button/Button Animated.gif
deleted file mode 100644
index 033f8eb6dc..0000000000
Binary files a/demo/showcase/Button/Button Animated.gif and /dev/null differ
diff --git a/demo/showcase/Button/Button Corners.png b/demo/showcase/Button/Button Corners.png
deleted file mode 100644
index 0f789c767e..0000000000
Binary files a/demo/showcase/Button/Button Corners.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Custom.png b/demo/showcase/Button/Button Custom.png
deleted file mode 100644
index b5a59b3cb4..0000000000
Binary files a/demo/showcase/Button/Button Custom.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Full.png b/demo/showcase/Button/Button Full.png
deleted file mode 100644
index 2be63358d3..0000000000
Binary files a/demo/showcase/Button/Button Full.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Inspirations.png b/demo/showcase/Button/Button Inspirations.png
deleted file mode 100644
index b911d9eca2..0000000000
Binary files a/demo/showcase/Button/Button Inspirations.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Outlines.png b/demo/showcase/Button/Button Outlines.png
deleted file mode 100644
index 16ba3f8565..0000000000
Binary files a/demo/showcase/Button/Button Outlines.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Round.png b/demo/showcase/Button/Button Round.png
deleted file mode 100644
index 819acff756..0000000000
Binary files a/demo/showcase/Button/Button Round.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Sizes.png b/demo/showcase/Button/Button Sizes.png
deleted file mode 100644
index d3e3652da0..0000000000
Binary files a/demo/showcase/Button/Button Sizes.png and /dev/null differ
diff --git a/demo/showcase/Button/Button Typographies.png b/demo/showcase/Button/Button Typographies.png
deleted file mode 100644
index e95ee48848..0000000000
Binary files a/demo/showcase/Button/Button Typographies.png and /dev/null differ
diff --git a/demo/showcase/Card/Card_Selecteable.gif b/demo/showcase/Card/Card_Selecteable.gif
deleted file mode 100644
index 3ed959a7dc..0000000000
Binary files a/demo/showcase/Card/Card_Selecteable.gif and /dev/null differ
diff --git a/demo/showcase/Card/Cards_01.png b/demo/showcase/Card/Cards_01.png
deleted file mode 100644
index 479f20ee6f..0000000000
Binary files a/demo/showcase/Card/Cards_01.png and /dev/null differ
diff --git a/demo/showcase/Card/Cards_02.png b/demo/showcase/Card/Cards_02.png
deleted file mode 100644
index 47c1f80cd6..0000000000
Binary files a/demo/showcase/Card/Cards_02.png and /dev/null differ
diff --git a/demo/showcase/Card/Cards_03.png b/demo/showcase/Card/Cards_03.png
deleted file mode 100644
index 2780497429..0000000000
Binary files a/demo/showcase/Card/Cards_03.png and /dev/null differ
diff --git a/demo/showcase/Card/Cards_activeScale.gif b/demo/showcase/Card/Cards_activeScale.gif
deleted file mode 100644
index 2e34c49e08..0000000000
Binary files a/demo/showcase/Card/Cards_activeScale.gif and /dev/null differ
diff --git a/demo/showcase/Checkbox/Checkbox.gif b/demo/showcase/Checkbox/Checkbox.gif
deleted file mode 100644
index 03be43307a..0000000000
Binary files a/demo/showcase/Checkbox/Checkbox.gif and /dev/null differ
diff --git a/demo/showcase/ChipsInput/ChipsInput.gif b/demo/showcase/ChipsInput/ChipsInput.gif
deleted file mode 100644
index 48d16130fa..0000000000
Binary files a/demo/showcase/ChipsInput/ChipsInput.gif and /dev/null differ
diff --git a/demo/showcase/ColorPalette/ColorPalette.gif b/demo/showcase/ColorPalette/ColorPalette.gif
deleted file mode 100644
index e4ac6a8c63..0000000000
Binary files a/demo/showcase/ColorPalette/ColorPalette.gif and /dev/null differ
diff --git a/demo/showcase/ColorPicker/ColorPicker.gif b/demo/showcase/ColorPicker/ColorPicker.gif
deleted file mode 100644
index 5d7982a316..0000000000
Binary files a/demo/showcase/ColorPicker/ColorPicker.gif and /dev/null differ
diff --git a/demo/showcase/ColorSliderGroup/ColorSliderGroup.gif b/demo/showcase/ColorSliderGroup/ColorSliderGroup.gif
deleted file mode 100644
index fac92a9a3e..0000000000
Binary files a/demo/showcase/ColorSliderGroup/ColorSliderGroup.gif and /dev/null differ
diff --git a/demo/showcase/DateTimePicker/DateTimePicker_Android.gif b/demo/showcase/DateTimePicker/DateTimePicker_Android.gif
deleted file mode 100644
index 38c20001d7..0000000000
Binary files a/demo/showcase/DateTimePicker/DateTimePicker_Android.gif and /dev/null differ
diff --git a/demo/showcase/DateTimePicker/DateTimePicker_iOS.gif b/demo/showcase/DateTimePicker/DateTimePicker_iOS.gif
deleted file mode 100644
index fe5d7f8f6b..0000000000
Binary files a/demo/showcase/DateTimePicker/DateTimePicker_iOS.gif and /dev/null differ
diff --git a/demo/showcase/Dialog/Dialog.gif b/demo/showcase/Dialog/Dialog.gif
deleted file mode 100644
index 8c9bd5610a..0000000000
Binary files a/demo/showcase/Dialog/Dialog.gif and /dev/null differ
diff --git a/demo/showcase/Drawer/Drawer.gif b/demo/showcase/Drawer/Drawer.gif
deleted file mode 100644
index 715a9cb706..0000000000
Binary files a/demo/showcase/Drawer/Drawer.gif and /dev/null differ
diff --git a/demo/showcase/ExpandableSection/ExpandableSection.gif b/demo/showcase/ExpandableSection/ExpandableSection.gif
deleted file mode 100644
index 4bdde5efe2..0000000000
Binary files a/demo/showcase/ExpandableSection/ExpandableSection.gif and /dev/null differ
diff --git a/demo/showcase/Fader/Fader.gif b/demo/showcase/Fader/Fader.gif
deleted file mode 100644
index 970d38225a..0000000000
Binary files a/demo/showcase/Fader/Fader.gif and /dev/null differ
diff --git a/demo/showcase/FeatureHighlight/FeatureHighlight.gif b/demo/showcase/FeatureHighlight/FeatureHighlight.gif
deleted file mode 100644
index 3668aabbfa..0000000000
Binary files a/demo/showcase/FeatureHighlight/FeatureHighlight.gif and /dev/null differ
diff --git a/demo/showcase/FloatingButton/FloatingButton.gif b/demo/showcase/FloatingButton/FloatingButton.gif
deleted file mode 100644
index 524cf34bd3..0000000000
Binary files a/demo/showcase/FloatingButton/FloatingButton.gif and /dev/null differ
diff --git a/demo/showcase/GradientSlider/GradientSlider.gif b/demo/showcase/GradientSlider/GradientSlider.gif
deleted file mode 100644
index 9cdf724bab..0000000000
Binary files a/demo/showcase/GradientSlider/GradientSlider.gif and /dev/null differ
diff --git a/demo/showcase/Hint/Hint.gif b/demo/showcase/Hint/Hint.gif
deleted file mode 100644
index c888f1b941..0000000000
Binary files a/demo/showcase/Hint/Hint.gif and /dev/null differ
diff --git a/demo/showcase/Incubator.TextField/CharCounter.gif b/demo/showcase/Incubator.TextField/CharCounter.gif
deleted file mode 100644
index 6bd50dcca6..0000000000
Binary files a/demo/showcase/Incubator.TextField/CharCounter.gif and /dev/null differ
diff --git a/demo/showcase/Incubator.TextField/ColorByState.gif b/demo/showcase/Incubator.TextField/ColorByState.gif
deleted file mode 100644
index 142104c50f..0000000000
Binary files a/demo/showcase/Incubator.TextField/ColorByState.gif and /dev/null differ
diff --git a/demo/showcase/Incubator.TextField/FloatingPlaceholder.gif b/demo/showcase/Incubator.TextField/FloatingPlaceholder.gif
deleted file mode 100644
index 2e90370eef..0000000000
Binary files a/demo/showcase/Incubator.TextField/FloatingPlaceholder.gif and /dev/null differ
diff --git a/demo/showcase/Incubator.TextField/Hint.gif b/demo/showcase/Incubator.TextField/Hint.gif
deleted file mode 100644
index ee24d1f2de..0000000000
Binary files a/demo/showcase/Incubator.TextField/Hint.gif and /dev/null differ
diff --git a/demo/showcase/Incubator.TextField/Validation.gif b/demo/showcase/Incubator.TextField/Validation.gif
deleted file mode 100644
index c3c52e9f20..0000000000
Binary files a/demo/showcase/Incubator.TextField/Validation.gif and /dev/null differ
diff --git a/demo/showcase/KeyboardAccessoryView/KeyboardAccessoryView.gif b/demo/showcase/KeyboardAccessoryView/KeyboardAccessoryView.gif
deleted file mode 100644
index 3d49b369e1..0000000000
Binary files a/demo/showcase/KeyboardAccessoryView/KeyboardAccessoryView.gif and /dev/null differ
diff --git a/demo/showcase/KeyboardTrackingView/KeyboardTrackingView.gif b/demo/showcase/KeyboardTrackingView/KeyboardTrackingView.gif
deleted file mode 100644
index aa375bf015..0000000000
Binary files a/demo/showcase/KeyboardTrackingView/KeyboardTrackingView.gif and /dev/null differ
diff --git a/demo/showcase/PanDismissibleView/PanDismissibleView.gif b/demo/showcase/PanDismissibleView/PanDismissibleView.gif
deleted file mode 100644
index d4e162247f..0000000000
Binary files a/demo/showcase/PanDismissibleView/PanDismissibleView.gif and /dev/null differ
diff --git a/demo/showcase/PanListenerView/PanListenerView.gif b/demo/showcase/PanListenerView/PanListenerView.gif
deleted file mode 100644
index 81df89f6e4..0000000000
Binary files a/demo/showcase/PanListenerView/PanListenerView.gif and /dev/null differ
diff --git a/demo/showcase/PanResponderView/PanResponderView.gif b/demo/showcase/PanResponderView/PanResponderView.gif
deleted file mode 100644
index 4dfdbf7bc6..0000000000
Binary files a/demo/showcase/PanResponderView/PanResponderView.gif and /dev/null differ
diff --git a/demo/showcase/Picker/CustomPicker.gif b/demo/showcase/Picker/CustomPicker.gif
deleted file mode 100644
index ad2ef211d2..0000000000
Binary files a/demo/showcase/Picker/CustomPicker.gif and /dev/null differ
diff --git a/demo/showcase/Picker/Default.gif b/demo/showcase/Picker/Default.gif
deleted file mode 100644
index 8d145fe0b7..0000000000
Binary files a/demo/showcase/Picker/Default.gif and /dev/null differ
diff --git a/demo/showcase/Picker/DialogPicker.gif b/demo/showcase/Picker/DialogPicker.gif
deleted file mode 100644
index 0bd61df28b..0000000000
Binary files a/demo/showcase/Picker/DialogPicker.gif and /dev/null differ
diff --git a/demo/showcase/Picker/MultiPicker.gif b/demo/showcase/Picker/MultiPicker.gif
deleted file mode 100644
index 6492c248a2..0000000000
Binary files a/demo/showcase/Picker/MultiPicker.gif and /dev/null differ
diff --git a/demo/showcase/Picker/NativePicker.gif b/demo/showcase/Picker/NativePicker.gif
deleted file mode 100644
index 5b05b243c4..0000000000
Binary files a/demo/showcase/Picker/NativePicker.gif and /dev/null differ
diff --git a/demo/showcase/RadioButton/Alignment.gif b/demo/showcase/RadioButton/Alignment.gif
deleted file mode 100644
index 95214d168e..0000000000
Binary files a/demo/showcase/RadioButton/Alignment.gif and /dev/null differ
diff --git a/demo/showcase/RadioButton/Custom.gif b/demo/showcase/RadioButton/Custom.gif
deleted file mode 100644
index 2dadfd9027..0000000000
Binary files a/demo/showcase/RadioButton/Custom.gif and /dev/null differ
diff --git a/demo/showcase/RadioButton/Default.gif b/demo/showcase/RadioButton/Default.gif
deleted file mode 100644
index bec5a60ca1..0000000000
Binary files a/demo/showcase/RadioButton/Default.gif and /dev/null differ
diff --git a/demo/showcase/RadioButton/Individual.png b/demo/showcase/RadioButton/Individual.png
deleted file mode 100644
index 798195c19b..0000000000
Binary files a/demo/showcase/RadioButton/Individual.png and /dev/null differ
diff --git a/demo/showcase/SectionsWheelPicker/SectionsWheelPicker.gif b/demo/showcase/SectionsWheelPicker/SectionsWheelPicker.gif
deleted file mode 100644
index 453d866d99..0000000000
Binary files a/demo/showcase/SectionsWheelPicker/SectionsWheelPicker.gif and /dev/null differ
diff --git a/demo/showcase/SegmentedControl/SegmentedControl.gif b/demo/showcase/SegmentedControl/SegmentedControl.gif
deleted file mode 100644
index ef466b73a5..0000000000
Binary files a/demo/showcase/SegmentedControl/SegmentedControl.gif and /dev/null differ
diff --git a/demo/showcase/Skeleton/Skeleton.gif b/demo/showcase/Skeleton/Skeleton.gif
deleted file mode 100644
index fbe6da1a5c..0000000000
Binary files a/demo/showcase/Skeleton/Skeleton.gif and /dev/null differ
diff --git a/demo/showcase/Slider/Slider.gif b/demo/showcase/Slider/Slider.gif
deleted file mode 100644
index 7e98847a44..0000000000
Binary files a/demo/showcase/Slider/Slider.gif and /dev/null differ
diff --git a/demo/showcase/StackAggregator/StackAggregator.gif b/demo/showcase/StackAggregator/StackAggregator.gif
deleted file mode 100644
index f574221c49..0000000000
Binary files a/demo/showcase/StackAggregator/StackAggregator.gif and /dev/null differ
diff --git a/demo/showcase/Stepper/Stepper.gif b/demo/showcase/Stepper/Stepper.gif
deleted file mode 100644
index da48e4cb1a..0000000000
Binary files a/demo/showcase/Stepper/Stepper.gif and /dev/null differ
diff --git a/demo/showcase/Switch/Switch.gif b/demo/showcase/Switch/Switch.gif
deleted file mode 100644
index 0966c714e9..0000000000
Binary files a/demo/showcase/Switch/Switch.gif and /dev/null differ
diff --git a/demo/showcase/TabController/CenterSelected.gif b/demo/showcase/TabController/CenterSelected.gif
deleted file mode 100644
index 7edf143539..0000000000
Binary files a/demo/showcase/TabController/CenterSelected.gif and /dev/null differ
diff --git a/demo/showcase/TabController/Default.gif b/demo/showcase/TabController/Default.gif
deleted file mode 100644
index 194d916b43..0000000000
Binary files a/demo/showcase/TabController/Default.gif and /dev/null differ
diff --git a/demo/showcase/TabController/PageCarousel.gif b/demo/showcase/TabController/PageCarousel.gif
deleted file mode 100644
index b6a4a910ba..0000000000
Binary files a/demo/showcase/TabController/PageCarousel.gif and /dev/null differ
diff --git a/demo/showcase/Text/Highlights.png b/demo/showcase/Text/Highlights.png
deleted file mode 100644
index aceb8d336b..0000000000
Binary files a/demo/showcase/Text/Highlights.png and /dev/null differ
diff --git a/demo/showcase/Text/Modifiers.png b/demo/showcase/Text/Modifiers.png
deleted file mode 100644
index 3f106b3c8e..0000000000
Binary files a/demo/showcase/Text/Modifiers.png and /dev/null differ
diff --git a/demo/showcase/Text/Transformation.png b/demo/showcase/Text/Transformation.png
deleted file mode 100644
index 4a2c71c469..0000000000
Binary files a/demo/showcase/Text/Transformation.png and /dev/null differ
diff --git a/demo/showcase/Toast/Toast.gif b/demo/showcase/Toast/Toast.gif
deleted file mode 100644
index 969225a266..0000000000
Binary files a/demo/showcase/Toast/Toast.gif and /dev/null differ
diff --git a/demo/showcase/Toast/ToastAttachment.gif b/demo/showcase/Toast/ToastAttachment.gif
deleted file mode 100644
index f16632a436..0000000000
Binary files a/demo/showcase/Toast/ToastAttachment.gif and /dev/null differ
diff --git a/demo/showcase/Wizard/Wizard.gif b/demo/showcase/Wizard/Wizard.gif
deleted file mode 100644
index 97556610ef..0000000000
Binary files a/demo/showcase/Wizard/Wizard.gif and /dev/null differ
diff --git a/demo/showcase/Wizard/WizardPresets.png b/demo/showcase/Wizard/WizardPresets.png
deleted file mode 100644
index face70c3ea..0000000000
Binary files a/demo/showcase/Wizard/WizardPresets.png and /dev/null differ
diff --git a/demo/src/assets/animations/HamburgerArrow.json b/demo/src/assets/animations/HamburgerArrow.json
deleted file mode 100755
index 886cc5756b..0000000000
--- a/demo/src/assets/animations/HamburgerArrow.json
+++ /dev/null
@@ -1 +0,0 @@
-{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":3,"nm":"Rotator","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.634],"y":[0]},"n":["0p56_1_0p634_0"],"t":19,"s":[0],"e":[190.7]},{"i":{"x":[0.562],"y":[1]},"o":{"x":[0.398],"y":[0]},"n":["0p562_1_0p398_0"],"t":33,"s":[190.7],"e":[176.1]},{"i":{"x":[0.684],"y":[1]},"o":{"x":[0.31],"y":[0]},"n":["0p684_1_0p31_0"],"t":40.5,"s":[176.1],"e":[181.8]},{"i":{"x":[0.684],"y":[1]},"o":{"x":[0.438],"y":[0]},"n":["0p684_1_0p438_0"],"t":55,"s":[181.8],"e":[180]},{"i":{"x":[0.733],"y":[0.733]},"o":{"x":[0.385],"y":[0.385]},"n":["0p733_0p733_0p385_0p385"],"t":71,"s":[180],"e":[180]},{"i":{"x":[0.092],"y":[1]},"o":{"x":[0.406],"y":[0]},"n":["0p092_1_0p406_0"],"t":111,"s":[180],"e":[167.9]},{"i":{"x":[0.341],"y":[1]},"o":{"x":[0.6],"y":[0]},"n":["0p341_1_0p6_0"],"t":116,"s":[167.9],"e":[363]},{"i":{"x":[0.462],"y":[1]},"o":{"x":[0.167],"y":[0]},"n":["0p462_1_0p167_0"],"t":134,"s":[363],"e":[360]},{"t":141}]},"p":{"k":[200.5,149.375,0]},"a":{"k":[60,60,0]},"s":{"k":[100,100,100]}},"ao":0,"ip":0,"op":180,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"A1","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.634],"y":[0]},"n":["0p56_1_0p634_0"],"t":19,"s":[0],"e":[-45]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[-45],"e":[-45]},{"i":{"x":[0.341],"y":[1]},"o":{"x":[0.6],"y":[0]},"n":["0p341_1_0p6_0"],"t":116,"s":[-45],"e":[0]},{"t":134}]},"p":{"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.634,"y":0},"n":"0p56_1_0p634_0","t":19,"s":[94.5,82.875,0],"e":[96.2,57.055,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.167,"y":0.167},"n":"0_0_0p167_0p167","t":33,"s":[96.2,57.055,0],"e":[96.2,57.055,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.341,"y":1},"o":{"x":0.6,"y":0},"n":"0p341_1_0p6_0","t":116,"s":[96.2,57.055,0],"e":[94.5,82.875,0],"to":[0,0,0],"ti":[0,0,0]},{"t":134}]},"a":{"k":[35,22.25,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,22.25],[35,22.25]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.4,0.16,0.7,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.634],"y":[0]},"n":["0p56_1_0p634_0"],"t":19,"s":[0],"e":[26]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[26],"e":[26]},{"i":{"x":[0.341],"y":[1]},"o":{"x":[0.6],"y":[0]},"n":["0p341_1_0p6_0"],"t":116,"s":[26],"e":[0]},{"t":134}],"ix":1},"e":{"k":[{"i":{"x":[0.56],"y":[0.56]},"o":{"x":[0.634],"y":[0.634]},"n":["0p56_0p56_0p634_0p634"],"t":19,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[100],"e":[100]},{"i":{"x":[0.341],"y":[0.341]},"o":{"x":[0.6],"y":[0.6]},"n":["0p341_0p341_0p6_0p6"],"t":116,"s":[100],"e":[100]},{"t":134}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":0,"op":180,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"A2","parent":0,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[60,60.625,0]},"a":{"k":[0.5,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,0],[35,0]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.4,0.16,0.7,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"}],"ip":0,"op":180,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"A3","parent":0,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.634],"y":[0]},"n":["0p56_1_0p634_0"],"t":19,"s":[0],"e":[45]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[45],"e":[45]},{"i":{"x":[0.341],"y":[1]},"o":{"x":[0.6],"y":[0]},"n":["0p341_1_0p6_0"],"t":116,"s":[45],"e":[0]},{"t":134}]},"p":{"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.634,"y":0},"n":"0p56_1_0p634_0","t":19,"s":[94.5,37.125,0],"e":[96.2,64.045,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.167,"y":0.167},"n":"0_0_0p167_0p167","t":33,"s":[96.2,64.045,0],"e":[96.2,64.045,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.341,"y":1},"o":{"x":0.6,"y":0},"n":"0p341_1_0p6_0","t":116,"s":[96.2,64.045,0],"e":[94.5,37.125,0],"to":[0,0,0],"ti":[0,0,0]},{"t":134}]},"a":{"k":[35,-23.5,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-34,-23.5],[35,-23.5]],"c":false}},"nm":"Path 1"},{"ty":"st","fillEnabled":true,"c":{"k":[0.4,0.16,0.7,1]},"o":{"k":100},"w":{"k":10},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1"},{"ty":"tm","s":{"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.634],"y":[0]},"n":["0p56_1_0p634_0"],"t":19,"s":[0],"e":[26]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[26],"e":[26]},{"i":{"x":[0.341],"y":[1]},"o":{"x":[0.6],"y":[0]},"n":["0p341_1_0p6_0"],"t":116,"s":[26],"e":[0]},{"t":134}],"ix":1},"e":{"k":[{"i":{"x":[0.56],"y":[0.56]},"o":{"x":[0.634],"y":[0.634]},"n":["0p56_0p56_0p634_0p634"],"t":19,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":33,"s":[100],"e":[100]},{"i":{"x":[0.341],"y":[0.341]},"o":{"x":[0.6],"y":[0.6]},"n":["0p341_0p341_0p6_0p6"],"t":116,"s":[100],"e":[100]},{"t":134}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1"}],"ip":0,"op":180,"st":0,"bm":0,"sr":1}],"v":"4.4.26","ddd":0,"ip":0,"op":180,"fr":30,"w":400,"h":300}
\ No newline at end of file
diff --git a/demo/src/assets/icons/add.png b/demo/src/assets/icons/add.png
deleted file mode 100644
index e7bc1e78d7..0000000000
Binary files a/demo/src/assets/icons/add.png and /dev/null differ
diff --git a/demo/src/assets/icons/add@1.5x.png b/demo/src/assets/icons/add@1.5x.png
deleted file mode 100644
index c44f4e7d6f..0000000000
Binary files a/demo/src/assets/icons/add@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/add@2x.png b/demo/src/assets/icons/add@2x.png
deleted file mode 100644
index dfc90aa1e6..0000000000
Binary files a/demo/src/assets/icons/add@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/add@3x.png b/demo/src/assets/icons/add@3x.png
deleted file mode 100644
index 41f4a5dd19..0000000000
Binary files a/demo/src/assets/icons/add@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/add@4x.png b/demo/src/assets/icons/add@4x.png
deleted file mode 100644
index 4cc63be05c..0000000000
Binary files a/demo/src/assets/icons/add@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/archive.png b/demo/src/assets/icons/archive.png
deleted file mode 100755
index 98fa4ba69c..0000000000
Binary files a/demo/src/assets/icons/archive.png and /dev/null differ
diff --git a/demo/src/assets/icons/archive@1.5x.png b/demo/src/assets/icons/archive@1.5x.png
deleted file mode 100755
index 48e003005b..0000000000
Binary files a/demo/src/assets/icons/archive@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/archive@2x.png b/demo/src/assets/icons/archive@2x.png
deleted file mode 100755
index 57bd49d8c3..0000000000
Binary files a/demo/src/assets/icons/archive@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/archive@3x.png b/demo/src/assets/icons/archive@3x.png
deleted file mode 100755
index 295e315efa..0000000000
Binary files a/demo/src/assets/icons/archive@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/archive@4x.png b/demo/src/assets/icons/archive@4x.png
deleted file mode 100755
index e4a03447e6..0000000000
Binary files a/demo/src/assets/icons/archive@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/bell.png b/demo/src/assets/icons/bell.png
deleted file mode 100644
index 4936f84574..0000000000
Binary files a/demo/src/assets/icons/bell.png and /dev/null differ
diff --git a/demo/src/assets/icons/bell@2x.png b/demo/src/assets/icons/bell@2x.png
deleted file mode 100644
index 5c2f33b0d9..0000000000
Binary files a/demo/src/assets/icons/bell@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/bell@3x.png b/demo/src/assets/icons/bell@3x.png
deleted file mode 100644
index 44a2212a6c..0000000000
Binary files a/demo/src/assets/icons/bell@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/cameraSelected.png b/demo/src/assets/icons/cameraSelected.png
deleted file mode 100644
index f46c98593f..0000000000
Binary files a/demo/src/assets/icons/cameraSelected.png and /dev/null differ
diff --git a/demo/src/assets/icons/cameraSelected@1.5x.png b/demo/src/assets/icons/cameraSelected@1.5x.png
deleted file mode 100644
index c77e7017ec..0000000000
Binary files a/demo/src/assets/icons/cameraSelected@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/cameraSelected@2x.png b/demo/src/assets/icons/cameraSelected@2x.png
deleted file mode 100644
index af2b62e175..0000000000
Binary files a/demo/src/assets/icons/cameraSelected@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/cameraSelected@3x.png b/demo/src/assets/icons/cameraSelected@3x.png
deleted file mode 100644
index f48acaf7b5..0000000000
Binary files a/demo/src/assets/icons/cameraSelected@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/cameraSelected@4x.png b/demo/src/assets/icons/cameraSelected@4x.png
deleted file mode 100644
index 5be0c2b52d..0000000000
Binary files a/demo/src/assets/icons/cameraSelected@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/check-small.png b/demo/src/assets/icons/check-small.png
deleted file mode 100644
index 6e22b87659..0000000000
Binary files a/demo/src/assets/icons/check-small.png and /dev/null differ
diff --git a/demo/src/assets/icons/check-small@1.5x.png b/demo/src/assets/icons/check-small@1.5x.png
deleted file mode 100644
index 902f55cb35..0000000000
Binary files a/demo/src/assets/icons/check-small@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/check-small@2x.png b/demo/src/assets/icons/check-small@2x.png
deleted file mode 100644
index d460167b87..0000000000
Binary files a/demo/src/assets/icons/check-small@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/check-small@3x.png b/demo/src/assets/icons/check-small@3x.png
deleted file mode 100644
index 81c4dbada7..0000000000
Binary files a/demo/src/assets/icons/check-small@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/check-small@4x.png b/demo/src/assets/icons/check-small@4x.png
deleted file mode 100644
index 8346c27327..0000000000
Binary files a/demo/src/assets/icons/check-small@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronDown.png b/demo/src/assets/icons/chevronDown.png
deleted file mode 100644
index 6439e5c516..0000000000
Binary files a/demo/src/assets/icons/chevronDown.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronDown@2x.png b/demo/src/assets/icons/chevronDown@2x.png
deleted file mode 100644
index 7ac964e33f..0000000000
Binary files a/demo/src/assets/icons/chevronDown@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronDown@3x.png b/demo/src/assets/icons/chevronDown@3x.png
deleted file mode 100644
index a8a445fadb..0000000000
Binary files a/demo/src/assets/icons/chevronDown@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronDown@4x.android.png b/demo/src/assets/icons/chevronDown@4x.android.png
deleted file mode 100644
index d21606a0bc..0000000000
Binary files a/demo/src/assets/icons/chevronDown@4x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronRight.png b/demo/src/assets/icons/chevronRight.png
deleted file mode 100644
index 8fd98c696e..0000000000
Binary files a/demo/src/assets/icons/chevronRight.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronRight@1.5x.android.png b/demo/src/assets/icons/chevronRight@1.5x.android.png
deleted file mode 100644
index 395b05810e..0000000000
Binary files a/demo/src/assets/icons/chevronRight@1.5x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronRight@2x.png b/demo/src/assets/icons/chevronRight@2x.png
deleted file mode 100644
index 8f06c077db..0000000000
Binary files a/demo/src/assets/icons/chevronRight@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronRight@3x.png b/demo/src/assets/icons/chevronRight@3x.png
deleted file mode 100644
index a67ae8a85f..0000000000
Binary files a/demo/src/assets/icons/chevronRight@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronRight@4x.android.png b/demo/src/assets/icons/chevronRight@4x.android.png
deleted file mode 100644
index f4f2c8d8ab..0000000000
Binary files a/demo/src/assets/icons/chevronRight@4x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronUp.png b/demo/src/assets/icons/chevronUp.png
deleted file mode 100644
index d371ad1f59..0000000000
Binary files a/demo/src/assets/icons/chevronUp.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronUp@1.5x.android.png b/demo/src/assets/icons/chevronUp@1.5x.android.png
deleted file mode 100644
index beeac7f1cb..0000000000
Binary files a/demo/src/assets/icons/chevronUp@1.5x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronUp@2x.png b/demo/src/assets/icons/chevronUp@2x.png
deleted file mode 100644
index 1d1b897c46..0000000000
Binary files a/demo/src/assets/icons/chevronUp@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronUp@3x.png b/demo/src/assets/icons/chevronUp@3x.png
deleted file mode 100644
index 9f67898a1b..0000000000
Binary files a/demo/src/assets/icons/chevronUp@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/chevronUp@4x.android.png b/demo/src/assets/icons/chevronUp@4x.android.png
deleted file mode 100644
index 344baf2c07..0000000000
Binary files a/demo/src/assets/icons/chevronUp@4x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/close.png b/demo/src/assets/icons/close.png
deleted file mode 100644
index 2e089eb234..0000000000
Binary files a/demo/src/assets/icons/close.png and /dev/null differ
diff --git a/demo/src/assets/icons/close@1.5x.png b/demo/src/assets/icons/close@1.5x.png
deleted file mode 100644
index 36117a1ae8..0000000000
Binary files a/demo/src/assets/icons/close@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/close@2x.png b/demo/src/assets/icons/close@2x.png
deleted file mode 100644
index 0f7e2f5f00..0000000000
Binary files a/demo/src/assets/icons/close@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/close@3x.png b/demo/src/assets/icons/close@3x.png
deleted file mode 100644
index 44f8c1497b..0000000000
Binary files a/demo/src/assets/icons/close@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/close@4x.png b/demo/src/assets/icons/close@4x.png
deleted file mode 100644
index 1c9517db07..0000000000
Binary files a/demo/src/assets/icons/close@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/collections.png b/demo/src/assets/icons/collections.png
deleted file mode 100644
index 3f1698bd2b..0000000000
Binary files a/demo/src/assets/icons/collections.png and /dev/null differ
diff --git a/demo/src/assets/icons/collections@1.5x.png b/demo/src/assets/icons/collections@1.5x.png
deleted file mode 100644
index 460caa3cf9..0000000000
Binary files a/demo/src/assets/icons/collections@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/collections@2x.png b/demo/src/assets/icons/collections@2x.png
deleted file mode 100644
index 5cfff4c64e..0000000000
Binary files a/demo/src/assets/icons/collections@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/collections@3x.png b/demo/src/assets/icons/collections@3x.png
deleted file mode 100644
index ef4e32f356..0000000000
Binary files a/demo/src/assets/icons/collections@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/collections@4x.png b/demo/src/assets/icons/collections@4x.png
deleted file mode 100644
index 97f23af2f2..0000000000
Binary files a/demo/src/assets/icons/collections@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/dashboard.png b/demo/src/assets/icons/dashboard.png
deleted file mode 100644
index 264fe63c88..0000000000
Binary files a/demo/src/assets/icons/dashboard.png and /dev/null differ
diff --git a/demo/src/assets/icons/dashboard@1.5x.png b/demo/src/assets/icons/dashboard@1.5x.png
deleted file mode 100644
index 3aa6a36350..0000000000
Binary files a/demo/src/assets/icons/dashboard@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/dashboard@2x.png b/demo/src/assets/icons/dashboard@2x.png
deleted file mode 100644
index a2018e3a56..0000000000
Binary files a/demo/src/assets/icons/dashboard@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/dashboard@3x.png b/demo/src/assets/icons/dashboard@3x.png
deleted file mode 100644
index 5253fc42a2..0000000000
Binary files a/demo/src/assets/icons/dashboard@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/dashboard@4x.png b/demo/src/assets/icons/dashboard@4x.png
deleted file mode 100644
index 2c3b65eb5e..0000000000
Binary files a/demo/src/assets/icons/dashboard@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/delete.png b/demo/src/assets/icons/delete.png
deleted file mode 100644
index 07e68ac41c..0000000000
Binary files a/demo/src/assets/icons/delete.png and /dev/null differ
diff --git a/demo/src/assets/icons/delete@1.5x.png b/demo/src/assets/icons/delete@1.5x.png
deleted file mode 100644
index 49e606e226..0000000000
Binary files a/demo/src/assets/icons/delete@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/delete@2x.png b/demo/src/assets/icons/delete@2x.png
deleted file mode 100644
index 6ed41daab9..0000000000
Binary files a/demo/src/assets/icons/delete@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/delete@3x.png b/demo/src/assets/icons/delete@3x.png
deleted file mode 100644
index 065bdf33c7..0000000000
Binary files a/demo/src/assets/icons/delete@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/delete@4x.png b/demo/src/assets/icons/delete@4x.png
deleted file mode 100644
index db0509f03e..0000000000
Binary files a/demo/src/assets/icons/delete@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/drag.png b/demo/src/assets/icons/drag.png
deleted file mode 100644
index dd3cfcd1b3..0000000000
Binary files a/demo/src/assets/icons/drag.png and /dev/null differ
diff --git a/demo/src/assets/icons/drag@1.5x.png b/demo/src/assets/icons/drag@1.5x.png
deleted file mode 100644
index d2621f2c0d..0000000000
Binary files a/demo/src/assets/icons/drag@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/drag@2x.png b/demo/src/assets/icons/drag@2x.png
deleted file mode 100644
index 98fb02f846..0000000000
Binary files a/demo/src/assets/icons/drag@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/drag@3x.png b/demo/src/assets/icons/drag@3x.png
deleted file mode 100644
index bf30ef48ec..0000000000
Binary files a/demo/src/assets/icons/drag@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/drag@4x.png b/demo/src/assets/icons/drag@4x.png
deleted file mode 100644
index 3fca1a3003..0000000000
Binary files a/demo/src/assets/icons/drag@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/exclamationFillSmall.png b/demo/src/assets/icons/exclamationFillSmall.png
deleted file mode 100644
index beea12c36a..0000000000
Binary files a/demo/src/assets/icons/exclamationFillSmall.png and /dev/null differ
diff --git a/demo/src/assets/icons/exclamationFillSmall@1.5x.png b/demo/src/assets/icons/exclamationFillSmall@1.5x.png
deleted file mode 100644
index a6d7e68227..0000000000
Binary files a/demo/src/assets/icons/exclamationFillSmall@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/exclamationFillSmall@2x.png b/demo/src/assets/icons/exclamationFillSmall@2x.png
deleted file mode 100644
index ddd7522e38..0000000000
Binary files a/demo/src/assets/icons/exclamationFillSmall@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/exclamationFillSmall@3x.png b/demo/src/assets/icons/exclamationFillSmall@3x.png
deleted file mode 100644
index 6817fcdf63..0000000000
Binary files a/demo/src/assets/icons/exclamationFillSmall@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/exclamationFillSmall@4x.png b/demo/src/assets/icons/exclamationFillSmall@4x.png
deleted file mode 100644
index d1a1dfa329..0000000000
Binary files a/demo/src/assets/icons/exclamationFillSmall@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/image.png b/demo/src/assets/icons/image.png
deleted file mode 100644
index 5542b20edc..0000000000
Binary files a/demo/src/assets/icons/image.png and /dev/null differ
diff --git a/demo/src/assets/icons/image@1.5x.png b/demo/src/assets/icons/image@1.5x.png
deleted file mode 100644
index c40137f095..0000000000
Binary files a/demo/src/assets/icons/image@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/image@2x.png b/demo/src/assets/icons/image@2x.png
deleted file mode 100644
index cbe60e32ca..0000000000
Binary files a/demo/src/assets/icons/image@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/image@3x.png b/demo/src/assets/icons/image@3x.png
deleted file mode 100644
index cadf0ddf9e..0000000000
Binary files a/demo/src/assets/icons/image@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/image@4x.png b/demo/src/assets/icons/image@4x.png
deleted file mode 100644
index 2908d1e71b..0000000000
Binary files a/demo/src/assets/icons/image@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/info.png b/demo/src/assets/icons/info.png
deleted file mode 100644
index c5d52d721b..0000000000
Binary files a/demo/src/assets/icons/info.png and /dev/null differ
diff --git a/demo/src/assets/icons/info@1.5x.png b/demo/src/assets/icons/info@1.5x.png
deleted file mode 100644
index a02dcc59b2..0000000000
Binary files a/demo/src/assets/icons/info@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/info@2x.png b/demo/src/assets/icons/info@2x.png
deleted file mode 100644
index 1818ebfbad..0000000000
Binary files a/demo/src/assets/icons/info@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/info@3x.png b/demo/src/assets/icons/info@3x.png
deleted file mode 100644
index 0621792d4f..0000000000
Binary files a/demo/src/assets/icons/info@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/info@4x.png b/demo/src/assets/icons/info@4x.png
deleted file mode 100644
index 6f18585648..0000000000
Binary files a/demo/src/assets/icons/info@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/mail.png b/demo/src/assets/icons/mail.png
deleted file mode 100644
index 7e19edf7ae..0000000000
Binary files a/demo/src/assets/icons/mail.png and /dev/null differ
diff --git a/demo/src/assets/icons/mail@1.5x.png b/demo/src/assets/icons/mail@1.5x.png
deleted file mode 100644
index fbae918b11..0000000000
Binary files a/demo/src/assets/icons/mail@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/mail@2x.png b/demo/src/assets/icons/mail@2x.png
deleted file mode 100644
index 023f0848f2..0000000000
Binary files a/demo/src/assets/icons/mail@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/mail@3x.png b/demo/src/assets/icons/mail@3x.png
deleted file mode 100644
index 28c50b5ac4..0000000000
Binary files a/demo/src/assets/icons/mail@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/mail@4x.png b/demo/src/assets/icons/mail@4x.png
deleted file mode 100644
index d7e774d236..0000000000
Binary files a/demo/src/assets/icons/mail@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/plus.png b/demo/src/assets/icons/plus.png
deleted file mode 100644
index e7c2af3073..0000000000
Binary files a/demo/src/assets/icons/plus.png and /dev/null differ
diff --git a/demo/src/assets/icons/plus@1.5x.png b/demo/src/assets/icons/plus@1.5x.png
deleted file mode 100644
index 14031ccf00..0000000000
Binary files a/demo/src/assets/icons/plus@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/plus@2x.png b/demo/src/assets/icons/plus@2x.png
deleted file mode 100644
index b97f8ad140..0000000000
Binary files a/demo/src/assets/icons/plus@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/plus@3x.png b/demo/src/assets/icons/plus@3x.png
deleted file mode 100644
index 65c2853f3b..0000000000
Binary files a/demo/src/assets/icons/plus@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/plus@4x.png b/demo/src/assets/icons/plus@4x.png
deleted file mode 100644
index 6c515c365e..0000000000
Binary files a/demo/src/assets/icons/plus@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/refresh.png b/demo/src/assets/icons/refresh.png
deleted file mode 100644
index 7eaca62d5d..0000000000
Binary files a/demo/src/assets/icons/refresh.png and /dev/null differ
diff --git a/demo/src/assets/icons/refresh@1.5x.png b/demo/src/assets/icons/refresh@1.5x.png
deleted file mode 100644
index e6c9582be9..0000000000
Binary files a/demo/src/assets/icons/refresh@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/refresh@2x.png b/demo/src/assets/icons/refresh@2x.png
deleted file mode 100644
index 2d098e72a8..0000000000
Binary files a/demo/src/assets/icons/refresh@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/refresh@3x.png b/demo/src/assets/icons/refresh@3x.png
deleted file mode 100644
index a620e0f345..0000000000
Binary files a/demo/src/assets/icons/refresh@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/refresh@4x.png b/demo/src/assets/icons/refresh@4x.png
deleted file mode 100644
index 087976f5cc..0000000000
Binary files a/demo/src/assets/icons/refresh@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/richText.png b/demo/src/assets/icons/richText.png
deleted file mode 100644
index 5cdb118370..0000000000
Binary files a/demo/src/assets/icons/richText.png and /dev/null differ
diff --git a/demo/src/assets/icons/richText@1.5x.png b/demo/src/assets/icons/richText@1.5x.png
deleted file mode 100644
index a0b2cf351b..0000000000
Binary files a/demo/src/assets/icons/richText@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/richText@2x.png b/demo/src/assets/icons/richText@2x.png
deleted file mode 100644
index b419dd0c6a..0000000000
Binary files a/demo/src/assets/icons/richText@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/richText@3x.png b/demo/src/assets/icons/richText@3x.png
deleted file mode 100644
index bd89625fd5..0000000000
Binary files a/demo/src/assets/icons/richText@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/richText@4x.png b/demo/src/assets/icons/richText@4x.png
deleted file mode 100644
index 1fa9f0e58c..0000000000
Binary files a/demo/src/assets/icons/richText@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/search.png b/demo/src/assets/icons/search.png
deleted file mode 100644
index c940bca742..0000000000
Binary files a/demo/src/assets/icons/search.png and /dev/null differ
diff --git a/demo/src/assets/icons/search@1.5x.png b/demo/src/assets/icons/search@1.5x.png
deleted file mode 100644
index ebc5f85da4..0000000000
Binary files a/demo/src/assets/icons/search@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/search@2x.png b/demo/src/assets/icons/search@2x.png
deleted file mode 100644
index 4b86f825d4..0000000000
Binary files a/demo/src/assets/icons/search@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/search@3x.png b/demo/src/assets/icons/search@3x.png
deleted file mode 100644
index be61a57f96..0000000000
Binary files a/demo/src/assets/icons/search@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/search@4x.png b/demo/src/assets/icons/search@4x.png
deleted file mode 100644
index 2dd5199507..0000000000
Binary files a/demo/src/assets/icons/search@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings.png b/demo/src/assets/icons/settings.png
deleted file mode 100644
index 326daf32cc..0000000000
Binary files a/demo/src/assets/icons/settings.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings@1.5x.android.png b/demo/src/assets/icons/settings@1.5x.android.png
deleted file mode 100644
index 91a7c7be38..0000000000
Binary files a/demo/src/assets/icons/settings@1.5x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings@1.5x.png b/demo/src/assets/icons/settings@1.5x.png
deleted file mode 100644
index 91a7c7be38..0000000000
Binary files a/demo/src/assets/icons/settings@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings@2x.png b/demo/src/assets/icons/settings@2x.png
deleted file mode 100644
index d8843c3206..0000000000
Binary files a/demo/src/assets/icons/settings@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings@3x.png b/demo/src/assets/icons/settings@3x.png
deleted file mode 100644
index 8cd338179e..0000000000
Binary files a/demo/src/assets/icons/settings@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings@4x.android.png b/demo/src/assets/icons/settings@4x.android.png
deleted file mode 100644
index 2178a96a7e..0000000000
Binary files a/demo/src/assets/icons/settings@4x.android.png and /dev/null differ
diff --git a/demo/src/assets/icons/settings@4x.png b/demo/src/assets/icons/settings@4x.png
deleted file mode 100644
index 2178a96a7e..0000000000
Binary files a/demo/src/assets/icons/settings@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/share.png b/demo/src/assets/icons/share.png
deleted file mode 100644
index 74c04e7698..0000000000
Binary files a/demo/src/assets/icons/share.png and /dev/null differ
diff --git a/demo/src/assets/icons/share@1.5x.png b/demo/src/assets/icons/share@1.5x.png
deleted file mode 100644
index 7b3947e25a..0000000000
Binary files a/demo/src/assets/icons/share@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/share@2x.png b/demo/src/assets/icons/share@2x.png
deleted file mode 100644
index c66dada09e..0000000000
Binary files a/demo/src/assets/icons/share@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/share@3x.png b/demo/src/assets/icons/share@3x.png
deleted file mode 100644
index ff30e0d1ce..0000000000
Binary files a/demo/src/assets/icons/share@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/share@4x.png b/demo/src/assets/icons/share@4x.png
deleted file mode 100644
index 475bc79687..0000000000
Binary files a/demo/src/assets/icons/share@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/star.png b/demo/src/assets/icons/star.png
deleted file mode 100644
index 9e8803483b..0000000000
Binary files a/demo/src/assets/icons/star.png and /dev/null differ
diff --git a/demo/src/assets/icons/star@1.5x.png b/demo/src/assets/icons/star@1.5x.png
deleted file mode 100644
index d8be0df1ce..0000000000
Binary files a/demo/src/assets/icons/star@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/star@2x.png b/demo/src/assets/icons/star@2x.png
deleted file mode 100644
index 3d95d1d9c9..0000000000
Binary files a/demo/src/assets/icons/star@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/star@3x.png b/demo/src/assets/icons/star@3x.png
deleted file mode 100644
index c8d5c182d5..0000000000
Binary files a/demo/src/assets/icons/star@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/star@4x.png b/demo/src/assets/icons/star@4x.png
deleted file mode 100644
index 381a0b83a0..0000000000
Binary files a/demo/src/assets/icons/star@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/tags.png b/demo/src/assets/icons/tags.png
deleted file mode 100644
index 4d4c519d38..0000000000
Binary files a/demo/src/assets/icons/tags.png and /dev/null differ
diff --git a/demo/src/assets/icons/tags@1.5x.png b/demo/src/assets/icons/tags@1.5x.png
deleted file mode 100644
index 63850ffa8e..0000000000
Binary files a/demo/src/assets/icons/tags@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/tags@2x.png b/demo/src/assets/icons/tags@2x.png
deleted file mode 100644
index e9bdb7f747..0000000000
Binary files a/demo/src/assets/icons/tags@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/tags@3x.png b/demo/src/assets/icons/tags@3x.png
deleted file mode 100644
index 4bc3bc7dd6..0000000000
Binary files a/demo/src/assets/icons/tags@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/tags@4x.png b/demo/src/assets/icons/tags@4x.png
deleted file mode 100644
index 195e3d7393..0000000000
Binary files a/demo/src/assets/icons/tags@4x.png and /dev/null differ
diff --git a/demo/src/assets/icons/video.png b/demo/src/assets/icons/video.png
deleted file mode 100644
index e3ca814d8d..0000000000
Binary files a/demo/src/assets/icons/video.png and /dev/null differ
diff --git a/demo/src/assets/icons/video@1.5x.png b/demo/src/assets/icons/video@1.5x.png
deleted file mode 100644
index 92f5cba075..0000000000
Binary files a/demo/src/assets/icons/video@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/icons/video@2x.png b/demo/src/assets/icons/video@2x.png
deleted file mode 100644
index e20af4522e..0000000000
Binary files a/demo/src/assets/icons/video@2x.png and /dev/null differ
diff --git a/demo/src/assets/icons/video@3x.png b/demo/src/assets/icons/video@3x.png
deleted file mode 100644
index e239f33ae0..0000000000
Binary files a/demo/src/assets/icons/video@3x.png and /dev/null differ
diff --git a/demo/src/assets/icons/video@4x.png b/demo/src/assets/icons/video@4x.png
deleted file mode 100644
index ba841f4e49..0000000000
Binary files a/demo/src/assets/icons/video@4x.png and /dev/null differ
diff --git a/demo/src/assets/images/FadeOut.png b/demo/src/assets/images/FadeOut.png
deleted file mode 100644
index bcbd770a85..0000000000
Binary files a/demo/src/assets/images/FadeOut.png and /dev/null differ
diff --git a/demo/src/assets/images/FadeOut@1.5x.png b/demo/src/assets/images/FadeOut@1.5x.png
deleted file mode 100644
index 526e54d990..0000000000
Binary files a/demo/src/assets/images/FadeOut@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/images/FadeOut@2x.png b/demo/src/assets/images/FadeOut@2x.png
deleted file mode 100644
index e0dd385b34..0000000000
Binary files a/demo/src/assets/images/FadeOut@2x.png and /dev/null differ
diff --git a/demo/src/assets/images/FadeOut@3x.png b/demo/src/assets/images/FadeOut@3x.png
deleted file mode 100644
index 80c0eae2b8..0000000000
Binary files a/demo/src/assets/images/FadeOut@3x.png and /dev/null differ
diff --git a/demo/src/assets/images/FadeOut@4x.png b/demo/src/assets/images/FadeOut@4x.png
deleted file mode 100644
index bd8b14cf74..0000000000
Binary files a/demo/src/assets/images/FadeOut@4x.png and /dev/null differ
diff --git a/demo/src/assets/images/card-example.jpg b/demo/src/assets/images/card-example.jpg
deleted file mode 100644
index 67d4b6c213..0000000000
Binary files a/demo/src/assets/images/card-example.jpg and /dev/null differ
diff --git a/demo/src/assets/images/empty-state.jpg b/demo/src/assets/images/empty-state.jpg
deleted file mode 100644
index 9891648abd..0000000000
Binary files a/demo/src/assets/images/empty-state.jpg and /dev/null differ
diff --git a/demo/src/assets/images/placeholderMissingImage.png b/demo/src/assets/images/placeholderMissingImage.png
deleted file mode 100644
index 3dccd42560..0000000000
Binary files a/demo/src/assets/images/placeholderMissingImage.png and /dev/null differ
diff --git a/demo/src/assets/images/placeholderMissingImage@1.5x.png b/demo/src/assets/images/placeholderMissingImage@1.5x.png
deleted file mode 100644
index b839022f38..0000000000
Binary files a/demo/src/assets/images/placeholderMissingImage@1.5x.png and /dev/null differ
diff --git a/demo/src/assets/images/placeholderMissingImage@2x.png b/demo/src/assets/images/placeholderMissingImage@2x.png
deleted file mode 100644
index ae6b19ce60..0000000000
Binary files a/demo/src/assets/images/placeholderMissingImage@2x.png and /dev/null differ
diff --git a/demo/src/assets/images/placeholderMissingImage@3x.png b/demo/src/assets/images/placeholderMissingImage@3x.png
deleted file mode 100644
index 69359baf41..0000000000
Binary files a/demo/src/assets/images/placeholderMissingImage@3x.png and /dev/null differ
diff --git a/demo/src/assets/images/placeholderMissingImage@4x.png b/demo/src/assets/images/placeholderMissingImage@4x.png
deleted file mode 100644
index 7614d4d391..0000000000
Binary files a/demo/src/assets/images/placeholderMissingImage@4x.png and /dev/null differ
diff --git a/demo/src/assets/svgs/headerLogo.svg b/demo/src/assets/svgs/headerLogo.svg
deleted file mode 100644
index 5aa98e74a3..0000000000
--- a/demo/src/assets/svgs/headerLogo.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/demo/src/configurations.js b/demo/src/configurations.js
deleted file mode 100644
index cf1d9a1636..0000000000
--- a/demo/src/configurations.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import {Assets, Colors, Typography, Spacings, TextField} from 'react-native-ui-lib'; // eslint-disable-line
-
-export const loadDemoConfigurations = () => {
- Assets.loadAssetsGroup('icons.demo', {
- chevronDown: require('./assets/icons/chevronDown.png'),
- chevronRight: require('./assets/icons/chevronRight.png'),
- add: require('./assets/icons/add.png'),
- camera: require('./assets/icons/cameraSelected.png'),
- close: require('./assets/icons/close.png'),
- dashboard: require('./assets/icons/dashboard.png'),
- drag: require('./assets/icons/drag.png'),
- image: require('./assets/icons/image.png'),
- plus: require('./assets/icons/plus.png'),
- refresh: require('./assets/icons/refresh.png'),
- search: require('./assets/icons/search.png'),
- settings: require('./assets/icons/settings.png'),
- share: require('./assets/icons/share.png'),
- info: require('./assets/icons/info.png'),
- exclamation: require('./assets/icons/exclamationFillSmall.png')
- });
-
- Assets.loadAssetsGroup('images.demo', {
- brokenImage: require('./assets/images/placeholderMissingImage.png')
- });
-
- Assets.loadAssetsGroup('svgs.demo', {
- logo: require('./assets/svgs/headerLogo.svg').default
- });
-
- Typography.loadTypographies({
- h1: {...Typography.text40},
- h2: {...Typography.text50},
- h3: {...Typography.text70M},
- body: Typography.text70,
- bodySmall: Typography.text80
- });
-
- Spacings.loadSpacings({
- page: Spacings.s5
- });
-
- /* Dark Mode Schemes */
- Colors.loadSchemes({
- light: {
- screenBG: Colors.white,
- textColor: Colors.grey10,
- moonOrSun: Colors.yellow30,
- mountainForeground: Colors.green30,
- mountainBackground: Colors.green50
- },
- dark: {
- screenBG: Colors.grey10,
- textColor: Colors.white,
- moonOrSun: Colors.grey80,
- mountainForeground: Colors.violet10,
- mountainBackground: Colors.violet20
- }
- });
-
- /* Components */
- TextField.defaultProps = {preset: TextField.presets.UNDERLINE, ...TextField.defaultProps};
-};
diff --git a/demo/src/data/conversations.ts b/demo/src/data/conversations.ts
deleted file mode 100644
index 617a85dea0..0000000000
--- a/demo/src/data/conversations.ts
+++ /dev/null
@@ -1,1674 +0,0 @@
-const conversations = [
- {
- name: 'rallylongmailname@wix.com',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail: 'https://i.pravatar.cc/150?img=1',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- thumbnail: 'https://i.pravatar.cc/150?img=2',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail: 'https://i.pravatar.cc/150?img=3',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail: 'https://i.pravatar.cc/150?img=4',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail: 'https://i.pravatar.cc/150?img=5',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail: 'https://i.pravatar.cc/150?img=6',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Sir Robert Walpole',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'A. Schwarzenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Spencer Compton',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Arnold S.',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Henry Pelham',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Arnold Schwarz',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Duke of Newcastle',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Arni Zenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'John Stuart',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Nold Gger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'George Grenville',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Ard Benegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Charles Watson-Wentworth',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'A.B. Schwa',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'William Pitt',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Roni Arnold',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Augustus FitzRoy',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Old Schwarzenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Frederick North',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Bold Schwarzenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Charles Watson-Wentworth',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Mold Schwarzenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'William Petty',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Cold Schwarzenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'William Cavendish-Bentinck',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Hold Schwarzenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Henry Addington',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Bold Schwarz',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'William Grenville',
- text: 'Made a purchase in the total of 7.00$',
- timestamp: '7/14/2016',
- thumbnail:
- 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'S. Zenegger',
- text: 'Get to the chopper',
- timestamp: 'Jul 19th 214'
- },
- {
- name: 'Johnny Gibson',
- text: 'Do you also carry these shoes in black?',
- timestamp: '36 min',
- count: '5',
- // thumbnail: 'https://static.wixstatic.com/media/87994e3d0dda4479a7f4d8c803e1323e.jpg/v1/fit/w_750,h_750/87994e3d0dda4479a7f4d8c803e1323e.jpg',
- isNew: false
- },
- {
- name: 'Jennifer Clark',
- text: 'This might be the subject\nAnd the content is on a new line',
- timestamp: '2 hours',
- count: '1',
- thumbnail:
- 'https://static.wixstatic.com/media/c1ca83a468ae4c998fe4fddea60ea84d.jpg/v1/fit/w_750,h_750/c1ca83a468ae4c998fe4fddea60ea84d.jpg',
- isNew: true
- },
- {
- name: 'Rebecka',
- text: 'Yep',
- timestamp: '3 hours',
- count: '12',
- thumbnail:
- 'https://static.wixstatic.com/media/43cddb4301684a01a26eaea100162934.jpeg/v1/fit/w_750,h_750/43cddb4301684a01a26eaea100162934.jpeg',
- isNew: true,
- leftTitleBadge: 'badgeOfficial'
- },
- {
- name: 'Murphy',
- text: 'Do you have international shipping?',
- timestamp: '1 Day',
- count: '2',
- thumbnail:
- 'https://static.wixstatic.com/media/84e86e9bec8d46dd8296c510629a8d97.jpg/v1/fit/w_750,h_750/84e86e9bec8d46dd8296c510629a8d97.jpg',
- isNew: false
- },
- {
- name: 'Matttt',
- text: 'will get to you next week with that',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/b27921b8c46841b48032f11c16d6e009.jpg/v1/fit/w_750,h_750/b27921b8c46841b48032f11c16d6e009.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- },
- {
- name: 'Brad Taylor',
- text: 'Will I be able to receive it before July 3rd?',
- timestamp: '1 Week',
- count: '99',
- thumbnail:
- 'https://static.wixstatic.com/media/7c69c135804b473c9788266540cd90d3.jpg/v1/fit/w_750,h_750/7c69c135804b473c9788266540cd90d3.jpg',
- isNew: false
- },
- {
- name: 'Lina Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/a7adbc41a9f24a64803cac9aec2deb6b.jpg/v1/fit/w_750,h_750/a7adbc41a9f24a64803cac9aec2deb6b.jpg',
- isNew: true,
- leftTitleBadge: 'facebookOn'
- },
- {
- name: 'Marissa Mayer',
- text: 'When will you have them back in stock?',
- timestamp: '1 Week',
- count: '',
- thumbnail: '',
- isNew: true
- },
- {
- name: 'Elliot Brown',
- text: '2 - 3 weeks',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/66003687fdce4e6197cbaf816ca8fd17.jpg/v1/fit/w_750,h_750/66003687fdce4e6197cbaf816ca8fd17.jpg',
- isNew: true
- },
- {
- name: 'Vanessa Campbell',
- text: 'Do you have these in other colors?',
- timestamp: '1 Week',
- count: '',
- thumbnail:
- 'https://static.wixstatic.com/media/d4367b20ae2e4036b18c34262d5ed031.jpg/v1/fit/w_750,h_750/d4367b20ae2e4036b18c34262d5ed031.jpg',
- isNew: true,
- leftTitleBadge: 'twitterOn'
- }
-];
-
-export default conversations;
diff --git a/demo/src/data/orders.ts b/demo/src/data/orders.ts
deleted file mode 100644
index b621cb60f6..0000000000
--- a/demo/src/data/orders.ts
+++ /dev/null
@@ -1,137 +0,0 @@
-type InventoryType = {
- trackingMethod: string;
- status: string;
- quantity: number;
-}
-
-export type OrderType = {
- name: string;
- formattedPrice: string;
- inventory: InventoryType
- mediaUrl: string;
-}
-
-const orders: Array = [
- {
- name: '#100201',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Paid',
- quantity: 1
- },
- mediaUrl: 'https://static.wixstatic.com/media/d911269bdf7972c9a59ba30440cb3789.jpg_128'
- },
- {
- name: '#100203',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Paid',
- quantity: 2
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_5c6d2cd3b71a41caa54309301e1dd0d7.jpg_128'
- },
- {
- name: '#100207',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Unpaid',
- quantity: 1
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_7153ff06297c484498f9d6662e26d6d5.jpg_128'
- },
- {
- name: '#100208',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Out of Stock',
- quantity: 0
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_e008aa7681f443b3be63a1fe86c10cfd.jpg_128'
- },
- {
- name: '#100209',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Paid',
- quantity: 3
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_f9de629d8c97416f82b398725bd49918.jpg_128'
- },
- {
- name: '#100205',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Unpaid',
- quantity: 0
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_1782572f1dfc49d397e830918d912568.jpg_128'
- },
- {
- name: '#100200',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Unpaid',
- quantity: 10
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_03906910d07749199b09e443ce9fed6c.jpg_128'
- },
- {
- name: '#100206',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Paid',
- quantity: 11
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_9d3e5b8fc70e4d2997806ece35e7de54.jpg_128'
- },
- {
- name: '#100212',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Unpaid',
- quantity: 10
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_db24e0568cdc4a82be0a8559fb123b55.jpg_128'
- },
- {
- name: '#100211',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Unpaid',
- quantity: 2
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_085a5f9575ba4b208f6091b26cbda4c4.jpg_128'
- },
- {
- name: '#10022',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Paid',
- quantity: 8
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_82d66fece3e54a7aa10d49bda4d98259.jpg_128'
- },
- {
- name: '#10023',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Paid',
- quantity: 8
- },
- mediaUrl: 'https://static.wixstatic.com/media/84770f_c611ded729fd4461a1bb57134d4e9dd2.png_128'
- }
-];
-
-export default orders;
diff --git a/demo/src/data/posts.js b/demo/src/data/posts.js
deleted file mode 100644
index a9c8c4cc35..0000000000
--- a/demo/src/data/posts.js
+++ /dev/null
@@ -1,20 +0,0 @@
-const localImageSource = require('../assets/images/empty-state.jpg'); // eslint-disable-line
-const posts = [
- {
- coverImage: localImageSource,
- title: 'Amazing Desert',
- status: 'Published',
- timestamp: '31 August 2016',
- description: 'Reference this table when designing your app’s interface, and make sure',
- likes: 345,
- },
- {
- title: 'New Post',
- status: 'Draft',
- timestamp: '07 March 2017',
- description: 'This is the beginning of a new post',
- likes: 0,
- },
-];
-
-export default posts;
diff --git a/demo/src/data/products.ts b/demo/src/data/products.ts
deleted file mode 100644
index 6bba237da8..0000000000
--- a/demo/src/data/products.ts
+++ /dev/null
@@ -1,180 +0,0 @@
-const products = [
- {
- id: 'a',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 1
- },
- mediaUrl: 'https://images.pexels.com/photos/248412/pexels-photo-248412.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=200'
- },
- {
- id: 'b',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 2
- },
- mediaUrl: 'https://images.pexels.com/photos/3737604/pexels-photo-3737604.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=200'
- },
- {
- id: 'c',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 1
- },
- mediaUrl: 'https://images.pexels.com/photos/3685538/pexels-photo-3685538.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=200'
- },
- {
- id: 'd',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'Out of Stock',
- quantity: 0
- },
- mediaUrl: 'https://images.pexels.com/photos/4202467/pexels-photo-4202467.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=200'
- },
- {
- id: 'e',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 3
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_f9de629d8c97416f82b398725bd49918.jpg_128'
- },
- {
- id: 'f',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'statu',
- status: 'Out of Stock',
- quantity: 0
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_1782572f1dfc49d397e830918d912568.jpg_128'
- },
- {
- id: 'g',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 10
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_03906910d07749199b09e443ce9fed6c.jpg_128'
- },
- {
- id: 'h',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 11
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_9d3e5b8fc70e4d2997806ece35e7de54.jpg_128'
- },
- {
- id: 'i',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 10
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_db24e0568cdc4a82be0a8559fb123b55.jpg_128'
- },
- {
- id: 'j',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 2
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_085a5f9575ba4b208f6091b26cbda4c4.jpg_128'
- },
- {
- id: 'k',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 8
- },
- mediaUrl: 'https://static.wixstatic.com/media/cda177_82d66fece3e54a7aa10d49bda4d98259.jpg_128'
- },
- {
- id: 'l',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 8
- },
- mediaUrl: 'https://static.wixstatic.com/media/84770f_c611ded729fd4461a1bb57134d4e9dd2.png_128'
- },
- {
- id: 'm',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 3
- },
- mediaUrl: 'https://images.pexels.com/photos/3612182/pexels-photo-3612182.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=150'
- },
- {
- id: 'n',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 22
- },
- mediaUrl: 'https://images.pexels.com/photos/4841529/pexels-photo-4841529.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=150'
- },
- {
- id: 'o',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 10
- },
- mediaUrl: 'https://images.pexels.com/photos/4173450/pexels-photo-4173450.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=150'
- },
- {
- id: 'p',
- name: 'I\'m a Product',
- formattedPrice: '$19.99',
- inventory: {
- trackingMethod: 'status',
- status: 'In Stock',
- quantity: 10
- },
- mediaUrl: 'https://images.pexels.com/photos/10513273/pexels-photo-10513273.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=150'
- }
-];
-
-export default products;
diff --git a/demo/src/data/songs.js b/demo/src/data/songs.js
deleted file mode 100644
index dbd3bca6a9..0000000000
--- a/demo/src/data/songs.js
+++ /dev/null
@@ -1,1453 +0,0 @@
-const songs = [{
- name: 'HUMBLE.',
- duration: '0',
- playcount: '1489800',
- listeners: '166294',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/HUMBLE.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Shape of You',
- duration: '0',
- playcount: '2551417',
- listeners: '230550',
- mbid: '',
- url: 'https://www.last.fm/music/Ed+Sheeran/_/Shape+of+You',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Ed Sheeran',
- mbid: 'b8a7c51f-362c-4dcb-a259-bc6e0095f0a6',
- url: 'https://www.last.fm/music/Ed+Sheeran'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'extralarge'
- }]
-}, {
- name: 'DNA.',
- duration: '0',
- playcount: '1048783',
- listeners: '137701',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/DNA.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Malibu',
- duration: '0',
- playcount: '628068',
- listeners: '65597',
- mbid: '',
- url: 'https://www.last.fm/music/Miley+Cyrus/_/Malibu',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Miley Cyrus',
- mbid: '7e9bd05a-117f-4cce-87bc-e011527a8b18',
- url: 'https://www.last.fm/music/Miley+Cyrus'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/450b202c44c397f29dc06bb15b61ef36.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/450b202c44c397f29dc06bb15b61ef36.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/450b202c44c397f29dc06bb15b61ef36.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/450b202c44c397f29dc06bb15b61ef36.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Despacito - Remix',
- duration: '0',
- playcount: '577278',
- listeners: '79006',
- mbid: '',
- url: 'https://www.last.fm/music/Luis+Fonsi/_/Despacito+-+Remix',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Luis Fonsi',
- mbid: 'd68fda90-ab8d-4799-be56-317ba4ae700f',
- url: 'https://www.last.fm/music/Luis+Fonsi'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/770e3952b46f2e7b29d061e86674e1dc.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/770e3952b46f2e7b29d061e86674e1dc.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/770e3952b46f2e7b29d061e86674e1dc.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/770e3952b46f2e7b29d061e86674e1dc.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Sign Of The Times',
- duration: '0',
- playcount: '1111321',
- listeners: '93206',
- mbid: '',
- url: 'https://www.last.fm/music/Harry+Styles/_/Sign+Of+The+Times',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Harry Styles',
- mbid: '',
- url: 'https://www.last.fm/music/Harry+Styles'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Bad Liar',
- duration: '0',
- playcount: '417915',
- listeners: '52325',
- mbid: '',
- url: 'https://www.last.fm/music/Selena+Gomez/_/Bad+Liar',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Selena Gomez',
- mbid: 'e4bc69e2-a064-4f93-ada1-f7f209cc1cc3',
- url: 'https://www.last.fm/music/Selena+Gomez'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/1dd812bfa1f45e0a2d3269fdfda2cf7f.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/1dd812bfa1f45e0a2d3269fdfda2cf7f.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/1dd812bfa1f45e0a2d3269fdfda2cf7f.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/1dd812bfa1f45e0a2d3269fdfda2cf7f.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Black Hole Sun',
- duration: '0',
- playcount: '5095014',
- listeners: '955904',
- mbid: '18f44eb2-4bac-4768-8e31-ceacb971faac',
- url: 'https://www.last.fm/music/Soundgarden/_/Black+Hole+Sun',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Soundgarden',
- mbid: '153c9281-268f-4cf3-8938-f5a4593e5df4',
- url: 'https://www.last.fm/music/Soundgarden'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/7f1e7ce25a71467196580d18fce25db2.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/7f1e7ce25a71467196580d18fce25db2.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/7f1e7ce25a71467196580d18fce25db2.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/7f1e7ce25a71467196580d18fce25db2.png',
- size: 'extralarge'
- }]
-}, {
- name: 'I\'m the One',
- duration: '0',
- playcount: '329403',
- listeners: '63587',
- mbid: '',
- url: 'https://www.last.fm/music/DJ+Khaled/_/I%27m+the+One',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'DJ Khaled',
- mbid: '081a2d60-9791-4e05-a075-f1890355eeee',
- url: 'https://www.last.fm/music/DJ+Khaled'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/49c58b915c7342cbbdef7a264d564e93.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/49c58b915c7342cbbdef7a264d564e93.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/49c58b915c7342cbbdef7a264d564e93.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/49c58b915c7342cbbdef7a264d564e93.png',
- size: 'extralarge'
- }]
-}, {
- name: 'HarD TiMEs',
- duration: '0',
- playcount: '837105',
- listeners: '74270',
- mbid: '',
- url: 'https://www.last.fm/music/Paramore/_/HarD+TiMEs',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Paramore',
- mbid: '728ea90d-279b-4201-a8c4-597830883150',
- url: 'https://www.last.fm/music/Paramore'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Thunder',
- duration: '0',
- playcount: '417946',
- listeners: '59733',
- mbid: '',
- url: 'https://www.last.fm/music/Imagine+Dragons/_/Thunder',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Imagine Dragons',
- mbid: '012151a8-0f9a-44c9-997f-ebd68b5389f9',
- url: 'https://www.last.fm/music/Imagine+Dragons'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/b89d483809639a549eaddb6090f7451e.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/b89d483809639a549eaddb6090f7451e.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/b89d483809639a549eaddb6090f7451e.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/b89d483809639a549eaddb6090f7451e.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Swish Swish',
- duration: '0',
- playcount: '441231',
- listeners: '44638',
- mbid: '',
- url: 'https://www.last.fm/music/Katy+Perry/_/Swish+Swish',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Katy Perry',
- mbid: '122d63fc-8671-43e4-9752-34e846d62a9c',
- url: 'https://www.last.fm/music/Katy+Perry'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/87156aec9593180909fe5f72ede47a03.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/87156aec9593180909fe5f72ede47a03.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/87156aec9593180909fe5f72ede47a03.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/87156aec9593180909fe5f72ede47a03.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Passionfruit',
- duration: '0',
- playcount: '996327',
- listeners: '112386',
- mbid: '',
- url: 'https://www.last.fm/music/Drake/_/Passionfruit',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Drake',
- mbid: 'b49b81cc-d5b7-4bdd-aadb-385df8de69a6',
- url: 'https://www.last.fm/music/Drake'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/d1e64270f77a12040dd464703377d855.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/d1e64270f77a12040dd464703377d855.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/d1e64270f77a12040dd464703377d855.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/d1e64270f77a12040dd464703377d855.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Attention',
- duration: '0',
- playcount: '331354',
- listeners: '55138',
- mbid: '',
- url: 'https://www.last.fm/music/Charlie+Puth/_/Attention',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Charlie Puth',
- mbid: '525f1f1c-03f0-4bc8-8dfd-e7521f87631b',
- url: 'https://www.last.fm/music/Charlie+Puth'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/0f2055a36bc01e0d81d18039e26deeca.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/0f2055a36bc01e0d81d18039e26deeca.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/0f2055a36bc01e0d81d18039e26deeca.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/0f2055a36bc01e0d81d18039e26deeca.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Mask Off',
- duration: '0',
- playcount: '624005',
- listeners: '91992',
- mbid: '',
- url: 'https://www.last.fm/music/Future/_/Mask+Off',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Future',
- mbid: '9f1195cf-9900-45db-bf9c-21c205672ae0',
- url: 'https://www.last.fm/music/Future'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/3274f6049b991483ffe5681d0319c44c.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/3274f6049b991483ffe5681d0319c44c.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/3274f6049b991483ffe5681d0319c44c.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/3274f6049b991483ffe5681d0319c44c.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Now or Never',
- duration: '0',
- playcount: '483460',
- listeners: '66969',
- mbid: '',
- url: 'https://www.last.fm/music/Halsey/_/Now+or+Never',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Halsey',
- mbid: '',
- url: 'https://www.last.fm/music/Halsey'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/14e7f4d6e74521f795de8ca141c6bf89.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/14e7f4d6e74521f795de8ca141c6bf89.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/14e7f4d6e74521f795de8ca141c6bf89.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/14e7f4d6e74521f795de8ca141c6bf89.png',
- size: 'extralarge'
- }]
-}, {
- name: 'There\'s Nothing Holdin\' Me Back',
- duration: '0',
- playcount: '367656',
- listeners: '58239',
- mbid: '',
- url: 'https://www.last.fm/music/Shawn+Mendes/_/There%27s+Nothing+Holdin%27+Me+Back',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Shawn Mendes',
- mbid: 'b7d92248-97e3-4450-8057-6fe06738f735',
- url: 'https://www.last.fm/music/Shawn+Mendes'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/aa28b1d640f10dbc3b484444d3307a80.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/aa28b1d640f10dbc3b484444d3307a80.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/aa28b1d640f10dbc3b484444d3307a80.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/aa28b1d640f10dbc3b484444d3307a80.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Something Just Like This',
- duration: '0',
- playcount: '795523',
- listeners: '114311',
- mbid: '',
- url: 'https://www.last.fm/music/The+Chainsmokers/_/Something+Just+Like+This',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'The Chainsmokers',
- mbid: '91a81925-92f9-4fc9-b897-93cf01226282',
- url: 'https://www.last.fm/music/The+Chainsmokers'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/b7457fa791ece7fa673eb0b4431657f4.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/b7457fa791ece7fa673eb0b4431657f4.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/b7457fa791ece7fa673eb0b4431657f4.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/b7457fa791ece7fa673eb0b4431657f4.png',
- size: 'extralarge'
- }]
-}, {
- name: 'The Cure',
- duration: '0',
- playcount: '1392982',
- listeners: '71651',
- mbid: '',
- url: 'https://www.last.fm/music/Lady+Gaga/_/The+Cure',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Lady Gaga',
- mbid: '650e7db6-b795-4eb5-a702-5ea2fc46c848',
- url: 'https://www.last.fm/music/Lady+Gaga'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/27be033c8f51e85ef9e78df45f1897ce.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/27be033c8f51e85ef9e78df45f1897ce.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/27be033c8f51e85ef9e78df45f1897ce.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/27be033c8f51e85ef9e78df45f1897ce.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Redbone',
- duration: '0',
- playcount: '873872',
- listeners: '126320',
- mbid: '',
- url: 'https://www.last.fm/music/Childish+Gambino/_/Redbone',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Childish Gambino',
- mbid: '7fb57fba-a6ef-44c2-abab-2fa3bdee607e',
- url: 'https://www.last.fm/music/Childish+Gambino'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/4925ae3c7ec04df9b0c65e0adc12c6a1.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/4925ae3c7ec04df9b0c65e0adc12c6a1.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/4925ae3c7ec04df9b0c65e0adc12c6a1.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/4925ae3c7ec04df9b0c65e0adc12c6a1.png',
- size: 'extralarge'
- }]
-}, {
- name: 'ELEMENT.',
- duration: '0',
- playcount: '700659',
- listeners: '110573',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/ELEMENT.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Green Light',
- duration: '0',
- playcount: '1298741',
- listeners: '123184',
- mbid: '',
- url: 'https://www.last.fm/music/Lorde/_/Green+Light',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Lorde',
- mbid: '8e494408-8620-4c6a-82c2-c2ca4a1e4f12',
- url: 'https://www.last.fm/music/Lorde'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/8987fadfc88af0db542ac2f711969c59.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/8987fadfc88af0db542ac2f711969c59.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/8987fadfc88af0db542ac2f711969c59.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/8987fadfc88af0db542ac2f711969c59.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Swalla (feat. Nicki Minaj & Ty Dolla $ign)',
- duration: '0',
- playcount: '417927',
- listeners: '73877',
- mbid: '',
- url: 'https://www.last.fm/music/Jason+Der%C3%BClo/_/Swalla+(feat.+Nicki+Minaj+&+Ty+Dolla+$ign)',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Jason Derülo',
- mbid: '6de0f914-3e60-4418-be3b-42e0feb6eb4d',
- url: 'https://www.last.fm/music/Jason+Der%C3%BClo'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/544cd29f74a11479418fe9eaf509c935.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/544cd29f74a11479418fe9eaf509c935.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/544cd29f74a11479418fe9eaf509c935.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/544cd29f74a11479418fe9eaf509c935.png',
- size: 'extralarge'
- }]
-}, {
- name: 'That\'s What I Like',
- duration: '0',
- playcount: '697515',
- listeners: '106859',
- mbid: '',
- url: 'https://www.last.fm/music/Bruno+Mars/_/That%27s+What+I+Like',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Bruno Mars',
- mbid: 'afb680f2-b6eb-4cd7-a70b-a63b25c763d5',
- url: 'https://www.last.fm/music/Bruno+Mars'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/85ebe2bcd85fec1c35c571509aa27d1a.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/85ebe2bcd85fec1c35c571509aa27d1a.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/85ebe2bcd85fec1c35c571509aa27d1a.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/85ebe2bcd85fec1c35c571509aa27d1a.png',
- size: 'extralarge'
- }]
-}, {
- name: 'First Time',
- duration: '0',
- playcount: '224474',
- listeners: '53996',
- mbid: '',
- url: 'https://www.last.fm/music/Kygo/_/First+Time',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kygo',
- mbid: 'ba0e7638-0cd6-4ff4-8987-c3e224d22c23',
- url: 'https://www.last.fm/music/Kygo'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/7427d1a8917577205b4d8ecaf30f4973.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/7427d1a8917577205b4d8ecaf30f4973.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/7427d1a8917577205b4d8ecaf30f4973.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/7427d1a8917577205b4d8ecaf30f4973.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Stay (with Alessia Cara)',
- duration: '0',
- playcount: '560479',
- listeners: '88187',
- mbid: '',
- url: 'https://www.last.fm/music/Zedd/_/Stay+(with+Alessia+Cara)',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Zedd',
- mbid: '56c4b861-0922-4c3a-a9b9-3bfcb00f8274',
- url: 'https://www.last.fm/music/Zedd'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/384c8a50ddcbf0a340288888ef9f8f30.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/384c8a50ddcbf0a340288888ef9f8f30.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/384c8a50ddcbf0a340288888ef9f8f30.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/384c8a50ddcbf0a340288888ef9f8f30.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Galway Girl',
- duration: '0',
- playcount: '789192',
- listeners: '106712',
- mbid: '',
- url: 'https://www.last.fm/music/Ed+Sheeran/_/Galway+Girl',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Ed Sheeran',
- mbid: 'b8a7c51f-362c-4dcb-a259-bc6e0095f0a6',
- url: 'https://www.last.fm/music/Ed+Sheeran'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/71ab2582b79a456787bf08b6e419f0dc.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Believer',
- duration: '0',
- playcount: '793700',
- listeners: '109044',
- mbid: '',
- url: 'https://www.last.fm/music/Imagine+Dragons/_/Believer',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Imagine Dragons',
- mbid: '012151a8-0f9a-44c9-997f-ebd68b5389f9',
- url: 'https://www.last.fm/music/Imagine+Dragons'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/b89d483809639a549eaddb6090f7451e.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/b89d483809639a549eaddb6090f7451e.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/b89d483809639a549eaddb6090f7451e.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/b89d483809639a549eaddb6090f7451e.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Slide',
- duration: '0',
- playcount: '670791',
- listeners: '99374',
- mbid: '',
- url: 'https://www.last.fm/music/Calvin+Harris/_/Slide',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Calvin Harris',
- mbid: '8dd98bdc-80ec-4e93-8509-2f46bafc09a7',
- url: 'https://www.last.fm/music/Calvin+Harris'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ca83997a225a4368eb55f82717add274.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ca83997a225a4368eb55f82717add274.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ca83997a225a4368eb55f82717add274.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ca83997a225a4368eb55f82717add274.png',
- size: 'extralarge'
- }]
-}, {
- name: 'YAH.',
- duration: '0',
- playcount: '613708',
- listeners: '107488',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/YAH.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'In Cold Blood',
- duration: '0',
- playcount: '277259',
- listeners: '58405',
- mbid: '',
- url: 'https://www.last.fm/music/alt-J/_/In+Cold+Blood',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'alt-J',
- mbid: 'fc7bbf00-fbaa-4736-986b-b3ac0266ca9b',
- url: 'https://www.last.fm/music/alt-J'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'extralarge'
- }]
-}, {
- name: 'cRYINg In THE clUB',
- duration: '0',
- playcount: '512484',
- listeners: '34779',
- mbid: '',
- url: 'https://www.last.fm/music/Camila+Cabello/_/cRYINg+In+THE+clUB',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Camila Cabello',
- mbid: '',
- url: 'https://www.last.fm/music/Camila+Cabello'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/4b10761e170a2b104308ad5286c55414.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/4b10761e170a2b104308ad5286c55414.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/4b10761e170a2b104308ad5286c55414.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/4b10761e170a2b104308ad5286c55414.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Do I Wanna Know?',
- duration: '272',
- playcount: '10468137',
- listeners: '771234',
- mbid: 'f1e57531-e0df-4b3e-938f-1ae30c5b1a11',
- url: 'https://www.last.fm/music/Arctic+Monkeys/_/Do+I+Wanna+Know%3F',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Arctic Monkeys',
- mbid: 'ada7a83c-e3e1-40f1-93f9-3e73dbc9298a',
- url: 'https://www.last.fm/music/Arctic+Monkeys'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/c825233e09af4641a5ce7b6ece883aae.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/c825233e09af4641a5ce7b6ece883aae.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/c825233e09af4641a5ce7b6ece883aae.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/c825233e09af4641a5ce7b6ece883aae.png',
- size: 'extralarge'
- }]
-}, {
- name: 'bOn aPpétIT',
- duration: '0',
- playcount: '496897',
- listeners: '50769',
- mbid: '',
- url: 'https://www.last.fm/music/Katy+Perry/_/bOn+aPp%C3%A9tIT',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Katy Perry',
- mbid: '122d63fc-8671-43e4-9752-34e846d62a9c',
- url: 'https://www.last.fm/music/Katy+Perry'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/87156aec9593180909fe5f72ede47a03.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/87156aec9593180909fe5f72ede47a03.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/87156aec9593180909fe5f72ede47a03.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/87156aec9593180909fe5f72ede47a03.png',
- size: 'extralarge'
- }]
-}, {
- name: 'TOlD YOU SO',
- duration: '0',
- playcount: '400238',
- listeners: '44884',
- mbid: '',
- url: 'https://www.last.fm/music/Paramore/_/TOlD+YOU+SO',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Paramore',
- mbid: '728ea90d-279b-4201-a8c4-597830883150',
- url: 'https://www.last.fm/music/Paramore'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Strip That Down',
- duration: '0',
- playcount: '236305',
- listeners: '34092',
- mbid: '',
- url: 'https://www.last.fm/music/Liam+Payne/_/Strip+That+Down',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Liam Payne',
- mbid: '',
- url: 'https://www.last.fm/music/Liam+Payne'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/7f9dfb7433caf0fb74ab3362b09908cc.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/7f9dfb7433caf0fb74ab3362b09908cc.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/7f9dfb7433caf0fb74ab3362b09908cc.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/7f9dfb7433caf0fb74ab3362b09908cc.png',
- size: 'extralarge'
- }]
-}, {
- name: 'No Promises (feat. Demi Lovato)',
- duration: '0',
- playcount: '326677',
- listeners: '53990',
- mbid: '',
- url: 'https://www.last.fm/music/Cheat+Codes/_/No+Promises+(feat.+Demi+Lovato)',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Cheat Codes',
- mbid: '',
- url: 'https://www.last.fm/music/Cheat+Codes'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/c60ad048c9c22e1f8204b5bbadd128cc.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/c60ad048c9c22e1f8204b5bbadd128cc.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/c60ad048c9c22e1f8204b5bbadd128cc.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/c60ad048c9c22e1f8204b5bbadd128cc.png',
- size: 'extralarge'
- }]
-}, {
- name: 'PRIDE.',
- duration: '0',
- playcount: '566164',
- listeners: '99235',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/PRIDE.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Everything Now',
- duration: '0',
- playcount: '119547',
- listeners: '33944',
- mbid: '',
- url: 'https://www.last.fm/music/Arcade+Fire/_/Everything+Now',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Arcade Fire',
- mbid: '52074ba6-e495-4ef3-9bb4-0703888a9f68',
- url: 'https://www.last.fm/music/Arcade+Fire'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/9c27b0c51d0f4270afbe4342fb3efc17.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/9c27b0c51d0f4270afbe4342fb3efc17.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/9c27b0c51d0f4270afbe4342fb3efc17.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/9c27b0c51d0f4270afbe4342fb3efc17.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Like a Stone',
- duration: '0',
- playcount: '4936084',
- listeners: '834395',
- mbid: 'e20a9641-2668-4a58-8295-624678a8a883',
- url: 'https://www.last.fm/music/Audioslave/_/Like+a+Stone',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Audioslave',
- mbid: '020bfbb4-05c3-4c86-b372-17825c262094',
- url: 'https://www.last.fm/music/Audioslave'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/7ba191ade5588c99adbec9201ce8266b.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/7ba191ade5588c99adbec9201ce8266b.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/7ba191ade5588c99adbec9201ce8266b.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/7ba191ade5588c99adbec9201ce8266b.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Mr. Brightside',
- duration: '224',
- playcount: '16323183',
- listeners: '1846999',
- mbid: '37d516ab-d61f-4bcb-9316-7a0b3eb845a8',
- url: 'https://www.last.fm/music/The+Killers/_/Mr.+Brightside',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'The Killers',
- mbid: '95e1ead9-4d31-4808-a7ac-32c3614c116b',
- url: 'https://www.last.fm/music/The+Killers'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/96a6bf1778a9cd84014c3d37a69320e7.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/96a6bf1778a9cd84014c3d37a69320e7.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/96a6bf1778a9cd84014c3d37a69320e7.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/96a6bf1778a9cd84014c3d37a69320e7.png',
- size: 'extralarge'
- }]
-}, {
- name: 'FEEL.',
- duration: '0',
- playcount: '553978',
- listeners: '101739',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/FEEL.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Adeline',
- duration: '0',
- playcount: '101101',
- listeners: '33000',
- mbid: '',
- url: 'https://www.last.fm/music/alt-J/_/Adeline',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'alt-J',
- mbid: 'fc7bbf00-fbaa-4736-986b-b3ac0266ca9b',
- url: 'https://www.last.fm/music/alt-J'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'extralarge'
- }]
-}, {
- name: 'sWeeT CreAtUre',
- duration: '0',
- playcount: '255085',
- listeners: '44696',
- mbid: '',
- url: 'https://www.last.fm/music/Harry+Styles/_/sWeeT+CreAtUre',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Harry Styles',
- mbid: '',
- url: 'https://www.last.fm/music/Harry+Styles'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/5f58f9c4f79bff1043caa2ccd127544b.png',
- size: 'extralarge'
- }]
-}, {
- name: 'chAiNEd tO the RhyTHM',
- duration: '0',
- playcount: '1170150',
- listeners: '107152',
- mbid: '',
- url: 'https://www.last.fm/music/Katy+Perry/_/chAiNEd+tO+the+RhyTHM',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Katy Perry',
- mbid: '122d63fc-8671-43e4-9752-34e846d62a9c',
- url: 'https://www.last.fm/music/Katy+Perry'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/87156aec9593180909fe5f72ede47a03.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/87156aec9593180909fe5f72ede47a03.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/87156aec9593180909fe5f72ede47a03.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/87156aec9593180909fe5f72ede47a03.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Rose-Colored Boy',
- duration: '0',
- playcount: '230434',
- listeners: '37090',
- mbid: '',
- url: 'https://www.last.fm/music/Paramore/_/Rose-Colored+Boy',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Paramore',
- mbid: '728ea90d-279b-4201-a8c4-597830883150',
- url: 'https://www.last.fm/music/Paramore'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/a7f713f5e2031607ca37b166775c2d17.png',
- size: 'extralarge'
- }]
-}, {
- name: '3WW',
- duration: '0',
- playcount: '287185',
- listeners: '62364',
- mbid: '',
- url: 'https://www.last.fm/music/alt-J/_/3WW',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'alt-J',
- mbid: 'fc7bbf00-fbaa-4736-986b-b3ac0266ca9b',
- url: 'https://www.last.fm/music/alt-J'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/bf2571ed95b92afd6d5ee5c49ac97b06.png',
- size: 'extralarge'
- }]
-}, {
- name: 'LOYALTY. FEAT. RIHANNA.',
- duration: '0',
- playcount: '492660',
- listeners: '88839',
- mbid: '',
- url: 'https://www.last.fm/music/Kendrick+Lamar/_/LOYALTY.+FEAT.+RIHANNA.',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Kendrick Lamar',
- mbid: '381086ea-f511-4aba-bdf9-71c753dc5077',
- url: 'https://www.last.fm/music/Kendrick+Lamar'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/ede2d97c462d20b25a63565ef5a8bf02.png',
- size: 'extralarge'
- }]
-}, {
- name: 'The Less I Know the Better',
- duration: '0',
- playcount: '2553058',
- listeners: '274211',
- mbid: '',
- url: 'https://www.last.fm/music/Tame+Impala/_/The+Less+I+Know+the+Better',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Tame Impala',
- mbid: '63aa26c3-d59b-4da4-84ac-716b54f1ef4d',
- url: 'https://www.last.fm/music/Tame+Impala'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/af87aba641a04fa9836fbf72f08b95cc.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/af87aba641a04fa9836fbf72f08b95cc.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/af87aba641a04fa9836fbf72f08b95cc.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/af87aba641a04fa9836fbf72f08b95cc.png',
- size: 'extralarge'
- }]
-}, {
- name: 'Slow Hands',
- duration: '0',
- playcount: '218957',
- listeners: '39757',
- mbid: '',
- url: 'https://www.last.fm/music/Niall+Horan/_/Slow+Hands',
- streamable: {
- '#text': '0',
- fulltrack: '0'
- },
- artist: {
- name: 'Niall Horan',
- mbid: '',
- url: 'https://www.last.fm/music/Niall+Horan'
- },
- image: [{
- '#text': 'https://lastfm-img2.akamaized.net/i/u/34s/164741df95c250f6ea93faa470c098be.png',
- size: 'small'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/64s/164741df95c250f6ea93faa470c098be.png',
- size: 'medium'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/174s/164741df95c250f6ea93faa470c098be.png',
- size: 'large'
- }, {
- '#text': 'https://lastfm-img2.akamaized.net/i/u/300x300/164741df95c250f6ea93faa470c098be.png',
- size: 'extralarge'
- }]
-}];
-
-export default songs;
diff --git a/demo/src/demoApp.js b/demo/src/demoApp.js
deleted file mode 100644
index 959ff47443..0000000000
--- a/demo/src/demoApp.js
+++ /dev/null
@@ -1,144 +0,0 @@
-import {Navigation} from 'react-native-navigation';
-import {Constants, Colors, Typography} from 'react-native-ui-lib'; // eslint-disable-line
-import {registerScreens} from './screens';
-import Storage, {DEFAULT_SCREEN} from './storage';
-
-/** Examples - uncomment when needed */
-// Typography.loadTypographies({
-// h1: {fontSize: 58, fontWeight: '300', lineHeight: 80},
-// h2: {fontSize: 46, fontWeight: '300', lineHeight: 64},
-// });
-
-// Colors.loadColors({
-// pink: '#FF69B4',
-// gold: '#FFD700',
-// });
-
-// const customAnimationsDefinitions = {
-// customAnimation1: {
-// from: {opacity: 0, translateY: 20},
-// to: {opacity: 1, translateY: 0},
-// },
-// customAnimation2: {
-// from: {opacity: 0, translateY: 40},
-// to: {opacity: 1, translateY: 0},
-// },
-// };
-
-function getDefaultNavigationStyle() {
- return {
- statusBar: {
- visible: true,
- style: 'light',
- backgroundColor: Colors.$backgroundPrimaryHeavy // for Android
- },
- layout: {
- backgroundColor: Colors.$backgroundDefault,
- orientation: ['portrait', 'landscape'],
- componentBackgroundColor: Colors.$backgroundDefault
- },
- topBar: {
- visible: true,
- noBorder: true, // for iOS
- elevation: 0, // for Android
- background: {
- color: Colors.$backgroundPrimaryHeavy
- },
- title: {
- color: Colors.$textDefaultLight,
- fontSize: Typography.text60H.fontSize,
- fontFamily: Typography.text65H.fontFamily
- },
- subtitle: {
- color: Colors.$textDefaultLight,
- fontSize: Typography.text80T.fontSize,
- fontFamily: Typography.text80.fontFamily
- },
- backButton: {
- // visible: true,
- color: Colors.$iconDefaultLight,
- showTitle: Constants.isIOS ? false : undefined,
- testID: 'pop'
- },
- leftButtonColor: Colors.$iconDefaultLight,
- leftButtonDisabledColor: Colors.$iconDisabled,
- rightButtonColor: Colors.$iconDefaultLight,
- rightButtonDisabledColor: Colors.$iconDisabled
- }
- };
-}
-
-function startApp(defaultScreen) {
- Navigation.setDefaultOptions(getDefaultNavigationStyle());
-
- const rootObject = {
- root: {
- stack: {
- children: [
- {
- component: {
- name: 'unicorn.MainScreen',
- options: {
- topBar: {
- title: {
- text: 'R N U I L I B'
- }
- }
- }
- }
- }
- ]
- }
- }
- };
-
- if (defaultScreen) {
- rootObject.root.stack.children.push({
- component: {
- name: defaultScreen
- }
- });
- }
-
- Navigation.setRoot(rootObject);
-}
-
-function getDefaultScreenAndStartApp() {
- if (Storage.contains(DEFAULT_SCREEN)) {
- startApp(Storage.getString(DEFAULT_SCREEN));
- } else {
- startApp();
- }
-}
-
-Navigation.events().registerAppLaunchedListener(() => {
- registerScreens(Navigation.registerComponent.bind(Navigation));
- getDefaultScreenAndStartApp();
-});
-
-
-/* Setting Intl Polyfills
-This is due to lack of Intl support in Hermes engine
- */
-
-if (global.HermesInternal) {
- if (Constants.isIOS) {
-
- // Polyfills required to use Intl with Hermes engine
- require('@formatjs/intl-getcanonicallocales/polyfill').default;
- require('@formatjs/intl-locale/polyfill').default;
- require('@formatjs/intl-pluralrules/polyfill').default;
- require('@formatjs/intl-pluralrules/locale-data/en').default;
- require('@formatjs/intl-numberformat/polyfill').default;
- require('@formatjs/intl-numberformat/locale-data/en').default;
- require('@formatjs/intl-datetimeformat/polyfill').default;
- require('@formatjs/intl-datetimeformat/locale-data/en').default;
- require('@formatjs/intl-datetimeformat/add-all-tz').default;
- } else {
- require('@formatjs/intl-getcanonicallocales/polyfill');
- require('@formatjs/intl-locale/polyfill');
- require('@formatjs/intl-datetimeformat/polyfill');
- require('@formatjs/intl-datetimeformat/locale-data/en');
- require('@formatjs/intl-datetimeformat/add-all-tz');
- }
-}
diff --git a/demo/src/index.js b/demo/src/index.js
deleted file mode 100644
index ed47fc9fad..0000000000
--- a/demo/src/index.js
+++ /dev/null
@@ -1,313 +0,0 @@
-import {UIManager, I18nManager} from 'react-native';
-import {navigationData as menuStructure} from './screens/MenuStructure';
-import {loadDemoConfigurations} from './configurations';
-
-UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true); // eslint-disable-line
-I18nManager.allowRTL(true);
-
-module.exports = {
- name: 'unicorn demo app',
- menuStructure,
- loadDemoConfigurations,
- // componentScreens
- get screens() {
- return {
- get ActionSheetScreen() {
- return require('./screens/componentScreens/ActionSheetScreen').default;
- },
- get ActionBarScreen() {
- return require('./screens/componentScreens/ActionBarScreen').default;
- },
- get AvatarsScreen() {
- return require('./screens/componentScreens/AvatarsScreen').default;
- },
- get AnimatedImageScreen() {
- return require('./screens/componentScreens/AnimatedImageScreen').default;
- },
- get ButtonsScreen() {
- return require('./screens/componentScreens/ButtonsScreen').default;
- },
- get BadgesScreen() {
- return require('./screens/componentScreens/BadgesScreen').default;
- },
- get CardsScreen() {
- return require('./screens/componentScreens/CardsScreen').default;
- },
- get CarouselScreen() {
- return require('./screens/componentScreens/CarouselScreen').default;
- },
- get CarouselVerticalScreen() {
- return require('./screens/componentScreens/CarouselVerticalScreen').default;
- },
- get CheckboxScreen() {
- return require('./screens/componentScreens/CheckboxScreen').default;
- },
- get ChipScreen() {
- return require('./screens/componentScreens/ChipScreen').default;
- },
- get ConnectionStatusBarScreen() {
- return require('./screens/componentScreens/ConnectionStatusBarScreen').default;
- },
- get DialogScreen() {
- return require('./screens/componentScreens/DialogScreen').default;
- },
- get DrawerScreen() {
- return require('./screens/componentScreens/DrawerScreen').default;
- },
- get ExpandableSectionScreen() {
- return require('./screens/componentScreens/ExpandableSectionScreen').default;
- },
- get ChipsInputScreen() {
- return require('./screens/componentScreens/ChipsInputScreen').default;
- },
- get HapticScreen() {
- return require('./screens/componentScreens/HapticScreen').default;
- },
- get HintsScreen() {
- return require('./screens/componentScreens/HintsScreen').default;
- },
- get HorizontalSortableListScreen() {
- return require('./screens/componentScreens/HorizontalSortableListScreen').default;
- },
- get IconScreen() {
- return require('./screens/componentScreens/IconScreen').default;
- },
- get ImageScreen() {
- return require('./screens/componentScreens/ImageScreen').default;
- },
- get ProgressiveImageScreen() {
- return require('./screens/componentScreens/ProgressiveImageScreen').default;
- },
- get MaskedInputScreen() {
- return require('./screens/componentScreens/MaskedInputScreen').default;
- },
- get OverlaysScreen() {
- return require('./screens/componentScreens/OverlaysScreen').default;
- },
- get PageControlScreen() {
- return require('./screens/componentScreens/PageControlScreen').default;
- },
- get PanDismissibleScreen() {
- return require('./screens/componentScreens/PanDismissibleScreen').default;
- },
- get PanListenerScreen() {
- return require('./screens/componentScreens/PanListenerScreen').default;
- },
- get PanResponderScreen() {
- return require('./screens/componentScreens/PanResponderScreen').default;
- },
- get PickerScreen() {
- return require('./screens/componentScreens/PickerScreen').default;
- },
- get RadioButtonScreen() {
- return require('./screens/componentScreens/RadioButtonScreen').default;
- },
- get SectionsWheelPickerScreen() {
- return require('./screens/componentScreens/SectionsWheelPickerScreen').default;
- },
- get SegmentedControlScreen() {
- return require('./screens/componentScreens/SegmentedControlScreen').default;
- },
- get SharedTransitionScreen() {
- return require('./screens/componentScreens/SharedTransitionScreen').default;
- },
- get SkeletonViewScreen() {
- return require('./screens/componentScreens/SkeletonViewScreen').default;
- },
- get SortableListScreen() {
- return require('./screens/componentScreens/SortableListScreen').default;
- },
- get StepperScreen() {
- return require('./screens/componentScreens/StepperScreen').default;
- },
- get SwitchScreen() {
- return require('./screens/componentScreens/SwitchScreen').default;
- },
- get ToastsScreen() {
- return require('./screens/componentScreens/ToastsScreen').default;
- },
- get TabControllerScreen() {
- return require('./screens/componentScreens/TabControllerScreen').default;
- },
- get TextScreen() {
- return require('./screens/componentScreens/TextScreen').default;
- },
- // TODO: fix Expo issues (navigation) before un-commenting
- get TextFieldScreen() {
- return require('./screens/componentScreens/TextFieldScreen').default;
- },
- get TourScreen() {
- return require('./screens/componentScreens/TourScreen').default;
- },
- get FeatureHighlightScreen() {
- return require('./screens/componentScreens/FeatureHighlightScreen').default;
- },
- get SliderScreen() {
- return require('./screens/componentScreens/SliderScreen').default;
- },
- get FloatingButtonScreen() {
- return require('./screens/componentScreens/FloatingButtonScreen').default;
- },
- get ColorPickerScreen() {
- return require('./screens/componentScreens/ColorPickerScreen').default;
- },
- get ColorSwatchScreen() {
- return require('./screens/componentScreens/ColorSwatchScreen').default;
- },
- get StackAggregatorScreen() {
- return require('./screens/componentScreens/StackAggregatorScreen').default;
- },
- get DateTimePickerScreen() {
- return require('./screens/componentScreens/DateTimePickerScreen').default;
- },
- get ViewScreen() {
- return require('./screens/componentScreens/ViewScreen').default;
- },
- get WizardScreen() {
- return require('./screens/componentScreens/WizardScreen').default;
- },
- // nativeComponentScreens
- get DynamicFontsScreen() {
- return require('./screens/nativeComponentScreens/DynamicFontsScreen').default;
- },
- get HighlightOverlayViewScreen() {
- return require('./screens/nativeComponentScreens/HighlightOverlayViewScreen').default;
- },
- get SafeAreaSpacerViewScreen() {
- return require('./screens/nativeComponentScreens/SafeAreaSpacerViewScreen').default;
- },
- // Full Screen components
- get EmptyStateScreen() {
- return require('./screens/componentScreens/EmptyStateScreen').default;
- },
- get LoadingScreen() {
- return require('./screens/componentScreens/LoadingScreen').default;
- },
- // TODO: fix Expo issues (navigation) before un-commenting
- // get ModalScreen() {
- // return require('./screens/componentScreens/ModalScreen').default;
- // },
- // listScreens
- get BasicListScreen() {
- return require('./screens/componentScreens/BasicListScreen').default;
- },
- get ContactsListScreen() {
- return require('./screens/componentScreens/ContactsListScreen').default;
- },
- get ConversationListScreen() {
- return require('./screens/componentScreens/ConversationListScreen').default;
- },
- // styleScreens
- get BorderRadiusesScreen() {
- return require('./screens/foundationScreens/BorderRadiusesScreen').default;
- },
- get ColorsScreen() {
- return require('./screens/foundationScreens/ColorsScreen').default;
- },
- get DarkMode() {
- return require('./screens/foundationScreens/DarkModeScreen').default;
- },
- get TypographyScreen() {
- return require('./screens/foundationScreens/TypographyScreen').default;
- },
- get ShadowsScreen() {
- return require('./screens/foundationScreens/ShadowsScreen').default;
- },
- get SpacingsScreen() {
- return require('./screens/foundationScreens/SpacingsScreen').default;
- },
- get RTLScreen() {
- return require('./screens/foundationScreens/RTLScreen').default;
- },
- // animationScreens
- get CardScannerScreen() {
- return require('./screens/componentScreens/CardScannerScreen').default;
- },
- get ProgressBarScreen() {
- return require('./screens/componentScreens/ProgressBarScreen').default;
- },
- get ScrollBar() {
- return require('./screens/componentScreens/ScrollBarScreen').default;
- },
- get Marquee() {
- return require('./screens/componentScreens/MarqueeScreen').default;
- },
- get NumberInput() {
- return require('./screens/componentScreens/NumberInputScreen').default;
- },
- get WheelPicker() {
- return require('./screens/componentScreens/WheelPickerScreen').default;
- },
- get GridList() {
- return require('./screens/componentScreens/GridListScreen').default;
- },
- get SortableGridList() {
- return require('./screens/componentScreens/SortableGridListScreen').default;
- },
- // Incubator
- get PanViewScreen() {
- return require('./screens/incubatorScreens/PanViewScreen').default;
- },
- get IncubatorSlider() {
- return require('./screens/incubatorScreens/IncubatorSliderScreen').default;
- },
- get IncubatorDialog() {
- return require('./screens/incubatorScreens/IncubatorDialogScreen').default;
- },
- get IncubatorToast() {
- return require('./screens/incubatorScreens/IncubatorToastScreen').default;
- },
- get IncubatorExpandableOverlay() {
- return require('./screens/incubatorScreens/IncubatorExpandableOverlayScreen').default;
- },
- // realExamples
- get AppleMusic() {
- return require('./screens/realExamples/AppleMusic').default;
- },
- get Pinterest() {
- return require('./screens/realExamples/Pinterest').default;
- },
- get ListActionsScreen() {
- return require('./screens/realExamples/ListActions/ListActionsScreen').default;
- },
- get ProductPage() {
- return require('./screens/realExamples/ProductPage').default;
- },
- get Twitter() {
- return require('./screens/realExamples/Twitter').default;
- },
- // wrapperScreens
- get TouchableOpacityScreen() {
- return require('./screens/componentScreens/TouchableOpacityScreen').default;
- },
- get Modal() {
- return require('./screens/componentScreens/ModalScreen').default;
- },
- get Timeline() {
- return require('./screens/componentScreens/TimelineScreen').default;
- },
- get WithScrollEnabler() {
- return require('./screens/componentScreens/WithScrollEnablerScreen').default;
- },
- get WithScrollReached() {
- return require('./screens/componentScreens/WithScrollReachedScreen').default;
- },
- get Fader() {
- return require('./screens/componentScreens/FaderScreen').default;
- },
- get GridView() {
- return require('./screens/componentScreens/GridViewScreen').default;
- },
- get Playground() {
- return require('./screens/PlaygroundScreen').default;
- },
- get KeyboardAwareScrollView() {
- return require('./screens/componentScreens/KeyboardAwareScrollViewScreen').default;
- }
- };
- },
- // General
- get ExampleScreenPresenter() {
- return require('./screens/ExampleScreenPresenter');
- }
-};
diff --git a/demo/src/navigation.js b/demo/src/navigation.js
deleted file mode 100644
index 766ee41196..0000000000
--- a/demo/src/navigation.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import {Navigation} from 'react-native-navigation';
-
-export const pushScreen = ({componentId, name, title, passProps}) => {
- Navigation.push(componentId, {
- component: {
- name,
- passProps,
- options: {
- topBar: {
- title: {
- text: title
- }
- }
- }
- }
- });
-};
-
-export const showModal = ({name, title, passProps}) => {
- Navigation.showModal({
- stack: {
- children: [
- {
- component: {
- name,
- passProps,
- options: {
- topBar: {
- title: {
- text: title
- }
- }
- }
- }
- }
- ]
- }
- });
-};
diff --git a/demo/src/screens/DemoScreen.js b/demo/src/screens/DemoScreen.js
deleted file mode 100644
index 0b501336d2..0000000000
--- a/demo/src/screens/DemoScreen.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import React, {Component} from 'react';
-import PropTypes from 'prop-types';
-import _ from 'lodash';
-import {ScrollView, Switch} from 'react-native';
-import {View, TextField, Text, Badge, Colors} from 'react-native-ui-lib';//eslint-disable-line
-
-export default class DemoScreen extends Component {
-
- constructor(props) {
- super(props);
-
- this.state = {
- backgroundColor: Colors.red50,
- label: '12',
- };
-
- this.updatePropValue = this.updatePropValue.bind(this);
- }
-
- componentDidMount() {
- this.getComponentProps();
- }
-
- getComponentProps() {
- const DemoComponent = this.getComponent();
- return DemoComponent.propTypes;
- }
-
- shouldRenderProp(propId) {
- let shouldRender = true;
- shouldRender = shouldRender && propId !== 'testID';
- if (this.propsToRender) {
- shouldRender = shouldRender && _.includes(this.propsToRender, propId);
- }
- return shouldRender;
- }
-
- updatePropValue(value, propId, prop) {
- let validValue = value;
-
- if (prop === PropTypes.number) {
- validValue = isNaN(value) ? undefined : Number(value);
- }
-
- this.setState({
- [propId]: validValue,
- });
- }
-
-
- renderProp(prop, propId) {
- if (!this.shouldRenderProp(propId)) return;
-
- if (PropTypes.bool === prop) {
- return (
-
-
- {propId}
-
- this.updatePropValue(value, propId, prop)}
- />
-
- );
- }
-
- // if (_.includes([PropTypes.string, PropTypes.number], prop)) {
- return (
-
- this.updatePropValue(text, propId, prop)}
- autoCapitalize='none'
- />
-
- );
- // }
- }
-
- renderComponentSettings() {
- const props = this.getComponentProps();
- return (
-
-
- {_.map(props, (prop, propId) => {
- return this.renderProp(prop, propId);
- })}
-
-
- );
- }
-}
diff --git a/demo/src/screens/ExampleScreenPresenter.tsx b/demo/src/screens/ExampleScreenPresenter.tsx
deleted file mode 100644
index 638de2cf70..0000000000
--- a/demo/src/screens/ExampleScreenPresenter.tsx
+++ /dev/null
@@ -1,230 +0,0 @@
-import _ from 'lodash';
-import React from 'react';
-import {StyleSheet} from 'react-native';
-import {
- Checkbox,
- Switch,
- ColorPalette,
- Colors,
- RadioButton,
- RadioGroup,
- Slider,
- SegmentedControl,
- SegmentedControlItemProps,
- Text,
- TextProps,
- View
-} from 'react-native-ui-lib';
-
-interface RadioGroupOptions {
- isRow?: boolean;
- afterValueChanged?: () => void;
- useValueAsLabel?: boolean;
-}
-
-interface BooleanGroupOptions {
- spread?: boolean;
- afterValueChanged?: () => void;
- state?: boolean;
- setState?: React.Dispatch>;
-}
-
-interface SegmentsExtraOptions {
- state?: string;
- setState?: React.Dispatch >;
-}
-
-export function renderHeader(title: string, others?: TextProps) {
- return (
-
- {title}
-
- );
-}
-
-export function renderBooleanOption(title: string,
- key: string,
- {spread, afterValueChanged, state, setState}: BooleanGroupOptions = {spread: true}) {
- // @ts-ignore
- const value = state ?? this.state[key];
- return (
-
-
- {title}
-
- {
- if (setState) {
- setState(value);
- } else {
- // @ts-ignore
- this.setState({[key]: value}, afterValueChanged);
- }
- }}
- />
-
- );
-}
-
-export function renderBooleanGroup(title: string, options: string[]) {
- return (
-
-
- {title}
-
-
- {_.map(options, key => {
- // @ts-ignore
- const value = this.state[key];
- return (
-
- this.setState({[key]: value})}
- />
-
- {key}
-
-
- );
- })}
-
-
- );
-}
-
-export function renderRadioGroup(title: string,
- key: string,
- options: object,
- {isRow, afterValueChanged, useValueAsLabel}: RadioGroupOptions = {}) {
- // @ts-ignore
- const value = this.state[key];
- return (
-
- {!_.isUndefined(title) && (
-
- {title}
-
- )}
- this.setState({[key]: value}, afterValueChanged)}
- >
- {_.map(options, (value, key) => {
- return (
-
- );
- })}
-
-
- );
-}
-
-export function renderColorOption(title: string,
- key: string,
- colors = ['transparent', Colors.blue30, Colors.grey10, Colors.yellow30, Colors.green30, Colors.purple30]) {
- // @ts-ignore
- const value = this.state[key];
- return (
-
-
- {title}
-
- this.setState({[key]: value === 'transparent' ? undefined : value})}
- />
-
- );
-}
-
-export function renderSliderOption(title: string,
- key: string,
- {min = 0, max = 10, step = 1, initial = 0, sliderText = ''}) {
- // @ts-ignore
- const value = this.state[key] || initial;
- return (
-
-
- {title}
-
-
- this.setState({[key]: value})}
- />
-
- {sliderText}
- {value}
-
-
-
- );
-}
-
-export function renderMultipleSegmentOptions(title: string,
- key: string,
- options: (SegmentedControlItemProps & {value: any})[],
- {state, setState}: SegmentsExtraOptions = {}) {
- // @ts-ignore
- const value = state ?? this.state[key];
- const index = _.findIndex(options, {value});
-
- return (
-
- {!!title && (
-
- {title}
-
- )}
- {
- const value = options[index].value;
- if (setState) {
- setState(value);
- } else {
- // @ts-ignore
- this.setState({[key]: value});
- }
- }}
- />
-
- );
-}
-
-const styles = StyleSheet.create({
- rowWrap: {
- flexWrap: 'wrap'
- },
- text: {
- width: 30
- }
-});
diff --git a/demo/src/screens/MainScreen.js b/demo/src/screens/MainScreen.js
deleted file mode 100644
index 7284e25b1a..0000000000
--- a/demo/src/screens/MainScreen.js
+++ /dev/null
@@ -1,465 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import PropTypes from 'prop-types';
-import {StyleSheet, FlatList, SectionList, ScrollView} from 'react-native';
-import {ViewPropTypes} from 'deprecated-react-native-prop-types';
-import {Navigation} from 'react-native-navigation';
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-import {
- Assets,
- Colors,
- Spacings,
- View,
- Text,
- TextField,
- TouchableOpacity,
- Icon,
- Button,
- Fader,
- Chip,
- Dividers
-} from 'react-native-ui-lib'; //eslint-disable-line
-import {navigationData} from './MenuStructure';
-import Storage, {DEFAULT_SCREEN} from '../storage';
-
-const settingsIcon = require('../assets/icons/settings.png');
-const chevronIcon = require('../assets/icons/chevronRight.png');
-const FADER_SIZE = 50;
-
-class MainScreen extends Component {
- static propTypes = {
- containerStyle: ViewPropTypes.style,
- renderItem: PropTypes.func,
- pageStyle: ViewPropTypes.style
- };
-
- settingsScreenName = 'unicorn.Settings';
-
- static options() {
- return {
- topBar: {
- rightButtons: [
- {
- id: 'uilib.settingsButton',
- testID: 'uilib.settingsButton',
- enabled: true,
- icon: settingsIcon
- }
- ]
- }
- };
- }
-
- constructor(props) {
- super(props);
-
- const data = props.navigationData || navigationData;
- this.state = {
- currentPage: 0,
- filteredNavigationData: data,
- chipsLabels: _.map(data, section => section.title),
- sectionsData: _.map(data, section => ({title: section.title, data: section.screens})),
- selectedSection: 0,
- faderStart: false,
- faderEnd: true
- };
-
- Navigation.events().bindComponent(this);
- }
-
- sectionListRef = React.createRef();
- scrollViewRef = React.createRef();
-
- viewabilityConfig = {itemVisiblePercentThreshold: 60};
-
- hasPressItem = false;
- hasUserScrolled = false;
-
- componentDidUpdate(prevState) {
- const {selectedSection} = this.state;
- if (prevState.selectedSection !== selectedSection) {
- if (this.hasPressItem) {
- this.scrollToSection(selectedSection);
- this.scrollChipsSection(selectedSection);
- }
- if (this.hasUserScrolled) {
- this.scrollChipsSection(selectedSection);
- }
- this.hasPressItem = false;
- }
- }
-
- onSearchBoxBlur = () => {
- this.closeSearchBox();
- };
-
- getMenuData = () => {
- return this.props.navigationData || navigationData;
- };
-
- navigationButtonPressed = event => {
- const {buttonId} = event;
- const data = this.getMenuData();
-
- if (buttonId === 'uilib.settingsButton') {
- this.pushScreen({
- name: this.settingsScreenName,
- passProps: {
- navigationData: data,
- playground: this.props.playground,
- extraSettingsUI: this.props.extraSettingsUI
- }
- });
- }
- };
-
- scrollToSection = index => {
- this?.sectionListRef?.current?.scrollToLocation({
- animated: true,
- sectionIndex: index,
- itemIndex: 1,
- viewPosition: 0
- });
- };
-
- scrollChipsSection = index => {
- const {selectedSection, filterText} = this.state;
- const offset = index < selectedSection ? 60 * index : 85 * index;
- if (!filterText) {
- this?.scrollViewRef?.current.scrollTo({x: offset, animated: true});
- }
- };
-
- pushScreen = options => {
- Navigation.push(this.props.componentId, {
- component: {
- name: options.name || options.screen,
- id: this.settingsScreenName,
- passProps: options.passProps,
- options: {
- topBar: {
- title: {
- text: options.title
- }
- }
- }
- }
- });
- };
-
- closeSearchBox = () => {
- this.input?.blur();
- };
-
- setDefaultScreen = ({customValue: item}) => {
- Storage.set(DEFAULT_SCREEN, item.screen);
- this.openScreen({customValue: item});
- };
-
- openScreen = ({customValue: row}) => {
- this.closeSearchBox();
-
- setTimeout(() => {
- this.pushScreen(row);
- }, 0);
- };
-
- updateSearch = _.throttle(filterText => {
- this.setState({filterText}, () => {
- this.filterExplorerScreens();
- });
- }, 800);
-
- clearSearch = () => {
- this.updateSearch('');
- this.input?.clear();
- };
-
- filterExplorerScreens = () => {
- const {filterText} = this.state;
- let filteredNavigationData = {};
- const data = this.getMenuData();
-
- if (!filterText) {
- filteredNavigationData = data;
- } else {
- _.each(data, (menuSection, menuSectionKey) => {
- const filteredMenuSection = _.filter(menuSection.screens, menuItem => {
- const {title, description, tags} = menuItem;
- return (
- _.includes(_.toLower(title), _.toLower(filterText)) ||
- _.includes(_.toLower(description), _.toLower(filterText)) ||
- _.includes(_.toLower(tags), _.toLower(filterText))
- );
- });
-
- if (!_.isEmpty(filteredMenuSection)) {
- filteredNavigationData[menuSectionKey] = filteredMenuSection;
- }
- });
- }
-
- this.setState({
- filteredNavigationData
- });
- };
-
- setHasUserScrolled = () => {
- this.hasUserScrolled = true;
- };
-
- removeHasUserScrolled = () => {
- this.hasUserScrolled = false;
- };
-
- onEndReached = () => {
- const {chipsLabels} = this.state;
- this.removeHasUserScrolled;
- this.scrollChipsSection(chipsLabels.length - 1);
- this.setState({
- selectedSection: chipsLabels.length - 1,
- faderStart: true,
- faderEnd: false
- });
- };
-
- /** Renders */
- renderSearch = () => {
- const {filterText} = this.state;
- return (
- (this.input = r)}
- testID="uilib.search_for_component"
- placeholder="Search for your component..."
- onChangeText={this.updateSearch}
- onBlur={this.onSearchBoxBlur}
- containerStyle={styles.searchContainer}
- fieldStyle={styles.searchField}
- enableErrors={false}
- hideUnderline
- floatingPlaceholder={false}
- text70
- leadingAccessory={
-
-
-
- }
- trailingAccessory={
- filterText ? (
-
- ) : undefined
- }
- />
- );
- };
-
- onPress = ({customValue: index}) => {
- const {chipsLabels} = this.state;
- this.hasPressItem = true;
- this.hasUserScrolled = false;
- this.setState({
- selectedSection: index,
- faderStart: index !== 0,
- faderEnd: index !== chipsLabels.length - 1
- });
- };
-
- onCheckViewableItems = ({viewableItems}) => {
- const {chipsLabels, selectedSection} = this.state;
- if (!this.hasPressItem && this.hasUserScrolled) {
- const title = viewableItems[0]?.section.title;
- const sectionIndex = _.findIndex(chipsLabels, c => {
- return c === title;
- });
-
- if (sectionIndex !== -1 && sectionIndex !== selectedSection) {
- this.setState({
- selectedSection: sectionIndex,
- faderStart: sectionIndex !== 0,
- faderEnd: sectionIndex !== chipsLabels.length - 1
- });
- }
- }
- };
-
- renderChip(label, index) {
- return (
-
- );
- }
-
- renderSectionHeader = ({section}) => {
- return ;
- };
-
- renderItem = ({item}) => {
- const {renderItem} = this.props;
-
- if (renderItem) {
- return renderItem({item}, this.openScreen);
- }
-
- if (item.screen) {
- return ;
- } else {
- return (
-
- {item.title}
-
- );
- }
- };
-
- renderSearchResults(data) {
- const flatData = _.flatMap(data);
-
- return (
- index.toString()}
- renderItem={this.renderItem}
- />
- );
- }
-
- render() {
- const {containerStyle} = this.props;
- const {filteredNavigationData, filterText} = this.state;
- const showNoResults = _.isEmpty(filteredNavigationData) && !!filterText;
- const showResults = !_.isEmpty(filteredNavigationData) && !!filterText;
- const showSectionList = !filterText;
- const chipsLabels = this.state.chipsLabels;
- const sectionsData = this.state.sectionsData;
-
- return (
-
- {this.renderSearch(this.navigationData)}
-
- {showResults && this.renderSearchResults(filteredNavigationData)}
- {showSectionList && (
-
-
- {chipsLabels.map((label, index) => {
- return this.renderChip(label, index);
- })}
-
-
-
-
- )}
-
- {showSectionList && (
- item + index}
- renderItem={this.renderItem}
- renderSectionHeader={this.renderSectionHeader}
- onViewableItemsChanged={this.onCheckViewableItems}
- viewabilityConfig={this.viewabilityConfig}
- onScrollBeginDrag={this.setHasUserScrolled}
- onScrollEndDrag={this.removeHasUserScrolled}
- onMomentumScrollBegin={this.setHasUserScrolled}
- onMomentumScrollEnd={this.removeHasUserScrolled}
- onEndReached={this.onEndReached}
- />
- )}
-
- {showNoResults && (
-
-
- Sorry, nothing was found. Try Button or something..
-
-
- )}
-
- );
- }
-}
-
-const SectionItem = React.memo(props => {
- const {item, onPress, onLongPress} = props;
- return (
-
-
- {item.title}
-
-
-
- );
-});
-
-const SectionHeader = React.memo(props => {
- const {section} = props;
- return (
-
-
- {section.title}
-
-
- );
-});
-
-const styles = StyleSheet.create({
- entryTextDeprecated: {
- textDecorationLine: 'line-through'
- },
- searchContainer: {
- padding: Spacings.s1,
- paddingBottom: 0
- },
- searchField: {
- padding: Spacings.s3,
- borderRadius: 8
- },
- chipContainer: {
- height: 20
- },
- selectedChipContainer: {
- height: 20,
- borderColor: Colors.$textPrimary
- },
- selectedChip: {
- color: Colors.$textPrimary
- },
- scrollViewContainer: {
- borderBottomColor: Colors.$outlineDefault,
- borderBottomWidth: 1,
- borderTopColor: Colors.$outlineDefault,
- borderTopWidth: 1
- },
- searchResultsContainer: {paddingTop: 20}
-});
-
-export default gestureHandlerRootHOC(MainScreen);
diff --git a/demo/src/screens/MenuStructure.js b/demo/src/screens/MenuStructure.js
deleted file mode 100644
index 4b85987a68..0000000000
--- a/demo/src/screens/MenuStructure.js
+++ /dev/null
@@ -1,214 +0,0 @@
-export const navigationData = {
- Foundation: {
- title: 'Foundation',
- screens: [
- {title: 'Border Radius', tags: 'corener border radius circle', screen: 'unicorn.style.BorderRadiusesScreen'},
- {title: 'Colors', tags: 'palette rgb hex', screen: 'unicorn.style.ColorsScreen'},
- {title: 'Dark Mode', tags: 'dark mode colors', screen: 'unicorn.style.DarkModeScreen'},
- {title: 'Shadows (iOS)', tags: 'shadow', screen: 'unicorn.style.ShadowsScreen'},
- {title: 'Spacings', tags: 'space margins paddings gutter', screen: 'unicorn.style.SpacingsScreen'},
- {title: 'Typography', tags: 'fonts text', screen: 'unicorn.style.TypographyScreen'},
- {title: 'RTL Support', tags: 'rtl', screen: 'unicorn.style.RTLScreen'}
- ]
- },
- // Wrappers: {
- // title: 'Wrappers',
- // screens: [
- // // {title: 'View', tags: 'view wrapper', screen: 'unicorn.wrappers.ViewScreen'},
- // // {title: 'Text', tags: 'text wrapper', screen: 'unicorn.wrappers.TextScreen'},
- // {title: 'TouchableOpacity', tags: 'touchableOpacity wrapper', screen: 'unicorn.wrappers.TouchableOpacityScreen'}
- // ]
- // },
- Components: {
- title: 'Components',
- screens: [
- {title: 'Text', tags: 'text', screen: 'unicorn.components.TextScreen'},
- {title: 'View', tags: 'view modifiers', screen: 'unicorn.components.ViewScreen'},
- {title: 'Image', tags: 'image cover overlay', screen: 'unicorn.components.ImageScreen'},
- {title: 'Button', tags: 'button cta', screen: 'unicorn.components.ButtonsScreen'},
- {title: 'Action Bar', tags: 'action bar floating bottom', screen: 'unicorn.components.ActionBarScreen'},
- {title: 'Avatars', tags: 'avatar contact', screen: 'unicorn.components.AvatarsScreen'},
- {title: 'Badges', tags: 'badge', screen: 'unicorn.components.BadgesScreen'},
- {title: 'Cards', tags: 'cards feed', screen: 'unicorn.components.CardsScreen'},
- {title: 'Connection Status Bar', tags: 'connection status bar', screen: 'unicorn.components.ConnectionStatusBar'},
- {title: 'Chip', tags: 'chip', screen: 'unicorn.components.ChipScreen'},
- {title: 'ExpandableSection', tags: 'expandable section', screen: 'unicorn.components.ExpandableSectionScreen'},
- {title: 'Icon', tags: 'image icon assets', screen: 'unicorn.components.IconScreen'},
- // {title: 'Overlays', tags: 'overlay image', screen: 'unicorn.components.OverlaysScreen'},
- {title: 'Page Control', tags: 'page', screen: 'unicorn.components.PageControlScreen'},
- {title: 'ProgressBar', tags: 'progress bar animated', screen: 'unicorn.animations.ProgressBarScreen'},
- {title: 'ScrollBar', tags: 'scroll bar gradient', screen: 'unicorn.components.ScrollBarScreen'},
- {
- title: 'Shared Transition',
- tags: 'shared transition element',
- screen: 'unicorn.components.SharedTransitionScreen'
- },
- {title: 'Stack Aggregator', tags: 'stack aggregator', screen: 'unicorn.components.StackAggregatorScreen'},
- {title: 'Marquee', tags: 'sliding text', screen: 'unicorn.components.MarqueeScreen'}
- ]
- },
- Form: {
- title: 'Form',
- screens: [
- {title: 'Checkbox', tags: 'checkbox toggle controls', screen: 'unicorn.components.CheckboxScreen'},
- {title: 'ColorPicker', tags: 'color picker control', screen: 'unicorn.components.ColorPickerScreen'},
- {title: 'Color Swatch', tags: 'color swatch and palette', screen: 'unicorn.components.ColorSwatchScreen'},
- {title: 'TextField', tags: 'text input field form', screen: 'unicorn.components.TextFieldScreen'},
- {title: 'NumberInput', tags: 'number input', screen: 'unicorn.components.NumberInputScreen'},
- {title: 'Picker', tags: 'picker form', screen: 'unicorn.components.PickerScreen'},
- {title: 'DateTimePicker', tags: 'date time picker form', screen: 'unicorn.components.DateTimePickerScreen'},
- {title: 'RadioButton', tags: 'radio button group controls', screen: 'unicorn.components.RadioButtonScreen'},
- {
- title: 'SectionsWheelPicker',
- tags: 'sections wheel picker form',
- screen: 'unicorn.components.SectionsWheelPickerScreen'
- },
- {
- title: 'SegmentedControl',
- tags: 'segmented control switch toggle',
- screen: 'unicorn.components.SegmentedControlScreen'
- },
- {title: 'Stepper', tags: 'stepper form', screen: 'unicorn.components.StepperScreen'},
- {title: 'Slider', tags: 'slider', screen: 'unicorn.components.SliderScreen'},
- {title: 'Slider (Incubator)', tags: 'slider', screen: 'unicorn.components.IncubatorSliderScreen'},
- {title: 'Switch', tags: 'switch toggle', screen: 'unicorn.components.SwitchScreen'},
- {title: 'Masked Inputs', tags: 'text input form mask', screen: 'unicorn.components.MaskedInputScreen'},
- {
- title: 'WheelPicker',
- tags: 'wheel picker spinner',
- screen: 'unicorn.components.WheelPickerScreen'
- }
- ]
- },
- Overlays: {
- title: 'Overlays',
- screens: [
- {title: 'Action Sheet', tags: 'action sheet cross-platform', screen: 'unicorn.components.ActionSheetScreen'},
- {title: 'Dialog', tags: 'dialog modal popup alert', screen: 'unicorn.components.DialogScreen'},
- {title: 'Feature Highlight', tags: 'feature overlay', screen: 'unicorn.components.FeatureHighlightScreen'},
- {title: 'Floating Button', tags: 'floating button', screen: 'unicorn.components.FloatingButtonScreen'},
- {title: 'Hint', tags: 'hints tooltip', screen: 'unicorn.components.HintsScreen'},
- {title: 'Toast', tags: 'toast top bottom snackbar', screen: 'unicorn.components.ToastsScreen'}
- ]
- },
- Lists: {
- title: 'Lists',
- screens: [
- {title: 'Basic List', tags: 'basic list', screen: 'unicorn.lists.BasicListScreen'},
- {title: 'Contacts List', tags: 'list contacts', screen: 'unicorn.lists.ContactsListScreen'},
- {title: 'Conversation List', tags: 'list conversation', screen: 'unicorn.lists.ConversationListScreen'},
- {title: 'Drawer', tags: 'drawer', screen: 'unicorn.components.DrawerScreen'},
- {title: 'SortableList', tags: 'sortable list drag', screen: 'unicorn.components.SortableListScreen'},
- {title: 'HorizontalSortableList', tags: 'sortable horizontal list drag', screen: 'unicorn.components.HorizontalSortableListScreen'},
- {title: 'GridList', tags: 'grid list', screen: 'unicorn.components.GridListScreen'},
- {title: 'SortableGridList', tags: 'sort grid list drag', screen: 'unicorn.components.SortableGridListScreen'}
- ]
- },
- LayoutsAndTemplates: {
- title: 'Layouts & Templates',
- screens: [
- {title: 'Carousel', tags: 'carousel', screen: 'unicorn.components.CarouselScreen'},
- {title: 'Carousel (Vertical)', tags: 'carousel', screen: 'unicorn.components.CarouselVerticalScreen'},
- {title: 'Skeleton (Shimmer)', tags: 'skeleton loading', screen: 'unicorn.components.SkeletonViewScreen'},
- {title: 'LoadingScreen', tags: 'loading screen', screen: 'unicorn.screens.LoadingScreen'},
- {title: 'Modal', tags: 'modal topbar screen', screen: 'unicorn.screens.ModalScreen'},
- {title: 'StateScreen', tags: 'empty state screen', screen: 'unicorn.screens.EmptyStateScreen'},
- {title: 'TabController', tags: 'tabbar controller native', screen: 'unicorn.components.TabControllerScreen'},
- {title: 'Timeline', tags: 'timeline', screen: 'unicorn.components.TimelineScreen'},
- {
- title: 'withScrollEnabler',
- tags: 'scroll enabled withScrollEnabler',
- screen: 'unicorn.components.WithScrollEnablerScreen'
- },
- {
- title: 'withScrollReached',
- tags: 'scroll reach start end',
- screen: 'unicorn.components.WithScrollReachedScreen'
- },
- {
- title: 'Fader',
- tags: 'scroll fader',
- screen: 'unicorn.components.FaderScreen'
- },
- {title: 'Wizard', tags: 'wizard', screen: 'unicorn.components.WizardScreen'},
- {title: 'GridView', tags: 'grid view', screen: 'unicorn.components.GridViewScreen'}
- ]
- },
- Native: {
- title: 'Native',
- screens: [
- {
- title: 'KeyboardAwareScrollView',
- tags: 'KeyboardAwareScrollView',
- screen: 'unicorn.components.KeyboardAwareScrollViewScreen'
- },
- {
- title: 'Dynamic Fonts',
- tags: 'dynamic fonts load download',
- screen: 'unicorn.nativeComponents.DynamicFontsScreen'
- },
- {
- title: 'Highlight Overlay',
- tags: 'native overlay',
- screen: 'unicorn.nativeComponents.HighlightOverlayViewScreen'
- },
- {title: 'SafeArea Spacer', tags: 'native safe area', screen: 'unicorn.nativeComponents.SafeAreaSpacerViewScreen'},
- {
- title: 'KeyboardTracking (iOS)',
- tags: 'KeyboardTracking',
- screen: 'unicorn.nativeComponents.KeyboardTrackingViewScreen'
- },
- {
- title: 'KeyboardAccessoryView',
- tags: 'KeyboardInput',
- screen: 'unicorn.nativeComponents.KeyboardAccessoryViewScreen'
- }
- ]
- },
- AnimationsAndGestures: {
- title: 'Animations & Gestures',
- screens: [
- {title: 'Animated Image', tags: 'animated image', screen: 'unicorn.components.AnimatedImageScreen'},
- {title: 'Haptic feedback', tags: 'haptic feedback', screen: 'unicorn.components.HapticScreen'},
- {
- title: 'ProgressiveImage',
- tags: 'progressive image cover overlay',
- screen: 'unicorn.components.ProgressiveImageScreen'
- },
- {title: 'Card Scanner', tags: 'card scanner process', screen: 'unicorn.animations.CardScannerScreen'},
- {title: 'Pan Dismissible', tags: 'pan swipe drag dismiss', screen: 'unicorn.components.PanDismissibleScreen'},
- {title: 'Pan Listener', tags: 'pan swipe drag listener', screen: 'unicorn.components.PanListenerScreen'},
- {title: 'Pan Responder', tags: 'pan swipe drag responder', screen: 'unicorn.components.PanResponderScreen'}
- ]
- },
- Incubator: {
- title: 'Incubator (Experimental)',
- screens: [
- {title: 'Calendar', tags: 'calendar', screen: 'unicorn.components.IncubatorCalendarScreen'},
- {title: 'ChipsInput', tags: 'chips input', screen: 'unicorn.components.ChipsInputScreen'},
- {title: 'Native TouchableOpacity', tags: 'touchable native', screen: 'unicorn.incubator.TouchableOpacityScreen'},
- {title: 'Dialog (New)', tags: 'dialog modal popup alert', screen: 'unicorn.incubator.IncubatorDialogScreen'},
- {title: 'Toast (New)', tags: 'toast', screen: 'unicorn.components.IncubatorToastScreen'},
- {
- title: 'ExpandableOverlay',
- tags: 'text field expandable input picker',
- screen: 'unicorn.components.IncubatorExpandableOverlayScreen'
- },
- {title: 'PanView', tags: 'pan swipe drag', screen: 'unicorn.incubator.PanViewScreen'}
- ]
- },
- Inspirations: {
- title: 'Inspirations',
- screens: [
- {title: 'Apple Music', tags: 'apple music demo screen', screen: 'unicorn.examples.AppleMusic'},
- {title: 'Pinterest', tags: 'pinterest demo screen', screen: 'unicorn.examples.Pinterest'},
- {title: 'List Actions', tags: 'list actions demo screen', screen: 'unicorn.examples.ListActionsScreen'},
- {title: 'Product Page', tags: 'product page demo screen', screen: 'unicorn.examples.ProductPage'},
- {title: 'Twitter', tags: 'twitter demo screen', screen: 'unicorn.examples.Twitter'}
- ]
- }
-};
-
-if (__DEV__) {
- navigationData.Foundation.screens.unshift({title: 'Playground', screen: 'unicorn.PlaygroundScreen'});
-}
diff --git a/demo/src/screens/PlaygroundScreen.tsx b/demo/src/screens/PlaygroundScreen.tsx
deleted file mode 100644
index 0bda100e67..0000000000
--- a/demo/src/screens/PlaygroundScreen.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, Card, TextField, Button} from 'react-native-ui-lib';
-
-export default class PlaygroundScreen extends Component {
- render() {
- return (
-
-
-
-
-
- Playground Screen
-
-
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/SettingsScreen.js b/demo/src/screens/SettingsScreen.js
deleted file mode 100644
index 2abfc5f294..0000000000
--- a/demo/src/screens/SettingsScreen.js
+++ /dev/null
@@ -1,126 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, I18nManager} from 'react-native';
-import {Colors, View, Text, Picker, Incubator, Switch} from 'react-native-ui-lib'; //eslint-disable-line
-import {navigationData} from './MenuStructure';
-import Storage, {DEFAULT_SCREEN, IS_RTL} from '../storage';
-
-const none = {label: '[None]', value: ''};
-
-class SettingsScreen extends Component {
- constructor(props) {
- super(props);
-
- const data = props.navigationData || navigationData;
- const playground = props.playground;
-
- const screens = [
- none,
- ..._.flow(_.values,
- screens => _.map(screens, 'screens'),
- _.flatten,
- screens => _.map(screens, screen => ({label: screen.title, value: screen.screen})))(data)
- ];
-
- if (playground) {
- screens.splice(1, 0, playground);
- }
-
- this.state = {
- showRefreshMessage: false,
- isRTL: false,
- screens
- };
- }
-
- UNSAFE_componentWillMount() {
- const {screens} = this.state;
- const defaultScreenId = Storage.getString(DEFAULT_SCREEN);
- const defaultScreen = _.find(screens, {value: defaultScreenId});
-
- const isRTL = Storage.getBoolean(IS_RTL);
-
- this.setState({defaultScreen, isRTL});
- }
-
- onDirectionChange = () => {
- this.setState({isRTL: !this.state.isRTL}, () => {
- I18nManager.forceRTL(this.state.isRTL);
- Storage.set(IS_RTL, this.state.isRTL);
- setTimeout(() => {
- this.setState({showRefreshMessage: true});
- }, 1000);
- });
- };
-
- setDefaultScreen = screen => {
- this.setState({defaultScreen: screen});
- Storage.set(DEFAULT_SCREEN, screen);
- setTimeout(() => {
- this.setState({showRefreshMessage: true});
- }, 1000);
- };
-
- render() {
- const {defaultScreen, showRefreshMessage, isRTL, screens} = this.state;
- const {extraSettingsUI} = this.props;
- const filteredScreens = _.filter(screens, screen => !_.isUndefined(screen.value));
-
- return (
-
-
- Default Screen
-
- Set default screen to open on app startup
-
-
-
-
-
-
- Current layout direction
-
-
-
- {isRTL ? 'RIGHT to LEFT' : 'LEFT to RIGHT'}
-
-
-
-
-
- Force RTL
-
-
-
-
- {extraSettingsUI?.()}
-
-
-
- Settings
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- block: {
- borderColor: Colors.grey70,
- backgroundColor: Colors.grey80
- }
-});
-
-export default SettingsScreen;
diff --git a/demo/src/screens/__tests__/AvatarScreen.spec.js b/demo/src/screens/__tests__/AvatarScreen.spec.js
deleted file mode 100644
index a4d3be50bb..0000000000
--- a/demo/src/screens/__tests__/AvatarScreen.spec.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-import renderer from 'react-test-renderer';
-
-describe('AvatarScreen', () => {
- let AvatarScreen;
-
- beforeEach(() => {
- AvatarScreen = require('../componentScreens/AvatarsScreen').default;
- });
-
- it('renders screen', () => {
- const tree = renderer.create( ).toJSON();
- expect(tree).toMatchSnapshot();
- });
-});
diff --git a/demo/src/screens/__tests__/TextFieldScreen.spec.js b/demo/src/screens/__tests__/TextFieldScreen.spec.js
deleted file mode 100644
index 8ebd37ee05..0000000000
--- a/demo/src/screens/__tests__/TextFieldScreen.spec.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-import renderer from 'react-test-renderer';
-
-describe('TextField Screen', () => {
- let TextFieldScreen;
-
- beforeEach(() => {
- TextFieldScreen = require('../componentScreens/TextFieldScreen').default;
- });
-
- it('renders screen', () => {
- const tree = renderer.create( ).toJSON();
- expect(tree).toMatchSnapshot();
- });
-});
diff --git a/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap b/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap
deleted file mode 100644
index 42c2931ed1..0000000000
--- a/demo/src/screens/__tests__/__snapshots__/AvatarScreen.spec.js.snap
+++ /dev/null
@@ -1,3169 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`AvatarScreen renders screen 1`] = `
-
-
-
-
- Custom Background
-
-
-
-
-
-
-
- Empty Avatar with ribbon
-
-
-
-
-
- New
-
-
-
-
-
-
- Initials with Color
-
-
-
-
- AD
-
-
-
-
- New
-
-
-
-
-
-
- Initials, badge ("online")
-
-
-
-
- ES
-
-
-
-
-
-
-
-
-
- Image, badge ("away")
-
-
-
-
-
-
-
-
-
-
-
- Smaller size, Badge ("offline")
-
-
-
-
-
-
-
-
-
-
-
- Image with fade in animation
-
-
-
-
-
-
-
-
-
-
- Big pimple
-
-
-
-
-
-
-
-
-
-
-
- Icon badge
-
-
-
-
-
-
-
-
-
-
-
-
-
- GIF
-
-
-
-
-
-
-
-
- Invalid Gravatar (see logs)
-
-
-
-
- 🤦
-
-
-
-
-
-
-
- Monitored Avatar (see logs)
-
-
-
-
- ?!
-
-
-
-
-
-
-
- Empty Gravatar
-
-
-
-
-
-
-
-
- With custom badge label
-
-
-
-
- LD
-
-
-
-
-
- +2
-
-
-
-
-
-
-
-`;
diff --git a/demo/src/screens/__tests__/__snapshots__/TextFieldScreen.spec.js.snap b/demo/src/screens/__tests__/__snapshots__/TextFieldScreen.spec.js.snap
deleted file mode 100644
index cd6d85d9b8..0000000000
--- a/demo/src/screens/__tests__/__snapshots__/TextFieldScreen.spec.js.snap
+++ /dev/null
@@ -1,7485 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`TextField Screen renders screen 1`] = `
-
-
-
-
- TextField
-
-
- Default
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Presets
-
-
-
-
-
-
-
- Underline
-
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Disabled vs Readonly
-
-
-
-
-
-
-
- Disabled
-
-
-
-
- Readonly
-
-
-
-
-
-
-
-
-
- Name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Static vs Floating Placeholder
-
-
-
-
-
-
-
-
-
-
- FloatingPlaceholder
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Hint vs HelperText
-
-
-
-
-
-
-
-
-
-
- Enter code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Enter code
-
-
-
-
-
-
-
-
- 1-6 numbers
-
-
-
-
-
-
-
-
- Validation
-
-
-
- Error Position:
-
-
-
-
-
-
- Bottom
-
-
-
-
- Top
-
-
-
-
-
-
-
-
-
- Email
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Name
-
-
-
-
-
-
-
-
-
-
-
-
-
- Enter first and last name
-
-
-
-
- 0/20
-
-
-
-
-
-
- Validate
-
-
-
-
- Clear Button
-
-
-
-
- Description
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Char Counter
-
-
-
-
- Description
-
-
-
-
-
-
-
-
-
-
- 🍇
-
- 🍈
-
- 🍌
-
-
-
-
- 0/20
-
-
-
-
-
- Accessories
-
-
- Trailing Accessory:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Kg.
-
-
-
-
-
-
-
-
-
-
- Leading Accessory:
-
-
-
-
-
- Https://
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Colors By State
-
-
-
-
-
-
- Empty
-
-
-
-
- Focus
-
-
-
-
- Error
-
-
-
-
- Readonly
-
-
-
-
- Disable
-
-
-
-
-
-
-
-
-
- Color
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dynamic Field Style
-
-
-
-
- Required
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Formatter
-
-
-
-
- Price
-
-
-
-
- $
-
-
-
-
-
-
-
-
-
-
-
-
-
- Custom Alignments
-
-
- Centered:
-
-
-
-
- PIN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Inline:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- :
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/demo/src/screens/componentScreens/ActionBarScreen.tsx b/demo/src/screens/componentScreens/ActionBarScreen.tsx
deleted file mode 100644
index 8fbe772317..0000000000
--- a/demo/src/screens/componentScreens/ActionBarScreen.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {Alert, StyleSheet} from 'react-native';
-import {Colors, Typography, View, ActionBar, PageControl, Carousel} from 'react-native-ui-lib'; //eslint-disable-line
-import cameraSelected from '../../assets/icons/cameraSelected.png';
-import video from '../../assets/icons/video.png';
-import tags from '../../assets/icons/tags.png';
-import collections from '../../assets/icons/collections.png';
-import richText from '../../assets/icons/richText.png';
-
-export default class ActionBarScreen extends Component {
- state = {
- currentPage: 0
- };
-
- render() {
- return (
-
-
- this.setState({currentPage})}
- initialPage={this.state.currentPage}
- >
-
- Alert.alert('delete'), $textDangerLight: true},
- {label: 'Replace Photo', onPress: () => Alert.alert('replace photo')},
- {label: 'Edit', onPress: () => Alert.alert('edit')}
- ]}
- />
-
-
-
- Alert.alert('hide'), $textDefaultLight: true},
- {label: 'Add Discount', onPress: () => Alert.alert('add discount'), $textDefaultLight: true},
- {label: 'Duplicate', onPress: () => Alert.alert('duplicate'), $textDefaultLight: true}
- ]}
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ({
- iconSource,
- iconStyle: {width: 25}
- }))}
- />
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- page: {
- flex: 1
- },
- pageControl: {
- zIndex: 1
- },
- absoluteContainer: {
- position: 'absolute',
- bottom: 150,
- left: 0,
- right: 0
- }
-});
diff --git a/demo/src/screens/componentScreens/ActionSheetScreen.tsx b/demo/src/screens/componentScreens/ActionSheetScreen.tsx
deleted file mode 100644
index 8ad4320d64..0000000000
--- a/demo/src/screens/componentScreens/ActionSheetScreen.tsx
+++ /dev/null
@@ -1,113 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, Button, ActionSheet} from 'react-native-ui-lib'; //eslint-disable-line
-import _ from 'lodash';
-
-const useCases = [
- {label: 'Default (Android/iOS)', useNativeIOS: false, icons: false},
- {label: 'Default with icons', useNativeIOS: false, icons: true},
- {label: 'Native IOS', useNativeIOS: true}
-];
-const collectionsIcon = require('../../assets/icons/collections.png');
-const starIcon = require('../../assets/icons/star.png');
-const shareIcon = require('../../assets/icons/share.png');
-
-
-export default class ActionSheetScreen extends Component {
- state = {
- showNative: false,
- showCustom: false,
- showCustomIcons: false,
- pickedOption: undefined
- };
-
- pickOption(index: string) {
- this.setState({
- pickedOption: index
- });
- }
-
- render() {
- const {showCustom, showCustomIcons, showNative, pickedOption} = this.state;
- return (
-
- Action Sheet
-
- {_.map(useCases, (useCase, index) => {
- return (
- ${useCase.label}`}
- onPress={() =>
- this.setState({
- showNative: useCase.useNativeIOS,
- showCustom: !useCase.useNativeIOS && !useCase.icons,
- showCustomIcons: !useCase.useNativeIOS && useCase.icons
- })}
- />
- );
- })}
-
- {!_.isUndefined(pickedOption) && (
-
- User picked {pickedOption}
-
- )}
-
- this.pickOption('option 1')},
- {label: 'option 2', onPress: () => this.pickOption('option 2')},
- {label: 'option 3', onPress: () => this.pickOption('option 3')},
- {label: 'cancel', onPress: () => this.pickOption('cancel')}
- ]}
- visible={showCustom}
- onDismiss={() => this.setState({showCustom: false})}
- />
-
- this.pickOption('option 1'), iconSource: collectionsIcon},
- {label: 'option 2', onPress: () => this.pickOption('option 2'), iconSource: shareIcon},
- // `icon` prop will be deprecated, please use `iconSource`
- {label: 'option 3', onPress: () => this.pickOption('option 3'), icon: starIcon},
- {label: 'cancel', onPress: () => this.pickOption('cancel')}
- ]}
- visible={showCustomIcons}
- onDismiss={() => this.setState({showCustomIcons: false})}
- />
-
- this.pickOption('option 1')},
- {label: 'option 2', onPress: () => this.pickOption('option 2')},
- {label: 'option 3', onPress: () => this.pickOption('option 3')},
- {label: 'cancel', onPress: () => this.pickOption('cancel')}
- ]}
- visible={showNative}
- useNativeIOS
- onDismiss={() => this.setState({showNative: false})}
- />
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/AnimatedImageScreen.js b/demo/src/screens/componentScreens/AnimatedImageScreen.js
deleted file mode 100644
index 237529b062..0000000000
--- a/demo/src/screens/componentScreens/AnimatedImageScreen.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet, ActivityIndicator} from 'react-native';
-import _ from 'lodash';
-import {AnimatedImage, Colors} from 'react-native-ui-lib'; //eslint-disable-line
-
-const SampleImages = [
- 'https://static.pexels.com/photos/50721/pencils-crayons-colourful-rainbow-50721.jpeg',
- 'https://static.pexels.com/photos/60628/flower-garden-blue-sky-hokkaido-japan-60628.jpeg'
-];
-
-export default class AnimatedImageScreen extends Component {
- render() {
- return (
-
- {_.map(SampleImages, (image, index) => (
- }
- key={index}
- animationDuration={index === 0 ? 300 : 800}
- />
- ))}
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1
- }
-});
diff --git a/demo/src/screens/componentScreens/AvatarsScreen.tsx b/demo/src/screens/componentScreens/AvatarsScreen.tsx
deleted file mode 100644
index 37d9cbe627..0000000000
--- a/demo/src/screens/componentScreens/AvatarsScreen.tsx
+++ /dev/null
@@ -1,153 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet, Alert} from 'react-native';
-import {Avatar, AvatarHelper, View, Text, Colors, Typography, AvatarProps} from 'react-native-ui-lib';
-
-
-const star = require('../../assets/icons/star.png');
-const onlineColor = Colors.$backgroundSuccessHeavy;
-const examples = [
- {title: 'Custom Background', backgroundColor: Colors.violet60},
- {title: 'Empty Avatar with ribbon', ribbonLabel: 'New'},
- {
- title: 'Initials with Color',
- label: 'AD',
- backgroundColor: Colors.$backgroundWarningLight,
- labelColor: Colors.$textMajor,
- ribbonLabel: 'New',
- ribbonStyle: {backgroundColor: Colors.purple30}
- },
- {title: 'Initials, badge ("online")', label: 'ES', badgeProps: {backgroundColor: onlineColor}},
- {
- title: 'Image, badge ("away")',
- source: {
- uri:
- 'https://lh3.googleusercontent.com/-cw77lUnOvmI/AAAAAAAAAAI/AAAAAAAAAAA/WMNck32dKbc/s181-c/104220521160525129167.jpg'
- },
- badgeProps: {size: 10, backgroundColor: Colors.$backgroundWarningHeavy},
- badgePosition: 'BOTTOM_RIGHT' as AvatarProps['badgePosition']
- },
-
- {
- title: 'Smaller size, Badge ("offline")',
- size: 40,
- source: {
- uri:
- 'https://lh3.googleusercontent.com/-CMM0GmT5tiI/AAAAAAAAAAI/AAAAAAAAAAA/-o9gKbC6FVo/s181-c/111308920004613908895.jpg'
- },
- badgeProps: {size: 10, backgroundColor: Colors.$backgroundDisabled},
- badgePosition: 'BOTTOM_LEFT' as AvatarProps['badgePosition']
- },
- {
- title: 'Image with fade in animation',
- size: 60,
- animate: true,
- imageProps: {animationDuration: 1000},
- source: {uri: 'https://static.pexels.com/photos/60628/flower-garden-blue-sky-hokkaido-japan-60628.jpeg'}
- },
- {
- title: 'Big pimple',
- size: 70,
- backgroundColor: 'red',
- source: {
- uri: 'https://randomuser.me/api/portraits/women/24.jpg'
- },
- badgeProps: {size: 14, borderWidth: 0, backgroundColor: onlineColor},
- badgePosition: 'TOP_LEFT' as AvatarProps['badgePosition']
- },
- {
- title: 'Icon badge',
- size: 60,
- source: {
- uri: 'https://randomuser.me/api/portraits/women/24.jpg'
- },
- badgeProps: {
- icon: star,
- size: 14,
- borderWidth: 1.5,
- borderColor: Colors.$outlineInverted,
- iconStyle: {backgroundColor: Colors.$backgroundWarningHeavy}
- }
- },
- {
- title: 'GIF',
- size: 48,
- source: {
- uri: 'https://media.giphy.com/media/3oEdv8elIVRa3daNl6/giphy.gif'
- }
- },
- {
- title: 'Invalid Gravatar (see logs)',
- label: '🤦',
- backgroundColor: Colors.$backgroundNeutralMedium,
- source: {uri: 'https://www.gravatar.com/avatar/00000000000000000000000000000000?d=404'},
- onImageLoadStart: () => console.log('AvatarScreen: Invalid avatar load STARTED...'), // eslint-disable-line
- onImageLoadEnd: () => console.log('AvatarScreen: Invalid avatar load ENDED'), // eslint-disable-line
- onImageLoadError: () => console.log('AvatarScreen: Invalid avatar load FAILED') // eslint-disable-line
- },
- {
- title: 'Monitored Avatar (see logs)',
- label: '?!',
- backgroundColor: Colors.$backgroundGeneralHeavy,
- source: {uri: 'https://static.altomusic.com/media/catalog/product/M/A/MAJ100SBK_0.jpg'},
- onImageLoadStart: () => console.log('AvatarScreen: Monitored avatar load STARTED...'), // eslint-disable-line
- onImageLoadEnd: () => console.log('AvatarScreen: Monitored avatar load ENDED') // eslint-disable-line
- },
- {
- title: 'Empty Gravatar',
- backgroundColor: Colors.$backgroundDangerLight,
- source: {uri: 'https://www.gravatar.com/avatar/2497473d558a37020c558bf26e380a7c?d=blank'}
- },
- {
- title: 'With custom badge label',
- label: 'LD',
- backgroundColor: Colors.$backgroundDangerLight,
- badgePosition: 'BOTTOM_RIGHT' as AvatarProps['badgePosition'],
- badgeProps: {
- label: '+2',
- size: 24,
- borderWidth: 1.5,
- borderColor: Colors.$outlineInverted
- }
- }
-];
-
-export default class AvatarsScreen extends Component {
-
- onAvatarPress = (item: any) => {
- const {title, source, label} = item;
- const uri = _.get(source, 'uri');
- const isGravatar = !!uri && AvatarHelper.isGravatarUrl(uri);
- const patchedGravatar = isGravatar ? AvatarHelper.patchGravatarUrl(uri) : undefined;
- const message = `Label: ${label}\n\nImage-source: ${uri}\n\nIs Gravatar: ${isGravatar}\n\n${
- patchedGravatar ? `Patched-uri: ${patchedGravatar}` : ''
- }`;
- Alert.alert(title, message);
- };
-
- render() {
- return (
-
- {_.map(examples, (example, i) => (
-
- {example.title}
- this.onAvatarPress(example)}/>
-
- ))}
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- padding: 25,
- backgroundColor: Colors.$backgroundDefault
- },
- section: {
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'space-between',
- marginBottom: 15
- }
-});
diff --git a/demo/src/screens/componentScreens/BadgesScreen.tsx b/demo/src/screens/componentScreens/BadgesScreen.tsx
deleted file mode 100644
index 7a50ab23e6..0000000000
--- a/demo/src/screens/componentScreens/BadgesScreen.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {Colors, View, Badge, Text, Image, Stepper} from 'react-native-ui-lib'; //eslint-disable-line
-
-const BadgesSpace = 30;
-const star = require('../../assets/icons/star.png');
-const bell = require('../../assets/icons/bell.png');
-
-export default class BadgesScreen extends Component {
- state = {
- value: 42
- };
-
- changeLabelValue(value: number) {
- const currValue = this.state.value;
- const newValue = currValue + value;
- if (newValue >= 1) {
- this.setState({value: newValue});
- }
- }
-
- customElement1 = (
-
-
-
-
- );
-
- customElement2 = (
-
-
-
- 37
-
-
-
- );
-
- onValueChange = (value: number, _?: string) => {
- this.setState({value});
- };
-
- render() {
- const {value} = this.state;
-
- return (
-
-
- Badges
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Press buttons to change red badge value by 1.{'\n'}Long press to change it by 10.
-
-
- Pimple Badges
-
-
-
-
- size={'{6}'}
-
- size={'{10}'}
-
- size={'{14}'}
-
-
-
-
-
-
-
-
-
-
- Icon Badges
-
-
-
-
-
- small(16)
-
-
-
-
-
-
- default(20)
-
-
-
-
-
-
- large(24)
-
-
-
-
-
-
- border radius
-
-
-
-
-
- Counter Icon Badges
-
-
-
-
-
-
-
- Custom Element Badges
-
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- padding: 20
- }
-});
diff --git a/demo/src/screens/componentScreens/BasicListScreen.tsx b/demo/src/screens/componentScreens/BasicListScreen.tsx
deleted file mode 100644
index 7ea836bd7f..0000000000
--- a/demo/src/screens/componentScreens/BasicListScreen.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, Alert, FlatList} from 'react-native';
-import {Colors, BorderRadiuses, View, Image, ListItem, Text} from 'react-native-ui-lib';
-import orders, {OrderType} from '../../data/orders';
-
-
-export default class BasicListScreen extends Component {
-
- keyExtractor = (item: OrderType) => item.name;
-
- renderRow(row: OrderType, id: number) {
- const statusColor = row.inventory.status === 'Paid' ? Colors.green30 : Colors.red30;
-
- return (
-
- Alert.alert(`pressed on order #${id + 1}`)}
- >
-
-
-
-
-
-
- {row.name}
-
-
- {row.formattedPrice}
-
-
-
- {`${row.inventory.quantity} item`}
-
- {row.inventory.status}
-
-
-
-
-
- );
- }
-
- render() {
- return (
- this.renderRow(item, index)}
- keyExtractor={this.keyExtractor}
- />
- );
- }
-}
-
-const styles = StyleSheet.create({
- image: {
- width: 54,
- height: 54,
- borderRadius: BorderRadiuses.br20,
- marginHorizontal: 14
- },
- border: {
- borderBottomWidth: StyleSheet.hairlineWidth,
- borderColor: Colors.grey70
- }
-});
diff --git a/demo/src/screens/componentScreens/ButtonsScreen.tsx b/demo/src/screens/componentScreens/ButtonsScreen.tsx
deleted file mode 100644
index 571a006351..0000000000
--- a/demo/src/screens/componentScreens/ButtonsScreen.tsx
+++ /dev/null
@@ -1,308 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet, Alert, Image} from 'react-native';
-import {Text, View, Assets, Constants, Button, Colors, Typography, ButtonProps} from 'react-native-ui-lib';
-
-const ButtonSpace = 20;
-const plusIcon = Assets.getAssetByPath('icons.demo.plus');
-const settingsIcon = Assets.getAssetByPath('icons.demo.settings');
-const labelButton = {label: 'Animated'};
-const iconButton = {round: true};
-
-export default class ButtonsScreen extends Component {
- state = {
- backgroundColor: Colors.yellow30,
- label: 'Button',
- // outline: true,
- buttonProps: labelButton as ButtonProps
- };
-
- changeProps = () => {
- if (this.state.buttonProps === labelButton) {
- this.setState({buttonProps: iconButton});
- }
- if (this.state.buttonProps === iconButton) {
- this.setState({buttonProps: labelButton});
- }
- };
-
- render() {
- const {buttonProps} = this.state;
-
- return (
-
-
-
- Buttons
-
-
-
-
-
-
-
-
-
-
- Do you have it in small?
-
-
-
-
-
-
-
-
- Do you have it in red?
-
-
-
-
-
- Inside Out
-
-
-
-
-
-
-
-
-
-
-
-
- Round
-
-
-
-
-
-
-
- Animated
-
-
-
-
- Let your curves show
- {Constants.isIOS ? (
-
- ) : (
-
- )}
-
-
- Special Cases
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Alert.alert('Button #3')} style={{marginBottom: ButtonSpace}}>
-
- {Assets.emojis.cloud} {Assets.emojis.airplane} {Assets.emojis.sunny}
-
-
- Alert.alert('Button #3')} style={{marginBottom: ButtonSpace}}>
-
- Custom Icon
-
- Alert.alert('Custom icon renderer')}
- style={{marginBottom: ButtonSpace}}
- iconSource={iconStyle => (
-
- )}
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
- Full Width Buttons
-
-
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- alignItems: 'center',
- padding: 25
- },
- title: {
- ...Typography.text20,
- color: Colors.$textDefault
- },
- header: {
- ...Typography.text60,
- marginVertical: 20,
- color: Colors.$textDefault
- }
-});
diff --git a/demo/src/screens/componentScreens/CardScannerScreen.js b/demo/src/screens/componentScreens/CardScannerScreen.js
deleted file mode 100644
index 234edcf562..0000000000
--- a/demo/src/screens/componentScreens/CardScannerScreen.js
+++ /dev/null
@@ -1,117 +0,0 @@
-import React, {Component} from 'react';
-import {View, Card, Button, Colors, Text, AnimatedScanner} from 'react-native-ui-lib'; //eslint-disable-line
-import posts from '../../data/posts';
-
-
-const featureIcon = require('../../assets/icons/star.png');
-const shareIcon = require('../../assets/icons/share.png');
-
-export default class CardScannerScreen extends Component {
- constructor(props) {
- super(props);
-
- this.state = {
- progress: 0,
- started: false,
- reset: false,
- isDone: false
- };
- }
-
- onBreak = ({isDone}) => {
- if (!isDone) {
- this.start();
- } else {
- this.setState({isDone});
- }
- }
-
- start = () => {
- const {progress} = this.state;
-
- this.setState({
- started: true,
- reset: false,
- progress: progress + 25
- });
- }
-
- reset = () => {
- this.setState({
- started: false,
- progress: 0,
- reset: true,
- isDone: false
- });
- }
-
- render() {
- const {reset} = this.state;
- const post = posts[0];
- const statusColor = post.status === 'Published' ? Colors.green30 : Colors.orange30;
-
- return (
-
-
-
-
-
-
- console.log('press on a card')}>
-
-
-
- {post.title}
-
- | {post.timestamp}
-
- {post.status}
-
-
-
- {post.description}
-
-
-
- {post.likes} Likes
-
-
-
-
-
-
-
-
-
-
- {this.state.started && !this.state.isDone && (
-
- Publishing Post...
-
- )}
-
- {this.state.isDone && (
-
- Done!
-
- )}
-
-
-
-
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/CardsScreen.tsx b/demo/src/screens/componentScreens/CardsScreen.tsx
deleted file mode 100644
index 3a4ef690be..0000000000
--- a/demo/src/screens/componentScreens/CardsScreen.tsx
+++ /dev/null
@@ -1,349 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Colors, View, Card, CardProps, Button, Text} from 'react-native-ui-lib';
-// @ts-ignore
-import posts from '../../data/posts';
-
-const featureIcon = require('../../assets/icons/star.png');
-const shareIcon = require('../../assets/icons/share.png');
-const cardImage = require('../../assets/images/card-example.jpg');
-const cardImage2 = require('../../assets/images/empty-state.jpg');
-
-type CardsScreenProps = {};
-type CardsScreenState = {
- selected1: boolean;
- selected2: boolean;
-};
-
-export default class CardsScreen extends Component {
- state = {
- selected1: true,
- selected2: true
- };
-
- renderSelectableCards = () => {
- const {selected1, selected2} = this.state;
-
- return (
-
- this.setState({selected1: !selected1})}
- activeOpacity={1}
- marginR-20
- >
-
-
- this.setState({selected2: !selected2})}
- activeOpacity={1}
- selectionOptions={{
- color: Colors.grey40,
- indicatorSize: 25,
- borderWidth: 3
- }}
- >
-
-
-
- );
- };
-
- renderTextSection = () => {
- return (
-
- );
- };
-
- renderText = () => {
- return (
-
-
- You’re Invited!
-
-
- 222 Join Old The Town Barbershop Official Store. Download the Wix app
- to...
-
-
- wix.to/A465c
-
-
- );
- };
-
- renderHorizontalCard = (isImageOnLeft: boolean, borderRadius: number, useSection: boolean) => {
- return (
- {}}
- borderRadius={borderRadius}
- bg-$backgroundElevated
- activeOpacity={1}
- activeScale={isImageOnLeft ? 0.96 : 1.04}
- >
- {isImageOnLeft && (
-
- )}
- {useSection ? this.renderTextSection() : this.renderText()}
- {!isImageOnLeft && (
-
- )}
-
- );
- };
-
- renderImageOnBottom = () => {
- return (
- {}}>
-
-
-
- );
- };
-
- renderCoupon = (cardProps: CardProps) => {
- return (
- {}} activeOpacity={1} activeScale={0.96}>
-
-
-
- );
- };
-
- renderCoupons = () => {
- return (
-
- {/* @ts-expect-error */}
- {this.renderCoupon({'marginR-10': true})}
- {/* @ts-expect-error */}
- {this.renderCoupon({'marginL-10': true})}
-
- );
- };
-
- renderComplexImage = (cardProps: CardProps, image: React.ReactNode) => {
- return (
- {}} activeOpacity={1} activeScale={0.96}>
- {image}
-
-
- );
- };
-
- renderComplexImages = () => {
- return (
-
- {
- // Icon
- // @ts-expect-error
- this.renderComplexImage({'marginR-5': true},
- )
- }
- {
- // Image with overlay content
- // @ts-expect-error
- this.renderComplexImage({'marginL-5': true},
- )
- }
-
- );
- };
-
- renderNumbers = () => {
- return (
-
- {_.times(4, i => {
- return (
-
-
-
- {i}
-
-
-
- );
- })}
-
- );
- };
-
- renderBackgroundCard = (cardProps: CardProps, body: React.ReactNode) => {
- return (
-
- {body}
-
- );
- };
-
- renderComplexExample = () => {
- return _.map(posts, (post, i) => {
- const statusColor = post.status === 'Published' ? Colors.$textSuccess : Colors.$textMajor;
-
- return (
- console.log('press on a card')}
- >
-
-
-
-
- {post.title}
-
-
-
- {post.status}
-
- | {post.timestamp}
-
-
-
- {post.description}
-
-
-
-
- {post.likes} Likes
-
-
-
-
-
-
-
-
- );
- });
- };
-
- renderCustomContent = () => {
- return (
- <>
- {this.renderNumbers()}
- {this.renderImageOnBottom()}
- {this.renderComplexExample()}
- >
- );
- };
-
- render() {
- return (
-
-
-
- Cards
- Selectable Cards
- {this.renderSelectableCards()}
-
- Horizontal Cards
-
- {this.renderHorizontalCard(true, 0, true)}
- {this.renderHorizontalCard(true, 20, false)}
- {this.renderHorizontalCard(false, 0, false)}
- {this.renderHorizontalCard(false, 20, true)}
-
- Card Sections
-
- {this.renderCoupons()}
- {this.renderComplexImages()}
-
- Others
-
- {this.renderCustomContent()}
-
-
-
- );
- }
-}
-
-StyleSheet.create({
- container: {}
-});
diff --git a/demo/src/screens/componentScreens/CarouselScreen.tsx b/demo/src/screens/componentScreens/CarouselScreen.tsx
deleted file mode 100644
index 80cecbf64a..0000000000
--- a/demo/src/screens/componentScreens/CarouselScreen.tsx
+++ /dev/null
@@ -1,192 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Constants, Spacings, View, Text, Carousel, Image, Colors} from 'react-native-ui-lib';
-import {renderBooleanOption, renderSliderOption} from '../ExampleScreenPresenter';
-
-const INITIAL_PAGE = 2;
-const IMAGES = [
- 'https://images.pexels.com/photos/2529159/pexels-photo-2529159.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/2529146/pexels-photo-2529146.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/2529158/pexels-photo-2529158.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'
-];
-const BACKGROUND_COLORS = [
- Colors.red50,
- Colors.yellow20,
- Colors.purple50,
- Colors.green50,
- Colors.cyan50,
- Colors.purple20,
- Colors.blue60,
- Colors.red10,
- Colors.green20,
- Colors.purple60
-];
-
-interface Props {}
-
-interface State {
- orientation: typeof Constants.orientation;
- width: number;
- limitShownPages: boolean;
- numberOfPagesShown: number;
- currentPage: number;
- autoplay: boolean;
-}
-
-class CarouselScreen extends Component {
- carousel = React.createRef();
- private dimensionsChangeListener: any;
-
- constructor(props: Props) {
- super(props);
-
- this.state = {
- orientation: Constants.orientation,
- width: this.getWidth(),
- limitShownPages: false,
- numberOfPagesShown: 7,
- currentPage: INITIAL_PAGE,
- autoplay: true
- };
- }
-
- componentDidMount() {
- this.dimensionsChangeListener = Constants.addDimensionsEventListener(this.onOrientationChange);
- }
-
- componentWillUnmount() {
- Constants.removeDimensionsEventListener(this.dimensionsChangeListener || this.onOrientationChange);
- }
-
- onOrientationChange = () => {
- if (this.state.orientation !== Constants.orientation) {
- this.setState({
- orientation: Constants.orientation,
- width: this.getWidth()
- });
- }
- };
-
- getWidth = () => {
- return Constants.windowWidth - Spacings.s5 * 2;
- };
-
- onChangePage = (currentPage: number, _: any) => {
- this.setState({currentPage});
- };
-
- onPagePress = (index: number) => {
- if (this.carousel && this.carousel.current) {
- this.carousel.current.goToPage(index, true);
- }
- };
-
- render() {
- const {limitShownPages, numberOfPagesShown, autoplay, width} = this.state;
-
- return (
-
-
- Carousel
-
-
-
- {renderBooleanOption.call(this, 'Limit number of pages shown in page control', 'limitShownPages')}
- {renderBooleanOption.call(this, 'autoplay', 'autoplay')}
- {renderSliderOption.call(this, 'Number of pages shown', 'numberOfPagesShown', {
- min: 5,
- max: 10,
- step: 1,
- initial: 7
- })}
-
-
-
- {_.map([...Array(numberOfPagesShown)], (_item, index) => (
-
- CARD {index}
-
- ))}
-
-
-
- {this.state.currentPage}
-
-
-
-
- Looping Carousel
-
-
- {IMAGES.map((image, i) => {
- return (
-
-
-
- );
- })}
-
-
-
- );
- }
-}
-
-// @ts-ignore
-const Page = ({children, style, ...others}) => {
- return (
-
- {children}
-
- );
-};
-
-const styles = StyleSheet.create({
- picker: {
- marginHorizontal: 20
- },
- page: {
- flex: 1,
- borderWidth: 1,
- borderRadius: 8
- },
- loopCarousel: {
- position: 'absolute',
- bottom: 15,
- left: 10
- }
-});
-
-export default CarouselScreen;
diff --git a/demo/src/screens/componentScreens/CarouselVerticalScreen.tsx b/demo/src/screens/componentScreens/CarouselVerticalScreen.tsx
deleted file mode 100644
index caea75f5c9..0000000000
--- a/demo/src/screens/componentScreens/CarouselVerticalScreen.tsx
+++ /dev/null
@@ -1,154 +0,0 @@
-import {Carousel, Constants, Text, View, Colors} from 'react-native-ui-lib';
-import React, {Component} from 'react';
-import {StyleSheet, Animated, TextStyle} from 'react-native';
-import _ from 'lodash';
-import {renderBooleanOption, renderSliderOption} from '../ExampleScreenPresenter';
-
-interface State {
- numberOfPagesShown: number;
- autoplay: boolean;
-}
-
-const BACKGROUND_COLORS = [
- Colors.red50,
- Colors.yellow20,
- Colors.purple50,
- Colors.green50,
- Colors.cyan50,
- Colors.purple20,
- Colors.blue60,
- Colors.red10,
- Colors.green20,
- Colors.purple60
-];
-
-const pageHeight = Constants.windowHeight / 3;
-
-class CarouselVerticalScreen extends Component<{}, State> {
- carousel = React.createRef();
- animatedScrollOffset = new Animated.ValueXY();
-
- constructor(props: {}) {
- super(props);
-
- this.state = {
- numberOfPagesShown: 5,
- autoplay: false
- };
- }
-
- renderAnimatedCounter = () => {
- const {numberOfPagesShown} = this.state;
- const animatedStyles = _.times(numberOfPagesShown, page => {
- return {
- opacity: this.animatedScrollOffset.y.interpolate({
- inputRange: [pageHeight * page - 50, pageHeight * page, pageHeight * page + 50],
- outputRange: [0, 1, 0]
- }),
- transform: [
- {
- translateX: this.animatedScrollOffset.y.interpolate({
- inputRange: [pageHeight * page - 50, pageHeight * page, pageHeight * page + 50],
- outputRange: [-50, 0, 50]
- })
- }
- ]
- };
- });
- return (
-
- {_.times(numberOfPagesShown, page => (
-
- {page}
-
- ))}
-
- );
- };
-
- render() {
- const {numberOfPagesShown, autoplay} = this.state;
- return (
-
-
- {renderBooleanOption.call(this, 'autoplay', 'autoplay')}
- {renderSliderOption.call(this, 'Number of pages shown', 'numberOfPagesShown', {
- min: 3,
- max: 10,
- step: 1,
- initial: 5
- })}
-
-
-
- {_.map([...Array(numberOfPagesShown)], (_, index) => (
-
- {index}
-
- ))}
-
- {this.renderAnimatedCounter()}
-
-
-
-
- iOS Widgets Carousel
-
-
-
-
-
-
-
-
- );
- }
-}
-
-// @ts-ignore
-const Page = ({children, style, ...others}) => {
- return (
-
- {children}
-
- );
-};
-
-const styles = StyleSheet.create({
- container: {},
- page: {
- flex: 1,
- height: pageHeight,
- width: Constants.windowWidth
- },
- pageText: {
- fontSize: 40,
- color: 'white'
- },
- animatedPageCounter: {
- position: 'absolute',
- top: 20,
- left: 20
- },
- widgetsCarousel: {
- height: 150,
- width: 300,
- backgroundColor: Colors.grey60,
- borderRadius: 24,
- overflow: 'hidden'
- }
-});
-
-export default CarouselVerticalScreen;
diff --git a/demo/src/screens/componentScreens/CheckboxScreen.tsx b/demo/src/screens/componentScreens/CheckboxScreen.tsx
deleted file mode 100644
index cebaf2bcd4..0000000000
--- a/demo/src/screens/componentScreens/CheckboxScreen.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {Assets, Colors, View, Text, Button, Checkbox, CheckboxRef} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class CheckboxScreen extends Component {
- state = {
- value1: false,
- value2: false,
- value3: true,
- value4: true,
- value5: false,
- value6: false,
- value7: false,
- validationText: '',
- validationColor: Colors.$textDefault
- };
-
- checkbox = React.createRef();
-
- onPress = () => {
- this.checkbox.current?.validate();
- };
-
- onValueChange = (value: boolean) => {
- this.setState({value7: value}, () => {
- console.log('onValueChange: ', value);
- });
- };
-
- onChangeValidity = (value?: boolean) => {
- this.setState({
- validationText: String(value),
- validationColor: value === true ? Colors.$textSuccess : Colors.$textDangerLight
- });
- };
-
- render() {
- return (
-
-
- Checkbox
-
-
- Customizable UI
-
-
- this.setState({value1})}/>
- this.setState({value2})}
- borderRadius={2}
- size={30}
- color={Colors.purple30}
- selectedIcon={Assets.icons.x}
- marginL-s5
- />
-
- this.setState({value3})}
- borderRadius={5}
- size={18}
- color={Colors.grey10}
- iconColor={Colors.green10}
- marginL-s5
- />
-
- this.setState({value6})}
- containerStyle={styles.checkbox}
- />
-
- this.setState({value7})}
- indeterminate
- label={'Indeterminate state'}
- color={Colors.green20}
- containerStyle={styles.checkbox}
- />
-
-
- Disabled States
-
- this.setState({value5})}
- style={{marginRight: 10}}
- />
- this.setState({value5})}
- iconColor={Colors.green10}
- />
-
-
-
-
- Validation
-
- {this.state.validationText}
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- checkbox: {
- marginBottom: 20
- },
- row: {
- alignItems: 'center'
- }
-});
diff --git a/demo/src/screens/componentScreens/ChipScreen.tsx b/demo/src/screens/componentScreens/ChipScreen.tsx
deleted file mode 100644
index d417c99e5c..0000000000
--- a/demo/src/screens/componentScreens/ChipScreen.tsx
+++ /dev/null
@@ -1,181 +0,0 @@
-import React, {Component} from 'react';
-import {Alert} from 'react-native';
-import {Chip, Colors, Spacings, Text, Typography, View, Image} from 'react-native-ui-lib';
-
-const avatarImage = {
- uri: 'https://randomuser.me/api/portraits/women/24.jpg'
-};
-const checkmark = require('../../assets/icons/check-small.png');
-const chevron = require('../../assets/icons/chevronDown.png');
-const bell = require('../../assets/icons/bell.png');
-
-export default class ChipScreen extends Component {
- colors = [
- {value: Colors.red10, label: 'Red'},
- {value: Colors.blue10, label: 'Blue'},
- {value: Colors.purple10, label: 'Purple'},
- {value: Colors.green10, label: 'Green'},
- {value: Colors.yellow10, label: 'Yellow'}
- ];
-
- state = {
- selectedValue: this.colors[2].label
- };
-
- renderExample = (text: string, chip: JSX.Element) => {
- return (
-
- {text}
- {chip}
-
- );
- };
-
- render() {
- return (
-
-
- Chip
-
-
- Default
-
- {this.renderExample('Label', )}
- {this.renderExample('Label + onPress', Alert.alert('onPress')}/>)}
- {this.renderExample('Label + onDismiss',
- Alert.alert('onDismiss')}
- onPress={() => Alert.alert('onPress')}
- dismissIconStyle={{width: 10, height: 10}}
- />)}
- {this.renderExample('Icon',
- )}
- {this.renderExample('Left icon',
- )}
- {this.renderExample('Right icon',
- )}
- {this.renderExample('Label + Avatar', )}
- {this.renderExample('Label + Counter',
- )}
- {this.renderExample('Label + Badge',
- )}
-
-
- Custom
-
-
-
-
- Alert.alert('onDismiss')}
- dismissIconStyle={{width: 10, height: 10, marginRight: Spacings.s3}}
- dismissColor={Colors.red20}
- containerStyle={{
- borderColor: Colors.red20,
- borderBottomRightRadius: 0,
- marginLeft: Spacings.s3
- }}
- />
-
-
-
- }
- label={'Chip'}
- />
- }
- leftElement={}
- label={'Chip'}
- />
-
-
-
-
-
- }
- label={'Chip'}
- />
- }
- label={'Chip'}
- />
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/ChipsInputScreen.tsx b/demo/src/screens/componentScreens/ChipsInputScreen.tsx
deleted file mode 100644
index e452ff3922..0000000000
--- a/demo/src/screens/componentScreens/ChipsInputScreen.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, Colors, ChipsInput} from 'react-native-ui-lib';
-import _ from 'lodash';
-
-export default class ChipsInputScreen extends Component {
- state = {
- chips: [{label: 'one'}, {label: 'two'}],
- chips2: []
- };
-
- render() {
- return (
-
-
- ChipsInput
-
- TO: }
- onChange={newChips => {
- _.flow(newChips => _.groupBy(newChips, 'label'),
- newChips =>
- _.forEach(newChips, group => {
- if (group.length === 1) {
- delete group[0].invalid;
- } else {
- group[group.length - 1].invalid = true;
- }
- }),
- _.values,
- _.flatten)(newChips);
-
- this.setState({chips: newChips});
- }}
- validate={'required'}
- validateOnChange
- validationMessage={'You must add at least one chip'}
- marginB-10
- />
-
- this.setState({chips2: newChips})}
- maxChips={3}
- />
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/ColorPickerScreen.tsx b/demo/src/screens/componentScreens/ColorPickerScreen.tsx
deleted file mode 100644
index 7deab801c4..0000000000
--- a/demo/src/screens/componentScreens/ColorPickerScreen.tsx
+++ /dev/null
@@ -1,157 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Colors, View, Text, ColorPicker, ColorPalette, ColorName, ColorInfo, TouchableOpacity, ColorPickerDialog} from 'react-native-ui-lib';
-import {renderMultipleSegmentOptions} from '../ExampleScreenPresenter';
-
-interface State {
- color: string;
- textColor?: string;
- customColors: string[];
- paletteChange: boolean;
- backgroundColor: string;
- showPicker: boolean;
-}
-
-const INITIAL_COLOR = Colors.$backgroundPrimaryHeavy;
-// prettier-ignore
-const colors = [
- '#20303C', '#43515C', '#66737C', '#858F96', '#A3ABB0', '#C2C7CB', '#E0E3E5', '#F2F4F5',
- '#3182C8', '#4196E0', '#459FED', '#57a8ef', '#8fc5f4', '#b5d9f8', '#daecfb', '#ecf5fd',
- '#00AAAF', '#32BABC', '#3CC7C5', '#64D4D2', '#8BDFDD', '#B1E9E9', '#D8F4F4', '#EBF9F9',
- '#00A65F', '#32B76C', '#65C888', '#84D3A0', '#A3DEB8', '#C1E9CF', '#E8F7EF', '#F3FBF7',
- '#E2902B', '#FAA030', '#FAAD4D', '#FBBD71', '#FCCE94', '#FDDEB8', '#FEEFDB', '#FEF7ED',
- '#D9644A', '#E66A4E', '#F27052', '#F37E63', '#F7A997', '#FAC6BA', '#FCE2DC', '#FEF0ED',
- '#CF262F', '#EE2C38', '#F2564D', '#F57871', '#F79A94', '#FABBB8', '#FCDDDB', '#FEEEED',
- '#8B1079', '#A0138E', '#B13DAC', '#C164BD', '#D08BCD', '#E0B1DE', '#EFD8EE', '#F7EBF7'
-];
-
-export default class ColorPickerScreen extends Component<{}, State> {
- state: State = {
- color: INITIAL_COLOR,
- textColor: Colors.$textDefaultLight,
- customColors: [],
- paletteChange: false,
- backgroundColor: Colors.$backgroundDefault,
- showPicker: false
- };
-
- onDismiss = () => {
- console.log(`screen onDismiss`);
- };
-
- onSubmit = (color: string, textColor: string) => {
- const {customColors} = this.state;
- customColors.push(color);
- this.setState({color, textColor, customColors: _.clone(customColors), paletteChange: false});
- };
-
- onValueChange = (value: string, colorInfo: ColorInfo) => {
- this.setState({color: value, textColor: colorInfo?.tintColor, paletteChange: false});
- };
-
- onPaletteValueChange = (value: string, colorInfo: ColorInfo) => {
- this.setState({color: value, textColor: colorInfo?.tintColor, paletteChange: true});
- };
-
- render() {
- const {color, textColor, customColors, paletteChange, backgroundColor} = this.state;
- const paletteValue = paletteChange ? color || INITIAL_COLOR : undefined;
- const pickerValue = !paletteChange ? color || INITIAL_COLOR : undefined;
-
- const mappedColor = ColorName.name(color);
- const nearestColor = mappedColor[0];
- const colorName = mappedColor[1];
- const isMapped = mappedColor[2] ? 'Mapped' : 'Not mapped';
-
- return (
-
-
-
- Selected Color: {color}
-
-
-
- {color}
-
-
-
-
-
- {renderMultipleSegmentOptions.call(this, 'backgroundColor:', 'backgroundColor', [
- {label: 'Default', value: Colors.$backgroundDefault},
- {label: 'Primary', value: Colors.$backgroundPrimaryHeavy},
- {label: 'Success', value: Colors.$backgroundSuccessHeavy}
- ])}
-
-
- Theme Color
-
- Choose a color for your place’s theme.
-
-
- Custom Colors
-
-
-
-
-
-
- Color Name
-
-
-
- {nearestColor}
-
-
- {colorName}
-
-
- {isMapped}
-
-
-
-
- Color Picker Dialog
-
- this.setState({showPicker: true})}
- >
- Press
-
-
- this.setState({showPicker: false})}
- onSubmit={this.onSubmit}
- />
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: Colors.$backgroundNeutralLight
- }
-});
diff --git a/demo/src/screens/componentScreens/ColorSwatchScreen.tsx b/demo/src/screens/componentScreens/ColorSwatchScreen.tsx
deleted file mode 100644
index bcee79c3b7..0000000000
--- a/demo/src/screens/componentScreens/ColorSwatchScreen.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {Constants, Colors, View, Text, ColorSwatch, ColorPalette} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class ColorSwatchScreen extends Component {
- colors = [
- 'transparent',
- Colors.$backgroundSuccessHeavy,
- Colors.$backgroundWarningHeavy,
- Colors.$backgroundDangerHeavy
- ];
- mainColors = [
- '#66737C',
- '#459FED',
- '#1D5382',
- '#3CC7C5',
- '#65C888',
- '#FAAD4D',
- '#F27052',
- '#F2564D',
- '#B13DAC',
- '#733CA6',
- '#79838A',
- '#5847FF',
- '#00BBF2',
- '#00CD8B',
- '#FF563D',
- '#ffb600'
- ];
- allColors = _.filter(Object.values(Colors), _.isString);
-
- state = {
- color: this.colors[0],
- color1: this.mainColors[this.mainColors.length - 1],
- color2: this.allColors[20],
- selected: false
- };
-
- onPress = () => {
- this.setState({selected: !this.state.selected});
- };
-
- onValueChange = (value: string) => {
- this.setState({color: value});
- };
- onValueChange1 = (value: string) => {
- this.setState({color1: value});
- };
- onValueChange2 = (value: string) => {
- this.setState({color2: value});
- };
-
- unavailableOnPress = () => {
- console.log(`Pressed on unavailable color swatch!`);
- };
-
- render() {
- const {color, color1, color2, selected} = this.state;
-
- return (
-
-
-
- Single ColorSwatch
-
-
-
-
-
-
-
- Disabled
-
-
-
- Unavailable
-
-
-
-
- ColorPalette
-
-
- Selected Color: {color}
-
-
-
-
- Scrollable
-
-
-
-
- Pagination
-
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/ConnectionStatusBarScreen.tsx b/demo/src/screens/componentScreens/ConnectionStatusBarScreen.tsx
deleted file mode 100644
index c637d9b0c6..0000000000
--- a/demo/src/screens/componentScreens/ConnectionStatusBarScreen.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, StyleSheet} from 'react-native';
-import {ConnectionStatusBar, Typography, Colors} from 'react-native-ui-lib'; //eslint-disable-line
-
-type ConnectionStatusBarScreenState = {
- isConnected: boolean;
-};
-
-ConnectionStatusBar.registerGlobalOnConnectionLost(() => {
- // console.warn('what what?!? connection has been lost');
-});
-
-export default class ConnectionStatusBarScreen extends Component<{}, ConnectionStatusBarScreenState> {
- constructor(props: any) {
- super(props);
- this.state = {
- isConnected: true
- };
- }
-
- render() {
- return (
-
- this.setState({isConnected})}
- />
-
- Turn your wifi on/off to see the component in action
-
-
- {this.state.isConnected ? 'Connected! :)' : 'No connection :('}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'center',
- paddingHorizontal: 25
- }
-});
diff --git a/demo/src/screens/componentScreens/ContactsListScreen.js b/demo/src/screens/componentScreens/ContactsListScreen.js
deleted file mode 100644
index feb7753b66..0000000000
--- a/demo/src/screens/componentScreens/ContactsListScreen.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, Alert, FlatList} from 'react-native';
-import {Colors, View, ListItem, Text, Avatar, AvatarHelper} from 'react-native-ui-lib'; //eslint-disable-line
-import conversations from '../../data/conversations';
-
-
-export default class ContactsListScreen extends Component {
- keyExtractor = (item, index) => `${item.name}.${index}`;
-
- renderRow(row, id) {
- const initials = AvatarHelper.getInitials(row.name);
-
- return (
-
- Alert.alert(`pressed on contact #${id + 1}`)}
- >
-
-
-
-
- {row.name}
-
-
-
- );
- }
-
- render() {
- return (
- this.renderRow(item, index)}
- keyExtractor={this.keyExtractor}
- />
- );
- }
-}
-
-const styles = StyleSheet.create({
- border: {
- borderBottomWidth: StyleSheet.hairlineWidth,
- borderColor: Colors.grey70
- }
-});
diff --git a/demo/src/screens/componentScreens/ConversationListScreen.js b/demo/src/screens/componentScreens/ConversationListScreen.js
deleted file mode 100644
index 40985af931..0000000000
--- a/demo/src/screens/componentScreens/ConversationListScreen.js
+++ /dev/null
@@ -1,195 +0,0 @@
-import _ from 'lodash';
-import PropTypes from 'prop-types';
-import React, {Component, PureComponent} from 'react';
-import {StyleSheet, Alert, FlatList} from 'react-native';
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-import {Colors, ListItem, Text, Avatar, AvatarHelper, Drawer, Button} from 'react-native-ui-lib'; //eslint-disable-line
-import conversations from '../../data/conversations';
-
-
-const collectionsIcon = require('../../assets/icons/collections.png');
-const starIcon = require('../../assets/icons/star.png');
-const shareIcon = require('../../assets/icons/share.png');
-const batchSize = 10;
-
-class ConversationListScreen extends Component {
-
- constructor(props) {
- super(props);
-
- this.lastIndex = undefined;
- this.refArray = [];
- this.batchCounter = 0;
-
- this.state = {
- items: this.createItems({min: 0, max: batchSize})
- };
- }
-
- createItems(batch) {
- const data = conversations.slice(batch.min, batch.max);
-
- const map = _.map(data, (item, index) => {
- const initials = AvatarHelper.getInitials(item.name);
- const avatarBadgeProps = {backgroundColor: Number(index) < 3 ? Colors.green30 : undefined};
- const buttonPress = () => Alert.alert('Badge button press');
- const listOnPress = () => Alert.alert(`Pressed on contact #${index + 1}`);
- const imageSource = item.thumbnail ? {uri: item.thumbnail} : null;
- const rightButtons = [
- {
- text: 'More',
- icon: shareIcon,
- background: Colors.grey60,
- onPress: () => Alert.alert(`More button pressed for item #${item.name}`)
- },
- {
- text: 'Archive',
- icon: collectionsIcon,
- background: Colors.blue30,
- onPress: () => Alert.alert(`Archive button pressed for item #${item.name}`)
- },
- ];
- const leftButton = {
- text: 'Read',
- icon: starIcon,
- background: Colors.green30,
- onPress: () => Alert.alert(`Read button pressed for item #${item.name}`)
- };
-
- return {
- ...item,
- initials,
- avatarBadgeProps,
- buttonPress,
- listOnPress,
- imageSource,
- rightButtons,
- leftButton
- };
- });
-
- return map;
- }
-
- getNewItems() {
- this.batchCounter++;
- const newItems = this.createItems({
- min: batchSize * this.batchCounter,
- max: batchSize + (batchSize * this.batchCounter)
- });
- const items = _.concat(this.state.items, newItems);
- this.setState({items});
- }
-
- closeLast(index) {
- if (this.lastIndex !== undefined && this.lastIndex !== index) {
- this.closeDrawer(this.lastIndex);
- }
- this.lastIndex = index;
- }
-
- closeDrawer(index) {
- this.refArray[index].closeDrawer();
- }
-
- addRef = (ref, index) => {
- this.refArray[index] = ref;
- }
-
- onEndReached = () => {
- this.getNewItems();
- }
-
- onSwipeableWillOpen = (props) => {
- this.closeLast(props.index);
- }
-
- renderItem = ({item, index}) => {
- return
- }
-
- keyExtractor = (item, index) => `${item.name}-${index}`;
-
- render() {
- return (
-
- );
- }
-}
-
-class ContactItem extends PureComponent {
- static propTypes = {
- item: PropTypes.object,
- index: PropTypes.number,
- addRef: PropTypes.func,
- onSwipeableWillOpen: PropTypes.func
- }
-
- render() {
- const {item, index, addRef, onSwipeableWillOpen} = this.props;
-
- return (
- addRef(r, index)}
- index={index} // sent for the 'closeLast' functionality
- onSwipeableWillOpen={onSwipeableWillOpen} // sent for the 'closeLast' functionality
- >
-
-
-
-
-
-
- {item.name}
- {item.timestamp}
-
-
- {item.text}
- {item.count > 0 && }
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- border: {
- borderBottomWidth: StyleSheet.hairlineWidth,
- borderColor: Colors.grey70,
- paddingRight: 17
- },
- avatar: {
- marginHorizontal: 18
- },
- middle: {
- marginBottom: 3
- },
- text: {
- flex: 1,
- marginRight: 10
- },
- subtitle: {
- marginTop: 2
- }
-});
-
-export default gestureHandlerRootHOC(ConversationListScreen);
diff --git a/demo/src/screens/componentScreens/DateTimePickerScreen.tsx b/demo/src/screens/componentScreens/DateTimePickerScreen.tsx
deleted file mode 100644
index e2d645f60e..0000000000
--- a/demo/src/screens/componentScreens/DateTimePickerScreen.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import moment from 'moment';
-import * as LightDate from 'light-date';
-import {DateTimePicker, DateTimePickerProps, DateTimePickerMode, View, Text, Switch} from 'react-native-ui-lib';
-
-interface State {
- mode: DateTimePickerMode;
- dateTimeFormatter: 'moment' | 'light-date';
-}
-
-export default class DateTimePickerScreen extends Component<{}, State> {
- constructor(props: any) {
- super(props);
- this.state = {
- mode: 'time',
- dateTimeFormatter: 'moment'
- };
- }
-
- getCustomInputValue = (value?: string) => {
- if (!value) {
- return 'Default';
- }
- return value.includes((new Date().getFullYear() + 1).toString()) ? 'Next Year' : value;
- };
-
- renderCustomInput: DateTimePickerProps['renderInput'] = ({value}) => {
- return (
-
- Valid from
-
- {this.getCustomInputValue(value)}
-
-
- );
- };
-
- toggleTimeOrDate = () => {
- this.setState({mode: this.state.mode === 'time' ? 'date' : 'time'});
- };
-
- toggleFormatter = () => {
- this.setState({dateTimeFormatter: this.state.dateTimeFormatter === 'moment' ? 'light-date' : 'moment'});
- };
-
- getFormatter = (): DateTimePickerProps['dateTimeFormatter'] => {
- const {dateTimeFormatter} = this.state;
- if (dateTimeFormatter === 'moment') {
- return (value: Date, mode: DateTimePickerMode) =>
- moment(value).format(mode === 'date' ? 'MMM D, YYYY' : 'h:mm A');
- } else {
- return (value: Date, mode: DateTimePickerMode) =>
- LightDate.format(value, mode === 'date' ? '{mm}-{dd}-{yyyy}' : '{HH}:{mm}');
- }
- };
-
- render() {
- const {mode, dateTimeFormatter} = this.state;
- return (
-
-
- Date Time Picker
-
-
-
-
- Disabled
-
-
-
-
- Custom Input
-
-
-
- {mode}
-
-
-
- {dateTimeFormatter}
-
-
-
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/DialogScreen.js b/demo/src/screens/componentScreens/DialogScreen.js
deleted file mode 100644
index f56fbb56f7..0000000000
--- a/demo/src/screens/componentScreens/DialogScreen.js
+++ /dev/null
@@ -1,343 +0,0 @@
-import React, {Component} from 'react';
-import {FlatList, ScrollView, StyleSheet, Alert} from 'react-native';
-import {
- Text,
- View,
- Button,
- Dialog,
- Colors,
- PanningProvider,
- RadioGroup,
- RadioButton,
- Switch,
- Constants
-} from 'react-native-ui-lib'; // eslint-disable-line
-
-export default class DialogScreen extends Component {
- constructor(props) {
- super(props);
-
- this.SCROLL_TYPE = {
- NONE: 'none',
- VERTICAL: 'vertical',
- HORIZONTAL: 'horizontal'
- };
-
- this.pannableTitle = {title: 'This is a pannable header Dialog'};
- this.title = 'This is a Dialog';
- this.supportedOrientations = ['portrait', 'landscape'];
- this.colors = [
- {value: Colors.red10, label: 'Red10'},
- {value: Colors.red30, label: 'Red30'},
- {value: Colors.red50, label: 'Red50'},
- {value: Colors.red70, label: 'Red70'},
- {value: Colors.blue10, label: 'Blue10'},
- {value: Colors.blue30, label: 'Blue30'},
- {value: Colors.blue50, label: 'Blue50'},
- {value: Colors.blue70, label: 'Blue70'},
- {value: Colors.purple10, label: 'Purple10'},
- {value: Colors.purple30, label: 'Purple30'},
- {value: Colors.purple50, label: 'Purple50'},
- {value: Colors.purple70, label: 'Purple70'},
- {value: Colors.green10, label: 'Green10'},
- {value: Colors.green30, label: 'Green30'},
- {value: Colors.green50, label: 'Green50'},
- {value: Colors.green70, label: 'Green70'},
- {value: Colors.yellow10, label: 'Yellow10'},
- {value: Colors.yellow30, label: 'Yellow30'},
- {value: Colors.yellow50, label: 'Yellow50'},
- {value: Colors.yellow70, label: 'Yellow70'}
- ];
-
- this.state = {
- panDirection: Dialog.directions.DOWN,
- position: 'bottom',
- scroll: this.SCROLL_TYPE.NONE,
- showHeader: true,
- isRounded: true,
- showDialog: false,
- ignoreBackgroundPress: false
- };
- }
-
- titlePressed = ({title}) => {
- Alert.alert('Pressed on', title);
- };
-
- setPanDirection = panDirection => {
- if (panDirection !== this.state.panDirection) {
- this.setState({panDirection});
- }
- };
-
- setPosition = position => {
- if (position !== this.state.position) {
- this.setState({position});
- }
- };
-
- setScroll = scroll => {
- if (scroll !== this.state.scroll) {
- this.setState({scroll});
- }
- };
-
- toggleShowHeader = () => {
- this.setState({
- showHeader: !this.state.showHeader
- });
- };
-
- toggleIsRounded = () => {
- this.setState({
- isRounded: !this.state.isRounded
- });
- };
-
- toggleIgnoreBackgroundPress = () => {
- this.setState({
- ignoreBackgroundPress: !this.state.ignoreBackgroundPress
- });
- };
-
- showDialog = () => {
- this.setState({showDialog: true});
- };
-
- hideDialog = () => {
- this.setState({showDialog: false});
- };
-
- getWarning = () => {
- const {showHeader, scroll, panDirection} = this.state;
- if (!showHeader && scroll !== this.SCROLL_TYPE.NONE) {
- return (
- It is recommended to have pannable header with scrollable content
- );
- } else if (showHeader && panDirection !== Dialog.directions.DOWN) {
- return It is recommended to have pannable header with direction=down ;
- }
- };
-
- getMessage = () => {
- const {panDirection, position, scroll} = this.state;
-
- return `Panning direction: ${panDirection ? panDirection : 'none'}
-Position: ${position ? position : 'center'}
-Scroll: ${scroll}`;
- };
-
- renderPannableHeader = props => {
- const {title} = props;
- return (
-
-
- {title}
-
-
-
- );
- };
-
- renderPlainContent = () => {
- return (
-
-
-
- );
- };
-
- keyExtractor = item => {
- return item.value;
- };
-
- renderVerticalItem = ({item: color}) => {
- return (
-
- {color.label}
-
- );
- };
-
- renderVerticalScroll = () => {
- return (
-
- );
- };
-
- renderHorizontalItem = ({item: color}) => {
- return ;
- };
-
- renderHorizontalScroll = () => {
- return (
-
-
-
-
- {'\u25c0'} Scroll me {'\u25b6'}
-
-
-
- );
- };
-
- renderContent = () => {
- const {scroll, showHeader} = this.state;
-
- let content;
- switch (scroll) {
- case this.SCROLL_TYPE.VERTICAL:
- content = this.renderVerticalScroll();
- break;
- case this.SCROLL_TYPE.HORIZONTAL:
- content = this.renderHorizontalScroll();
- break;
- case this.SCROLL_TYPE.NONE:
- default:
- content = this.renderPlainContent();
- break;
- }
-
- const data = (
-
-
- {!showHeader && {this.title} }
- {this.getMessage()}
- {this.getWarning()}
-
- {content}
-
- );
-
- return data;
- };
-
- getDialogKey = height => {
- const {position} = this.state;
- return `dialog-key-${position}-${height}`;
- };
-
- renderDialog = () => {
- const {showDialog, panDirection, position, scroll, showHeader, isRounded, ignoreBackgroundPress} = this.state;
- const renderPannableHeader = showHeader ? this.renderPannableHeader : undefined;
- const height = scroll !== this.SCROLL_TYPE.NONE ? '70%' : undefined;
-
- return (
-
- {this.renderContent()}
-
- );
- };
-
- render() {
- const {panDirection, position, scroll, showHeader, isRounded, ignoreBackgroundPress} = this.state;
-
- return (
-
-
-
- Dialog
-
-
-
- Panning Direction:
-
-
-
-
-
-
-
-
-
-
- Position:
-
-
-
-
-
-
-
-
- Scroll:
-
-
-
-
-
-
-
-
- Toggle pannable header:
-
-
-
-
- Add some style:
-
-
-
-
- Ignore Background Press:
-
-
-
-
-
- {this.renderDialog()}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- dialog: {
- backgroundColor: Colors.$backgroundDefault
- },
- roundedDialog: {
- backgroundColor: Colors.$backgroundDefault,
- marginBottom: Constants.isIphoneX ? 0 : 20,
- borderRadius: 12
- },
- button: {
- margin: 5,
- alignSelf: 'flex-start'
- },
- verticalScroll: {
- marginTop: 20
- },
- horizontalTextContainer: {
- alignSelf: 'center',
- position: 'absolute',
- top: 10
- }
-});
diff --git a/demo/src/screens/componentScreens/DrawerScreen.tsx b/demo/src/screens/componentScreens/DrawerScreen.tsx
deleted file mode 100644
index 227da59e2d..0000000000
--- a/demo/src/screens/componentScreens/DrawerScreen.tsx
+++ /dev/null
@@ -1,328 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView, LayoutAnimation} from 'react-native';
-import {Assets, Colors, Typography, View, Drawer, Text, Button, Avatar, Badge, DrawerProps} from 'react-native-ui-lib';
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-import conversations from '../../data/conversations';
-
-import {renderBooleanOption, renderSliderOption, renderColorOption} from '../ExampleScreenPresenter';
-
-const ITEMS = {
- read: {
- icon: require('../../assets/icons/mail.png'),
- text: 'Read',
- background: Colors.green30,
- testID: 'left_item_read'
- },
- archive: {
- icon: require('../../assets/icons/archive.png'),
- text: 'Archive',
- background: Colors.blue30,
- testID: 'right_item_archive'
- },
- delete: {
- icon: require('../../assets/icons/delete.png'),
- text: 'Delete',
- background: Colors.red30,
- testID: 'right_item_delete'
- }
-};
-
-class DrawerScreen extends Component {
- state = {
- hideItem: false,
- showRightItems: true,
- fullSwipeRight: true,
- showLeftItem: true,
- fullSwipeLeft: true,
- unread: true,
- itemsTintColor: undefined,
- bounciness: undefined,
- itemsIconSize: undefined
- };
-
- ref: React.Ref = null;
-
- componentDidUpdate(_prevProps: any, prevState: typeof this.state) {
- if (this.state.hideItem && prevState.hideItem) {
- this.showItem();
- }
- }
-
- deleteItem = () => {
- // TODO: consider including this functionality as part of the drawer component
- setTimeout(() => {
- LayoutAnimation.configureNext({
- update: {
- type: LayoutAnimation.Types.easeInEaseOut,
- property: LayoutAnimation.Properties.scaleY
- },
- delete: {
- type: LayoutAnimation.Types.easeInEaseOut,
- property: LayoutAnimation.Properties.scaleY,
- duration: 2000
- },
- duration: 120
- });
- this.setState({hideItem: true});
- }, 200);
- };
-
- toggleReadState = () => {
- this.setState({unread: !this.state.unread});
- };
-
- showItem = () => {
- this.setState({hideItem: false});
- };
-
- openLeftDrawer = () => {
- if (this.ref) {
- // @ts-expect-error
- this.ref.openLeft();
- }
- };
- openLeftDrawerFull = () => {
- if (this.ref) {
- // @ts-expect-error
- this.ref.openLeftFull();
- }
- };
- toggleLeftDrawer = () => {
- if (this.ref) {
- // @ts-expect-error
- this.ref.toggleLeft();
- }
- };
- openRightDrawer = () => {
- if (this.ref) {
- // @ts-expect-error
- this.ref.openRight();
- }
- };
- openRightDrawerFull = () => {
- if (this.ref) {
- // @ts-expect-error
- this.ref.openRightFull();
- }
- };
- closeDrawer = () => {
- if (this.ref) {
- // @ts-expect-error
- this.ref.closeDrawer();
- }
- };
-
- renderActions() {
- return (
-
- Actions
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-
- renderListItem() {
- const data = conversations[2];
-
- return (
-
- {this.state.unread && (
-
- )}
-
-
-
- {data.name}
-
-
- {data.text}
-
-
-
- );
- }
-
- render() {
- const {
- showRightItems,
- fullSwipeRight,
- showLeftItem,
- fullSwipeLeft,
- itemsTintColor,
- bounciness,
- itemsIconSize,
- hideItem
- } = this.state;
-
- const drawerProps: DrawerProps = {
- itemsTintColor,
- itemsIconSize,
- bounciness,
- // @ts-expect-error
- ref: component => (this.ref = component),
- fullSwipeRight,
- onFullSwipeRight: this.deleteItem,
- fullSwipeLeft,
- onWillFullSwipeLeft: this.deleteItem,
- onToggleSwipeLeft: this.toggleReadState,
- testID: 'drawer'
- };
- if (showRightItems) {
- drawerProps.rightItems = [{...ITEMS.delete, onPress: this.deleteItem}, ITEMS.archive];
- }
-
- if (showLeftItem) {
- drawerProps.leftItem = {
- ...ITEMS.read,
- icon: this.state.unread ? require('../../assets/icons/mail.png') : require('../../assets/icons/refresh.png'),
- text: !this.state.unread ? 'Unread' : 'Read',
- background: this.state.unread ? Colors.green30 : Colors.orange30,
- onPress: this.toggleReadState
- };
- }
-
- return (
-
-
- Drawer
-
-
- {!hideItem && (
- <>
-
- {this.renderListItem()}
-
- >
- )}
-
-
-
- {this.renderActions()}
- {renderBooleanOption.call(this, 'rightItems', 'showRightItems')}
- {showRightItems && renderBooleanOption.call(this, 'fullSwipeRight', 'fullSwipeRight')}
- {renderBooleanOption.call(this, 'leftItem', 'showLeftItem')}
- {showLeftItem && renderBooleanOption.call(this, 'fullSwipeLeft', 'fullSwipeLeft')}
- {renderColorOption.call(this, 'icon+text color', 'itemsTintColor')}
- {renderSliderOption.call(this, 'bounciness', 'bounciness', {
- min: 5,
- max: 15,
- step: 1,
- initial: 5
- })}
- {renderSliderOption.call(this, 'iconSize', 'itemsIconSize', {
- min: 15,
- max: 25,
- step: 1,
- initial: 20
- })}
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- backgroundColor: Colors.white
- },
- contentContainer: {
- paddingBottom: 50
- },
- drawer: {
- marginTop: 20
- },
- listContent: {
- backgroundColor: Colors.grey80
- },
- rowContent: {
- flexDirection: 'row',
- alignItems: 'center',
- backgroundColor: Colors.grey80
- },
- rowIcon: {
- width: 38,
- height: 38,
- borderRadius: 19,
- backgroundColor: Colors.violet40,
- margin: 20
- },
- rowTitle: {
- ...Typography.text70,
- fontWeight: 'bold',
- color: Colors.grey20
- },
- rowSubtitle: {
- ...Typography.text80,
- color: Colors.grey30
- },
- rowButtonContainer: {
- flex: 1,
- alignItems: 'flex-end',
- padding: 10
- }
-});
-
-export default gestureHandlerRootHOC(DrawerScreen);
diff --git a/demo/src/screens/componentScreens/EmptyStateScreen.tsx b/demo/src/screens/componentScreens/EmptyStateScreen.tsx
deleted file mode 100644
index bd38a39aba..0000000000
--- a/demo/src/screens/componentScreens/EmptyStateScreen.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView, View} from 'react-native';
-import {StateScreen, Constants, PageControl} from 'react-native-ui-lib';
-const localImageSource = require('../../assets/images/empty-state.jpg');
-const remoteImageSource = {uri: 'https://cdn.pixabay.com/photo/2017/04/19/20/10/morning-2243465_1280.jpg'};
-
-type State = {
- currentPage: number;
-};
-
-export default class EmptyStateScreen extends Component<{}, State> {
- state = {currentPage: 0};
-
- setCurrentPage(offsetX: number) {
- if (offsetX >= 0) {
- this.setState({
- currentPage: Math.floor(offsetX / Constants.screenWidth)
- });
- }
- }
-
- render() {
- return (
-
- {
- this.setCurrentPage(event.nativeEvent.contentOffset.x);
- }}
- scrollEventThrottle={200}
- >
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- flexDirection: 'column'
- },
- pageView: {
- width: Constants.screenWidth,
- height: Constants.screenHeight
- }
-});
diff --git a/demo/src/screens/componentScreens/ExpandableSectionScreen.tsx b/demo/src/screens/componentScreens/ExpandableSectionScreen.tsx
deleted file mode 100644
index 30cae1f3f8..0000000000
--- a/demo/src/screens/componentScreens/ExpandableSectionScreen.tsx
+++ /dev/null
@@ -1,144 +0,0 @@
-import React, {PureComponent} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {Text, View, ExpandableSection, SegmentedControl, Colors, Icon} from 'react-native-ui-lib';
-
-const chevronDown = require('../../assets/icons/chevronDown.png');
-const chevronUp = require('../../assets/icons/chevronUp.png');
-const infoIcon = require('../../assets/icons/info.png');
-const DEFAULT = undefined;
-const PARTIALLY_EXPANDED_HEIGHT = 100;
-const FULLY_EXPANDED_HEIGHT = 300;
-
-class ExpandableSectionScreen extends PureComponent {
- state = {
- expanded: false,
- minHeight: DEFAULT
- };
-
- onExpand = () => {
- this.setState({
- expanded: !this.state.expanded
- });
- };
-
- getChevron(expanded: boolean) {
- return expanded ? chevronUp : chevronDown;
- }
-
- renderReadMoreHeader = () => {
- const {expanded} = this.state;
- return (
-
-
- Read More
-
-
-
- );
- };
-
- renderHeader = (text: string,
- expanded: boolean,
- {disabled, showInfo}: {disabled?: boolean; showInfo?: boolean} = {}) => {
- return (
-
-
- {showInfo ? : null}
-
- {text}
-
-
-
-
- );
- };
-
- renderContent() {
- return (
-
-
- If you have any questions, comments, or concerns, please don't hesitate to get in touch with us. You can
- easily reach out to us through our contact form on our website.
-
-
- Alternatively, you can reach us via email at help@help.com, where our team is ready to assist you promptly. If
- you prefer speaking with someone directly, feel free to give us a call at 1-833-350-1066.
-
-
- );
- }
-
- renderOptions = () => {
- return (
-
-
- Minimum Height
-
-
- The expandable section can be either fully collapsed, partially expanded to reveal some of the items, or fully
- expanded by default.
-
- {
- switch (index) {
- case 0:
- return this.setState({minHeight: DEFAULT});
- case 1:
- return this.setState({minHeight: PARTIALLY_EXPANDED_HEIGHT});
- case 2:
- return this.setState({minHeight: FULLY_EXPANDED_HEIGHT});
- }
- }}
- />
-
- );
- };
-
- renderExpandableSection = () => {
- const {expanded, minHeight} = this.state;
- return (
-
- {this.renderContent()}
-
- );
- };
-
- renderNextItem() {
- return this.renderHeader('Where are you located?', false, {disabled: true, showInfo: true});
- }
-
- render() {
- const {minHeight} = this.state;
- return (
-
-
- ExpandableSection
-
- {this.renderOptions()}
- {this.renderExpandableSection()}
- {minHeight !== PARTIALLY_EXPANDED_HEIGHT ? this.renderNextItem() : null}
-
- );
- }
-}
-
-export default ExpandableSectionScreen;
-
-const styles = StyleSheet.create({
- icon: {
- alignSelf: 'center'
- }
-});
diff --git a/demo/src/screens/componentScreens/FaderScreen.tsx b/demo/src/screens/componentScreens/FaderScreen.tsx
deleted file mode 100644
index d4ac3ae4e8..0000000000
--- a/demo/src/screens/componentScreens/FaderScreen.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Colors, Text, View, Fader, withScrollReached, WithScrollReachedProps} from 'react-native-ui-lib';
-// @ts-ignore
-import {renderHeader} from '../ExampleScreenPresenter';
-
-const numberOfItems = 3;
-const faderPosition = Fader.position.BOTTOM;
-const itemWidth = 100;
-const itemHeight = 100;
-const tintColor = undefined;
-
-// @ts-ignore
-const horizontal = faderPosition === Fader.position.START || faderPosition === Fader.position.END;
-
-class FaderScreen extends Component {
- renderItem = (index: number) => {
- return (
-
- {index + 1}
-
- );
- };
-
- render() {
- const {scrollReachedProps} = this.props;
- const visible =
- faderPosition === Fader.position.BOTTOM || faderPosition === Fader.position.END
- ? !scrollReachedProps.isScrollAtEnd
- : !scrollReachedProps.isScrollAtStart;
-
- return (
-
- {renderHeader('Fader', {'marginB-10': true})}
-
-
-
- {_.times(numberOfItems, this.renderItem)}
-
-
-
-
-
- );
- }
-}
-
-export default withScrollReached(FaderScreen, {
- horizontal
-});
-
-const styles = StyleSheet.create({
- container: {
- width: horizontal ? undefined : itemWidth,
- height: horizontal ? itemHeight : undefined
- },
- scrollView: {
- width: horizontal ? 240 : undefined,
- height: horizontal ? undefined : 240
- },
- item: {
- height: itemHeight,
- width: itemWidth,
- backgroundColor: Colors.$backgroundDefault,
- borderColor: Colors.$outlineDisabled,
- borderWidth: 2,
- alignItems: 'center',
- justifyContent: 'center'
- }
-});
diff --git a/demo/src/screens/componentScreens/FeatureHighlightScreen.tsx b/demo/src/screens/componentScreens/FeatureHighlightScreen.tsx
deleted file mode 100644
index e7cfbebec7..0000000000
--- a/demo/src/screens/componentScreens/FeatureHighlightScreen.tsx
+++ /dev/null
@@ -1,186 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {AccessibilityInfo, findNodeHandle} from 'react-native';
-import {Colors, Typography, View, Text, Button, FeatureHighlight} from 'react-native-ui-lib'; // eslint-disable-line
-
-const titles = [
- 'Get Notified',
- 'Title two is a long title that will not get cut by default, but can be limited',
- 'Title number three',
- 'Title number four',
- 'Title number five',
- 'Welcome to Uilib demo!'
-];
-const messages = [
- 'Important notifications appear right on your clubs and groups. Tap them to get more information about the most' +
- 'important things that you should pay attention to.',
- 'Short message with information about the above highlighted feature',
- 'A long message, that will not get cut (but can be limited) with information about the highlighted feature.' +
- ' Please note that if the message is too long and will cause the content box to render off screen, you will get a' +
- ' warning about it',
- 'Very short message',
- 'Short message with information about the below highlighted feature',
- 'Here is where you can view demos of all Uilib components'
-];
-
-interface State {
- currentTargetIndex: number;
- showFTE: boolean;
-}
-
-class FeatureHighlightScreen extends Component<{}, State> {
- viewRef: any;
- targets: {[key: string]: any} = {};
-
- constructor(props: any) {
- super(props);
-
- this.state = {
- showFTE: false,
- currentTargetIndex: 0
- };
- }
-
- componentDidMount() {
- // setting timeout to allow Android's transition animation to complete
- setTimeout(() => {
- this.showHighlight();
- }, 1000);
- }
-
- closeHighlight = () => {
- this.setState({showFTE: false}, () => {
- if (this.viewRef) {
- const reactTag = findNodeHandle(this.viewRef);
- reactTag && AccessibilityInfo.setAccessibilityFocus(reactTag);
- }
- });
- };
-
- showHighlight = () => {
- this.setState({showFTE: true});
- };
-
- addTarget(ref: any, id: string) {
- if (ref && !this.targets[id]) {
- this.targets[id] = ref;
- }
- }
-
- moveNext = () => {
- const {currentTargetIndex} = this.state;
- const newTargetIndex = currentTargetIndex + 1;
-
- this.moveToPage(newTargetIndex);
- };
-
- moveToPage(index: number) {
- if (index < _.size(this.targets)) {
- this.setState({currentTargetIndex: index});
- } else {
- this.closeHighlight();
- }
- }
-
- getPageControlProps() {
- return {
- numOfPages: titles.length,
- currentPage: this.state.currentTargetIndex,
- onPagePress: this.onPagePress,
- color: Colors.grey30,
- inactiveColor: Colors.grey80,
- size: 8
- };
- }
-
- onPagePress = (index: number) => {
- this.moveToPage(index);
- };
-
- renderHighlighterOverlay() {
- const {showFTE, currentTargetIndex} = this.state;
- const lastPage = titles.length - 1;
-
- return (
- this.targets[currentTargetIndex]}
- // highlightFrame={{x: 30, y: 70, width: 150, height: 30}}
- // highlightFrame={{x: 160, y: 336, width: 150, height: 56}}
- borderRadius={_.includes([1, 2, 3, 4], currentTargetIndex) ? 4 : undefined}
- pageControlProps={currentTargetIndex < lastPage ? this.getPageControlProps() : undefined}
- />
- );
- }
-
- render() {
- return (
-
-
-
- this.addTarget(r, '0')}
- />
- this.addTarget(r, '1')}/>
-
-
-
- this.addTarget(r, '2')}
- />
- this.addTarget(r, '3')}
- />
-
- this.addTarget(r, '4')}
- />
-
-
-
- (this.viewRef = r)}>
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
- industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type
- and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap
- into electronic typesetting, remaining essentially unchanged.
-
-
- this.addTarget(r, '5')}>
-
-
-
- {this.renderHighlighterOverlay()}
-
- );
- }
-}
-
-export default FeatureHighlightScreen;
diff --git a/demo/src/screens/componentScreens/FloatingButtonScreen.tsx b/demo/src/screens/componentScreens/FloatingButtonScreen.tsx
deleted file mode 100644
index 573da8dc28..0000000000
--- a/demo/src/screens/componentScreens/FloatingButtonScreen.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import React, {Component} from 'react';
-import {View, StyleSheet, Alert, ScrollView} from 'react-native';
-import {Colors, Text, FloatingButton, FloatingButtonLayouts} from 'react-native-ui-lib';
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-interface State {
- showButton: boolean;
- showSecondary: boolean;
- showVertical: boolean;
-}
-
-export default class FloatingButtonScreen extends Component<{}, State> {
- state = {
- showButton: true,
- showSecondary: true,
- showVertical: true,
- fullWidth: false
- };
-
- notNow = () => {
- Alert.alert('Not Now!');
- this.setState({showButton: false});
- };
-
- close = () => {
- Alert.alert('Closed.');
- this.setState({showButton: false});
- };
-
- render() {
- const {showSecondary, showVertical} = this.state;
- return (
-
-
- Trigger Floating Button
-
- {renderBooleanOption.call(this, 'Show Floating Button', 'showButton')}
- {renderBooleanOption.call(this, 'Full Width Button', 'fullWidth')}
- {renderBooleanOption.call(this, 'Show Secondary Button', 'showSecondary')}
- {renderBooleanOption.call(this, 'Button Layout Vertical', 'showVertical')}
-
-
-
-
- Scroll behind a FloatingButton
-
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the
- industry standard dummy text ever since the 1500s, when an unknown printer took a galley of type and
- scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into
- electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release
- of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software
- like Aldus PageMaker including versions of Lorem Ipsum. Contrary to popular belief, Lorem Ipsum is not
- simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000
- years old. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been
- the industry standard dummy text ever since the 1500s, when an unknown printer took a galley of type and
- scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into
- electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release
- of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software
- like Aldus PageMaker including versions of Lorem Ipsum. Contrary to popular belief, Lorem Ipsum is not
- simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000
- years old.
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- padding: 30,
- paddingBottom: 0,
- flex: 1,
- backgroundColor: Colors.$backgroundDefault
- }
-});
diff --git a/demo/src/screens/componentScreens/GridListScreen.tsx b/demo/src/screens/componentScreens/GridListScreen.tsx
deleted file mode 100644
index 023181cc53..0000000000
--- a/demo/src/screens/componentScreens/GridListScreen.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {
- View,
- Text,
- Constants,
- GridList,
- Card,
- Spacings,
- BorderRadiuses,
- GridListProps,
- GridListItem
-} from 'react-native-ui-lib';
-import products from '../../data/products';
-import {renderBooleanOption, renderMultipleSegmentOptions} from '../ExampleScreenPresenter';
-
-class GridListScreen extends Component {
- state = {
- orientation: Constants.orientation,
- useGridListItem: true,
- horizontalAlignment: GridListItem.horizontalAlignment.left,
- overlayText: false,
- alignToStart: false
- };
-
- renderHeader = () => {
- return (
-
-
- GridList
-
- {renderBooleanOption.call(this, 'UseGridListItem', 'useGridListItem')}
-
- GridListItem props
-
- {renderMultipleSegmentOptions.call(this, 'Horizontal Alignment:', 'horizontalAlignment', [
- {label: 'left', value: GridListItem.horizontalAlignment.left},
- {label: 'center', value: GridListItem.horizontalAlignment.center},
- {label: 'right', value: GridListItem.horizontalAlignment.right}
- ])}
- {renderBooleanOption.call(this, 'Align to start:', 'alignToStart')}
- {renderBooleanOption.call(this, 'Use overlay text:', 'overlayText')}
-
- );
- };
-
- renderItem: GridListProps<(typeof products)[0]>['renderItem'] = ({item}) => {
- const {useGridListItem, horizontalAlignment, overlayText, alignToStart} = this.state;
-
- if (useGridListItem) {
- return (
-
- );
- } else {
- return (
-
-
-
- {item.name}
- {item.formattedPrice}
- {item.inventory.status === 'Out of Stock' && (
-
- {item.inventory.status}
-
- )}
-
-
- );
- }
- };
-
- render() {
- return (
-
- ListHeaderComponent={() => this.renderHeader()}
- data={products}
- renderItem={this.renderItem}
- numColumns={2}
- // maxItemWidth={140}
- itemSpacing={Spacings.s3}
- listPadding={Spacings.s5}
- // keepItemSize
- contentContainerStyle={styles.list}
- />
- );
- }
-}
-
-const styles = StyleSheet.create({
- list: {
- paddingTop: Spacings.s5
- },
- itemImage: {
- width: '100%',
- height: 85,
- borderRadius: BorderRadiuses.br10
- }
-});
-
-export default GridListScreen;
diff --git a/demo/src/screens/componentScreens/GridViewScreen.tsx b/demo/src/screens/componentScreens/GridViewScreen.tsx
deleted file mode 100644
index aea16a09b3..0000000000
--- a/demo/src/screens/componentScreens/GridViewScreen.tsx
+++ /dev/null
@@ -1,199 +0,0 @@
-import _ from 'lodash';
-import {View, Text, Image, Colors, Constants, Avatar, GridView, Card, GridViewProps} from 'react-native-ui-lib';
-import React, {Component} from 'react';
-import {Alert, ScrollView} from 'react-native';
-import conversations from '../../data/conversations';
-import products from '../../data/products';
-
-class GridViewScreen extends Component {
- state = {
- contacts: _.flow(conversations => _.take(conversations, 15),
- (contacts: any[]) =>
- _.map(contacts, contact => ({
- imageProps: {source: {uri: contact.thumbnail}, borderRadius: 999, style: {backgroundColor: Colors.grey60}},
- title: _.split(contact.name, ' ')[0],
- titleLines: 1,
- onPress: () => Alert.alert('My name is ' + contact.name)
- })))(conversations),
- products: _.flow(products => _.take(products, 8),
- (products: any[]) =>
- _.map(products, (product, index) => ({
- imageProps: {
- source: {uri: product.mediaUrl},
- borderRadius: 4,
- style: {backgroundColor: Colors.grey60, borderWidth: 1, borderColor: Colors.grey50}
- },
- title: product.name,
- titleTypography: 'subtextBold',
- onPress: () => Alert.alert('My price is ' + product.formattedPrice),
- renderOverlay: () => {
- if (index < 7) {
- return ;
- }
- }
- })))(products) as GridViewProps['items'],
- pairs: _.flow(products => _.take(products, 2),
- (products: any[]) =>
- _.map(products, product => ({
- containerProps: {useNative: true, activeScale: 0.97, activeOpacity: 1},
- renderCustomItem: () => {
- return (
-
-
-
- );
- },
- title: product.name,
- subtitle: (
-
- {product.formattedPrice}
- $50
-
- ),
- description: product.inventory.status,
- descriptionLines: 2,
- alignToStart: true,
- onPress: () => Alert.alert('My price was ' + product.formattedPrice + ', now it is $50')
- })))(products) as GridViewProps['items'],
- dynamicLayout: _.flow(products => _.take(products, 3),
- (products: any[]) =>
- _.map(products, product => ({
- imageProps: {
- source: {
- uri: product.mediaUrl
- }
- },
- itemSize: {height: 90},
- title: 'Title',
- subtitle: 'subtitle',
- description: product.name,
- descriptionLines: 2,
- alignToStart: true,
- onPress: () => Alert.alert('Click!')
- })))(products),
- overlayText: _.flow(products => _.take(products, 2),
- (products: any[]) =>
- _.map(products, (product, index) => ({
- imageProps: {
- source: {
- uri: product.mediaUrl
- },
- overlayType: Image.overlayTypes.VERTICAL,
- overlayColor: Colors.white
- },
- itemSize: {height: 240},
- overlayText: true,
- title: product.name,
- subtitle: (
-
- {product.formattedPrice}
- {product.formattedPrice}
-
- ),
- description: '4 items',
- descriptionLines: 2,
- alignToStart: true,
- onPress: () => Alert.alert('My price was ' + product.formattedPrice + ', now it is $50'),
- renderOverlay: () => {
- if (index === 0) {
- return (
-
- {product.formattedPrice}
-
- );
- }
- }
- })))(products) as GridViewProps['items'],
-
- avatars: _.flow(products => _.take(products, 9),
- (products: any[]) =>
- _.map(products, item => ({
- renderCustomItem: () => {
- const imageElementElement = item.thumbnail;
- return (
-
-
-
- );
- },
- onPress: () => Alert.alert('Your choose is ' + item.name),
- title: item.name,
- titleLines: 2,
- titleTypography: 'bodySmall'
- })))(products),
- squares: [Colors.red30, Colors.yellow30, Colors.blue30, Colors.violet30, Colors.green30].map(color => ({
- renderCustomItem: () =>
- })),
- orientation: Constants.orientation
- };
-
- onLayout = () => {
- if (this.state.orientation !== Constants.orientation) {
- // Basically just for triggering render - can be any other variable
- // (Constants.orientation is already up-to-date and can be used directly)
- this.setState({
- orientation: Constants.orientation
- });
- }
- };
-
- render() {
- const {contacts, dynamicLayout, overlayText, avatars, products, pairs, squares} = this.state;
-
- return (
-
-
-
- GridView
-
-
-
- Avatars
-
-
-
-
- Thumbnails
-
-
-
-
- Pairs
-
-
-
- Dynamic itemSize
- (Using maxItemWidth)
-
-
-
- OverlayText
-
-
-
- Custom content (Avatars)
-
-
-
- Custom content (Squares)
-
-
-
-
- );
- }
-}
-
-export default GridViewScreen;
diff --git a/demo/src/screens/componentScreens/HapticScreen.tsx b/demo/src/screens/componentScreens/HapticScreen.tsx
deleted file mode 100644
index 740b808e01..0000000000
--- a/demo/src/screens/componentScreens/HapticScreen.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {View, Text, Button, HapticService, HapticType} from 'react-native-ui-lib';
-
-export default class HapticScreen extends Component {
- onPress = ({hapticType}: {hapticType: HapticType}) => {
- HapticService.triggerHaptic(hapticType, 'HapticScreen');
- };
-
- render() {
- return (
-
-
-
- Haptic Screen
-
-
- {_.map(HapticService.HapticType, hapticType => {
- return this.onPress({hapticType})}/>;
- })}
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/HintsScreen.tsx b/demo/src/screens/componentScreens/HintsScreen.tsx
deleted file mode 100644
index 2b2885d13d..0000000000
--- a/demo/src/screens/componentScreens/HintsScreen.tsx
+++ /dev/null
@@ -1,224 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {Alert, ViewStyle} from 'react-native';
-import {Colors, View, Text, Hint, Button, Assets, Incubator} from 'react-native-ui-lib';
-import {renderMultipleSegmentOptions, renderBooleanOption} from '../ExampleScreenPresenter';
-
-const settingsIcon = require('../../assets/icons/settings.png');
-const reactions = ['❤️', '😮', '😔', '😂', '😡'];
-
-type HintScreenProps = {};
-
-export default class HintsScreen extends Component {
- state = {
- showHint: true,
- useShortMessage: false,
- showBottomHint: false,
- showIcon: false,
- targetPosition: 'flex-start' as ViewStyle['alignSelf'],
- useBackdrop: true,
- useTargetFrame: false,
- useSideTip: false,
- showCustomContent: false,
- showReactionStrip: false,
- enableShadow: false
- };
-
- toggleHint = () => {
- this.setState({showHint: !this.state.showHint});
- };
-
- toggleHintPosition = () => {
- this.setState({
- showBottomHint: !this.state.showBottomHint
- });
- };
-
- onHintPressed = () => {
- Alert.alert('Hint Pressed');
- };
-
- onReactionPress = () => {
- Alert.alert('Reaction button pressed');
- };
-
- renderCustomContent() {
- return (
-
- Click
- Alert.alert('custom content :)')} text70BO red40>
- {' here '}
-
- for more information
-
- );
- }
-
- renderReactionStrip() {
- return (
-
- {_.map(reactions, (item, index) => (
-
- ))}
-
- );
- }
-
- renderOptionsFAB() {
- return (
-
-
-
-
-
- );
- }
-
- renderScreenOptions() {
- return (
-
-
- Hint Options
-
- {renderMultipleSegmentOptions.call(this, 'Button Position', 'targetPosition', [
- {label: 'Left', value: 'flex-start'},
- {label: 'Center', value: 'center'},
- {label: 'Right', value: 'flex-end'}
- ])}
-
- {renderMultipleSegmentOptions.call(this, 'Tip Position', 'useSideTip', [
- {label: 'Side Tip', value: true},
- {label: 'Middle Top', value: false}
- ])}
-
- {renderMultipleSegmentOptions.call(this, 'Hint Position', 'showBottomHint', [
- {label: 'Above', value: false},
- {label: 'Under', value: true}
- ])}
-
- {renderMultipleSegmentOptions.call(this, 'Message Length', 'useShortMessage', [
- {label: 'Short', value: true},
- {label: 'Long', value: false}
- ])}
-
- {renderBooleanOption.call(this, 'With backdrop', 'useBackdrop')}
- {renderBooleanOption.call(this, 'With icon', 'showIcon')}
- {renderBooleanOption.call(this, 'With shadow', 'enableShadow')}
- {renderBooleanOption.call(this, 'Use random position', 'useTargetFrame')}
- {renderBooleanOption.call(this, 'Show custom content', 'showCustomContent')}
- {renderBooleanOption.call(this, 'Show reaction strip', 'showReactionStrip')}
-
- );
- }
-
- render() {
- const {
- showHint,
- showBottomHint,
- showIcon,
- targetPosition,
- useBackdrop,
- useShortMessage,
- useSideTip,
- useTargetFrame,
- showCustomContent,
- showReactionStrip,
- enableShadow
- } = this.state;
- const targetFrame = {x: 140, y: 100, width: 10, height: 10};
- const message = useShortMessage
- ? 'Add other cool and useful stuff.'
- : 'Add other cool and useful stuff through adding apps to your visitors to enjoy.';
- const color = !showCustomContent && showReactionStrip ? {color: Colors.$backgroundDefault} : undefined;
-
- return (
-
-
- {/* */}
-
- // {message}{' '}
- // {}}>
- // click here
- //
- //
- // }
- // messageStyle={{color: 'red'}}
- icon={showIcon ? settingsIcon : undefined}
- // iconStyle={{tintColor: 'red'}}
- // offset={35}
- position={showBottomHint ? Hint.positions.BOTTOM : Hint.positions.TOP}
- useSideTip={useSideTip}
- key={targetPosition}
- onPress={this.onHintPressed}
- targetFrame={useTargetFrame ? targetFrame : undefined}
- // borderRadius={BorderRadiuses.br40}
- // edgeMargins={30}
- onBackgroundPress={useBackdrop && !useTargetFrame ? this.toggleHint : undefined}
- backdropColor={Colors.rgba(Colors.$backgroundInverted, 0.3)}
- customContent={
- showCustomContent
- ? this.renderCustomContent()
- : showReactionStrip
- ? this.renderReactionStrip()
- : undefined
- }
- {...color}
- removePaddings={!showCustomContent && showReactionStrip}
- enableShadow={enableShadow}
- testID={'Hint'}
- >
- {!useTargetFrame && (
-
- )}
-
-
- {useTargetFrame && (
- <>
-
-
-
-
-
- >
- )}
-
-
- {this.renderOptionsFAB()}
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/HorizontalSortableListScreen.tsx b/demo/src/screens/componentScreens/HorizontalSortableListScreen.tsx
deleted file mode 100644
index 06ca212ac4..0000000000
--- a/demo/src/screens/componentScreens/HorizontalSortableListScreen.tsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import React, {useCallback, useState, useRef} from 'react';
-import {StyleSheet} from 'react-native';
-import {SortableList, View, Text, Colors, Button, Card, BorderRadiuses} from 'react-native-ui-lib';
-import {renderHeader} from '../ExampleScreenPresenter';
-import products from '../../data/products';
-
-const data = products.map((product, index) => ({...product, locked: index === 3}));
-type Item = (typeof data)[0];
-
-const HorizontalSortableListScreen = () => {
- const [items, setItems] = useState- (data);
- const [selectedItems, setSelectedItems] = useState
- ([]);
- const [removedItems, setRemovedItems] = useState
- ([]);
- const orderedItems = useRef
- (data);
-
- const toggleItemSelection = useCallback((item: Item) => {
- if (selectedItems.includes(item)) {
- setSelectedItems(selectedItems.filter(selectedItem => ![item.id].includes(selectedItem.id)));
- } else {
- setSelectedItems(selectedItems.concat(item));
- }
- },
- [selectedItems, setSelectedItems]);
-
- const addItem = useCallback(() => {
- if (removedItems.length > 0) {
- orderedItems.current = orderedItems.current.concat(removedItems[0]);
- setItems(orderedItems.current);
- setRemovedItems(removedItems.slice(1));
- }
- }, [removedItems, setItems, setRemovedItems]);
-
- const removeSelectedItems = useCallback(() => {
- setRemovedItems(removedItems.concat(selectedItems));
- setSelectedItems([]);
- orderedItems.current = orderedItems.current.filter(item => !selectedItems.includes(item));
- setItems(orderedItems.current);
- }, [setRemovedItems, removedItems, selectedItems, setItems, setSelectedItems]);
-
- const keyExtractor = useCallback((item: Item) => {
- return `${item.id}`;
- }, []);
-
- const onOrderChange = useCallback((newData: Item[]) => {
- console.log('New order:', newData);
- orderedItems.current = newData;
- }, []);
-
- const renderItem = useCallback(({item, index: _index}: {item: Item; index: number}) => {
- const selected = selectedItems.includes(item);
- const {locked} = item;
- const Container = locked ? View : Card;
- return (
-
toggleItemSelection(item)}
- customValue={item.id}
- selected={selected}
- margin-s1
- >
-
- {locked ? 'Locked' : item.id}
-
- )
- }}
- />
-
- );
- },
- [selectedItems, toggleItemSelection]);
-
- return (
-
- {renderHeader('Sortable List', {'margin-10': true})}
-
-
-
-
-
-
-
-
- );
-};
-
-export default HorizontalSortableListScreen;
-const styles = StyleSheet.create({
- itemContainer: {
- overflow: 'hidden',
- borderColor: Colors.$outlineDefault,
- borderBottomWidth: 1
- },
- selectedItemContainer: {
- borderLeftColor: Colors.$outlinePrimary,
- borderLeftWidth: 5
- },
- itemImage: {
- width: 80,
- height: 80,
- borderRadius: BorderRadiuses.br10
- }
-});
diff --git a/demo/src/screens/componentScreens/IconScreen.tsx b/demo/src/screens/componentScreens/IconScreen.tsx
deleted file mode 100644
index f5a4e517e9..0000000000
--- a/demo/src/screens/componentScreens/IconScreen.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import React, {useState} from 'react';
-import {Assets, View, Icon, Text, Slider, GradientSlider, Colors} from 'react-native-ui-lib';
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-const DEFAULT_BADGE_SIZE = 20;
-const DEFAULT_PIMPLE_SIZE = 10;
-
-const IconScreen = () => {
- const [size, setSize] = useState(24);
- const [badgeSize, setBadgeSize] = useState(20);
- const [customSize, setCustomSize] = useState(false);
- const [customBadgeSize, setCustomBadgeSize] = useState(false);
- const [color, setColor] = useState();
- const [customColor, setCustomColor] = useState(false);
- const [useBadge, setUseBadge] = useState(false);
- const [usePimple, setUsePimple] = useState(false);
-
- return (
-
-
- Icon Screen
-
-
-
-
-
- {renderBooleanOption('Custom Size', 'customSize', {spread: false, state: customSize, setState: setCustomSize})}
-
-
- Custom size: {size}
-
-
- {renderBooleanOption('Custom Badge Size', 'customBadgeSize', {
- spread: false,
- state: customBadgeSize,
- setState: setCustomBadgeSize
- })}
-
-
- Custom badge size: {badgeSize}
-
-
- {renderBooleanOption('Custom Color', 'customColor', {
- spread: false,
- state: customColor,
- setState: setCustomColor
- })}
-
- Custom color: {color || '#000000'}
-
-
-
- Badge Settings:
-
- {renderBooleanOption('Use Badge:', 'useBadge', {spread: false, state: useBadge, setState: setUseBadge})}
- {renderBooleanOption('Pimple Badge', 'showLabel', {spread: false, state: usePimple, setState: setUsePimple})}
-
-
- );
-};
-
-export default IconScreen;
diff --git a/demo/src/screens/componentScreens/ImageScreen.tsx b/demo/src/screens/componentScreens/ImageScreen.tsx
deleted file mode 100644
index f467e0c3f1..0000000000
--- a/demo/src/screens/componentScreens/ImageScreen.tsx
+++ /dev/null
@@ -1,198 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {View, Text, Icon, Image, Colors, Assets, OverlayTypes} from 'react-native-ui-lib';
-import {renderBooleanOption, renderRadioGroup, renderSliderOption} from '../ExampleScreenPresenter';
-
-const IMAGE_URL =
- 'https://images.pexels.com/photos/748837/pexels-photo-748837.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260';
-const BROKEN_URL = 'file:///Desktop/website/img/cupcake.jpg';
-const DEFAULT_SIZE = 100;
-
-const file = Assets.svgs.demo.logo;
-const uri = {uri: 'https://www.svgrepo.com/show/530581/cell-phone.svg'};
-// const uriWithCss = {uri: ''}; // TODO: find an example
-const xml = `
-
-
-
-
-
-
-
-
-
-`;
-
-enum SizeType {
- None = '',
- Fixed = '50',
- Percentage = '50%'
-}
-
-enum SvgType {
- File = 'file',
- Uri = 'uri',
- // UriWithCss = 'use_with_css',
- Xml = 'xml'
-}
-
-interface State {
- cover: boolean;
- showOverlayContent: boolean;
- overlayType: 'none' | OverlayTypes['type'];
- overlayIntensity: OverlayTypes['intensity'];
- margin: number;
- showErrorImage: boolean;
- showSvg: boolean;
- svgType: SvgType;
- sizeType: SizeType;
-}
-
-class ImageScreen extends Component<{}, State> {
- state = {
- cover: true,
- showOverlayContent: false,
- overlayType: 'none',
- overlayIntensity: Image.overlayIntensityType.LOW,
- margin: 0,
- showErrorImage: false,
- showSvg: false,
- svgType: SvgType.File,
- sizeType: SizeType.None,
- borderRadius: 0
- };
-
- getSvgSource() {
- const {svgType} = this.state;
- switch (svgType) {
- case SvgType.File:
- return file;
- case SvgType.Uri:
- return uri;
- // case SvgType.UriWithCss:
- // return uriWithCss;
- case SvgType.Xml:
- default:
- return xml;
- }
- }
-
- renderOverlayContent() {
- const {cover, overlayType, showOverlayContent} = this.state;
- if (showOverlayContent) {
- if (cover) {
- return (
-
-
-
-
- Overlay Content
-
-
-
- );
- } else {
- return ;
- }
- }
- }
-
- renderImage() {
- const {cover, overlayType, overlayIntensity, margin, showErrorImage, borderRadius} = this.state;
- return (
-
- );
- }
-
- renderSvgImage() {
- const {sizeType} = this.state;
- const size: any = Number(sizeType) || sizeType;
- const source = this.getSvgSource();
- return (
- <>
- {size ? (
-
- ) : (
-
- )}
- >
- );
- }
-
- renderOptions() {
- return (
- <>
- {renderBooleanOption.call(this, 'Show as Cover Image', 'cover')}
- {renderBooleanOption.call(this, 'Show Overlay Content', 'showOverlayContent')}
- {renderBooleanOption.call(this, 'Show Error Image', 'showErrorImage')}
-
- {renderRadioGroup.call(this, 'Overlay Type', 'overlayType', {none: 'none', ...Image.overlayTypes})}
- {renderRadioGroup.call(this, 'Overlay Intensity', 'overlayIntensity', Image.overlayIntensityType)}
-
- {renderSliderOption.call(this, 'Margin(margin-XX)', 'margin', {step: 4, min: 0, max: 40})}
- {renderSliderOption.call(this, 'Border Radius', 'borderRadius', {step: 5, min: 0, max: 100})}
- >
- );
- }
-
- renderSvgOptions() {
- return (
- <>
- {renderRadioGroup.call(this, 'SVG Type', 'svgType', SvgType, {isRow: true})}
- {renderRadioGroup.call(this, 'Size Type', 'sizeType', SizeType, {isRow: true})}
- >
- );
- }
-
- render() {
- const {showSvg} = this.state;
- return (
-
-
- {showSvg ? this.renderSvgImage() : this.renderImage()}
-
-
- Image Screen
-
-
-
-
- {renderBooleanOption.call(this, 'Show SVG', 'showSvg')}
- {showSvg ? this.renderSvgOptions() : this.renderOptions()}
-
-
-
-
- );
- }
-}
-
-export default ImageScreen;
diff --git a/demo/src/screens/componentScreens/KeyboardAwareScrollViewScreen.js b/demo/src/screens/componentScreens/KeyboardAwareScrollViewScreen.js
deleted file mode 100644
index 04e629e3ff..0000000000
--- a/demo/src/screens/componentScreens/KeyboardAwareScrollViewScreen.js
+++ /dev/null
@@ -1,189 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {
- Colors,
- KeyboardAwareScrollView,
- KeyboardAwareFlatList,
- TextField,
- Text,
- Typography,
- View
-} from 'react-native-ui-lib';
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-const data = [
- {
- placeholder: 'First Name',
- ref: '_firstNameTI',
- nextRef: '_lastNameTI'
- },
- {
- placeholder: 'Last Name',
- ref: '_lastNameTI',
- nextRef: '_countryTI'
- },
- {
- placeholder: 'Country',
- ref: '_countryTI',
- nextRef: '_stateTI'
- },
- {
- placeholder: 'State',
- ref: '_stateTI',
- nextRef: '_addrTI'
- },
- {
- placeholder: 'Address',
- ref: '_addrTI',
- nextRef: '_emailTI'
- },
- {
- placeholder: 'Email',
- keyboardType: 'email-address',
- ref: '_emailTI',
- nextRef: '_msgTI'
- },
- {
- placeholder: 'Message',
- ref: '_msgTI',
- nextRef: '_notesTI'
- },
- {
- placeholder: 'Notes',
- ref: '_notesTI'
- }
-];
-
-export default class KeyboardAwareScrollViewScreen extends Component {
- constructor(props) {
- super(props);
- this.state = {
- isFlatList: false
- };
- }
-
- renderItem = (data) => {
- const {isFlatList} = this.state;
- const item = isFlatList ? data.item : data;
- const {placeholder, ref, nextRef, keyboardType} = item;
- const returnKeyType = nextRef ? 'next' : 'go';
- const onSubmitEditing = nextRef ? () => this[nextRef].focus() : undefined;
- return (
- {
- this[ref] = r;
- }}
- returnKeyType={returnKeyType}
- keyboardType={keyboardType}
- onSubmitEditing={onSubmitEditing}
- />
- );
- };
-
- keyExtractor = (item) => item.placeholder;
-
- renderKeyboardAwareFlatList() {
- return (
- {
- return [
- this._firstNameTI,
- this._lastNameTI,
- this._countryTI,
- this._stateTI,
- this._addrTI,
- this._emailTI,
- this._msgTI,
- this._notesTI
- ];
- }}
- />
- );
- }
-
- renderKeyboardAwareScrollView() {
- return (
- {
- return [
- this._firstNameTI,
- this._lastNameTI,
- this._countryTI,
- this._stateTI,
- this._addrTI,
- this._emailTI,
- this._msgTI,
- this._notesTI
- ];
- }}
- >
- {_.map(data, (item) => this.renderItem(item))}
-
- );
- }
-
- render() {
- const {isFlatList} = this.state;
- const switchText = `${
- isFlatList ? 'KeyboardAwareFlatList' : 'KeyboardAwareScrollView'
- }`;
- return (
-
-
- KeyboardAware example form
-
- {renderBooleanOption.call(this, switchText, 'isFlatList')}
-
- {isFlatList
- ? this.renderKeyboardAwareFlatList()
- : this.renderKeyboardAwareScrollView()}
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- padding: 20
- },
- TextField: {
- ...Typography.text70R
- },
- topButton: {
- width: '100%',
- marginBottom: 5,
- paddingVertical: 5
- },
- row: {
- flexDirection: 'row',
- justifyContent: 'center',
- padding: 10,
- backgroundColor: Colors.white
- },
- separator: {
- height: 1,
- backgroundColor: Colors.black
- },
- thumb: {
- width: 64,
- height: 64
- },
- text: {
- flex: 1
- }
-});
diff --git a/demo/src/screens/componentScreens/LoadingScreen.tsx b/demo/src/screens/componentScreens/LoadingScreen.tsx
deleted file mode 100644
index 84e7489e0d..0000000000
--- a/demo/src/screens/componentScreens/LoadingScreen.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, LoaderScreen, Colors} from 'react-native-ui-lib';
-export default class LoadingScreen extends Component {
- state = {
- loading: true
- };
-
- componentDidMount() {
- setTimeout(() => {
- this.setState({loading: false});
- }, 2500);
- }
-
- render() {
- const {loading} = this.state;
- return (
-
- Content Content Content
- {loading && }
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/MarqueeScreen.tsx b/demo/src/screens/componentScreens/MarqueeScreen.tsx
deleted file mode 100644
index 08cd81332c..0000000000
--- a/demo/src/screens/componentScreens/MarqueeScreen.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Marquee, MarqueeDirections, Text, View, Spacings} from 'react-native-ui-lib';
-import {renderBooleanOption, renderMultipleSegmentOptions} from '../ExampleScreenPresenter';
-
-export default class MarqueeScreen extends Component<{}> {
- state = {
- duration: 5000,
- directionHorizontal: true,
- directionVertical: true,
- numOfReps: -1
- };
-
- renderHorizontalSection = () => {
- const {directionHorizontal, numOfReps, duration} = this.state;
- return (
-
-
- Horizontal
-
-
- Marquee: {directionHorizontal ? MarqueeDirections.LEFT : MarqueeDirections.RIGHT}
-
-
-
- );
- };
-
- renderVerticalSection = () => {
- const {directionVertical, numOfReps, duration} = this.state;
- return (
-
-
- Vertical
-
-
- Marquee: {directionVertical ? MarqueeDirections.UP : MarqueeDirections.DOWN}
-
-
-
- );
- };
-
- render() {
- return (
-
-
- Marquee
-
-
- {renderMultipleSegmentOptions.call(this, 'Duration (optional)', 'duration', [
- {label: '3000', value: 3000},
- {label: '5000', value: 5000},
- {label: '10000', value: 10000}
- ])}
- {renderMultipleSegmentOptions.call(this, 'Number Of Reps', 'numOfReps', [
- {label: 'Infinite', value: -1},
- {label: '1', value: 1},
- {label: '3', value: 3},
- {label: '5', value: 5}
- ])}
-
- {renderBooleanOption.call(this, 'Direction Horizontal: Left To Right/Right To Left', 'directionHorizontal')}
- {renderBooleanOption.call(this, 'Direction Vertical: Bottom To Up/Up To Bottom', 'directionVertical')}
-
-
- {this.renderHorizontalSection()}
- {this.renderVerticalSection()}
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- padding: 20
- },
- containerHorizontal: {
- borderWidth: 1,
- borderColor: 'black',
- marginVertical: Spacings.s2
- },
- horizontal: {width: 200},
- vertical: {width: 250, height: 100, alignItems: 'center'},
- containerVertical: {borderWidth: 1, borderColor: 'black', marginVertical: Spacings.s2},
- label: {alignSelf: 'center'}
-});
diff --git a/demo/src/screens/componentScreens/MaskedInputScreen.tsx b/demo/src/screens/componentScreens/MaskedInputScreen.tsx
deleted file mode 100644
index 3789a3b7d0..0000000000
--- a/demo/src/screens/componentScreens/MaskedInputScreen.tsx
+++ /dev/null
@@ -1,149 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {Typography, View, Text, MaskedInput, Button, Colors} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class MaskedInputScreen extends Component {
- minInput = React.createRef();
- priceInput = React.createRef();
- pinCodeInput = React.createRef();
- state = {
- error: '',
- timeValue: '15'
- };
-
- componentDidMount() {
- setTimeout(() => {
- this.minInput.current.focus();
- }, 500);
- }
-
- clearInputs = () => {
- this.minInput.current.clear();
- this.priceInput.current.clear();
- this.pinCodeInput.current.clear();
- };
-
- renderTimeText(value: string) {
- const paddedValue = _.padStart(value, 4, '0');
- const hours = paddedValue.substr(0, 2);
- const minutes = paddedValue.substr(2, 2);
-
- return (
-
- {hours}
- h
- {minutes}
- m
-
- );
- }
-
- renderPrice(value: string) {
- const hasValue = Boolean(value && value.length > 0);
- return (
-
-
- -
-
-
- {hasValue ? value : '00'}
-
-
- $
-
-
- );
- }
-
- renderPINCode = (value = '') => {
- return (
-
- {_.times(4, i => {
- return (
-
- {value[i]}
-
- );
- })}
-
- );
- };
-
- render() {
- const {timeValue} = this.state;
-
- return (
-
-
-
- Masked Inputs
-
-
-
- Time Format
-
- value?.replace(/\D/g, '')}
- keyboardType={'numeric'}
- maxLength={4}
- initialValue={timeValue}
- // onChangeText={value => this.setState({timeValue: value})}
- />
-
-
- Price/Discount
-
- value?.replace(/\D/g, '')}
- keyboardType={'numeric'}
- />
-
-
- PIN Code
-
- value?.replace(/\D/g, '')}
- keyboardType={'numeric'}
- />
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flexDirection: 'column',
- justifyContent: 'flex-start',
- padding: 25
- },
- title: {
- ...Typography.text20
- },
- header: {
- ...Typography.text60,
- marginVertical: 20
- },
- pinCodeSquare: {
- width: 50,
- height: 70,
- borderWidth: 2,
- borderColor: Colors.grey30,
- borderRadius: 4
- }
-});
diff --git a/demo/src/screens/componentScreens/ModalScreen.tsx b/demo/src/screens/componentScreens/ModalScreen.tsx
deleted file mode 100644
index b077ebe7d5..0000000000
--- a/demo/src/screens/componentScreens/ModalScreen.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-import React, {Component} from 'react';
-import {Alert, StyleSheet} from 'react-native';
-import {Navigation} from 'react-native-navigation';
-import {Colors, Carousel, PageControl, Modal, View, Text, Assets} from 'react-native-ui-lib'; // eslint-disable-line
-
-const BUTTONS_HIT_SLOP = {right: 5, left: 5, top: 10, bottom: 10};
-interface ModalScreenProps {
- componentId: string;
-}
-
-interface State {
- currentPage: number;
-}
-
-export default class ModalScreen extends Component {
- static options() {
- return {
- topBar: {
- drawBehind: true,
- visible: false
- }
- };
- }
-
- constructor(props: ModalScreenProps) {
- super(props);
-
- this.state = {
- currentPage: 0
- };
- }
-
- closeScreen() {
- Navigation.pop(this.props.componentId);
- }
-
- render() {
- return (
-
-
- this.setState({currentPage})} containerStyle={{flex: 1}}>
-
- this.closeScreen()}
- onDone={() => Alert.alert('done')}
- doneButtonProps={{
- disabled: true
- }}
- />
-
- This is an example of a custom modal top bar.
- By default you get the 'x' cancel icon and 'save' as done label
-
-
-
-
- Alert.alert('cancel')}
- onDone={() => Alert.alert('done')}
- cancelIcon={null}
- cancelLabel="back"
- />
-
-
- You can of course change it by changing the values of cancelIcon, cancelLabel, doneIcon, doneLabel and
- other props..
-
-
-
-
-
- Alert.alert('cancel')}
- onDone={() => Alert.alert('done')}
- cancelIcon={null}
- cancelLabel="back"
- />
-
- Sending onDone/onCancel is required for rendering done/cancel actions
-
-
-
-
- Alert.alert('cancel')}
- onDone={() => Alert.alert('done')}
- doneButtonProps={{color: Colors.orange30}}
- cancelButtonProps={{iconStyle: {tintColor: Colors.orange30}}}
- />
-
-
- use doneButtonProps/cancelButtonProps properties to have custom behaviour or style for done/cancel
- actions
-
-
-
-
-
- Alert.alert('save')
- },
- {
- icon: Assets.icons.demo.settings,
- onPress: () => Alert.alert('settings'),
- buttonProps: {hitSlop: BUTTONS_HIT_SLOP, iconStyle: {tintColor: Colors.yellow10}}
- }
- ]}
- leftButtons={[
- {
- icon: Assets.icons.x,
- onPress: () => Alert.alert('back'),
- buttonProps: {hitSlop: BUTTONS_HIT_SLOP, iconStyle: {tintColor: Colors.yellow10}}
- }
- ]}
- />
-
-
- This is an example for using the rightButtons and leftButtons props for having more than one button each
- side
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- page: {
- flex: 1
- },
- pageControl: {
- zIndex: 1
- },
- absoluteContainer: {
- position: 'absolute',
- bottom: 20,
- left: 20,
- right: 0
- }
-});
diff --git a/demo/src/screens/componentScreens/NumberInputScreen.tsx b/demo/src/screens/componentScreens/NumberInputScreen.tsx
deleted file mode 100644
index c561970b84..0000000000
--- a/demo/src/screens/componentScreens/NumberInputScreen.tsx
+++ /dev/null
@@ -1,222 +0,0 @@
-import React, {useState, useCallback, useRef, useMemo} from 'react';
-import {StyleSheet, TouchableWithoutFeedback, Keyboard as RNKeyboard} from 'react-native';
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-import {
- Text,
- Spacings,
- NumberInput,
- NumberInputData,
- View,
- Typography,
- Constants,
- Incubator
-} from 'react-native-ui-lib';
-import {renderBooleanOption, renderMultipleSegmentOptions} from '../ExampleScreenPresenter';
-
-enum ExampleTypeEnum {
- PRICE = 'price',
- PERCENTAGE = 'percentage',
- ANY_NUMBER = 'number'
-}
-
-type ExampleType = ExampleTypeEnum | `${ExampleTypeEnum}`;
-
-const VALIDATION_MESSAGE = 'Please enter a valid number';
-const MINIMUM_PRICE = 5000;
-const MINIMUM_PRICE_VALIDATION_MESSAGE = `Make sure your number is above ${MINIMUM_PRICE}`;
-const DISCOUNT_PERCENTAGE = {min: 1, max: 80};
-// eslint-disable-next-line max-len
-const DISCOUNT_PERCENTAGE_VALIDATION_MESSAGE = `Make sure your number is between ${DISCOUNT_PERCENTAGE.min} and ${DISCOUNT_PERCENTAGE.max}`;
-
-const NumberInputScreen = () => {
- const currentData = useRef();
- const [text, setText] = useState('');
- const [showLabel, setShowLabel] = useState(true);
- const [exampleType, setExampleType] = useState('price');
-
- const processInput = useCallback(() => {
- let newText = '';
- if (currentData.current) {
- switch (currentData.current.type) {
- case 'valid':
- newText = currentData.current.formattedNumber;
- break;
- case 'error':
- newText = `Error: value '${currentData.current.userInput}' is invalid`;
- break;
- }
- }
-
- setText(newText);
- }, []);
-
- const onChangeNumber = useCallback((data: NumberInputData) => {
- currentData.current = data;
- processInput();
- },
- [processInput]);
-
- const label = useMemo(() => {
- if (showLabel) {
- switch (exampleType) {
- case 'price':
- default:
- return 'Enter price';
- case 'percentage':
- return 'Enter discount percentage';
- case 'number':
- return 'Enter any number';
- }
- }
- }, [showLabel, exampleType]);
-
- const fractionDigits = useMemo(() => {
- switch (exampleType) {
- case 'price':
- case 'number':
- default:
- return undefined;
- case 'percentage':
- return 0;
- }
- }, [exampleType]);
-
- const leadingText = useMemo(() => {
- switch (exampleType) {
- case 'price':
- return '$';
- case 'percentage':
- case 'number':
- default:
- return undefined;
- }
- }, [exampleType]);
-
- const trailingText = useMemo(() => {
- switch (exampleType) {
- case 'percentage':
- return '%';
- case 'price':
- case 'number':
- default:
- return undefined;
- }
- }, [exampleType]);
-
- const isValid = useCallback(() => {
- return currentData.current?.type === 'valid';
- }, []);
-
- const isAboveMinimumPrice = useCallback(() => {
- if (currentData.current?.type === 'valid') {
- return currentData.current.number > MINIMUM_PRICE;
- }
- }, []);
-
- const isWithinDiscountPercentage = useCallback(() => {
- if (currentData.current?.type === 'valid') {
- return (
- currentData.current.number >= DISCOUNT_PERCENTAGE.min && currentData.current.number <= DISCOUNT_PERCENTAGE.max
- );
- }
- }, []);
-
- const validate = useMemo((): Incubator.TextFieldProps['validate'] => {
- switch (exampleType) {
- case 'price':
- return [isValid, isAboveMinimumPrice];
- case 'percentage':
- return [isValid, isWithinDiscountPercentage];
- default:
- return isValid;
- }
- }, [exampleType, isValid, isAboveMinimumPrice, isWithinDiscountPercentage]);
-
- const validationMessage = useMemo((): Incubator.TextFieldProps['validationMessage'] => {
- switch (exampleType) {
- case 'price':
- return [VALIDATION_MESSAGE, MINIMUM_PRICE_VALIDATION_MESSAGE];
- case 'percentage':
- return [VALIDATION_MESSAGE, DISCOUNT_PERCENTAGE_VALIDATION_MESSAGE];
- default:
- return VALIDATION_MESSAGE;
- }
- }, [exampleType]);
-
- const textStyle = useMemo(() => {
- return [styles.mainText, !leadingText && {marginLeft: Spacings.s4}, !trailingText && {marginRight: Spacings.s4}];
- }, [leadingText, trailingText]);
-
- const textFieldProps = useMemo(() => {
- return {
- label,
- labelStyle: styles.label,
- style: textStyle,
- maxLength: 6,
- validate,
- validationMessage,
- validationMessageStyle: Typography.text80M,
- validateOnChange: true,
- centered: true
- };
- }, [label, textStyle, validate, validationMessage]);
-
- return (
-
-
-
- Number Input
-
- {renderBooleanOption('Show label', 'showLabel', {spread: false, state: showLabel, setState: setShowLabel})}
- {renderMultipleSegmentOptions('',
- 'exampleType',
- [
- {label: 'Price', value: ExampleTypeEnum.PRICE},
- {label: 'Percentage', value: ExampleTypeEnum.PERCENTAGE},
- {label: 'Number', value: ExampleTypeEnum.ANY_NUMBER}
- ],
- {state: exampleType, setState: setExampleType})}
-
-
-
- {text}
-
-
-
- );
-};
-
-export default gestureHandlerRootHOC(NumberInputScreen);
-
-const styles = StyleSheet.create({
- containerStyle: {
- marginBottom: 30,
- marginLeft: Spacings.s5,
- marginRight: Spacings.s5
- },
- mainText: {
- height: 36,
- marginVertical: Spacings.s1,
- ...Typography.text30M
- },
- infoText: {
- marginTop: Constants.isIOS ? Spacings.s2 : 0,
- ...Typography.text50M
- },
- label: {
- marginBottom: Spacings.s1,
- ...Typography.text80M
- }
-});
diff --git a/demo/src/screens/componentScreens/OverlaysScreen.tsx b/demo/src/screens/componentScreens/OverlaysScreen.tsx
deleted file mode 100644
index cb456083e1..0000000000
--- a/demo/src/screens/componentScreens/OverlaysScreen.tsx
+++ /dev/null
@@ -1,180 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {View, Text, Image, Card, Constants, Colors} from 'react-native-ui-lib'; // eslint-disable-line
-
-const image = require('../../assets/images/card-example.jpg');
-const customOverlayImage = require('../../assets/icons/star.png');
-const customOverlayImage2 = require('../../assets/icons/cameraSelected.png');
-
-const uri = {
- uri: 'https://images.pexels.com/photos/140234/pexels-photo-140234.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260'
-};
-
-export default class OverlaysScreen extends Component {
- getImageWithOverlay = (type: string | undefined, text: string, customOverlay?: JSX.Element) => {
- return (
-
- {text}
-
-
- );
- };
-
- renderCustomOverlay() {
- return ;
- }
-
- renderCustomOverlay2() {
- return (
-
-
-
- );
- }
-
- render() {
- return (
-
-
-
- Image Overlays
-
-
- {this.getImageWithOverlay(Image.overlayTypes.VERTICAL, 'vertical')}
- {this.getImageWithOverlay(Image.overlayTypes.SOLID, 'solid')}
-
-
- {this.getImageWithOverlay(Image.overlayTypes.TOP, 'top')}
- {this.getImageWithOverlay(Image.overlayTypes.BOTTOM, 'bottom')}
-
-
-
- Image Overlays (absolute)
-
-
-
-
-
-
-
-
-
- Custom Overlay
-
-
- {this.getImageWithOverlay(undefined, 'cutom overlay only', this.renderCustomOverlay())}
- {this.getImageWithOverlay(Image.overlayTypes.SOLID, 'solid + custom', this.renderCustomOverlay2())}
-
-
- {this.getImageWithOverlay(Image.overlayTypes.VERTICAL, 'vertical + custom', this.renderCustomOverlay2())}
- {this.getImageWithOverlay(Image.overlayTypes.BOTTOM, 'bottom + custom', this.renderCustomOverlay())}
-
-
-
- Card.Image Overlay
-
-
-
-
- {Image.overlayTypes.VERTICAL}
- Ipsum nostrud officia deserunt irure eu.
-
-
-
-
-
- Image Overlay (cover, remote, custom overlay)
-
-
-
-
- Image Overlay (cover, asset)
-
-
-
-
- Image Overlay (fill, specific height)
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- image: {
- width: 150,
- height: 150,
- margin: 10
- },
- overlayImageAbsoluteContainer: {
- width: Constants.screenWidth,
- height: 380,
- marginLeft: -20
- },
- overlayImageAbsoluteVertical: {
- position: 'absolute',
- top: 30,
- left: 10,
- width: 150,
- height: 150,
- margin: 5
- },
- overlayImageAbsoluteSolid: {
- position: 'absolute',
- top: 30,
- right: 10,
- width: 150,
- height: 150,
- margin: 5
- },
- overlayImageAbsoluteTop: {
- position: 'absolute',
- bottom: 20,
- left: 10,
- width: 150,
- height: 150,
- margin: 5
- },
- overlayImageAbsoluteBottom: {
- position: 'absolute',
- bottom: 20,
- right: 10,
- width: 150,
- height: 150,
- margin: 5
- },
- cardImage: {
- width: 100,
- borderRadius: 4
- },
- imageFillContainer: {
- height: 100
- },
- customOverylay: {
- position: 'absolute',
- left: 137,
- top: 134,
- width: 25,
- height: 25,
- tintColor: Colors.yellow20,
- borderWidth: 1,
- borderColor: Colors.yellow20,
- borderRadius: 100,
- backgroundColor: Colors.rgba(Colors.yellow20, 0.2)
- },
- customOverylay2: {
- width: 40,
- height: 40,
- tintColor: Colors.white
- }
-});
diff --git a/demo/src/screens/componentScreens/PageControlScreen.tsx b/demo/src/screens/componentScreens/PageControlScreen.tsx
deleted file mode 100644
index 0a9c727f76..0000000000
--- a/demo/src/screens/componentScreens/PageControlScreen.tsx
+++ /dev/null
@@ -1,104 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {PageControl, Colors, View, Button, Text} from 'react-native-ui-lib';
-import {renderBooleanOption, renderSliderOption} from '../ExampleScreenPresenter';
-
-const containerStyle = {
- marginBottom: 40
-};
-
-export default class PageControlScreen extends Component {
- state = {
- currentPage: 0,
- limitShownPages: false,
- numberOfPagesShown: 7
- };
-
- prevPage = () => {
- this.setState({currentPage: this.state.currentPage - 1});
- }
-
- nextPage = () => {
- this.setState({currentPage: this.state.currentPage + 1});
- }
-
- onPagePress = (index: number) => {
- this.setState({currentPage: index});
- }
-
- render() {
- const {currentPage, limitShownPages, numberOfPagesShown} = this.state;
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- {renderBooleanOption.call(this, 'Limit number of pages shown in page control', 'limitShownPages')}
- {renderSliderOption.call(this, 'Number of pages shown', 'numberOfPagesShown', {
- min: 5,
- max: 10,
- step: 1,
- initial: 7
- })}
-
-
-
-
- {currentPage}
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- alignItems: 'center',
- padding: 25
- }
-});
diff --git a/demo/src/screens/componentScreens/PanDismissibleScreen.tsx b/demo/src/screens/componentScreens/PanDismissibleScreen.tsx
deleted file mode 100644
index b4c98eb612..0000000000
--- a/demo/src/screens/componentScreens/PanDismissibleScreen.tsx
+++ /dev/null
@@ -1,112 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {
- Button,
- View,
- Text,
- Switch,
- Colors,
- Typography,
- PanListenerView,
- PanningProvider,
- PanDismissibleView
-} from 'react-native-ui-lib';
-
-const PAN_LISTENER_VIEW_HEIGHT = 100;
-
-export default class PanDismissibleScreen extends Component {
- state = {
- location: {left: 50, top: 50},
- isCoupled: true,
- key: false
- };
-
- switchExample = () => {
- const {isCoupled, location} = this.state;
- if (isCoupled) {
- this.setState({
- isCoupled: false,
- location: {left: location.left, top: location.top - PAN_LISTENER_VIEW_HEIGHT}
- });
- } else {
- this.setState({
- isCoupled: true,
- location: {left: location.left, top: location.top + PAN_LISTENER_VIEW_HEIGHT}
- });
- }
- };
-
- reset = () => {
- this.setState({key: !this.state.key});
- };
-
- renderPanListener = () => {
- return (
-
- Drag\Swipe here
-
- );
- };
-
- render() {
- const {isCoupled, key} = this.state;
- const panListener = this.renderPanListener();
-
- return (
-
- Pan Dismissible
-
-
- {isCoupled ? 'Coupled' : 'Uncoupled'}
-
-
-
-
- {!isCoupled && panListener}
-
- {isCoupled && panListener}
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- largeText: {
- ...Typography.text50,
- margin: 20
- },
- container: {
- flexDirection: 'row',
- marginBottom: 20,
- alignSelf: 'center'
- },
- panDismissible: {
- width: 250,
- height: 250,
- backgroundColor: Colors.blue30
- },
- panListener: {
- width: '100%',
- height: PAN_LISTENER_VIEW_HEIGHT,
- backgroundColor: Colors.blue60,
- justifyContent: 'center'
- },
- smallText: {
- ...Typography.text70,
- marginLeft: 20
- },
- switch: {
- marginLeft: 20,
- alignSelf: 'center'
- },
- button: {
- alignSelf: 'center',
- marginBottom: 20
- }
-});
diff --git a/demo/src/screens/componentScreens/PanListenerScreen.tsx b/demo/src/screens/componentScreens/PanListenerScreen.tsx
deleted file mode 100644
index b6d071a713..0000000000
--- a/demo/src/screens/componentScreens/PanListenerScreen.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, PanListenerView, PanDirectionsProps, PanAmountsProps} from 'react-native-ui-lib';
-
-export default class PanListenerScreen extends Component {
- state = {
- locationText: '',
- endType: ''
- };
-
- onDrag = ({directions}: ({directions: PanDirectionsProps, deltas: PanAmountsProps})) => {
- this.setState({locationText: `Dragged: ${directions.x}, ${directions.y}`});
- };
-
- onSwipe = ({directions}: ({directions: PanDirectionsProps, velocities: PanAmountsProps})) => {
- this.setState({locationText: `Swiped: ${directions.x}, ${directions.y}`});
- };
-
- onPanStart = () => {
- this.setState({endType: 'Panning'});
- };
-
- onPanRelease = () => {
- this.setState({endType: 'Released'});
- };
-
- onPanTerminated = () => {
- this.setState({endType: 'Terminated'});
- };
-
- render() {
- const {locationText, endType} = this.state;
-
- return (
-
-
- Pan Listener
-
-
-
- Drag\swipe here
-
-
-
- {locationText}
-
-
- {endType}
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/PanResponderScreen.tsx b/demo/src/screens/componentScreens/PanResponderScreen.tsx
deleted file mode 100644
index 9652475354..0000000000
--- a/demo/src/screens/componentScreens/PanResponderScreen.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {
- View,
- Text,
- Switch,
- Colors,
- Typography,
- PanListenerView,
- PanningProvider,
- PanResponderView
-} from 'react-native-ui-lib';
-
-const PAN_LISTENER_VIEW_HEIGHT = 100;
-
-export default class PanResponderScreen extends Component {
- state = {
- location: {left: 50, top: 50},
- isCoupled: false
- };
-
- switchExample = () => {
- const {isCoupled, location} = this.state;
- if (isCoupled) {
- this.setState({
- isCoupled: false,
- location: {left: location.left, top: location.top - PAN_LISTENER_VIEW_HEIGHT}
- });
- } else {
- this.setState({
- isCoupled: true,
- location: {left: location.left, top: location.top + PAN_LISTENER_VIEW_HEIGHT}
- });
- }
- };
-
- renderPanListener = () => {
- return (
-
- Drag here
-
- );
- };
-
- render() {
- const {isCoupled} = this.state;
- const panListener = this.renderPanListener();
-
- return (
-
-
- Pan Responder
-
- {isCoupled ? 'Coupled' : 'Uncoupled'}
-
-
- {!isCoupled && panListener}
-
- {isCoupled && panListener}
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flexDirection: 'row',
- height: 50,
- alignItems: 'center'
- },
- panResponder: {
- width: 250,
- height: 250,
- backgroundColor: Colors.blue30
- },
- panListener: {
- width: '100%',
- height: PAN_LISTENER_VIEW_HEIGHT,
- backgroundColor: Colors.blue60,
- justifyContent: 'center'
- },
- largeText: {
- ...Typography.text50,
- marginLeft: 40
- },
- smallText: {
- ...Typography.text70,
- marginLeft: 20
- },
- switch: {
- marginLeft: 20,
- alignSelf: 'center'
- }
-});
diff --git a/demo/src/screens/componentScreens/PickerScreen.tsx b/demo/src/screens/componentScreens/PickerScreen.tsx
deleted file mode 100644
index 14f15b2b3d..0000000000
--- a/demo/src/screens/componentScreens/PickerScreen.tsx
+++ /dev/null
@@ -1,287 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native-gesture-handler';
-import {
- View,
- Colors,
- Icon,
- Incubator,
- Text,
- Picker,
- Avatar,
- Assets,
- PanningProvider,
- Typography,
- PickerProps,
- RenderCustomModalProps,
- PickerMethods,
- Button
-} from 'react-native-ui-lib'; //eslint-disable-line
-import contactsData from '../../data/conversations';
-import {longOptions} from './PickerScreenLongOptions';
-
-const tagIcon = require('../../assets/icons/tags.png');
-const dropdown = require('../../assets/icons/chevronDown.png');
-const dropdownIcon = ;
-
-const renderContact = (contactValue: any, props: any) => {
- const contact = contacts[contactValue as number];
- return (
-
-
-
-
- {contact?.name}
-
-
- {props.isSelected && }
-
- );
-};
-
-const contacts = _.map(contactsData, (c, index) => ({...c, value: index, label: c.name, renderItem: renderContact}));
-
-const options = [
- {label: 'JavaScript', value: 'js', labelStyle: Typography.text65},
- {label: 'Java', value: 'java', labelStyle: Typography.text65},
- {label: 'Python', value: 'python', labelStyle: Typography.text65},
- {label: 'C++', value: 'c++', disabled: true, labelStyle: Typography.text65},
- {label: 'Perl', value: 'perl', labelStyle: Typography.text65}
-];
-
-const filters = [
- {label: 'All', value: 0},
- {label: 'Draft', value: 1},
- {label: 'Published', value: 2},
- {label: 'Scheduled', value: 3}
-];
-
-const schemes = [
- {label: 'Default', value: 1},
- {label: 'Light', value: 2},
- {label: 'Dark', value: 3}
-];
-
-const dialogOptions = [
- {label: 'Option 1', value: 0},
- {label: 'Option 2', value: 1},
- {label: 'Option 3', value: 2},
- {label: 'Option 4', value: 3, disabled: true},
- {label: 'Option 5', value: 4},
- {label: 'Option 6', value: 5},
- {label: 'Option 7', value: 6},
- {label: 'Option 8', value: 6}
-];
-
-export default class PickerScreen extends Component {
- picker = React.createRef();
- state = {
- itemsCount: 1,
- // language: {value: 'java', label: 'Java'},
- language: undefined,
- language2: options[2].value,
- languages: [],
- option: undefined,
- wheelPickerValue: 'java',
- dialogPickerValue: 'java',
- customModalValues: [],
- filter: undefined,
- scheme: undefined,
- contact: 0
- };
-
- renderDialog: PickerProps['renderOverlay'] = (modalProps: RenderCustomModalProps) => {
- const {visible, children, toggleModal, onDone} = modalProps;
- return (
- {
- onDone();
- toggleModal();
- }}
- width="100%"
- height="45%"
- bottom
- useSafeArea
- containerStyle={{backgroundColor: Colors.$backgroundDefault}}
- direction={PanningProvider.Directions.DOWN}
- headerProps={{title: 'Custom modal'}}
- >
- {children}
-
- );
- };
-
- render() {
- return (
-
-
-
- Picker
-
-
- this.setState({language: item})}
- topBarProps={{title: 'Languages'}}
- // style={{color: Colors.red20}}
- showSearch
- searchPlaceholder={'Search a language'}
- searchStyle={{color: Colors.blue30, placeholderTextColor: Colors.grey50}}
- // onSearchChange={value => console.warn('value', value)}
- items={longOptions}
- />
-
- this.setState({languages: items})}
- mode={Picker.modes.MULTI}
- selectionLimit={3}
- trailingAccessory={dropdownIcon}
- items={options}
- />
-
- this.setState({wheelPickerValue})}
- trailingAccessory={}
- items={options}
- />
-
- this.setState({customModalValues: items})}
- mode={Picker.modes.MULTI}
- trailingAccessory={dropdownIcon}
- renderOverlay={this.renderDialog}
- items={options}
- />
-
- this.setState({option: item})}
- topBarProps={{title: 'Languages'}}
- useDialog
- renderHeader={({onDone, onCancel}) => (
-
-
-
-
- )}
- customPickerProps={{migrateDialog: true, dialogProps: {bottom: true, width: '100%', height: '45%'}}}
- showSearch
- searchPlaceholder={'Search a language'}
- items={dialogOptions}
- />
-
-
- Custom Picker:
-
- this.setState({filter})}
- renderInput={(_value?: any, label?: string) => {
- return (
-
-
-
- {label} Posts
-
-
- );
- }}
- items={filters}
- />
-
-
- Custom Picker Items:
-
- {
- this.setState({contact});
- }}
- renderInput={(contactValue?: number) => {
- const contact = contacts[contactValue!] ?? undefined;
- return (
-
- {contact ? (
- <>
-
-
- {contact?.name}
-
- >
- ) : (
-
- Pick a contact
-
- )}
-
- );
- }}
- items={contacts}
- />
- this.picker.current?.openExpandable?.()}
- />
-
-
- Different Field Types
-
-
- (Form/Filter/Settings)
-
- this.setState({filter: value})}
- label="Your Posts: "
- placeholder="Filter posts"
- fieldType={Picker.fieldTypes.filter}
- marginB-s3
- items={filters}
- />
- this.setState({scheme: value})}
- label="Color Scheme"
- placeholder="Select scheme"
- fieldType={Picker.fieldTypes.settings}
- items={schemes}
- />
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/PickerScreenLongOptions.ts b/demo/src/screens/componentScreens/PickerScreenLongOptions.ts
deleted file mode 100644
index d9927fa6e6..0000000000
--- a/demo/src/screens/componentScreens/PickerScreenLongOptions.ts
+++ /dev/null
@@ -1,602 +0,0 @@
-export const longOptions = [
- {label: 'ABAP1', value: 'ABAP1'},
- {label: 'ABAP2', value: 'ABAP2'},
- {label: 'ABAP3', value: 'ABAP3'},
- {label: 'ABAP4', value: 'ABAP4'},
- {label: 'ABAP5', value: 'ABAP5', disabled: true},
- {label: 'ActionScript1', value: 'ActionScript1'},
- {label: 'ActionScript2', value: 'ActionScript2'},
- {label: 'ActionScript3', value: 'ActionScript3'},
- {label: 'ActionScript4', value: 'ActionScript4'},
- {label: 'ActionScript5', value: 'ActionScript5'},
- {label: 'Ada1', value: 'Ada1', disabled: true},
- {label: 'Ada2', value: 'Ada2'},
- {label: 'Ada3', value: 'Ada3'},
- {label: 'Ada4', value: 'Ada4'},
- {label: 'Ada5', value: 'Ada5'},
- {label: 'ALGOL1', value: 'ALGOL1'},
- {label: 'ALGOL2', value: 'ALGOL2'},
- {label: 'ALGOL3', value: 'ALGOL3'},
- {label: 'ALGOL4', value: 'ALGOL4'},
- {label: 'ALGOL5', value: 'ALGOL5'},
- {label: 'Alice1', value: 'Alice1'},
- {label: 'Alice2', value: 'Alice2'},
- {label: 'Alice3', value: 'Alice3'},
- {label: 'Alice4', value: 'Alice4'},
- {label: 'Alice5', value: 'Alice5'},
- {label: 'APL1', value: 'APL1'},
- {label: 'APL2', value: 'APL2'},
- {label: 'APL3', value: 'APL3'},
- {label: 'APL4', value: 'APL4'},
- {label: 'APL5', value: 'APL5'},
- {label: 'ASP1', value: 'ASP1'},
- {label: 'ASP2', value: 'ASP2'},
- {label: 'ASP3', value: 'ASP3'},
- {label: 'ASP4', value: 'ASP4'},
- {label: 'ASP5', value: 'ASP5'},
- {label: 'Assembly1', value: 'Assembly1'},
- {label: 'Assembly2', value: 'Assembly2'},
- {label: 'Assembly3', value: 'Assembly3'},
- {label: 'Assembly4', value: 'Assembly4'},
- {label: 'Assembly5', value: 'Assembly5'},
- {label: 'Awk1', value: 'Awk1'},
- {label: 'Awk2', value: 'Awk2'},
- {label: 'Awk3', value: 'Awk3'},
- {label: 'Awk4', value: 'Awk4'},
- {label: 'Awk5', value: 'Awk5'},
- {label: 'Basic1', value: 'Basic1'},
- {label: 'Basic2', value: 'Basic2'},
- {label: 'Basic3', value: 'Basic3'},
- {label: 'Basic4', value: 'Basic4'},
- {label: 'Basic5', value: 'Basic5'},
- {label: 'C1', value: 'C1'},
- {label: 'C2', value: 'C2'},
- {label: 'C3', value: 'C3'},
- {label: 'C4', value: 'C4'},
- {label: 'C5', value: 'C5'},
- {label: 'CPP1', value: 'CPP1'},
- {label: 'CPP2', value: 'CPP2'},
- {label: 'CPP3', value: 'CPP3'},
- {label: 'CPP4', value: 'CPP4'},
- {label: 'CPP5', value: 'CPP5'},
- {label: 'CSHARP1', value: 'CSHARP1'},
- {label: 'CSHARP2', value: 'CSHARP2'},
- {label: 'CSHARP3', value: 'CSHARP3'},
- {label: 'CSHARP4', value: 'CSHARP4'},
- {label: 'CSHARP5', value: 'CSHARP5'},
- {label: 'COBOL1', value: 'COBOL1'},
- {label: 'COBOL2', value: 'COBOL2'},
- {label: 'COBOL3', value: 'COBOL3'},
- {label: 'COBOL4', value: 'COBOL4'},
- {label: 'COBOL5', value: 'COBOL5'},
- {label: 'CSS1', value: 'CSS1'},
- {label: 'CSS2', value: 'CSS2'},
- {label: 'CSS3', value: 'CSS3'},
- {label: 'CSS4', value: 'CSS4'},
- {label: 'CSS5', value: 'CSS5'},
- {label: 'D1', value: 'D1'},
- {label: 'D2', value: 'D2'},
- {label: 'D3', value: 'D3'},
- {label: 'D4', value: 'D4'},
- {label: 'D5', value: 'D5'},
- {label: 'Delphi1', value: 'Delphi1'},
- {label: 'Delphi2', value: 'Delphi2'},
- {label: 'Delphi3', value: 'Delphi3'},
- {label: 'Delphi4', value: 'Delphi4'},
- {label: 'Delphi5', value: 'Delphi5'},
- {label: 'Dreamweaver1', value: 'Dreamweaver1'},
- {label: 'Dreamweaver2', value: 'Dreamweaver2'},
- {label: 'Dreamweaver3', value: 'Dreamweaver3'},
- {label: 'Dreamweaver4', value: 'Dreamweaver4'},
- {label: 'Dreamweaver5', value: 'Dreamweaver5'},
- {label: 'Elixir1', value: 'Elixir1'},
- {label: 'Elixir2', value: 'Elixir2'},
- {label: 'Elixir3', value: 'Elixir3'},
- {label: 'Elixir4', value: 'Elixir4'},
- {label: 'Elixir5', value: 'Elixir5'},
- {label: 'FSHARP1', value: 'FSHARP1'},
- {label: 'FSHARP2', value: 'FSHARP2'},
- {label: 'FSHARP3', value: 'FSHARP3'},
- {label: 'FSHARP4', value: 'FSHARP4'},
- {label: 'FSHARP5', value: 'FSHARP5'},
- {label: 'FORTH1', value: 'FORTH1'},
- {label: 'FORTH2', value: 'FORTH2'},
- {label: 'FORTH3', value: 'FORTH3'},
- {label: 'FORTH4', value: 'FORTH4'},
- {label: 'FORTH5', value: 'FORTH5'},
- {label: 'FORTRAN1', value: 'FORTRAN1'},
- {label: 'FORTRAN2', value: 'FORTRAN2'},
- {label: 'FORTRAN3', value: 'FORTRAN3'},
- {label: 'FORTRAN4', value: 'FORTRAN4'},
- {label: 'FORTRAN5', value: 'FORTRAN5'},
- {label: 'Go1', value: 'Go1'},
- {label: 'Go2', value: 'Go2'},
- {label: 'Go3', value: 'Go3'},
- {label: 'Go4', value: 'Go4'},
- {label: 'Go5', value: 'Go5'},
- {label: 'Haskell1', value: 'Haskell1'},
- {label: 'Haskell2', value: 'Haskell2'},
- {label: 'Haskell3', value: 'Haskell3'},
- {label: 'Haskell4', value: 'Haskell4'},
- {label: 'Haskell5', value: 'Haskell5'},
- {label: 'HTML1', value: 'HTML1'},
- {label: 'HTML2', value: 'HTML2'},
- {label: 'HTML3', value: 'HTML3'},
- {label: 'HTML4', value: 'HTML4'},
- {label: 'HTML5', value: 'HTML5'},
- {label: 'IDL1', value: 'IDL1'},
- {label: 'IDL2', value: 'IDL2'},
- {label: 'IDL3', value: 'IDL3'},
- {label: 'IDL4', value: 'IDL4'},
- {label: 'IDL5', value: 'IDL5'},
- {label: 'INTERCAL1', value: 'INTERCAL1'},
- {label: 'INTERCAL2', value: 'INTERCAL2'},
- {label: 'INTERCAL3', value: 'INTERCAL3'},
- {label: 'INTERCAL4', value: 'INTERCAL4'},
- {label: 'INTERCAL5', value: 'INTERCAL5'},
- {label: 'Java1', value: 'Java1'},
- {label: 'Java2', value: 'Java2'},
- {label: 'Java3', value: 'Java3'},
- {label: 'Java4', value: 'Java4'},
- {label: 'Java5', value: 'Java5'},
- {label: 'Javascript1', value: 'Javascript1'},
- {label: 'Javascript2', value: 'Javascript2'},
- {label: 'Javascript3', value: 'Javascript3'},
- {label: 'Javascript4', value: 'Javascript4'},
- {label: 'Javascript5', value: 'Javascript5'},
- {label: 'NodeDOTjs1', value: 'NodeDOTjs1'},
- {label: 'NodeDOTjs2', value: 'NodeDOTjs2'},
- {label: 'NodeDOTjs3', value: 'NodeDOTjs3'},
- {label: 'NodeDOTjs4', value: 'NodeDOTjs4'},
- {label: 'NodeDOTjs5', value: 'NodeDOTjs5'},
- {label: 'Bootstrap1', value: 'Bootstrap1'},
- {label: 'Bootstrap2', value: 'Bootstrap2'},
- {label: 'Bootstrap3', value: 'Bootstrap3'},
- {label: 'Bootstrap4', value: 'Bootstrap4'},
- {label: 'Bootstrap5', value: 'Bootstrap5'},
- {label: 'jQuery1', value: 'jQuery1'},
- {label: 'jQuery2', value: 'jQuery2'},
- {label: 'jQuery3', value: 'jQuery3'},
- {label: 'jQuery4', value: 'jQuery4'},
- {label: 'jQuery5', value: 'jQuery5'},
- {label: 'LabVIEW1', value: 'LabVIEW1'},
- {label: 'LabVIEW2', value: 'LabVIEW2'},
- {label: 'LabVIEW3', value: 'LabVIEW3'},
- {label: 'LabVIEW4', value: 'LabVIEW4'},
- {label: 'LabVIEW5', value: 'LabVIEW5'},
- {label: 'Lisp1', value: 'Lisp1'},
- {label: 'Lisp2', value: 'Lisp2'},
- {label: 'Lisp3', value: 'Lisp3'},
- {label: 'Lisp4', value: 'Lisp4'},
- {label: 'Lisp5', value: 'Lisp5'},
- {label: 'Logo1', value: 'Logo1'},
- {label: 'Logo2', value: 'Logo2'},
- {label: 'Logo3', value: 'Logo3'},
- {label: 'Logo4', value: 'Logo4'},
- {label: 'Logo5', value: 'Logo5'},
- {label: 'ML1', value: 'ML1'},
- {label: 'ML2', value: 'ML2'},
- {label: 'ML3', value: 'ML3'},
- {label: 'ML4', value: 'ML4'},
- {label: 'ML5', value: 'ML5'},
- {label: 'ModulaTHREE1', value: 'ModulaTHREE1'},
- {label: 'ModulaTHREE2', value: 'ModulaTHREE2'},
- {label: 'ModulaTHREE3', value: 'ModulaTHREE3'},
- {label: 'ModulaTHREE4', value: 'ModulaTHREE4'},
- {label: 'ModulaTHREE5', value: 'ModulaTHREE5'},
- {label: 'MySQL1', value: 'MySQL1'},
- {label: 'MySQL2', value: 'MySQL2'},
- {label: 'MySQL3', value: 'MySQL3'},
- {label: 'MySQL4', value: 'MySQL4'},
- {label: 'MySQL5', value: 'MySQL5'},
- {label: 'NXTG1', value: 'NXTG1'},
- {label: 'NXTG2', value: 'NXTG2'},
- {label: 'NXTG3', value: 'NXTG3'},
- {label: 'NXTG4', value: 'NXTG4'},
- {label: 'NXTG5', value: 'NXTG5'},
- {label: 'ObjectiveC1', value: 'ObjectiveC1'},
- {label: 'ObjectiveC2', value: 'ObjectiveC2'},
- {label: 'ObjectiveC3', value: 'ObjectiveC3'},
- {label: 'ObjectiveC4', value: 'ObjectiveC4'},
- {label: 'ObjectiveC5', value: 'ObjectiveC5'},
- {label: 'OCaml1', value: 'OCaml1'},
- {label: 'OCaml2', value: 'OCaml2'},
- {label: 'OCaml3', value: 'OCaml3'},
- {label: 'OCaml4', value: 'OCaml4'},
- {label: 'OCaml5', value: 'OCaml5'},
- {label: 'Pascal1', value: 'Pascal1'},
- {label: 'Pascal2', value: 'Pascal2'},
- {label: 'Pascal3', value: 'Pascal3'},
- {label: 'Pascal4', value: 'Pascal4'},
- {label: 'Pascal5', value: 'Pascal5'},
- {label: 'Perl1', value: 'Perl1'},
- {label: 'Perl2', value: 'Perl2'},
- {label: 'Perl3', value: 'Perl3'},
- {label: 'Perl4', value: 'Perl4'},
- {label: 'Perl5', value: 'Perl5'},
- {label: 'PHP1', value: 'PHP1'},
- {label: 'PHP2', value: 'PHP2'},
- {label: 'PHP3', value: 'PHP3'},
- {label: 'PHP4', value: 'PHP4'},
- {label: 'PHP5', value: 'PHP5'},
- {label: 'PostgreSQL1', value: 'PostgreSQL1'},
- {label: 'PostgreSQL2', value: 'PostgreSQL2'},
- {label: 'PostgreSQL3', value: 'PostgreSQL3'},
- {label: 'PostgreSQL4', value: 'PostgreSQL4'},
- {label: 'PostgreSQL5', value: 'PostgreSQL5'},
- {label: 'PostScript1', value: 'PostScript1'},
- {label: 'PostScript2', value: 'PostScript2'},
- {label: 'PostScript3', value: 'PostScript3'},
- {label: 'PostScript4', value: 'PostScript4'},
- {label: 'PostScript5', value: 'PostScript5'},
- {label: 'PROLOG1', value: 'PROLOG1'},
- {label: 'PROLOG2', value: 'PROLOG2'},
- {label: 'PROLOG3', value: 'PROLOG3'},
- {label: 'PROLOG4', value: 'PROLOG4'},
- {label: 'PROLOG5', value: 'PROLOG5'},
- {label: 'Python1', value: 'Python1'},
- {label: 'Python2', value: 'Python2'},
- {label: 'Python3', value: 'Python3'},
- {label: 'Python4', value: 'Python4'},
- {label: 'Python5', value: 'Python5'},
- {label: 'R1', value: 'R1'},
- {label: 'R2', value: 'R2'},
- {label: 'R3', value: 'R3'},
- {label: 'R4', value: 'R4'},
- {label: 'R5', value: 'R5'},
- {label: 'RapidWeaver1', value: 'RapidWeaver1'},
- {label: 'RapidWeaver2', value: 'RapidWeaver2'},
- {label: 'RapidWeaver3', value: 'RapidWeaver3'},
- {label: 'RapidWeaver4', value: 'RapidWeaver4'},
- {label: 'RapidWeaver5', value: 'RapidWeaver5'},
- {label: 'RavenDB1', value: 'RavenDB1'},
- {label: 'RavenDB2', value: 'RavenDB2'},
- {label: 'RavenDB3', value: 'RavenDB3'},
- {label: 'RavenDB4', value: 'RavenDB4'},
- {label: 'RavenDB5', value: 'RavenDB5'},
- {label: 'Rexx1', value: 'Rexx1'},
- {label: 'Rexx2', value: 'Rexx2'},
- {label: 'Rexx3', value: 'Rexx3'},
- {label: 'Rexx4', value: 'Rexx4'},
- {label: 'Rexx5', value: 'Rexx5'},
- {label: 'RubyOnRails1', value: 'RubyOnRails1'},
- {label: 'RubyOnRails2', value: 'RubyOnRails2'},
- {label: 'RubyOnRails3', value: 'RubyOnRails3'},
- {label: 'RubyOnRails4', value: 'RubyOnRails4'},
- {label: 'RubyOnRails5', value: 'RubyOnRails5'},
- {label: 'SPLUS1', value: 'SPLUS1'},
- {label: 'SPLUS2', value: 'SPLUS2'},
- {label: 'SPLUS3', value: 'SPLUS3'},
- {label: 'SPLUS4', value: 'SPLUS4'},
- {label: 'SPLUS5', value: 'SPLUS5'},
- {label: 'SAS1', value: 'SAS1'},
- {label: 'SAS2', value: 'SAS2'},
- {label: 'SAS3', value: 'SAS3'},
- {label: 'SAS4', value: 'SAS4'},
- {label: 'SAS5', value: 'SAS5'},
- {label: 'Scala1', value: 'Scala1'},
- {label: 'Scala2', value: 'Scala2'},
- {label: 'Scala3', value: 'Scala3'},
- {label: 'Scala4', value: 'Scala4'},
- {label: 'Scala5', value: 'Scala5'},
- {label: 'Sed1', value: 'Sed1'},
- {label: 'Sed2', value: 'Sed2'},
- {label: 'Sed3', value: 'Sed3'},
- {label: 'Sed4', value: 'Sed4'},
- {label: 'Sed5', value: 'Sed5'},
- {label: 'SGML1', value: 'SGML1'},
- {label: 'SGML2', value: 'SGML2'},
- {label: 'SGML3', value: 'SGML3'},
- {label: 'SGML4', value: 'SGML4'},
- {label: 'SGML5', value: 'SGML5'},
- {label: 'Simula1', value: 'Simula1'},
- {label: 'Simula2', value: 'Simula2'},
- {label: 'Simula3', value: 'Simula3'},
- {label: 'Simula4', value: 'Simula4'},
- {label: 'Simula5', value: 'Simula5'},
- {label: 'Smalltalk1', value: 'Smalltalk1'},
- {label: 'Smalltalk2', value: 'Smalltalk2'},
- {label: 'Smalltalk3', value: 'Smalltalk3'},
- {label: 'Smalltalk4', value: 'Smalltalk4'},
- {label: 'Smalltalk5', value: 'Smalltalk5'},
- {label: 'SMIL1', value: 'SMIL1'},
- {label: 'SMIL2', value: 'SMIL2'},
- {label: 'SMIL3', value: 'SMIL3'},
- {label: 'SMIL4', value: 'SMIL4'},
- {label: 'SMIL5', value: 'SMIL5'},
- {label: 'SNOBOL1', value: 'SNOBOL1'},
- {label: 'SNOBOL2', value: 'SNOBOL2'},
- {label: 'SNOBOL3', value: 'SNOBOL3'},
- {label: 'SNOBOL4', value: 'SNOBOL4'},
- {label: 'SNOBOL5', value: 'SNOBOL5'},
- {label: 'SQL1', value: 'SQL1'},
- {label: 'SQL2', value: 'SQL2'},
- {label: 'SQL3', value: 'SQL3'},
- {label: 'SQL4', value: 'SQL4'},
- {label: 'SQL5', value: 'SQL5'},
- {label: 'SQLite1', value: 'SQLite1'},
- {label: 'SQLite2', value: 'SQLite2'},
- {label: 'SQLite3', value: 'SQLite3'},
- {label: 'SQLite4', value: 'SQLite4'},
- {label: 'SQLite5', value: 'SQLite5'},
- {label: 'SSI1', value: 'SSI1'},
- {label: 'SSI2', value: 'SSI2'},
- {label: 'SSI3', value: 'SSI3'},
- {label: 'SSI4', value: 'SSI4'},
- {label: 'SSI5', value: 'SSI5'},
- {label: 'Stata1', value: 'Stata1'},
- {label: 'Stata2', value: 'Stata2'},
- {label: 'Stata3', value: 'Stata3'},
- {label: 'Stata4', value: 'Stata4'},
- {label: 'Stata5', value: 'Stata5'},
- {label: 'Swift1', value: 'Swift1'},
- {label: 'Swift2', value: 'Swift2'},
- {label: 'Swift3', value: 'Swift3'},
- {label: 'Swift4', value: 'Swift4'},
- {label: 'Swift5', value: 'Swift5'},
- {label: 'TeX1', value: 'TeX1'},
- {label: 'TeX2', value: 'TeX2'},
- {label: 'TeX3', value: 'TeX3'},
- {label: 'TeX4', value: 'TeX4'},
- {label: 'TeX5', value: 'TeX5'},
- {label: 'LaTeX1', value: 'LaTeX1'},
- {label: 'LaTeX2', value: 'LaTeX2'},
- {label: 'LaTeX3', value: 'LaTeX3'},
- {label: 'LaTeX4', value: 'LaTeX4'},
- {label: 'LaTeX5', value: 'LaTeX5'},
- {label: 'UML1', value: 'UML1'},
- {label: 'UML2', value: 'UML2'},
- {label: 'UML3', value: 'UML3'},
- {label: 'UML4', value: 'UML4'},
- {label: 'UML5', value: 'UML5'},
- {label: 'Verilog1', value: 'Verilog1'},
- {label: 'Verilog2', value: 'Verilog2'},
- {label: 'Verilog3', value: 'Verilog3'},
- {label: 'Verilog4', value: 'Verilog4'},
- {label: 'Verilog5', value: 'Verilog5'},
- {label: 'VHDL1', value: 'VHDL1'},
- {label: 'VHDL2', value: 'VHDL2'},
- {label: 'VHDL3', value: 'VHDL3'},
- {label: 'VHDL4', value: 'VHDL4'},
- {label: 'VHDL5', value: 'VHDL5'},
- {label: 'VisualBasic1', value: 'VisualBasic1'},
- {label: 'VisualBasic2', value: 'VisualBasic2'},
- {label: 'VisualBasic3', value: 'VisualBasic3'},
- {label: 'VisualBasic4', value: 'VisualBasic4'},
- {label: 'VisualBasic5', value: 'VisualBasic5'},
- {label: 'VisualFoxPro1', value: 'VisualFoxPro1'},
- {label: 'VisualFoxPro2', value: 'VisualFoxPro2'},
- {label: 'VisualFoxPro3', value: 'VisualFoxPro3'},
- {label: 'VisualFoxPro4', value: 'VisualFoxPro4'},
- {label: 'VisualFoxPro5', value: 'VisualFoxPro5'},
- {label: 'VRML1', value: 'VRML1'},
- {label: 'VRML2', value: 'VRML2'},
- {label: 'VRML3', value: 'VRML3'},
- {label: 'VRML4', value: 'VRML4'},
- {label: 'VRML5', value: 'VRML5'},
- {label: 'XML1', value: 'XML1'},
- {label: 'XML2', value: 'XML2'},
- {label: 'XML3', value: 'XML3'},
- {label: 'XML4', value: 'XML4'},
- {label: 'XML5', value: 'XML5'},
- {label: 'XSL1', value: 'XSL1'},
- {label: 'XSL2', value: 'XSL2'},
- {label: 'XSL3', value: 'XSL3'},
- {label: 'XSL4', value: 'XSL4'},
- {label: 'XSL5', value: 'XSL5'},
- {label: 'ADODOTNET1', value: 'ADODOTNET1'},
- {label: 'ADODOTNET2', value: 'ADODOTNET2'},
- {label: 'ADODOTNET3', value: 'ADODOTNET3'},
- {label: 'ADODOTNET4', value: 'ADODOTNET4'},
- {label: 'ADODOTNET5', value: 'ADODOTNET5'},
- {label: 'ASCII1', value: 'ASCII1'},
- {label: 'ASCII2', value: 'ASCII2'},
- {label: 'ASCII3', value: 'ASCII3'},
- {label: 'ASCII4', value: 'ASCII4'},
- {label: 'ASCII5', value: 'ASCII5'},
- {label: 'BackboneDOTjs1', value: 'BackboneDOTjs1'},
- {label: 'BackboneDOTjs2', value: 'BackboneDOTjs2'},
- {label: 'BackboneDOTjs3', value: 'BackboneDOTjs3'},
- {label: 'BackboneDOTjs4', value: 'BackboneDOTjs4'},
- {label: 'BackboneDOTjs5', value: 'BackboneDOTjs5'},
- {label: 'CakePHP1', value: 'CakePHP1'},
- {label: 'CakePHP2', value: 'CakePHP2'},
- {label: 'CakePHP3', value: 'CakePHP3'},
- {label: 'CakePHP4', value: 'CakePHP4'},
- {label: 'CakePHP5', value: 'CakePHP5'},
- {label: 'CGI1', value: 'CGI1'},
- {label: 'CGI2', value: 'CGI2'},
- {label: 'CGI3', value: 'CGI3'},
- {label: 'CGI4', value: 'CGI4'},
- {label: 'CGI5', value: 'CGI5'},
- {label: 'Cocoa1', value: 'Cocoa1'},
- {label: 'Cocoa2', value: 'Cocoa2'},
- {label: 'Cocoa3', value: 'Cocoa3'},
- {label: 'Cocoa4', value: 'Cocoa4'},
- {label: 'Cocoa5', value: 'Cocoa5'},
- {label: 'CodeIgniter1', value: 'CodeIgniter1'},
- {label: 'CodeIgniter2', value: 'CodeIgniter2'},
- {label: 'CodeIgniter3', value: 'CodeIgniter3'},
- {label: 'CodeIgniter4', value: 'CodeIgniter4'},
- {label: 'CodeIgniter5', value: 'CodeIgniter5'},
- {label: 'CORBA1', value: 'CORBA1'},
- {label: 'CORBA2', value: 'CORBA2'},
- {label: 'CORBA3', value: 'CORBA3'},
- {label: 'CORBA4', value: 'CORBA4'},
- {label: 'CORBA5', value: 'CORBA5'},
- {label: 'CVS1', value: 'CVS1'},
- {label: 'CVS2', value: 'CVS2'},
- {label: 'CVS3', value: 'CVS3'},
- {label: 'CVS4', value: 'CVS4'},
- {label: 'CVS5', value: 'CVS5'},
- {label: 'DOM1', value: 'DOM1'},
- {label: 'DOM2', value: 'DOM2'},
- {label: 'DOM3', value: 'DOM3'},
- {label: 'DOM4', value: 'DOM4'},
- {label: 'DOM5', value: 'DOM5'},
- {label: 'FFmpeg1', value: 'FFmpeg1'},
- {label: 'FFmpeg2', value: 'FFmpeg2'},
- {label: 'FFmpeg3', value: 'FFmpeg3'},
- {label: 'FFmpeg4', value: 'FFmpeg4'},
- {label: 'FFmpeg5', value: 'FFmpeg5'},
- {label: 'GATE1', value: 'GATE1'},
- {label: 'GATE2', value: 'GATE2'},
- {label: 'GATE3', value: 'GATE3'},
- {label: 'GATE4', value: 'GATE4'},
- {label: 'GATE5', value: 'GATE5'},
- {label: 'Git1', value: 'Git1'},
- {label: 'Git2', value: 'Git2'},
- {label: 'Git3', value: 'Git3'},
- {label: 'Git4', value: 'Git4'},
- {label: 'Git5', value: 'Git5'},
- {label: 'GNUstep1', value: 'GNUstep1'},
- {label: 'GNUstep2', value: 'GNUstep2'},
- {label: 'GNUstep3', value: 'GNUstep3'},
- {label: 'GNUstep4', value: 'GNUstep4'},
- {label: 'GNUstep5', value: 'GNUstep5'},
- {label: 'ImageMagick1', value: 'ImageMagick1'},
- {label: 'ImageMagick2', value: 'ImageMagick2'},
- {label: 'ImageMagick3', value: 'ImageMagick3'},
- {label: 'ImageMagick4', value: 'ImageMagick4'},
- {label: 'ImageMagick5', value: 'ImageMagick5'},
- {label: 'JSON1', value: 'JSON1'},
- {label: 'JSON2', value: 'JSON2'},
- {label: 'JSON3', value: 'JSON3'},
- {label: 'JSON4', value: 'JSON4'},
- {label: 'JSON5', value: 'JSON5'},
- {label: 'Laravel1', value: 'Laravel1'},
- {label: 'Laravel2', value: 'Laravel2'},
- {label: 'Laravel3', value: 'Laravel3'},
- {label: 'Laravel4', value: 'Laravel4'},
- {label: 'Laravel5', value: 'Laravel5'},
- {label: 'MantisBT1', value: 'MantisBT1'},
- {label: 'MantisBT2', value: 'MantisBT2'},
- {label: 'MantisBT3', value: 'MantisBT3'},
- {label: 'MantisBT4', value: 'MantisBT4'},
- {label: 'MantisBT5', value: 'MantisBT5'},
- {label: 'MDN1', value: 'MDN1'},
- {label: 'MDN2', value: 'MDN2'},
- {label: 'MDN3', value: 'MDN3'},
- {label: 'MDN4', value: 'MDN4'},
- {label: 'MDN5', value: 'MDN5'},
- {label: 'Mercurial1', value: 'Mercurial1'},
- {label: 'Mercurial2', value: 'Mercurial2'},
- {label: 'Mercurial3', value: 'Mercurial3'},
- {label: 'Mercurial4', value: 'Mercurial4'},
- {label: 'Mercurial5', value: 'Mercurial5'},
- {label: 'MPI1', value: 'MPI1'},
- {label: 'MPI2', value: 'MPI2'},
- {label: 'MPI3', value: 'MPI3'},
- {label: 'MPI4', value: 'MPI4'},
- {label: 'MPI5', value: 'MPI5'},
- {label: 'MSXML1', value: 'MSXML1'},
- {label: 'MSXML2', value: 'MSXML2'},
- {label: 'MSXML3', value: 'MSXML3'},
- {label: 'MSXML4', value: 'MSXML4'},
- {label: 'MSXML5', value: 'MSXML5'},
- {label: 'Ncurses1', value: 'Ncurses1'},
- {label: 'Ncurses2', value: 'Ncurses2'},
- {label: 'Ncurses3', value: 'Ncurses3'},
- {label: 'Ncurses4', value: 'Ncurses4'},
- {label: 'Ncurses5', value: 'Ncurses5'},
- {label: 'DOTNET1', value: 'DOTNET1'},
- {label: 'DOTNET2', value: 'DOTNET2'},
- {label: 'DOTNET3', value: 'DOTNET3'},
- {label: 'DOTNET4', value: 'DOTNET4'},
- {label: 'DOTNET5', value: 'DOTNET5'},
- {label: 'NetCDF1', value: 'NetCDF1'},
- {label: 'NetCDF2', value: 'NetCDF2'},
- {label: 'NetCDF3', value: 'NetCDF3'},
- {label: 'NetCDF4', value: 'NetCDF4'},
- {label: 'NetCDF5', value: 'NetCDF5'},
- {label: 'OAuth1', value: 'OAuth1'},
- {label: 'OAuth2', value: 'OAuth2'},
- {label: 'OAuth3', value: 'OAuth3'},
- {label: 'OAuth4', value: 'OAuth4'},
- {label: 'OAuth5', value: 'OAuth5'},
- {label: 'OpenCL1', value: 'OpenCL1'},
- {label: 'OpenCL2', value: 'OpenCL2'},
- {label: 'OpenCL3', value: 'OpenCL3'},
- {label: 'OpenCL4', value: 'OpenCL4'},
- {label: 'OpenCL5', value: 'OpenCL5'},
- {label: 'OpenID1', value: 'OpenID1'},
- {label: 'OpenID2', value: 'OpenID2'},
- {label: 'OpenID3', value: 'OpenID3'},
- {label: 'OpenID4', value: 'OpenID4'},
- {label: 'OpenID5', value: 'OpenID5'},
- {label: 'OpenSSL1', value: 'OpenSSL1'},
- {label: 'OpenSSL2', value: 'OpenSSL2'},
- {label: 'OpenSSL3', value: 'OpenSSL3'},
- {label: 'OpenSSL4', value: 'OpenSSL4'},
- {label: 'OpenSSL5', value: 'OpenSSL5'},
- {label: 'PHProjekt1', value: 'PHProjekt1'},
- {label: 'PHProjekt2', value: 'PHProjekt2'},
- {label: 'PHProjekt3', value: 'PHProjekt3'},
- {label: 'PHProjekt4', value: 'PHProjekt4'},
- {label: 'PHProjekt5', value: 'PHProjekt5'},
- {label: 'RegEx1', value: 'RegEx1'},
- {label: 'RegEx2', value: 'RegEx2'},
- {label: 'RegEx3', value: 'RegEx3'},
- {label: 'RegEx4', value: 'RegEx4'},
- {label: 'RegEx5', value: 'RegEx5'},
- {label: 'SSH1', value: 'SSH1'},
- {label: 'SSH2', value: 'SSH2'},
- {label: 'SSH3', value: 'SSH3'},
- {label: 'SSH4', value: 'SSH4'},
- {label: 'SSH5', value: 'SSH5'},
- {label: 'SOAP1', value: 'SOAP1'},
- {label: 'SOAP2', value: 'SOAP2'},
- {label: 'SOAP3', value: 'SOAP3'},
- {label: 'SOAP4', value: 'SOAP4'},
- {label: 'SOAP5', value: 'SOAP5'},
- {label: 'Subversion1', value: 'Subversion1'},
- {label: 'Subversion2', value: 'Subversion2'},
- {label: 'Subversion3', value: 'Subversion3'},
- {label: 'Subversion4', value: 'Subversion4'},
- {label: 'Subversion5', value: 'Subversion5'},
- {label: 'URL1', value: 'URL1'},
- {label: 'URL2', value: 'URL2'},
- {label: 'URL3', value: 'URL3'},
- {label: 'URL4', value: 'URL4'},
- {label: 'URL5', value: 'URL5'},
- {label: 'Vi1', value: 'Vi1'},
- {label: 'Vi2', value: 'Vi2'},
- {label: 'Vi3', value: 'Vi3'},
- {label: 'Vi4', value: 'Vi4'},
- {label: 'Vi5', value: 'Vi5'},
- {label: 'WCF1', value: 'WCF1'},
- {label: 'WCF2', value: 'WCF2'},
- {label: 'WCF3', value: 'WCF3'},
- {label: 'WCF4', value: 'WCF4'},
- {label: 'WCF5', value: 'WCF5'},
- {label: 'WSDL1', value: 'WSDL1'},
- {label: 'WSDL2', value: 'WSDL2'},
- {label: 'WSDL3', value: 'WSDL3'},
- {label: 'WSDL4', value: 'WSDL4'},
- {label: 'WSDL5', value: 'WSDL5'},
- {label: 'WSGI1', value: 'WSGI1'},
- {label: 'WSGI2', value: 'WSGI2'},
- {label: 'WSGI3', value: 'WSGI3'},
- {label: 'WSGI4', value: 'WSGI4'},
- {label: 'WSGI5', value: 'WSGI5'},
- {label: 'YUI1', value: 'YUI1'},
- {label: 'YUI2', value: 'YUI2'},
- {label: 'YUI3', value: 'YUI3'},
- {label: 'YUI4', value: 'YUI4'},
- {label: 'YUI5', value: 'YUI5'},
- {label: 'Zikula1', value: 'Zikula1'},
- {label: 'Zikula2', value: 'Zikula2'},
- {label: 'Zikula3', value: 'Zikula3'},
- {label: 'Zikula4', value: 'Zikula4'},
- {label: 'Zikula5', value: 'Zikula5'},
- {label: 'Chyrp1', value: 'Chyrp1'},
- {label: 'Chyrp2', value: 'Chyrp2'},
- {label: 'Chyrp3', value: 'Chyrp3'},
- {label: 'Chyrp4', value: 'Chyrp4'},
- {label: 'Chyrp5', value: 'Chyrp5'},
- {label: 'Xaraya1', value: 'Xaraya1'},
- {label: 'Xaraya2', value: 'Xaraya2'},
- {label: 'Xaraya3', value: 'Xaraya3'},
- {label: 'Xaraya4', value: 'Xaraya4'},
- {label: 'Xaraya5', value: 'Xaraya5'}
-];
diff --git a/demo/src/screens/componentScreens/ProgressBarScreen.tsx b/demo/src/screens/componentScreens/ProgressBarScreen.tsx
deleted file mode 100644
index 1a861dbe46..0000000000
--- a/demo/src/screens/componentScreens/ProgressBarScreen.tsx
+++ /dev/null
@@ -1,108 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {View, Text, ProgressBar, Colors, Spacings} from 'react-native-ui-lib';//eslint-disable-line
-
-
-export default class ProgressBarScreen extends Component {
-
- state = {
- progresses: [0, 0, 0, 0]
- };
-
- componentDidMount() {
- this.startProgress(0, 45);
- this.startProgress(1, 25);
- this.startProgress(2, 70);
- this.startProgress(3, 15);
- }
-
- elements = new Array(4);
-
- startProgress(index: number, stepSize: number) {
- const {progresses} = this.state;
- progresses[index] = Math.min(progresses[index] + stepSize, 100);
- this.setState({progresses});
-
- if (progresses[index] < 100) {
- setTimeout(() => {
- this.startProgress(index, stepSize);
- }, 800);
- }
- }
-
- get customElement() {
- return (
-
- );
- }
-
- render() {
- const {progresses} = this.state;
-
- return (
-
-
-
-
- ProgressBar
-
-
-
-
- Default
-
-
-
-
- FullWidth
-
-
-
-
- Styled
-
-
-
-
- Custom Element
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- text: {
- paddingTop: 20,
- paddingBottom: 15,
- paddingLeft: 20
- },
- progressBar: {
- marginBottom: 10,
- marginHorizontal: Spacings.s4
- },
- styledProgressBar: {
- backgroundColor: Colors.purple40,
- height: 30
- },
- fullWidthProgressBar: {
- marginBottom: 10
- }
-});
diff --git a/demo/src/screens/componentScreens/ProgressiveImageScreen.js b/demo/src/screens/componentScreens/ProgressiveImageScreen.js
deleted file mode 100644
index 6080f1750a..0000000000
--- a/demo/src/screens/componentScreens/ProgressiveImageScreen.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, ProgressiveImage} from 'react-native-ui-lib';
-
-const IMAGE_URL = 'https://images.pexels.com/photos/3222421/pexels-photo-3222421.jpeg';
-const THUMB_URL = 'https://images.pexels.com/photos/3222421/pexels-photo-3222421.jpeg?w=50';
-const DEFAULT_SIZE = 500;
-
-class ProgressiveImageScreen extends Component {
- render() {
- return (
-
-
-
-
-
-
-
-
- Progressive Image
-
-
-
-
- );
- }
-}
-
-export default ProgressiveImageScreen;
diff --git a/demo/src/screens/componentScreens/RadioButtonScreen.js b/demo/src/screens/componentScreens/RadioButtonScreen.js
deleted file mode 100644
index 6bff7931ba..0000000000
--- a/demo/src/screens/componentScreens/RadioButtonScreen.js
+++ /dev/null
@@ -1,168 +0,0 @@
-import React, {Component} from 'react';
-import {TouchableOpacity, ScrollView, StyleSheet} from 'react-native';
-import {Assets, Colors, View, Text, RadioButton, RadioGroup} from 'react-native-ui-lib'; //eslint-disable-line
-const starIcon = require('../../assets/icons/star.png');
-
-const COLORS = {
- ORANGE: {name: 'Orange', color: Colors.orange20},
- PURPLE: {name: 'Purple', color: Colors.purple20},
- GREEN: {name: 'Green', color: Colors.green20}
-};
-
-export default class RadioButtonScreen extends Component {
- static colors = COLORS;
-
- constructor(props) {
- super(props);
-
- this.state = {
- color: undefined,
- messageType: undefined,
- disabledSelectedValue: true
- };
- }
-
- renderRadioButton(value, text, props) {
- return (
-
-
-
- );
- }
-
- renderRadioButtonForColorEnum(color) {
- return (
-
-
-
- );
- }
-
- renderRadioButtonWithImage(value, icon, style) {
- return (
-
-
-
- );
- }
-
- renderRadioButtonWithImageAndText(value, text, iconOnRight) {
- return (
-
-
-
- );
- }
-
- render() {
- return (
-
-
-
- Radio Buttons
-
-
- this.setState({color: value})}>
-
- Select a color{'\n'}
- (enum with default value)
-
- {this.renderRadioButton(null, 'Default')}
- {this.renderRadioButtonForColorEnum(RadioButtonScreen.colors.ORANGE)}
- {this.renderRadioButtonForColorEnum(RadioButtonScreen.colors.PURPLE)}
- {this.renderRadioButtonForColorEnum(RadioButtonScreen.colors.GREEN)}
- You chose: {this.state.color ? this.state.color : 'Default'}
-
-
- this.setState({textSide: value})}
- >
-
- Alignments
-
- {this.renderRadioButtonWithImageAndText('left-icon', 'Text on right')}
- {this.renderRadioButtonWithImageAndText('right-icon', 'Text on left', true)}
- {this.renderRadioButton('right-content', 'Content on right', true)}
- {this.renderRadioButton('left-content', 'Content on left', {contentOnLeft: true})}
- You chose: {this.state.textSide}
-
-
- this.setState({value})}>
-
- Yes or No?
-
-
- {this.renderRadioButtonWithImage('yes', Assets.icons.check, {tintColor: 'green'})}
- {this.renderRadioButtonWithImage('no', Assets.icons.x, {tintColor: 'red'})}
-
- You chose: {this.state.value}
-
-
-
- Use it without RadioGroup
-
-
- this.setState({individualValue2: !this.state.individualValue2})}
- label="Individual Radio Button (with style)"
- labelStyle={{fontSize: 16, fontWeight: 'bold'}}
- contentOnLeft
- containerStyle={styles.contentOnLeft}
- />
-
- this.setState({individualValue: !this.state.individualValue})}
- accessible={false}
- >
-
-
-
-
-
- this.setState({disabledValue: !this.state.disabledValue})}
- label="Disabled Radio Button"
- contentOnLeft
- containerStyle={styles.contentOnLeft}
- />
-
-
- this.setState({disabledSelectedValue: !this.state.disabledSelectedValue})}
- label="Disabled Selected Radio Button"
- contentOnLeft
- containerStyle={styles.contentOnLeft}
- />
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- contentOnLeft: {
- flex: 1,
- justifyContent: 'space-between'
- }
-});
diff --git a/demo/src/screens/componentScreens/ScrollBarScreen.tsx b/demo/src/screens/componentScreens/ScrollBarScreen.tsx
deleted file mode 100644
index 34506de360..0000000000
--- a/demo/src/screens/componentScreens/ScrollBarScreen.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, ScrollBar, Button} from 'react-native-ui-lib';
-
-class ScrollBarScreen extends Component {
- state = {
- selectedIndex: 0
- };
-
- focus = ({customValue: index}: {customValue: number}) => {
- this.setState({selectedIndex: index});
- };
-
- render() {
- const {selectedIndex} = this.state;
- return (
-
-
- ScrollBar
-
-
- {[
- 'January',
- 'February',
- 'March',
- 'April',
- 'May',
- 'June',
- 'July',
- 'August',
- 'September',
- 'October',
- 'November',
- 'December'
- ].map((item, index) => {
- return ;
- })}
-
-
- );
- }
-}
-
-export default ScrollBarScreen;
diff --git a/demo/src/screens/componentScreens/SectionsWheelPickerScreen.tsx b/demo/src/screens/componentScreens/SectionsWheelPickerScreen.tsx
deleted file mode 100644
index 2665d9240e..0000000000
--- a/demo/src/screens/componentScreens/SectionsWheelPickerScreen.tsx
+++ /dev/null
@@ -1,197 +0,0 @@
-import _ from 'lodash';
-import React, {useState, useCallback, useMemo} from 'react';
-import {Alert, StyleSheet} from 'react-native';
-import {
- Text,
- View,
- SectionsWheelPicker,
- SegmentedControl,
- Button,
- WheelPicker,
- WheelPickerProps,
- Constants,
- Switch,
- Colors
-} from 'react-native-ui-lib';
-
-const DAYS = _.times(10, i => i);
-const HOURS = _.times(24, i => i);
-const MINUTES = _.times(60, i => i);
-
-const SectionsWheelPickerScreen = () => {
- const [numOfSections, setNumOfSections] = useState(1);
- const [disableRTL, setDisableRTL] = useState(false);
- const [selectedDays, setSelectedDays] = useState(0);
- const [selectedHours, setSelectedHours] = useState(0);
- const [selectedMinutes, setSelectedMinutes] = useState(0);
-
- const shouldDisableRTL = useMemo(() => {
- return Constants.isRTL && disableRTL;
- }, [disableRTL]);
-
- const getItems = useCallback((values: (number | string)[]) => {
- return _.map(values, item => ({label: '' + item, value: item}));
- }, []);
-
- const onDaysChange = useCallback((item: number | string) => {
- setSelectedDays(item as number);
- }, []);
-
- const onHoursChange = useCallback((item: number | string) => {
- setSelectedHours(item as number);
- }, []);
-
- const onMinutesChange = useCallback((item: number | string) => {
- setSelectedMinutes(item as number);
- }, []);
-
- const onSavePress = useCallback(() => {
- const days = selectedDays === 1 ? 'day' : 'days';
- const hours = selectedHours === 1 ? 'hour' : 'hours';
- const minutes = selectedMinutes === 1 ? 'minute' : 'minutes';
-
- numOfSections === 3
- ? Alert.alert('Your chosen duration is:\n' +
- selectedDays +
- ' ' +
- days +
- ', ' +
- selectedHours +
- ' ' +
- hours +
- ' and ' +
- selectedMinutes +
- ' ' +
- minutes)
- : numOfSections === 2
- ? Alert.alert('Your chosen duration is:\n' + selectedDays + ' ' + days + ' and ' + selectedHours + ' ' + hours)
- : Alert.alert('Your chosen duration is:\n' + selectedDays + ' ' + days);
- }, [numOfSections, selectedDays, selectedHours, selectedMinutes]);
-
- const onResetPress = useCallback(() => {
- setSelectedDays(0);
- setSelectedHours(0);
- setSelectedMinutes(0);
- }, []);
-
- const sections: WheelPickerProps[] = useMemo(() => {
- return [
- {
- items: getItems(DAYS),
- onChange: onDaysChange,
- initialValue: selectedDays,
- label: Constants.isRTL ? 'ימים' : 'Days',
- align:
- numOfSections === 1
- ? WheelPicker.alignments.CENTER
- : shouldDisableRTL
- ? WheelPicker.alignments.LEFT
- : WheelPicker.alignments.RIGHT,
- style: {
- flex: 1,
- flexDirection: numOfSections !== 1 && Constants.isRTL && !disableRTL ? 'row-reverse' : undefined
- }
- },
- {
- items: getItems(HOURS),
- onChange: onHoursChange,
- initialValue: selectedHours,
- label: Constants.isRTL ? 'שעות' : 'Hrs',
- align:
- numOfSections === 2
- ? shouldDisableRTL
- ? WheelPicker.alignments.RIGHT
- : WheelPicker.alignments.LEFT
- : WheelPicker.alignments.CENTER,
- style: numOfSections === 2 ? {flex: 1, flexDirection: shouldDisableRTL ? 'row-reverse' : 'row'} : undefined
- },
- {
- items: getItems(MINUTES),
- onChange: onMinutesChange,
- initialValue: selectedMinutes,
- label: Constants.isRTL ? 'דקות' : 'Mins',
- align: shouldDisableRTL ? WheelPicker.alignments.RIGHT : WheelPicker.alignments.LEFT,
- style: {flex: 1, flexDirection: shouldDisableRTL ? 'row-reverse' : 'row'}
- }
- ];
- }, [
- getItems,
- disableRTL,
- selectedDays,
- selectedHours,
- selectedMinutes,
- onDaysChange,
- onHoursChange,
- onMinutesChange,
- numOfSections,
- shouldDisableRTL
- ]);
-
- const sectionsToPresent = useMemo(() => _.slice(sections, 0, numOfSections), [numOfSections, sections]);
-
- const timeSections = useMemo(() => {
- return [
- {
- items: getItems(_.times(24, i => i + 1))
- },
- {
- items: getItems(_.times(12, i => {
- if (i < 2) {
- return `0${i * 5}`;
- }
- return i * 5;
- }))
- }
- ];
- }, [getItems]);
-
- const onChangeIndex = useCallback((index: number) => {
- return setNumOfSections(index + 1);
- }, []);
-
- const updateDisableRTLValue = useCallback((value: boolean) => {
- setDisableRTL(value);
- }, []);
-
- return (
-
-
- Sections Wheel Picker
-
-
- Disable RTL
-
-
-
-
- Pick a duration
-
-
-
-
-
-
-
-
-
-
- Pick a time
-
-
-
-
- );
-};
-
-export default SectionsWheelPickerScreen;
-
-const styles = StyleSheet.create({
- bottomDivider: {
- borderBottomColor: Colors.$outlineDefault,
- borderBottomWidth: 4
- }
-});
diff --git a/demo/src/screens/componentScreens/SegmentedControlScreen.tsx b/demo/src/screens/componentScreens/SegmentedControlScreen.tsx
deleted file mode 100644
index 22bd160842..0000000000
--- a/demo/src/screens/componentScreens/SegmentedControlScreen.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-import React, {useCallback, useState} from 'react';
-import {StyleSheet} from 'react-native';
-import {Text, View, Colors, SegmentedControl, Assets, Spacings, BorderRadiuses, Typography, SegmentedControlItemProps} from 'react-native-ui-lib';
-
-const segments: Record> = {
- first: [{label: 'Default'}, {label: 'Form'}],
- second: [{label: '1'}, {label: '2'}, {label: '3'}, {label: Assets.emojis.airplane}, {label: '5'}],
- third: [
- {
- label: 'Very Long Label with icon',
- iconSource: Assets.icons.search,
- iconStyle: {marginLeft: Spacings.s1, width: 16, height: 16},
- iconOnRight: true
- },
- {label: 'Short'}
- ],
- forth: [{label: 'With'}, {label: 'Custom'}, {label: 'Style'}],
- fifth: [{label: 'Full'}, {label: 'Width'}],
- sixth: [{label: 'Full'}, {label: 'Width'}, {label: 'With'}, {label: 'A'}, {label: 'Very Long Segment'}],
- seventh: [{label: '$'}, {label: '%'}],
- eighth: [{label: 'Plus', iconSource: Assets.icons.plusSmall}, {label: 'Minus', iconSource: Assets.icons.minusSmall}, {label: 'Check', iconSource: Assets.icons.checkSmall}],
- ninth: [{label: 'with'}, {label: 'a'}, {label: 'label'}]
-};
-
-const SegmentedControlScreen = () => {
- const onChangeIndex = useCallback((index: number) => {
- console.warn('Index ' + index + ' of the second segmentedControl was pressed');
- }, []);
- const [screenPreset, setScreenPreset] = useState(SegmentedControl.presets.DEFAULT);
-
- return (
-
-
- Segmented Control
-
-
-
-
- Preset:
-
- setScreenPreset(index === 0 ? SegmentedControl.presets.DEFAULT : SegmentedControl.presets.FORM)
- }
- initialIndex={screenPreset === SegmentedControl.presets.DEFAULT ? 0 : 1}
- />
-
-
-
-
-
-
-
- Custom Typography
-
-
- With Icons
-
-
- Custom Styling
-
-
-
- With a label
-
-
-
-
- );
-};
-
-const styles = StyleSheet.create({
- container: {
- marginTop: 20
- },
- customStyle: {
- height: 50,
- width: 300
- },
- customSegmentsStyle: {
- height: 50
- },
- customTypography: {
- ...Typography.text80BO
- }
-});
-
-export default SegmentedControlScreen;
diff --git a/demo/src/screens/componentScreens/SharedTransitionScreen.js b/demo/src/screens/componentScreens/SharedTransitionScreen.js
deleted file mode 100644
index a52ffdad60..0000000000
--- a/demo/src/screens/componentScreens/SharedTransitionScreen.js
+++ /dev/null
@@ -1,143 +0,0 @@
-import React, {Component} from 'react';
-import {LayoutAnimation, FlatList} from 'react-native';
-import {Colors, View, Image, TouchableOpacity, SharedTransition, Card, Button, Text, Modal} from 'react-native-ui-lib'; //eslint-disable-line
-
-const DATA = [
- {
- id: '12',
- title: 'white pendant lamp',
- location: 'Paris, France',
- views: 1224,
- image:
- 'https://images.unsplash.com/photo-1513506003901-1e6a229e2d15?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1500&q=80',
- },
- {
- id: '13',
- title: 'black floor lamp at the corner',
- location: 'Paris, France',
- views: 302,
- image:
- 'https://images.unsplash.com/photo-1494438639946-1ebd1d20bf85?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1494&q=80',
- },
- {
- id: '14',
- title: 'gray desk lamp near white wall',
- location: 'Paris, France',
- views: 554,
- image:
- 'https://images.unsplash.com/photo-1507473885765-e6ed057f782c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=668&q=80',
- },
- {
- id: '15',
- title: 'round white and yellow bowl illustration',
- location: 'Paris, France',
- views: 1999,
- image:
- 'https://images.unsplash.com/photo-1526308430620-59f514ed2152?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1500&q=80',
- },
- {
- id: '16',
- title: 'black and orange polka dot print textile',
- location: 'Paris, France',
- views: 2014,
- image:
- 'https://images.unsplash.com/photo-1544070643-24128d1f6033?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=668&q=80',
- },
-];
-
-export default class SharedTransitionScreen extends Component {
- constructor(props) {
- super(props);
-
- this.cards = [];
- }
-
- state = {
- showDetails: false,
- };
-
- renderItem = ({item}) => {
- return (
-
-
-
-
- {item.title}
-
-
- {item.location}
-
-
-
-
-
- {item.views}
-
- {' Views'}
-
-
-
-
- {this.renderSharedElement(item)}
-
-
- );
- };
-
- renderList() {
- return item.title} />;
- }
-
- renderSharedElement(item = {}) {
- return (
-
-
-
- );
- }
-
- renderDetails = (data = {}) => {
- return (
-
-
-
- {data && this.renderSharedElement(data, true)}
-
-
- {data.title}
-
- {data.views} Views
-
-
-
-
- {data.location}
-
- when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived
- not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged
-
-
-
-
- );
- };
-
- render() {
- return (
-
- {this.renderList()}
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/SkeletonViewScreen.tsx b/demo/src/screens/componentScreens/SkeletonViewScreen.tsx
deleted file mode 100644
index 725d25b782..0000000000
--- a/demo/src/screens/componentScreens/SkeletonViewScreen.tsx
+++ /dev/null
@@ -1,429 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {Alert, ScrollView, StyleSheet} from 'react-native';
-import {
- Avatar,
- BorderRadiuses,
- Button,
- Constants,
- Image,
- ListItem,
- SkeletonView,
- Spacings,
- Text,
- View,
- Colors
-} from 'react-native-ui-lib';
-import * as ExampleScreenPresenter from '../ExampleScreenPresenter';
-
-const AVATAR_SIZE = 48;
-
-const IMAGE_URIS = [
- 'https://static.wixstatic.com/media/17db2bb89a1d405886bf6c5f90c776e8.jpg',
- 'https://static.wixstatic.com/media/ed8de924f9a04bc1b7f43137378d696e.jpg',
- 'https://static.wixstatic.com/media/ea3157fe992346728dd08cc2e4560e1c.jpg'
-];
-
-const NUMBER_OF_ITEMS_TO_SHOW = 10;
-
-const DATA_TYPE = {
- List: 'list',
- Content: 'content',
- Images: 'images',
- Avatars: 'avatars',
- Custom: 'custom'
-};
-
-const LIST_TYPE = {
- Regular: 'regular',
- Avatar: 'avatar',
- Thumbnail: 'thumbnail'
-};
-
-export default class SkeletonViewScreen extends Component {
- state = {
- isDataAvailable: false,
- dataType: DATA_TYPE.List,
- listType: LIST_TYPE.Regular,
- isLarge: false,
- showEndContent: true,
- key: 1
- };
-
- increaseKey = () => {
- const {key} = this.state;
- this.setState({isDataAvailable: false, key: key + 1});
- };
-
- toggleVisibility = () => {
- const {isDataAvailable} = this.state;
- if (isDataAvailable) {
- this.increaseKey();
- } else {
- this.setState({isDataAvailable: true});
- }
- };
-
- setSize = () => {
- const {isLarge, key} = this.state;
- this.setState({isLarge: !isLarge, key: key + 1, isDataAvailable: false});
- };
-
- setEndContent = () => {
- const {showEndContent, key} = this.state;
- this.setState({showEndContent: !showEndContent, key: key + 1, isDataAvailable: false});
- };
-
- renderEndContent = () => {
- const {showEndContent} = this.state;
- if (showEndContent) {
- return (
-
-
-
- );
- }
- };
-
- renderTopSection = () => {
- const {isDataAvailable, isLarge, showEndContent, dataType} = this.state;
- return (
-
- {ExampleScreenPresenter.renderHeader.call(this, 'Skeleton')}
- {ExampleScreenPresenter.renderRadioGroup.call(this, 'Data type', 'dataType', DATA_TYPE, {
- isRow: true,
- afterValueChanged: this.increaseKey
- })}
- {dataType === DATA_TYPE.List &&
- ExampleScreenPresenter.renderRadioGroup.call(this, 'List type', 'listType', LIST_TYPE, {
- isRow: true,
- afterValueChanged: this.increaseKey
- })}
-
-
- {dataType === DATA_TYPE.List && (
-
- )}
- {dataType === DATA_TYPE.List && (
-
- )}
-
-
- );
- };
-
- renderAvatar = () => {
- return (
-
-
-
- );
- };
-
- renderThumbnail = () => {
- return (
-
-
-
- );
- };
-
- renderEndLabel = () => {
- return (
-
- Verified
-
- );
- };
-
- renderListItemsData = (customValue?: any) => {
- const {isLarge, showEndContent} = this.state;
- const {hasAvatar, hasThumbnail} = customValue || {};
-
- return (
-
- {_.times(NUMBER_OF_ITEMS_TO_SHOW, index => {
- return (
- Alert.alert(`pressed on order #${index + 1}`)}>
- {hasAvatar && this.renderAvatar()}
- {hasThumbnail && this.renderThumbnail()}
-
-
- {`User ${index + 1}`}
-
-
-
- Member
-
-
- {isLarge && (
-
-
- Since:{' '}
-
-
- )}
-
- {showEndContent && this.renderEndLabel()}
-
- );
- })}
-
- );
- };
-
- renderListItems = (hasAvatar = false, hasThumbnail = false) => {
- const {isDataAvailable, isLarge} = this.state;
- const contentType = hasAvatar
- ? SkeletonView.contentTypes.AVATAR
- : hasThumbnail
- ? SkeletonView.contentTypes.THUMBNAIL
- : undefined;
- const size = isLarge ? SkeletonView.sizes.LARGE : SkeletonView.sizes.SMALL;
- return (
-
- );
- };
-
- renderRegularListItems = () => {
- return this.renderListItems();
- };
-
- renderListItemsWithAvatar = () => {
- return this.renderListItems(true);
- };
-
- renderListItemsWithThumbnail = () => {
- return this.renderListItems(false, true);
- };
-
- getImageSize = () => (Constants.screenWidth - IMAGE_URIS.length * Spacings.s5) / IMAGE_URIS.length;
-
- renderImagesData = () => {
- const imageSize = this.getImageSize();
-
- return _.map(IMAGE_URIS, (uri, index) => {
- return (
-
-
-
- );
- });
- };
-
- renderImages = () => {
- const {isDataAvailable} = this.state;
- const imageSize = this.getImageSize();
-
- return (
-
- );
- };
-
- getRandomInt = (max: number) => {
- return Math.floor(Math.random() * max);
- };
-
- getRandomAvatar = () => {
- const isMan = Math.random() >= 0.5;
- return {uri: `https://randomuser.me/api/portraits/${isMan ? 'men' : 'women'}/${this.getRandomInt(50)}.jpg`};
- };
-
- renderAvatarsData = () => {
- return (
-
- {_.times(NUMBER_OF_ITEMS_TO_SHOW, index => {
- const {isDataAvailable} = this.state;
- const avatarSize = isDataAvailable ? AVATAR_SIZE : NaN; // NaN creates a red screen (on purpose, to test it's not rendered)
- return (
-
- );
- })}
-
- );
- };
-
- renderAvatarStrip = () => {
- const {isDataAvailable} = this.state;
- return (
-
-
-
- );
- };
-
- renderText = () => {
- return (
-
- I want to sell my goods internationally and found Wix Web Services can be used for shipping-centric
- implementations.
-
- );
- };
-
- renderCustom = () => {
- const {isDataAvailable} = this.state;
-
- return (
-
-
- Lorem Ipsum }
- />
- }
- />
-
- Lorem Ipsum is simply dummy text of the industry. }
- colors={[Colors.red70, Colors.red50, Colors.red70]}
- />
-
- );
- };
-
- renderContent = () => {
- const {isDataAvailable} = this.state;
- return (
-
-
-
- );
- };
-
- renderData = () => {
- const {dataType, listType} = this.state;
-
- switch (dataType) {
- case DATA_TYPE.List:
- default:
- switch (listType) {
- case LIST_TYPE.Regular:
- default:
- return this.renderRegularListItems();
- case LIST_TYPE.Avatar:
- return this.renderListItemsWithAvatar();
- case LIST_TYPE.Thumbnail:
- return this.renderListItemsWithThumbnail();
- }
- case DATA_TYPE.Content:
- return this.renderContent();
- case DATA_TYPE.Images:
- return this.renderImages();
- case DATA_TYPE.Avatars:
- return this.renderAvatarStrip();
- case DATA_TYPE.Custom:
- return this.renderCustom();
- }
- };
-
- render() {
- const {key} = this.state;
-
- return (
-
- {this.renderTopSection()}
-
- {this.renderData()}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- toggleButton: {
- borderRadius: BorderRadiuses.br10
- },
- section: {
- flexDirection: 'row',
- paddingTop: Spacings.s5,
- paddingHorizontal: Spacings.s5
- },
- contentSection: {
- padding: Spacings.s5
- },
- sectionTitle: {
- paddingTop: Spacings.s5,
- paddingLeft: Spacings.s5
- },
- avatar: {
- marginVertical: 8
- },
- image: {
- flex: 1,
- borderRadius: BorderRadiuses.br20
- },
- border: {
- borderBottomWidth: StyleSheet.hairlineWidth,
- borderColor: Colors.grey70
- }
-});
diff --git a/demo/src/screens/componentScreens/SliderScreen.tsx b/demo/src/screens/componentScreens/SliderScreen.tsx
deleted file mode 100644
index 638bb1227d..0000000000
--- a/demo/src/screens/componentScreens/SliderScreen.tsx
+++ /dev/null
@@ -1,386 +0,0 @@
-import React, {Component, Fragment} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {
- Constants,
- Colors,
- View,
- Text,
- Button,
- Icon,
- Slider,
- GradientSlider,
- ColorSliderGroup
-} from 'react-native-ui-lib';
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-interface SliderScreenProps {
- componentId: string;
-}
-
-interface SliderScreenState {
- alpha: number;
- color: string;
- sliderValue: number;
- sliderMinValue: number;
- sliderMaxValue: number;
- sliderMinValue2: number;
- sliderMaxValue2: number;
- forceLTR: boolean;
-}
-
-const INITIAL_VALUE = 20;
-const RANGE_INITIAL_MIN = 0;
-const RANGE_INITIAL_MAX = 100;
-
-const COLOR = Colors.blue30;
-
-export default class SliderScreen extends Component {
- state = {
- alpha: 1,
- color: COLOR,
- sliderValue: INITIAL_VALUE,
- sliderMinValue: RANGE_INITIAL_MIN,
- sliderMaxValue: RANGE_INITIAL_MAX,
- sliderMinValue2: 25,
- sliderMaxValue2: 80,
- forceLTR: false
- };
-
- slider = React.createRef();
- rangeSlider = React.createRef();
- gradientSlider = React.createRef();
-
- resetSlider = () => {
- // @ts-expect-error
- this.slider.current?.reset();
- // @ts-expect-error
- this.rangeSlider.current?.reset();
- // @ts-expect-error
- this.gradientSlider.current?.reset();
- };
-
- onSliderRangeChange = (values: {min: number; max: number}) => {
- const {min, max} = values;
- this.setState({sliderMinValue: min, sliderMaxValue: max});
- };
-
- onSliderRangeChange2 = (values: {min: number; max: number}) => {
- const {min, max} = values;
- this.setState({sliderMinValue2: min, sliderMaxValue2: max});
- };
-
- onSliderValueChange = (value: number) => {
- this.setState({sliderValue: value});
- };
-
- onSliderReset = () => {
- this.setState({sliderValue: INITIAL_VALUE});
- };
-
- onRangeSliderReset = () => {
- this.setState({sliderMinValue: RANGE_INITIAL_MIN, sliderMaxValue: RANGE_INITIAL_MAX});
- };
-
- onGradientValueChange = (value: string, alpha: number) => {
- this.setState({color: value, alpha});
- };
-
- onGroupValueChange = (value: string) => {
- console.warn('onGroupValueChange: ', value);
- };
-
- getReverseStyle = () => {
- return Constants.isRTL && this.state.forceLTR && styles.ltr;
- };
-
- renderDefaultSliderExample() {
- const {sliderValue, forceLTR} = this.state;
-
- return (
-
-
- Default slider
-
-
-
-
-
-
- ${sliderValue}
-
-
-
- );
- }
-
- renderNegativeSliderExample() {
- return (
-
-
- Negatives
-
-
-
-
- );
- }
-
- renderDisabledSliderExample() {
- return (
-
-
- Disabled
-
-
-
- );
- }
-
- renderCustomSlider() {
- return (
- <>
-
- Custom with Steps
-
-
- >
- );
- }
-
- renderRangeSliderExample() {
- const {sliderMinValue, sliderMaxValue, forceLTR} = this.state;
-
- return (
-
-
- Range Slider
-
-
-
- min. {sliderMinValue}%
-
-
- max. {sliderMaxValue}%
-
-
-
-
- );
- }
-
- renderRangeSliderWithValuesExample() {
- const {sliderMinValue2, sliderMaxValue2, forceLTR} = this.state;
-
- return (
-
-
- Range w/ initial values and no default gap
-
-
-
- min. {sliderMinValue2}%
-
-
- max. {sliderMaxValue2}%
-
-
-
-
- );
- }
-
- renderGradientSlidersExample() {
- const {color, alpha} = this.state;
-
- return (
-
-
- Gradient Sliders
-
-
-
- DEFAULT
-
-
-
-
-
-
-
-
- HUE
-
-
-
-
-
-
-
- );
- }
-
- renderColorSliderGroupExample() {
- const {color} = this.state;
-
- return (
-
-
- Color Slider Group
-
-
-
- );
- }
-
- render() {
- return (
-
-
-
-
- Sliders
-
-
-
- {Constants.isRTL && renderBooleanOption.call(this, 'Force LTR', 'forceLTR')}
-
- {this.renderDefaultSliderExample()}
- {this.renderNegativeSliderExample()}
- {this.renderDisabledSliderExample()}
- {this.renderCustomSlider()}
- {this.renderRangeSliderExample()}
- {this.renderRangeSliderWithValuesExample()}
- {this.renderGradientSlidersExample()}
- {this.renderColorSliderGroupExample()}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- ltr: {
- flexDirection: 'row-reverse'
- },
- image: {
- tintColor: Colors.$iconNeutral
- },
- text: {
- width: 40
- },
- slider: {
- marginVertical: 6
- },
- sliderContainer: {
- flex: 1, // NOTE: to place a slider in a row layout you must set flex in its 'containerStyle'!!!
- marginHorizontal: 8
- },
- gradientSliderContainer: {
- flex: 1, // NOTE: to place a slider in a row layout you must set flex in its 'containerStyle'!!!
- marginHorizontal: 20,
- marginVertical: 10
- },
- track: {
- height: 2
- },
- thumb: {
- width: 26,
- height: 26,
- borderRadius: 13,
- borderColor: Colors.violet40,
- borderWidth: 1,
- shadowColor: Colors.white
- },
- activeThumb: {
- width: 40,
- height: 40,
- borderRadius: 20,
- borderColor: Colors.yellow30,
- borderWidth: 2
- },
- box: {
- width: 20,
- height: 20,
- borderRadius: 4,
- borderWidth: 1,
- borderColor: Colors.$outlineDefault
- },
- group: {
- backgroundColor: Colors.$backgroundNeutralMedium,
- padding: 10,
- borderRadius: 6
- }
-});
diff --git a/demo/src/screens/componentScreens/SortableGridListScreen.tsx b/demo/src/screens/componentScreens/SortableGridListScreen.tsx
deleted file mode 100644
index dfad103b0a..0000000000
--- a/demo/src/screens/componentScreens/SortableGridListScreen.tsx
+++ /dev/null
@@ -1,140 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {
- View,
- Text,
- Constants,
- SortableGridList,
- Card,
- Spacings,
- BorderRadiuses,
- GridListProps,
- SortableGridListProps,
- Button
-} from 'react-native-ui-lib';
-import _ from 'lodash';
-import products from '../../data/products';
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-const productsWithIds = products.map(product => ({...product}));
-type Item = (typeof productsWithIds)[0];
-
-class SortableGridListScreen extends Component {
- state = {
- orientation: Constants.orientation,
- selectedItemId: undefined,
- items: productsWithIds,
- removedItems: [] as Item[],
- shouldOrderByIndex: false
- };
- itemsOrdered = this.state.items;
-
- onOrderChange: SortableGridListProps['onOrderChange'] = (newOrderedData, newOrder) => {
- this.itemsOrdered = newOrderedData;
- console.log('newOrder:', newOrder);
- };
-
- selectItem = ({customValue: id}: {customValue: number}) => {
- const {selectedItemId} = this.state;
- if (id === selectedItemId) {
- this.setState({selectedItemId: undefined});
- } else {
- this.setState({selectedItemId: id});
- }
- };
-
- removeSelectedItem = () => {
- const {selectedItemId, removedItems} = this.state;
- if (!_.isUndefined(selectedItemId)) {
- const newItems = [...this.itemsOrdered];
- const removed = _.remove(newItems, item => item.id === selectedItemId);
- removedItems.push(removed[0]);
- this.setState({items: newItems, selectedItemId: undefined, removedItems});
- this.itemsOrdered = newItems;
- }
- };
-
- addItem = () => {
- const {removedItems} = this.state;
- const itemToAdd = removedItems.pop();
- if (itemToAdd) {
- this.itemsOrdered.push(itemToAdd);
- const newItems = [...this.itemsOrdered];
-
- this.setState({items: newItems, selectedItemId: undefined, removedItems});
- }
- };
-
- renderItem: GridListProps- ['renderItem'] = ({item}) => {
- const {selectedItemId} = this.state;
- return (
-
-
- {item.id}
-
- )
- }}
- />
-
- );
- };
-
- render() {
- const {items, removedItems, selectedItemId, shouldOrderByIndex} = this.state;
- return (
-
-
- SortableGridList
-
-
-
-
-
-
- {renderBooleanOption.call(this, 'Order by index', 'shouldOrderByIndex')}
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- list: {
- paddingTop: Spacings.s5
- },
- itemImage: {
- width: '100%',
- // height: 85,
- height: 108.7,
- borderRadius: BorderRadiuses.br10
- }
-});
-
-export default SortableGridListScreen;
diff --git a/demo/src/screens/componentScreens/SortableListScreen.tsx b/demo/src/screens/componentScreens/SortableListScreen.tsx
deleted file mode 100644
index a06c55efee..0000000000
--- a/demo/src/screens/componentScreens/SortableListScreen.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import _ from 'lodash';
-import React, {useCallback, useState, useRef} from 'react';
-import {StyleSheet} from 'react-native';
-import {
- SortableList,
- SortableListItemProps,
- View,
- TouchableOpacity,
- Text,
- Icon,
- Assets,
- Colors,
- Button
-} from 'react-native-ui-lib';
-import {renderHeader} from '../ExampleScreenPresenter';
-
-interface Item extends SortableListItemProps {
- text: string;
-}
-
-const data: Item[] = _.times(30, index => {
- let text = `${index}`;
- if (index === 3) {
- text = 'Locked item';
- }
-
- return {
- text,
- id: `${index}`,
- locked: index === 3
- };
-});
-
-const SortableListScreen = () => {
- const [items, setItems] = useState- (data);
- const [selectedItems, setSelectedItems] = useState
- ([]);
- const [removedItems, setRemovedItems] = useState
- ([]);
- const orderedItems = useRef
- (data);
-
- const toggleItemSelection = useCallback((item: Item) => {
- if (selectedItems.includes(item)) {
- setSelectedItems(selectedItems.filter(selectedItem => ![item.id].includes(selectedItem.id)));
- } else {
- setSelectedItems(selectedItems.concat(item));
- }
- },
- [selectedItems, setSelectedItems]);
-
- const addItem = useCallback(() => {
- if (removedItems.length > 0) {
- orderedItems.current = orderedItems.current.concat(removedItems[0]);
- setItems(orderedItems.current);
- setRemovedItems(removedItems.slice(1));
- }
- }, [removedItems, setItems, setRemovedItems]);
-
- const removeSelectedItems = useCallback(() => {
- setRemovedItems(removedItems.concat(selectedItems));
- setSelectedItems([]);
- orderedItems.current = orderedItems.current.filter(item => !selectedItems.includes(item));
- setItems(orderedItems.current);
- }, [setRemovedItems, removedItems, selectedItems, setItems, setSelectedItems]);
-
- const keyExtractor = useCallback((item: Item) => {
- return `${item.id}`;
- }, []);
-
- const onOrderChange = useCallback((newData: Item[]) => {
- console.log('New order:', newData);
- orderedItems.current = newData;
- }, []);
-
- const renderItem = useCallback(({item, index: _index}: {item: Item; index: number}) => {
- const isSelected = selectedItems.includes(item);
- const {locked} = item;
- const Container = locked ? View : TouchableOpacity;
- return (
-
toggleItemSelection(item)}
- // overriding the BG color to anything other than white will cause Android's elevation to fail
- // backgroundColor={Colors.red30}
- centerV
- centerH={locked}
- paddingH-page
- >
-
- {!locked && }
-
- {item.text}
-
- {!locked && }
-
-
- );
- },
- [selectedItems, toggleItemSelection]);
-
- return (
-
- {renderHeader('Sortable List', {'margin-10': true})}
-
-
-
-
-
-
-
-
- );
-};
-
-export default SortableListScreen;
-const styles = StyleSheet.create({
- itemContainer: {
- height: 52,
- borderColor: Colors.$outlineDefault,
- borderBottomWidth: 1
- },
- selectedItemContainer: {
- borderLeftColor: Colors.$outlinePrimary,
- borderLeftWidth: 5
- }
-});
diff --git a/demo/src/screens/componentScreens/StackAggregatorScreen.tsx b/demo/src/screens/componentScreens/StackAggregatorScreen.tsx
deleted file mode 100644
index e122872aff..0000000000
--- a/demo/src/screens/componentScreens/StackAggregatorScreen.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {Colors, View, Text, Button, StackAggregator} from 'react-native-ui-lib';
-
-const TEXTS = [
- 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.',
- 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.',
- 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of the printing and typesetting industry.',
- 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of the printing and typesetting industry.'
-];
-
-export default class StackAggregatorScreen extends Component {
- state = {
- contents: TEXTS,
- collapsed: true
- };
-
- onItemPress = (index: number) => {
- console.warn('item pressed: ', index);
- };
-
- onPress = (index: number) => {
- console.warn('item\'s button pressed: ', index);
- };
-
- refreshItems = () => {
- const newItems = _.clone(this.state.contents);
- newItems.push('New Item');
- this.setState({contents: newItems});
- };
-
- toggleCollapsed = () => {
- this.setState({collapsed: !this.state.collapsed});
- };
-
- renderItem = (_: string, index: number) => {
- return (
-
- this.onPress(index)}/>
- {this.state.contents[index]}
-
- );
- };
-
- render() {
- const {collapsed} = this.state;
-
- return (
-
-
-
-
-
-
- Thu, 10 Dec, 11:29
-
-
- {_.map(this.state.contents, (item, index) => {
- return this.renderItem(item, index);
- })}
-
-
-
- Thu, 11 Dec, 13:03
-
-
- {_.map(this.state.contents, (item, index) => {
- return this.renderItem(item, index);
- })}
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/StepperScreen.tsx b/demo/src/screens/componentScreens/StepperScreen.tsx
deleted file mode 100644
index d75f00c75c..0000000000
--- a/demo/src/screens/componentScreens/StepperScreen.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, Stepper} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class StepperScreen extends Component {
- state = {
- stepperValue: 1
- };
-
- stepperProps = {
- minValue: 0,
- maxValue: 3,
- value: 1
- };
-
- onValueChange = (value: number, _?: string) => {
- this.setState({stepperValue: value});
- };
-
- render() {
- const {stepperValue} = this.state;
-
- return (
-
-
- Stepper
-
-
-
-
-
- Default
-
-
-
-
-
-
- Disabled
-
-
-
-
-
-
- Step (0.5)
-
-
-
-
-
-
- Small
-
-
-
-
-
-
-
- Custom
-
-
-
-
-
- Stepper value: {stepperValue}
-
-
- Initial value: {this.stepperProps.value}
-
-
- Min value: {this.stepperProps.minValue}
-
-
- Max value: {this.stepperProps.maxValue}
-
-
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/SwitchScreen.tsx b/demo/src/screens/componentScreens/SwitchScreen.tsx
deleted file mode 100644
index 74cd2ad064..0000000000
--- a/demo/src/screens/componentScreens/SwitchScreen.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, {Component} from 'react';
-import {Text, View, Switch, Colors} from 'react-native-ui-lib'; //eslint-disable-line
-
-
-class SwitchScreen extends Component {
- state = {
- value1: true,
- value2: false,
- value3: true,
- value4: false,
- value5: false,
- };
-
- render() {
- return (
-
-
- this.setState({value1})} style={{marginBottom: 20}}/>
- this.setState({value2})}
- style={{marginBottom: 20}}
- />
- this.setState({value3})}
- style={{marginBottom: 20}}
- />
- this.setState({value4})}
- style={{marginBottom: 20}}
- />
-
- Disabled:
- this.setState({value5})}
- style={{marginRight: 10}}
- />
- this.setState({value5})}
- />
-
-
-
- Switch
-
-
- );
- }
-}
-
-export default SwitchScreen;
diff --git a/demo/src/screens/componentScreens/TabControllerScreen/index.tsx b/demo/src/screens/componentScreens/TabControllerScreen/index.tsx
deleted file mode 100644
index d97d7f26c2..0000000000
--- a/demo/src/screens/componentScreens/TabControllerScreen/index.tsx
+++ /dev/null
@@ -1,236 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ActivityIndicator, StyleSheet} from 'react-native';
-import {
- Assets,
- TabController,
- Colors,
- View,
- Text,
- Button,
- TabControllerItemProps,
- TabControllerImperativeMethods
-} from 'react-native-ui-lib';
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-
-import Tab1 from './tab1';
-import Tab2 from './tab2';
-import Tab3 from './tab3';
-
-const TABS = ['Home', 'Posts', 'Reviews', 'Videos', 'Photos', 'Events', 'About', 'Community', 'Groups', 'Offers'];
-
-interface State {
- asCarousel: boolean;
- centerSelected: boolean;
- fewItems: boolean;
- initialIndex: number;
- selectedIndex: number;
- key: string | number;
- items: TabControllerItemProps[];
-}
-
-class TabControllerScreen extends Component<{}, State> {
- constructor(props: {}) {
- super(props);
- this.state = {
- asCarousel: true,
- centerSelected: false,
- fewItems: false,
- initialIndex: 0,
- selectedIndex: 0,
- key: Date.now(),
- items: this.generateTabItems(false)
- };
- }
- tabController = React.createRef();
-
- generateTabItems = (fewItems = this.state.fewItems): TabControllerItemProps[] => {
- // @ts-expect-error
- const items: TabControllerItemProps[] = _.flow(tabs => _.take(tabs, fewItems ? 3 : TABS.length),
- (tabs: TabControllerItemProps[]) =>
- _.map(tabs, (tab: TabControllerItemProps, index: number) => ({
- label: tab,
- key: tab,
- icon: index === 2 ? Assets.icons.demo.dashboard : undefined,
- badge: index === 5 ? {label: '2'} : undefined,
- leadingAccessory: index === 3 ? {Assets.emojis.movie_camera} : undefined,
- trailingAccessory: index === 4 ? {Assets.emojis.camera} : undefined
- })))(TABS);
-
- const addItem: TabControllerItemProps & {key: string} = {
- icon: Assets.icons.demo.add,
- key: 'add',
- ignore: true,
- width: 60,
- onPress: this.onAddItem
- };
-
- return fewItems ? items : [...items, addItem];
- };
-
- componentDidMount() {
- // this.slow();
- }
-
- slow() {
- setTimeout(() => {
- _.times(5000, () => {
- console.log('slow log');
- });
-
- this.slow();
- }, 10);
- }
-
- setTab = () => {
- this.tabController.current?.setTab(2);
- };
-
- onAddItem = () => {
- const {items} = this.state;
- let newItems = items.slice(0, -1) as TabControllerItemProps[];
- newItems = [...newItems, {label: `New Item # ${newItems.length + 1}`}, items[items.length - 1]];
- this.setState({items: newItems});
- };
-
- toggleItemsCount = () => {
- const {fewItems} = this.state;
- const items = this.generateTabItems(!fewItems);
- this.setState({fewItems: !fewItems, items, key: Date.now()});
- };
-
- toggleCarouselMode = () => {
- this.setState({
- asCarousel: !this.state.asCarousel,
- key: this.state.asCarousel ? 'asCarousel' : 'staticPages'
- });
- };
-
- toggleCenterSelected = () => {
- const {fewItems, centerSelected} = this.state;
- this.setState({
- items: this.generateTabItems(fewItems),
- centerSelected: !centerSelected,
- key: Date.now()
- });
- };
-
- onChangeIndex = (selectedIndex: number) => {
- this.setState({selectedIndex});
- };
-
- renderLoadingPage() {
- return (
-
-
-
- Loading
-
-
- );
- }
-
- renderTabPages() {
- const {asCarousel, fewItems} = this.state;
- const Container = asCarousel ? TabController.PageCarousel : View;
- const containerProps = asCarousel ? {} : {flex: true};
- return (
-
-
-
-
-
-
-
-
-
-
-
- {!fewItems &&
- _.map(_.takeRight(TABS, TABS.length - 3), (title, index) => {
- return (
-
-
- {title}
-
-
- );
- })}
-
- );
- }
-
- render() {
- const {key, initialIndex, asCarousel, centerSelected, fewItems, items} = this.state;
- return (
-
-
-
- {this.renderTabPages()}
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default gestureHandlerRootHOC(TabControllerScreen);
-
-const styles = StyleSheet.create({
- labelStyle: {
- fontSize: 16
- },
- selectedLabelStyle: {
- fontSize: 16
- }
-});
diff --git a/demo/src/screens/componentScreens/TabControllerScreen/tab1.tsx b/demo/src/screens/componentScreens/TabControllerScreen/tab1.tsx
deleted file mode 100644
index 6bbe9d8879..0000000000
--- a/demo/src/screens/componentScreens/TabControllerScreen/tab1.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {View, Text, Image, Assets, Button} from 'react-native-ui-lib';
-
-class Tab1 extends Component {
- state = {};
- render() {
- return (
-
-
-
- Home
-
-
-
-
-
- );
- }
-}
-
-export default Tab1;
diff --git a/demo/src/screens/componentScreens/TabControllerScreen/tab2.tsx b/demo/src/screens/componentScreens/TabControllerScreen/tab2.tsx
deleted file mode 100644
index 09ab3bde14..0000000000
--- a/demo/src/screens/componentScreens/TabControllerScreen/tab2.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {View, Text, Image} from 'react-native-ui-lib';
-
-class Tab2 extends Component {
- state = {
- loading: true
- };
-
- componentDidMount() {
- setTimeout(() => {
- this.setState({loading: false});
- }, 1200);
- }
-
- render() {
- const {loading} = this.state;
- return (
-
-
- {loading ? 'Loading...' : ' Posts'}
-
- );
- }
-}
-
-export default Tab2;
diff --git a/demo/src/screens/componentScreens/TabControllerScreen/tab3.tsx b/demo/src/screens/componentScreens/TabControllerScreen/tab3.tsx
deleted file mode 100644
index 0509aab97d..0000000000
--- a/demo/src/screens/componentScreens/TabControllerScreen/tab3.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import _ from 'lodash';
-import {Card, Avatar, View, Text} from 'react-native-ui-lib';
-
-class Tab2 extends Component {
- state = {
- counter: 0,
- loading: true
- };
-
- componentDidMount() {
- setTimeout(() => {
- this.setState({loading: false});
- }, 1200);
-
- /* Uncomment to test TabPage freeze functionality when the page lose focus */
- // setInterval(() => {
- // this.setState({counter: this.state.counter + 1});
- // }, 1000);
- }
-
- componentDidUpdate() {
- /* Uncomment to test TabPage freeze functionality when the page lose focus */
- // if (this.state.counter % 3 === 0) {
- // console.warn('freeze counter', this.state.counter);
- // }
- }
-
- slow(iterations = 10) {
- if (iterations === 0) {
- return;
- }
-
- setTimeout(() => {
- _.times(5000, () => {
- console.log('slow log');
- });
-
- this.slow(iterations - 1);
- }, 10);
- }
-
- render() {
- const {loading} = this.state;
-
- return (
-
-
- Reviews
-
- {loading && (
-
- Loading...
-
- )}
-
- {!loading &&
- _.times(20, index => {
- return (
-
-
-
- {index}
-
-
- );
- })}
-
-
- );
- }
-}
-
-export default Tab2;
diff --git a/demo/src/screens/componentScreens/TextFieldScreen.tsx b/demo/src/screens/componentScreens/TextFieldScreen.tsx
deleted file mode 100644
index afedaca764..0000000000
--- a/demo/src/screens/componentScreens/TextFieldScreen.tsx
+++ /dev/null
@@ -1,539 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView, ActivityIndicator} from 'react-native';
-import {
- Assets,
- Colors,
- Spacings,
- View,
- Text,
- Button,
- Keyboard,
- TextField,
- TextFieldRef,
- FieldContextType,
- TextFieldProps,
- SegmentedControl,
- Icon
-} from 'react-native-ui-lib';
-const {KeyboardAwareInsetsView} = Keyboard;
-
-const {loadDemoConfigurations} = require('../../../src/configurations.js');
-loadDemoConfigurations();
-
-const priceFormatter = Intl.NumberFormat('en-US');
-
-export default class TextFieldScreen extends Component {
- input = React.createRef();
- input2 = React.createRef();
- input3 = React.createRef();
- inputWithValidation = React.createRef();
-
- state = {
- errorPosition: TextField.validationMessagePositions.BOTTOM,
- isDisabled: false,
- isReadonly: false,
- value: 'Initial Value',
- isSearching: false,
- preset: undefined,
- price: '',
- editable: false
- };
-
- componentDidMount() {
- this.input.current?.focus();
- }
-
- resetFieldValue = () => {
- this.input2.current?.clear();
- };
-
- renderDefaultExample() {
- return (
- <>
-
- Default
-
-
-
- >
- );
- }
-
- renderPresetExample() {
- return (
- <>
-
-
- Presets
-
-
-
-
-
-
-
- >
- );
- }
-
- renderReadonlyExample() {
- const {editable, preset} = this.state;
-
- return (
- <>
-
-
- Disabled vs Readonly
-
-
-
-
-
-
-
-
- >
- );
- }
-
- renderPlaceholdersExample() {
- return (
- <>
-
- Static vs Floating Placeholder
-
-
-
-
-
-
- >
- );
- }
-
- renderHintExample() {
- return (
- <>
-
- Hint vs HelperText
-
-
-
-
-
-
- >
- );
- }
-
- renderTrailingAccessory() {
- const {isSearching} = this.state;
-
- if (isSearching) {
- return ;
- } else {
- return (
- {
- this.setState({isSearching: true});
- setTimeout(() => {
- this.setState({isSearching: false});
- }, 1200);
- }}
- />
- );
- }
- }
-
- renderAccessoriesExample() {
- return (
- <>
-
- Accessories
-
-
- Trailing Accessory:
-
-
- Kg.
-
- }
- preset={this.state.preset}
- />
-
- Leading Accessory:
-
- Https://
-
- }
- preset={this.state.preset}
- />
- >
- );
- }
-
- onChangeIndexValidation = (index: number) => {
- this.setState({errorPosition: index === 0 ?
- TextField.validationMessagePositions.BOTTOM : TextField.validationMessagePositions.TOP});
- };
-
- renderValidationExample() {
- const {errorPosition, preset, value} = this.state;
-
- return (
- <>
-
- Validation
-
- Error Position:
-
-
-
-
- this.setState({value})}
- label="Email"
- placeholder="Enter email"
- enableErrors
- validationMessage={['Email is required', 'Email is invalid']}
- // validationMessageStyle={Typography.text90R}
- validationMessagePosition={errorPosition}
- validate={['required', 'email']}
- onChangeValidity={(isValid: boolean) => console.warn('validity changed:', isValid, Date.now())}
- validateOnChange
- // validateOnStart
- // validateOnBlur
- preset={preset}
- />
-
- }
- preset={preset}
- maxLength={20}
- showCharCounter
- />
- {
- this.inputWithValidation.current?.validate?.();
- }}
- />
-
- >
- );
- }
-
- onChangeIndexColors = (index: number) => {
- let readonly, disabled = false;
-
- switch (index) {
- case 0:
- this.input3.current?.blur();
- this.input3.current?.clear();
- break;
- case 1:
- this.input3.current?.focus();
- break;
- case 2:
- this.input3.current?.clear();
- this.input3.current?.validate();
- break;
- case 3:
- readonly = true;
- break;
- case 4:
- disabled = true;
- break;
- default:
- break;
- }
- this.setState({isReadonly: readonly, isDisabled: disabled});
- };
-
- renderStateColorsExample() {
- const {isReadonly, isDisabled, preset} = this.state;
-
- return (
- <>
-
-
-
- Colors By State
-
-
-
-
-
-
- >
- );
- }
-
- onChangeIndexFieldStyle = (index: number) => {
- this.setState({preset: index === 0 ? 'underline' : 'outline'});
- };
-
- onChangeIndexEditable = (index: number) => {
- this.setState({editable: index === 1});
- };
-
- getDynamicFieldStyle = (context: FieldContextType, props: TextFieldProps) => {
- let color = Colors.$outlineNeutral;
-
- if (context?.isFocused) {
- color = Colors.$outlinePrimary;
- }
- if ((context?.hasValue && context?.isValid === false) ||
- (context?.failingValidatorIndex !== undefined && context?.isMandatory && !context?.hasValue)) {
- color = Colors.$outlineDanger;
- }
- if (context?.hasValue && context?.isValid && context?.isFocused) {
- color = Colors.$textSuccess;
- }
- if (context?.disabled) {
- color = Colors.$outlineDisabled;
- }
- if (context?.readonly) {
- color = Colors.$outlineNeutralHeavy;
- }
-
- return props?.preset === TextField.presets.UNDERLINE ? {borderBottomColor: color} : {borderColor: color};
- };
-
- renderDynamicFieldExample() {
- const {preset} = this.state;
-
- return (
- <>
-
- Dynamic Field Style
-
-
-
- >
- );
- }
-
- renderCharCounterExample() {
- return (
- <>
-
- Char Counter
-
-
- {Assets.emojis.grapes} {Assets.emojis.melon} {Assets.emojis.banana}}
- charCounterStyle={{color: Colors.$textGeneral}}
- maxLength={20}
- preset={this.state.preset}
- />
- >
- );
- }
-
- renderClearButtonExample() {
- return (
- <>
-
- Clear Button
-
-
- this.setState({value})}
- trailingAccessory={}
- // multiline
- preset={this.state.preset}
- />
- >
- );
- }
-
- renderFormatterExample() {
- const {price, preset} = this.state;
-
- return (
- <>
-
- Formatter
-
-
- this.setState({price: value})}
- label="Price"
- placeholder="Enter price"
- validate={'number'}
- validationMessage="Invalid price"
- // @ts-expect-error
- formatter={value => (isNaN(value) ? value : priceFormatter.format(Number(value)))}
- leadingAccessory={$ }
- preset={preset}
- />
- >
- );
- }
-
- renderCustomAlignmentExample() {
- const {preset, errorPosition} = this.state;
-
- return (
- <>
-
- Custom Alignments
-
-
- Centered:
- }
- validate={'required'}
- validationMessage={'This field is required'}
- validateOnChange
- validationMessagePosition={errorPosition}
- preset={preset}
- />
-
- Inline:
-
-
-
- :
-
-
-
- >
- );
- }
-
- render() {
- return (
-
-
- TextField
-
- {this.renderDefaultExample()}
- {this.renderPresetExample()}
- {this.renderReadonlyExample()}
- {this.renderPlaceholdersExample()}
- {this.renderHintExample()}
- {this.renderValidationExample()}
- {this.renderClearButtonExample()}
- {this.renderCharCounterExample()}
- {this.renderAccessoriesExample()}
- {this.renderStateColorsExample()}
- {this.renderDynamicFieldExample()}
- {this.renderFormatterExample()}
- {this.renderCustomAlignmentExample()}
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/TextScreen.tsx b/demo/src/screens/componentScreens/TextScreen.tsx
deleted file mode 100644
index 7a4a2bbff9..0000000000
--- a/demo/src/screens/componentScreens/TextScreen.tsx
+++ /dev/null
@@ -1,139 +0,0 @@
-import React, {Component} from 'react';
-import {Alert, Animated, ScrollView} from 'react-native';
-import {View, Text, Colors} from 'react-native-ui-lib';
-
-class TextScreen extends Component {
- private toggle = false;
- private animatedValue = new Animated.Value(0);
-
- animate = () => {
- this.toggle = !this.toggle;
- Animated.timing(this.animatedValue, {
- toValue: Number(this.toggle),
- duration: 300,
- useNativeDriver: true
- }).start();
- };
-
- renderDivider() {
- return ;
- }
-
- render() {
- return (
-
-
-
-
- Text
-
-
- Modifiers
-
-
- Use your color (red30, blue20, grey40...) or typography (text40, text70M, text70BO, text100L...) presets
- directly as modifiers
-
-
- text60
- red20
-
- blue bold text
-
-
- BIG TITLE
-
-
-
- flex
- flex-2
- flex-3
-
-
-
- {this.renderDivider()}
-
-
-
- Transformations
-
-
- Center Text
-
-
- uppercase
-
-
- underline
-
-
- {this.renderDivider()}
-
-
-
- Highlight String
-
-
- Dancing in The Dark
-
-
- Dancing in The Dark
-
-
- Dancing in The Dark
-
-
- Dancing in The Dark
-
- Alert.alert('Dancing is pressed!'),
- style: {color: Colors.blue10, backgroundColor: Colors.green50}
- }}
- highlightStyle={{color: Colors.green30}}
- >
- Dancing in The Dark
-
- Alert.alert('Dancing is pressed!'),
- style: {color: Colors.blue10, backgroundColor: Colors.green50}
- },
- {
- string: 'laugh',
- onPress: () => Alert.alert('laugh is pressed!'),
- style: {color: Colors.red50, textDecorationLine: 'underline', textDecorationColor: Colors.blue30}
- },
- {
- string: 'more',
- onPress: () => Alert.alert('more is pressed!')
- }
- ]}
- highlightStyle={{color: Colors.green30}}
- >
- Dancing in The Dark, laughing drinking and more
-
-
- {this.renderDivider()}
-
-
- Animated Text (press)
-
-
-
-
- );
- }
-}
-
-export default TextScreen;
diff --git a/demo/src/screens/componentScreens/TimelineScreen.tsx b/demo/src/screens/componentScreens/TimelineScreen.tsx
deleted file mode 100644
index 97db0bb232..0000000000
--- a/demo/src/screens/componentScreens/TimelineScreen.tsx
+++ /dev/null
@@ -1,170 +0,0 @@
-import React, {useCallback, useRef, useState} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Assets, Colors, Timeline, View, Card, Text, Button} from 'react-native-ui-lib';
-
-const contents = [
- 'CURRENT (default) state with dashed line.\nAligned to title',
- 'SUCCESS state with label.',
- 'ERROR state with icon.',
- 'Custom color with icon and outline.\nAligned to title',
- 'Icon without background.',
- 'NEXT state with outline.',
- 'NEXT state with circle point and entry point.'
-];
-
-const TimelineScreen = () => {
- const [anchorIndex, setAnchorIndex] = useState(0);
- const [expand, setExpand] = useState(false);
- const anchor = useRef();
-
- const onPress = useCallback(() => {
- setAnchorIndex(anchorIndex === 0 ? 1 : 0);
- }, [anchorIndex]);
-
- const onPressExpand = useCallback(() => {
- setExpand(!expand);
- }, [expand]);
-
- const renderExtraContent = () => {
- return (
-
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of
- the printing and typesetting industry
-
-
- );
- };
-
- const renderContent = (index = 0, anchorRef?: any) => {
- return (
-
-
- Step {index + 1}
-
-
- {contents[index]}
-
-
-
- {expand && renderExtraContent()}
-
-
- );
- };
-
- return (
- <>
-
-
- Timeline
-
-
-
-
-
- {renderContent(0, anchorIndex === 0 ? anchor : undefined)}
-
-
- {renderContent(1, anchorIndex === 1 ? anchor : undefined)}
-
-
-
- {renderContent(2)}
-
-
- {renderContent(3)}
-
-
- {renderContent(4)}
-
-
- {renderContent(5)}
-
-
-
- {renderContent(6)}
-
-
- >
- );
-};
-
-export default TimelineScreen;
-
-const styles = StyleSheet.create({
- container: {
- paddingBottom: 20
- }
-});
diff --git a/demo/src/screens/componentScreens/ToastsScreen.js b/demo/src/screens/componentScreens/ToastsScreen.js
deleted file mode 100644
index 9c932febba..0000000000
--- a/demo/src/screens/componentScreens/ToastsScreen.js
+++ /dev/null
@@ -1,206 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {Assets, Colors, View, Button, Text, Icon, TouchableOpacity, Toast} from 'react-native-ui-lib';
-
-
-const colors = [Colors.green30, Colors.red30, Colors.violet30];
-const shareIcon = require('../../assets/icons/share.png');
-const plusIcon = require('../../assets/icons/plus.png');
-const settingsIcon = require('../../assets/icons/settings.png');
-
-
-export default class ToastsScreen extends Component {
- constructor(props) {
- super(props);
-
- this.state = {
- showToast: false,
- showTopToast: false,
- showCustomToast: false,
- selectedColor: 'none',
- showLoader: false,
- showDismiss: false,
- showContent: false
- };
- }
-
- renderColors() {
- return (
-
- {_.map(['none', ...colors], (color, index) => {
- const isSelected = color === this.state.selectedColor;
- const backgroundColor = color === 'none' ? undefined : color;
- return (
- this.setState({selectedColor: color})}>
-
- {color === 'none' && }
-
-
- );
- })}
-
- );
- }
-
- renderAboveToast = () => {
- if (this.state.showContent) {
- return (
-
-
-
- );
- }
- };
-
- renderBelowToast = () => {
- if (this.state.showContent) {
- return (
-
- Objects may be closer than they appear
-
- );
- }
- };
-
- renderCustomContent = () => {
- const {selectedColor} = this.state;
- const backgroundColor = selectedColor === 'none' ? undefined : selectedColor;
-
- return (
-
-
- This is a custom content
-
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry
- standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to
- make a type specimen book.
-
-
- );
- };
-
- dismissTopToast = () => {
- this.setState({showTopToast: false});
- }
-
- dismissBottomToast = () => {
- this.setState({showToast: false});
- }
-
- dismissCustomToast = () => {
- this.setState({showCustomToast: false});
- }
-
- render() {
- const {showToast, showTopToast, showCustomToast, selectedColor, showLoader, showDismiss} = this.state;
- const backgroundColor = selectedColor === 'none' ? undefined : selectedColor;
-
- return (
-
- console.log('dismiss')}}
- showLoader={showLoader}
- />
- console.log('undo')}}
- showLoader={showLoader}
- />
-
- {this.renderCustomContent()}
-
-
-
-
- Toggle Toast
-
-
- this.setState({showTopToast: !showTopToast})}
- marginR-10
- />
- this.setState({showToast: !showToast, showCustomToast: false})}
- marginR-10
- />
- this.setState({showCustomToast: !showCustomToast, showToast: false})}
- />
-
-
- Toast Background Color
-
- {this.renderColors()}
-
- this.setState({showLoader: !showLoader, showDismiss: false})}
- marginR-10
- />
- this.setState({showLoader: false, showDismiss: !showDismiss})}
- />
-
-
- this.setState({showContent: !this.state.showContent})}
- />
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {},
- color: {
- width: 30,
- height: 30,
- borderRadius: 15,
- marginLeft: 5
- },
- selected: {
- borderWidth: 2,
- borderColor: Colors.grey10
- }
-});
diff --git a/demo/src/screens/componentScreens/TouchableOpacityScreen.js b/demo/src/screens/componentScreens/TouchableOpacityScreen.js
deleted file mode 100644
index 96052962ef..0000000000
--- a/demo/src/screens/componentScreens/TouchableOpacityScreen.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import React, {Component} from 'react';
-import {View, Text, TouchableOpacity} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class TouchableOpacityScreen extends Component {
- state = {
- count: 0
- };
-
- count() {
- this.setState({
- count: this.state.count + 1
- });
- }
-
- render() {
- return (
-
-
-
- TouchableOpacity with support for throttling.
- In this example, throttleTime is set to 1200
-
- this.count()} ref={element => (this.example = element)}>
- Click Me!
-
-
- {this.state.count}
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/TourScreen.js b/demo/src/screens/componentScreens/TourScreen.js
deleted file mode 100644
index f8d77789ff..0000000000
--- a/demo/src/screens/componentScreens/TourScreen.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import React, {Component} from 'react';
-import {Colors, View, Text, Button, Assets, Tour} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class TourScreen extends Component {
- state = {};
-
- componentDidMount() {
- this.setState({
- showButtonTour: true,
- });
-
- setTimeout(() => {
- this.setState({
- showButtonTour: false,
- });
- }, 4000);
- }
-
- render() {
- return (
-
- Hellow
- this.setState({showButtonTour: false})}
- >
- (this.target = r)} onLayout2={() => this.saveLayout()}>
- this.setState({showButtonTour: true})} />
-
-
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's
- standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to
- make a type specimen book.
-
-
- this.setState({showIconTour: false})}
- >
-
- this.setState({showIconTour: true})} />
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/componentScreens/ViewScreen.js b/demo/src/screens/componentScreens/ViewScreen.js
deleted file mode 100644
index c476d0bd47..0000000000
--- a/demo/src/screens/componentScreens/ViewScreen.js
+++ /dev/null
@@ -1,84 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {View, Text} from 'react-native-ui-lib';
-import _ from 'lodash';
-import {renderBooleanOption, renderRadioGroup, renderSliderOption, renderColorOption} from '../ExampleScreenPresenter';
-
-const ALIGNMENTS = {
- top: 'top',
- bottom: 'bottom',
- left: 'left',
- right: 'right',
- center: 'center',
- centerv: 'centerV',
- centerh: 'centerH',
- spread: 'spread',
- none: null
-};
-
-const POSITIONS = {
- abs: 'abs',
- absF: 'absF',
- absL: 'absL',
- absR: 'absR',
- absB: 'absB',
- abV: 'absV',
- absH: 'absH',
- none: null
-};
-
-class ViewScreen extends Component {
- state = {
- useRow: false,
- shouldFlex: false,
- borderRadius: 20,
- padding: 0,
- margin: 0,
- alignment: null,
- position: null
- };
-
- render() {
- const {useRow, shouldFlex, borderRadius, padding, margin, alignment, position} = this.state;
- const childOptions = {
- flex: shouldFlex,
- width: shouldFlex || _.includes(['absF', 'absH'], position) ? undefined : 50,
- height: shouldFlex || _.includes(['absF', 'absV'], position) ? undefined : 50,
- [position]: true
- };
- const parentOptions = {
- row: useRow,
- [`br${borderRadius}`]: true,
- [`padding-${padding}`]: true,
- [`margin-${margin}`]: true,
- [alignment]: true
- };
-
- return (
-
-
- View
-
-
-
-
-
-
-
-
-
- {renderBooleanOption.call(this, 'Row (parent)', 'useRow')}
- {renderBooleanOption.call(this, 'Flex (child)', 'shouldFlex')}
- {renderSliderOption.call(this, 'BorderRadius(brXX)', 'borderRadius', {step: 10, min: 0, max: 60, initial: 20})}
- {renderSliderOption.call(this, 'Padding(padding-XX)', 'padding', {step: 4, min: 0, max: 40})}
- {renderSliderOption.call(this, 'Margin(margin-XX)', 'margin', {step: 4, min: 0, max: 40})}
- {renderRadioGroup.call(this, 'Alignment (parent)', 'alignment', ALIGNMENTS, {isRow: true})}
- {renderRadioGroup.call(this, 'Position (child)', 'position', POSITIONS, {isRow: true})}
-
-
-
- );
- }
-}
-
-export default ViewScreen;
diff --git a/demo/src/screens/componentScreens/WheelPickerScreen.tsx b/demo/src/screens/componentScreens/WheelPickerScreen.tsx
deleted file mode 100644
index 6b4f33b01c..0000000000
--- a/demo/src/screens/componentScreens/WheelPickerScreen.tsx
+++ /dev/null
@@ -1,103 +0,0 @@
-import _ from 'lodash';
-import React, {useCallback, useState} from 'react';
-import {View, Text, Incubator, WheelPicker, WheelPickerAlign, Colors, Typography, Button} from 'react-native-ui-lib';
-
-const monthItems = _.map([
- 'January',
- 'February',
- 'March',
- 'April',
- 'May',
- 'June',
- 'July',
- 'August',
- 'September',
- 'October',
- 'November',
- 'December'
-],
-item => ({label: item, value: item, align: WheelPickerAlign.RIGHT}));
-
-const yearItems = _.times(2050, i => i)
- .reverse()
- .map(item => ({label: `${item}`, value: item}));
-const dayItems = _.times(31, i => i + 1).map(day => ({label: `${day}`, value: day}));
-
-export default () => {
- const [showDialog, setShowDialog] = useState(false);
- const [yearsValue, setYearsValue] = useState(2022);
-
- const updateYearsInitialValue = useCallback((increaseYears: boolean) => {
- increaseYears ? setYearsValue(Math.min(yearsValue + 1, 2049)) : setYearsValue(Math.max(yearsValue - 1, 0));
- },
- [yearsValue]);
-
- const onChange = useCallback((value: number | string) => {
- setYearsValue(value as number);
- }, []);
-
- const onPickDaysPress = useCallback(() => {
- setShowDialog(true);
- }, []);
-
- const onDialogDismissed = useCallback(() => {
- setShowDialog(false);
- }, []);
-
- return (
-
- Wheel Picker
-
-
-
- Months
-
-
-
-
- Years
-
-
-
-
-
-
- Move the wheel programmatically
-
-
- (by updating the initialValue prop)
-
-
- updateYearsInitialValue(false)}/>
- updateYearsInitialValue(true)}/>
-
-
-
-
- Days
-
-
-
-
-
-
- );
-};
diff --git a/demo/src/screens/componentScreens/WithScrollEnablerScreen/AutoLockFlatList.tsx b/demo/src/screens/componentScreens/WithScrollEnablerScreen/AutoLockFlatList.tsx
deleted file mode 100644
index 76f310f8bc..0000000000
--- a/demo/src/screens/componentScreens/WithScrollEnablerScreen/AutoLockFlatList.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import _ from 'lodash';
-import React, {memo, useCallback} from 'react';
-// eslint-disable-next-line no-unused-vars
-import {FlatList, StyleSheet, LayoutChangeEvent} from 'react-native';
-import {
- Colors,
- Text,
- View,
- withScrollEnabler,
- // eslint-disable-next-line no-unused-vars
- WithScrollEnablerProps
-} from 'react-native-ui-lib';
-
-export type AutoLockScrollViewProps = WithScrollEnablerProps & {
- horizontal?: boolean;
- numberOfItems: number;
- onContentSizeChange: (contentWidth: number, contentHeight: number) => void;
- onLayout: (event: LayoutChangeEvent) => void;
-};
-
-const WithScrollEnabler = (props: AutoLockScrollViewProps) => {
- const numberOfItems = props.numberOfItems;
-
- const getData = useCallback((numberOfItems: number) => {
- return [...Array(numberOfItems).keys()];
- }, []);
-
- const keyExtractor = useCallback((item: number) => {
- return item.toString();
- }, []);
-
- const renderItem = useCallback(({index}: {index: number}) => {
- return (
-
- {index + 1}
-
- );
- }, []);
-
- const onContentSizeChange = useCallback(
- (contentWidth: number, contentHeight: number) => {
- props.onContentSizeChange?.(contentWidth, contentHeight);
- props.scrollEnablerProps.onContentSizeChange?.(contentWidth, contentHeight);
- },
- [props.onContentSizeChange, props.scrollEnablerProps.onContentSizeChange]
- );
-
- const onLayout = useCallback(
- (nativeEvent: LayoutChangeEvent) => {
- props.onLayout?.(nativeEvent);
- props.scrollEnablerProps.onLayout?.(nativeEvent);
- },
- [props.onLayout, props.scrollEnablerProps.onLayout]
- );
-
- return (
-
- );
-};
-
-export default memo(withScrollEnabler(WithScrollEnabler));
-
-const styles = StyleSheet.create({
- flatList: {
- height: 240
- },
- flatListContainer: {
- alignItems: 'center'
- },
- item: {
- width: 100,
- height: 100,
- margin: 9,
- backgroundColor: Colors.grey40,
- alignItems: 'center',
- justifyContent: 'center'
- }
-});
diff --git a/demo/src/screens/componentScreens/WithScrollEnablerScreen/AutoLockScrollView.tsx b/demo/src/screens/componentScreens/WithScrollEnablerScreen/AutoLockScrollView.tsx
deleted file mode 100644
index 03843f3e11..0000000000
--- a/demo/src/screens/componentScreens/WithScrollEnablerScreen/AutoLockScrollView.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import _ from 'lodash';
-import React, {memo, useCallback} from 'react';
-// eslint-disable-next-line no-unused-vars
-import {ScrollView, StyleSheet, LayoutChangeEvent} from 'react-native';
-import {
- Colors,
- Text,
- View,
- withScrollEnabler,
- // eslint-disable-next-line no-unused-vars
- WithScrollEnablerProps
-} from 'react-native-ui-lib';
-
-export type AutoLockScrollViewProps = WithScrollEnablerProps & {
- horizontal?: boolean;
- numberOfItems: number;
- onContentSizeChange: (contentWidth: number, contentHeight: number) => void;
- onLayout: (event: LayoutChangeEvent) => void;
-};
-
-const WithScrollEnabler = (props: AutoLockScrollViewProps) => {
- const numberOfItems = props.numberOfItems;
- const renderItem = useCallback((index: number) => {
- return (
-
- {index + 1}
-
- );
- }, []);
-
- const onContentSizeChange = useCallback(
- (contentWidth: number, contentHeight: number) => {
- props.onContentSizeChange?.(contentWidth, contentHeight);
- props.scrollEnablerProps.onContentSizeChange?.(contentWidth, contentHeight);
- },
- [props.onContentSizeChange, props.scrollEnablerProps.onContentSizeChange]
- );
-
- const onLayout = useCallback(
- (nativeEvent: LayoutChangeEvent) => {
- props.onLayout?.(nativeEvent);
- props.scrollEnablerProps.onLayout?.(nativeEvent);
- },
- [props.onLayout, props.scrollEnablerProps.onLayout]
- );
-
- return (
-
- {_.times(numberOfItems, renderItem)}
-
- );
-};
-
-export default memo(withScrollEnabler(WithScrollEnabler));
-
-const styles = StyleSheet.create({
- scrollView: {
- height: 240
- },
- scrollViewContainer: {
- alignItems: 'center'
- },
- item: {
- width: 100,
- height: 100,
- margin: 9,
- backgroundColor: Colors.grey40,
- alignItems: 'center',
- justifyContent: 'center'
- }
-});
diff --git a/demo/src/screens/componentScreens/WithScrollEnablerScreen/index.tsx b/demo/src/screens/componentScreens/WithScrollEnablerScreen/index.tsx
deleted file mode 100644
index 73aff1bf2c..0000000000
--- a/demo/src/screens/componentScreens/WithScrollEnablerScreen/index.tsx
+++ /dev/null
@@ -1,117 +0,0 @@
-import React, {Component} from 'react';
-// eslint-disable-next-line no-unused-vars
-import {LayoutChangeEvent} from 'react-native';
-import {Text, View} from 'react-native-ui-lib';
-import {
- renderHeader,
- renderBooleanOption,
- renderSliderOption
- // @ts-ignore
-} from '../../ExampleScreenPresenter';
-import AutoLockScrollView from './AutoLockScrollView';
-import AutoLockFlatList from './AutoLockFlatList';
-
-class WithScrollEnablerScreen extends Component {
- state = {
- isListView: false,
- isHorizontal: false,
- numberOfItems: 3,
- contentWidth: undefined,
- contentHeight: undefined,
- layoutWidth: undefined,
- layoutHeight: undefined
- };
-
- onContentSizeChange = (contentWidth: number, contentHeight: number) => {
- const {
- contentWidth: currentContentWidth,
- contentHeight: currentContentHeight
- } = this.state;
- if (
- currentContentWidth !== contentWidth ||
- currentContentHeight !== contentHeight
- ) {
- this.setState({contentWidth, contentHeight});
- }
- };
-
- onLayout = ({
- nativeEvent: {
- layout: {width, height}
- }
- }: LayoutChangeEvent) => {
- const {layoutWidth, layoutHeight} = this.state;
- if (width !== layoutWidth || height !== layoutHeight) {
- this.setState({layoutWidth: width, layoutHeight: height});
- }
- };
-
- renderList = () => {
- const {isListView, isHorizontal, numberOfItems} = this.state;
- const Container = isListView ? AutoLockScrollView : AutoLockFlatList;
-
- return (
-
- );
- };
-
- renderData = () => {
- const {contentWidth, contentHeight, layoutWidth, layoutHeight} = this.state;
- const contentText = `Content {width, height}: ${contentWidth}, ${contentHeight}`;
- const layoutText = `Layout {width, height}: ${layoutWidth}, ${layoutHeight}`;
- return (
- <>
- {contentText}
- {layoutText}
- >
- );
- };
-
- renderOptions = () => {
- const {isListView, isHorizontal} = this.state;
- const orientationText = isHorizontal ? 'Horizontal' : 'Vertical';
- const listTypeText = isListView ? 'ListView' : 'FlatList';
- return (
- <>
-
-
- {renderBooleanOption.call(this, orientationText, 'isHorizontal')}
-
-
- {renderBooleanOption.call(this, listTypeText, 'isListView')}
-
-
- {renderSliderOption.call(
- this,
- 'Number of items shown',
- 'numberOfItems',
- {
- min: 1,
- max: 5,
- step: 1,
- initial: 3
- }
- )}
- >
- );
- };
-
- render() {
- return (
-
- {renderHeader('withScrollEnabler', {'marginB-10': true})}
- {this.renderOptions()}
- {this.renderData()}
- {this.renderList()}
-
- );
- }
-}
-
-export default WithScrollEnablerScreen;
diff --git a/demo/src/screens/componentScreens/WithScrollReachedScreen.tsx b/demo/src/screens/componentScreens/WithScrollReachedScreen.tsx
deleted file mode 100644
index fd5b4ed1ed..0000000000
--- a/demo/src/screens/componentScreens/WithScrollReachedScreen.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {
- Colors,
- Text,
- View,
- Image,
- withScrollReached,
- // eslint-disable-next-line no-unused-vars
- WithScrollReachedProps
-} from 'react-native-ui-lib';
-// @ts-ignore
-import {renderHeader} from '../ExampleScreenPresenter';
-
-const FADE_OUT_HEIGHT = 100;
-const fadeImage = require('../../assets/images/FadeOut.png');
-class WithScrollReachedScreen extends Component {
- renderItem = (index: number) => {
- return (
-
- {index + 1}
-
- );
- };
-
- render() {
- return (
-
- {renderHeader('withScrollReached', {'marginB-10': true})}
-
-
- {_.times(3, this.renderItem)}
-
- {!this.props.scrollReachedProps.isScrollAtEnd && (
- // @ts-expect-error
-
- )}
-
-
- );
- }
-}
-
-export default withScrollReached(WithScrollReachedScreen);
-
-const styles = StyleSheet.create({
- scrollView: {
- height: 240
- },
- scrollViewContainer: {
- alignItems: 'center'
- },
- item: {
- width: 100,
- height: 100,
- margin: 9,
- backgroundColor: Colors.grey40,
- alignItems: 'center',
- justifyContent: 'center'
- },
- fadeOutImage: {
- position: 'absolute',
- bottom: 0,
- height: FADE_OUT_HEIGHT,
- width: '100%'
- }
-});
diff --git a/demo/src/screens/componentScreens/WizardScreen.tsx b/demo/src/screens/componentScreens/WizardScreen.tsx
deleted file mode 100644
index a4d787054b..0000000000
--- a/demo/src/screens/componentScreens/WizardScreen.tsx
+++ /dev/null
@@ -1,253 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {View, Button, Wizard, Text, RadioGroup, RadioButton, TextField, Toast} from 'react-native-ui-lib';
-
-const flavors = ['Chocolate', 'Vanilla'];
-const initialFlavor = flavors[0];
-const stepTypes = _.map(Wizard.States, state => {
- return {state} ;
-});
-
-interface State {
- activeIndex: number;
- completedStepIndex?: number;
- allTypesIndex: number;
- selectedFlavor: string;
- customerName?: string;
- toastMessage?: string;
-}
-
-export default class WizardScreen extends Component<{}, State> {
- state = {
- activeIndex: 0,
- completedStepIndex: undefined,
- allTypesIndex: 0,
- selectedFlavor: initialFlavor,
- customerName: undefined,
- toastMessage: undefined
- };
-
- onActiveIndexChanged = (activeIndex: number) => {
- this.setState({activeIndex});
- };
-
- onAllTypesIndexChanged = (allTypesIndex: number) => {
- this.setState({allTypesIndex});
- };
-
- closeToast = () => {
- setTimeout(() => {
- this.setState({toastMessage: undefined});
- }, 2000);
- };
-
- reset = () => {
- const {customerName, selectedFlavor} = this.state;
-
- this.setState({
- activeIndex: 0,
- completedStepIndex: undefined,
- selectedFlavor: initialFlavor,
- customerName: undefined,
- toastMessage: `${customerName}, you bought some ${selectedFlavor.toLowerCase()}`
- },
- this.closeToast);
- };
-
- goToPrevStep = () => {
- const {activeIndex: prevActiveIndex} = this.state;
- const activeIndex = prevActiveIndex === 0 ? 0 : prevActiveIndex - 1;
-
- this.setState({activeIndex});
- };
-
- renderPrevButton = () => {
- return (
-
- );
- };
-
- goToNextStep = () => {
- const {activeIndex: prevActiveIndex, completedStepIndex: prevCompletedStepIndex} = this.state;
- const reset = prevActiveIndex === 2;
- if (reset) {
- this.reset();
- return;
- }
-
- const activeIndex = prevActiveIndex + 1;
- let completedStepIndex: number | undefined = prevCompletedStepIndex;
- if (!prevCompletedStepIndex || prevCompletedStepIndex < prevActiveIndex) {
- completedStepIndex = prevActiveIndex;
- }
-
- if (activeIndex !== prevActiveIndex || completedStepIndex !== prevCompletedStepIndex) {
- this.setState({activeIndex, completedStepIndex});
- }
- };
-
- renderNextButton = (disabled?: boolean) => {
- const {activeIndex} = this.state;
- const label = activeIndex === 2 ? 'done & reset' : 'next';
-
- return (
-
- );
- };
-
- renderFlavorRadioButton = (index: number) => {
- const value = flavors[index];
- return 0} value={value} label={value}/>;
- };
-
- setSelectedFlavor = (selectedFlavor: string) => {
- this.setState({selectedFlavor});
- };
-
- renderSelectItems = () => {
- const {selectedFlavor} = this.state;
-
- return (
-
- Please select your purchase
-
-
- {this.renderFlavorRadioButton(0)}
- {this.renderFlavorRadioButton(1)}
-
-
- {this.renderNextButton()}
-
- );
- };
-
- onNameEntered = (customerName: string) => {
- this.setState({customerName});
- };
-
- renderCustomerDetails = () => {
- const {customerName} = this.state;
-
- return (
-
-
- {this.renderPrevButton()}
- {/* @ts-expect-error */}
- {this.renderNextButton(_.isNil(customerName) || customerName.trim().length === 0)}
-
- );
- };
-
- renderCheckout = () => {
- return (
-
- Complete the purchase
- {this.renderPrevButton()}
- {this.renderNextButton()}
-
- );
- };
-
- renderCurrentStep = () => {
- const {activeIndex} = this.state;
-
- switch (activeIndex) {
- case 0:
- default:
- return this.renderSelectItems();
- case 1:
- return this.renderCustomerDetails();
- case 2:
- return this.renderCheckout();
- }
- };
-
- getStepState(index: number) {
- const {activeIndex, completedStepIndex} = this.state;
- let state = Wizard.States.DISABLED;
- if (completedStepIndex && completedStepIndex > index - 1) {
- state = Wizard.States.COMPLETED;
- } else if (activeIndex === index || completedStepIndex === index - 1) {
- state = Wizard.States.ENABLED;
- }
-
- return state;
- }
-
- render() {
- const {activeIndex, allTypesIndex, toastMessage} = this.state;
-
- return (
-
-
-
-
-
-
-
-
- {this.renderCurrentStep()}
-
-
- All step types: (Wizard.States.X)
-
- {stepTypes}
-
-
- {_.map(Wizard.States, state => {
- return ;
- })}
-
-
- Wizard
-
-
-
- {!_.isNil(toastMessage) && }
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- scrollView: {
- flex: 1
- },
- container: {
- flex: 1
- },
- allTypes: {
- justifyContent: 'space-between'
- },
- stepContainer: {
- flex: 1,
- justifyContent: 'space-between',
- margin: 20
- }
-});
diff --git a/demo/src/screens/componentScreens/index.js b/demo/src/screens/componentScreens/index.js
deleted file mode 100644
index 3c764feeba..0000000000
--- a/demo/src/screens/componentScreens/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-
-export function registerScreens(registrar) {
-
- registrar('unicorn.components.ActionSheetScreen', () => require('./ActionSheetScreen').default);
- registrar('unicorn.components.ActionBarScreen', () => require('./ActionBarScreen').default);
- registrar('unicorn.components.AvatarsScreen', () => require('./AvatarsScreen').default);
- registrar('unicorn.components.AnimatedImageScreen', () => require('./AnimatedImageScreen').default);
- registrar('unicorn.components.ButtonsScreen', () => require('./ButtonsScreen').default);
- registrar('unicorn.components.BadgesScreen', () => require('./BadgesScreen').default);
- registrar('unicorn.components.CardsScreen', () => require('./CardsScreen').default);
- registrar('unicorn.animations.CardScannerScreen', () => require('../componentScreens/CardScannerScreen').default);
- registrar('unicorn.components.CarouselScreen', () => require('./CarouselScreen').default);
- registrar('unicorn.components.CarouselVerticalScreen', () => require('./CarouselVerticalScreen').default);
- registrar('unicorn.components.CheckboxScreen', () => require('./CheckboxScreen').default);
- registrar('unicorn.components.ChipScreen', () => require('./ChipScreen').default);
- registrar('unicorn.components.ChipsInputScreen', () => require('./ChipsInputScreen').default);
- registrar('unicorn.components.ColorPickerScreen', () => require('./ColorPickerScreen').default);
- registrar('unicorn.components.ColorSwatchScreen', () => require('./ColorSwatchScreen').default);
- registrar('unicorn.components.ConnectionStatusBar', () => require('./ConnectionStatusBarScreen').default);
- registrar('unicorn.components.DateTimePickerScreen', () => require('./DateTimePickerScreen').default);
- registrar('unicorn.components.DialogScreen', () => require('./DialogScreen').default);
- registrar('unicorn.components.DrawerScreen', () => require('./DrawerScreen').default);
- registrar('unicorn.components.ExpandableSectionScreen', () => require('./ExpandableSectionScreen').default);
- registrar('unicorn.components.FloatingButtonScreen', () => require('./FloatingButtonScreen').default);
- registrar('unicorn.components.HapticScreen', () => require('./HapticScreen').default);
- registrar('unicorn.components.HintsScreen', () => require('./HintsScreen').default);
- registrar('unicorn.components.IconScreen', () => require('./IconScreen').default);
- registrar('unicorn.components.ImageScreen', () => require('./ImageScreen').default);
- registrar('unicorn.components.GridListScreen', () => require('./GridListScreen').default);
- registrar('unicorn.components.GridViewScreen', () => require('./GridViewScreen').default);
- registrar('unicorn.components.KeyboardAwareScrollViewScreen', () => require('./KeyboardAwareScrollViewScreen').default);
- registrar('unicorn.components.MaskedInputScreen', () => require('./MaskedInputScreen').default);
- registrar('unicorn.components.MarqueeScreen', () => require('./MarqueeScreen').default);
- registrar('unicorn.components.NumberInputScreen', () => require('./NumberInputScreen').default);
- registrar('unicorn.components.OverlaysScreen', () => require('./OverlaysScreen').default);
- registrar('unicorn.components.PageControlScreen', () => require('./PageControlScreen').default);
- registrar('unicorn.components.PanDismissibleScreen', () => require('./PanDismissibleScreen').default);
- registrar('unicorn.components.PanListenerScreen', () => require('./PanListenerScreen').default);
- registrar('unicorn.components.PanResponderScreen', () => require('./PanResponderScreen').default);
- registrar('unicorn.components.PickerScreen', () => require('./PickerScreen').default);
- registrar('unicorn.animations.ProgressBarScreen', () => require('../componentScreens/ProgressBarScreen').default);
- registrar('unicorn.components.ProgressiveImageScreen', () => require('./ProgressiveImageScreen').default);
- registrar('unicorn.components.RadioButtonScreen', () => require('./RadioButtonScreen').default);
- registrar('unicorn.components.ScrollBarScreen', () => require('./ScrollBarScreen').default);
- registrar('unicorn.components.SectionsWheelPickerScreen', () => require('./SectionsWheelPickerScreen').default);
- registrar('unicorn.components.SegmentedControlScreen', () => require('./SegmentedControlScreen').default);
- registrar('unicorn.components.SharedTransitionScreen', () => require('./SharedTransitionScreen').default);
- registrar('unicorn.components.SkeletonViewScreen', () => require('./SkeletonViewScreen').default);
- registrar('unicorn.components.SliderScreen', () => require('./SliderScreen').default);
- registrar('unicorn.components.SortableGridListScreen', () => require('./SortableGridListScreen').default);
- registrar('unicorn.components.SortableListScreen', () => require('./SortableListScreen').default);
- registrar('unicorn.components.HorizontalSortableListScreen', () => require('./HorizontalSortableListScreen').default);
- registrar('unicorn.components.StackAggregatorScreen', () => require('./StackAggregatorScreen').default);
- registrar('unicorn.components.StepperScreen', () => require('./StepperScreen').default);
- registrar('unicorn.components.SwitchScreen', () => require('./SwitchScreen').default);
- registrar('unicorn.components.TabControllerScreen', () => require('./TabControllerScreen').default);
- registrar('unicorn.components.TextFieldScreen', () => require('./TextFieldScreen').default);
- registrar('unicorn.components.TextScreen', () => require('./TextScreen').default);
- registrar('unicorn.components.ToastsScreen', () => require('./ToastsScreen').default);
- registrar('unicorn.wrappers.TouchableOpacityScreen', () => require('./TouchableOpacityScreen').default);
- registrar('unicorn.components.TourScreen', () => require('./TourScreen').default);
- registrar('unicorn.components.ViewScreen', () => require('./ViewScreen').default);
- registrar('unicorn.components.WizardScreen', () => require('./WizardScreen').default);
- registrar('unicorn.components.WheelPickerScreen', () => gestureHandlerRootHOC(require('./WheelPickerScreen').default));
- // List Components
- registrar('unicorn.lists.BasicListScreen', () => require('./BasicListScreen').default);
- registrar('unicorn.lists.ContactsListScreen', () => require('./ContactsListScreen').default);
- registrar('unicorn.lists.ConversationListScreen', () => require('./ConversationListScreen').default);
- registrar('unicorn.components.TimelineScreen', () => require('./TimelineScreen').default);
- // Full Screen components
- registrar('unicorn.screens.EmptyStateScreen', () => require('./EmptyStateScreen').default);
- registrar('unicorn.components.FaderScreen', () => require('./FaderScreen').default);
- registrar('unicorn.components.FeatureHighlightScreen', () => require('./FeatureHighlightScreen').default);
- registrar('unicorn.screens.LoadingScreen', () => require('./LoadingScreen').default);
- registrar('unicorn.screens.ModalScreen', () => require('./ModalScreen').default);
- registrar('unicorn.components.WithScrollEnablerScreen', () => require('./WithScrollEnablerScreen').default);
- registrar('unicorn.components.WithScrollReachedScreen', () => require('./WithScrollReachedScreen').default);
-}
-
diff --git a/demo/src/screens/foundationScreens/BorderRadiusesScreen.js b/demo/src/screens/foundationScreens/BorderRadiusesScreen.js
deleted file mode 100644
index 6c148c7ea2..0000000000
--- a/demo/src/screens/foundationScreens/BorderRadiusesScreen.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {BorderRadiuses, View, Text, Typography, Colors} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class BorderRadiusesScreen extends Component {
- render() {
- return (
-
-
- Border Radius
-
-
- {_.map(BorderRadiuses, (value, key) => {
- return (
-
-
-
- {key}
-
-
- ({value})
-
-
-
-
- );
- })}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- paddingVertical: 25,
- alignItems: 'center',
- backgroundColor: Colors.grey80,
- },
- labelContainer: {
- position: 'absolute',
- top: 5,
- left: 5,
- },
-});
diff --git a/demo/src/screens/foundationScreens/ColorsScreen.js b/demo/src/screens/foundationScreens/ColorsScreen.js
deleted file mode 100644
index c7f040d7d5..0000000000
--- a/demo/src/screens/foundationScreens/ColorsScreen.js
+++ /dev/null
@@ -1,437 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {
- Colors,
- Spacings,
- Assets,
- View,
- Text,
- TouchableOpacity,
- Icon,
- Button,
- TextField,
- Incubator,
- ColorPalette,
- ColorPickerDialog
-} from 'react-native-ui-lib';
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-const {Toast} = Incubator;
-
-const SYSTEM_COLORS = ['grey', 'violet', 'blue', 'green', 'red', 'yellow', 'orange'];
-const INITIAL_COLOR = Colors.white;
-const BASE_PALETTE = ['1', '5', '10', '20', '30', '40', '50', '60', '70', '80'];
-const TOKENS_CATEGORIES = ['Background', 'Text', 'Icon', 'Outline', 'System'];
-const TOKENS_ARRAYS = {};
-TOKENS_CATEGORIES.map(category => (TOKENS_ARRAYS[category] = []));
-
-for (const key in Colors) {
- if (key.startsWith('$background')) {
- TOKENS_ARRAYS.Background.push(key);
- } else if (key.startsWith('$text')) {
- TOKENS_ARRAYS.Text.push(key);
- } else if (key.startsWith('$icon')) {
- TOKENS_ARRAYS.Icon.push(key);
- } else if (key.startsWith('$outline')) {
- TOKENS_ARRAYS.Outline.push(key);
- } else if (key.startsWith('$black') || key.startsWith('$white')) {
- TOKENS_ARRAYS.System.push(key);
- }
-}
-
-class ColorsScreen extends Component {
- state = {
- selectedColor: INITIAL_COLOR,
- searchValue: '',
- filteredTokens: [],
- showToast: false,
- message: undefined,
- currentColor: Colors.$textPrimary,
- showPicker: false,
- isDefaultOptions: false,
- adjustLightness: false,
- adjustSaturation: false,
- addDarkestTints: true,
- avoidReverseOnDark: true
- };
-
- scrollViewRef = React.createRef();
- searchRef = React.createRef();
-
- scrollToTop = () => {
- this?.scrollViewRef?.current?.scrollTo({x: 0, y: 0, animated: true});
- };
-
- toggleToastVisibility = () => {
- this.setState({showToast: true});
- };
-
- dismissToast = () => {
- this.setState({showToast: false});
- };
-
- onTokenPress = value => {
- const {extraColors = []} = this.props;
- const systemColorName = Colors.getSystemColorByHex(Colors[value].toString(), [
- ...SYSTEM_COLORS,
- ...extraColors,
- 'white',
- 'black'
- ]);
- const message = systemColorName
- ? `${value}\n ${Colors[value].toString()}\n ${systemColorName}`
- : `${value}\n ${Colors[value].toString()}`;
- this.setState({
- message
- });
- this.toggleToastVisibility();
- };
-
- onChangeText = _.throttle(searchValue => {
- this.setState({searchValue}, () => {
- this.filterTokens();
- });
- },
- 500,
- {leading: false, trailing: true});
-
- filterToken = token => token.toString().toLowerCase().includes(this.state.searchValue.toLowerCase());
-
- filterTokens = () => {
- const {searchValue} = this.state;
- const filteredTokens = [];
- if (!searchValue) {
- this.scrollToTop();
- } else {
- for (category of TOKENS_CATEGORIES) {
- const categoryTokens = TOKENS_ARRAYS[category].filter(token => {
- return this.filterToken(token) && token.toString();
- });
- filteredTokens.push(...categoryTokens);
- }
- }
- this.setState({filteredTokens});
- this.scrollToTop();
- };
-
- updateSearch = _.throttle(searchValue => {
- this.setState({searchValue});
- }, 800);
-
- clearSearch = () => {
- this.updateSearch(undefined);
- this.searchRef?.clear();
- };
-
- closeSearchBox = () => {
- this.searchRef?.blur();
- };
-
- onSearchBoxBlur = () => {
- this.closeSearchBox();
- };
-
- renderSearch = () => {
- const {searchValue} = this.state;
- return (
- (this.searchRef = r)}
- placeholder="Search tokens by category"
- onChangeText={this.onChangeText}
- onBlur={this.onSearchBoxBlur}
- containerStyle={styles.searchContainer}
- fieldStyle={styles.searchField}
- enableErrors={false}
- hideUnderline
- floatingPlaceholder={false}
- text70
- leadingAccessory={
-
-
-
- }
- trailingAccessory={
- searchValue ? (
-
- ) : undefined
- }
- />
- );
- };
-
- renderToast = () => {
- const {showToast, message} = this.state;
-
- return (
-
- );
- };
-
- renderTints(color) {
- const colorName = color.charAt(0).toUpperCase() + color.slice(1);
- return (
-
- {BASE_PALETTE.map((colorKey, index) => {
- const colorProp = {[`bg-${color}${colorKey}`]: true};
- const textColor = colorKey < 40 ? Colors.white : Colors.black;
- return (
-
-
- {'AAA'}
-
-
-
- {colorName + ' ' + colorKey}
-
-
- {Colors[`${color}${colorKey}`]}
-
-
-
- );
- })}
-
- );
- }
-
- renderColors(colors, title) {
- return (
-
-
- {title}
-
-
- {_.map(colors, (color, index) => {
- return (
-
-
- {this.renderTints(color)}
-
-
- );
- })}
-
- );
- }
-
- renderDesignTokens() {
- const {searchValue, filteredTokens} = this.state;
- return (
-
-
- DESIGN TOKENS
-
-
- {searchValue ? (
- filteredTokens.length ? (
- filteredTokens.map(token => {
- return this.renderToken(token);
- })
- ) : (
- No Results!
- )
- ) : (
- TOKENS_CATEGORIES.map(category => {
- return this.renderCategoryToken(category);
- })
- )}
-
-
- );
- }
-
- renderCategoryToken(category) {
- return (
-
-
- {category}
-
- {TOKENS_ARRAYS[category].map((token, index) => {
- return this.renderToken(token, index);
- })}
-
- );
- }
-
- renderToken(token, index) {
- return (
-
- this.onTokenPress(token)}>
-
-
- {token}
-
-
-
-
-
- );
- }
-
- /** Color Palette */
-
- showColorPicker = () => {
- this.setState({showPicker: true});
- };
-
- onValueChange = color => {
- this.setState({currentColor: color});
- };
-
- onSubmit = color => {
- this.setState({currentColor: color});
- };
-
- onDismiss = () => {
- this.setState({showPicker: false});
- };
-
- setDefaultOptions = () => {
- const designKitsOptions = {
- adjustLightness: false,
- adjustSaturation: false,
- addDarkestTints: true,
- avoidReverseOnDark: true
- };
- const defaultOptions = {
- adjustLightness: true,
- adjustSaturation: true,
- addDarkestTints: false,
- avoidReverseOnDark: false
- };
- if (this.state.isDefaultOptions) {
- this.setState({...designKitsOptions, isDefaultOptions: false});
- } else {
- this.setState({...defaultOptions, isDefaultOptions: true});
- }
- };
-
- renderColorPicker = () => {
- const {showPicker, currentColor} = this.state;
- return (
-
- );
- };
-
- renderOptions = () => {
- return (
-
- {renderBooleanOption.call(this, 'adjustLightness', 'adjustLightness')}
- {renderBooleanOption.call(this, 'adjustSaturation', 'adjustSaturation')}
- {renderBooleanOption.call(this, 'addDarkestTints', 'addDarkestTints')}
- {renderBooleanOption.call(this, 'avoidReverseOnDark', 'avoidReverseOnDark')}
-
-
- );
- };
-
- renderColorPalette = () => {
- const {currentColor, adjustLightness, adjustSaturation, addDarkestTints, avoidReverseOnDark} = this.state;
- const paletteOptions = {adjustLightness, adjustSaturation, addDarkestTints, avoidReverseOnDark};
- const palette = Colors.generateColorPalette(currentColor, paletteOptions);
- return (
-
- {this.renderOptions()}
-
-
-
-
-
- );
- };
-
- renderColorPaletteExample = () => {
- return (
- <>
-
- Generate Color Palette
-
- {this.renderColorPalette()}
- {this.renderColorPicker()}
- >
- );
- };
-
- render() {
- return (
- <>
- {this.renderSearch()}
-
- {this.renderDesignTokens()}
- {this.renderColors(SYSTEM_COLORS, 'SYSTEM COLORS')}
- {this.renderColorPaletteExample()}
-
- {this.renderToast()}
- >
- );
- }
-}
-
-const styles = StyleSheet.create({
- searchContainer: {
- padding: Spacings.s1,
- paddingBottom: 0
- },
- searchField: {
- padding: Spacings.s3,
- borderRadius: 8
- },
- colorBox: {
- width: 60,
- height: 60,
- borderWidth: 1,
- borderRadius: 30
- },
- swatchStyle: {
- width: 18,
- height: 40,
- borderRadius: 10,
- marginLeft: 4,
- marginRight: 4
- }
-});
-
-export default ColorsScreen;
diff --git a/demo/src/screens/foundationScreens/DarkModeScreen.tsx b/demo/src/screens/foundationScreens/DarkModeScreen.tsx
deleted file mode 100644
index c86c3022f9..0000000000
--- a/demo/src/screens/foundationScreens/DarkModeScreen.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {View, Text, Colors, Constants, SegmentedControl, SchemeType} from 'react-native-ui-lib';
-
-const SCHEME_TYPES: {label: string; value: SchemeType}[] = [
- {label: 'device (default)', value: 'default'},
- {label: 'dark', value: 'dark'},
- {label: 'light', value: 'light'}
-];
-
-const DEVICE_DARK_MODE_MESSAGE = Constants.isIOS
- ? 'Change to dark mode in simulator by pressing Cmd+Shift+A'
- : 'Change to dark mode';
-const MANUAL_DARK_MODE_MESSAGE = 'Setting the scheme manually will ignore device settings';
-
-class DarkModeScreen extends Component {
- state = {
- selectedSchemeType: 'default'
- };
-
- changeSchemeType = (index: number) => {
- Colors.setScheme(SCHEME_TYPES[index].value);
- this.setState({selectedSchemeType: SCHEME_TYPES[index].value});
- };
-
- render() {
- const {selectedSchemeType} = this.state;
- const message = selectedSchemeType === 'default' ? DEVICE_DARK_MODE_MESSAGE : MANUAL_DARK_MODE_MESSAGE;
-
- return (
-
-
- Dark Mode
-
-
-
-
- {message}
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- mountain: {
- position: 'absolute',
- width: 1000,
- height: 1000,
- borderRadius: 500
- },
- mountainForeground: {
- left: -500,
- bottom: -800
- },
- mountainBackground: {
- right: -500,
- bottom: -850
- },
- moonOrSun: {
- position: 'absolute',
- right: 50,
- bottom: 350,
- width: 100,
- height: 100,
- borderRadius: 50
- }
-});
-
-export default DarkModeScreen;
diff --git a/demo/src/screens/foundationScreens/RTLScreen.tsx b/demo/src/screens/foundationScreens/RTLScreen.tsx
deleted file mode 100644
index cbbbca9e69..0000000000
--- a/demo/src/screens/foundationScreens/RTLScreen.tsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import React, {useState} from 'react';
-import {Colors, View, Text, Icon, TextField, Picker, Checkbox, Incubator, ListItem, Avatar, Button, Toast} from 'react-native-ui-lib';
-
-const pickerItems = [
- {value: 0, label: 'לא'},
- {value: 1, label: 'כן'}
-];
-const chevronIcon = require('../../assets/icons/chevronRight.png');
-
-const RTLScreen = () => {
- const [checkboxValue, setCheckboxValue] = useState(false);
- const [sliderValue, setSliderValue] = useState(0);
-
- return (
-
-
- מסך דוגמא בעברית
- בדיקה לטקסט רץ בעברית שהוא מיושר כמו שצריך לימין
- Toggle RTL/LTR from the settings screen
-
-
-
-
-
- setCheckboxValue(value)}
- />
-
-
- setSliderValue(value)}
- value={sliderValue}
- minimumValue={0}
- maximumValue={100}
- step={1}
- containerStyle={{flex: 1}} // only for Slider in row
- />
- {sliderValue}
-
-
- console.warn('list item press')}
- marginT-20
- >
-
-
-
-
-
-
- איש כלשהו
-
-
- מחובר/ת
-
-
-
-
- console.warn('list button press')}/>
-
-
-
-
-
-
- כאן
-
-
-
-
-
-
- );
-};
-
-export default RTLScreen;
diff --git a/demo/src/screens/foundationScreens/ShadowsScreen.js b/demo/src/screens/foundationScreens/ShadowsScreen.js
deleted file mode 100644
index 560f7989b8..0000000000
--- a/demo/src/screens/foundationScreens/ShadowsScreen.js
+++ /dev/null
@@ -1,120 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView, View, Text, StyleSheet, Dimensions} from 'react-native';
-import {Colors, Shadows} from 'react-native-ui-lib'; // eslint-disable-line
-
-const {height} = Dimensions.get('window');
-const SHAPE_DIAMETER = 80;
-
-const shadowsOverWhiteBkg = _.reduce(Shadows,
- (results, value, key) => {
- if (key.startsWith('white')) {
- results[key] = value;
- }
- return results;
- },
- {});
-
-const shadowsOverGreyBkg = _.reduce(Shadows,
- (results, value, key) => {
- if (key.startsWith('grey')) {
- results[key] = value;
- }
- return results;
- },
- {});
-
-export default class ShadowsScreen extends Component {
- renderShadows(shadowsList) {
- return []
- .concat(_.map(shadowsList, (value, key) => this.renderCircleWithShadow(value, key)))
- .concat(_.map(shadowsList, (value, key) => this.renderSquareWithShadow(value, key)));
- }
-
- renderCircleWithShadow(shadow, name) {
- return (
-
-
- {name}
-
-
- );
- }
-
- renderSquareWithShadow(shadow, name) {
- return (
-
-
- {name}
-
-
- );
- }
-
- render() {
- return (
-
-
-
-
-
-
-
- {this.renderShadows(shadowsOverGreyBkg)}
- {this.renderShadows(shadowsOverWhiteBkg)}
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flexDirection: 'row',
- flex: 1,
- justifyContent: 'space-between'
- },
- subContainer: {
- flex: 1,
- flexDirection: 'column',
- minHeight: 0.8 * height,
- alignItems: 'center',
- justifyContent: 'space-between'
- },
- shadowCircle: {
- width: SHAPE_DIAMETER,
- height: SHAPE_DIAMETER,
- borderRadius: SHAPE_DIAMETER / 2,
- backgroundColor: 'white',
- margin: 40,
- justifyContent: 'center',
- alignItems: 'center'
- },
- innerCircle: {
- width: SHAPE_DIAMETER,
- height: SHAPE_DIAMETER,
- borderRadius: SHAPE_DIAMETER / 2,
- backgroundColor: 'white',
- justifyContent: 'center'
- },
- shadowSquare: {
- width: SHAPE_DIAMETER,
- height: SHAPE_DIAMETER,
- borderRadius: 6,
- backgroundColor: 'white',
- margin: 40,
- justifyContent: 'center'
- },
- innerSquare: {
- width: SHAPE_DIAMETER,
- height: SHAPE_DIAMETER,
- borderRadius: 6,
- backgroundColor: 'white',
- justifyContent: 'center'
- },
- shadowLabel: {
- fontSize: 9,
- textAlign: 'center'
- }
-});
diff --git a/demo/src/screens/foundationScreens/SpacingsScreen.js b/demo/src/screens/foundationScreens/SpacingsScreen.js
deleted file mode 100644
index bff94c8925..0000000000
--- a/demo/src/screens/foundationScreens/SpacingsScreen.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {View, Text, Spacings} from 'react-native-ui-lib'; //eslint-disable-line
-
-
-export default class SpacingsScreen extends Component {
-
- render() {
- return (
-
-
- Spacings
-
- {_.map(Spacings, (value, key) => {
- if (!_.isNumber(value)) {
- return;
- }
-
- return (
-
-
- {key}
- {value}
-
-
-
- );
- })}
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/foundationScreens/TypographyScreen.js b/demo/src/screens/foundationScreens/TypographyScreen.js
deleted file mode 100644
index bda6316dbd..0000000000
--- a/demo/src/screens/foundationScreens/TypographyScreen.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import _ from 'lodash';
-import PropTypes from 'prop-types';
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {TabController, Colors, Typography, View, Text} from 'react-native-ui-lib';
-
-const WEIGHTS = ['Thin', 'Light', 'Default', 'Regular', 'Medium', 'Bold', 'Heavy', 'Black'];
-
-export default class TypographyScreen extends Component {
- static propTypes = {
- color: PropTypes.string
- };
-
- static defaultProps = {
- color: Colors.grey10
- };
-
- getWeightSuffix(weight) {
- if (weight === 'Default') {
- return '';
- }
- if (['Bold', 'Black'].includes(weight)) {
- return weight.substr(0, 2).toUpperCase();
- } else {
- return weight[0];
- }
- }
-
- renderPage(index = 0) {
- const {color} = this.props;
- const weight = WEIGHTS[index];
- const weightSuffix = this.getWeightSuffix(weight);
- return (
-
-
- {_.map([10, 20, 30, 40, 50, 60, 65, 70, 80, 90, 100], fontKey => {
- const modifiers = {};
- const fontName = `text${fontKey}${weightSuffix}`;
- const fontPreset = Typography[fontName];
- if (fontPreset) {
- modifiers[fontName] = true;
- return (
-
-
- text{fontKey}
- {weightSuffix}
-
-
- fontSize: {fontPreset.fontSize}
-
-
- );
- }
- })}
-
-
- );
- }
-
- renderPages() {
- return (
-
- {_.map(WEIGHTS, (item, index) => {
- return (
-
- {this.renderPage(index)}
-
- );
- })}
-
- );
- }
-
- render() {
- return (
- ({label: item, key: item}))}>
-
- {this.renderPages()}
-
- );
- }
-}
diff --git a/demo/src/screens/foundationScreens/index.js b/demo/src/screens/foundationScreens/index.js
deleted file mode 100644
index 06bb615a5b..0000000000
--- a/demo/src/screens/foundationScreens/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export function registerScreens(registrar) {
- registrar('unicorn.style.BorderRadiusesScreen', () => require('./BorderRadiusesScreen').default);
- registrar('unicorn.style.ColorsScreen', () => require('./ColorsScreen').default);
- registrar('unicorn.style.DarkModeScreen', () => require('./DarkModeScreen').default);
- registrar('unicorn.style.TypographyScreen', () => require('./TypographyScreen').default);
- registrar('unicorn.style.ShadowsScreen', () => require('./ShadowsScreen').default);
- registrar('unicorn.style.SpacingsScreen', () => require('./SpacingsScreen').default);
- registrar('unicorn.style.RTLScreen', () => require('./RTLScreen').default);
-}
diff --git a/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/MockData.ts b/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/MockData.ts
deleted file mode 100644
index 889107d221..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/MockData.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Note: to generate new data run calendar:createMocks and update createCalendarMockData script
-export const data = [{"id":"eCQLXxP5am","start":1514876400000,"end":1514880000000},{"id":"oavq6eJ9ky","start":1514890800000,"end":1514894400000},{"id":"oOuqa32V41","start":1514905200000,"end":1514907000000},{"id":"sOpwOkbc1d","start":1515049200000,"end":1515052800000},{"id":"9dIlPkqFr6","start":1515063600000,"end":1515065400000},{"id":"IuJAzNinkf","start":1515074400000,"end":1515078000000},{"id":"4q2j7cChAd","start":1515085200000,"end":1515088800000},{"id":"Vsu5gJK7u6","start":1515135600000,"end":1515139200000},{"id":"TmVgT2HNvM","start":1515150000000,"end":1515153600000},{"id":"Mbai7B3V8i","start":1515164400000,"end":1515168000000},{"id":"9SFTeBExXC","start":1515481200000,"end":1515483000000},{"id":"KFZL1LHTty","start":1515492000000,"end":1515495600000},{"id":"B7M0tlo60x","start":1515506400000,"end":1515510000000},{"id":"rrwzIPwuBn","start":1515654000000,"end":1515657600000},{"id":"BDaeumkCKB","start":1515668400000,"end":1515672000000},{"id":"p5coTLlQiF","start":1515682800000,"end":1515686400000},{"id":"S6zJoMdv3o","start":1516172400000,"end":1516174200000},{"id":"hhXXgDVlcs","start":1516186800000,"end":1516188600000},{"id":"peRXkSZomW","start":1516201200000,"end":1516203000000},{"id":"gmp7w1dmNB","start":1516345200000,"end":1516347000000},{"id":"ogjmNLnbOB","start":1516359600000,"end":1516363200000},{"id":"fdeY0Ow0y9","start":1516374000000,"end":1516375800000},{"id":"fJh0yarAcg","start":1516690800000,"end":1516694400000},{"id":"UqrXefPuXM","start":1516705200000,"end":1516707000000},{"id":"WSAlRloxDh","start":1516719600000,"end":1516723200000},{"id":"f3S2vtruk3","start":1516863600000,"end":1516867200000},{"id":"Ehgdp8rGSJ","start":1516874400000,"end":1516878000000},{"id":"05Px0xlsBO","start":1516888800000,"end":1516892400000},{"id":"8IrXy7q297","start":1516950000000,"end":1516953600000},{"id":"gMOhjtZVcF","start":1516960800000,"end":1516962600000},{"id":"tbpDFkbrSL","start":1516971600000,"end":1516975200000},{"id":"yj4XAmUUDX","start":1516986000000,"end":1516987800000},{"id":"5idzfVx25P","start":1517382000000,"end":1517383800000},{"id":"cV5nCjLyx1","start":1517396400000,"end":1517398200000},{"id":"pKx7MI39nC","start":1517407200000,"end":1517409000000},{"id":"9ofiXgoxNx","start":1517468400000,"end":1517470200000},{"id":"FrJCYh6nlz","start":1517482800000,"end":1517484600000},{"id":"o8jpUycRfZ","start":1517497200000,"end":1517499000000},{"id":"PzB7sroPYk","start":1517554800000,"end":1517556600000},{"id":"v4rMFhXp9t","start":1517565600000,"end":1517569200000},{"id":"iIjFkKX9kF","start":1517576400000,"end":1517580000000},{"id":"Wz9tfb3yXk","start":1517590800000,"end":1517594400000},{"id":"BJRlIKjseK","start":1517900400000,"end":1517902200000},{"id":"eJmfIA0K7z","start":1517911200000,"end":1517914800000},{"id":"yhGJQwJhtE","start":1517925600000,"end":1517927400000},{"id":"mafJbh7Xqi","start":1517936400000,"end":1517940000000},{"id":"GhRXgZstgL","start":1517986800000,"end":1517988600000},{"id":"LJl9HoZ3g9","start":1517997600000,"end":1518001200000},{"id":"nPmAPRaI70","start":1518012000000,"end":1518015600000},{"id":"0CGZD3L3OW","start":1518073200000,"end":1518075000000},{"id":"5WjyqULrao","start":1518084000000,"end":1518085800000},{"id":"iHIi4zPFXl","start":1518098400000,"end":1518100200000},{"id":"jbwsWfB23h","start":1518109200000,"end":1518112800000},{"id":"tCofpu1ZOd","start":1518505200000,"end":1518507000000},{"id":"OZ0WZt7N2k","start":1518519600000,"end":1518521400000},{"id":"17B4HiTgG8","start":1518534000000,"end":1518535800000},{"id":"6Xxqzqb7cC","start":1518678000000,"end":1518681600000},{"id":"PHj91QowQp","start":1518688800000,"end":1518692400000},{"id":"uJh7bVhJhT","start":1518699600000,"end":1518703200000},{"id":"ZPpC4piMhy","start":1518714000000,"end":1518717600000},{"id":"Ud3zZGBRvt","start":1519110000000,"end":1519111800000},{"id":"SJ6SkBf2Gx","start":1519120800000,"end":1519124400000},{"id":"Lc0xf4G8tM","start":1519131600000,"end":1519135200000},{"id":"JP0yWTRJQb","start":1519142400000,"end":1519146000000},{"id":"U9v8MqLqQV","start":1519282800000,"end":1519286400000},{"id":"WabYZET6ZG","start":1519297200000,"end":1519299000000},{"id":"ZU8Nc2P9JW","start":1519308000000,"end":1519311600000},{"id":"9K9ueztKja","start":1519369200000,"end":1519371000000},{"id":"CCk4xpJHBi","start":1519380000000,"end":1519383600000},{"id":"f4da0STuRs","start":1519390800000,"end":1519394400000},{"id":"ZeejL65di1","start":1519405200000,"end":1519407000000},{"id":"bDkyIsyx3X","start":1519714800000,"end":1519718400000},{"id":"V7T8snjJXp","start":1519729200000,"end":1519731000000},{"id":"NfRNUBNGMI","start":1519740000000,"end":1519743600000},{"id":"4o8ASwvr8A","start":1519801200000,"end":1519804800000},{"id":"j9LKLTGbR4","start":1519815600000,"end":1519817400000},{"id":"spsKd6eagE","start":1519826400000,"end":1519830000000},{"id":"V3ucAzSbo0","start":1519837200000,"end":1519839000000},{"id":"pJmEBKG9iw","start":1519887600000,"end":1519889400000},{"id":"aA4g87w4jl","start":1519898400000,"end":1519902000000},{"id":"g3Z2Slz1iN","start":1519909200000,"end":1519911000000},{"id":"it0oItrvld","start":1519923600000,"end":1519925400000},{"id":"0srW5DoD6b","start":1519974000000,"end":1519977600000},{"id":"FG2VNscWp7","start":1519988400000,"end":1519992000000},{"id":"Uvs1NSYKzD","start":1520002800000,"end":1520006400000},{"id":"vwlJUaemza","start":1519887600000,"end":1519889400000},{"id":"wew5Fbv6lc","start":1519898400000,"end":1519902000000},{"id":"6I5Pbzt0a5","start":1519912800000,"end":1519914600000},{"id":"wZzj6QjFa7","start":1519923600000,"end":1519927200000},{"id":"e10CEKggFH","start":1520319600000,"end":1520321400000},{"id":"R9GAuzAstc","start":1520330400000,"end":1520332200000},{"id":"UJ4M6CtrkZ","start":1520341200000,"end":1520344800000},{"id":"kuqZuUTEvW","start":1520352000000,"end":1520355600000},{"id":"e28QHtJyyD","start":1520492400000,"end":1520496000000},{"id":"jpT7uhKaoY","start":1520503200000,"end":1520505000000},{"id":"GiCRGqAjLF","start":1520517600000,"end":1520521200000},{"id":"NAlH1BeNUX","start":1520578800000,"end":1520582400000},{"id":"IUwKGnoAdM","start":1520593200000,"end":1520596800000},{"id":"Onah2140CJ","start":1520604000000,"end":1520607600000},{"id":"8CsVrkURnV","start":1520614800000,"end":1520618400000},{"id":"Im4NzIHAgY","start":1521010800000,"end":1521014400000},{"id":"6Flck1a5ZJ","start":1521021600000,"end":1521025200000},{"id":"G6gSIM45RB","start":1521036000000,"end":1521037800000},{"id":"GoJ30dLrL3","start":1521046800000,"end":1521048600000},{"id":"iL7YVP4uLp","start":1521097200000,"end":1521100800000},{"id":"1pNWoyKYqd","start":1521111600000,"end":1521115200000},{"id":"ep0peDuhA5","start":1521122400000,"end":1521126000000},{"id":"ICgU94PLjF","start":1521183600000,"end":1521185400000},{"id":"V1kxVKoUk7","start":1521194400000,"end":1521196200000},{"id":"dXOJQraEuU","start":1521208800000,"end":1521212400000},{"id":"ay4pW7fM6Y","start":1521219600000,"end":1521223200000},{"id":"bk3TqIOluQ","start":1521615600000,"end":1521617400000},{"id":"GNkAkcTItm","start":1521630000000,"end":1521631800000},{"id":"0ar9jIitQr","start":1521640800000,"end":1521642600000},{"id":"48EU0DcjHV","start":1521651600000,"end":1521653400000},{"id":"f6sNvQNmDu","start":1521702000000,"end":1521705600000},{"id":"LdZZckcYRi","start":1521716400000,"end":1521720000000},{"id":"0F0bvnxcR2","start":1521727200000,"end":1521730800000},{"id":"oxlNAA063C","start":1521738000000,"end":1521739800000},{"id":"j97VcPf9P5","start":1522216800000,"end":1522218600000},{"id":"a8neEv1KN7","start":1522231200000,"end":1522233000000},{"id":"uzRNYS4rTE","start":1522245600000,"end":1522249200000},{"id":"OgqNgPnR1L","start":1522303200000,"end":1522305000000},{"id":"QO9RA8OwYg","start":1522317600000,"end":1522321200000},{"id":"q1FDmswjJe","start":1522328400000,"end":1522330200000},{"id":"qxteecOeKI","start":1522339200000,"end":1522342800000},{"id":"MwH5Vnvi7x","start":1522735200000,"end":1522737000000},{"id":"nDoY0h72Kv","start":1522749600000,"end":1522751400000},{"id":"rOKofKVfyP","start":1522764000000,"end":1522765800000},{"id":"CUyxlBNlR0","start":1522908000000,"end":1522909800000},{"id":"cj7gO4B0lW","start":1522918800000,"end":1522920600000},{"id":"pAVHYiP6Vv","start":1522933200000,"end":1522936800000},{"id":"EAan4JLuuM","start":1522944000000,"end":1522947600000},{"id":"q2QhSYjcN8","start":1523340000000,"end":1523341800000},{"id":"K9ICKMlPW3","start":1523354400000,"end":1523358000000},{"id":"1tXUT9jlle","start":1523365200000,"end":1523368800000},{"id":"BzGVsTqnvs","start":1523376000000,"end":1523379600000},{"id":"4HtegbiH9S","start":1523426400000,"end":1523430000000},{"id":"7B4K7GosE7","start":1523437200000,"end":1523439000000},{"id":"ezczFBI6bv","start":1523451600000,"end":1523453400000},{"id":"33ZFXHtX1p","start":1523512800000,"end":1523516400000},{"id":"UP4aBoeJjJ","start":1523523600000,"end":1523527200000},{"id":"1y2Mhctk7O","start":1523534400000,"end":1523538000000},{"id":"bTmLf9y86G","start":1523545200000,"end":1523548800000},{"id":"vzBvIPSdMY","start":1523944800000,"end":1523946600000},{"id":"cqoiAImi6W","start":1523959200000,"end":1523961000000},{"id":"CQBM7uh8d8","start":1523970000000,"end":1523973600000},{"id":"3qYaKqOx0u","start":1524031200000,"end":1524034800000},{"id":"KpSDcpHlQ5","start":1524042000000,"end":1524043800000},{"id":"aGWMpS1JuB","start":1524056400000,"end":1524058200000},{"id":"gcsXVtn2j3","start":1524067200000,"end":1524070800000},{"id":"iWi9124vaV","start":1524117600000,"end":1524119400000},{"id":"bWWsbsq1hz","start":1524128400000,"end":1524132000000},{"id":"1QMhf4ivQ9","start":1524142800000,"end":1524144600000},{"id":"ej1hw76bvG","start":1524204000000,"end":1524205800000},{"id":"0JtrU2DtNK","start":1524214800000,"end":1524218400000},{"id":"wkdjgElZ31","start":1524229200000,"end":1524231000000},{"id":"n2941y6rYv","start":1524240000000,"end":1524243600000},{"id":"hYaEFUITUH","start":1524636000000,"end":1524637800000},{"id":"0zgHZoFtem","start":1524646800000,"end":1524648600000},{"id":"TNW3mrOHmI","start":1524657600000,"end":1524661200000},{"id":"5I422BsPss","start":1524672000000,"end":1524675600000},{"id":"AOVIDqnyeY","start":1524808800000,"end":1524810600000},{"id":"pDThzG7EnB","start":1524819600000,"end":1524823200000},{"id":"rCP8p0aDAt","start":1524834000000,"end":1524837600000},{"id":"x9iN175Ojw","start":1524844800000,"end":1524846600000},{"id":"XLAHtmFuYr","start":1525154400000,"end":1525156200000},{"id":"EDyimWGPbz","start":1525165200000,"end":1525167000000},{"id":"k11W627O5r","start":1525176000000,"end":1525177800000},{"id":"k9AEdxKyUA","start":1525190400000,"end":1525194000000},{"id":"KmiKUnDlFm","start":1525154400000,"end":1525158000000},{"id":"kTBiAudCMa","start":1525165200000,"end":1525167000000},{"id":"IOhkfeGPUL","start":1525179600000,"end":1525183200000},{"id":"inbwzdTOa2","start":1525240800000,"end":1525242600000},{"id":"K1RTiqgE3X","start":1525251600000,"end":1525253400000},{"id":"iFRBeEC9uh","start":1525262400000,"end":1525266000000},{"id":"9lmX3rmriq","start":1525276800000,"end":1525280400000},{"id":"ARfMSYLDfs","start":1525327200000,"end":1525330800000},{"id":"WtHlkD2DWv","start":1525338000000,"end":1525339800000},{"id":"pQb2zZKmGg","start":1525352400000,"end":1525354200000},{"id":"sFShEJek8Q","start":1525363200000,"end":1525366800000},{"id":"1psd4AhuH8","start":1525413600000,"end":1525415400000},{"id":"UblN2wLMOA","start":1525424400000,"end":1525428000000},{"id":"cURYGgnlmQ","start":1525438800000,"end":1525442400000},{"id":"1IFPiYnodm","start":1525759200000,"end":1525761000000},{"id":"sTWRFhx7PV","start":1525770000000,"end":1525773600000},{"id":"pGyqeZrpEf","start":1525784400000,"end":1525788000000},{"id":"NxkoZ43Ttq","start":1525795200000,"end":1525797000000},{"id":"6AB7mF1VKL","start":1525845600000,"end":1525847400000},{"id":"xSoes210Yq","start":1525860000000,"end":1525861800000},{"id":"xuskvdq3Wq","start":1525874400000,"end":1525876200000},{"id":"NGW8042ouF","start":1526018400000,"end":1526022000000},{"id":"1JpWokiDc2","start":1526032800000,"end":1526036400000},{"id":"Ksim3Hgatd","start":1526043600000,"end":1526047200000},{"id":"oyUzyJgNfW","start":1526054400000,"end":1526058000000},{"id":"rflBpG6Kvt","start":1526364000000,"end":1526367600000},{"id":"xfSWxlrpwM","start":1526374800000,"end":1526378400000},{"id":"pWjK5JEcC9","start":1526389200000,"end":1526392800000},{"id":"5pp5qJtkbP","start":1526400000000,"end":1526403600000},{"id":"CbdbG1g2Ih","start":1526536800000,"end":1526538600000},{"id":"QwBAgkqHvs","start":1526547600000,"end":1526551200000},{"id":"uW5QW7j2q5","start":1526558400000,"end":1526562000000},{"id":"CACngipMMH","start":1526572800000,"end":1526576400000},{"id":"c4HXDcyZPr","start":1526623200000,"end":1526626800000},{"id":"SITwQYdNYl","start":1526634000000,"end":1526635800000},{"id":"GjSKp5vsfJ","start":1526644800000,"end":1526648400000},{"id":"EAjHLBKvIU","start":1526655600000,"end":1526659200000},{"id":"AxjlJ61wvm","start":1527055200000,"end":1527057000000},{"id":"tn2kHx6Gif","start":1527066000000,"end":1527069600000},{"id":"CVrP4loaOa","start":1527076800000,"end":1527078600000},{"id":"n5ZjP3W45H","start":1527087600000,"end":1527091200000},{"id":"5Zji77dS68","start":1527141600000,"end":1527143400000},{"id":"1O98CLKlwJ","start":1527152400000,"end":1527154200000},{"id":"QbgfYU8zQC","start":1527163200000,"end":1527166800000},{"id":"7Tw0BrCSiS","start":1527177600000,"end":1527179400000},{"id":"yRusaUalOY","start":1527660000000,"end":1527661800000},{"id":"7OhHIG0xjF","start":1527674400000,"end":1527676200000},{"id":"kLESJ69oEb","start":1527685200000,"end":1527687000000},{"id":"41MqHqgIo6","start":1527696000000,"end":1527697800000},{"id":"JbpcQur6g7","start":1527832800000,"end":1527834600000},{"id":"WJ64t3nUFp","start":1527847200000,"end":1527849000000},{"id":"1aPuTE3Sxh","start":1527861600000,"end":1527863400000},{"id":"9B0eHiHfu6","start":1528264800000,"end":1528266600000},{"id":"LlJdgDk0CL","start":1528279200000,"end":1528282800000},{"id":"LreqP9pkO1","start":1528290000000,"end":1528291800000},{"id":"bPWYULQ77d","start":1528351200000,"end":1528353000000},{"id":"xTTc4ZpJjg","start":1528365600000,"end":1528367400000},{"id":"wbkOE9drLG","start":1528376400000,"end":1528380000000},{"id":"q20XK3c5Qg","start":1528387200000,"end":1528389000000},{"id":"psgDtDoRmC","start":1528437600000,"end":1528439400000},{"id":"bEf3r6OiXH","start":1528452000000,"end":1528455600000},{"id":"2qlBZ7evz2","start":1528462800000,"end":1528464600000},{"id":"IKspRnpk2x","start":1528869600000,"end":1528873200000},{"id":"KWBfovNpq9","start":1528880400000,"end":1528882200000},{"id":"kAyf90rpUM","start":1528894800000,"end":1528896600000},{"id":"5vuST5s5iP","start":1528905600000,"end":1528907400000},{"id":"qyhkm4wno8","start":1529042400000,"end":1529046000000},{"id":"uvimI2dMty","start":1529053200000,"end":1529056800000},{"id":"qWDG33Wb5J","start":1529064000000,"end":1529067600000},{"id":"eaZubld1Um","start":1529074800000,"end":1529078400000},{"id":"tfsgOiDf9k","start":1529388000000,"end":1529391600000},{"id":"UJoBXwF8HO","start":1529398800000,"end":1529402400000},{"id":"jqhv9zt1s1","start":1529413200000,"end":1529415000000},{"id":"oGr3EugjTI","start":1529424000000,"end":1529425800000},{"id":"DlELzPMSLk","start":1529560800000,"end":1529562600000},{"id":"wnoMHjAia5","start":1529571600000,"end":1529573400000},{"id":"O5gOSAYYY7","start":1529582400000,"end":1529584200000},{"id":"rAmVQ17VT6","start":1529593200000,"end":1529595000000},{"id":"ysbRoAiMqm","start":1530079200000,"end":1530082800000},{"id":"LQdelhKswZ","start":1530093600000,"end":1530097200000},{"id":"NpJ2sDdAez","start":1530104400000,"end":1530106200000},{"id":"j6hNYF9hJA","start":1530252000000,"end":1530253800000},{"id":"Mwn7Kc5yM3","start":1530266400000,"end":1530270000000},{"id":"FNuXLqBL5k","start":1530277200000,"end":1530280800000},{"id":"OHwcMJe1wh","start":1530288000000,"end":1530289800000},{"id":"u9NfHXBOvS","start":1530684000000,"end":1530687600000},{"id":"ujgb8ie5hz","start":1530698400000,"end":1530702000000},{"id":"jzlwGBE94g","start":1530709200000,"end":1530712800000},{"id":"E8h6SGVj3V","start":1530856800000,"end":1530858600000},{"id":"0vJDg192EN","start":1530871200000,"end":1530874800000},{"id":"4BPqC0f5ID","start":1530885600000,"end":1530887400000},{"id":"260MkVPKO6","start":1531202400000,"end":1531206000000},{"id":"zpiNuRyttC","start":1531213200000,"end":1531215000000},{"id":"74eP4fPBk8","start":1531227600000,"end":1531229400000},{"id":"T33pn38OYe","start":1531238400000,"end":1531240200000},{"id":"UgwprwG1yk","start":1531375200000,"end":1531377000000},{"id":"YfMRsTVIU8","start":1531386000000,"end":1531387800000},{"id":"WQl3h8Rmt0","start":1531396800000,"end":1531400400000},{"id":"2PMshMY7SC","start":1531411200000,"end":1531414800000},{"id":"mrxQBzUhII","start":1531461600000,"end":1531465200000},{"id":"W4Vd5gPJX8","start":1531476000000,"end":1531477800000},{"id":"LHwpd08S0G","start":1531490400000,"end":1531494000000},{"id":"fWc8x4TqNt","start":1531807200000,"end":1531809000000},{"id":"PVcx7pG0eg","start":1531818000000,"end":1531821600000},{"id":"0Mol09Dr8y","start":1531832400000,"end":1531834200000},{"id":"JDWlftkDuf","start":1531893600000,"end":1531897200000},{"id":"fAWDukPWK9","start":1531904400000,"end":1531908000000},{"id":"bhhcp5vBXU","start":1531915200000,"end":1531917000000},{"id":"HCXYHEGWcR","start":1531929600000,"end":1531931400000},{"id":"CjAaAugRo6","start":1531980000000,"end":1531983600000},{"id":"yRta5rC1Ok","start":1531994400000,"end":1531998000000},{"id":"CWgUxyNGg8","start":1532005200000,"end":1532007000000},{"id":"tjMHkpVRme","start":1532016000000,"end":1532019600000},{"id":"OAoZyWRuOn","start":1532412000000,"end":1532415600000},{"id":"haVHUUb1a5","start":1532422800000,"end":1532424600000},{"id":"gxehXVwRVg","start":1532437200000,"end":1532439000000},{"id":"yVxck3XcYv","start":1532584800000,"end":1532588400000},{"id":"nRvOoLxVU5","start":1532595600000,"end":1532599200000},{"id":"qgshGtel3a","start":1532606400000,"end":1532610000000},{"id":"lj7kT8Obpp","start":1532617200000,"end":1532620800000},{"id":"zBwtkRgsvL","start":1533103200000,"end":1533105000000},{"id":"awk06gKynn","start":1533117600000,"end":1533121200000},{"id":"tsFq2pzSCX","start":1533132000000,"end":1533135600000},{"id":"zqcKVU3JwN","start":1533189600000,"end":1533193200000},{"id":"Q09R8FbH3t","start":1533204000000,"end":1533207600000},{"id":"fZhXfluSpT","start":1533218400000,"end":1533220200000},{"id":"15ViFraMl0","start":1533276000000,"end":1533277800000},{"id":"oqxGBapkty","start":1533290400000,"end":1533294000000},{"id":"YOGaF4Ha9s","start":1533301200000,"end":1533303000000},{"id":"j3gmVtMpRB","start":1533312000000,"end":1533315600000},{"id":"kCGZRi4Jw2","start":1533708000000,"end":1533711600000},{"id":"cB9Yn4XAVZ","start":1533722400000,"end":1533726000000},{"id":"FU0pLu1bFc","start":1533733200000,"end":1533736800000},{"id":"KUewEMs4tg","start":1533794400000,"end":1533796200000},{"id":"4peidL3GZq","start":1533808800000,"end":1533810600000},{"id":"kbwg2P2rQu","start":1533819600000,"end":1533821400000},{"id":"cxTadebXbb","start":1533830400000,"end":1533832200000},{"id":"GahroHd17Y","start":1533880800000,"end":1533884400000},{"id":"Lmd4ATXrSf","start":1533895200000,"end":1533897000000},{"id":"n9eTX6r31X","start":1533906000000,"end":1533907800000},{"id":"d8cuMB2FtA","start":1534312800000,"end":1534316400000},{"id":"oxBhxybnvv","start":1534323600000,"end":1534325400000},{"id":"qq3xxzLkBm","start":1534334400000,"end":1534338000000},{"id":"r9IHC8DHvZ","start":1534348800000,"end":1534350600000},{"id":"UegZnQg7KA","start":1534399200000,"end":1534402800000},{"id":"C8IBFITDCr","start":1534410000000,"end":1534411800000},{"id":"CmtnBNKHNs","start":1534420800000,"end":1534422600000},{"id":"UG28WgON3t","start":1534435200000,"end":1534438800000},{"id":"SVFCSQbNN9","start":1534831200000,"end":1534834800000},{"id":"Ve3XK8bBeg","start":1534845600000,"end":1534849200000},{"id":"rKmMZI7Rak","start":1534856400000,"end":1534860000000},{"id":"CT7ysVwN7E","start":1534867200000,"end":1534869000000},{"id":"2n3nmSVOHJ","start":1535004000000,"end":1535007600000},{"id":"xOU5F0o9Am","start":1535018400000,"end":1535022000000},{"id":"zuBEeNPO5M","start":1535032800000,"end":1535034600000},{"id":"GKiLYQrxPv","start":1535090400000,"end":1535092200000},{"id":"8KynHaEdeZ","start":1535104800000,"end":1535108400000},{"id":"KQ90VHbs3L","start":1535119200000,"end":1535121000000},{"id":"xtFWmkSyQo","start":1535522400000,"end":1535524200000},{"id":"QLDLP3CWYW","start":1535536800000,"end":1535538600000},{"id":"t47FhSEp9S","start":1535547600000,"end":1535549400000},{"id":"lKrzK3EyJe","start":1535695200000,"end":1535698800000},{"id":"FlIBiOS8yK","start":1535706000000,"end":1535707800000},{"id":"swAxdj7fuR","start":1535716800000,"end":1535720400000},{"id":"hQ6WvoLGFG","start":1535727600000,"end":1535729400000},{"id":"r8gr3ODTY4","start":1536127200000,"end":1536129000000},{"id":"485IA7vwL0","start":1536138000000,"end":1536141600000},{"id":"JjlkoZMWUh","start":1536148800000,"end":1536152400000},{"id":"9UrV89f0W3","start":1536163200000,"end":1536166800000},{"id":"48omfwuGFK","start":1536300000000,"end":1536303600000},{"id":"0dTvnGlVll","start":1536314400000,"end":1536316200000},{"id":"lcwQVNB9ex","start":1536328800000,"end":1536332400000},{"id":"8p0NpTsq6d","start":1536732000000,"end":1536735600000},{"id":"Lfxf6ZDH6S","start":1536746400000,"end":1536748200000},{"id":"9ptOE50D8O","start":1536757200000,"end":1536760800000},{"id":"qaHAAIpXmh","start":1536768000000,"end":1536771600000},{"id":"TiMNLufcXf","start":1536818400000,"end":1536820200000},{"id":"Mk4qWRVOyS","start":1536829200000,"end":1536831000000},{"id":"954lndWSyw","start":1536840000000,"end":1536841800000},{"id":"aRkly18jpg","start":1536854400000,"end":1536858000000},{"id":"1sSDMJPdDb","start":1537250400000,"end":1537252200000},{"id":"WTCOG2StQZ","start":1537261200000,"end":1537264800000},{"id":"FCYpUHF8ix","start":1537272000000,"end":1537273800000},{"id":"dRLFLQ4hqo","start":1537286400000,"end":1537290000000},{"id":"uB0AHaubWX","start":1537423200000,"end":1537426800000},{"id":"Y5V27H5Byc","start":1537434000000,"end":1537435800000},{"id":"1PNRXfSJT0","start":1537448400000,"end":1537452000000},{"id":"LrfkrCD4cZ","start":1537941600000,"end":1537943400000},{"id":"ddQFRoMTsF","start":1537952400000,"end":1537956000000},{"id":"zcC8YwZWMX","start":1537966800000,"end":1537970400000},{"id":"RH0xyR1pMa","start":1537977600000,"end":1537981200000},{"id":"7cZw9tjp1O","start":1538114400000,"end":1538116200000},{"id":"AlZ2uje8op","start":1538128800000,"end":1538132400000},{"id":"NP7pk5U8M9","start":1538143200000,"end":1538146800000},{"id":"tbOjgja8Ay","start":1538546400000,"end":1538550000000},{"id":"Z9MmdMv0IT","start":1538557200000,"end":1538560800000},{"id":"XT7YhxxODs","start":1538571600000,"end":1538573400000},{"id":"y5K4rElKWE","start":1538632800000,"end":1538636400000},{"id":"VaOowuLF4U","start":1538647200000,"end":1538650800000},{"id":"GXMsusKKcJ","start":1538661600000,"end":1538665200000},{"id":"RvcPA734sK","start":1539151200000,"end":1539153000000},{"id":"7lBLtPWuHk","start":1539165600000,"end":1539167400000},{"id":"jMx73PCj80","start":1539180000000,"end":1539183600000},{"id":"3jzYIrCXG5","start":1539324000000,"end":1539327600000},{"id":"BhaTKzO7ca","start":1539338400000,"end":1539340200000},{"id":"G31Ani8P0r","start":1539352800000,"end":1539354600000},{"id":"4cNoZEqGra","start":1539756000000,"end":1539759600000},{"id":"hpMbabpVRy","start":1539770400000,"end":1539772200000},{"id":"mB0DsPcOiR","start":1539781200000,"end":1539784800000},{"id":"zi3JM5SCmQ","start":1539928800000,"end":1539932400000},{"id":"FOAouEWsON","start":1539939600000,"end":1539941400000},{"id":"iyjo9Fv26w","start":1539950400000,"end":1539952200000},{"id":"VuRijG5YR5","start":1539961200000,"end":1539964800000},{"id":"hBs8meZqft","start":1540360800000,"end":1540362600000},{"id":"kviUMAXM0o","start":1540375200000,"end":1540378800000},{"id":"V6WFlqiIcT","start":1540389600000,"end":1540393200000},{"id":"lF8SwFrAzq","start":1540447200000,"end":1540449000000},{"id":"gx7JLPLUJ6","start":1540458000000,"end":1540459800000},{"id":"2GM85kGZsN","start":1540472400000,"end":1540474200000},{"id":"dAqbRmqrqC","start":1540483200000,"end":1540486800000},{"id":"lCpQPASeeQ","start":1540882800000,"end":1540886400000},{"id":"JPgGM1sZ1n","start":1540893600000,"end":1540897200000},{"id":"TcvCsZXBtf","start":1540904400000,"end":1540906200000},{"id":"wu36M3rnPv","start":1540915200000,"end":1540918800000},{"id":"XI7ftPdeKZ","start":1541055600000,"end":1541057400000},{"id":"JszqPGuMOH","start":1541070000000,"end":1541073600000},{"id":"BAMluxtvIk","start":1541080800000,"end":1541084400000},{"id":"Qy2oQ18BV3","start":1541574000000,"end":1541577600000},{"id":"pfiZe0eHJf","start":1541584800000,"end":1541588400000},{"id":"moIxpJr1Vc","start":1541599200000,"end":1541601000000},{"id":"8r375PaPyy","start":1541746800000,"end":1541748600000},{"id":"ItdVEOEvvh","start":1541757600000,"end":1541761200000},{"id":"mmS9w1yoSC","start":1541772000000,"end":1541775600000},{"id":"LQBzDQU1kj","start":1541782800000,"end":1541786400000},{"id":"4q5Iw844so","start":1542092400000,"end":1542094200000},{"id":"8Z2FIsF7fJ","start":1542106800000,"end":1542110400000},{"id":"xfKDlH50XF","start":1542117600000,"end":1542121200000},{"id":"QELB2F56Ux","start":1542128400000,"end":1542132000000},{"id":"IuzEbCOMda","start":1542178800000,"end":1542182400000},{"id":"WYZ6ITKtnj","start":1542189600000,"end":1542191400000},{"id":"fHkCV7UNxW","start":1542200400000,"end":1542202200000},{"id":"drMq5o3zaW","start":1542211200000,"end":1542214800000},{"id":"TAh7j2eGGJ","start":1542265200000,"end":1542268800000},{"id":"i7khuandC8","start":1542276000000,"end":1542279600000},{"id":"PmsXEcgzsr","start":1542286800000,"end":1542290400000},{"id":"USTJG7rNXp","start":1542297600000,"end":1542299400000},{"id":"9smpeoHrdP","start":1542697200000,"end":1542699000000},{"id":"4eT1izHDJG","start":1542708000000,"end":1542709800000},{"id":"3UoVBh7Sd6","start":1542722400000,"end":1542724200000},{"id":"raNMAunIa1","start":1542733200000,"end":1542736800000},{"id":"agMKjoNaVl","start":1542870000000,"end":1542871800000},{"id":"FPAR7JG0Ny","start":1542884400000,"end":1542888000000},{"id":"6YKAkg9Shl","start":1542898800000,"end":1542902400000},{"id":"SsddGPlHAw","start":1542956400000,"end":1542960000000},{"id":"231Xsnvvif","start":1542970800000,"end":1542974400000},{"id":"C7zgrrjWtI","start":1542985200000,"end":1542987000000},{"id":"X5I1ZBKh5H","start":1543302000000,"end":1543305600000},{"id":"lsnEMcShnv","start":1543312800000,"end":1543316400000},{"id":"RDKRaYBKyg","start":1543327200000,"end":1543329000000},{"id":"4UspohMdzv","start":1543388400000,"end":1543390200000},{"id":"Rq8FfzkO7q","start":1543399200000,"end":1543401000000},{"id":"jxtUN7dvAe","start":1543413600000,"end":1543417200000},{"id":"imyKDrwKH6","start":1543474800000,"end":1543476600000},{"id":"U4IyWZ1SBb","start":1543489200000,"end":1543492800000},{"id":"oQTJifNtCq","start":1543500000000,"end":1543501800000},{"id":"xKz4pSdLfL","start":1543993200000,"end":1543996800000},{"id":"9FWKCWghTy","start":1544007600000,"end":1544011200000},{"id":"kCZ05vVsp9","start":1544022000000,"end":1544025600000},{"id":"ItOnurG11Y","start":1544166000000,"end":1544169600000},{"id":"7R1oqIJFsA","start":1544176800000,"end":1544180400000},{"id":"VejboL9F8R","start":1544191200000,"end":1544193000000},{"id":"Sx6etlfrjg","start":1544202000000,"end":1544205600000},{"id":"K8XNzXtjLq","start":1544511600000,"end":1544513400000},{"id":"WsgMe1MxMj","start":1544522400000,"end":1544526000000},{"id":"qhFUuNcabx","start":1544533200000,"end":1544536800000},{"id":"TaGPhSmwul","start":1544547600000,"end":1544549400000},{"id":"H3jgb9jGEa","start":1544598000000,"end":1544601600000},{"id":"mZwG24Ii2H","start":1544608800000,"end":1544612400000},{"id":"Ihm1EslZxi","start":1544623200000,"end":1544625000000},{"id":"bCmezHSjNp","start":1544684400000,"end":1544686200000},{"id":"xRMwvsZV3l","start":1544695200000,"end":1544698800000},{"id":"nJQKrm56Nx","start":1544709600000,"end":1544713200000},{"id":"vuMbeCAadU","start":1544720400000,"end":1544722200000},{"id":"v2LEWmINtG","start":1544770800000,"end":1544774400000},{"id":"iVDMmG39DO","start":1544785200000,"end":1544787000000},{"id":"ECWWSzqDXZ","start":1544796000000,"end":1544799600000},{"id":"qYyPCkPbHm","start":1545116400000,"end":1545120000000},{"id":"dZ7YmpHQT2","start":1545130800000,"end":1545132600000},{"id":"6mMHzaTtd6","start":1545145200000,"end":1545147000000},{"id":"gis9S568x2","start":1545202800000,"end":1545206400000},{"id":"VGM93Bmecu","start":1545213600000,"end":1545215400000},{"id":"evrVAjVgnR","start":1545228000000,"end":1545231600000},{"id":"7s8VO7u50F","start":1545238800000,"end":1545242400000},{"id":"m6e6lhRQK7","start":1545375600000,"end":1545377400000},{"id":"ac2QpF7Js4","start":1545386400000,"end":1545388200000},{"id":"MA5hh0CAaJ","start":1545397200000,"end":1545399000000},{"id":"LG89y9j2u7","start":1545408000000,"end":1545411600000},{"id":"6jIYtF5F6m","start":1545807600000,"end":1545811200000},{"id":"BfKnvKpwZ1","start":1545818400000,"end":1545820200000},{"id":"v1OPWNHD4T","start":1545829200000,"end":1545832800000},{"id":"hLa61idpYS","start":1545840000000,"end":1545843600000},{"id":"4drf1nOivR","start":1545980400000,"end":1545984000000},{"id":"gH1MkWUM7Q","start":1545991200000,"end":1545993000000},{"id":"2U9BCV3R6N","start":1546005600000,"end":1546009200000},{"id":"IltvN1CroN","start":1546016400000,"end":1546018200000},{"id":"PwAVB4kdWO","start":1546326000000,"end":1546327800000},{"id":"XgABhlcVoE","start":1546336800000,"end":1546338600000},{"id":"2x5wLA6ANo","start":1546351200000,"end":1546353000000},{"id":"y664A44DPL","start":1546362000000,"end":1546365600000},{"id":"Lmvzswui9Q","start":1546498800000,"end":1546500600000},{"id":"GJncEiTnZo","start":1546509600000,"end":1546513200000},{"id":"DyLmMRbuei","start":1546524000000,"end":1546527600000},{"id":"2LX6Hg5n6H","start":1547017200000,"end":1547020800000},{"id":"znCk4ZoCqv","start":1547028000000,"end":1547029800000},{"id":"htOQtutJem","start":1547038800000,"end":1547042400000},{"id":"ji7nNGVUFe","start":1547053200000,"end":1547055000000},{"id":"nIzvwfrPEU","start":1547190000000,"end":1547193600000},{"id":"GA7mOmFRyH","start":1547204400000,"end":1547208000000},{"id":"f8R7eQgcT3","start":1547215200000,"end":1547217000000},{"id":"CpmbFxiw3i","start":1547535600000,"end":1547539200000},{"id":"J5LhQb8Kc2","start":1547550000000,"end":1547553600000},{"id":"ExYpvmYPT6","start":1547560800000,"end":1547564400000},{"id":"ePXwtxwKhI","start":1547622000000,"end":1547625600000},{"id":"DyOPLT0Zbe","start":1547632800000,"end":1547636400000},{"id":"WwFomtfJ43","start":1547647200000,"end":1547649000000},{"id":"v87ARHZume","start":1547794800000,"end":1547796600000},{"id":"rx3SWCuJhZ","start":1547809200000,"end":1547811000000},{"id":"Evl1YBb4nm","start":1547820000000,"end":1547823600000},{"id":"DhSQVmQtVD","start":1547830800000,"end":1547834400000},{"id":"FBq5hYgA2W","start":1548226800000,"end":1548230400000},{"id":"hgLgbVucLe","start":1548241200000,"end":1548244800000},{"id":"NaN9dHqaND","start":1548252000000,"end":1548253800000},{"id":"czT2TKn6gT","start":1548399600000,"end":1548401400000},{"id":"pVz7ESHk7x","start":1548410400000,"end":1548412200000},{"id":"EiR4avtvNL","start":1548424800000,"end":1548428400000},{"id":"dLGkM4hFHu","start":1548435600000,"end":1548437400000},{"id":"tkQ5jaC4ES","start":1548831600000,"end":1548833400000},{"id":"AZtgXlevEL","start":1548846000000,"end":1548849600000},{"id":"6jAJ2lZXRs","start":1548856800000,"end":1548858600000},{"id":"djD48xuJcH","start":1548867600000,"end":1548869400000},{"id":"xgNoMjC6bT","start":1549004400000,"end":1549006200000},{"id":"YCkTcXk5Ht","start":1549018800000,"end":1549022400000},{"id":"h4uEzgFdqD","start":1549029600000,"end":1549031400000},{"id":"lKzHByiCUA","start":1549436400000,"end":1549438200000},{"id":"5k47jdFsze","start":1549450800000,"end":1549454400000},{"id":"WYCp8yO94y","start":1549461600000,"end":1549463400000},{"id":"214gq4AcaX","start":1549609200000,"end":1549611000000},{"id":"1T0JDdsExb","start":1549620000000,"end":1549621800000},{"id":"EF7gJkQMnM","start":1549630800000,"end":1549632600000},{"id":"5rWnwnV9Iw","start":1549641600000,"end":1549643400000},{"id":"1YoUikhTFP","start":1550041200000,"end":1550043000000},{"id":"3BAHVdnsts","start":1550055600000,"end":1550057400000},{"id":"RDQfnSeNZH","start":1550066400000,"end":1550070000000},{"id":"zwSVFPtpEP","start":1550077200000,"end":1550079000000},{"id":"mrgqhcYia0","start":1550127600000,"end":1550131200000},{"id":"C9dwpWWQY7","start":1550138400000,"end":1550142000000},{"id":"trgKPF5LPN","start":1550152800000,"end":1550156400000},{"id":"9zbsCimfJK","start":1550163600000,"end":1550167200000},{"id":"W6iMSIMaXr","start":1550214000000,"end":1550217600000},{"id":"WUIrSWwtUr","start":1550224800000,"end":1550228400000},{"id":"LehniDFXx6","start":1550235600000,"end":1550239200000},{"id":"HiKQTI4xph","start":1550246400000,"end":1550250000000},{"id":"XG4vEKDANU","start":1550559600000,"end":1550561400000},{"id":"aqFYQSnAc3","start":1550574000000,"end":1550577600000},{"id":"HPM7YIxBZx","start":1550584800000,"end":1550588400000},{"id":"fpw7N1maUk","start":1550595600000,"end":1550599200000},{"id":"w0ia3jF6Xz","start":1550646000000,"end":1550649600000},{"id":"xmZFV8zxtY","start":1550660400000,"end":1550662200000},{"id":"f84Ubtiuvg","start":1550674800000,"end":1550678400000},{"id":"Bg1OzyWiOz","start":1550732400000,"end":1550736000000},{"id":"hD2KgEcJhk","start":1550746800000,"end":1550748600000},{"id":"F6y9LGYUKh","start":1550757600000,"end":1550759400000},{"id":"Nz8PmhEiqH","start":1551164400000,"end":1551168000000},{"id":"qpADKJdNGQ","start":1551175200000,"end":1551178800000},{"id":"IYZ715NsZX","start":1551186000000,"end":1551187800000},{"id":"2s6dTJmfF3","start":1551196800000,"end":1551198600000},{"id":"roa4zmdarG","start":1551250800000,"end":1551254400000},{"id":"3seTULiZ2v","start":1551261600000,"end":1551265200000},{"id":"RmsFxD3xy2","start":1551272400000,"end":1551274200000},{"id":"66ZHJB4J4r","start":1551286800000,"end":1551290400000},{"id":"rhxBA31ST7","start":1551337200000,"end":1551340800000},{"id":"QpuQUDXky1","start":1551351600000,"end":1551355200000},{"id":"DiO8k9T8oI","start":1551366000000,"end":1551367800000},{"id":"L5jdENoD6b","start":1551423600000,"end":1551427200000},{"id":"yrreFG1QXY","start":1551438000000,"end":1551441600000},{"id":"jNnW51ccNe","start":1551452400000,"end":1551456000000},{"id":"dzU7Pvnja6","start":1551423600000,"end":1551427200000},{"id":"hPzC6USglT","start":1551438000000,"end":1551441600000},{"id":"ydqqX5eW2v","start":1551452400000,"end":1551454200000},{"id":"U0BPRqQyYI","start":1551769200000,"end":1551772800000},{"id":"L6hh0wo4UD","start":1551783600000,"end":1551785400000},{"id":"w6lfkApe4k","start":1551794400000,"end":1551798000000},{"id":"p3ghDB5fWh","start":1551942000000,"end":1551945600000},{"id":"neA2XcLeVq","start":1551952800000,"end":1551954600000},{"id":"dWWLOG4tqN","start":1551963600000,"end":1551965400000},{"id":"4Z3j5cYevl","start":1551978000000,"end":1551981600000},{"id":"7MJvDFm13y","start":1552028400000,"end":1552030200000},{"id":"VthgzsFyej","start":1552042800000,"end":1552046400000},{"id":"DBZWFF62Oz","start":1552057200000,"end":1552059000000},{"id":"mtSYNQjaZE","start":1552374000000,"end":1552377600000},{"id":"2KIgakChWX","start":1552384800000,"end":1552386600000},{"id":"0JIocJaAy2","start":1552395600000,"end":1552397400000},{"id":"VNB9eoEIPF","start":1552410000000,"end":1552413600000},{"id":"GgzSPDcuos","start":1552460400000,"end":1552464000000},{"id":"JMEGZ50g6m","start":1552471200000,"end":1552474800000},{"id":"TATu2u0ClT","start":1552482000000,"end":1552483800000},{"id":"fA2B2Fao0E","start":1552496400000,"end":1552498200000},{"id":"LFGiINcDm1","start":1552633200000,"end":1552635000000},{"id":"ThVqYOZZMQ","start":1552644000000,"end":1552647600000},{"id":"T3qY2lTwbU","start":1552658400000,"end":1552660200000},{"id":"kvQL9S2BN1","start":1553065200000,"end":1553068800000},{"id":"4NtlYdCEt2","start":1553076000000,"end":1553077800000},{"id":"imsJMaNDKn","start":1553086800000,"end":1553088600000},{"id":"BGbdjF0PRg","start":1553101200000,"end":1553104800000},{"id":"npa14iegsS","start":1553238000000,"end":1553241600000},{"id":"bdyP8rBO2m","start":1553248800000,"end":1553252400000},{"id":"gnWgAOE0kz","start":1553263200000,"end":1553266800000},{"id":"oyNZKoR3bp","start":1553274000000,"end":1553275800000},{"id":"sQpyGXgeo3","start":1553583600000,"end":1553585400000},{"id":"RTnNYmpExB","start":1553598000000,"end":1553599800000},{"id":"rCoAaAp6ix","start":1553608800000,"end":1553610600000},{"id":"MHG8lKwaoj","start":1553670000000,"end":1553673600000},{"id":"x1T3Kw7agw","start":1553680800000,"end":1553682600000},{"id":"Bw4f6XJrrA","start":1553695200000,"end":1553698800000},{"id":"dHlvnmsQFO","start":1553839200000,"end":1553841000000},{"id":"stQ5B6Tsx2","start":1553853600000,"end":1553855400000},{"id":"pIDFdwE1W5","start":1553864400000,"end":1553868000000},{"id":"kntCNvwq6e","start":1554271200000,"end":1554274800000},{"id":"rcxV4KtAj7","start":1554285600000,"end":1554289200000},{"id":"963C0kBuui","start":1554296400000,"end":1554300000000},{"id":"TovHEXaaqW","start":1554307200000,"end":1554310800000},{"id":"kluiVMEoxr","start":1554357600000,"end":1554361200000},{"id":"jMGG7ETy9O","start":1554368400000,"end":1554372000000},{"id":"LaYfaJ8qYY","start":1554382800000,"end":1554384600000},{"id":"9FdZF0UirA","start":1554393600000,"end":1554395400000},{"id":"MNN2wKrQs3","start":1554444000000,"end":1554447600000},{"id":"yTt1dAo4Vi","start":1554458400000,"end":1554462000000},{"id":"ldUGjS6mJi","start":1554469200000,"end":1554471000000},{"id":"cAda78ivxd","start":1554789600000,"end":1554791400000},{"id":"GkUNfvym2X","start":1554804000000,"end":1554807600000},{"id":"ykDHQIWxf4","start":1554814800000,"end":1554816600000},{"id":"sbmB8YDJzh","start":1554876000000,"end":1554879600000},{"id":"aveJkCs9Ru","start":1554886800000,"end":1554890400000},{"id":"hRgFl3p2RY","start":1554901200000,"end":1554903000000},{"id":"IMVRGSRHKo","start":1554912000000,"end":1554915600000},{"id":"nuLLDFswml","start":1555048800000,"end":1555052400000},{"id":"VI93PhogYA","start":1555063200000,"end":1555066800000},{"id":"MjdpMnuIJL","start":1555077600000,"end":1555081200000},{"id":"eeLixkSs7B","start":1555480800000,"end":1555482600000},{"id":"ujbP5GeXh4","start":1555495200000,"end":1555498800000},{"id":"hA3UQeBoWi","start":1555509600000,"end":1555511400000},{"id":"1yr8SclwoQ","start":1555653600000,"end":1555655400000},{"id":"UaMLlSkH6f","start":1555664400000,"end":1555666200000},{"id":"aupx1bhqp9","start":1555678800000,"end":1555680600000},{"id":"fHuY6rjnss","start":1555999200000,"end":1556002800000},{"id":"rBrBWuEPNq","start":1556010000000,"end":1556013600000},{"id":"3k5ZuAjnE8","start":1556024400000,"end":1556026200000},{"id":"v7WoAAyPxo","start":1556035200000,"end":1556038800000},{"id":"aIVHa14lnl","start":1556085600000,"end":1556089200000},{"id":"7jh0uxUTLI","start":1556096400000,"end":1556098200000},{"id":"sRF1AX0KG9","start":1556107200000,"end":1556110800000},{"id":"rTcWAqGwCe","start":1556121600000,"end":1556125200000},{"id":"Jlp8Cli3Ze","start":1556172000000,"end":1556175600000},{"id":"0Rj8OzIzua","start":1556182800000,"end":1556186400000},{"id":"gcrzQNKEqh","start":1556197200000,"end":1556199000000},{"id":"bs3CFDW0Oa","start":1556208000000,"end":1556211600000},{"id":"9BCu67yveu","start":1556604000000,"end":1556607600000},{"id":"f6SKJlgYQ0","start":1556618400000,"end":1556620200000},{"id":"22DyQfaDbS","start":1556632800000,"end":1556636400000},{"id":"uvDNASXDf2","start":1556690400000,"end":1556694000000},{"id":"d7YVb0bIZk","start":1556701200000,"end":1556704800000},{"id":"EqKTebzw5A","start":1556715600000,"end":1556719200000},{"id":"ySNvdMjhln","start":1556726400000,"end":1556728200000},{"id":"Rpuyi28ChT","start":1556863200000,"end":1556865000000},{"id":"Xjq21f2hmX","start":1556874000000,"end":1556877600000},{"id":"TksocAJ3J5","start":1556884800000,"end":1556888400000},{"id":"9NGJxTR1Ad","start":1556899200000,"end":1556901000000},{"id":"PPavo4Jqss","start":1557208800000,"end":1557210600000},{"id":"pSxbrPvMB0","start":1557219600000,"end":1557223200000},{"id":"cfcLoG9F5u","start":1557234000000,"end":1557237600000},{"id":"vqYSa2Eqsb","start":1557295200000,"end":1557298800000},{"id":"1SwanOnHDu","start":1557306000000,"end":1557307800000},{"id":"Lu4rSg0O5y","start":1557320400000,"end":1557324000000},{"id":"v1vBiAMDhk","start":1557381600000,"end":1557383400000},{"id":"S61NQK6jOA","start":1557392400000,"end":1557394200000},{"id":"YbgOWydaKk","start":1557406800000,"end":1557408600000},{"id":"vbcqooneVd","start":1557417600000,"end":1557421200000},{"id":"i9XMyVQLnL","start":1557813600000,"end":1557815400000},{"id":"0kLKFDS8Zr","start":1557824400000,"end":1557828000000},{"id":"h7MyjxlPFF","start":1557838800000,"end":1557842400000},{"id":"8JuefTqk7t","start":1557900000000,"end":1557903600000},{"id":"7X4v2z259j","start":1557914400000,"end":1557918000000},{"id":"St3B7Uuefw","start":1557925200000,"end":1557928800000},{"id":"THVBO3JceT","start":1557936000000,"end":1557937800000},{"id":"8oMrxgYuzV","start":1557986400000,"end":1557990000000},{"id":"wBNjxyugNC","start":1557997200000,"end":1557999000000},{"id":"Ry13LRjV4c","start":1558008000000,"end":1558009800000},{"id":"Ij1ke8WiS0","start":1558022400000,"end":1558024200000},{"id":"QkgIzb4oBM","start":1558072800000,"end":1558074600000},{"id":"1sK2kiZEnm","start":1558083600000,"end":1558087200000},{"id":"ViDZxX20mw","start":1558098000000,"end":1558101600000},{"id":"566efMktGj","start":1558108800000,"end":1558110600000},{"id":"pQrtmPwCG7","start":1558418400000,"end":1558420200000},{"id":"pmUBsGsT9K","start":1558432800000,"end":1558436400000},{"id":"PAqdK0eTb4","start":1558447200000,"end":1558449000000},{"id":"lHrIrSOhwN","start":1558591200000,"end":1558594800000},{"id":"Yf5UZAqJRc","start":1558602000000,"end":1558603800000},{"id":"q4ZmmkFYJz","start":1558612800000,"end":1558614600000},{"id":"dJsmyrwiQF","start":1558623600000,"end":1558625400000},{"id":"q9F5iWdE1G","start":1559023200000,"end":1559026800000},{"id":"AGUeuLbfTB","start":1559034000000,"end":1559037600000},{"id":"ehYt7TjlWJ","start":1559048400000,"end":1559050200000},{"id":"uolSdOMUk9","start":1559196000000,"end":1559197800000},{"id":"GAyDMjJvHw","start":1559210400000,"end":1559214000000},{"id":"SJMnt38FZn","start":1559221200000,"end":1559223000000},{"id":"cy3B2Uo86W","start":1559232000000,"end":1559233800000},{"id":"aZC4gKmUcu","start":1559282400000,"end":1559284200000},{"id":"8LWoJTmnL3","start":1559296800000,"end":1559298600000},{"id":"M3DYd5tSAQ","start":1559307600000,"end":1559311200000},{"id":"UUgAzRYMOI","start":1559714400000,"end":1559718000000},{"id":"Vw36THoxmR","start":1559725200000,"end":1559728800000},{"id":"T54jsrpeQg","start":1559739600000,"end":1559743200000},{"id":"KVQf2EQsN0","start":1559887200000,"end":1559890800000},{"id":"uwk5L0iHKD","start":1559898000000,"end":1559901600000},{"id":"O4ipZEtOJb","start":1559912400000,"end":1559916000000},{"id":"jMQfkfGXhF","start":1560319200000,"end":1560321000000},{"id":"qoFzhFr0RS","start":1560333600000,"end":1560335400000},{"id":"vAx3KJldVD","start":1560348000000,"end":1560351600000},{"id":"Nsw7rCrnrS","start":1560405600000,"end":1560409200000},{"id":"rMirf5w3zw","start":1560416400000,"end":1560420000000},{"id":"r1pZ1Firx1","start":1560427200000,"end":1560430800000},{"id":"fX6PnebNnx","start":1560441600000,"end":1560445200000},{"id":"l85v1XAjiD","start":1560492000000,"end":1560493800000},{"id":"IzmrCI0MMH","start":1560506400000,"end":1560508200000},{"id":"9nkfeVkx0i","start":1560520800000,"end":1560524400000},{"id":"iZQryGJl8l","start":1560924000000,"end":1560925800000},{"id":"2GsgH1A6sl","start":1560938400000,"end":1560942000000},{"id":"AFyKdTpdvs","start":1560952800000,"end":1560954600000},{"id":"yzyaWFpKd6","start":1561096800000,"end":1561100400000},{"id":"nUieNxN5fI","start":1561111200000,"end":1561114800000},{"id":"DVS4xjAFvw","start":1561125600000,"end":1561127400000},{"id":"sivFCGvpqB","start":1561442400000,"end":1561444200000},{"id":"cn9HJd2vyR","start":1561456800000,"end":1561460400000},{"id":"rc16HYjiPC","start":1561471200000,"end":1561474800000},{"id":"6TG8xmKX3h","start":1561615200000,"end":1561617000000},{"id":"Wu94kMhFkp","start":1561626000000,"end":1561627800000},{"id":"ngM34ScZHS","start":1561636800000,"end":1561638600000},{"id":"Ty1ndSnb2D","start":1561651200000,"end":1561653000000},{"id":"dEJRHl1Jqn","start":1561701600000,"end":1561705200000},{"id":"NqlOjU28y4","start":1561716000000,"end":1561717800000},{"id":"9YnWwcRTAl","start":1561730400000,"end":1561734000000},{"id":"G4rI2e957B","start":1562047200000,"end":1562050800000},{"id":"w4Qo1iFTRW","start":1562061600000,"end":1562063400000},{"id":"P6ri9d6DGa","start":1562072400000,"end":1562076000000},{"id":"i66nzpBM3z","start":1562133600000,"end":1562135400000},{"id":"dxJhTALpgG","start":1562148000000,"end":1562151600000},{"id":"mLtYymRvL1","start":1562162400000,"end":1562164200000},{"id":"zKH53OcI4o","start":1562306400000,"end":1562310000000},{"id":"n1CnShqgab","start":1562317200000,"end":1562319000000},{"id":"7nGQ7gWtdX","start":1562328000000,"end":1562331600000},{"id":"f3x9xcxZIL","start":1562342400000,"end":1562346000000},{"id":"JlXXN9GkW4","start":1562652000000,"end":1562653800000},{"id":"4AXeNVDJCm","start":1562666400000,"end":1562668200000},{"id":"ZNs5VYGqez","start":1562677200000,"end":1562679000000},{"id":"mXD8ZgMKFb","start":1562688000000,"end":1562691600000},{"id":"v7StcpeZTB","start":1562824800000,"end":1562828400000},{"id":"zr9u6yFef5","start":1562835600000,"end":1562837400000},{"id":"VrLmeHLndy","start":1562846400000,"end":1562850000000},{"id":"5yfuHiEkhE","start":1562857200000,"end":1562859000000},{"id":"BxBSrIfZOv","start":1562911200000,"end":1562914800000},{"id":"3Rzjz95ith","start":1562925600000,"end":1562927400000},{"id":"8J9krxSLO9","start":1562940000000,"end":1562943600000},{"id":"Oqiet3qtn6","start":1563256800000,"end":1563260400000},{"id":"dDLzedyfGv","start":1563271200000,"end":1563274800000},{"id":"2DotOEh6LC","start":1563282000000,"end":1563285600000},{"id":"QvUah5MorU","start":1563429600000,"end":1563433200000},{"id":"MHfre8o2Ht","start":1563444000000,"end":1563445800000},{"id":"jukk6bZqMu","start":1563454800000,"end":1563456600000},{"id":"NZCAzVq1PQ","start":1563465600000,"end":1563469200000},{"id":"FzkJnO1B7n","start":1563861600000,"end":1563863400000},{"id":"aWkQX0l8Bz","start":1563876000000,"end":1563879600000},{"id":"MhRZvVNkDJ","start":1563890400000,"end":1563894000000},{"id":"w5dHlvERDq","start":1563948000000,"end":1563949800000},{"id":"goS5BYZSJY","start":1563958800000,"end":1563960600000},{"id":"6GHmSftNSX","start":1563973200000,"end":1563976800000},{"id":"Lvdfx9kLTM","start":1564120800000,"end":1564122600000},{"id":"VONP7bkMkX","start":1564131600000,"end":1564135200000},{"id":"7zEfTnEY7C","start":1564142400000,"end":1564144200000},{"id":"F4FizX8sVn","start":1564156800000,"end":1564160400000},{"id":"k3je04oaMd","start":1564466400000,"end":1564470000000},{"id":"omYym8L9Ns","start":1564477200000,"end":1564479000000},{"id":"3zjTkMHJZt","start":1564491600000,"end":1564493400000},{"id":"m5K9l631fE","start":1564502400000,"end":1564504200000},{"id":"87ezyIoCKu","start":1564552800000,"end":1564556400000},{"id":"GQcUO67qyK","start":1564563600000,"end":1564567200000},{"id":"HujEoY6XoV","start":1564578000000,"end":1564581600000},{"id":"vHAxsK7yZ3","start":1564639200000,"end":1564641000000},{"id":"1IaRkWwBC1","start":1564653600000,"end":1564657200000},{"id":"ZtF305Ms4V","start":1564664400000,"end":1564666200000},{"id":"GXbtArqbc2","start":1564675200000,"end":1564678800000},{"id":"nuUsgiJYiJ","start":1564725600000,"end":1564727400000},{"id":"f0OjoEsxJp","start":1564736400000,"end":1564738200000},{"id":"3tsK3f5NRx","start":1564747200000,"end":1564750800000},{"id":"DDT6jwrG77","start":1564758000000,"end":1564761600000},{"id":"Fyy9weibfS","start":1565071200000,"end":1565074800000},{"id":"zVOaGas2Ad","start":1565082000000,"end":1565085600000},{"id":"w22LZQgJKp","start":1565096400000,"end":1565100000000},{"id":"ADW4b2xwBq","start":1565157600000,"end":1565161200000},{"id":"fvNq7kO3z4","start":1565172000000,"end":1565175600000},{"id":"riu4T4tBdJ","start":1565186400000,"end":1565190000000},{"id":"hN4moQU429","start":1565330400000,"end":1565332200000},{"id":"B9TCG9xpdt","start":1565341200000,"end":1565344800000},{"id":"5qyF1YuZ8t","start":1565352000000,"end":1565355600000},{"id":"DzdptIO7cI","start":1565366400000,"end":1565368200000},{"id":"h8w5iOqyvG","start":1565762400000,"end":1565766000000},{"id":"gC2EcgGP9C","start":1565773200000,"end":1565776800000},{"id":"ymMQvDOhBy","start":1565787600000,"end":1565789400000},{"id":"L8dyeUq7pK","start":1565798400000,"end":1565800200000},{"id":"dpddo3XRhe","start":1565848800000,"end":1565850600000},{"id":"u6ptyyQvoN","start":1565859600000,"end":1565863200000},{"id":"VpPsJ13lgh","start":1565870400000,"end":1565872200000},{"id":"uMlXtSjoQM","start":1565881200000,"end":1565884800000},{"id":"Irrw5wnfBs","start":1566367200000,"end":1566369000000},{"id":"k3gb3DHVlD","start":1566378000000,"end":1566381600000},{"id":"pAfvz3Rs1G","start":1566388800000,"end":1566390600000},{"id":"6F0cOOwH7G","start":1566399600000,"end":1566403200000},{"id":"9OJTfutqG9","start":1566453600000,"end":1566455400000},{"id":"uWQSRdkaCz","start":1566464400000,"end":1566466200000},{"id":"qg8fyXywbS","start":1566475200000,"end":1566478800000},{"id":"gvc1Q0UJyE","start":1566489600000,"end":1566493200000},{"id":"KRX5PcXrnW","start":1566885600000,"end":1566889200000},{"id":"UyaIcEw55j","start":1566900000000,"end":1566901800000},{"id":"7rQtZvfVW5","start":1566910800000,"end":1566912600000},{"id":"IBGa1YH9Ge","start":1566972000000,"end":1566973800000},{"id":"wYF6vHT9cY","start":1566986400000,"end":1566990000000},{"id":"arUyxiRdd9","start":1567000800000,"end":1567002600000},{"id":"yms0LhODlN","start":1567058400000,"end":1567062000000},{"id":"poDN5mBsZD","start":1567072800000,"end":1567074600000},{"id":"NtP1t3d5nO","start":1567087200000,"end":1567089000000},{"id":"3uGOtqaa4K","start":1567576800000,"end":1567578600000},{"id":"8zTb4YMlFZ","start":1567591200000,"end":1567594800000},{"id":"PsSOJJIZIG","start":1567602000000,"end":1567603800000},{"id":"TUAeFgNl4e","start":1567663200000,"end":1567666800000},{"id":"r68Lbu8fjS","start":1567674000000,"end":1567677600000},{"id":"rEu1B37Tec","start":1567688400000,"end":1567692000000},{"id":"ZYxHP1EmQm","start":1567699200000,"end":1567702800000},{"id":"43T2nK7y7C","start":1568095200000,"end":1568098800000},{"id":"JLhXaDYeDL","start":1568109600000,"end":1568111400000},{"id":"31NapweaTo","start":1568120400000,"end":1568124000000},{"id":"WydgOM24Q6","start":1568131200000,"end":1568133000000},{"id":"H3wixR87F0","start":1568268000000,"end":1568269800000},{"id":"2gGQC54hUA","start":1568278800000,"end":1568280600000},{"id":"hxIHIUvadl","start":1568293200000,"end":1568296800000},{"id":"a7ALOkGZ2G","start":1568354400000,"end":1568358000000},{"id":"nxqxmWie0W","start":1568365200000,"end":1568367000000},{"id":"yE2KDmemT6","start":1568379600000,"end":1568383200000},{"id":"P0lss4zsrM","start":1568390400000,"end":1568394000000},{"id":"UC6Ov1BhKk","start":1568700000000,"end":1568703600000},{"id":"Wl8zmV1KeS","start":1568710800000,"end":1568712600000},{"id":"qXfeuerm2z","start":1568721600000,"end":1568723400000},{"id":"aZhun5RLBs","start":1568736000000,"end":1568739600000},{"id":"Qto7TgYRv3","start":1568872800000,"end":1568874600000},{"id":"udrQBFdTw0","start":1568887200000,"end":1568890800000},{"id":"KVL9fPANnh","start":1568898000000,"end":1568899800000},{"id":"IwQvb8L0ui","start":1568959200000,"end":1568962800000},{"id":"E148ClMrfj","start":1568973600000,"end":1568977200000},{"id":"RXI6Q0IEW2","start":1568988000000,"end":1568989800000},{"id":"KuWVrmFnwt","start":1569304800000,"end":1569306600000},{"id":"tBMa9F2CA5","start":1569319200000,"end":1569322800000},{"id":"JWXnXK53Ob","start":1569330000000,"end":1569333600000},{"id":"hoDDPeqENM","start":1569477600000,"end":1569481200000},{"id":"MFEb4cNAMP","start":1569492000000,"end":1569493800000},{"id":"PfCnc8Kfcl","start":1569506400000,"end":1569510000000},{"id":"wlKGATA6LM","start":1569909600000,"end":1569911400000},{"id":"px3jz45fx3","start":1569924000000,"end":1569927600000},{"id":"meoURHKbNB","start":1569934800000,"end":1569936600000},{"id":"LRbl8L92tF","start":1570082400000,"end":1570086000000},{"id":"8QnOK4dGiF","start":1570093200000,"end":1570096800000},{"id":"1OQbbyKeIZ","start":1570104000000,"end":1570105800000},{"id":"7e9aQ4BPRX","start":1570118400000,"end":1570120200000},{"id":"RTL9IuCxLD","start":1570168800000,"end":1570170600000},{"id":"TPlctANAnZ","start":1570183200000,"end":1570185000000},{"id":"YmQWkHK33v","start":1570194000000,"end":1570195800000},{"id":"cZkKyZ3a7u","start":1570600800000,"end":1570604400000},{"id":"exz8upaFjp","start":1570611600000,"end":1570615200000},{"id":"QZRtTO0DBA","start":1570622400000,"end":1570624200000},{"id":"hAULcOXrm7","start":1570633200000,"end":1570636800000},{"id":"XCSNVdCpad","start":1570687200000,"end":1570690800000},{"id":"b0zmj2JqWN","start":1570701600000,"end":1570705200000},{"id":"XLlDYSICAy","start":1570712400000,"end":1570714200000},{"id":"U6Z4puDiRt","start":1570773600000,"end":1570777200000},{"id":"fXALsvkTDn","start":1570784400000,"end":1570786200000},{"id":"vmcwcEOZNx","start":1570798800000,"end":1570800600000},{"id":"n4YlQJtxi2","start":1570809600000,"end":1570811400000},{"id":"DdzNtrNVap","start":1571205600000,"end":1571207400000},{"id":"XsNKDUqtFX","start":1571216400000,"end":1571220000000},{"id":"BTpPgQMP2z","start":1571227200000,"end":1571229000000},{"id":"G3dBk96PIO","start":1571241600000,"end":1571243400000},{"id":"sdYCz8nzHT","start":1571378400000,"end":1571380200000},{"id":"8OXxSuno2d","start":1571392800000,"end":1571394600000},{"id":"PzxlbE2Gar","start":1571403600000,"end":1571407200000},{"id":"ry0XrnQ6gZ","start":1571810400000,"end":1571814000000},{"id":"LJ57Hi0xgK","start":1571824800000,"end":1571826600000},{"id":"3pvAz52N6v","start":1571839200000,"end":1571841000000},{"id":"9LRc5t1P3Q","start":1571896800000,"end":1571900400000},{"id":"bHM0emL7KF","start":1571907600000,"end":1571911200000},{"id":"FSOyKRN4yK","start":1571918400000,"end":1571922000000},{"id":"BeX99ZUWcY","start":1571929200000,"end":1571932800000},{"id":"QJ6Heg5fbi","start":1571983200000,"end":1571986800000},{"id":"ncPvfqYABV","start":1571997600000,"end":1571999400000},{"id":"kEDBPZiQhx","start":1572008400000,"end":1572012000000},{"id":"KQ7LY6hxvy","start":1572019200000,"end":1572022800000},{"id":"6PoV8n0vl3","start":1572332400000,"end":1572336000000},{"id":"wwUJwc6rJQ","start":1572343200000,"end":1572346800000},{"id":"BftgCh8K7k","start":1572354000000,"end":1572357600000},{"id":"54VC2S3x31","start":1572364800000,"end":1572368400000},{"id":"G1p81y02Eb","start":1572505200000,"end":1572507000000},{"id":"osY6qnSBN7","start":1572516000000,"end":1572517800000},{"id":"yyYJMa4Yn1","start":1572526800000,"end":1572530400000},{"id":"r5mlDRElcN","start":1572537600000,"end":1572541200000},{"id":"i8llZyydbs","start":1572591600000,"end":1572593400000},{"id":"NQXWKGhRBI","start":1572606000000,"end":1572609600000},{"id":"W6qVvd4uek","start":1572620400000,"end":1572624000000},{"id":"2aBKElnm9C","start":1572937200000,"end":1572939000000},{"id":"7FyACRjrvl","start":1572951600000,"end":1572953400000},{"id":"EH6o4v7vKL","start":1572962400000,"end":1572966000000},{"id":"k1eAwnkr72","start":1573023600000,"end":1573027200000},{"id":"wsBZc70lqT","start":1573038000000,"end":1573039800000},{"id":"KSwZPWPkb0","start":1573048800000,"end":1573052400000},{"id":"qFbnuX84pa","start":1573059600000,"end":1573063200000},{"id":"AFMO3HVdVS","start":1573110000000,"end":1573111800000},{"id":"YZhTtr96Ay","start":1573120800000,"end":1573122600000},{"id":"qUE6mIoqyC","start":1573135200000,"end":1573137000000},{"id":"Q4OrGMua0g","start":1573146000000,"end":1573147800000},{"id":"lZYHbObdFQ","start":1573542000000,"end":1573545600000},{"id":"OVboaZj9nl","start":1573556400000,"end":1573558200000},{"id":"SoUdtEKj6Z","start":1573567200000,"end":1573570800000},{"id":"kE4SBHkHYC","start":1573714800000,"end":1573718400000},{"id":"G0VdYXIO4n","start":1573725600000,"end":1573729200000},{"id":"3z3BvzhHJq","start":1573740000000,"end":1573741800000},{"id":"bNqDDBxXz9","start":1573801200000,"end":1573804800000},{"id":"eTGzxCADGN","start":1573815600000,"end":1573817400000},{"id":"QIpE4tvgJv","start":1573830000000,"end":1573831800000},{"id":"KmBcJKmonX","start":1574146800000,"end":1574148600000},{"id":"C0yNkMSxdv","start":1574161200000,"end":1574163000000},{"id":"1ltRr7tBbC","start":1574175600000,"end":1574179200000},{"id":"nTglIuXhNn","start":1574233200000,"end":1574236800000},{"id":"1IPm2lHLml","start":1574247600000,"end":1574251200000},{"id":"AjzP39AGBP","start":1574258400000,"end":1574262000000},{"id":"tGo2VX9WxQ","start":1574319600000,"end":1574321400000},{"id":"Gnxc2373Es","start":1574334000000,"end":1574337600000},{"id":"h0PbF9sSYj","start":1574344800000,"end":1574348400000},{"id":"PJPiKSexNB","start":1574355600000,"end":1574357400000},{"id":"pZL0pFNdI0","start":1574838000000,"end":1574839800000},{"id":"9Yes52ip6x","start":1574848800000,"end":1574852400000},{"id":"Zj6cZ8xuQi","start":1574859600000,"end":1574861400000},{"id":"0Fcsxz9gJc","start":1574870400000,"end":1574872200000},{"id":"2Jme70Jy7H","start":1574924400000,"end":1574928000000},{"id":"84bdmaDBff","start":1574938800000,"end":1574942400000},{"id":"mRHVEErf4m","start":1574953200000,"end":1574956800000},{"id":"TZ1veNbw4v","start":1575356400000,"end":1575360000000},{"id":"xWWALOiRSc","start":1575367200000,"end":1575370800000},{"id":"KoDEk4rthB","start":1575378000000,"end":1575379800000},{"id":"JbIHLgBJKR","start":1575388800000,"end":1575390600000},{"id":"FKjrZESv7O","start":1575529200000,"end":1575532800000},{"id":"LGk3bGba7s","start":1575540000000,"end":1575541800000},{"id":"TAjWMZ6eOH","start":1575550800000,"end":1575552600000},{"id":"ORf3Ly2JvS","start":1575561600000,"end":1575563400000},{"id":"pHCo3l1Rkd","start":1575615600000,"end":1575619200000},{"id":"1P47kshofJ","start":1575626400000,"end":1575630000000},{"id":"5UrwILFhJl","start":1575640800000,"end":1575644400000},{"id":"K6I2b8x5wB","start":1575961200000,"end":1575963000000},{"id":"8UrClFNOKM","start":1575972000000,"end":1575973800000},{"id":"hwPBPnNfie","start":1575986400000,"end":1575988200000},{"id":"tEA12XiWse","start":1576134000000,"end":1576137600000},{"id":"2VIjO5VZ72","start":1576144800000,"end":1576146600000},{"id":"4rvAIx9tcN","start":1576159200000,"end":1576162800000},{"id":"4fFNsY6EKx","start":1576170000000,"end":1576171800000},{"id":"XKDdkHNg9t","start":1576220400000,"end":1576224000000},{"id":"L6MZeqbamg","start":1576231200000,"end":1576234800000},{"id":"u1lhXFXl8E","start":1576245600000,"end":1576247400000},{"id":"1n61VE2Gjr","start":1576256400000,"end":1576258200000},{"id":"wwsXdWJYdR","start":1576566000000,"end":1576569600000},{"id":"i0474A9UKW","start":1576576800000,"end":1576580400000},{"id":"ZhYYBISLp9","start":1576591200000,"end":1576594800000},{"id":"eE8RIWNlhR","start":1576602000000,"end":1576605600000},{"id":"v01Le6xcad","start":1576652400000,"end":1576654200000},{"id":"7aWYYrYaiw","start":1576663200000,"end":1576666800000},{"id":"F7W5pybW6Y","start":1576677600000,"end":1576679400000},{"id":"9Po9qhkNLP","start":1576688400000,"end":1576692000000},{"id":"3323kllAwT","start":1576825200000,"end":1576827000000},{"id":"pp9arTR7Hc","start":1576836000000,"end":1576839600000},{"id":"WGkedATDam","start":1576850400000,"end":1576852200000},{"id":"hORC5R8Oap","start":1577257200000,"end":1577259000000},{"id":"Sof4TOD8c5","start":1577271600000,"end":1577273400000},{"id":"hv0JDy4Mww","start":1577282400000,"end":1577286000000},{"id":"VYYbYw8zuC","start":1577343600000,"end":1577347200000},{"id":"jFtsQWl6nt","start":1577354400000,"end":1577358000000},{"id":"XUrwlKL2Tf","start":1577368800000,"end":1577370600000},{"id":"uBTtu5yXhF","start":1577379600000,"end":1577381400000},{"id":"eAvX0a5drJ","start":1577775600000,"end":1577779200000},{"id":"q8mxyJbi0a","start":1577790000000,"end":1577791800000},{"id":"VfXtA4Ey0c","start":1577800800000,"end":1577804400000},{"id":"GV3zHu7D28","start":1577862000000,"end":1577863800000},{"id":"qidtrjQoGJ","start":1577876400000,"end":1577880000000},{"id":"FHt8D0JNEX","start":1577890800000,"end":1577892600000},{"id":"qy2Buq2Nmj","start":1577948400000,"end":1577950200000},{"id":"3XOR125puu","start":1577962800000,"end":1577966400000},{"id":"OSXiMgpwbG","start":1577977200000,"end":1577980800000},{"id":"3NBuBI8hdf","start":1578034800000,"end":1578036600000},{"id":"YMpY3vRcYv","start":1578045600000,"end":1578047400000},{"id":"5RjgXeBMaZ","start":1578060000000,"end":1578063600000},{"id":"ekZsadjshd","start":1578466800000,"end":1578470400000},{"id":"1BlHL3cdOQ","start":1578477600000,"end":1578481200000},{"id":"z8fZlgcJaE","start":1578488400000,"end":1578490200000},{"id":"KNsQgRc2C6","start":1578499200000,"end":1578501000000},{"id":"YcicY9z0Ko","start":1578553200000,"end":1578555000000},{"id":"VUkMmVoalx","start":1578564000000,"end":1578567600000},{"id":"daOGeD9Ufe","start":1578578400000,"end":1578582000000},{"id":"y4hQSyiR73","start":1578589200000,"end":1578592800000},{"id":"QbKQwPQWIv","start":1578639600000,"end":1578643200000},{"id":"L2OlpCvimr","start":1578654000000,"end":1578655800000},{"id":"zniCxDTs6G","start":1578668400000,"end":1578670200000},{"id":"cjUtl51Zym","start":1578985200000,"end":1578988800000},{"id":"KJiugIfpmp","start":1578996000000,"end":1578999600000},{"id":"zTlPeIPcL9","start":1579006800000,"end":1579008600000},{"id":"E4wpOjP7pR","start":1579017600000,"end":1579021200000},{"id":"Z39eznNUJm","start":1579071600000,"end":1579075200000},{"id":"StUxBz5VVD","start":1579086000000,"end":1579089600000},{"id":"FCaImR5nGN","start":1579096800000,"end":1579098600000},{"id":"pQDpaTj1w2","start":1579107600000,"end":1579109400000},{"id":"szKLI6pGuk","start":1579244400000,"end":1579246200000},{"id":"HUMn6SA2Xz","start":1579255200000,"end":1579258800000},{"id":"TgbOMj0vbu","start":1579266000000,"end":1579267800000},{"id":"jQcVMkkFTH","start":1579276800000,"end":1579278600000},{"id":"yGNa5BAP0q","start":1579676400000,"end":1579678200000},{"id":"j3IxK2FN1h","start":1579690800000,"end":1579694400000},{"id":"e3kHC7vPtR","start":1579705200000,"end":1579707000000},{"id":"ri35qWe0bU","start":1579762800000,"end":1579764600000},{"id":"rXcsiByUtb","start":1579773600000,"end":1579775400000},{"id":"t5IQ8gAaWi","start":1579784400000,"end":1579788000000},{"id":"LKmjJ3K8qi","start":1579795200000,"end":1579798800000},{"id":"nq15svYWXU","start":1579849200000,"end":1579851000000},{"id":"9HrYSxLu5O","start":1579860000000,"end":1579861800000},{"id":"YgUBl72vwF","start":1579870800000,"end":1579874400000},{"id":"g1PvMs9ppC","start":1579881600000,"end":1579885200000},{"id":"kvg7cQlsWY","start":1580281200000,"end":1580283000000},{"id":"Q0PwFdj7uE","start":1580292000000,"end":1580295600000},{"id":"9fDGdtkHUg","start":1580306400000,"end":1580308200000},{"id":"crEjKyjbOc","start":1580454000000,"end":1580455800000},{"id":"706AdN0rEP","start":1580468400000,"end":1580472000000},{"id":"QsRGDgtbLw","start":1580479200000,"end":1580482800000},{"id":"ioFyTbpQ2b","start":1580490000000,"end":1580493600000},{"id":"12rU4Qq1QB","start":1580799600000,"end":1580803200000},{"id":"chsXdiURz0","start":1580810400000,"end":1580812200000},{"id":"ENitKvXtXA","start":1580821200000,"end":1580824800000},{"id":"ng5UeaguRd","start":1580832000000,"end":1580833800000},{"id":"DsuTxPfaKS","start":1580972400000,"end":1580976000000},{"id":"klvc2BmBPF","start":1580986800000,"end":1580990400000},{"id":"K8rlJoozyx","start":1580997600000,"end":1581001200000},{"id":"StBw3X3Szl","start":1581008400000,"end":1581012000000},{"id":"PpBrj6x8Gn","start":1581058800000,"end":1581062400000},{"id":"evXA7Smz2K","start":1581069600000,"end":1581073200000},{"id":"jkLHS05ro9","start":1581080400000,"end":1581084000000},{"id":"LZIFdFCAe1","start":1581094800000,"end":1581098400000},{"id":"tqo9iWArsF","start":1581404400000,"end":1581408000000},{"id":"H0r2wQZPhX","start":1581418800000,"end":1581420600000},{"id":"8alI6J0y9i","start":1581433200000,"end":1581436800000},{"id":"9YFbvFA3xn","start":1581490800000,"end":1581492600000},{"id":"p8oor14FjE","start":1581505200000,"end":1581507000000},{"id":"QNSIiqivTO","start":1581519600000,"end":1581521400000},{"id":"Ul8qCOBlks","start":1581663600000,"end":1581665400000},{"id":"pQe73lMOLh","start":1581678000000,"end":1581681600000},{"id":"k8Wz3GSYDY","start":1581692400000,"end":1581694200000},{"id":"WhEyuivIE3","start":1582095600000,"end":1582097400000},{"id":"vjFZsQYrxN","start":1582106400000,"end":1582110000000},{"id":"nEnsuYKUZs","start":1582117200000,"end":1582120800000},{"id":"UVjjGOexVI","start":1582128000000,"end":1582129800000},{"id":"TBwACj0Xw3","start":1582182000000,"end":1582183800000},{"id":"aLaJ4zXqhP","start":1582196400000,"end":1582200000000},{"id":"W36PDEJsxB","start":1582210800000,"end":1582214400000},{"id":"bnuEJVuBWg","start":1582268400000,"end":1582272000000},{"id":"ay97dARBdT","start":1582279200000,"end":1582282800000},{"id":"3BovBudrHN","start":1582290000000,"end":1582293600000},{"id":"VdrbUyVREc","start":1582300800000,"end":1582304400000},{"id":"KNnb7yTHB9","start":1582700400000,"end":1582702200000},{"id":"E0d0b52Pfp","start":1582711200000,"end":1582713000000},{"id":"a8YwdOfdXz","start":1582722000000,"end":1582725600000},{"id":"42dcg8ynQm","start":1582732800000,"end":1582734600000},{"id":"23BwXoEUyE","start":1582786800000,"end":1582790400000},{"id":"3HWgnqYBju","start":1582797600000,"end":1582799400000},{"id":"3yCdpUt9Ha","start":1582808400000,"end":1582812000000},{"id":"5HCWAUqaEQ","start":1582822800000,"end":1582824600000},{"id":"VDAd2pRGwc","start":1583218800000,"end":1583222400000},{"id":"TN9hv3Bp0D","start":1583233200000,"end":1583235000000},{"id":"H9T3KDhBFP","start":1583244000000,"end":1583247600000},{"id":"iUn2LTESAB","start":1583254800000,"end":1583256600000},{"id":"HZtuloqb2e","start":1583305200000,"end":1583308800000},{"id":"XewfOyeB6O","start":1583319600000,"end":1583323200000},{"id":"t5HugNMYUM","start":1583334000000,"end":1583337600000},{"id":"nisoSDTURn","start":1583391600000,"end":1583395200000},{"id":"6LkZUshjIC","start":1583406000000,"end":1583407800000},{"id":"7ypf2v3C5n","start":1583420400000,"end":1583424000000},{"id":"S5UasV6LSt","start":1583478000000,"end":1583479800000},{"id":"QtrK81KdUL","start":1583488800000,"end":1583490600000},{"id":"bZJXzGS08v","start":1583503200000,"end":1583505000000},{"id":"pufB2EBiIF","start":1583910000000,"end":1583913600000},{"id":"pmYaoQXIvL","start":1583924400000,"end":1583928000000},{"id":"N17nrVA5SU","start":1583938800000,"end":1583940600000},{"id":"yy49ktqHCt","start":1583996400000,"end":1584000000000},{"id":"a1RJpISLMS","start":1584010800000,"end":1584012600000},{"id":"orKhgaZUEP","start":1584025200000,"end":1584028800000},{"id":"5U8gGR9osP","start":1584082800000,"end":1584086400000},{"id":"8BRrHGTmQw","start":1584093600000,"end":1584097200000},{"id":"62IHYEpSeb","start":1584108000000,"end":1584109800000},{"id":"ofpKRnISJq","start":1584118800000,"end":1584122400000},{"id":"3dxi4C5Xhn","start":1584428400000,"end":1584430200000},{"id":"5Y2yvXEVOS","start":1584439200000,"end":1584441000000},{"id":"AsoDDuFPVg","start":1584453600000,"end":1584455400000},{"id":"3n5FyE3wYs","start":1584464400000,"end":1584468000000},{"id":"eFbB7z6qVL","start":1584514800000,"end":1584518400000},{"id":"YVdxZ1OZok","start":1584525600000,"end":1584529200000},{"id":"3UpFctQbDb","start":1584536400000,"end":1584540000000},{"id":"cO1mkRiAlM","start":1584550800000,"end":1584554400000},{"id":"HQ9gDNKJ6E","start":1584601200000,"end":1584603000000},{"id":"4gXOM2T9KZ","start":1584612000000,"end":1584615600000},{"id":"LUxmWK751R","start":1584626400000,"end":1584628200000},{"id":"j0ckWUH3zo","start":1585033200000,"end":1585036800000},{"id":"8jRITavZPy","start":1585047600000,"end":1585049400000},{"id":"Bw39HjYizp","start":1585062000000,"end":1585065600000},{"id":"5neZaiY90y","start":1585119600000,"end":1585121400000},{"id":"udjIfoIIgI","start":1585130400000,"end":1585134000000},{"id":"VqxfeBNNzU","start":1585141200000,"end":1585144800000},{"id":"ODKP49LDaS","start":1585152000000,"end":1585155600000},{"id":"YCCwx84AwI","start":1585288800000,"end":1585292400000},{"id":"yGHMQZLmbY","start":1585299600000,"end":1585301400000},{"id":"5UkZDbsROL","start":1585314000000,"end":1585317600000},{"id":"rKTDPXMIzP","start":1585324800000,"end":1585326600000},{"id":"psBmalZcz2","start":1585634400000,"end":1585638000000},{"id":"FON67Wgx33","start":1585645200000,"end":1585648800000},{"id":"tl6jsxsXKS","start":1585659600000,"end":1585661400000},{"id":"EZiBruQxvq","start":1585720800000,"end":1585722600000},{"id":"rDPRmJDzls","start":1585731600000,"end":1585735200000},{"id":"sG2vhvQvSF","start":1585742400000,"end":1585746000000},{"id":"ckucxFgBNp","start":1585753200000,"end":1585755000000},{"id":"tmXBV3mRUJ","start":1585893600000,"end":1585895400000},{"id":"tVfG5jHYMJ","start":1585908000000,"end":1585909800000},{"id":"1ZC049OQwb","start":1585922400000,"end":1585926000000},{"id":"zOxtpCgBmt","start":1586325600000,"end":1586329200000},{"id":"uN9OGlouEn","start":1586336400000,"end":1586338200000},{"id":"Int38mtKaz","start":1586347200000,"end":1586349000000},{"id":"5Q35giPDdd","start":1586358000000,"end":1586359800000},{"id":"ys9GjcApsq","start":1586498400000,"end":1586502000000},{"id":"uOggQGcwoy","start":1586509200000,"end":1586512800000},{"id":"yz9OL35Bsc","start":1586520000000,"end":1586523600000},{"id":"gglw2LXpuw","start":1586530800000,"end":1586534400000},{"id":"FBZQgXQjFg","start":1586844000000,"end":1586845800000},{"id":"iq1gNoMcJr","start":1586858400000,"end":1586860200000},{"id":"FSYYwKT4KU","start":1586869200000,"end":1586871000000},{"id":"CIacQFSMP1","start":1586930400000,"end":1586932200000},{"id":"J8t6qlqP20","start":1586941200000,"end":1586943000000},{"id":"EYg71fXNY0","start":1586952000000,"end":1586955600000},{"id":"vIYIsWDvYP","start":1586966400000,"end":1586970000000},{"id":"yb8336e8WM","start":1587016800000,"end":1587018600000},{"id":"I9tmDlLSGf","start":1587027600000,"end":1587031200000},{"id":"PJOlYnEDaf","start":1587042000000,"end":1587045600000},{"id":"gtnfgH135t","start":1587052800000,"end":1587054600000},{"id":"ipJ851FnMO","start":1587103200000,"end":1587105000000},{"id":"I1p8PNx99D","start":1587117600000,"end":1587121200000},{"id":"uimCKnHt8w","start":1587128400000,"end":1587130200000},{"id":"8luCXgGuz6","start":1587535200000,"end":1587538800000},{"id":"JMLj7XubWj","start":1587549600000,"end":1587551400000},{"id":"IQmSXGWmZu","start":1587560400000,"end":1587562200000},{"id":"ZNMnr8O92r","start":1587621600000,"end":1587623400000},{"id":"6k5wzXUuQP","start":1587632400000,"end":1587636000000},{"id":"52ELqSF2XW","start":1587646800000,"end":1587648600000},{"id":"Q9AN1wn73G","start":1587657600000,"end":1587661200000},{"id":"OJbCy5318s","start":1587708000000,"end":1587709800000},{"id":"YB4Co0NJvs","start":1587718800000,"end":1587722400000},{"id":"H6JACMCeCz","start":1587733200000,"end":1587736800000},{"id":"AE2arHE72v","start":1588053600000,"end":1588057200000},{"id":"xotmGK4TcE","start":1588064400000,"end":1588068000000},{"id":"exqz1o0yM7","start":1588078800000,"end":1588080600000},{"id":"dPHsA6ZSBX","start":1588089600000,"end":1588093200000},{"id":"IMF6r5PRGZ","start":1588140000000,"end":1588141800000},{"id":"91LMXYg1ok","start":1588154400000,"end":1588156200000},{"id":"Vr1aISzmUw","start":1588165200000,"end":1588167000000},{"id":"VM7aV7kmch","start":1588312800000,"end":1588316400000},{"id":"qWmtPRLzaa","start":1588323600000,"end":1588325400000},{"id":"eBxFrM5CKQ","start":1588338000000,"end":1588341600000},{"id":"jEz9pTO58g","start":1588348800000,"end":1588350600000},{"id":"OsRXcCwJYg","start":1588312800000,"end":1588316400000},{"id":"9LTf8ZzoUi","start":1588327200000,"end":1588330800000},{"id":"clN0Ksj6xY","start":1588338000000,"end":1588341600000},{"id":"HwGUWDahXI","start":1588348800000,"end":1588350600000},{"id":"AEmDC6rpmn","start":1588658400000,"end":1588660200000},{"id":"jeDQbxYrzW","start":1588672800000,"end":1588674600000},{"id":"Imfv4Q9LYN","start":1588687200000,"end":1588690800000},{"id":"f4DdiElkpy","start":1588744800000,"end":1588748400000},{"id":"zEImF9Hjl8","start":1588755600000,"end":1588757400000},{"id":"kVX4zhqIkM","start":1588766400000,"end":1588768200000},{"id":"taWhMJXJlS","start":1588780800000,"end":1588784400000},{"id":"zRxV8cX5wK","start":1588917600000,"end":1588921200000},{"id":"8v8iNjwKXP","start":1588928400000,"end":1588932000000},{"id":"AA1oSzgO6e","start":1588942800000,"end":1588946400000},{"id":"AHqGtyevD5","start":1588953600000,"end":1588957200000},{"id":"UflHvaxSJj","start":1589263200000,"end":1589265000000},{"id":"UktOkjrpJ4","start":1589277600000,"end":1589279400000},{"id":"MmRvfdKvyj","start":1589292000000,"end":1589295600000},{"id":"k9zBrwwTyF","start":1589436000000,"end":1589437800000},{"id":"bjVS3wniqP","start":1589450400000,"end":1589454000000},{"id":"8pzf2C0pcQ","start":1589461200000,"end":1589464800000},{"id":"G045iTDcrr","start":1589472000000,"end":1589473800000},{"id":"2EIUY7Tfg1","start":1589954400000,"end":1589958000000},{"id":"sEAzTwOpRD","start":1589968800000,"end":1589970600000},{"id":"OgVJin6in7","start":1589983200000,"end":1589985000000},{"id":"vjUWFwwX1B","start":1590127200000,"end":1590130800000},{"id":"bvBqGX6i5j","start":1590138000000,"end":1590139800000},{"id":"TOo9q26pTb","start":1590148800000,"end":1590152400000},{"id":"FVnhQC5MRb","start":1590159600000,"end":1590163200000},{"id":"xOeCTBdH2j","start":1590472800000,"end":1590474600000},{"id":"Gm8JP13R2i","start":1590487200000,"end":1590490800000},{"id":"oONwYtIJ9C","start":1590498000000,"end":1590499800000},{"id":"Psdj3jwPDE","start":1590508800000,"end":1590512400000},{"id":"V1v4e3eNTp","start":1590559200000,"end":1590562800000},{"id":"yf7B5vtkbL","start":1590570000000,"end":1590571800000},{"id":"9hmZzeCDDK","start":1590584400000,"end":1590588000000},{"id":"Uj8cCsSlt2","start":1590645600000,"end":1590647400000},{"id":"5T8N3KgWsI","start":1590660000000,"end":1590661800000},{"id":"BEkiYbueNl","start":1590670800000,"end":1590672600000},{"id":"4Soz7N3H7Y","start":1591164000000,"end":1591167600000},{"id":"AUROrlSjRF","start":1591174800000,"end":1591176600000},{"id":"nDaT1AP41F","start":1591185600000,"end":1591187400000},{"id":"KWiiQLBVGq","start":1591196400000,"end":1591198200000},{"id":"XGve0X0RFZ","start":1591336800000,"end":1591338600000},{"id":"vGufbyWyqk","start":1591347600000,"end":1591351200000},{"id":"MUQ6VXm3oL","start":1591358400000,"end":1591360200000},{"id":"aqz8rY9liM","start":1591372800000,"end":1591376400000},{"id":"wrOCcaGpVF","start":1591682400000,"end":1591684200000},{"id":"hh80o72sF8","start":1591693200000,"end":1591695000000},{"id":"jrVRe6BtAd","start":1591704000000,"end":1591707600000},{"id":"RHnsXWTUlT","start":1591714800000,"end":1591716600000},{"id":"Vd69F4KAFA","start":1591768800000,"end":1591772400000},{"id":"DmHfnefiWA","start":1591779600000,"end":1591781400000},{"id":"YDQrPPPMh3","start":1591790400000,"end":1591794000000},{"id":"3XElHjCUyS","start":1591804800000,"end":1591806600000},{"id":"DmLLjDcLsh","start":1591941600000,"end":1591945200000},{"id":"Q50n47Mdmh","start":1591952400000,"end":1591954200000},{"id":"mrqLZDQE95","start":1591963200000,"end":1591965000000},{"id":"kolBDCxRrB","start":1591974000000,"end":1591977600000},{"id":"KSYgnrIuSZ","start":1592373600000,"end":1592375400000},{"id":"S4ruSryuEr","start":1592384400000,"end":1592388000000},{"id":"PpBCF2BdIc","start":1592395200000,"end":1592397000000},{"id":"On6iJcFxgu","start":1592409600000,"end":1592411400000},{"id":"GxkadYqWmD","start":1592546400000,"end":1592550000000},{"id":"vBY4WYwCnZ","start":1592557200000,"end":1592560800000},{"id":"0I86IXjD8j","start":1592571600000,"end":1592575200000},{"id":"1Cdgw7vJ9Y","start":1592582400000,"end":1592584200000},{"id":"KWYqW69W5r","start":1592892000000,"end":1592895600000},{"id":"8pS2vH48U7","start":1592902800000,"end":1592906400000},{"id":"vTBlblMLs6","start":1592917200000,"end":1592920800000},{"id":"6pDoVRi4vc","start":1592928000000,"end":1592929800000},{"id":"JEuC8jI5OW","start":1593064800000,"end":1593066600000},{"id":"hmH878B4lB","start":1593079200000,"end":1593082800000},{"id":"JtmMSlR8r4","start":1593090000000,"end":1593091800000},{"id":"zezPllm1oO","start":1593100800000,"end":1593102600000},{"id":"QuLTHup7XB","start":1593151200000,"end":1593153000000},{"id":"eLkJ41rpfz","start":1593165600000,"end":1593169200000},{"id":"8wW9HZUgJH","start":1593180000000,"end":1593183600000},{"id":"YTln55Q7Ny","start":1593496800000,"end":1593500400000},{"id":"osfHy6PiuM","start":1593507600000,"end":1593509400000},{"id":"a8M2d5QXDC","start":1593518400000,"end":1593522000000},{"id":"ojOqeB9nxF","start":1593532800000,"end":1593534600000},{"id":"Vjhp3VEItg","start":1593583200000,"end":1593586800000},{"id":"EysUmnrIxO","start":1593594000000,"end":1593595800000},{"id":"SMSQthEyoK","start":1593604800000,"end":1593606600000},{"id":"f6YkLZU3Cy","start":1593619200000,"end":1593621000000},{"id":"ly7ZGMcGlQ","start":1593583200000,"end":1593585000000},{"id":"Djv2Ef56BD","start":1593597600000,"end":1593601200000},{"id":"MMv8BYYGOY","start":1593608400000,"end":1593612000000},{"id":"mbEUxqXnnv","start":1593619200000,"end":1593622800000},{"id":"9ohekNMmbJ","start":1593756000000,"end":1593759600000},{"id":"7uqjPvWxn1","start":1593766800000,"end":1593768600000},{"id":"yFgc0GsNjx","start":1593777600000,"end":1593781200000},{"id":"tZm4nAwbI8","start":1593788400000,"end":1593790200000},{"id":"TF5E4Grq9u","start":1594188000000,"end":1594189800000},{"id":"wMe3aCEGVN","start":1594198800000,"end":1594200600000},{"id":"yaJp1XunQd","start":1594209600000,"end":1594211400000},{"id":"51K7XykEYu","start":1594220400000,"end":1594222200000},{"id":"5WJMAhXx2k","start":1594274400000,"end":1594278000000},{"id":"GVcMNelzbh","start":1594285200000,"end":1594288800000},{"id":"TYQOE7XOUG","start":1594296000000,"end":1594297800000},{"id":"kw1pBPBNk1","start":1594306800000,"end":1594310400000},{"id":"K67v8iu2BZ","start":1594360800000,"end":1594362600000},{"id":"g8XR7aGfDm","start":1594375200000,"end":1594377000000},{"id":"JRufKTEcBa","start":1594389600000,"end":1594393200000},{"id":"HS5jWxck1t","start":1594706400000,"end":1594710000000},{"id":"MbA2zs3Nym","start":1594717200000,"end":1594719000000},{"id":"qLDXSpuZsh","start":1594728000000,"end":1594729800000},{"id":"IOv1xIpmWQ","start":1594742400000,"end":1594746000000},{"id":"Ga80wOa8RG","start":1594879200000,"end":1594882800000},{"id":"3lu8N8c1Bf","start":1594893600000,"end":1594897200000},{"id":"hBrAUDO2tw","start":1594908000000,"end":1594911600000},{"id":"T2XZQkrp5R","start":1595397600000,"end":1595399400000},{"id":"DrmyAYjLHI","start":1595412000000,"end":1595413800000},{"id":"K2tGUmVpdn","start":1595426400000,"end":1595428200000},{"id":"tGI9vcEUaz","start":1595484000000,"end":1595485800000},{"id":"sXhVDRLAMk","start":1595498400000,"end":1595500200000},{"id":"5KVmBwXh6d","start":1595509200000,"end":1595512800000},{"id":"ev3duZrt4A","start":1595520000000,"end":1595523600000},{"id":"40NhgYB48i","start":1595570400000,"end":1595572200000},{"id":"ZV6UNJRSyR","start":1595584800000,"end":1595586600000},{"id":"eksDz4tJHp","start":1595599200000,"end":1595602800000},{"id":"5XjKYdPfel","start":1595916000000,"end":1595917800000},{"id":"3pCxgQwtQq","start":1595926800000,"end":1595930400000},{"id":"HKZPKOWckv","start":1595941200000,"end":1595944800000},{"id":"ABz53HWH2E","start":1596002400000,"end":1596006000000},{"id":"q6Zhbnh93A","start":1596013200000,"end":1596016800000},{"id":"6J7PumniNc","start":1596027600000,"end":1596029400000},{"id":"4uDCA0drvh","start":1596088800000,"end":1596090600000},{"id":"7DwCvHAhV9","start":1596103200000,"end":1596106800000},{"id":"NxFoIogMxg","start":1596114000000,"end":1596117600000},{"id":"HOZ25pZ44i","start":1596124800000,"end":1596128400000},{"id":"GXWBUiPrcb","start":1596607200000,"end":1596610800000},{"id":"qYRRnAe1vg","start":1596621600000,"end":1596623400000},{"id":"C7NMJuU0Xo","start":1596632400000,"end":1596636000000},{"id":"nvjMRkKTNB","start":1596780000000,"end":1596781800000},{"id":"YLXISw2J1j","start":1596794400000,"end":1596796200000},{"id":"FtTHARJOP9","start":1596805200000,"end":1596807000000},{"id":"BztQhHKx1E","start":1596816000000,"end":1596819600000},{"id":"1EwFIqnxLh","start":1597212000000,"end":1597213800000},{"id":"KWIPSSyItD","start":1597222800000,"end":1597224600000},{"id":"8rajsMWuEX","start":1597233600000,"end":1597237200000},{"id":"egzYEaQwCE","start":1597244400000,"end":1597246200000},{"id":"Z2byUaiJ3g","start":1597298400000,"end":1597300200000},{"id":"Rzc2p2gMH6","start":1597309200000,"end":1597311000000},{"id":"2CFfc69iv2","start":1597323600000,"end":1597325400000},{"id":"fqjfQUPweS","start":1597334400000,"end":1597338000000},{"id":"F7Vrs1FNH5","start":1597384800000,"end":1597386600000},{"id":"3i9Sig9z0s","start":1597399200000,"end":1597402800000},{"id":"qoaV1oKoGy","start":1597410000000,"end":1597413600000},{"id":"m1tFm01HIJ","start":1597730400000,"end":1597734000000},{"id":"pbL7QzaNkF","start":1597744800000,"end":1597748400000},{"id":"mKvP2hhOVp","start":1597755600000,"end":1597757400000},{"id":"14HRLxipZo","start":1597903200000,"end":1597906800000},{"id":"RQ68RcWBfP","start":1597914000000,"end":1597917600000},{"id":"n1j8k1hoQo","start":1597928400000,"end":1597930200000},{"id":"LqZjobxmmJ","start":1597939200000,"end":1597941000000},{"id":"ul3UTYL7Pz","start":1598335200000,"end":1598338800000},{"id":"EeOk5xaPJ5","start":1598349600000,"end":1598351400000},{"id":"D9AKxhNN00","start":1598364000000,"end":1598365800000},{"id":"kRGWWUu63k","start":1598421600000,"end":1598423400000},{"id":"njv17EaYKn","start":1598436000000,"end":1598437800000},{"id":"ARkFGobMlE","start":1598446800000,"end":1598448600000},{"id":"FeMYka6zTs","start":1598594400000,"end":1598596200000},{"id":"MwLLImYCiv","start":1598608800000,"end":1598610600000},{"id":"JECH7GpF7K","start":1598619600000,"end":1598623200000},{"id":"XAe2HVje6n","start":1598940000000,"end":1598941800000},{"id":"42b2IrGkMW","start":1598950800000,"end":1598952600000},{"id":"uFYx4TtLGX","start":1598965200000,"end":1598967000000},{"id":"IVBHNYha6B","start":1599112800000,"end":1599114600000},{"id":"8SP6Q6GUhr","start":1599123600000,"end":1599125400000},{"id":"teb4CE5FuM","start":1599138000000,"end":1599141600000},{"id":"ZEdyHWRsth","start":1599544800000,"end":1599548400000},{"id":"2TuFZZlRlk","start":1599555600000,"end":1599559200000},{"id":"hkKSeKqqh8","start":1599566400000,"end":1599570000000},{"id":"32wkv0WVjR","start":1599580800000,"end":1599584400000},{"id":"83qQK6CiV7","start":1599717600000,"end":1599719400000},{"id":"DwSJQ3vYrK","start":1599728400000,"end":1599732000000},{"id":"BJfuCUvUxc","start":1599742800000,"end":1599744600000},{"id":"yqzxOwBdjb","start":1599753600000,"end":1599755400000},{"id":"6k5fultEas","start":1600236000000,"end":1600237800000},{"id":"bASxt3qkVl","start":1600246800000,"end":1600248600000},{"id":"aB1viFaOYI","start":1600257600000,"end":1600259400000},{"id":"z0Qe2RJXtZ","start":1600272000000,"end":1600273800000},{"id":"QaUzOMrPIG","start":1600322400000,"end":1600326000000},{"id":"5j0EK55KM1","start":1600333200000,"end":1600336800000},{"id":"NAxk5Hc97P","start":1600347600000,"end":1600351200000},{"id":"HBEJI9LSIs","start":1600408800000,"end":1600410600000},{"id":"H5d0GcTZAp","start":1600419600000,"end":1600421400000},{"id":"OLpQ8riwWP","start":1600430400000,"end":1600432200000},{"id":"LvAUvR8Kp3","start":1600441200000,"end":1600443000000},{"id":"po0nzazU0w","start":1600754400000,"end":1600758000000},{"id":"A39DE1Tjv8","start":1600768800000,"end":1600772400000},{"id":"SzT7BmksMB","start":1600783200000,"end":1600786800000},{"id":"NYLLXl1EQr","start":1600927200000,"end":1600929000000},{"id":"KeBf2OROIm","start":1600941600000,"end":1600943400000},{"id":"7mL9EQstRY","start":1600956000000,"end":1600959600000},{"id":"bSc7yta6Jh","start":1601013600000,"end":1601015400000},{"id":"gQH0bF2Ok7","start":1601028000000,"end":1601031600000},{"id":"JaR2J1kuAL","start":1601042400000,"end":1601044200000},{"id":"csvPAy4Vom","start":1601359200000,"end":1601361000000},{"id":"IBaI5kVaXT","start":1601373600000,"end":1601377200000},{"id":"Vpm1FWDJKO","start":1601388000000,"end":1601389800000},{"id":"Fsp03P1xeF","start":1601532000000,"end":1601535600000},{"id":"SV5z3xXjhh","start":1601542800000,"end":1601544600000},{"id":"6SghMQMnQI","start":1601557200000,"end":1601560800000},{"id":"oK1IREm9LB","start":1601532000000,"end":1601533800000},{"id":"EVTpGzLb9N","start":1601542800000,"end":1601546400000},{"id":"t5kklhly9k","start":1601557200000,"end":1601559000000},{"id":"bo9xDMQAE0","start":1601618400000,"end":1601620200000},{"id":"fWOUTAE2Th","start":1601629200000,"end":1601631000000},{"id":"KukP6D56xB","start":1601640000000,"end":1601643600000},{"id":"eiVPwy8mP1","start":1601650800000,"end":1601654400000},{"id":"aKIbQkpW7w","start":1602050400000,"end":1602052200000},{"id":"vVbVpYBlCK","start":1602064800000,"end":1602066600000},{"id":"St4gV1Ld7W","start":1602079200000,"end":1602081000000},{"id":"9GrTqOvWCG","start":1602223200000,"end":1602225000000},{"id":"LlRbgkg9Zj","start":1602237600000,"end":1602241200000},{"id":"I4qtPV7P8n","start":1602252000000,"end":1602253800000},{"id":"JtIHv1Lyjy","start":1602655200000,"end":1602657000000},{"id":"i9noiHLA1N","start":1602669600000,"end":1602671400000},{"id":"9GWxQmRcXn","start":1602680400000,"end":1602682200000},{"id":"pUzrA9XBRH","start":1602691200000,"end":1602693000000},{"id":"RsmWHxdfXx","start":1602828000000,"end":1602831600000},{"id":"wUEP1N5RVL","start":1602842400000,"end":1602844200000},{"id":"oX96dEmE8v","start":1602856800000,"end":1602858600000},{"id":"0QakFiXQor","start":1603173600000,"end":1603177200000},{"id":"8hEdLPHUdq","start":1603188000000,"end":1603191600000},{"id":"WfxagCKHPy","start":1603202400000,"end":1603206000000},{"id":"rwzw5HExZs","start":1603260000000,"end":1603261800000},{"id":"567dTj362y","start":1603274400000,"end":1603276200000},{"id":"cbI41J68J4","start":1603285200000,"end":1603287000000},{"id":"3q0vih4iL9","start":1603346400000,"end":1603348200000},{"id":"yzZGTmpyV7","start":1603357200000,"end":1603359000000},{"id":"gyq24G4Grt","start":1603368000000,"end":1603371600000},{"id":"MYvYb5arwT","start":1603378800000,"end":1603380600000},{"id":"kUD5dShGKm","start":1603432800000,"end":1603436400000},{"id":"Ujs9QKV4KB","start":1603447200000,"end":1603449000000},{"id":"dKjJMPDOKo","start":1603461600000,"end":1603463400000},{"id":"f5ENRqlr4S","start":1603782000000,"end":1603785600000},{"id":"ZoL5btE0xu","start":1603796400000,"end":1603800000000},{"id":"XP7jAsOKkS","start":1603807200000,"end":1603810800000},{"id":"eEjS6jeFm4","start":1603954800000,"end":1603958400000},{"id":"WdXq7yjypi","start":1603969200000,"end":1603972800000},{"id":"kwsoQ5fqZu","start":1603983600000,"end":1603987200000},{"id":"iDksqBwcoA","start":1604041200000,"end":1604043000000},{"id":"K0XlypSBB7","start":1604052000000,"end":1604055600000},{"id":"2tos2gzj1n","start":1604062800000,"end":1604064600000},{"id":"Q87i3cf2yY","start":1604077200000,"end":1604079000000},{"id":"hR4SZMQEl0","start":1604386800000,"end":1604388600000},{"id":"ePLWz1MTMV","start":1604397600000,"end":1604401200000},{"id":"Afm6s45ZAQ","start":1604412000000,"end":1604413800000},{"id":"LUV6ZOpzFl","start":1604473200000,"end":1604475000000},{"id":"EqjUOQZvVK","start":1604487600000,"end":1604489400000},{"id":"FBc9JH7uSm","start":1604498400000,"end":1604502000000},{"id":"lPm4BDg0Z6","start":1604646000000,"end":1604649600000},{"id":"KXMSLw1rVa","start":1604660400000,"end":1604664000000},{"id":"CAHQyWaKDZ","start":1604674800000,"end":1604676600000},{"id":"Pr9KWETPOw","start":1604991600000,"end":1604993400000},{"id":"T4RO4xPdKK","start":1605002400000,"end":1605004200000},{"id":"HmL4YH72lc","start":1605016800000,"end":1605018600000},{"id":"ReMnh8DTNz","start":1605027600000,"end":1605031200000},{"id":"LHiIOPs9Dj","start":1605164400000,"end":1605168000000},{"id":"E9knIQ5Lg9","start":1605178800000,"end":1605182400000},{"id":"SZHM25h7bf","start":1605189600000,"end":1605193200000},{"id":"BjuAu0QGf4","start":1605250800000,"end":1605254400000},{"id":"HOncxClX4m","start":1605261600000,"end":1605265200000},{"id":"Is3i2zWPHJ","start":1605272400000,"end":1605274200000},{"id":"6IX9Z9DUCH","start":1605286800000,"end":1605288600000},{"id":"rqVHTEYEqD","start":1605682800000,"end":1605684600000},{"id":"9s6zwkyG4y","start":1605693600000,"end":1605695400000},{"id":"FTaPz5yNvb","start":1605704400000,"end":1605708000000},{"id":"sPU5pmLyuW","start":1605718800000,"end":1605720600000},{"id":"DEuq6xoG0Y","start":1605855600000,"end":1605857400000},{"id":"SDus9h2gGz","start":1605866400000,"end":1605868200000},{"id":"prwh2Kryek","start":1605877200000,"end":1605879000000},{"id":"qvVqEtA4ex","start":1605891600000,"end":1605895200000},{"id":"tVoZAqAgrg","start":1606201200000,"end":1606203000000},{"id":"5Ij628LoBq","start":1606212000000,"end":1606213800000},{"id":"9HoUxZI5Va","start":1606226400000,"end":1606228200000},{"id":"KLyD6FUBMy","start":1606374000000,"end":1606377600000},{"id":"CQXNysCGZF","start":1606388400000,"end":1606390200000},{"id":"TpZz0QBBzm","start":1606399200000,"end":1606401000000},{"id":"Rr04Ua7PNM","start":1606410000000,"end":1606413600000},{"id":"UC4nr7BA4C","start":1606806000000,"end":1606809600000},{"id":"PQzccFTPhN","start":1606816800000,"end":1606820400000},{"id":"YRXoMSt4TQ","start":1606831200000,"end":1606833000000},{"id":"eofHTQIsbH","start":1606842000000,"end":1606843800000},{"id":"UfHVI3te7H","start":1606806000000,"end":1606807800000},{"id":"nQh0qL3Mnm","start":1606816800000,"end":1606818600000},{"id":"HvA5LQ7OFF","start":1606831200000,"end":1606834800000},{"id":"M6H9wMFwAX","start":1606892400000,"end":1606896000000},{"id":"Wawtn82Y5z","start":1606903200000,"end":1606906800000},{"id":"KvuVJCJwNI","start":1606917600000,"end":1606919400000},{"id":"cVkkZXIaUc","start":1606978800000,"end":1606980600000},{"id":"9xKJgylAOC","start":1606989600000,"end":1606993200000},{"id":"JIN7lUIhwQ","start":1607000400000,"end":1607004000000},{"id":"tkzVTMu6JE","start":1607014800000,"end":1607018400000},{"id":"PbJfiAIttg","start":1607065200000,"end":1607068800000},{"id":"JuohOf2oXE","start":1607079600000,"end":1607083200000},{"id":"CRT0cKCr5j","start":1607094000000,"end":1607095800000},{"id":"qAL3bemLtm","start":1607410800000,"end":1607414400000},{"id":"PkPgfG5mRh","start":1607425200000,"end":1607427000000},{"id":"W3223WhEET","start":1607436000000,"end":1607437800000},{"id":"T4t8w1MSoQ","start":1607446800000,"end":1607448600000},{"id":"Ek5A5qXuGg","start":1607583600000,"end":1607585400000},{"id":"HCiHovFSMP","start":1607598000000,"end":1607599800000},{"id":"GbNeuwIkUX","start":1607612400000,"end":1607616000000},{"id":"tUTM64FObJ","start":1608102000000,"end":1608105600000},{"id":"zz1hM2BSxd","start":1608112800000,"end":1608114600000},{"id":"LntMHCQ7Vm","start":1608123600000,"end":1608127200000},{"id":"PXWjXfsfvX","start":1608134400000,"end":1608138000000},{"id":"Tn4D2tiudI","start":1608188400000,"end":1608192000000},{"id":"Lrm9NjBuul","start":1608202800000,"end":1608204600000},{"id":"l3GLxbBQEO","start":1608217200000,"end":1608220800000},{"id":"MwTG10abQH","start":1608274800000,"end":1608278400000},{"id":"SyK99JwQ37","start":1608289200000,"end":1608292800000},{"id":"BrOi2mzhLQ","start":1608300000000,"end":1608301800000},{"id":"2b6CHg4eNv","start":1608620400000,"end":1608624000000},{"id":"N3FjJwV8Ht","start":1608631200000,"end":1608634800000},{"id":"xTDFeIHhuZ","start":1608642000000,"end":1608645600000},{"id":"NT6so1Io8i","start":1608652800000,"end":1608654600000},{"id":"ksIrGbe8nw","start":1608793200000,"end":1608795000000},{"id":"zjO4HJ7fCA","start":1608807600000,"end":1608809400000},{"id":"r19V83unYB","start":1608818400000,"end":1608822000000},{"id":"HhXovhBuQo","start":1608829200000,"end":1608832800000},{"id":"YFn2d36rh2","start":1608879600000,"end":1608881400000},{"id":"7yJ3KKRVcm","start":1608890400000,"end":1608892200000},{"id":"hldHe59TSB","start":1608904800000,"end":1608908400000},{"id":"ccQwoJ2Ast","start":1608915600000,"end":1608919200000},{"id":"OSHRZINtIk","start":1609225200000,"end":1609227000000},{"id":"2rak90yIYe","start":1609236000000,"end":1609237800000},{"id":"pVZDHpQMX3","start":1609246800000,"end":1609248600000},{"id":"28DuYvhEI0","start":1609261200000,"end":1609264800000},{"id":"Wan6QjHi0R","start":1609398000000,"end":1609401600000},{"id":"yFbEdxUAO7","start":1609412400000,"end":1609416000000},{"id":"lZZvVTCp70","start":1609426800000,"end":1609430400000},{"id":"jsXpCDhhMY","start":1609484400000,"end":1609486200000},{"id":"3vUVeZHyI5","start":1609495200000,"end":1609498800000},{"id":"q2cADlqWwh","start":1609506000000,"end":1609507800000},{"id":"Fbyde0BO5E","start":1609516800000,"end":1609520400000},{"id":"pyfGstjUKM","start":1609830000000,"end":1609831800000},{"id":"0EPBNU7Wlt","start":1609840800000,"end":1609844400000},{"id":"RVJt3XDWcW","start":1609851600000,"end":1609855200000},{"id":"UZ3gNVTHfH","start":1609862400000,"end":1609866000000},{"id":"Gurvbylu0B","start":1610002800000,"end":1610004600000},{"id":"XXFjZ6LJV6","start":1610017200000,"end":1610020800000},{"id":"ZevFdwOaK5","start":1610031600000,"end":1610035200000},{"id":"DAmDJwAv51","start":1610434800000,"end":1610436600000},{"id":"8EFRSu8A4t","start":1610445600000,"end":1610447400000},{"id":"CXxmI1pcmu","start":1610460000000,"end":1610461800000},{"id":"Z3HXdwxOiA","start":1610470800000,"end":1610472600000},{"id":"eVOwvwEYCB","start":1610607600000,"end":1610609400000},{"id":"WM3JrEl5Ra","start":1610618400000,"end":1610620200000},{"id":"0szh2FNS0t","start":1610632800000,"end":1610636400000},{"id":"Jms1dAQUYX","start":1610694000000,"end":1610697600000},{"id":"p1i7usOA73","start":1610704800000,"end":1610706600000},{"id":"h0mCmFxqa8","start":1610715600000,"end":1610717400000},{"id":"EupApSRToi","start":1610730000000,"end":1610731800000},{"id":"exvTT3jn1s","start":1611126000000,"end":1611129600000},{"id":"2HP0Hfa15g","start":1611140400000,"end":1611142200000},{"id":"HGNDuPD4i1","start":1611154800000,"end":1611156600000},{"id":"fPywf7XiuP","start":1611298800000,"end":1611302400000},{"id":"VcxD27ldk4","start":1611313200000,"end":1611315000000},{"id":"DnnShJFmzW","start":1611327600000,"end":1611331200000},{"id":"hcl1lH0CW0","start":1611644400000,"end":1611648000000},{"id":"1JPdQWpXgb","start":1611658800000,"end":1611660600000},{"id":"o9lVMfrwf1","start":1611673200000,"end":1611676800000},{"id":"jsn1aeFMPB","start":1611730800000,"end":1611732600000},{"id":"HOZVk4Hq1e","start":1611741600000,"end":1611743400000},{"id":"Oyiybvx7We","start":1611756000000,"end":1611759600000},{"id":"sy5wDgQ8cY","start":1611766800000,"end":1611768600000},{"id":"HKDanCjemV","start":1611817200000,"end":1611820800000},{"id":"iKJent13w4","start":1611828000000,"end":1611829800000},{"id":"OPRh1F4Z8x","start":1611838800000,"end":1611840600000},{"id":"ag1JACXqgY","start":1611853200000,"end":1611856800000},{"id":"ozq1bzNxTA","start":1611903600000,"end":1611905400000},{"id":"cwb2f6qcbH","start":1611918000000,"end":1611921600000},{"id":"hljJriX7Uj","start":1611928800000,"end":1611930600000},{"id":"iYAOyS64pP","start":1611939600000,"end":1611941400000},{"id":"A3Dl1uxIr5","start":1612335600000,"end":1612337400000},{"id":"ktMryuRNok","start":1612350000000,"end":1612353600000},{"id":"bY63pxOKlu","start":1612360800000,"end":1612364400000},{"id":"R1o3K0sPJk","start":1612422000000,"end":1612423800000},{"id":"Dz1Dkqhnze","start":1612432800000,"end":1612436400000},{"id":"zRKSkTAfzE","start":1612443600000,"end":1612445400000},{"id":"Sy2n5eGtMK","start":1612454400000,"end":1612458000000},{"id":"J7Ty7MLFbL","start":1612854000000,"end":1612855800000},{"id":"1KoSze4dV2","start":1612864800000,"end":1612866600000},{"id":"nZXdoxdMGp","start":1612879200000,"end":1612882800000},{"id":"mbqh09zkWx","start":1612940400000,"end":1612944000000},{"id":"OZkQZv2wNi","start":1612954800000,"end":1612958400000},{"id":"pT8c6wJWQx","start":1612969200000,"end":1612972800000},{"id":"noDSAde5HH","start":1613113200000,"end":1613115000000},{"id":"KWS5vMlU7j","start":1613127600000,"end":1613129400000},{"id":"U4MW17bog8","start":1613142000000,"end":1613143800000},{"id":"KYANiQAyMZ","start":1613458800000,"end":1613460600000},{"id":"1aSGXI6lSv","start":1613473200000,"end":1613475000000},{"id":"ZPU2CTfDjL","start":1613487600000,"end":1613489400000},{"id":"10nBHt6ABk","start":1613631600000,"end":1613635200000},{"id":"SJjTa9t6pu","start":1613642400000,"end":1613644200000},{"id":"ns7A6r6zqi","start":1613653200000,"end":1613655000000},{"id":"SPavDk4aRZ","start":1613664000000,"end":1613667600000},{"id":"jEHkMkqjAi","start":1613718000000,"end":1613721600000},{"id":"zRbVK86Kmv","start":1613728800000,"end":1613732400000},{"id":"Hcb3zQ5EzC","start":1613743200000,"end":1613745000000},{"id":"yyW49R0TSU","start":1614150000000,"end":1614151800000},{"id":"Z8tR5165IQ","start":1614164400000,"end":1614168000000},{"id":"E71oOrKzgP","start":1614175200000,"end":1614177000000},{"id":"1JutMW0Z2m","start":1614186000000,"end":1614189600000},{"id":"BTbhFww1Qd","start":1614322800000,"end":1614326400000},{"id":"cnep5rRgdw","start":1614333600000,"end":1614335400000},{"id":"FVx9UgMKG2","start":1614344400000,"end":1614348000000},{"id":"bOuGQ7uBbu","start":1614355200000,"end":1614357000000},{"id":"YHJU1nVyZx","start":1614668400000,"end":1614670200000},{"id":"z1fnHTixSg","start":1614682800000,"end":1614684600000},{"id":"yk2pal7PiY","start":1614693600000,"end":1614695400000},{"id":"dSF6MZDTmA","start":1614704400000,"end":1614708000000},{"id":"2eGIRwkAb0","start":1614754800000,"end":1614756600000},{"id":"ci9JykZcyS","start":1614769200000,"end":1614771000000},{"id":"2DImmblQkI","start":1614783600000,"end":1614787200000},{"id":"w2qFbhQBUX","start":1614754800000,"end":1614756600000},{"id":"PQAMRqzU4I","start":1614769200000,"end":1614771000000},{"id":"6j7YOFwEVw","start":1614783600000,"end":1614785400000},{"id":"Hbi2kkiTkT","start":1614927600000,"end":1614931200000},{"id":"vfMmzW4DC5","start":1614938400000,"end":1614942000000},{"id":"AxsWfN7kJN","start":1614952800000,"end":1614954600000},{"id":"InPSFtErVH","start":1615359600000,"end":1615361400000},{"id":"ObBk4YoLir","start":1615374000000,"end":1615377600000},{"id":"jobNq9Vxs5","start":1615388400000,"end":1615390200000},{"id":"iZIaosUwg6","start":1615446000000,"end":1615447800000},{"id":"lyXfPFnfPt","start":1615456800000,"end":1615460400000},{"id":"sncp6EnnRc","start":1615471200000,"end":1615474800000},{"id":"0F7cZEpP6X","start":1615482000000,"end":1615483800000},{"id":"fSKyJLiCtK","start":1615532400000,"end":1615536000000},{"id":"gRSGagp6oY","start":1615543200000,"end":1615545000000},{"id":"I7MgjgK9WQ","start":1615557600000,"end":1615561200000},{"id":"WgRZNk02Bv","start":1615568400000,"end":1615572000000},{"id":"ftIEv6Pn47","start":1615878000000,"end":1615881600000},{"id":"gb9MSJxl01","start":1615892400000,"end":1615894200000},{"id":"5HjRKUuULn","start":1615903200000,"end":1615906800000},{"id":"fTeBAmdxlV","start":1615914000000,"end":1615915800000},{"id":"rSKZdsnLmd","start":1615964400000,"end":1615966200000},{"id":"7g3YeQIXSU","start":1615978800000,"end":1615982400000},{"id":"qIYhWj29B9","start":1615989600000,"end":1615993200000},{"id":"y4gnqZUbZm","start":1616000400000,"end":1616004000000},{"id":"39gi5FjZb3","start":1616137200000,"end":1616139000000},{"id":"lqVELlgGGN","start":1616148000000,"end":1616149800000},{"id":"WIQMZJE7w5","start":1616162400000,"end":1616166000000},{"id":"d9EZbDoAAJ","start":1616173200000,"end":1616176800000},{"id":"oHhBXMeCVo","start":1616482800000,"end":1616486400000},{"id":"IZyRZwj6K2","start":1616493600000,"end":1616497200000},{"id":"FILi3uNwkp","start":1616508000000,"end":1616511600000},{"id":"qGsDevUJQo","start":1616655600000,"end":1616657400000},{"id":"MIZON2VsEx","start":1616666400000,"end":1616668200000},{"id":"KyUq4kmr9q","start":1616680800000,"end":1616684400000},{"id":"nC2WiVvmx7","start":1616738400000,"end":1616740200000},{"id":"tL2mdPzUZt","start":1616752800000,"end":1616756400000},{"id":"zLjzj50aAt","start":1616763600000,"end":1616765400000},{"id":"sPsjYVb0QE","start":1616774400000,"end":1616776200000},{"id":"tvWjCqhnPb","start":1617170400000,"end":1617172200000},{"id":"BzRS0OxAsl","start":1617181200000,"end":1617183000000},{"id":"6Wh82zWkyb","start":1617192000000,"end":1617193800000},{"id":"NTutAHLrLw","start":1617202800000,"end":1617204600000},{"id":"szsNU7bOCW","start":1617256800000,"end":1617258600000},{"id":"3oSuQ2mHiV","start":1617271200000,"end":1617273000000},{"id":"pwtw0tkd9T","start":1617285600000,"end":1617289200000},{"id":"bVpqF2GJI0","start":1617343200000,"end":1617346800000},{"id":"qc8iEqvrts","start":1617357600000,"end":1617361200000},{"id":"VpkAYxGlkI","start":1617368400000,"end":1617372000000},{"id":"Wz2q8jysL6","start":1617379200000,"end":1617382800000},{"id":"ILzrevRfXO","start":1617775200000,"end":1617778800000},{"id":"bRNLdUPVeL","start":1617786000000,"end":1617787800000},{"id":"z2xCjhsMFp","start":1617796800000,"end":1617800400000},{"id":"mckCw6hlDX","start":1617811200000,"end":1617814800000},{"id":"Yuaa2UbHjk","start":1617948000000,"end":1617951600000},{"id":"H95zK1faHZ","start":1617962400000,"end":1617964200000},{"id":"HsLrqrmVWj","start":1617976800000,"end":1617980400000},{"id":"ESO2Qs4trd","start":1618293600000,"end":1618295400000},{"id":"940nX6qQxK","start":1618308000000,"end":1618311600000},{"id":"HHqz1wz5bC","start":1618318800000,"end":1618320600000},{"id":"jOGBNpyPt3","start":1618380000000,"end":1618381800000},{"id":"LY1khUQfQb","start":1618394400000,"end":1618398000000},{"id":"6bc2GkKiUR","start":1618408800000,"end":1618410600000},{"id":"amnETHboSJ","start":1618552800000,"end":1618554600000},{"id":"567B4EurNV","start":1618567200000,"end":1618569000000},{"id":"3qKZ4ag0fG","start":1618581600000,"end":1618585200000},{"id":"IZJ2YVaqd4","start":1618984800000,"end":1618988400000},{"id":"l065MID3js","start":1618999200000,"end":1619001000000},{"id":"1cZwwUiE3a","start":1619010000000,"end":1619011800000},{"id":"zYoQn34vS2","start":1619071200000,"end":1619074800000},{"id":"2N3GpVHOPG","start":1619085600000,"end":1619089200000},{"id":"RNYotwFYsB","start":1619096400000,"end":1619098200000},{"id":"PpWzMuwHgP","start":1619107200000,"end":1619109000000},{"id":"orFNYubM5N","start":1619157600000,"end":1619159400000},{"id":"B8wmmezZk8","start":1619172000000,"end":1619173800000},{"id":"9Eo21CB9aT","start":1619186400000,"end":1619190000000},{"id":"NmSfsNP0Mi","start":1619503200000,"end":1619506800000},{"id":"3HGQC4NdqV","start":1619514000000,"end":1619515800000},{"id":"DoA3E4zQR3","start":1619524800000,"end":1619528400000},{"id":"gKp4S9RQYl","start":1619539200000,"end":1619541000000},{"id":"JtCkGu75tl","start":1619589600000,"end":1619591400000},{"id":"Qz93TwfwhQ","start":1619604000000,"end":1619607600000},{"id":"Zi10yENfbU","start":1619618400000,"end":1619620200000},{"id":"zj4fra36Zv","start":1619676000000,"end":1619679600000},{"id":"0kYU6CbEJj","start":1619686800000,"end":1619688600000},{"id":"rOFCY64Yvw","start":1619697600000,"end":1619701200000},{"id":"WvUFTEcYvM","start":1619712000000,"end":1619715600000},{"id":"iS8v0tTmAD","start":1620108000000,"end":1620111600000},{"id":"XStEw3BsIr","start":1620122400000,"end":1620126000000},{"id":"p8ycgfhZIK","start":1620136800000,"end":1620140400000},{"id":"HhNKaQ8M2q","start":1620194400000,"end":1620196200000},{"id":"Wa0nbrH5r3","start":1620208800000,"end":1620210600000},{"id":"wcGLyImOai","start":1620219600000,"end":1620221400000},{"id":"MmqXBvb4Wy","start":1620230400000,"end":1620232200000},{"id":"fc4anCl5Zi","start":1620280800000,"end":1620284400000},{"id":"AVnoYq7H75","start":1620295200000,"end":1620297000000},{"id":"u37P3IDBMh","start":1620309600000,"end":1620313200000},{"id":"KjSVt8MiSL","start":1620712800000,"end":1620714600000},{"id":"Dtz6SljjVu","start":1620727200000,"end":1620730800000},{"id":"r5NA97XsRz","start":1620741600000,"end":1620745200000},{"id":"bX5uaPbU9p","start":1620799200000,"end":1620802800000},{"id":"dsJk7AbimP","start":1620810000000,"end":1620813600000},{"id":"GuOEXgpH4n","start":1620824400000,"end":1620828000000},{"id":"V9KTgqIUoI","start":1620835200000,"end":1620838800000},{"id":"t5i1QeI8c1","start":1620885600000,"end":1620889200000},{"id":"aNZNHiIC8e","start":1620900000000,"end":1620903600000},{"id":"li1CyrcdLi","start":1620910800000,"end":1620912600000},{"id":"GKgFOgrjxv","start":1620972000000,"end":1620975600000},{"id":"uMNLYRwTLq","start":1620982800000,"end":1620986400000},{"id":"WD9ELtaEeO","start":1620997200000,"end":1621000800000},{"id":"cXdGNGSxan","start":1621404000000,"end":1621407600000},{"id":"yfZfxL3pQ1","start":1621414800000,"end":1621418400000},{"id":"FiZrLQFxyJ","start":1621429200000,"end":1621431000000},{"id":"lr0T1lvI0k","start":1621440000000,"end":1621441800000},{"id":"qmovNoFRNU","start":1621490400000,"end":1621494000000},{"id":"DOPzbwYk6t","start":1621504800000,"end":1621508400000},{"id":"FCOyDjZUWk","start":1621515600000,"end":1621517400000},{"id":"LSfTbRPclR","start":1621526400000,"end":1621530000000},{"id":"1V4JfEH3Um","start":1621576800000,"end":1621580400000},{"id":"KrBCTTkF0N","start":1621591200000,"end":1621594800000},{"id":"pXFxmFxVmK","start":1621605600000,"end":1621609200000},{"id":"KXGzMSKU7E","start":1622008800000,"end":1622010600000},{"id":"5J8sBC0Xlp","start":1622019600000,"end":1622023200000},{"id":"cqcbZm9ErM","start":1622034000000,"end":1622035800000},{"id":"SFZyMRcKsF","start":1622044800000,"end":1622046600000},{"id":"Fg2hxpHU9S","start":1622095200000,"end":1622098800000},{"id":"SYYVnv6sTu","start":1622106000000,"end":1622109600000},{"id":"gzc5LXKDz2","start":1622120400000,"end":1622124000000},{"id":"xsg1leJo9g","start":1622131200000,"end":1622134800000},{"id":"K2kzfpFxOn","start":1622181600000,"end":1622185200000},{"id":"7NmwNRsy1I","start":1622192400000,"end":1622194200000},{"id":"KOs4LDlcqf","start":1622206800000,"end":1622208600000},{"id":"VCojCneqEx","start":1622217600000,"end":1622221200000},{"id":"aPQonEfhiE","start":1622527200000,"end":1622530800000},{"id":"htuwIPGGn8","start":1622541600000,"end":1622543400000},{"id":"BunzbWJ589","start":1622552400000,"end":1622554200000},{"id":"ggP1rIoyT3","start":1622563200000,"end":1622565000000},{"id":"bx0XrZBXme","start":1622700000000,"end":1622703600000},{"id":"bTP5buzrff","start":1622714400000,"end":1622716200000},{"id":"bgKXvWyNAR","start":1622728800000,"end":1622730600000},{"id":"vS6RtGsYnC","start":1623132000000,"end":1623133800000},{"id":"WF5TIO2hpv","start":1623146400000,"end":1623150000000},{"id":"AmN7pBqLRp","start":1623160800000,"end":1623162600000},{"id":"2w8GFt3Su3","start":1623218400000,"end":1623220200000},{"id":"Z4Qy1KQTwp","start":1623229200000,"end":1623231000000},{"id":"tVZhbEO9xD","start":1623240000000,"end":1623243600000},{"id":"ZSjoMbxitM","start":1623254400000,"end":1623256200000},{"id":"BAD1QvFmuU","start":1623304800000,"end":1623308400000},{"id":"Srt6e0QV3i","start":1623319200000,"end":1623321000000},{"id":"cRjhqFBWVn","start":1623333600000,"end":1623337200000},{"id":"9XII9iZvvZ","start":1623823200000,"end":1623826800000},{"id":"fKs5qU5Jgu","start":1623837600000,"end":1623841200000},{"id":"MeDvcYUBZ7","start":1623852000000,"end":1623855600000},{"id":"2ObXei8UeR","start":1623909600000,"end":1623911400000},{"id":"7Xh4CPoFpk","start":1623924000000,"end":1623927600000},{"id":"tRrOHlECMb","start":1623938400000,"end":1623940200000},{"id":"rLnULV8v9z","start":1623996000000,"end":1623999600000},{"id":"jbhzWKlG3P","start":1624006800000,"end":1624010400000},{"id":"2q43eag91C","start":1624017600000,"end":1624019400000},{"id":"aw2Wn26zqu","start":1624028400000,"end":1624032000000},{"id":"h6Q8P90N34","start":1624341600000,"end":1624345200000},{"id":"fM3tOzwLoa","start":1624352400000,"end":1624356000000},{"id":"Zh9fjtn6IX","start":1624366800000,"end":1624368600000},{"id":"Jt6Q8hNkDV","start":1624428000000,"end":1624429800000},{"id":"GTRhLkLpjb","start":1624442400000,"end":1624444200000},{"id":"5TJUOy2HMS","start":1624453200000,"end":1624456800000},{"id":"kqfzcv76xe","start":1624464000000,"end":1624467600000},{"id":"7R0rwPs8Co","start":1624514400000,"end":1624516200000},{"id":"QJOXzb0wi6","start":1624528800000,"end":1624530600000},{"id":"JgG6ZVYdJ9","start":1624543200000,"end":1624546800000},{"id":"zq7e1aNTui","start":1624946400000,"end":1624950000000},{"id":"dXJWhLoXGw","start":1624957200000,"end":1624960800000},{"id":"HOqVJTWpyc","start":1624968000000,"end":1624969800000},{"id":"UHnQGxJOmI","start":1624982400000,"end":1624984200000},{"id":"879jsEoiJ4","start":1625119200000,"end":1625121000000},{"id":"YkwBrFbxre","start":1625130000000,"end":1625131800000},{"id":"BCgbgMMFKI","start":1625144400000,"end":1625148000000},{"id":"7Le4o0sOKw","start":1625119200000,"end":1625121000000},{"id":"Cu87ckTFiC","start":1625133600000,"end":1625137200000},{"id":"W1WW98CDiF","start":1625144400000,"end":1625148000000},{"id":"qAUDdBk5ne","start":1625551200000,"end":1625553000000},{"id":"gbvr3dvoY0","start":1625565600000,"end":1625569200000},{"id":"LSQNpGCtz4","start":1625580000000,"end":1625581800000},{"id":"yhdB6g0GfE","start":1625724000000,"end":1625725800000},{"id":"zXZXCMBzGG","start":1625738400000,"end":1625742000000},{"id":"rsRC8kyWbI","start":1625752800000,"end":1625754600000},{"id":"2diYR0aXxr","start":1625810400000,"end":1625814000000},{"id":"GDRUb4mogk","start":1625824800000,"end":1625828400000},{"id":"BH58hlXQkQ","start":1625835600000,"end":1625837400000},{"id":"OqwOd1BcAV","start":1625846400000,"end":1625848200000},{"id":"rD0MY0DYfh","start":1626242400000,"end":1626246000000},{"id":"tZJjLuFjyM","start":1626253200000,"end":1626255000000},{"id":"LmNjZNH9Rt","start":1626267600000,"end":1626269400000},{"id":"xTsW74uCnk","start":1626328800000,"end":1626332400000},{"id":"XRoC3nNEB1","start":1626343200000,"end":1626345000000},{"id":"IXyVmJPX8D","start":1626354000000,"end":1626355800000},{"id":"GSw4dpszWF","start":1626847200000,"end":1626849000000},{"id":"jRSa3azwkf","start":1626861600000,"end":1626863400000},{"id":"ip7SHbdJ8p","start":1626876000000,"end":1626877800000},{"id":"TtdshItxak","start":1626933600000,"end":1626937200000},{"id":"3Q2eYeqDOB","start":1626948000000,"end":1626951600000},{"id":"8PzkOUbGpi","start":1626962400000,"end":1626966000000},{"id":"zisiVTnE53","start":1627020000000,"end":1627021800000},{"id":"6WEqa4ljuF","start":1627030800000,"end":1627032600000},{"id":"5gOtmX5Z9h","start":1627041600000,"end":1627043400000},{"id":"s1Yririqc6","start":1627056000000,"end":1627057800000},{"id":"F8qIETgQ1J","start":1627365600000,"end":1627367400000},{"id":"EHckyhUtRY","start":1627380000000,"end":1627381800000},{"id":"B4bRszR50l","start":1627394400000,"end":1627396200000},{"id":"IgL0SSxGwF","start":1627538400000,"end":1627540200000},{"id":"8JzeBlWS1E","start":1627549200000,"end":1627551000000},{"id":"10qyQRhKJm","start":1627563600000,"end":1627567200000},{"id":"XK0vrDV75t","start":1627970400000,"end":1627972200000},{"id":"9DbY7Kqmp6","start":1627984800000,"end":1627988400000},{"id":"owdfESLKuE","start":1627999200000,"end":1628001000000},{"id":"2T2EwuLHVZ","start":1628143200000,"end":1628146800000},{"id":"9mQBYkBN2o","start":1628154000000,"end":1628155800000},{"id":"0c6WWyKwmd","start":1628168400000,"end":1628170200000},{"id":"wXVcMFhqwa","start":1628179200000,"end":1628182800000},{"id":"gUDC4Fbulw","start":1628661600000,"end":1628663400000},{"id":"vs261kBfus","start":1628672400000,"end":1628674200000},{"id":"JvK3u9niRd","start":1628686800000,"end":1628690400000},{"id":"OfXmko8HX8","start":1628697600000,"end":1628701200000},{"id":"AXh5K4Oq6G","start":1628834400000,"end":1628836200000},{"id":"Jmif7gfHrI","start":1628848800000,"end":1628850600000},{"id":"BfzDo1DXnm","start":1628863200000,"end":1628865000000},{"id":"lyBanzivKi","start":1629180000000,"end":1629183600000},{"id":"YwZn0iIHmf","start":1629190800000,"end":1629194400000},{"id":"CbbJnLO4id","start":1629205200000,"end":1629207000000},{"id":"Aaet7plg7A","start":1629352800000,"end":1629354600000},{"id":"pMA37G9tAt","start":1629367200000,"end":1629370800000},{"id":"8SXBBS6kPc","start":1629381600000,"end":1629385200000},{"id":"9e7JULKXCx","start":1629784800000,"end":1629786600000},{"id":"mZQhdH8w8k","start":1629799200000,"end":1629802800000},{"id":"44SZbIdnlT","start":1629813600000,"end":1629815400000},{"id":"1o01GsuKlx","start":1629957600000,"end":1629961200000},{"id":"RfMBoWf9S4","start":1629968400000,"end":1629970200000},{"id":"QD2FAtFZAi","start":1629982800000,"end":1629986400000},{"id":"o1wjgn1oKb","start":1629993600000,"end":1629997200000},{"id":"t64kgD1919","start":1630389600000,"end":1630391400000},{"id":"4tgGOx5VKL","start":1630400400000,"end":1630402200000},{"id":"xwNybsut7e","start":1630414800000,"end":1630416600000},{"id":"tbFtr3Q5LG","start":1630476000000,"end":1630477800000},{"id":"r1Nh8QDVeA","start":1630490400000,"end":1630494000000},{"id":"ziUl8oq1HT","start":1630504800000,"end":1630506600000},{"id":"JTNI0kWYLx","start":1630562400000,"end":1630564200000},{"id":"nsS3af4BSS","start":1630573200000,"end":1630576800000},{"id":"kO0KVAhxY3","start":1630587600000,"end":1630591200000},{"id":"5fSTPBmQdJ","start":1630598400000,"end":1630600200000},{"id":"9v30Sw1Gx3","start":1630648800000,"end":1630650600000},{"id":"7kTR2sd1sH","start":1630659600000,"end":1630663200000},{"id":"AF2j4QotEj","start":1630674000000,"end":1630677600000},{"id":"NW3roNxMOP","start":1630684800000,"end":1630688400000},{"id":"3g4UjecFkF","start":1631080800000,"end":1631082600000},{"id":"eP9iiXxktz","start":1631091600000,"end":1631093400000},{"id":"Aq1HHsgoSC","start":1631102400000,"end":1631106000000},{"id":"UIytokFk4r","start":1631116800000,"end":1631118600000},{"id":"fV28SFlsys","start":1631253600000,"end":1631257200000},{"id":"IMySTUEhjw","start":1631264400000,"end":1631268000000},{"id":"L1lhEGr55g","start":1631275200000,"end":1631278800000},{"id":"teJfCEaXlj","start":1631289600000,"end":1631291400000},{"id":"VrgSwB1Lhn","start":1631685600000,"end":1631689200000},{"id":"tmlBSpaHTF","start":1631696400000,"end":1631698200000},{"id":"NiGg2eaoc2","start":1631710800000,"end":1631714400000},{"id":"38603cgYZU","start":1631721600000,"end":1631723400000},{"id":"3l9IOgLqdR","start":1631858400000,"end":1631862000000},{"id":"LzpFtKidt4","start":1631872800000,"end":1631876400000},{"id":"yujS2poEEr","start":1631883600000,"end":1631887200000},{"id":"NzyfsDSB0H","start":1631894400000,"end":1631898000000},{"id":"dKiTU8W2pz","start":1632204000000,"end":1632207600000},{"id":"BYmDActwth","start":1632218400000,"end":1632222000000},{"id":"MQLraZEgjv","start":1632229200000,"end":1632232800000},{"id":"4GKyKU2RLK","start":1632240000000,"end":1632241800000},{"id":"RKN6Vh7yZX","start":1632290400000,"end":1632294000000},{"id":"HHQLeAwU0u","start":1632301200000,"end":1632304800000},{"id":"FYZoWFBme7","start":1632315600000,"end":1632317400000},{"id":"JXvoMmjNgr","start":1632326400000,"end":1632328200000},{"id":"pCOWX3fONW","start":1632376800000,"end":1632380400000},{"id":"g8sILQhLCx","start":1632391200000,"end":1632393000000},{"id":"1xBn4HYCSF","start":1632405600000,"end":1632407400000},{"id":"HeX1Sllc0z","start":1632808800000,"end":1632812400000},{"id":"w2B4N6MFnC","start":1632819600000,"end":1632823200000},{"id":"hRiAauy7Ou","start":1632834000000,"end":1632837600000},{"id":"6GfiZ16S9y","start":1632844800000,"end":1632848400000},{"id":"hYdvbcBqtH","start":1632895200000,"end":1632897000000},{"id":"tna1luDzoV","start":1632909600000,"end":1632911400000},{"id":"GZVOo8X2r7","start":1632924000000,"end":1632927600000},{"id":"Jda8kpPDZD","start":1633068000000,"end":1633069800000},{"id":"ggzNpFXUJY","start":1633078800000,"end":1633080600000},{"id":"2NqwoDbiBz","start":1633089600000,"end":1633091400000},{"id":"DLw0jXAT2N","start":1633100400000,"end":1633102200000},{"id":"pRnXDZriVx","start":1633068000000,"end":1633069800000},{"id":"NHmWZaygSz","start":1633082400000,"end":1633086000000},{"id":"tcpTpitZbh","start":1633096800000,"end":1633098600000},{"id":"lsRC8noUdj","start":1633413600000,"end":1633415400000},{"id":"NMGxAwPWp4","start":1633428000000,"end":1633431600000},{"id":"3awfr5zPw5","start":1633438800000,"end":1633442400000},{"id":"EOx9xEI44k","start":1633449600000,"end":1633453200000},{"id":"d6noTDoS1J","start":1633586400000,"end":1633590000000},{"id":"p8p7dstOUi","start":1633597200000,"end":1633600800000},{"id":"KU8RRTYl77","start":1633611600000,"end":1633613400000},{"id":"6aocFcMIPT","start":1633622400000,"end":1633624200000},{"id":"k5GHCVaFJ3","start":1634104800000,"end":1634106600000},{"id":"l5sJL1BBy7","start":1634115600000,"end":1634117400000},{"id":"2TpMay6swp","start":1634126400000,"end":1634128200000},{"id":"uXI5H9ZsRE","start":1634140800000,"end":1634142600000},{"id":"eURFMBFwkO","start":1634277600000,"end":1634281200000},{"id":"uv6XZb7qvP","start":1634288400000,"end":1634292000000},{"id":"eGx0mZOU98","start":1634299200000,"end":1634301000000},{"id":"OdnTPvPJLU","start":1634313600000,"end":1634317200000},{"id":"Jh7pkFbun8","start":1634709600000,"end":1634713200000},{"id":"0z73qowdUm","start":1634724000000,"end":1634727600000},{"id":"TJlxWKfZOa","start":1634734800000,"end":1634738400000},{"id":"Apx4eaTSNf","start":1634745600000,"end":1634747400000},{"id":"gXEVBOxHqx","start":1634796000000,"end":1634797800000},{"id":"TgIy1u1pwG","start":1634810400000,"end":1634814000000},{"id":"YlNFWDk6GU","start":1634821200000,"end":1634823000000},{"id":"xUyBfKTCTv","start":1634882400000,"end":1634884200000},{"id":"djkwYLIoPz","start":1634896800000,"end":1634898600000},{"id":"Aj0G1878D0","start":1634907600000,"end":1634911200000},{"id":"RmJqG860M7","start":1634918400000,"end":1634922000000},{"id":"pCOiEQgMYR","start":1635228000000,"end":1635231600000},{"id":"dZ0Yh1QWQ8","start":1635238800000,"end":1635240600000},{"id":"7kvWsbD2z0","start":1635249600000,"end":1635251400000},{"id":"ia2XM4A9SW","start":1635264000000,"end":1635267600000},{"id":"VfmMiJsx9m","start":1635400800000,"end":1635404400000},{"id":"HnZciK1oH1","start":1635411600000,"end":1635413400000},{"id":"nJIMuIN1TU","start":1635426000000,"end":1635427800000},{"id":"Kxb8Qr5Ujb","start":1635436800000,"end":1635440400000},{"id":"bgKPYwQDrv","start":1635922800000,"end":1635924600000},{"id":"IC9ONW2DQE","start":1635933600000,"end":1635935400000},{"id":"nEQ0bDYsbv","start":1635948000000,"end":1635949800000},{"id":"yGSKbmS0Tn","start":1635958800000,"end":1635962400000},{"id":"pHP7bTpHrQ","start":1636009200000,"end":1636012800000},{"id":"G1FAlsdm2g","start":1636020000000,"end":1636023600000},{"id":"Yv3LtceWHV","start":1636034400000,"end":1636038000000},{"id":"xYmo6hmJqJ","start":1636095600000,"end":1636097400000},{"id":"kvOTU9mjan","start":1636110000000,"end":1636111800000},{"id":"pkjgcToTKV","start":1636120800000,"end":1636122600000},{"id":"DvK6WAsan7","start":1636527600000,"end":1636529400000},{"id":"zkJVFM5Q7C","start":1636538400000,"end":1636540200000},{"id":"zLy2psziEk","start":1636549200000,"end":1636552800000},{"id":"wJkANkH8zT","start":1636560000000,"end":1636561800000},{"id":"M1cXVk5OEp","start":1636614000000,"end":1636617600000},{"id":"CbQ9MStdq7","start":1636628400000,"end":1636632000000},{"id":"sDfAh1LCoR","start":1636639200000,"end":1636641000000},{"id":"0XRqIpBNaI","start":1636650000000,"end":1636653600000},{"id":"YbOksBckJQ","start":1637046000000,"end":1637049600000},{"id":"sQ8kWw2r87","start":1637056800000,"end":1637060400000},{"id":"ZW1O73CqIg","start":1637067600000,"end":1637071200000},{"id":"YmZ2S18XhD","start":1637078400000,"end":1637080200000},{"id":"Kbw3ieTCS3","start":1637218800000,"end":1637220600000},{"id":"AXRTjfg2mR","start":1637229600000,"end":1637233200000},{"id":"B7HApAi7LJ","start":1637240400000,"end":1637242200000},{"id":"iSJwMRjOp9","start":1637254800000,"end":1637256600000},{"id":"PhhaLEY8RO","start":1637650800000,"end":1637652600000},{"id":"Xy3FbxfyU5","start":1637665200000,"end":1637668800000},{"id":"LbglbS1xrT","start":1637679600000,"end":1637681400000},{"id":"la89N5trPE","start":1637737200000,"end":1637740800000},{"id":"zA4suWnysh","start":1637751600000,"end":1637753400000},{"id":"AXaIufIuiI","start":1637766000000,"end":1637769600000},{"id":"w1AMq4sNIl","start":1637910000000,"end":1637911800000},{"id":"qui6mKXMw1","start":1637920800000,"end":1637922600000},{"id":"Cwhzk2UKt4","start":1637931600000,"end":1637933400000},{"id":"1o4gKRWMna","start":1637942400000,"end":1637946000000},{"id":"azLkwxb2ru","start":1638255600000,"end":1638259200000},{"id":"uYbu7VdKKu","start":1638266400000,"end":1638268200000},{"id":"3Q7lhsMicr","start":1638277200000,"end":1638279000000},{"id":"Rr82PhpKqT","start":1638291600000,"end":1638293400000},{"id":"61YkPSdIe7","start":1638342000000,"end":1638345600000},{"id":"BVZ9wWWFR2","start":1638352800000,"end":1638356400000},{"id":"S4bbOv8IiH","start":1638367200000,"end":1638370800000},{"id":"jyrurFIX7j","start":1638378000000,"end":1638379800000},{"id":"SUr9xzsvVJ","start":1638514800000,"end":1638518400000},{"id":"wC89yZkRnS","start":1638529200000,"end":1638532800000},{"id":"oflYg92iug","start":1638543600000,"end":1638545400000},{"id":"toqYCZfHyi","start":1638860400000,"end":1638864000000},{"id":"c514rFjoiu","start":1638871200000,"end":1638873000000},{"id":"LCc2x3D7Yh","start":1638882000000,"end":1638883800000},{"id":"OqhVX1FNlZ","start":1638896400000,"end":1638898200000},{"id":"71QgJWsFff","start":1638946800000,"end":1638948600000},{"id":"ImrBg3zw2k","start":1638961200000,"end":1638963000000},{"id":"DpWVV3MBzj","start":1638975600000,"end":1638977400000},{"id":"eUUwaKyD3B","start":1639119600000,"end":1639123200000},{"id":"V0beIe72FZ","start":1639134000000,"end":1639137600000},{"id":"TWjhZxooL1","start":1639144800000,"end":1639146600000},{"id":"DZgzqHBVrL","start":1639155600000,"end":1639157400000},{"id":"toERlttWGC","start":1639465200000,"end":1639468800000},{"id":"ue4c6Rc7HM","start":1639476000000,"end":1639477800000},{"id":"wmIS3DWZmt","start":1639490400000,"end":1639492200000},{"id":"Oa0AHKUnBA","start":1639501200000,"end":1639503000000},{"id":"woE5kJT7sJ","start":1639551600000,"end":1639555200000},{"id":"iIeSoWn53i","start":1639566000000,"end":1639569600000},{"id":"Ipt1PDwUHx","start":1639576800000,"end":1639580400000},{"id":"9Reo52a80k","start":1639724400000,"end":1639726200000},{"id":"obJ1F0waqx","start":1639735200000,"end":1639737000000},{"id":"gUVXQ6gGsF","start":1639749600000,"end":1639751400000},{"id":"jbPXHuTWr4","start":1639760400000,"end":1639762200000},{"id":"2SITlIdT8p","start":1640070000000,"end":1640073600000},{"id":"XVGK1e2Y79","start":1640084400000,"end":1640086200000},{"id":"IPAclqB4L2","start":1640098800000,"end":1640100600000},{"id":"1fZzK3C07x","start":1640156400000,"end":1640158200000},{"id":"oSVg0diQhe","start":1640167200000,"end":1640170800000},{"id":"jq2dgmlW5V","start":1640178000000,"end":1640179800000},{"id":"QDAwVbYjMX","start":1640188800000,"end":1640190600000},{"id":"T6RRBSwpJZ","start":1640329200000,"end":1640332800000},{"id":"svBcg8uApJ","start":1640340000000,"end":1640343600000},{"id":"pSwvBvKgMn","start":1640350800000,"end":1640352600000},{"id":"A9iz9XLYor","start":1640361600000,"end":1640363400000},{"id":"gbeKHD3aUt","start":1640761200000,"end":1640763000000},{"id":"KO4E2TNnAJ","start":1640772000000,"end":1640773800000},{"id":"8h5NJOfBXV","start":1640786400000,"end":1640790000000},{"id":"x6srMveBf2","start":1640847600000,"end":1640849400000},{"id":"DPsQatGkz4","start":1640858400000,"end":1640860200000},{"id":"aPyKhobPX2","start":1640869200000,"end":1640871000000},{"id":"fzsEeBZbrt","start":1640880000000,"end":1640883600000},{"id":"AABgHlisCD","start":1641279600000,"end":1641281400000},{"id":"1kPQI6GA64","start":1641290400000,"end":1641292200000},{"id":"8pkFAl3SJG","start":1641304800000,"end":1641306600000},{"id":"QQslF8dfmx","start":1641366000000,"end":1641367800000},{"id":"53Zx7J3l4c","start":1641376800000,"end":1641378600000},{"id":"h4UZxi0Q54","start":1641391200000,"end":1641394800000},{"id":"90WfpR6HdF","start":1641538800000,"end":1641542400000},{"id":"m7bVDAtqL9","start":1641549600000,"end":1641553200000},{"id":"ti3jVPj2uQ","start":1641560400000,"end":1641562200000},{"id":"5gCs1zbpw9","start":1641571200000,"end":1641573000000},{"id":"QhXUIG1MqE","start":1641970800000,"end":1641972600000},{"id":"mnwQJpawj9","start":1641985200000,"end":1641987000000},{"id":"rzMiUlS72d","start":1641999600000,"end":1642001400000},{"id":"N5PfftBvDf","start":1642143600000,"end":1642145400000},{"id":"H1OEL7TGn2","start":1642158000000,"end":1642159800000},{"id":"ibnhPEoPIW","start":1642168800000,"end":1642170600000},{"id":"CIi9FLaSuk","start":1642489200000,"end":1642492800000},{"id":"uCxJ1fSMp1","start":1642503600000,"end":1642505400000},{"id":"9TtS8CsrV7","start":1642518000000,"end":1642519800000},{"id":"Bqwq8LsWV6","start":1642662000000,"end":1642663800000},{"id":"Mj4me1NSeC","start":1642672800000,"end":1642674600000},{"id":"lKXQnwgjYa","start":1642683600000,"end":1642685400000},{"id":"TlfExe7Xpq","start":1642694400000,"end":1642698000000},{"id":"UJVvz4Hxee","start":1642748400000,"end":1642752000000},{"id":"7pzIAwrlga","start":1642762800000,"end":1642764600000},{"id":"jXVW90zVaA","start":1642773600000,"end":1642777200000},{"id":"sK07hAqfKr","start":1642784400000,"end":1642786200000},{"id":"ruhFJrwEb2","start":1643094000000,"end":1643097600000},{"id":"nyGO5dC7Jr","start":1643104800000,"end":1643106600000},{"id":"LTuotiEQnL","start":1643115600000,"end":1643119200000},{"id":"yxWh2Wk9Am","start":1643130000000,"end":1643131800000},{"id":"5zG9ScFoAB","start":1643180400000,"end":1643184000000},{"id":"KGDBAXZQ0B","start":1643194800000,"end":1643198400000},{"id":"KogaxERqpC","start":1643205600000,"end":1643209200000},{"id":"N351dXTPHA","start":1643266800000,"end":1643270400000},{"id":"pH2i7Gf2cp","start":1643277600000,"end":1643279400000},{"id":"XdFTSyUaEY","start":1643292000000,"end":1643293800000},{"id":"UPrGlgt6E3","start":1643353200000,"end":1643355000000},{"id":"OLEv6IUBIy","start":1643367600000,"end":1643371200000},{"id":"7jBqzJZ9b7","start":1643382000000,"end":1643385600000},{"id":"ZmxbQqxYo4","start":1643698800000,"end":1643700600000},{"id":"JjCOzJrRoV","start":1643709600000,"end":1643713200000},{"id":"BaaPM7ZXEn","start":1643720400000,"end":1643722200000},{"id":"nJzjv6IClZ","start":1643731200000,"end":1643734800000},{"id":"lzJmoMJcEn","start":1643785200000,"end":1643788800000},{"id":"peZYSPnmXb","start":1643799600000,"end":1643801400000},{"id":"FypHQsyENz","start":1643810400000,"end":1643814000000},{"id":"yiZC5wO8oZ","start":1643871600000,"end":1643875200000},{"id":"c8XjP85zPU","start":1643886000000,"end":1643889600000},{"id":"t8YCNfaAtT","start":1643900400000,"end":1643904000000},{"id":"3hGhFDGOqk","start":1643958000000,"end":1643961600000},{"id":"ltPY06QrBa","start":1643968800000,"end":1643972400000},{"id":"2ZZ1pHOzsj","start":1643979600000,"end":1643981400000},{"id":"PrcWAuTarU","start":1643994000000,"end":1643997600000},{"id":"ud8KLlS9RR","start":1644303600000,"end":1644305400000},{"id":"C4yUjbW4NU","start":1644318000000,"end":1644319800000},{"id":"jpxArt7P9s","start":1644328800000,"end":1644330600000},{"id":"9VFBM4N4LI","start":1644339600000,"end":1644343200000},{"id":"xnuFsAyewo","start":1644390000000,"end":1644391800000},{"id":"WrruBstBGY","start":1644400800000,"end":1644404400000},{"id":"WiaaTmiV6v","start":1644411600000,"end":1644413400000},{"id":"XDAa9MjzdF","start":1644426000000,"end":1644427800000},{"id":"msiTJgvLh4","start":1644562800000,"end":1644564600000},{"id":"oppsnalhis","start":1644573600000,"end":1644575400000},{"id":"wA9jojwJuU","start":1644584400000,"end":1644586200000},{"id":"83rk4iwAUa","start":1644598800000,"end":1644600600000},{"id":"d04UFowyNt","start":1644994800000,"end":1644998400000},{"id":"CHER701bmc","start":1645009200000,"end":1645011000000},{"id":"ASHIZJP5ae","start":1645020000000,"end":1645023600000},{"id":"wKdGLUsIT8","start":1645030800000,"end":1645032600000},{"id":"891ojoVhyr","start":1645167600000,"end":1645169400000},{"id":"i4Qc9r2t9r","start":1645178400000,"end":1645180200000},{"id":"Emqs7A7NY9","start":1645192800000,"end":1645194600000},{"id":"LQGyYcJwFk","start":1645203600000,"end":1645205400000},{"id":"SA4bdvGPXz","start":1645513200000,"end":1645516800000},{"id":"tJWB7nszjm","start":1645527600000,"end":1645531200000},{"id":"ufQYJOWbfu","start":1645538400000,"end":1645542000000},{"id":"XzOQE3mztB","start":1645686000000,"end":1645687800000},{"id":"iEQbsryl8k","start":1645696800000,"end":1645700400000},{"id":"AsAbamAFyf","start":1645707600000,"end":1645709400000},{"id":"knUehEgbZM","start":1645722000000,"end":1645723800000},{"id":"xeMFYnWtNS","start":1645772400000,"end":1645776000000},{"id":"u76QUqlXtN","start":1645783200000,"end":1645785000000},{"id":"ZTHF6DW6Xw","start":1645794000000,"end":1645797600000},{"id":"8NnmfpcgiD","start":1645804800000,"end":1645808400000},{"id":"o4767rGFDb","start":1646118000000,"end":1646121600000},{"id":"ZCDSdIooMD","start":1646132400000,"end":1646134200000},{"id":"mFcioFrhxE","start":1646143200000,"end":1646146800000},{"id":"Qok0B6gIgx","start":1646154000000,"end":1646157600000},{"id":"T7AHpbDAVL","start":1646204400000,"end":1646206200000},{"id":"nbV592dqgn","start":1646215200000,"end":1646217000000},{"id":"xongjqulKO","start":1646226000000,"end":1646227800000},{"id":"Uk4GPaQn1L","start":1646240400000,"end":1646242200000},{"id":"dpEejFoBY7","start":1646118000000,"end":1646121600000},{"id":"ihWeqOYHjU","start":1646128800000,"end":1646130600000},{"id":"dutaWg5kh7","start":1646143200000,"end":1646146800000},{"id":"eiEdliBBw5","start":1646290800000,"end":1646292600000},{"id":"6pH0HVWSaM","start":1646305200000,"end":1646308800000},{"id":"JNHokaIzDR","start":1646316000000,"end":1646319600000},{"id":"OGFYITEOjU","start":1646326800000,"end":1646328600000},{"id":"dru9jwqLA0","start":1646377200000,"end":1646379000000},{"id":"pR1v0w5UxO","start":1646391600000,"end":1646395200000},{"id":"0v1Hjl4ZTw","start":1646406000000,"end":1646409600000},{"id":"tuQKHPhaz5","start":1646809200000,"end":1646812800000},{"id":"ZAuMUucC2n","start":1646820000000,"end":1646821800000},{"id":"ma45MggnGD","start":1646830800000,"end":1646834400000},{"id":"oMjfiMnocc","start":1646841600000,"end":1646843400000},{"id":"zdIeutgjky","start":1646895600000,"end":1646897400000},{"id":"HJzAW7e5df","start":1646910000000,"end":1646913600000},{"id":"ccfS6PRYlS","start":1646920800000,"end":1646922600000},{"id":"o2OyqbcVCE","start":1646982000000,"end":1646985600000},{"id":"wVUrZ1n16X","start":1646996400000,"end":1647000000000},{"id":"HhftUdOC4P","start":1647007200000,"end":1647010800000},{"id":"qruie5wQFD","start":1647414000000,"end":1647415800000},{"id":"iM7Vz8GE0d","start":1647428400000,"end":1647432000000},{"id":"VDnb5b3MFP","start":1647439200000,"end":1647442800000},{"id":"pOI4t10au3","start":1647450000000,"end":1647451800000},{"id":"hSlKx0xKV9","start":1647586800000,"end":1647588600000},{"id":"lxTTG8aBKd","start":1647597600000,"end":1647599400000},{"id":"kCvefs9PeW","start":1647612000000,"end":1647615600000},{"id":"ca7v2cEQN3","start":1647932400000,"end":1647936000000},{"id":"TEd3pXCNFx","start":1647946800000,"end":1647948600000},{"id":"hTeyXRtQbx","start":1647961200000,"end":1647963000000},{"id":"eQalCIeUxN","start":1648018800000,"end":1648020600000},{"id":"90RwKAzXQM","start":1648029600000,"end":1648033200000},{"id":"vAULHy2YYR","start":1648044000000,"end":1648047600000},{"id":"bERsQhBSaE","start":1648054800000,"end":1648056600000},{"id":"7RoyrrkZP6","start":1648105200000,"end":1648108800000},{"id":"krYVLMcpq7","start":1648116000000,"end":1648117800000},{"id":"LC2VFhlKm9","start":1648130400000,"end":1648134000000},{"id":"pKh6oFsHSi","start":1648141200000,"end":1648143000000},{"id":"Uz7mQqrr7m","start":1648620000000,"end":1648621800000},{"id":"JwpUcL3R3J","start":1648630800000,"end":1648632600000},{"id":"9v1Lc3CrrS","start":1648645200000,"end":1648648800000},{"id":"MWlzxl3qsV","start":1648792800000,"end":1648796400000},{"id":"vSRKYbvLn1","start":1648807200000,"end":1648809000000},{"id":"IyA2uj5JXA","start":1648821600000,"end":1648823400000},{"id":"9oY108EUPm","start":1649224800000,"end":1649226600000},{"id":"ODEJIb4Fj6","start":1649235600000,"end":1649239200000},{"id":"Mf2giIm40S","start":1649250000000,"end":1649253600000},{"id":"AlIY6mxtrW","start":1649397600000,"end":1649401200000},{"id":"Oyzo5q2p73","start":1649408400000,"end":1649412000000},{"id":"rY9ZZipwXP","start":1649422800000,"end":1649426400000},{"id":"34q0kLrpdT","start":1649829600000,"end":1649833200000},{"id":"ZkFRGpP38U","start":1649844000000,"end":1649847600000},{"id":"8D6gvJJXnq","start":1649854800000,"end":1649858400000},{"id":"F9YkpkK7Nk","start":1649865600000,"end":1649867400000},{"id":"K8mRarJyTz","start":1649916000000,"end":1649917800000},{"id":"ekN5ms8vy3","start":1649930400000,"end":1649934000000},{"id":"pDgiIwoj4k","start":1649941200000,"end":1649944800000},{"id":"iZHKssJE9O","start":1649952000000,"end":1649953800000},{"id":"MobkIfDTLc","start":1650002400000,"end":1650004200000},{"id":"Y2sQf2oAwn","start":1650016800000,"end":1650018600000},{"id":"bUrZaU1kx2","start":1650027600000,"end":1650029400000},{"id":"zQIGCufo2v","start":1650038400000,"end":1650042000000},{"id":"htTA28TZYn","start":1650434400000,"end":1650438000000},{"id":"DsNtxdrVUX","start":1650448800000,"end":1650450600000},{"id":"9s36RE4H3x","start":1650459600000,"end":1650461400000},{"id":"U0gRBpj3cr","start":1650520800000,"end":1650524400000},{"id":"C3F6FWAglJ","start":1650531600000,"end":1650535200000},{"id":"BSwHACmjBd","start":1650546000000,"end":1650549600000},{"id":"tIVgBKwXSz","start":1650556800000,"end":1650558600000},{"id":"ihjMVPcGrT","start":1650607200000,"end":1650609000000},{"id":"AMhkeK4Hd5","start":1650618000000,"end":1650619800000},{"id":"xgjx20igpM","start":1650628800000,"end":1650632400000},{"id":"KHEqQmfpmo","start":1650639600000,"end":1650641400000},{"id":"3fusdNRjGz","start":1651039200000,"end":1651041000000},{"id":"7B4rk8dRdd","start":1651050000000,"end":1651053600000},{"id":"RaDACfKfBo","start":1651060800000,"end":1651064400000},{"id":"rD1HyD33B8","start":1651075200000,"end":1651078800000},{"id":"PUpFvacC5J","start":1651212000000,"end":1651215600000},{"id":"YaF4dEOqpo","start":1651222800000,"end":1651226400000},{"id":"TKxeo74zwU","start":1651233600000,"end":1651237200000},{"id":"ZjyTtkocA4","start":1651244400000,"end":1651248000000},{"id":"ySc2wuFSLs","start":1651557600000,"end":1651559400000},{"id":"vwXGh96q10","start":1651572000000,"end":1651573800000},{"id":"QBREIur3HZ","start":1651582800000,"end":1651584600000},{"id":"VonLVIw6Ax","start":1651593600000,"end":1651595400000},{"id":"7hWq2ayWlr","start":1651730400000,"end":1651732200000},{"id":"yaTg5B2MpQ","start":1651741200000,"end":1651744800000},{"id":"Zv4Faqlqp5","start":1651752000000,"end":1651753800000},{"id":"SOcvuzHhl7","start":1651762800000,"end":1651766400000},{"id":"LMUi4OcrEp","start":1652248800000,"end":1652252400000},{"id":"afLrhHGVa2","start":1652259600000,"end":1652263200000},{"id":"fKitdDx5RF","start":1652270400000,"end":1652272200000},{"id":"AlAFSjaQ1z","start":1652284800000,"end":1652286600000},{"id":"Jt4ocEt7kt","start":1652335200000,"end":1652338800000},{"id":"EzqWNWIeaB","start":1652346000000,"end":1652347800000},{"id":"Z2GFPf95fl","start":1652360400000,"end":1652364000000},{"id":"vyOhkIcxcZ","start":1652371200000,"end":1652373000000},{"id":"SQ4DwWaOwc","start":1652767200000,"end":1652769000000},{"id":"E8WsNkTOwp","start":1652778000000,"end":1652781600000},{"id":"QIawZtP8bl","start":1652788800000,"end":1652792400000},{"id":"b4r163afXM","start":1652803200000,"end":1652806800000},{"id":"NGmwLzJYl6","start":1652853600000,"end":1652855400000},{"id":"zNPp7QgfjI","start":1652868000000,"end":1652869800000},{"id":"Tf4NiWnKvZ","start":1652878800000,"end":1652882400000},{"id":"5iwSbqpowZ","start":1653026400000,"end":1653030000000},{"id":"cCPagUJgtU","start":1653037200000,"end":1653040800000},{"id":"mTCUer92lg","start":1653048000000,"end":1653049800000},{"id":"9vSPY0Wg2G","start":1653058800000,"end":1653062400000},{"id":"Kta81y92WH","start":1653372000000,"end":1653375600000},{"id":"QcIdoniNZo","start":1653382800000,"end":1653386400000},{"id":"m2XoHycOe6","start":1653393600000,"end":1653395400000},{"id":"0SmpR5HZAa","start":1653404400000,"end":1653406200000},{"id":"hURY1ct4t8","start":1653458400000,"end":1653460200000},{"id":"L0fm9Wzkz2","start":1653469200000,"end":1653472800000},{"id":"inazjw6W0b","start":1653483600000,"end":1653485400000},{"id":"JNTjYhdc6b","start":1653494400000,"end":1653498000000},{"id":"4UxOnJ6clx","start":1653544800000,"end":1653546600000},{"id":"lXQomc3JqG","start":1653555600000,"end":1653557400000},{"id":"0duGIUgjCm","start":1653566400000,"end":1653570000000},{"id":"lrA4HMvpMA","start":1653577200000,"end":1653579000000},{"id":"s903VLuNP2","start":1654063200000,"end":1654066800000},{"id":"2Vc9lFP1xR","start":1654077600000,"end":1654079400000},{"id":"z0xqLcg8XB","start":1654092000000,"end":1654095600000},{"id":"Omy5CGeqpN","start":1654149600000,"end":1654151400000},{"id":"mIi03zecNk","start":1654164000000,"end":1654165800000},{"id":"C4lEqwwLC0","start":1654178400000,"end":1654180200000},{"id":"nZ73ZC9Pqa","start":1654581600000,"end":1654585200000},{"id":"Z9sErbrhYv","start":1654596000000,"end":1654597800000},{"id":"VE1XcmI5kJ","start":1654610400000,"end":1654612200000},{"id":"7KCK36ICkh","start":1654668000000,"end":1654671600000},{"id":"q4d3r1qNJq","start":1654682400000,"end":1654686000000},{"id":"vMuONSxuHe","start":1654693200000,"end":1654696800000},{"id":"raBqe1im4S","start":1654704000000,"end":1654705800000},{"id":"QKqoSNpAD8","start":1654754400000,"end":1654756200000},{"id":"hsBvYAC8eG","start":1654765200000,"end":1654767000000},{"id":"l3UTjSyZIy","start":1654776000000,"end":1654777800000},{"id":"LOefwMTlLy","start":1654786800000,"end":1654790400000},{"id":"RoAOS35acs","start":1654840800000,"end":1654844400000},{"id":"bvyE5uy1iv","start":1654851600000,"end":1654853400000},{"id":"FuyoyErYlI","start":1654862400000,"end":1654866000000},{"id":"XJ4ai50aOM","start":1654873200000,"end":1654875000000},{"id":"P9BUcDsj8l","start":1655272800000,"end":1655274600000},{"id":"owVv0gPQgL","start":1655287200000,"end":1655289000000},{"id":"93f0UOYEuH","start":1655298000000,"end":1655299800000},{"id":"Oc1vjfN4wb","start":1655445600000,"end":1655449200000},{"id":"T5ESdZh9Ov","start":1655456400000,"end":1655458200000},{"id":"wVgv5ksTcR","start":1655470800000,"end":1655472600000},{"id":"zFtrcVb0mG","start":1655791200000,"end":1655794800000},{"id":"8lpYfhVarM","start":1655802000000,"end":1655803800000},{"id":"77MgwuCNli","start":1655812800000,"end":1655814600000},{"id":"pcZ7z0EURy","start":1655823600000,"end":1655827200000},{"id":"GFFSj5OOlW","start":1655877600000,"end":1655881200000},{"id":"YEysF3ZbiR","start":1655888400000,"end":1655892000000},{"id":"nBEtTWrJyK","start":1655899200000,"end":1655902800000},{"id":"CIJUCaxP07","start":1655913600000,"end":1655917200000},{"id":"3UVAKoe3Tb","start":1655964000000,"end":1655967600000},{"id":"IbfNUL9sl7","start":1655978400000,"end":1655982000000},{"id":"vdwv0flXVO","start":1655989200000,"end":1655991000000},{"id":"oI6JUvRzla","start":1656396000000,"end":1656397800000},{"id":"lZX55vxAt6","start":1656410400000,"end":1656414000000},{"id":"Zk6rRlaNCg","start":1656421200000,"end":1656423000000},{"id":"oBFegVtD5Q","start":1656432000000,"end":1656435600000},{"id":"HzVpg1JgMT","start":1656482400000,"end":1656484200000},{"id":"OTGg5IXULu","start":1656493200000,"end":1656496800000},{"id":"BC0x01lpcK","start":1656504000000,"end":1656505800000},{"id":"Zmok1YF3e8","start":1656514800000,"end":1656516600000},{"id":"jeoFZWNU0o","start":1656655200000,"end":1656657000000},{"id":"Zrj0jlYTkY","start":1656669600000,"end":1656671400000},{"id":"c7zGSuBc3I","start":1656680400000,"end":1656682200000},{"id":"HTnRamSki7","start":1656691200000,"end":1656694800000},{"id":"05c1wPQZJo","start":1656655200000,"end":1656657000000},{"id":"6akT6ZOAdS","start":1656669600000,"end":1656673200000},{"id":"SqbVvMoTHY","start":1656680400000,"end":1656682200000},{"id":"USDnHE3sq3","start":1657087200000,"end":1657089000000},{"id":"QwC4AGpNxG","start":1657101600000,"end":1657105200000},{"id":"cgSUT8zer9","start":1657112400000,"end":1657114200000},{"id":"DQR4TM8igq","start":1657123200000,"end":1657125000000},{"id":"zZRk2Y16SR","start":1657260000000,"end":1657261800000},{"id":"h4Dg5KOk82","start":1657270800000,"end":1657274400000},{"id":"bRzT4tuLBs","start":1657281600000,"end":1657285200000},{"id":"BbiJMxNg41","start":1657296000000,"end":1657297800000},{"id":"KXEmHXCKB5","start":1657605600000,"end":1657609200000},{"id":"Xvz2aPp7tw","start":1657620000000,"end":1657621800000},{"id":"b6yqXfV2ov","start":1657634400000,"end":1657638000000},{"id":"E2Ye8YlPt8","start":1657778400000,"end":1657780200000},{"id":"YQbd4P8WoB","start":1657789200000,"end":1657791000000},{"id":"osLrTIx9fJ","start":1657803600000,"end":1657805400000},{"id":"zm3j0JqCSM","start":1658296800000,"end":1658298600000},{"id":"ha3IQVWqQy","start":1658311200000,"end":1658313000000},{"id":"lumKjF8sE7","start":1658322000000,"end":1658323800000},{"id":"Ej27XtyVei","start":1658332800000,"end":1658336400000},{"id":"zcsSz4qJHb","start":1658469600000,"end":1658473200000},{"id":"1lW2zNajgL","start":1658484000000,"end":1658487600000},{"id":"4u72VKZ2c4","start":1658498400000,"end":1658502000000},{"id":"479rh1RbWe","start":1658901600000,"end":1658905200000},{"id":"qmsDvw1XBs","start":1658912400000,"end":1658914200000},{"id":"IcyFo5vynP","start":1658923200000,"end":1658926800000},{"id":"D9ABBN3bqn","start":1658934000000,"end":1658935800000},{"id":"PNDTJMjTB6","start":1659074400000,"end":1659078000000},{"id":"uSYgVxa2Rs","start":1659088800000,"end":1659090600000},{"id":"pFC0YMrepB","start":1659099600000,"end":1659103200000},{"id":"X7XA32mkgk","start":1659420000000,"end":1659423600000},{"id":"9rUGPsCaez","start":1659430800000,"end":1659432600000},{"id":"rt7pOl07R9","start":1659445200000,"end":1659448800000},{"id":"t5YkyCnpn6","start":1659456000000,"end":1659459600000},{"id":"gOWVv78XNd","start":1659592800000,"end":1659594600000},{"id":"OfF80OHG0V","start":1659603600000,"end":1659605400000},{"id":"RcpjqLSxig","start":1659618000000,"end":1659621600000},{"id":"p0fVnWm7O3","start":1659679200000,"end":1659681000000},{"id":"ixfOdKILQJ","start":1659690000000,"end":1659693600000},{"id":"uIbKevcKwH","start":1659700800000,"end":1659704400000},{"id":"MK17Q4fLo6","start":1659711600000,"end":1659713400000},{"id":"3wX2YeAbdX","start":1660024800000,"end":1660028400000},{"id":"IYIv5naASe","start":1660039200000,"end":1660042800000},{"id":"VjIppfLraG","start":1660050000000,"end":1660053600000},{"id":"a5Ujjeyry3","start":1660060800000,"end":1660064400000},{"id":"uBdvS0lz10","start":1660197600000,"end":1660201200000},{"id":"U7NFmw37Zv","start":1660208400000,"end":1660210200000},{"id":"r5GvqE3ksV","start":1660222800000,"end":1660224600000},{"id":"G0K2ij0MUU","start":1660233600000,"end":1660237200000},{"id":"M8f09M1HZb","start":1660716000000,"end":1660717800000},{"id":"9h06nBg8SQ","start":1660730400000,"end":1660732200000},{"id":"AnTfJ0AWd1","start":1660744800000,"end":1660746600000},{"id":"OnAMiNS9k8","start":1660802400000,"end":1660806000000},{"id":"Ct4TcQkDCW","start":1660816800000,"end":1660820400000},{"id":"lisV79U7mA","start":1660831200000,"end":1660833000000},{"id":"XS8FPvO3O5","start":1660888800000,"end":1660890600000},{"id":"QqLWBDLfje","start":1660899600000,"end":1660903200000},{"id":"4ybmNiYZAG","start":1660910400000,"end":1660912200000},{"id":"6MbhC0q5Ac","start":1660921200000,"end":1660923000000},{"id":"oZyuQhOtLE","start":1661234400000,"end":1661236200000},{"id":"i8MxOFy5J2","start":1661245200000,"end":1661247000000},{"id":"ChtAD33OVD","start":1661256000000,"end":1661259600000},{"id":"Zyo3tj0b7X","start":1661266800000,"end":1661268600000},{"id":"xz2sdftXuQ","start":1661407200000,"end":1661410800000},{"id":"58lBafvOUM","start":1661421600000,"end":1661425200000},{"id":"HeXGuxo85C","start":1661432400000,"end":1661436000000},{"id":"fbxABCj1ly","start":1661839200000,"end":1661841000000},{"id":"K6xsqvSX6S","start":1661853600000,"end":1661855400000},{"id":"LANrZyQ37P","start":1661868000000,"end":1661869800000},{"id":"DVx6egCwnG","start":1661925600000,"end":1661929200000},{"id":"ziEmeyfgYk","start":1661936400000,"end":1661938200000},{"id":"vFD60khqYg","start":1661947200000,"end":1661949000000},{"id":"y5RD3GfVDw","start":1661961600000,"end":1661963400000},{"id":"bdMVCbGqkA","start":1662012000000,"end":1662013800000},{"id":"Hq3rcVeFci","start":1662022800000,"end":1662024600000},{"id":"9vmhPTtiFQ","start":1662033600000,"end":1662037200000},{"id":"3C0sRpZ227","start":1662048000000,"end":1662049800000},{"id":"uaRPXSnDdM","start":1662444000000,"end":1662445800000},{"id":"p490QNyxse","start":1662458400000,"end":1662460200000},{"id":"Zw0NsbAyXg","start":1662472800000,"end":1662476400000},{"id":"byh7miVszJ","start":1662530400000,"end":1662534000000},{"id":"0TPBchV7A8","start":1662541200000,"end":1662544800000},{"id":"8WqWJWTyEY","start":1662555600000,"end":1662559200000},{"id":"swPC6edRZS","start":1662703200000,"end":1662705000000},{"id":"gPQC523kxl","start":1662714000000,"end":1662717600000},{"id":"zxTCagg0uM","start":1662728400000,"end":1662730200000},{"id":"0etL5rgGQa","start":1663048800000,"end":1663050600000},{"id":"WCDpwf6W74","start":1663059600000,"end":1663063200000},{"id":"NoIyD4rqIK","start":1663074000000,"end":1663075800000},{"id":"JKzIQmHNZz","start":1663221600000,"end":1663225200000},{"id":"GBS7609dP8","start":1663236000000,"end":1663237800000},{"id":"1wz3al2kc6","start":1663246800000,"end":1663250400000},{"id":"jlVaJK1RIw","start":1663257600000,"end":1663259400000},{"id":"EEO9WAC2An","start":1663308000000,"end":1663311600000},{"id":"HBHYWIjhku","start":1663322400000,"end":1663326000000},{"id":"KACYrlPvR5","start":1663336800000,"end":1663340400000},{"id":"3L1lwTBB8M","start":1663740000000,"end":1663743600000},{"id":"sdREai7p8f","start":1663750800000,"end":1663754400000},{"id":"zHZWJsvpXJ","start":1663765200000,"end":1663767000000},{"id":"pQ63XHOYzM","start":1663912800000,"end":1663916400000},{"id":"5Vf9Rvz9Ff","start":1663927200000,"end":1663930800000},{"id":"xlo4SjoQyx","start":1663941600000,"end":1663945200000},{"id":"abTPj9hVTI","start":1664258400000,"end":1664262000000},{"id":"8D34CzIk4U","start":1664269200000,"end":1664271000000},{"id":"aLqeZmWRPl","start":1664280000000,"end":1664281800000},{"id":"BY6bwrnuvZ","start":1664290800000,"end":1664292600000},{"id":"nRMIe52vbO","start":1664431200000,"end":1664433000000},{"id":"pU9lLo9C61","start":1664445600000,"end":1664447400000},{"id":"kDgKq8cUuE","start":1664460000000,"end":1664463600000},{"id":"Ff1OGjEXBv","start":1664863200000,"end":1664865000000},{"id":"YvhvB7lzFh","start":1664877600000,"end":1664879400000},{"id":"hgL9k7xtnl","start":1664888400000,"end":1664890200000},{"id":"IevKK3N1jP","start":1664949600000,"end":1664951400000},{"id":"GSQD8MBkLe","start":1664960400000,"end":1664962200000},{"id":"0Bhy4XXKVH","start":1664974800000,"end":1664978400000},{"id":"OwHPQjHwPH","start":1664985600000,"end":1664987400000},{"id":"A8oaMnqCyH","start":1665036000000,"end":1665037800000},{"id":"2WsKmQ3SwN","start":1665046800000,"end":1665050400000},{"id":"TlcGT0pe1m","start":1665057600000,"end":1665059400000},{"id":"eJ3f3fNPD5","start":1665072000000,"end":1665075600000},{"id":"d1GesRqDlx","start":1665554400000,"end":1665558000000},{"id":"psFfXREGTK","start":1665568800000,"end":1665572400000},{"id":"KILEtfnTGY","start":1665583200000,"end":1665585000000},{"id":"5xAjeqe8P5","start":1665640800000,"end":1665644400000},{"id":"kEGn5xPhAc","start":1665655200000,"end":1665657000000},{"id":"V1UMY0bcSt","start":1665669600000,"end":1665671400000},{"id":"rjUmOqY0TY","start":1666072800000,"end":1666076400000},{"id":"XA3Ru1m3lW","start":1666087200000,"end":1666089000000},{"id":"D5n1s2IQVf","start":1666101600000,"end":1666105200000},{"id":"HWPKzeWH6k","start":1666159200000,"end":1666161000000},{"id":"xDEFTLY1fQ","start":1666173600000,"end":1666175400000},{"id":"Pc5OAxA7cH","start":1666184400000,"end":1666186200000},{"id":"knwpSANGwB","start":1666332000000,"end":1666335600000},{"id":"Llk1H7V3Ik","start":1666346400000,"end":1666350000000},{"id":"SivGRXuDNg","start":1666357200000,"end":1666359000000},{"id":"6T5ceEBhlC","start":1666368000000,"end":1666371600000},{"id":"6EnuE1JztB","start":1666764000000,"end":1666767600000},{"id":"9gWDJ4Zim0","start":1666774800000,"end":1666776600000},{"id":"hsKpd4v5BG","start":1666785600000,"end":1666787400000},{"id":"9ZmHQfxajW","start":1666796400000,"end":1666798200000},{"id":"1bgxcsnFWd","start":1666936800000,"end":1666938600000},{"id":"wNYIgLUVGR","start":1666947600000,"end":1666949400000},{"id":"Dt2cBLFC0V","start":1666962000000,"end":1666963800000},{"id":"AJhIhn54Tn","start":1667286000000,"end":1667289600000},{"id":"0LOGqQwQbR","start":1667296800000,"end":1667298600000},{"id":"QYHjxkP5pP","start":1667311200000,"end":1667313000000},{"id":"mNeicd73yz","start":1667372400000,"end":1667374200000},{"id":"CaYBo971TA","start":1667386800000,"end":1667390400000},{"id":"20EB4KbxAt","start":1667397600000,"end":1667399400000},{"id":"TiBr3etEXh","start":1667408400000,"end":1667410200000},{"id":"VOqEkynCKw","start":1667545200000,"end":1667547000000},{"id":"hxnJhtQ4Px","start":1667559600000,"end":1667561400000},{"id":"uWv7ghNLut","start":1667570400000,"end":1667572200000},{"id":"SOLHy61dBh","start":1667581200000,"end":1667583000000},{"id":"3Vpg0wwrCJ","start":1667890800000,"end":1667894400000},{"id":"pOwDNwLS9d","start":1667901600000,"end":1667903400000},{"id":"Dp7ncDoWeX","start":1667912400000,"end":1667916000000},{"id":"y68sD5qO0l","start":1667923200000,"end":1667926800000},{"id":"YvZlc9pWbv","start":1667977200000,"end":1667980800000},{"id":"5eI7OudIcD","start":1667988000000,"end":1667989800000},{"id":"YFQVF8vjsh","start":1667998800000,"end":1668002400000},{"id":"I13oCzBxbd","start":1668009600000,"end":1668011400000},{"id":"WPoP7H6KiR","start":1668063600000,"end":1668067200000},{"id":"rWgKkwXUQL","start":1668078000000,"end":1668079800000},{"id":"GHGINrJpiP","start":1668088800000,"end":1668092400000},{"id":"pAiG5ygfCN","start":1668495600000,"end":1668499200000},{"id":"x5ZdvKAolU","start":1668510000000,"end":1668511800000},{"id":"UsLmBqhKRy","start":1668520800000,"end":1668524400000},{"id":"KWh4lhzYIi","start":1668668400000,"end":1668670200000},{"id":"k1riKr6Xt0","start":1668679200000,"end":1668682800000},{"id":"4QqemzKCIy","start":1668690000000,"end":1668693600000},{"id":"QIZNigZjQQ","start":1668704400000,"end":1668706200000},{"id":"eKwKFgP15G","start":1668754800000,"end":1668756600000},{"id":"j0gneIB8p8","start":1668765600000,"end":1668767400000},{"id":"E9aFhCWZVD","start":1668776400000,"end":1668778200000},{"id":"KC5H8esX1I","start":1668790800000,"end":1668792600000},{"id":"flVwNflOqv","start":1669100400000,"end":1669102200000},{"id":"aVz5XtxPf9","start":1669114800000,"end":1669118400000},{"id":"aKqAlc07fU","start":1669125600000,"end":1669129200000},{"id":"LxhXBNxmE0","start":1669186800000,"end":1669190400000},{"id":"AGDyCreAPB","start":1669201200000,"end":1669203000000},{"id":"dR1WQTWjdS","start":1669212000000,"end":1669215600000},{"id":"wD1Jipg9aI","start":1669222800000,"end":1669224600000},{"id":"95oKQdlE7u","start":1669273200000,"end":1669276800000},{"id":"tDSYJCJ6vx","start":1669287600000,"end":1669289400000},{"id":"WVYs4zE1El","start":1669302000000,"end":1669305600000},{"id":"8uuLvcyEPC","start":1669705200000,"end":1669708800000},{"id":"3VcM39eUGY","start":1669719600000,"end":1669723200000},{"id":"E1vqwb66FK","start":1669734000000,"end":1669735800000},{"id":"zypvh8H1iS","start":1669791600000,"end":1669795200000},{"id":"6ZKVOMRGDe","start":1669806000000,"end":1669807800000},{"id":"ajxhNM3EDF","start":1669816800000,"end":1669820400000},{"id":"N7iU2GyKnT","start":1669827600000,"end":1669831200000},{"id":"zawpg01xce","start":1669878000000,"end":1669879800000},{"id":"2fPXpNIiYN","start":1669888800000,"end":1669892400000},{"id":"pwLlW4rZS2","start":1669903200000,"end":1669905000000},{"id":"bEShBdYv6Y","start":1669914000000,"end":1669915800000},{"id":"LCEv7O9Tcr","start":1669964400000,"end":1669968000000},{"id":"5ZysQJZSoJ","start":1669975200000,"end":1669977000000},{"id":"VKo9x2Mbzv","start":1669986000000,"end":1669989600000},{"id":"0zkY6JLXzw","start":1669996800000,"end":1669998600000},{"id":"L4758uxgRD","start":1670310000000,"end":1670313600000},{"id":"K1xJMCH9xN","start":1670324400000,"end":1670328000000},{"id":"xJSR43CR0a","start":1670338800000,"end":1670340600000},{"id":"xSsNFVOt9G","start":1670482800000,"end":1670484600000},{"id":"9iRs8nFC2X","start":1670493600000,"end":1670497200000},{"id":"cYPU87haa2","start":1670508000000,"end":1670509800000},{"id":"6VHcRz10tL","start":1670518800000,"end":1670522400000},{"id":"J5hNOju707","start":1670569200000,"end":1670571000000},{"id":"4R1rzgIlxz","start":1670583600000,"end":1670585400000},{"id":"8bdIFnH5uq","start":1670594400000,"end":1670598000000},{"id":"e3bDSaoWm9","start":1670914800000,"end":1670916600000},{"id":"qwCRp3d9ja","start":1670929200000,"end":1670931000000},{"id":"QujqLog1jB","start":1670940000000,"end":1670941800000},{"id":"quELSmLkir","start":1670950800000,"end":1670954400000},{"id":"MOQ9AHS0pU","start":1671087600000,"end":1671089400000},{"id":"WUT9OfDOfa","start":1671102000000,"end":1671105600000},{"id":"EX8SVGW6dz","start":1671112800000,"end":1671116400000},{"id":"lM69pdlWA2","start":1671123600000,"end":1671127200000},{"id":"FOE0SLVZuw","start":1671606000000,"end":1671609600000},{"id":"o2If2hVbtl","start":1671616800000,"end":1671618600000},{"id":"978pUZkIpG","start":1671627600000,"end":1671631200000},{"id":"lQeQJx1zNm","start":1671638400000,"end":1671642000000},{"id":"2XOQqZqR9j","start":1671778800000,"end":1671780600000},{"id":"2BQ7Ddgy6V","start":1671793200000,"end":1671795000000},{"id":"j3HaYrS4lQ","start":1671804000000,"end":1671807600000},{"id":"bu7hu0oTPK","start":1672124400000,"end":1672126200000},{"id":"i5bZpt8zEq","start":1672138800000,"end":1672142400000},{"id":"N38exsrhvJ","start":1672153200000,"end":1672156800000},{"id":"nvRMCU47oM","start":1672297200000,"end":1672299000000},{"id":"4AwCS66R5M","start":1672308000000,"end":1672309800000},{"id":"h01clPtMmp","start":1672322400000,"end":1672326000000},{"id":"MUskWvPghD","start":1672383600000,"end":1672387200000},{"id":"ZlQ5ilk8Jq","start":1672398000000,"end":1672401600000},{"id":"bdyxfjiLA0","start":1672412400000,"end":1672414200000},{"id":"CeHP2U9K4E","start":1672729200000,"end":1672732800000},{"id":"LaW6LWvhbd","start":1672740000000,"end":1672743600000},{"id":"1wJN5cjrhk","start":1672754400000,"end":1672758000000},{"id":"lFV1NQg3IU","start":1672765200000,"end":1672767000000},{"id":"940KGGrYlU","start":1672902000000,"end":1672905600000},{"id":"0mC5aMTK0h","start":1672912800000,"end":1672916400000},{"id":"QsEvpkyvcM","start":1672927200000,"end":1672929000000},{"id":"IA6h96ppNc","start":1673334000000,"end":1673337600000},{"id":"QlZLEAeoxm","start":1673344800000,"end":1673348400000},{"id":"GJ96p9chZM","start":1673359200000,"end":1673361000000},{"id":"4Vju76LgNr","start":1673506800000,"end":1673510400000},{"id":"6SumgCQt1s","start":1673521200000,"end":1673524800000},{"id":"GdHIswoRXb","start":1673535600000,"end":1673537400000},{"id":"QZoRfVcLoa","start":1673593200000,"end":1673596800000},{"id":"pKS0i6eWLD","start":1673604000000,"end":1673607600000},{"id":"jnzoroHc9g","start":1673618400000,"end":1673620200000},{"id":"Hg7qc7MPBb","start":1673938800000,"end":1673940600000},{"id":"xSBN4vqVGk","start":1673949600000,"end":1673953200000},{"id":"3mYqN1eV4l","start":1673964000000,"end":1673967600000},{"id":"2zdNLTBBZQ","start":1674111600000,"end":1674113400000},{"id":"IhbVVYr5F1","start":1674126000000,"end":1674129600000},{"id":"6i59pFwmjQ","start":1674140400000,"end":1674142200000},{"id":"CE3xG2irS1","start":1674198000000,"end":1674201600000},{"id":"jo267EieIc","start":1674208800000,"end":1674212400000},{"id":"Vxaoo5Qokj","start":1674219600000,"end":1674223200000},{"id":"8rkL3WPqIL","start":1674230400000,"end":1674232200000},{"id":"v64TbS6KnD","start":1674630000000,"end":1674633600000},{"id":"24SX4bbaeD","start":1674640800000,"end":1674644400000},{"id":"pv5VuDwMoi","start":1674651600000,"end":1674653400000},{"id":"N0AFKej55E","start":1674662400000,"end":1674664200000},{"id":"BQO1i5AGzv","start":1674802800000,"end":1674804600000},{"id":"mLHmsywKl7","start":1674813600000,"end":1674817200000},{"id":"V32FS3XaBf","start":1674828000000,"end":1674829800000},{"id":"sSZv9Dd8ym","start":1675234800000,"end":1675236600000},{"id":"EkD7Sjg9Ku","start":1675249200000,"end":1675251000000},{"id":"KTbLFAp5xv","start":1675263600000,"end":1675265400000},{"id":"JXN18WXoC8","start":1675407600000,"end":1675409400000},{"id":"Xi8LNYkUFH","start":1675422000000,"end":1675423800000},{"id":"tAUbwVBv32","start":1675436400000,"end":1675438200000},{"id":"ScCvniDgej","start":1675839600000,"end":1675843200000},{"id":"LyN7jtXikf","start":1675854000000,"end":1675857600000},{"id":"HNGFEMefrd","start":1675864800000,"end":1675866600000},{"id":"kT3mqu5JTJ","start":1675926000000,"end":1675929600000},{"id":"H4aT5k3OKk","start":1675940400000,"end":1675944000000},{"id":"oITYrxU4dS","start":1675954800000,"end":1675956600000},{"id":"tJ6TkvdiBn","start":1676358000000,"end":1676359800000},{"id":"39Wvm8cpFT","start":1676368800000,"end":1676372400000},{"id":"snZXNJJKg4","start":1676379600000,"end":1676383200000},{"id":"XnHVxlixJu","start":1676390400000,"end":1676394000000},{"id":"D6IdA7suWT","start":1676444400000,"end":1676446200000},{"id":"tWSB306k67","start":1676455200000,"end":1676457000000},{"id":"YNzHTPMoKU","start":1676469600000,"end":1676471400000},{"id":"WDrRkaUSGs","start":1676480400000,"end":1676484000000},{"id":"apZjeav45W","start":1676617200000,"end":1676619000000},{"id":"AVgs9fpKnr","start":1676628000000,"end":1676631600000},{"id":"hBKRNpsaqI","start":1676642400000,"end":1676644200000},{"id":"ccbOWvWADu","start":1676653200000,"end":1676656800000},{"id":"00P9Xcoiuh","start":1677049200000,"end":1677052800000},{"id":"Pyw7rqvJ54","start":1677060000000,"end":1677063600000},{"id":"PxPyneNj0J","start":1677074400000,"end":1677076200000},{"id":"uUA6GFe8zq","start":1677222000000,"end":1677225600000},{"id":"t3GvkCrX6E","start":1677236400000,"end":1677240000000},{"id":"lKLNuyMH1Q","start":1677250800000,"end":1677254400000},{"id":"XBigswxsfQ","start":1677567600000,"end":1677569400000},{"id":"WJjSbrJlAG","start":1677578400000,"end":1677582000000},{"id":"v3RDCqmCQO","start":1677592800000,"end":1677596400000},{"id":"P8WZzNq9X2","start":1677654000000,"end":1677655800000},{"id":"aiMOwklfhC","start":1677664800000,"end":1677668400000},{"id":"ZOIjXABOt3","start":1677675600000,"end":1677677400000},{"id":"Yb8pekoAvG","start":1677686400000,"end":1677688200000},{"id":"bM3RXLgxkE","start":1677740400000,"end":1677742200000},{"id":"873umA6dkC","start":1677751200000,"end":1677753000000},{"id":"RhBQwjKxXi","start":1677765600000,"end":1677769200000},{"id":"ZEeqjTMlb8","start":1677826800000,"end":1677828600000},{"id":"GZUEtX6XJ4","start":1677841200000,"end":1677844800000},{"id":"rWvnxJlvX3","start":1677855600000,"end":1677859200000},{"id":"hlU5evhwoz","start":1677654000000,"end":1677655800000},{"id":"Q7lA2OS1Gl","start":1677664800000,"end":1677666600000},{"id":"C3YzkAcuHN","start":1677679200000,"end":1677682800000},{"id":"nNN6l2U8DF","start":1677740400000,"end":1677744000000},{"id":"CwFkKfSnq5","start":1677754800000,"end":1677758400000},{"id":"MhIfvv5G23","start":1677769200000,"end":1677771000000},{"id":"IIQW39TXAD","start":1678172400000,"end":1678174200000},{"id":"P2IqLeBets","start":1678183200000,"end":1678186800000},{"id":"JDkB37ygfn","start":1678197600000,"end":1678199400000},{"id":"dmMcEvFEUe","start":1678258800000,"end":1678260600000},{"id":"eFR6nXXGM6","start":1678273200000,"end":1678275000000},{"id":"EKbNwf4Zdr","start":1678284000000,"end":1678287600000},{"id":"zwTVC0Ic9K","start":1678345200000,"end":1678348800000},{"id":"BtebUE6QsW","start":1678359600000,"end":1678361400000},{"id":"3dI74uMECg","start":1678370400000,"end":1678374000000},{"id":"ShF79joMYC","start":1678431600000,"end":1678435200000},{"id":"Nwe5VliJ13","start":1678442400000,"end":1678446000000},{"id":"aqm4dymw7h","start":1678453200000,"end":1678455000000},{"id":"0A1ciUfj0Y","start":1678464000000,"end":1678467600000},{"id":"i7JUvfWj7K","start":1678777200000,"end":1678779000000},{"id":"NNPl4vuj2Q","start":1678791600000,"end":1678793400000},{"id":"kn79mfGte4","start":1678806000000,"end":1678807800000},{"id":"HOL96MD2cM","start":1678950000000,"end":1678953600000},{"id":"zsKy7FqdUI","start":1678960800000,"end":1678964400000},{"id":"wg8l3BFr4A","start":1678971600000,"end":1678973400000},{"id":"d4dsIqSGnK","start":1678986000000,"end":1678987800000},{"id":"A24PQcuXWr","start":1679036400000,"end":1679038200000},{"id":"PmoBjKziwN","start":1679047200000,"end":1679050800000},{"id":"V5078LdmZ0","start":1679061600000,"end":1679065200000},{"id":"41xm8zoqQw","start":1679382000000,"end":1679385600000},{"id":"4C6aHYdi48","start":1679396400000,"end":1679398200000},{"id":"RFpnnrO4Xh","start":1679407200000,"end":1679409000000},{"id":"3csLwL3NzT","start":1679418000000,"end":1679421600000},{"id":"ywVXBZwusD","start":1679554800000,"end":1679556600000},{"id":"5kjG0GCnDr","start":1679565600000,"end":1679569200000},{"id":"lK24gIXpeQ","start":1679580000000,"end":1679583600000},{"id":"fC7MK7oxh9","start":1679637600000,"end":1679641200000},{"id":"Zf5gc3n8Ck","start":1679652000000,"end":1679655600000},{"id":"GhvChdpzUI","start":1679662800000,"end":1679666400000},{"id":"ysGWiS6nNp","start":1679983200000,"end":1679986800000},{"id":"JMSbxFg3C2","start":1679997600000,"end":1680001200000},{"id":"eRoUgV6Hy6","start":1680008400000,"end":1680010200000},{"id":"KNhSKqV8Hd","start":1680156000000,"end":1680159600000},{"id":"nIccRttKYc","start":1680170400000,"end":1680174000000},{"id":"ENVu2z8jnp","start":1680181200000,"end":1680184800000},{"id":"6k7KnfFxOp","start":1680588000000,"end":1680591600000},{"id":"LhcwSfOuEA","start":1680598800000,"end":1680602400000},{"id":"ERisiZ23xz","start":1680613200000,"end":1680615000000},{"id":"R0oR6fuOaI","start":1680674400000,"end":1680676200000},{"id":"6EHUtRVyWT","start":1680685200000,"end":1680687000000},{"id":"JI6yyVnghH","start":1680699600000,"end":1680701400000},{"id":"DJuh497hI5","start":1680710400000,"end":1680714000000},{"id":"6dq4z8OXNc","start":1680760800000,"end":1680762600000},{"id":"motSHKOEqT","start":1680771600000,"end":1680775200000},{"id":"W85iftQkUI","start":1680782400000,"end":1680786000000},{"id":"vXmMo4ZjTJ","start":1680793200000,"end":1680795000000},{"id":"ZHGNtIlF5a","start":1681192800000,"end":1681196400000},{"id":"HmPY7evtJR","start":1681203600000,"end":1681205400000},{"id":"Q2DUN05T5g","start":1681214400000,"end":1681216200000},{"id":"dXC4pUGTQo","start":1681228800000,"end":1681230600000},{"id":"01t1kiNcRC","start":1681365600000,"end":1681369200000},{"id":"m7vQ5kHsGk","start":1681380000000,"end":1681383600000},{"id":"8xceUunoRT","start":1681394400000,"end":1681398000000},{"id":"AlOR4mbH5p","start":1681452000000,"end":1681453800000},{"id":"c74blLG98O","start":1681466400000,"end":1681470000000},{"id":"Hlni1XrMo1","start":1681477200000,"end":1681479000000},{"id":"JuUI0nBBtg","start":1681884000000,"end":1681885800000},{"id":"qIRGLzj11Q","start":1681898400000,"end":1681902000000},{"id":"YkjSvRC8u0","start":1681912800000,"end":1681914600000},{"id":"cfeJl2ck7V","start":1682056800000,"end":1682060400000},{"id":"VpXD0XyF68","start":1682071200000,"end":1682074800000},{"id":"FAcmMd58VV","start":1682085600000,"end":1682087400000},{"id":"4ntaAzf12R","start":1682402400000,"end":1682406000000},{"id":"tYNkTVzpeg","start":1682413200000,"end":1682415000000},{"id":"RgafdRd2d8","start":1682427600000,"end":1682429400000},{"id":"P97SxBMM1A","start":1682488800000,"end":1682490600000},{"id":"hzZrtsTQkO","start":1682503200000,"end":1682505000000},{"id":"oQsHwP6O4S","start":1682517600000,"end":1682519400000},{"id":"NfoYwa1N8Q","start":1682575200000,"end":1682578800000},{"id":"lktDXOQyqh","start":1682589600000,"end":1682591400000},{"id":"uMQiZS0Ife","start":1682600400000,"end":1682602200000},{"id":"qSMCMoyM6V","start":1682611200000,"end":1682614800000},{"id":"zhxibrw52h","start":1683007200000,"end":1683009000000},{"id":"pY2IO9G6s4","start":1683021600000,"end":1683023400000},{"id":"I6mY3Lrw5Q","start":1683036000000,"end":1683037800000},{"id":"nyZlqhiUNN","start":1683180000000,"end":1683181800000},{"id":"6coSibo3kU","start":1683190800000,"end":1683192600000},{"id":"R8s0B2HKC5","start":1683205200000,"end":1683207000000},{"id":"6z3B5nfYMY","start":1683266400000,"end":1683268200000},{"id":"8VWCYDjBGD","start":1683280800000,"end":1683282600000},{"id":"O3KS5H6GPO","start":1683291600000,"end":1683293400000},{"id":"w0xM6U2Grb","start":1683302400000,"end":1683306000000},{"id":"DTgmoTvdPN","start":1683612000000,"end":1683613800000},{"id":"SL3r4Qg0DI","start":1683626400000,"end":1683630000000},{"id":"9NO2MZQvYq","start":1683637200000,"end":1683639000000},{"id":"LGuEeeK4Uf","start":1683698400000,"end":1683700200000},{"id":"RCyWp7FDAT","start":1683712800000,"end":1683716400000},{"id":"983XJfkJU2","start":1683723600000,"end":1683727200000},{"id":"0ArvvJwHyH","start":1683784800000,"end":1683788400000},{"id":"0SOKPKzX35","start":1683795600000,"end":1683797400000},{"id":"iF6UvBMtAL","start":1683810000000,"end":1683813600000},{"id":"6F44iZmsNj","start":1683820800000,"end":1683822600000},{"id":"BlfbJUDDNy","start":1683871200000,"end":1683873000000},{"id":"xAMnKnPia5","start":1683882000000,"end":1683885600000},{"id":"XZn1yvkpMy","start":1683896400000,"end":1683898200000},{"id":"xJA20DLtNX","start":1683907200000,"end":1683909000000},{"id":"YPUU2D7MaR","start":1684216800000,"end":1684220400000},{"id":"zfi7J1Z2Kz","start":1684227600000,"end":1684231200000},{"id":"7c1Oljjvha","start":1684242000000,"end":1684243800000},{"id":"xjy74v1z11","start":1684252800000,"end":1684254600000},{"id":"Z7xRHqBDFg","start":1684303200000,"end":1684305000000},{"id":"S2f7cjE6SG","start":1684314000000,"end":1684315800000},{"id":"0yhD04wuRM","start":1684324800000,"end":1684326600000},{"id":"EFmynDaYzW","start":1684339200000,"end":1684342800000},{"id":"An2b6VNOYZ","start":1684389600000,"end":1684393200000},{"id":"DHPgXczQi3","start":1684400400000,"end":1684404000000},{"id":"OR9mrUT8Wh","start":1684411200000,"end":1684413000000},{"id":"g012oqkM71","start":1684422000000,"end":1684423800000},{"id":"XhbShbD0mT","start":1684821600000,"end":1684825200000},{"id":"Nm9K6YvczD","start":1684832400000,"end":1684836000000},{"id":"vGDp2j2BWH","start":1684846800000,"end":1684848600000},{"id":"mSGeAaR56E","start":1684908000000,"end":1684909800000},{"id":"diuY0F5ekb","start":1684918800000,"end":1684920600000},{"id":"UAiqQRrq1I","start":1684929600000,"end":1684933200000},{"id":"JeMTgVb1LV","start":1684944000000,"end":1684947600000},{"id":"4nwHCB251c","start":1684994400000,"end":1684998000000},{"id":"VtJMOQV5JH","start":1685008800000,"end":1685012400000},{"id":"DgoMyuU3qi","start":1685019600000,"end":1685023200000},{"id":"QPW6osbKLw","start":1685030400000,"end":1685034000000},{"id":"U3Mfdlqu7i","start":1685080800000,"end":1685084400000},{"id":"fX8DOhodlL","start":1685091600000,"end":1685095200000},{"id":"MWCknYrROc","start":1685102400000,"end":1685104200000},{"id":"klabMLLi5n","start":1685116800000,"end":1685118600000},{"id":"a7mWfOPexM","start":1685426400000,"end":1685428200000},{"id":"I6cLQh8J5p","start":1685440800000,"end":1685442600000},{"id":"93W151RXgq","start":1685455200000,"end":1685458800000},{"id":"Gu3tqdJaam","start":1685512800000,"end":1685516400000},{"id":"Qh3w4E0LJ6","start":1685527200000,"end":1685529000000},{"id":"gDPENxe8G4","start":1685541600000,"end":1685543400000},{"id":"MCl0ew4u7E","start":1685599200000,"end":1685601000000},{"id":"2umjxepmZj","start":1685613600000,"end":1685615400000},{"id":"Buipilswqf","start":1685624400000,"end":1685626200000},{"id":"yThG9tg8z4","start":1685685600000,"end":1685689200000},{"id":"DIaiCBbade","start":1685700000000,"end":1685701800000},{"id":"0U1WkaK0mX","start":1685714400000,"end":1685716200000},{"id":"8eNrVmwXrh","start":1686031200000,"end":1686034800000},{"id":"WxtkOnEQoX","start":1686045600000,"end":1686047400000},{"id":"D26vtepeLd","start":1686056400000,"end":1686058200000},{"id":"TYyMBu9sK4","start":1686067200000,"end":1686069000000},{"id":"RZJrfmRcx8","start":1686204000000,"end":1686207600000},{"id":"2suWDglVRq","start":1686214800000,"end":1686218400000},{"id":"Z9hdAS7dJT","start":1686229200000,"end":1686232800000},{"id":"Wgc5FYFBW0","start":1686240000000,"end":1686243600000},{"id":"bzwVytyEDM","start":1686636000000,"end":1686637800000},{"id":"VuamFSiEvW","start":1686646800000,"end":1686648600000},{"id":"K0uKm9LPNN","start":1686657600000,"end":1686661200000},{"id":"WuqFwNIb2C","start":1686672000000,"end":1686675600000},{"id":"0KBOEQbvSu","start":1686722400000,"end":1686724200000},{"id":"CW38ufHXTJ","start":1686736800000,"end":1686740400000},{"id":"oKF5vuozqR","start":1686751200000,"end":1686754800000},{"id":"wT8RGGX50G","start":1686895200000,"end":1686898800000},{"id":"uktaXKT3WC","start":1686906000000,"end":1686909600000},{"id":"T4DG9aev1r","start":1686916800000,"end":1686920400000},{"id":"ThwXUJp6kk","start":1686927600000,"end":1686931200000},{"id":"mDTBJHUJqi","start":1687240800000,"end":1687244400000},{"id":"D6dw3yvFTv","start":1687255200000,"end":1687258800000},{"id":"4ZG5FqHtup","start":1687269600000,"end":1687273200000},{"id":"hzgz5ehCCa","start":1687327200000,"end":1687329000000},{"id":"XggzJdosNs","start":1687341600000,"end":1687343400000},{"id":"neKA1ukAjY","start":1687356000000,"end":1687357800000},{"id":"xLGW2rJ8zH","start":1687500000000,"end":1687503600000},{"id":"eXh58ke7mI","start":1687510800000,"end":1687512600000},{"id":"wmbkpwvkN8","start":1687521600000,"end":1687523400000},{"id":"vwg0AhiQdB","start":1687532400000,"end":1687534200000},{"id":"CDtxOIZrSv","start":1687845600000,"end":1687847400000},{"id":"e9GNA3JXFq","start":1687860000000,"end":1687863600000},{"id":"aTbObdUHvQ","start":1687874400000,"end":1687878000000},{"id":"0peXsFjnJX","start":1687932000000,"end":1687933800000},{"id":"TSyaQxTmNS","start":1687942800000,"end":1687946400000},{"id":"zNj9kDNnPM","start":1687953600000,"end":1687955400000},{"id":"tLdg5DMuDr","start":1687968000000,"end":1687969800000},{"id":"FBRjxetHZq","start":1688018400000,"end":1688022000000},{"id":"yMLD15EFXn","start":1688029200000,"end":1688031000000},{"id":"po35v4yx1a","start":1688043600000,"end":1688045400000},{"id":"hGxc72DBUT","start":1688054400000,"end":1688058000000},{"id":"lnNclSRPcO","start":1688536800000,"end":1688538600000},{"id":"a7bekROhdu","start":1688547600000,"end":1688551200000},{"id":"lC7VNmuIJ2","start":1688558400000,"end":1688560200000},{"id":"7Aob7OQy8x","start":1688569200000,"end":1688571000000},{"id":"IEyNiIbhDg","start":1688709600000,"end":1688713200000},{"id":"Uh8JeA87cp","start":1688720400000,"end":1688724000000},{"id":"Mi09m3HlbD","start":1688731200000,"end":1688734800000},{"id":"IcoGRqDR5d","start":1688745600000,"end":1688747400000},{"id":"ct5lm7dxvp","start":1689055200000,"end":1689057000000},{"id":"k064CpG6AA","start":1689069600000,"end":1689071400000},{"id":"hlKBEx45ID","start":1689080400000,"end":1689082200000},{"id":"K0g5jXQ2Gu","start":1689141600000,"end":1689143400000},{"id":"NkSpbO9ffE","start":1689152400000,"end":1689154200000},{"id":"9cRoZaF8gF","start":1689166800000,"end":1689168600000},{"id":"ILEsjlhmPQ","start":1689228000000,"end":1689231600000},{"id":"L82s8FF6CM","start":1689242400000,"end":1689244200000},{"id":"fmkfK0BrYY","start":1689256800000,"end":1689258600000},{"id":"R7gEvMSfXn","start":1689746400000,"end":1689748200000},{"id":"z1zQCbazeE","start":1689760800000,"end":1689762600000},{"id":"lGkDPPqcC1","start":1689771600000,"end":1689775200000},{"id":"cbBEAjNVkx","start":1689782400000,"end":1689784200000},{"id":"UbijwdkW7J","start":1689919200000,"end":1689922800000},{"id":"7kggMmNLAr","start":1689933600000,"end":1689935400000},{"id":"06C6OY8JoI","start":1689948000000,"end":1689951600000},{"id":"UnLAvK8ced","start":1690264800000,"end":1690268400000},{"id":"oG306nMAXJ","start":1690275600000,"end":1690279200000},{"id":"A2Jg57UuaY","start":1690286400000,"end":1690288200000},{"id":"7oBTGmu5U3","start":1690297200000,"end":1690299000000},{"id":"aXG96I9zC7","start":1690437600000,"end":1690441200000},{"id":"udR5gpXumQ","start":1690452000000,"end":1690455600000},{"id":"QOmlGU2W1H","start":1690462800000,"end":1690466400000},{"id":"goL66DyYfU","start":1690473600000,"end":1690477200000},{"id":"6zJZRWw1bc","start":1690524000000,"end":1690527600000},{"id":"KNrgg81bsK","start":1690534800000,"end":1690536600000},{"id":"l4NB7YwQKc","start":1690545600000,"end":1690547400000},{"id":"ZIJn8S41V8","start":1690556400000,"end":1690558200000},{"id":"OUwsxFq8JA","start":1690869600000,"end":1690873200000},{"id":"yqhzYHny6u","start":1690880400000,"end":1690882200000},{"id":"aJqNoVHc1Q","start":1690894800000,"end":1690896600000},{"id":"aTIZ7Q8DI4","start":1690905600000,"end":1690909200000},{"id":"ftgC9Tcp0c","start":1691042400000,"end":1691044200000},{"id":"yi4qnq7kdG","start":1691053200000,"end":1691055000000},{"id":"iIDZnf3WvR","start":1691064000000,"end":1691065800000},{"id":"eGNiwVWruY","start":1691078400000,"end":1691080200000},{"id":"kQxbgym95T","start":1691474400000,"end":1691476200000},{"id":"rYRg7OvKLq","start":1691485200000,"end":1691487000000},{"id":"9stAqvDlTV","start":1691499600000,"end":1691501400000},{"id":"HNNjpO6Wek","start":1691510400000,"end":1691512200000},{"id":"O2qrvjKB9k","start":1691647200000,"end":1691649000000},{"id":"OREQmHqBIz","start":1691658000000,"end":1691659800000},{"id":"gpHlQ6cn27","start":1691672400000,"end":1691676000000},{"id":"e93C98ZblF","start":1691733600000,"end":1691737200000},{"id":"JNhuAH23YV","start":1691748000000,"end":1691751600000},{"id":"i513FlU02e","start":1691758800000,"end":1691762400000},{"id":"0zBfSEmljW","start":1691769600000,"end":1691771400000},{"id":"P9i8lnZXCp","start":1692079200000,"end":1692081000000},{"id":"zEhxl1H0Tv","start":1692090000000,"end":1692093600000},{"id":"7VgG5y3mnj","start":1692100800000,"end":1692104400000},{"id":"YZOuE25pyE","start":1692111600000,"end":1692113400000},{"id":"9KkG03ICIu","start":1692252000000,"end":1692255600000},{"id":"TYLZL3MfOu","start":1692266400000,"end":1692270000000},{"id":"IxlduNUvfB","start":1692277200000,"end":1692280800000},{"id":"8NetPa4yJe","start":1692684000000,"end":1692687600000},{"id":"RHhfs9OhV3","start":1692694800000,"end":1692698400000},{"id":"Be2vA1owLw","start":1692705600000,"end":1692707400000},{"id":"fgz4ThweJA","start":1692720000000,"end":1692723600000},{"id":"QCYD9nq9iL","start":1692770400000,"end":1692774000000},{"id":"iVPbaGjLcz","start":1692784800000,"end":1692788400000},{"id":"aIlmRQ1k1A","start":1692799200000,"end":1692801000000},{"id":"u8UiNJm4pn","start":1692856800000,"end":1692860400000},{"id":"UUYTKwj48u","start":1692871200000,"end":1692874800000},{"id":"f2jtz7nihj","start":1692882000000,"end":1692883800000},{"id":"ATtwhcfShp","start":1692943200000,"end":1692945000000},{"id":"lxGfp1GWvC","start":1692954000000,"end":1692957600000},{"id":"STUL08X5lL","start":1692964800000,"end":1692966600000},{"id":"ae3VBswc8b","start":1692975600000,"end":1692979200000},{"id":"bg8Usfv4sH","start":1693288800000,"end":1693292400000},{"id":"PHtRDzDICh","start":1693299600000,"end":1693301400000},{"id":"yGju6gdKaM","start":1693310400000,"end":1693314000000},{"id":"0D6ozjZWoO","start":1693321200000,"end":1693323000000},{"id":"fBDT4LMAS3","start":1693461600000,"end":1693463400000},{"id":"xpgjOWMCKu","start":1693476000000,"end":1693479600000},{"id":"73KlIDDgEz","start":1693486800000,"end":1693488600000},{"id":"DnZ9A6vfCz","start":1693548000000,"end":1693551600000},{"id":"SFJpXEqMvK","start":1693562400000,"end":1693564200000},{"id":"b01jajw9uQ","start":1693576800000,"end":1693578600000},{"id":"0CSHgzAWHx","start":1693893600000,"end":1693895400000},{"id":"8jg5klHDZd","start":1693904400000,"end":1693906200000},{"id":"Us8yZTN6rH","start":1693918800000,"end":1693920600000},{"id":"bF6v9ASvov","start":1693929600000,"end":1693931400000},{"id":"xxx4CyRBUm","start":1693980000000,"end":1693983600000},{"id":"uju16EvIeJ","start":1693994400000,"end":1693998000000},{"id":"JnZUKoiZ5m","start":1694008800000,"end":1694010600000},{"id":"w7SntAfMLS","start":1694152800000,"end":1694154600000},{"id":"nPz1ERZ9HE","start":1694163600000,"end":1694165400000},{"id":"8NVApD8Yfy","start":1694178000000,"end":1694179800000},{"id":"0VQMHwnFKP","start":1694188800000,"end":1694192400000},{"id":"ghWag4hUcV","start":1694584800000,"end":1694586600000},{"id":"Au0zZT8RBZ","start":1694595600000,"end":1694597400000},{"id":"PNyFt0DNZF","start":1694610000000,"end":1694613600000},{"id":"NNjLVFcq7M","start":1694757600000,"end":1694761200000},{"id":"sd1bH3acHX","start":1694768400000,"end":1694772000000},{"id":"WP9gUobdYE","start":1694782800000,"end":1694784600000},{"id":"oCy3UOTZAI","start":1694793600000,"end":1694795400000},{"id":"55fFRH6U9l","start":1695103200000,"end":1695106800000},{"id":"xZgH7av4lV","start":1695114000000,"end":1695115800000},{"id":"CmNahvLtNT","start":1695128400000,"end":1695132000000},{"id":"J3xhm9TulD","start":1695139200000,"end":1695142800000},{"id":"94qCPSOVWN","start":1695189600000,"end":1695191400000},{"id":"Oe6LYaXRNz","start":1695204000000,"end":1695207600000},{"id":"C4PE2It30I","start":1695218400000,"end":1695220200000},{"id":"FxeL4V3GRQ","start":1695362400000,"end":1695364200000},{"id":"c9FPw6HQYf","start":1695376800000,"end":1695378600000},{"id":"4eqNNhug0b","start":1695391200000,"end":1695393000000},{"id":"xUx2NzUUAH","start":1695708000000,"end":1695711600000},{"id":"ST2vw1muEr","start":1695718800000,"end":1695722400000},{"id":"Ibff7gXFFw","start":1695733200000,"end":1695735000000},{"id":"DqkO44P8D2","start":1695880800000,"end":1695882600000},{"id":"a7sur5UW5N","start":1695891600000,"end":1695893400000},{"id":"7gr4zgKd8V","start":1695906000000,"end":1695907800000},{"id":"fKTKVc5XpJ","start":1695967200000,"end":1695969000000},{"id":"DLa24OyG6F","start":1695981600000,"end":1695985200000},{"id":"qgTO44YkNo","start":1695996000000,"end":1695997800000},{"id":"A0FVxURG7i","start":1696399200000,"end":1696402800000},{"id":"fpER1KdEQU","start":1696410000000,"end":1696413600000},{"id":"10tQOqTVma","start":1696424400000,"end":1696428000000},{"id":"o0go3YrxaG","start":1696435200000,"end":1696438800000},{"id":"A4JBXkx6ks","start":1696572000000,"end":1696573800000},{"id":"nqXD9G5csL","start":1696582800000,"end":1696586400000},{"id":"3xMVfYFAXF","start":1696593600000,"end":1696595400000},{"id":"kHWygVzdM2","start":1696608000000,"end":1696611600000},{"id":"OdVYD6Ew8G","start":1696917600000,"end":1696919400000},{"id":"oNm1AsUA8U","start":1696928400000,"end":1696930200000},{"id":"XJ1TXmDIsp","start":1696939200000,"end":1696941000000},{"id":"qkRygWjMAJ","start":1696953600000,"end":1696957200000},{"id":"ZCzN93F4RZ","start":1697090400000,"end":1697094000000},{"id":"LPsAHA2eLj","start":1697101200000,"end":1697104800000},{"id":"eq8T6WVXd7","start":1697112000000,"end":1697113800000},{"id":"caPlY5C439","start":1697122800000,"end":1697124600000},{"id":"caNf4EIXB5","start":1697176800000,"end":1697180400000},{"id":"vfgtNu47nT","start":1697191200000,"end":1697193000000},{"id":"ZTlTwViCG8","start":1697202000000,"end":1697205600000},{"id":"cF4ojHecFJ","start":1697212800000,"end":1697216400000},{"id":"Iec6t5Vubj","start":1697522400000,"end":1697524200000},{"id":"UOleGOHIcv","start":1697533200000,"end":1697535000000},{"id":"VDRYdNK8xD","start":1697544000000,"end":1697545800000},{"id":"AqKZtrUCJg","start":1697554800000,"end":1697558400000},{"id":"R0ck9rMH4P","start":1697608800000,"end":1697610600000},{"id":"TTlV67dTeH","start":1697619600000,"end":1697621400000},{"id":"erqP6VrEG8","start":1697630400000,"end":1697634000000},{"id":"P2AnNW1RDU","start":1697644800000,"end":1697646600000},{"id":"eLa9pQRlMA","start":1697781600000,"end":1697785200000},{"id":"ynFmF7zfXO","start":1697792400000,"end":1697796000000},{"id":"P8G8xyZLa1","start":1697806800000,"end":1697810400000},{"id":"dqYMbCEsG8","start":1697817600000,"end":1697819400000},{"id":"6pOG3NoCSt","start":1698213600000,"end":1698215400000},{"id":"iv9a8zckRX","start":1698228000000,"end":1698229800000},{"id":"Fh55XijKsI","start":1698238800000,"end":1698242400000},{"id":"txEFwlGZGg","start":1698300000000,"end":1698303600000},{"id":"7HdfEbrt0M","start":1698310800000,"end":1698312600000},{"id":"v888unBOzZ","start":1698321600000,"end":1698323400000},{"id":"bJAGo8nRVc","start":1698336000000,"end":1698337800000},{"id":"n6prTIdiNn","start":1698822000000,"end":1698825600000},{"id":"RrB2MfDaN0","start":1698832800000,"end":1698834600000},{"id":"KZ7CNpCdti","start":1698847200000,"end":1698849000000},{"id":"wI6vBfBDPy","start":1698908400000,"end":1698912000000},{"id":"j1YZwoaBZ2","start":1698919200000,"end":1698922800000},{"id":"rPDtkIiAeL","start":1698933600000,"end":1698937200000},{"id":"DPGZFgtBfW","start":1698944400000,"end":1698946200000},{"id":"qWpNoLBDyn","start":1698994800000,"end":1698998400000},{"id":"zaB7Bp5RfN","start":1699009200000,"end":1699011000000},{"id":"4TtBjgxr7K","start":1699020000000,"end":1699023600000},{"id":"Kb7Kvd09Rf","start":1699340400000,"end":1699344000000},{"id":"hLqE6BuDmu","start":1699354800000,"end":1699358400000},{"id":"Y46jLddo3e","start":1699369200000,"end":1699372800000},{"id":"VJzkE1NnQB","start":1699513200000,"end":1699516800000},{"id":"tsrHMLVGoN","start":1699527600000,"end":1699531200000},{"id":"BeSXbdzMcG","start":1699542000000,"end":1699545600000},{"id":"P0yQvcMSKb","start":1699945200000,"end":1699948800000},{"id":"vapU0tX6C1","start":1699956000000,"end":1699959600000},{"id":"aJI7DjjqlH","start":1699966800000,"end":1699968600000},{"id":"uDKiy13OWy","start":1699977600000,"end":1699981200000},{"id":"mgvccveAND","start":1700031600000,"end":1700033400000},{"id":"wCy5fuTAp7","start":1700046000000,"end":1700047800000},{"id":"dLyYGHqda9","start":1700060400000,"end":1700064000000},{"id":"GAS0uIpq0Q","start":1700118000000,"end":1700121600000},{"id":"reDw408H7y","start":1700132400000,"end":1700136000000},{"id":"cS2Io8oJ0Z","start":1700143200000,"end":1700145000000},{"id":"VcrjU75lbn","start":1700154000000,"end":1700155800000},{"id":"ONxYD94NZP","start":1700636400000,"end":1700640000000},{"id":"3A9YYEroUd","start":1700647200000,"end":1700649000000},{"id":"LevGNQt1Sr","start":1700658000000,"end":1700659800000},{"id":"t5syzRcYv3","start":1700672400000,"end":1700674200000},{"id":"MypOlBbEGI","start":1700722800000,"end":1700726400000},{"id":"bhmO6kCXdJ","start":1700737200000,"end":1700739000000},{"id":"MwobsoZAfp","start":1700751600000,"end":1700755200000},{"id":"HsZ1nxcysd","start":1701241200000,"end":1701244800000},{"id":"Tp21yx4eJE","start":1701252000000,"end":1701255600000},{"id":"TyaO80cgMI","start":1701266400000,"end":1701268200000},{"id":"yDss7ElB6w","start":1701414000000,"end":1701417600000},{"id":"jrQkdo5MLB","start":1701424800000,"end":1701428400000},{"id":"9ooSCAC9O2","start":1701439200000,"end":1701441000000},{"id":"4C1jaeYwvW","start":1701450000000,"end":1701453600000},{"id":"T2kipPHZhH","start":1701414000000,"end":1701417600000},{"id":"eiPnNXCpiH","start":1701424800000,"end":1701428400000},{"id":"PKYYIbIL6J","start":1701435600000,"end":1701439200000},{"id":"6Wa6DJm83S","start":1701446400000,"end":1701448200000},{"id":"SbTlE3HuGr","start":1701759600000,"end":1701763200000},{"id":"MNQq3ZRWBa","start":1701774000000,"end":1701775800000},{"id":"CGrnJuyv0c","start":1701788400000,"end":1701790200000},{"id":"69H4CUhsOQ","start":1701932400000,"end":1701936000000},{"id":"b6WRLy3F8p","start":1701943200000,"end":1701946800000},{"id":"t2iGMiqmvc","start":1701957600000,"end":1701959400000},{"id":"j3mGas0Dll","start":1701968400000,"end":1701970200000},{"id":"ylRJuImCcI","start":1702364400000,"end":1702366200000},{"id":"EGGD86xW0R","start":1702375200000,"end":1702377000000},{"id":"HwTCVUbmoo","start":1702389600000,"end":1702391400000},{"id":"mkFGcfh6PS","start":1702537200000,"end":1702540800000},{"id":"Ks3pmL5UgB","start":1702551600000,"end":1702555200000},{"id":"gzCb5LGfbX","start":1702566000000,"end":1702567800000},{"id":"QZo4EP2ZNI","start":1702623600000,"end":1702625400000},{"id":"ZqabpptN5U","start":1702638000000,"end":1702639800000},{"id":"8YVm9unOzb","start":1702648800000,"end":1702650600000},{"id":"zaEPii1b2J","start":1703055600000,"end":1703057400000},{"id":"L7QDbne0kK","start":1703070000000,"end":1703071800000},{"id":"l7Rq5OAq5d","start":1703080800000,"end":1703084400000},{"id":"bH8ERcXG9g","start":1703142000000,"end":1703145600000},{"id":"HD6VN1eV42","start":1703152800000,"end":1703154600000},{"id":"CkoyTuhdIm","start":1703163600000,"end":1703165400000},{"id":"bLuy2wZC1D","start":1703178000000,"end":1703179800000},{"id":"LTxmFOyQT0","start":1703660400000,"end":1703664000000},{"id":"UBgLzahd1G","start":1703671200000,"end":1703674800000},{"id":"rS8HQ7vom6","start":1703685600000,"end":1703689200000},{"id":"TzYIy5Uhlj","start":1703833200000,"end":1703835000000},{"id":"FrjhkWYgzb","start":1703847600000,"end":1703849400000},{"id":"CafDImqqt5","start":1703858400000,"end":1703862000000},{"id":"OLhV9JnILC","start":1703869200000,"end":1703872800000},{"id":"xk0xKtXvpV","start":1704178800000,"end":1704180600000},{"id":"g7awfLCgaX","start":1704193200000,"end":1704195000000},{"id":"jkWKJ35LWQ","start":1704204000000,"end":1704205800000},{"id":"t2RRRu5K4X","start":1704214800000,"end":1704218400000},{"id":"6udnfdJyRr","start":1704351600000,"end":1704353400000},{"id":"esLyCwN21b","start":1704362400000,"end":1704364200000},{"id":"TawTIIzlnO","start":1704376800000,"end":1704380400000},{"id":"jmwlpIkqlY","start":1704783600000,"end":1704787200000},{"id":"fvok3Z8yvU","start":1704798000000,"end":1704799800000},{"id":"nbdHmrprtB","start":1704812400000,"end":1704816000000},{"id":"amDpwmf6gA","start":1704956400000,"end":1704958200000},{"id":"8KjlhXqgbp","start":1704970800000,"end":1704972600000},{"id":"S6WBeAubv2","start":1704981600000,"end":1704983400000},{"id":"m39AaVbo2U","start":1705388400000,"end":1705390200000},{"id":"DJdczAjjEh","start":1705399200000,"end":1705402800000},{"id":"M1NLRKoapU","start":1705410000000,"end":1705411800000},{"id":"pBVGT2YZMG","start":1705424400000,"end":1705426200000},{"id":"bWUf1T9JdW","start":1705474800000,"end":1705476600000},{"id":"D6Uq32Hj6u","start":1705485600000,"end":1705489200000},{"id":"fH0O0bfVuG","start":1705496400000,"end":1705498200000},{"id":"avM8R90zdC","start":1705510800000,"end":1705514400000},{"id":"4YJkmluc1u","start":1705561200000,"end":1705563000000},{"id":"eXpShxvgdY","start":1705575600000,"end":1705579200000},{"id":"1lLzAXuT7t","start":1705590000000,"end":1705591800000},{"id":"W0aWsu6BFL","start":1705647600000,"end":1705651200000},{"id":"diqmzAIh9Y","start":1705662000000,"end":1705663800000},{"id":"NNhh2gG0NJ","start":1705676400000,"end":1705678200000},{"id":"BdSa5OaDdU","start":1705993200000,"end":1705995000000},{"id":"A9i8CiQxFd","start":1706007600000,"end":1706011200000},{"id":"rwMcOsglfu","start":1706022000000,"end":1706025600000},{"id":"OphQd4H9fu","start":1706079600000,"end":1706081400000},{"id":"b7OZNXkf92","start":1706090400000,"end":1706094000000},{"id":"grFwWVTPp3","start":1706104800000,"end":1706108400000},{"id":"P7sD6X8LR5","start":1706166000000,"end":1706169600000},{"id":"cBw6v8kbfj","start":1706176800000,"end":1706178600000},{"id":"p4eDg3P6qZ","start":1706191200000,"end":1706194800000},{"id":"qsVjthGMg9","start":1706202000000,"end":1706203800000},{"id":"KVPQCHaeMs","start":1706598000000,"end":1706599800000},{"id":"nXZ8GzxAlj","start":1706612400000,"end":1706616000000},{"id":"thoZAHiumQ","start":1706626800000,"end":1706628600000},{"id":"tNHJagdAKG","start":1706770800000,"end":1706772600000},{"id":"s5Pm5uTKBz","start":1706781600000,"end":1706783400000},{"id":"WVx3tk2QW9","start":1706792400000,"end":1706794200000},{"id":"VjFcDrJdBp","start":1706803200000,"end":1706805000000},{"id":"YAUfyvhhdX","start":1706857200000,"end":1706860800000},{"id":"jYT65YorTW","start":1706871600000,"end":1706873400000},{"id":"VPXQXDKxdW","start":1706886000000,"end":1706889600000},{"id":"vZwaCtc27u","start":1707289200000,"end":1707292800000},{"id":"UmbiJ56nhF","start":1707300000000,"end":1707301800000},{"id":"eV6dumNEMK","start":1707314400000,"end":1707318000000},{"id":"zPl8B74Hxl","start":1707462000000,"end":1707463800000},{"id":"xt3x37o7X6","start":1707472800000,"end":1707474600000},{"id":"G9u9gmH6LK","start":1707487200000,"end":1707490800000},{"id":"OJ3Fz1ao9G","start":1707498000000,"end":1707501600000},{"id":"VnkJ821rBw","start":1707807600000,"end":1707811200000},{"id":"SOPv6aJiem","start":1707818400000,"end":1707822000000},{"id":"4iJkRMY6xF","start":1707829200000,"end":1707831000000},{"id":"s4bdq98L9R","start":1707840000000,"end":1707841800000},{"id":"9fF6qZDkSB","start":1707980400000,"end":1707982200000},{"id":"KWkp8YHCou","start":1707994800000,"end":1707998400000},{"id":"eyoUsdM58d","start":1708009200000,"end":1708012800000},{"id":"7PGbywMzg6","start":1708066800000,"end":1708068600000},{"id":"mXuJiTKZIg","start":1708081200000,"end":1708084800000},{"id":"WmfHTQdFmK","start":1708095600000,"end":1708099200000},{"id":"jD6wMgS6cD","start":1708412400000,"end":1708414200000},{"id":"KD2QzAQBii","start":1708426800000,"end":1708428600000},{"id":"zbbZAMNo7r","start":1708441200000,"end":1708443000000},{"id":"pq2mucYP5x","start":1708498800000,"end":1708500600000},{"id":"N87y0P48q9","start":1708513200000,"end":1708515000000},{"id":"AmUsJVjSFu","start":1708527600000,"end":1708531200000},{"id":"cPhMICK2GT","start":1708585200000,"end":1708587000000},{"id":"3k8QIePskL","start":1708599600000,"end":1708603200000},{"id":"XSMTCHCBtf","start":1708614000000,"end":1708615800000},{"id":"o3amjPM2TY","start":1708671600000,"end":1708673400000},{"id":"XkkyrTvc6f","start":1708686000000,"end":1708689600000},{"id":"QauSZ0h6lp","start":1708700400000,"end":1708704000000},{"id":"JDXnS1SvFU","start":1709017200000,"end":1709019000000},{"id":"2ey80wdFMl","start":1709028000000,"end":1709029800000},{"id":"wvoKxTslmk","start":1709042400000,"end":1709046000000},{"id":"3HzPuvcNvb","start":1709103600000,"end":1709107200000},{"id":"EeIe97dbBX","start":1709114400000,"end":1709118000000},{"id":"MQhdc74sav","start":1709128800000,"end":1709130600000},{"id":"OrVZ3LJkrp","start":1709139600000,"end":1709143200000},{"id":"dkT3Gm0ZSx","start":1709190000000,"end":1709193600000},{"id":"MYVWB0BaKN","start":1709204400000,"end":1709206200000},{"id":"mXZ7WwJF7f","start":1709218800000,"end":1709222400000},{"id":"TgnI47xvCs","start":1709276400000,"end":1709280000000},{"id":"ywZSJlsHSM","start":1709290800000,"end":1709292600000},{"id":"8JGi0xUoLC","start":1709305200000,"end":1709308800000},{"id":"unk2Uj8fOL","start":1709276400000,"end":1709280000000},{"id":"HvqucxJyMW","start":1709290800000,"end":1709292600000},{"id":"oYAuS9qxoW","start":1709301600000,"end":1709305200000},{"id":"5irzbEDb3f","start":1709622000000,"end":1709623800000},{"id":"Yo75XCm8VC","start":1709632800000,"end":1709636400000},{"id":"jrn5Y0bwuJ","start":1709643600000,"end":1709645400000},{"id":"ccUWWAO1ex","start":1709658000000,"end":1709659800000},{"id":"ZfE96w69av","start":1709708400000,"end":1709712000000},{"id":"UkWTSvklPX","start":1709719200000,"end":1709722800000},{"id":"jCzVQnxqkB","start":1709730000000,"end":1709733600000},{"id":"4EJp7Q6uFl","start":1709740800000,"end":1709744400000},{"id":"KUOyK1XYP9","start":1709881200000,"end":1709884800000},{"id":"6yCNURmSMN","start":1709892000000,"end":1709895600000},{"id":"1cxwWB3gB4","start":1709906400000,"end":1709908200000},{"id":"QOP7HC1ZN1","start":1710226800000,"end":1710230400000},{"id":"lhQpjHOlDo","start":1710241200000,"end":1710244800000},{"id":"Zu1m4W1i0x","start":1710255600000,"end":1710257400000},{"id":"2joqYUii6o","start":1710399600000,"end":1710401400000},{"id":"vAbuFAdXOM","start":1710410400000,"end":1710412200000},{"id":"iWsyMa7P9u","start":1710424800000,"end":1710426600000},{"id":"7tNtLU0tHp","start":1710486000000,"end":1710487800000},{"id":"9SF7WHnafC","start":1710500400000,"end":1710502200000},{"id":"9IymMA8HMh","start":1710514800000,"end":1710516600000},{"id":"bCRZnRTWC4","start":1710831600000,"end":1710833400000},{"id":"a3eeSymP2b","start":1710846000000,"end":1710849600000},{"id":"D4nQjtvTUM","start":1710860400000,"end":1710864000000},{"id":"eKL7pTbbod","start":1711004400000,"end":1711008000000},{"id":"L84LuwRmcu","start":1711015200000,"end":1711017000000},{"id":"dk4SiwJUwX","start":1711029600000,"end":1711031400000},{"id":"o8CbPofxDV","start":1711040400000,"end":1711044000000},{"id":"YusjCI4rS4","start":1711522800000,"end":1711524600000},{"id":"deFJ4Qjqth","start":1711533600000,"end":1711537200000},{"id":"vkqiRnL5gU","start":1711544400000,"end":1711546200000},{"id":"cF5U3muspk","start":1711555200000,"end":1711558800000},{"id":"sNzITDkhXy","start":1711609200000,"end":1711611000000},{"id":"mb6mNuEQCn","start":1711623600000,"end":1711625400000},{"id":"MEuAZfN5Cm","start":1711634400000,"end":1711636200000},{"id":"iWIY3GR2wo","start":1711692000000,"end":1711693800000},{"id":"JHicwijXiP","start":1711702800000,"end":1711706400000},{"id":"xCNRSz5Ffy","start":1711717200000,"end":1711720800000},{"id":"LX9oF153vN","start":1712124000000,"end":1712125800000},{"id":"9gxmGG9jF1","start":1712138400000,"end":1712142000000},{"id":"SL1Vk7Fph1","start":1712149200000,"end":1712151000000},{"id":"fFpY35JDau","start":1712160000000,"end":1712161800000},{"id":"d95EbnBsC4","start":1712210400000,"end":1712214000000},{"id":"uYWmVsNjqO","start":1712221200000,"end":1712223000000},{"id":"QVB2duu6xG","start":1712235600000,"end":1712237400000},{"id":"HKN9Bc9HKH","start":1712642400000,"end":1712644200000},{"id":"tUkl3B0s5E","start":1712653200000,"end":1712655000000},{"id":"43eeMWGS42","start":1712667600000,"end":1712669400000},{"id":"XukfEg2cJg","start":1712678400000,"end":1712680200000},{"id":"tEcGsYQ89w","start":1712815200000,"end":1712818800000},{"id":"ipwf7lP1vo","start":1712829600000,"end":1712833200000},{"id":"9VMxBHC4ru","start":1712840400000,"end":1712844000000},{"id":"RjOmw31FZt","start":1712851200000,"end":1712853000000},{"id":"FL2EDyqCvf","start":1712901600000,"end":1712905200000},{"id":"1vPD6CMpTS","start":1712912400000,"end":1712916000000},{"id":"xs4VuhG8L3","start":1712926800000,"end":1712928600000},{"id":"yOThTHDb4C","start":1712937600000,"end":1712941200000},{"id":"IceiOXAD3v","start":1713333600000,"end":1713335400000},{"id":"IyeoS5g8sn","start":1713344400000,"end":1713346200000},{"id":"LbDcQh6Zc4","start":1713355200000,"end":1713357000000},{"id":"D2C2RImC03","start":1713366000000,"end":1713369600000},{"id":"ggziZxQl5M","start":1713420000000,"end":1713423600000},{"id":"nYttsOvuWs","start":1713434400000,"end":1713438000000},{"id":"h8YeUOedEi","start":1713448800000,"end":1713452400000},{"id":"nvpqx1quCH","start":1713852000000,"end":1713853800000},{"id":"lMCe3c4BK8","start":1713866400000,"end":1713870000000},{"id":"HqREcVsOKU","start":1713877200000,"end":1713879000000},{"id":"m9LuFU3KQV","start":1713938400000,"end":1713942000000},{"id":"3tCC4G5uPu","start":1713949200000,"end":1713951000000},{"id":"IK7QAP2AwQ","start":1713960000000,"end":1713961800000},{"id":"J4inAVcPrq","start":1713970800000,"end":1713972600000},{"id":"vf7GbvR8RC","start":1714111200000,"end":1714113000000},{"id":"PUDxsJ52BC","start":1714122000000,"end":1714123800000},{"id":"iGHqUbfthh","start":1714132800000,"end":1714136400000},{"id":"zvVMcOQuxI","start":1714143600000,"end":1714145400000},{"id":"JJ48FSW95t","start":1714456800000,"end":1714458600000},{"id":"U8VCqoHwBo","start":1714467600000,"end":1714471200000},{"id":"KNfzYCxkOc","start":1714482000000,"end":1714485600000},{"id":"UUCgxZYoTq","start":1714492800000,"end":1714496400000},{"id":"pMFHszKQc5","start":1714543200000,"end":1714546800000},{"id":"0kK3TWJOvH","start":1714557600000,"end":1714561200000},{"id":"LkunXsafC0","start":1714568400000,"end":1714570200000},{"id":"71SlSYjjta","start":1714543200000,"end":1714545000000},{"id":"CpcjZYWsQQ","start":1714557600000,"end":1714559400000},{"id":"W5drQECYcX","start":1714572000000,"end":1714573800000},{"id":"Ar2VxFjzQE","start":1714716000000,"end":1714719600000},{"id":"jLWbwqCO6S","start":1714730400000,"end":1714732200000},{"id":"Yjqi2tRekN","start":1714741200000,"end":1714743000000},{"id":"OkYPXPX2tE","start":1715061600000,"end":1715063400000},{"id":"V13yRK9h5P","start":1715072400000,"end":1715076000000},{"id":"KJQwGrtprj","start":1715086800000,"end":1715088600000},{"id":"IMqAD22eGc","start":1715148000000,"end":1715149800000},{"id":"IH8sf315fC","start":1715158800000,"end":1715160600000},{"id":"1wvVWFnIMS","start":1715173200000,"end":1715175000000},{"id":"owOXZvW18B","start":1715184000000,"end":1715187600000},{"id":"9JEpPf7BHJ","start":1715320800000,"end":1715322600000},{"id":"u9axC6h35f","start":1715331600000,"end":1715333400000},{"id":"IPeJtZnmHN","start":1715346000000,"end":1715347800000},{"id":"gcFMKcllui","start":1715666400000,"end":1715670000000},{"id":"yMRaPu0u5Y","start":1715677200000,"end":1715679000000},{"id":"zeoLOdfata","start":1715688000000,"end":1715689800000},{"id":"DWEXeBwp3F","start":1715698800000,"end":1715702400000},{"id":"1oB0ibooar","start":1715839200000,"end":1715841000000},{"id":"wZ4jUuQ6IN","start":1715850000000,"end":1715853600000},{"id":"WyTOMnfk3F","start":1715864400000,"end":1715866200000},{"id":"o63Jbp5JBn","start":1715875200000,"end":1715877000000},{"id":"4AA6f2DLlM","start":1716271200000,"end":1716273000000},{"id":"PUBtm5xzUQ","start":1716285600000,"end":1716287400000},{"id":"1gf5RD4G11","start":1716300000000,"end":1716301800000},{"id":"Kf7jdpElAi","start":1716444000000,"end":1716445800000},{"id":"8zXnWbUtfU","start":1716454800000,"end":1716458400000},{"id":"x6PZ0b0EeO","start":1716469200000,"end":1716472800000},{"id":"9uQXQFGvzO","start":1716962400000,"end":1716966000000},{"id":"xX360y0WC2","start":1716976800000,"end":1716980400000},{"id":"aLuAZ5m2V0","start":1716991200000,"end":1716994800000},{"id":"1GnjdUvm0J","start":1717135200000,"end":1717137000000},{"id":"FRtLyxXnj5","start":1717149600000,"end":1717153200000},{"id":"XduBx0viKF","start":1717160400000,"end":1717164000000},{"id":"KizB0UjXBL","start":1717480800000,"end":1717484400000},{"id":"PqrnQkpjoi","start":1717491600000,"end":1717495200000},{"id":"gdzki5zmoW","start":1717502400000,"end":1717504200000},{"id":"rvz5YUhpsX","start":1717516800000,"end":1717518600000},{"id":"iNJ7NLcAeV","start":1717567200000,"end":1717570800000},{"id":"euP9hS1qFj","start":1717578000000,"end":1717581600000},{"id":"UdW2IkmNjE","start":1717588800000,"end":1717592400000},{"id":"yhvcc4opqM","start":1717599600000,"end":1717603200000},{"id":"deH1GG4N6G","start":1717740000000,"end":1717741800000},{"id":"zG2yLPBjyE","start":1717750800000,"end":1717752600000},{"id":"FEoTivcrg6","start":1717765200000,"end":1717767000000},{"id":"7C63idajAM","start":1717776000000,"end":1717777800000},{"id":"2lae6vdCO8","start":1718085600000,"end":1718089200000},{"id":"Y6boULic0d","start":1718096400000,"end":1718100000000},{"id":"W8wqS3PoM8","start":1718107200000,"end":1718110800000},{"id":"q3WuFkblJE","start":1718118000000,"end":1718119800000},{"id":"4NuQiegtdg","start":1718172000000,"end":1718173800000},{"id":"ulQkeL813z","start":1718182800000,"end":1718186400000},{"id":"xnGMpONTMf","start":1718193600000,"end":1718197200000},{"id":"7hNMYrkvPV","start":1718204400000,"end":1718206200000},{"id":"N6R3FkBzvo","start":1718258400000,"end":1718260200000},{"id":"IGnS2vcAOx","start":1718269200000,"end":1718271000000},{"id":"ZK2jyGDqPN","start":1718280000000,"end":1718281800000},{"id":"bs871abyLW","start":1718294400000,"end":1718298000000},{"id":"O3OZyvhiiW","start":1718776800000,"end":1718778600000},{"id":"uVXepfsjv9","start":1718787600000,"end":1718791200000},{"id":"0cZPLDD6CH","start":1718802000000,"end":1718803800000},{"id":"eXAdK0auIx","start":1718949600000,"end":1718953200000},{"id":"1ARWfGCMBu","start":1718960400000,"end":1718962200000},{"id":"aRIcTLkDi9","start":1718971200000,"end":1718973000000},{"id":"QpUVhWj5va","start":1718985600000,"end":1718989200000},{"id":"t8XuDIrnUa","start":1719295200000,"end":1719297000000},{"id":"G099uOWRCb","start":1719306000000,"end":1719307800000},{"id":"jKbHiyW6YR","start":1719316800000,"end":1719320400000},{"id":"DkEBenlSIk","start":1719331200000,"end":1719333000000},{"id":"owEGnJapY4","start":1719468000000,"end":1719471600000},{"id":"xClp1gKSfB","start":1719478800000,"end":1719480600000},{"id":"yCCeuilBjK","start":1719489600000,"end":1719493200000},{"id":"68WFXp0xXm","start":1719504000000,"end":1719505800000},{"id":"7HJMrkIggA","start":1719900000000,"end":1719903600000},{"id":"TzfJiU5Vpi","start":1719914400000,"end":1719916200000},{"id":"k1bGwcFdbG","start":1719925200000,"end":1719927000000},{"id":"IYJ4F66T5i","start":1720072800000,"end":1720076400000},{"id":"1JmDU1kGuA","start":1720083600000,"end":1720087200000},{"id":"7I35I0kAYI","start":1720094400000,"end":1720098000000},{"id":"3ciRYPwXBk","start":1720108800000,"end":1720110600000},{"id":"YQ4YHpK8LK","start":1720591200000,"end":1720594800000},{"id":"DQwTKKcNqA","start":1720605600000,"end":1720609200000},{"id":"8KGJ1LGS8M","start":1720616400000,"end":1720618200000},{"id":"GKKVoYlOYM","start":1720627200000,"end":1720630800000},{"id":"z2SHpUdGFm","start":1720764000000,"end":1720765800000},{"id":"abWVVZKj2e","start":1720774800000,"end":1720776600000},{"id":"xKmWc05737","start":1720789200000,"end":1720792800000},{"id":"1MrGTYCRX8","start":1721109600000,"end":1721111400000},{"id":"rNpUSFYbL1","start":1721124000000,"end":1721127600000},{"id":"0edpwWIycd","start":1721138400000,"end":1721140200000},{"id":"d5kokfsLsi","start":1721282400000,"end":1721286000000},{"id":"0BOsCWvgN1","start":1721296800000,"end":1721298600000},{"id":"51SdMmNOXf","start":1721307600000,"end":1721311200000},{"id":"q8wQTLict3","start":1721318400000,"end":1721320200000},{"id":"h5Ca5S3Wqo","start":1721800800000,"end":1721802600000},{"id":"Q86KMZvtrd","start":1721811600000,"end":1721813400000},{"id":"wrjHBWcVjO","start":1721822400000,"end":1721824200000},{"id":"gwGKg2Dj7n","start":1721836800000,"end":1721838600000},{"id":"8psfR93l7P","start":1721973600000,"end":1721975400000},{"id":"R7NIYQBwu8","start":1721988000000,"end":1721991600000},{"id":"O6lWytOldP","start":1722002400000,"end":1722004200000},{"id":"zIwUkq9C3G","start":1722319200000,"end":1722322800000},{"id":"ibVLACdrsP","start":1722333600000,"end":1722335400000},{"id":"tuQrITPcv8","start":1722344400000,"end":1722346200000},{"id":"zIt8ch48lG","start":1722355200000,"end":1722358800000},{"id":"dHKtpIzcEI","start":1722405600000,"end":1722409200000},{"id":"bfDcQancoU","start":1722420000000,"end":1722421800000},{"id":"2jDKmhP5AV","start":1722430800000,"end":1722432600000},{"id":"gXycRgKnnc","start":1722492000000,"end":1722493800000},{"id":"TLY1pT3hN7","start":1722506400000,"end":1722508200000},{"id":"hzptTu3j6w","start":1722520800000,"end":1722524400000},{"id":"pQSOMaNELa","start":1722578400000,"end":1722580200000},{"id":"za638pa0KY","start":1722589200000,"end":1722591000000},{"id":"eY2wIT9TdQ","start":1722603600000,"end":1722605400000},{"id":"hrC1GlVyio","start":1722924000000,"end":1722927600000},{"id":"O7UeWzLtoA","start":1722938400000,"end":1722940200000},{"id":"PloPFMYwG1","start":1722952800000,"end":1722956400000},{"id":"sJ7qMIDAi6","start":1723096800000,"end":1723098600000},{"id":"jsyYj5EhcO","start":1723107600000,"end":1723111200000},{"id":"NEuvi4NsvQ","start":1723118400000,"end":1723120200000},{"id":"ScdchXQKrt","start":1723132800000,"end":1723136400000},{"id":"lOIFgaQoTE","start":1723183200000,"end":1723185000000},{"id":"GGDMAfxDQ4","start":1723197600000,"end":1723201200000},{"id":"aBXmxQjiPv","start":1723212000000,"end":1723213800000},{"id":"Vo9u9LVhID","start":1723615200000,"end":1723618800000},{"id":"8L5Z5yaZQK","start":1723626000000,"end":1723627800000},{"id":"Y6YO6FsPDX","start":1723640400000,"end":1723642200000},{"id":"tYatgLY7yS","start":1723651200000,"end":1723654800000},{"id":"XXDergfgIJ","start":1723788000000,"end":1723789800000},{"id":"imnlwEhBOI","start":1723798800000,"end":1723800600000},{"id":"J7O9p83zOA","start":1723809600000,"end":1723813200000},{"id":"TzT6cZqklB","start":1723820400000,"end":1723822200000},{"id":"n3LDwzW6SJ","start":1724133600000,"end":1724135400000},{"id":"aCkYFPACKw","start":1724148000000,"end":1724151600000},{"id":"R3vB66V6Aj","start":1724158800000,"end":1724160600000},{"id":"SR8GRn980C","start":1724169600000,"end":1724171400000},{"id":"lPxnZx9nq3","start":1724306400000,"end":1724308200000},{"id":"sM9v4jlSXm","start":1724317200000,"end":1724320800000},{"id":"pcP5uGhYZ1","start":1724331600000,"end":1724333400000},{"id":"dG9nWLPdlB","start":1724392800000,"end":1724396400000},{"id":"CvSq3UGE6c","start":1724403600000,"end":1724405400000},{"id":"1XHWCE6Iw4","start":1724418000000,"end":1724419800000},{"id":"rMx9CdHKW4","start":1724738400000,"end":1724742000000},{"id":"Wr49IZgZNP","start":1724749200000,"end":1724751000000},{"id":"PhJcihKRIo","start":1724760000000,"end":1724761800000},{"id":"MCNTY5VOvF","start":1724774400000,"end":1724778000000},{"id":"6F7WU8VQzO","start":1724824800000,"end":1724828400000},{"id":"Pzlg80MK3z","start":1724835600000,"end":1724837400000},{"id":"0mbSubqbTK","start":1724850000000,"end":1724851800000},{"id":"NhgemvJZ0c","start":1724860800000,"end":1724864400000},{"id":"jDNnS3faHB","start":1724911200000,"end":1724914800000},{"id":"3Q3G97hTF2","start":1724922000000,"end":1724923800000},{"id":"PrYTXF1tk4","start":1724932800000,"end":1724934600000},{"id":"63N95PJPVQ","start":1724947200000,"end":1724950800000},{"id":"6Fj6vne8AC","start":1725429600000,"end":1725431400000},{"id":"05EGVhZobP","start":1725440400000,"end":1725444000000},{"id":"kIoTSN0PUj","start":1725454800000,"end":1725458400000},{"id":"QwneDeikWT","start":1725516000000,"end":1725517800000},{"id":"LYTduZyXHX","start":1725530400000,"end":1725532200000},{"id":"QO84fn3sPE","start":1725544800000,"end":1725546600000},{"id":"pajbGm1fHR","start":1725602400000,"end":1725604200000},{"id":"6CIMUKz19F","start":1725613200000,"end":1725615000000},{"id":"KM8w4bXX3S","start":1725624000000,"end":1725625800000},{"id":"t95qHX7voo","start":1725638400000,"end":1725640200000},{"id":"NcFdtRk07e","start":1726034400000,"end":1726038000000},{"id":"8PiH2VPhqi","start":1726048800000,"end":1726052400000},{"id":"aWi0LFeCZs","start":1726063200000,"end":1726066800000},{"id":"JP0kCkOG5m","start":1726207200000,"end":1726210800000},{"id":"ctyFgSJCOK","start":1726221600000,"end":1726223400000},{"id":"5eBLmmkX4y","start":1726232400000,"end":1726234200000},{"id":"Rr6mpCdxqM","start":1726552800000,"end":1726556400000},{"id":"QSc3pjJhFH","start":1726563600000,"end":1726565400000},{"id":"HPMZO3buzA","start":1726574400000,"end":1726578000000},{"id":"PHj7f24gbv","start":1726588800000,"end":1726592400000},{"id":"fVPbk5Vm4C","start":1726725600000,"end":1726727400000},{"id":"ispMzzG8Em","start":1726736400000,"end":1726738200000},{"id":"1GGe8HmidI","start":1726750800000,"end":1726754400000},{"id":"bdiOBTBybv","start":1726761600000,"end":1726763400000},{"id":"rjbhfubo9J","start":1727157600000,"end":1727159400000},{"id":"ReLW0x2qH6","start":1727172000000,"end":1727175600000},{"id":"JqHBP8XS1e","start":1727186400000,"end":1727188200000},{"id":"u4WUtvQ4Bd","start":1727244000000,"end":1727245800000},{"id":"2FJ3SAN6yN","start":1727254800000,"end":1727256600000},{"id":"u5WoaOtPLz","start":1727269200000,"end":1727271000000},{"id":"6BrQdJCzQo","start":1727280000000,"end":1727281800000},{"id":"ChOmG9D8ih","start":1727330400000,"end":1727332200000},{"id":"Cu4oxPN0Yh","start":1727341200000,"end":1727343000000},{"id":"kVsU3nig41","start":1727355600000,"end":1727359200000},{"id":"6dkI6chG6B","start":1727366400000,"end":1727370000000},{"id":"Fs5aQaluQc","start":1727762400000,"end":1727764200000},{"id":"f1trn63wJl","start":1727776800000,"end":1727778600000},{"id":"VdxZGgZjgF","start":1727791200000,"end":1727794800000},{"id":"G369dAEPqK","start":1727848800000,"end":1727850600000},{"id":"XziiB7YYxS","start":1727863200000,"end":1727865000000},{"id":"sTbLd2DuCl","start":1727874000000,"end":1727875800000},{"id":"LNd8pq1ob7","start":1727884800000,"end":1727886600000},{"id":"NyvBXFZ0IQ","start":1727935200000,"end":1727938800000},{"id":"ZMXuDPGVFd","start":1727949600000,"end":1727951400000},{"id":"ol5nEIDVMA","start":1727964000000,"end":1727967600000},{"id":"t80Bow5F1i","start":1728367200000,"end":1728369000000},{"id":"8t28dAq8GN","start":1728381600000,"end":1728383400000},{"id":"CEHxllY1wL","start":1728396000000,"end":1728399600000},{"id":"4CdCeuKlM7","start":1728540000000,"end":1728543600000},{"id":"4UpIA6N31C","start":1728554400000,"end":1728556200000},{"id":"EBZWJ51u2F","start":1728565200000,"end":1728568800000},{"id":"Xn41MFJ8fF","start":1729058400000,"end":1729060200000},{"id":"scIdbYz9yH","start":1729069200000,"end":1729071000000},{"id":"QEPA4plpAq","start":1729083600000,"end":1729087200000},{"id":"1uo5pCugl4","start":1729231200000,"end":1729234800000},{"id":"urrOgQF8GF","start":1729245600000,"end":1729249200000},{"id":"eV2TcUF4Ly","start":1729256400000,"end":1729258200000},{"id":"05mUJ7629z","start":1729267200000,"end":1729269000000},{"id":"GMhzwJv22A","start":1729576800000,"end":1729578600000},{"id":"MT0S1sYl30","start":1729591200000,"end":1729594800000},{"id":"kMCr9FO1yw","start":1729605600000,"end":1729609200000},{"id":"E9B4IvK6nS","start":1729663200000,"end":1729665000000},{"id":"FD5ufDdVru","start":1729674000000,"end":1729677600000},{"id":"bC1x3vaNGP","start":1729688400000,"end":1729692000000},{"id":"h8gugsdJYh","start":1729749600000,"end":1729753200000},{"id":"MFQxMCMHDT","start":1729760400000,"end":1729762200000},{"id":"kJqCUjX6nJ","start":1729771200000,"end":1729773000000},{"id":"B96SjdxpIk","start":1729785600000,"end":1729787400000},{"id":"PwmyYRrqy4","start":1729836000000,"end":1729837800000},{"id":"hSpwPMWtPp","start":1729850400000,"end":1729852200000},{"id":"puNVWERbHd","start":1729864800000,"end":1729868400000},{"id":"3cRwaGLkDr","start":1730185200000,"end":1730188800000},{"id":"EoLD7r7GCD","start":1730199600000,"end":1730203200000},{"id":"2yPTBbHVnI","start":1730214000000,"end":1730217600000},{"id":"gslBQToaXf","start":1730271600000,"end":1730273400000},{"id":"zA96z0qhi7","start":1730286000000,"end":1730289600000},{"id":"7mAkcPDG3K","start":1730300400000,"end":1730302200000},{"id":"0jMHaCXg3A","start":1730444400000,"end":1730448000000},{"id":"1SIqgy7PxX","start":1730455200000,"end":1730457000000},{"id":"vNELIFUiC0","start":1730466000000,"end":1730469600000},{"id":"4wPtTcc9Vm","start":1730480400000,"end":1730484000000},{"id":"90yIuDzb1M","start":1730790000000,"end":1730793600000},{"id":"wEO7CwHUmD","start":1730800800000,"end":1730804400000},{"id":"QFAw8wR41X","start":1730815200000,"end":1730818800000},{"id":"GCFtJugXdi","start":1730962800000,"end":1730964600000},{"id":"Pj5SfMge2u","start":1730977200000,"end":1730980800000},{"id":"5rKoeFhdmW","start":1730988000000,"end":1730991600000},{"id":"TRl7Fjjrsf","start":1731049200000,"end":1731052800000},{"id":"k83R9EDkjG","start":1731060000000,"end":1731061800000},{"id":"owSfJw71dS","start":1731074400000,"end":1731078000000},{"id":"kT4rjlo5Qe","start":1731085200000,"end":1731087000000},{"id":"FWW1htQLpp","start":1731394800000,"end":1731398400000},{"id":"l0OBau1qe8","start":1731405600000,"end":1731409200000},{"id":"CGXIGy7enC","start":1731420000000,"end":1731421800000},{"id":"Sx9OGpo0S1","start":1731430800000,"end":1731432600000},{"id":"ZFBhRQ4AMa","start":1731567600000,"end":1731571200000},{"id":"SMyA8bZbg9","start":1731582000000,"end":1731583800000},{"id":"1HbYB6aNuu","start":1731596400000,"end":1731598200000},{"id":"aaWZWlrvA2","start":1731999600000,"end":1732003200000},{"id":"XsMJe4o4Dz","start":1732014000000,"end":1732017600000},{"id":"cl9oHiksre","start":1732024800000,"end":1732026600000},{"id":"CQ5kwIiQBN","start":1732086000000,"end":1732089600000},{"id":"qrYrs4HAYk","start":1732096800000,"end":1732100400000},{"id":"bCJdph5Z0t","start":1732111200000,"end":1732114800000},{"id":"r34OV9j3YD","start":1732258800000,"end":1732262400000},{"id":"uGdQQfiBxV","start":1732273200000,"end":1732275000000},{"id":"nTjsR3Tbc7","start":1732287600000,"end":1732291200000},{"id":"Q86SmvkNn3","start":1732690800000,"end":1732692600000},{"id":"BOVrrpJRAJ","start":1732705200000,"end":1732708800000},{"id":"6FBuQxTwip","start":1732719600000,"end":1732721400000},{"id":"bCwZRVP0S8","start":1732777200000,"end":1732780800000},{"id":"W0epcXKHWy","start":1732788000000,"end":1732791600000},{"id":"sp7Cxfu19t","start":1732802400000,"end":1732804200000},{"id":"2eE6WM8rhV","start":1732863600000,"end":1732867200000},{"id":"IgVWAo2rXN","start":1732878000000,"end":1732879800000},{"id":"eiDS8Jos9J","start":1732892400000,"end":1732894200000},{"id":"MP2JeSFx3Y","start":1733209200000,"end":1733212800000},{"id":"m1SAwBh62T","start":1733220000000,"end":1733221800000},{"id":"fWrmiXBo0l","start":1733230800000,"end":1733234400000},{"id":"6BvKBgYyF2","start":1733245200000,"end":1733247000000},{"id":"eOGLPFTfCX","start":1733382000000,"end":1733385600000},{"id":"vn8Qbyy4ms","start":1733396400000,"end":1733400000000},{"id":"2o4EwliAWL","start":1733407200000,"end":1733409000000},{"id":"fbCl0fiVOw","start":1733418000000,"end":1733421600000},{"id":"TPpRxHLGJn","start":1733468400000,"end":1733472000000},{"id":"qEr6RbaHGD","start":1733482800000,"end":1733484600000},{"id":"tGv38hmKIU","start":1733493600000,"end":1733497200000},{"id":"53w3fOQzVr","start":1733504400000,"end":1733506200000},{"id":"fxAGRuaPHW","start":1733814000000,"end":1733817600000},{"id":"mGuoVES45y","start":1733828400000,"end":1733830200000},{"id":"xUmMyLjdk9","start":1733842800000,"end":1733846400000},{"id":"edipeQv6OS","start":1733986800000,"end":1733990400000},{"id":"l7LvoMnKmD","start":1734001200000,"end":1734004800000},{"id":"XgIz7fGedd","start":1734012000000,"end":1734015600000},{"id":"P4EuaZvj0i","start":1734073200000,"end":1734075000000},{"id":"sBfdVtFY3W","start":1734087600000,"end":1734089400000},{"id":"KvL45G3mCc","start":1734102000000,"end":1734103800000},{"id":"s7fbnR2nT5","start":1734418800000,"end":1734422400000},{"id":"GNRRqdulCn","start":1734433200000,"end":1734436800000},{"id":"Aztd2Cey1r","start":1734444000000,"end":1734447600000},{"id":"Kcf4yeOHke","start":1734454800000,"end":1734456600000},{"id":"CW0X3udCKB","start":1734591600000,"end":1734595200000},{"id":"GhVNGVkgQn","start":1734606000000,"end":1734607800000},{"id":"xEOBqlzoJM","start":1734616800000,"end":1734618600000},{"id":"gDTGD8RpVJ","start":1734627600000,"end":1734631200000},{"id":"8gSxjZ0nuO","start":1735023600000,"end":1735027200000},{"id":"cIS7RX10MH","start":1735034400000,"end":1735038000000},{"id":"JoAbC471bs","start":1735045200000,"end":1735048800000},{"id":"vSMfYhD9WV","start":1735059600000,"end":1735061400000},{"id":"yyLr7ORCha","start":1735196400000,"end":1735200000000},{"id":"N3wtlyhOgw","start":1735210800000,"end":1735212600000},{"id":"dsFYjutdDc","start":1735221600000,"end":1735225200000},{"id":"Ak6Q6H3jty","start":1735232400000,"end":1735234200000},{"id":"xbIKCXVDaW","start":1735282800000,"end":1735284600000},{"id":"GmG9ybir6t","start":1735297200000,"end":1735300800000},{"id":"noMZFvcGZV","start":1735308000000,"end":1735311600000},{"id":"oA6pwrwbk3","start":1735628400000,"end":1735632000000},{"id":"rHgUnG26AU","start":1735642800000,"end":1735644600000},{"id":"T5hIVopBDr","start":1735657200000,"end":1735659000000},{"id":"DdV9ZdUFiO","start":1735714800000,"end":1735718400000},{"id":"Nr5F0RiK9R","start":1735725600000,"end":1735727400000},{"id":"XZN31AVm8D","start":1735740000000,"end":1735743600000},{"id":"JUUWMkpYLW","start":1735750800000,"end":1735754400000},{"id":"GQgLsv5HQm","start":1735801200000,"end":1735803000000},{"id":"oFmT9lqlb2","start":1735812000000,"end":1735815600000},{"id":"hgYgJ7q1SP","start":1735826400000,"end":1735830000000},{"id":"hK2tM3eZuo","start":1735837200000,"end":1735840800000},{"id":"uLwclaKmmO","start":1735887600000,"end":1735889400000},{"id":"il8qleO1qZ","start":1735902000000,"end":1735903800000},{"id":"wf5MZHWJcn","start":1735912800000,"end":1735916400000},{"id":"2etUStMmzz","start":1736233200000,"end":1736236800000},{"id":"yuzIAfeHpk","start":1736247600000,"end":1736249400000},{"id":"j1sjRHKPYK","start":1736258400000,"end":1736262000000},{"id":"OqkpE0fc5v","start":1736269200000,"end":1736272800000},{"id":"tT7LopU2M6","start":1736406000000,"end":1736407800000},{"id":"XWnj5bL7Gw","start":1736416800000,"end":1736418600000},{"id":"IOg6zFI1px","start":1736431200000,"end":1736434800000},{"id":"N0Up0he83r","start":1736442000000,"end":1736445600000},{"id":"GYQKV0yps1","start":1736492400000,"end":1736494200000},{"id":"UuNi5mGD3X","start":1736503200000,"end":1736506800000},{"id":"MjM04AmZO7","start":1736514000000,"end":1736515800000},{"id":"4Tv2i1JNVq","start":1736528400000,"end":1736532000000},{"id":"ZLWR7alNSM","start":1736838000000,"end":1736839800000},{"id":"RlljfQtvI4","start":1736852400000,"end":1736854200000},{"id":"fhCXoquUjf","start":1736863200000,"end":1736865000000},{"id":"qF8nNV2J9x","start":1736874000000,"end":1736877600000},{"id":"To3OerLceC","start":1737010800000,"end":1737014400000},{"id":"LjvmzRoDwz","start":1737021600000,"end":1737023400000},{"id":"06Tqnloovx","start":1737032400000,"end":1737036000000},{"id":"unSdGtwjnG","start":1737043200000,"end":1737046800000},{"id":"wXtRYgZkAK","start":1737097200000,"end":1737099000000},{"id":"Yu91IUC1Xr","start":1737108000000,"end":1737111600000},{"id":"Mo1duKhwyP","start":1737122400000,"end":1737126000000},{"id":"n4SktDZKlh","start":1737442800000,"end":1737446400000},{"id":"OhD9bHH9r3","start":1737453600000,"end":1737457200000},{"id":"jKrn5tUjfm","start":1737464400000,"end":1737466200000},{"id":"HEkplYY80o","start":1737475200000,"end":1737478800000},{"id":"zSaOqSyBoo","start":1737529200000,"end":1737532800000},{"id":"EKQamuFlFZ","start":1737540000000,"end":1737541800000},{"id":"0XKulFiYwf","start":1737550800000,"end":1737552600000},{"id":"u0gH8xQrCy","start":1737565200000,"end":1737567000000},{"id":"26bvE9jAV5","start":1737615600000,"end":1737617400000},{"id":"CHFutYYvMU","start":1737630000000,"end":1737631800000},{"id":"O9d8VMSrZw","start":1737644400000,"end":1737646200000},{"id":"yIeDuR3v9c","start":1737702000000,"end":1737703800000},{"id":"muIUDqhKXe","start":1737716400000,"end":1737718200000},{"id":"X59yGFFtiS","start":1737730800000,"end":1737732600000},{"id":"8KLZN5ZWRT","start":1738047600000,"end":1738051200000},{"id":"YevtwyPYGf","start":1738058400000,"end":1738060200000},{"id":"O8hPA7U1Bu","start":1738069200000,"end":1738071000000},{"id":"oVgXIXVBAI","start":1738083600000,"end":1738087200000},{"id":"JmdMxEPJqA","start":1738134000000,"end":1738137600000},{"id":"YQ6VMBH1HA","start":1738148400000,"end":1738150200000},{"id":"4NCAzbkWXz","start":1738159200000,"end":1738161000000},{"id":"ndGPvhe0WA","start":1738220400000,"end":1738224000000},{"id":"soxE42TNhZ","start":1738231200000,"end":1738234800000},{"id":"ManOKAozb7","start":1738245600000,"end":1738247400000},{"id":"5VtMpye5Jm","start":1738306800000,"end":1738310400000},{"id":"i6K2W5L5B5","start":1738317600000,"end":1738321200000},{"id":"Q9FWRpvXi2","start":1738328400000,"end":1738330200000},{"id":"QU0puUNl3b","start":1738339200000,"end":1738341000000},{"id":"UVlrlGdXAf","start":1738652400000,"end":1738656000000},{"id":"wMuBRtjldc","start":1738666800000,"end":1738670400000},{"id":"vjGS8X4HZH","start":1738681200000,"end":1738683000000},{"id":"IiJqkx8mdp","start":1738825200000,"end":1738827000000},{"id":"y8R6qNDLce","start":1738839600000,"end":1738843200000},{"id":"kXDsOqhua8","start":1738850400000,"end":1738854000000},{"id":"Iax7qXc4Mb","start":1738911600000,"end":1738915200000},{"id":"PTgCh0tfLh","start":1738926000000,"end":1738929600000},{"id":"14OVZ5KPx4","start":1738940400000,"end":1738944000000},{"id":"FIGZWcbL5l","start":1739343600000,"end":1739345400000},{"id":"rldueFVxYJ","start":1739354400000,"end":1739358000000},{"id":"b2tax47Ro8","start":1739365200000,"end":1739367000000},{"id":"WHSBSetHLE","start":1739379600000,"end":1739383200000},{"id":"1W8qLdsHdT","start":1739430000000,"end":1739431800000},{"id":"m2BzHlLcH9","start":1739440800000,"end":1739442600000},{"id":"Ak2SyvWGtY","start":1739455200000,"end":1739458800000},{"id":"vPp7muR9Gi","start":1739466000000,"end":1739467800000},{"id":"K2F82ieUyI","start":1739516400000,"end":1739518200000},{"id":"HvIM6jplXT","start":1739527200000,"end":1739530800000},{"id":"K8kSrqvJ7c","start":1739538000000,"end":1739539800000},{"id":"HK8EH0rApk","start":1739548800000,"end":1739550600000},{"id":"1FE1n3G45Z","start":1739948400000,"end":1739952000000},{"id":"rdNE1UxAwf","start":1739959200000,"end":1739962800000},{"id":"IucUJJQw8y","start":1739973600000,"end":1739975400000},{"id":"PU2RDmQE28","start":1739984400000,"end":1739988000000},{"id":"PbD5LsuCWf","start":1740034800000,"end":1740036600000},{"id":"knT6bWRBqN","start":1740045600000,"end":1740049200000},{"id":"1QqXnVrAFO","start":1740056400000,"end":1740058200000},{"id":"qNalmv6JvE","start":1740067200000,"end":1740070800000},{"id":"NX2AtEkqWj","start":1740121200000,"end":1740123000000},{"id":"kmEoCgpBqS","start":1740132000000,"end":1740135600000},{"id":"cX3pq2RbyM","start":1740142800000,"end":1740146400000},{"id":"u3sW3o9B5e","start":1740157200000,"end":1740160800000},{"id":"KnZK1kMtKI","start":1740466800000,"end":1740468600000},{"id":"3Tq8PSCGyO","start":1740481200000,"end":1740483000000},{"id":"FzVI3PCB8W","start":1740495600000,"end":1740499200000},{"id":"kSwsdIAxmP","start":1740553200000,"end":1740556800000},{"id":"58ebWEGuOd","start":1740564000000,"end":1740565800000},{"id":"rP1DP70Yww","start":1740574800000,"end":1740578400000},{"id":"L0vzTKKaCO","start":1740589200000,"end":1740591000000},{"id":"BB2IT7sX8F","start":1740726000000,"end":1740727800000},{"id":"9VNCMuTtcQ","start":1740740400000,"end":1740742200000},{"id":"uASF0nhOku","start":1740754800000,"end":1740758400000},{"id":"9rlQUbHK7s","start":1741158000000,"end":1741161600000},{"id":"cjsAdQPDuB","start":1741172400000,"end":1741176000000},{"id":"dqEfOqDG1W","start":1741183200000,"end":1741186800000},{"id":"PcYI3pEc4T","start":1741330800000,"end":1741334400000},{"id":"S51APDZmRz","start":1741341600000,"end":1741345200000},{"id":"6Z5ZSahtBn","start":1741356000000,"end":1741359600000},{"id":"DGJuX5ipJ0","start":1741366800000,"end":1741370400000},{"id":"y6ueCnLTni","start":1741676400000,"end":1741680000000},{"id":"p7RCPb4KtB","start":1741690800000,"end":1741692600000},{"id":"nWPRCOiezE","start":1741705200000,"end":1741707000000},{"id":"qehyFc7Vhg","start":1741762800000,"end":1741766400000},{"id":"tsoCrMS4R2","start":1741777200000,"end":1741780800000},{"id":"VJDNSQslom","start":1741791600000,"end":1741795200000},{"id":"LGEMZll5NC","start":1741935600000,"end":1741937400000},{"id":"aOWwQDHtqD","start":1741950000000,"end":1741953600000},{"id":"1zD1NpGpzE","start":1741964400000,"end":1741966200000},{"id":"3kX8oHFv7J","start":1742367600000,"end":1742371200000},{"id":"2EdbLV3WWs","start":1742378400000,"end":1742380200000},{"id":"023aCriiTu","start":1742392800000,"end":1742396400000},{"id":"I6Rdd5VUpC","start":1742403600000,"end":1742407200000},{"id":"rOwuOdfdj6","start":1742454000000,"end":1742455800000},{"id":"hGQWCFcCOb","start":1742464800000,"end":1742466600000},{"id":"gPHPebJrQn","start":1742475600000,"end":1742477400000},{"id":"31fnKVEGK8","start":1742490000000,"end":1742491800000},{"id":"gDRdnqKHgc","start":1742886000000,"end":1742887800000},{"id":"agIUNMb3ge","start":1742896800000,"end":1742900400000},{"id":"JHBwyKOo1G","start":1742907600000,"end":1742909400000},{"id":"CYyNYiHou8","start":1742918400000,"end":1742920200000},{"id":"jWWOxjH7kI","start":1743058800000,"end":1743060600000},{"id":"2nFaSkyx6H","start":1743069600000,"end":1743071400000},{"id":"233SnjRrtW","start":1743080400000,"end":1743084000000},{"id":"jKaufHclkw","start":1743091200000,"end":1743093000000},{"id":"VGqQgmc99B","start":1743487200000,"end":1743490800000},{"id":"HIr74zaJ9i","start":1743498000000,"end":1743501600000},{"id":"binHO1agqC","start":1743512400000,"end":1743516000000},{"id":"z0qlik9eJv","start":1743660000000,"end":1743661800000},{"id":"iSTpXVgXf5","start":1743670800000,"end":1743672600000},{"id":"ZDfoBir32G","start":1743681600000,"end":1743685200000},{"id":"NKaumFeN2f","start":1743696000000,"end":1743697800000},{"id":"96PbOiTyOC","start":1744092000000,"end":1744093800000},{"id":"k2USuylGZL","start":1744102800000,"end":1744104600000},{"id":"AMoMkf0FuV","start":1744117200000,"end":1744120800000},{"id":"J79AdUQ0cZ","start":1744128000000,"end":1744131600000},{"id":"WDcILYB1WR","start":1744178400000,"end":1744180200000},{"id":"B0JZ80IzqF","start":1744189200000,"end":1744191000000},{"id":"t2TaX3Rmo4","start":1744200000000,"end":1744203600000},{"id":"e2ih2mFuGQ","start":1744210800000,"end":1744212600000},{"id":"5JRMVWMqtd","start":1744264800000,"end":1744266600000},{"id":"J7fA28H9Rt","start":1744279200000,"end":1744281000000},{"id":"Ci1UUvrqWz","start":1744293600000,"end":1744295400000},{"id":"lgISl0zRNv","start":1744696800000,"end":1744700400000},{"id":"hnVnoRMlj2","start":1744711200000,"end":1744713000000},{"id":"iC2v5P9rKc","start":1744725600000,"end":1744729200000},{"id":"WiyGW5KVPB","start":1744783200000,"end":1744785000000},{"id":"6VWlIXAdin","start":1744794000000,"end":1744795800000},{"id":"I1OfAdWdzI","start":1744804800000,"end":1744808400000},{"id":"jBqzWQS82C","start":1744819200000,"end":1744821000000},{"id":"QXnJNXmOUW","start":1744869600000,"end":1744871400000},{"id":"b3nlGeJs8L","start":1744884000000,"end":1744885800000},{"id":"0BPb6p4G5T","start":1744894800000,"end":1744896600000},{"id":"b3HuJNsdbv","start":1744905600000,"end":1744907400000},{"id":"0U9vfeel5n","start":1744956000000,"end":1744957800000},{"id":"buQ0aHRx2k","start":1744966800000,"end":1744970400000},{"id":"OiO8qgAHMt","start":1744981200000,"end":1744983000000},{"id":"hrlVrFzXLS","start":1745301600000,"end":1745303400000},{"id":"97UVr0M3KW","start":1745316000000,"end":1745319600000},{"id":"Ps1l0hV35D","start":1745330400000,"end":1745332200000},{"id":"wpmthXWsEq","start":1745474400000,"end":1745478000000},{"id":"RgvG9pgXOv","start":1745485200000,"end":1745488800000},{"id":"bRhQkueNKi","start":1745499600000,"end":1745503200000},{"id":"hIfIva0D87","start":1745560800000,"end":1745562600000},{"id":"rgGlflN9EK","start":1745575200000,"end":1745577000000},{"id":"0NzsPEOnZl","start":1745586000000,"end":1745589600000},{"id":"VG3yElOABZ","start":1745906400000,"end":1745910000000},{"id":"Zrn50nkSQp","start":1745920800000,"end":1745922600000},{"id":"4cIXgFyq64","start":1745935200000,"end":1745937000000},{"id":"l1PNPI8TEQ","start":1745992800000,"end":1745994600000},{"id":"Gfs5WtXvNe","start":1746007200000,"end":1746010800000},{"id":"skSIEOiHIT","start":1746018000000,"end":1746019800000},{"id":"49ybhbgpfc","start":1746079200000,"end":1746082800000},{"id":"x4cAJKkn3v","start":1746090000000,"end":1746093600000},{"id":"FpTsoUGQAN","start":1746100800000,"end":1746102600000},{"id":"6xWfE7nOu3","start":1746111600000,"end":1746113400000},{"id":"Ca2M1oOPdz","start":1746511200000,"end":1746513000000},{"id":"aRr07a36oK","start":1746525600000,"end":1746529200000},{"id":"Vb3KUb3atw","start":1746536400000,"end":1746540000000},{"id":"XdDmb2N7KD","start":1746597600000,"end":1746599400000},{"id":"rMwQM1Njyd","start":1746608400000,"end":1746612000000},{"id":"Dm2qpJIyBK","start":1746619200000,"end":1746622800000},{"id":"03ostMzJYp","start":1746633600000,"end":1746635400000},{"id":"HpaysxTQNq","start":1746684000000,"end":1746685800000},{"id":"lmga1JBruL","start":1746698400000,"end":1746702000000},{"id":"AFehSSwAbV","start":1746709200000,"end":1746712800000},{"id":"nwNcIvEGdK","start":1746770400000,"end":1746774000000},{"id":"QA0KxC4dZU","start":1746784800000,"end":1746786600000},{"id":"vdi1XJejbI","start":1746799200000,"end":1746801000000},{"id":"gOjbH88r8A","start":1747202400000,"end":1747204200000},{"id":"5i4SwwzvP3","start":1747213200000,"end":1747215000000},{"id":"gFcwsWBKpU","start":1747227600000,"end":1747229400000},{"id":"bHBg4JivZd","start":1747238400000,"end":1747240200000},{"id":"XTGZ5XEgiU","start":1747288800000,"end":1747292400000},{"id":"bNGAXGlcPy","start":1747303200000,"end":1747306800000},{"id":"MuFyHTKTvZ","start":1747314000000,"end":1747317600000},{"id":"Omtobv3sq8","start":1747324800000,"end":1747328400000},{"id":"b7ui1otHp5","start":1747720800000,"end":1747724400000},{"id":"8GlmiUMvwv","start":1747735200000,"end":1747738800000},{"id":"CB9O4pgCs4","start":1747746000000,"end":1747747800000},{"id":"GcpjDmVHGZ","start":1747756800000,"end":1747760400000},{"id":"0AhoqDURAf","start":1747893600000,"end":1747897200000},{"id":"aVz8HUfWC4","start":1747904400000,"end":1747908000000},{"id":"KEWOhFZREo","start":1747915200000,"end":1747918800000},{"id":"wcR2fDAUwJ","start":1747926000000,"end":1747927800000},{"id":"z9x4LtSqTc","start":1748412000000,"end":1748415600000},{"id":"re2Cdj6fSz","start":1748422800000,"end":1748426400000},{"id":"yDbkPEUhX1","start":1748437200000,"end":1748439000000},{"id":"RMVntVXDtu","start":1748584800000,"end":1748588400000},{"id":"OOF1zENHvS","start":1748595600000,"end":1748597400000},{"id":"eoEQbFg2GV","start":1748610000000,"end":1748613600000},{"id":"7JcZxP5Ltw","start":1748620800000,"end":1748624400000},{"id":"dTkZzUEH8d","start":1749016800000,"end":1749020400000},{"id":"c0pJ2OZIQK","start":1749031200000,"end":1749034800000},{"id":"zeNFqi4rqA","start":1749045600000,"end":1749047400000},{"id":"fNpPPXRZie","start":1749103200000,"end":1749105000000},{"id":"3wMIacQeJi","start":1749117600000,"end":1749119400000},{"id":"cBJtDpvBhd","start":1749128400000,"end":1749132000000},{"id":"TIkocGrswy","start":1749189600000,"end":1749193200000},{"id":"lRCJSrcOXn","start":1749204000000,"end":1749207600000},{"id":"wwqcSjPYHH","start":1749218400000,"end":1749222000000},{"id":"LdPx3K089h","start":1749535200000,"end":1749537000000},{"id":"ndNcA1ap4N","start":1749546000000,"end":1749547800000},{"id":"gTCVqY4nIP","start":1749560400000,"end":1749562200000},{"id":"332FmZs5tG","start":1749708000000,"end":1749709800000},{"id":"EiZy0WpyAp","start":1749718800000,"end":1749720600000},{"id":"OID3pmdLAQ","start":1749733200000,"end":1749736800000},{"id":"H83YImrre7","start":1749744000000,"end":1749745800000},{"id":"Kki0rVyKsw","start":1750226400000,"end":1750230000000},{"id":"1uQCsYANe7","start":1750237200000,"end":1750239000000},{"id":"xQ2DPWAjFe","start":1750251600000,"end":1750253400000},{"id":"7ERVZ6784h","start":1750312800000,"end":1750314600000},{"id":"D5ffbPXjfj","start":1750327200000,"end":1750329000000},{"id":"pRvDS18Lg2","start":1750338000000,"end":1750341600000},{"id":"FPrw9cM4mi","start":1750348800000,"end":1750352400000},{"id":"kNlrfFzTXU","start":1750399200000,"end":1750402800000},{"id":"uEim3hDlUv","start":1750410000000,"end":1750413600000},{"id":"YDF8PDnB16","start":1750424400000,"end":1750428000000},{"id":"OeA4ndDEGC","start":1750744800000,"end":1750746600000},{"id":"hgVizwdOzz","start":1750759200000,"end":1750761000000},{"id":"oXgQpZzZIV","start":1750773600000,"end":1750777200000},{"id":"kNVw59GliW","start":1750831200000,"end":1750834800000},{"id":"RfQNpKBNd4","start":1750842000000,"end":1750843800000},{"id":"WvJvcjDl4H","start":1750856400000,"end":1750860000000},{"id":"YIPSzhUQKB","start":1750867200000,"end":1750869000000},{"id":"5yXSOo9ow8","start":1750917600000,"end":1750919400000},{"id":"mZXwvxglRH","start":1750932000000,"end":1750933800000},{"id":"DmzGOKpY9Z","start":1750946400000,"end":1750950000000},{"id":"h62QubZcLV","start":1751004000000,"end":1751007600000},{"id":"khKc6ankzo","start":1751014800000,"end":1751016600000},{"id":"xxOyoiTGLX","start":1751029200000,"end":1751031000000},{"id":"yn7w46b6xe","start":1751349600000,"end":1751353200000},{"id":"hGPbNMMxZ1","start":1751364000000,"end":1751367600000},{"id":"oAP1ewLtDZ","start":1751374800000,"end":1751376600000},{"id":"QqwaKQfVa2","start":1751436000000,"end":1751439600000},{"id":"6eohAF62qe","start":1751450400000,"end":1751452200000},{"id":"I50TbVR3RF","start":1751461200000,"end":1751464800000},{"id":"p585Dd2vS8","start":1751472000000,"end":1751473800000},{"id":"jwPAdUxXtg","start":1751608800000,"end":1751610600000},{"id":"ZuVaCJtPVe","start":1751623200000,"end":1751626800000},{"id":"ZoV5Prhtcr","start":1751634000000,"end":1751637600000},{"id":"zZBsKfS5m9","start":1751644800000,"end":1751646600000},{"id":"xo8JjuDKhU","start":1752040800000,"end":1752044400000},{"id":"brHxiSMTYN","start":1752055200000,"end":1752057000000},{"id":"uKrbVUhLnA","start":1752066000000,"end":1752067800000},{"id":"p6H4SDAdPo","start":1752127200000,"end":1752129000000},{"id":"RUOzTnP0HG","start":1752138000000,"end":1752139800000},{"id":"ISnIAwGwOW","start":1752152400000,"end":1752154200000},{"id":"G9htxFzHGc","start":1752163200000,"end":1752166800000},{"id":"jiFwemDlvo","start":1752213600000,"end":1752217200000},{"id":"mI43NjPEyb","start":1752228000000,"end":1752231600000},{"id":"4KNJ1sCtFl","start":1752242400000,"end":1752244200000},{"id":"25VSGfoJg6","start":1752559200000,"end":1752562800000},{"id":"Xm5FPF5nL6","start":1752573600000,"end":1752575400000},{"id":"HFB4WxL3Th","start":1752588000000,"end":1752591600000},{"id":"TIaUCDuChs","start":1752645600000,"end":1752647400000},{"id":"th0Qe8QHGW","start":1752660000000,"end":1752661800000},{"id":"HhzpHbEf4b","start":1752674400000,"end":1752678000000},{"id":"m4hllOcNOD","start":1752732000000,"end":1752735600000},{"id":"8lxwpFGHZq","start":1752746400000,"end":1752748200000},{"id":"UEirndyvQS","start":1752760800000,"end":1752764400000},{"id":"ejaTGaaEJB","start":1752818400000,"end":1752822000000},{"id":"QbiMEGcgqE","start":1752832800000,"end":1752834600000},{"id":"jLBx4FCEEm","start":1752843600000,"end":1752845400000},{"id":"d9puoKahws","start":1752854400000,"end":1752856200000},{"id":"uIEwsGv39K","start":1753250400000,"end":1753252200000},{"id":"TL5nEgpkRj","start":1753261200000,"end":1753264800000},{"id":"vZeAcPlPnM","start":1753275600000,"end":1753277400000},{"id":"Kcs254sLWe","start":1753286400000,"end":1753290000000},{"id":"P6CEnqKKFS","start":1753423200000,"end":1753426800000},{"id":"Uvwcbk8KLN","start":1753437600000,"end":1753439400000},{"id":"1tMZBTt3CB","start":1753452000000,"end":1753453800000},{"id":"Uxce7NjRZY","start":1753768800000,"end":1753770600000},{"id":"TgGzISxsN1","start":1753779600000,"end":1753783200000},{"id":"gx6YsOQ467","start":1753790400000,"end":1753792200000},{"id":"jObVRnYNBy","start":1753804800000,"end":1753808400000},{"id":"1ieJjUgP4E","start":1753855200000,"end":1753858800000},{"id":"eifyxvOPLg","start":1753866000000,"end":1753869600000},{"id":"UyXmFkvdUT","start":1753880400000,"end":1753884000000},{"id":"pgwlLmKY0r","start":1753891200000,"end":1753894800000},{"id":"qmlyNGgRtp","start":1754028000000,"end":1754029800000},{"id":"sjY1Tv2Mrv","start":1754042400000,"end":1754046000000},{"id":"gc9amhnZFU","start":1754053200000,"end":1754056800000},{"id":"IFdVC8dIIo","start":1754460000000,"end":1754461800000},{"id":"cq5gtnadqd","start":1754474400000,"end":1754476200000},{"id":"ZvOU2IBd9s","start":1754485200000,"end":1754488800000},{"id":"Dqfh06YPKa","start":1754546400000,"end":1754550000000},{"id":"mnoFY2jC42","start":1754560800000,"end":1754562600000},{"id":"uRlcxUfuHK","start":1754571600000,"end":1754575200000},{"id":"ZvtlyFGSbB","start":1754582400000,"end":1754586000000},{"id":"6HWp1bzpSk","start":1754978400000,"end":1754982000000},{"id":"MySlAQJRSJ","start":1754992800000,"end":1754996400000},{"id":"899SJKnwdJ","start":1755003600000,"end":1755007200000},{"id":"25HO7X2iWy","start":1755014400000,"end":1755016200000},{"id":"Kaj3en8M1n","start":1755064800000,"end":1755066600000},{"id":"dWF8FJZKJ7","start":1755079200000,"end":1755081000000},{"id":"Ahxf9UkufH","start":1755090000000,"end":1755093600000},{"id":"6I8hlLcY5w","start":1755100800000,"end":1755102600000},{"id":"AHxxnkxVxW","start":1755237600000,"end":1755239400000},{"id":"qs5I0Wor1I","start":1755248400000,"end":1755252000000},{"id":"LKSEGhKp6N","start":1755262800000,"end":1755266400000},{"id":"DaCB8d07P8","start":1755273600000,"end":1755277200000},{"id":"XLrlrTEAc8","start":1755583200000,"end":1755585000000},{"id":"3cQRwQWiJ2","start":1755597600000,"end":1755599400000},{"id":"yFHZHQtC1O","start":1755608400000,"end":1755610200000},{"id":"GgHedyG6Fm","start":1755756000000,"end":1755759600000},{"id":"j9T2PvDDQb","start":1755766800000,"end":1755768600000},{"id":"LDFh1AXWac","start":1755777600000,"end":1755779400000},{"id":"wHFfAYtyTZ","start":1755792000000,"end":1755795600000},{"id":"IGwg1Jtc7I","start":1756188000000,"end":1756191600000},{"id":"lhKE05HXtF","start":1756198800000,"end":1756202400000},{"id":"ZQcIKH7vHc","start":1756209600000,"end":1756213200000},{"id":"GkLjCcSBPw","start":1756224000000,"end":1756225800000},{"id":"oG5ecwRk7C","start":1756360800000,"end":1756364400000},{"id":"z62zgo5F5U","start":1756375200000,"end":1756378800000},{"id":"jbTWOYeURP","start":1756386000000,"end":1756387800000},{"id":"tdjic2U3U8","start":1756447200000,"end":1756449000000},{"id":"UNl4NCZbtN","start":1756461600000,"end":1756465200000},{"id":"cRP1fuYV16","start":1756472400000,"end":1756476000000},{"id":"bGL4C4NmRz","start":1756879200000,"end":1756881000000},{"id":"FnQeLKDeC7","start":1756890000000,"end":1756893600000},{"id":"QtfUP1lKOB","start":1756900800000,"end":1756902600000},{"id":"jbOlSdVgz3","start":1756911600000,"end":1756915200000},{"id":"jAEUsVW2JZ","start":1757052000000,"end":1757053800000},{"id":"c34cYzl72T","start":1757066400000,"end":1757068200000},{"id":"JfHnIx27Xe","start":1757080800000,"end":1757084400000},{"id":"8bg7SHLfGd","start":1757397600000,"end":1757401200000},{"id":"0KvlzIKpQw","start":1757408400000,"end":1757412000000},{"id":"MBptooYkKf","start":1757422800000,"end":1757424600000},{"id":"XtxxKZJrGh","start":1757570400000,"end":1757572200000},{"id":"2z3fJ1DDTb","start":1757584800000,"end":1757586600000},{"id":"IPRBKI6qua","start":1757595600000,"end":1757597400000},{"id":"gcxSBjSlfN","start":1757656800000,"end":1757658600000},{"id":"wvesSYFctG","start":1757671200000,"end":1757674800000},{"id":"nGKr609oSr","start":1757682000000,"end":1757685600000},{"id":"wbizfP9Xt5","start":1758088800000,"end":1758092400000},{"id":"Oh13PNdTIY","start":1758099600000,"end":1758103200000},{"id":"07NpKYsHO6","start":1758114000000,"end":1758117600000},{"id":"mMHdUNnfTT","start":1758124800000,"end":1758126600000},{"id":"eWgSPdBdc5","start":1758175200000,"end":1758177000000},{"id":"6A7wr6A3qd","start":1758186000000,"end":1758189600000},{"id":"lgZeQ0Hbup","start":1758200400000,"end":1758204000000},{"id":"My3xgNFF0W","start":1758693600000,"end":1758695400000},{"id":"Cmh07pLMDN","start":1758704400000,"end":1758708000000},{"id":"iCXCMT17MA","start":1758715200000,"end":1758718800000},{"id":"osmR8OzC7o","start":1758726000000,"end":1758729600000},{"id":"XblEL5rRhH","start":1758780000000,"end":1758783600000},{"id":"s1hUUPje0k","start":1758790800000,"end":1758794400000},{"id":"nC9c4inLuB","start":1758801600000,"end":1758803400000},{"id":"4pQONJaPnZ","start":1758816000000,"end":1758819600000},{"id":"wlgJ5NMD6l","start":1759212000000,"end":1759215600000},{"id":"cCI2XsLh7p","start":1759222800000,"end":1759226400000},{"id":"nyZXwYTvmV","start":1759233600000,"end":1759235400000},{"id":"DjBlfQ1VTX","start":1759248000000,"end":1759251600000},{"id":"lMbNvjrzru","start":1759298400000,"end":1759300200000},{"id":"Lpl6vj5ToD","start":1759312800000,"end":1759316400000},{"id":"zp4JiWZltJ","start":1759327200000,"end":1759329000000},{"id":"jnm8y4fcDB","start":1759471200000,"end":1759474800000},{"id":"6tlf0Z8cLB","start":1759482000000,"end":1759485600000},{"id":"mPbmS4weGD","start":1759492800000,"end":1759496400000},{"id":"ePQ4rxSbOd","start":1759503600000,"end":1759505400000},{"id":"v61FBFUSst","start":1759816800000,"end":1759820400000},{"id":"vlGWlmawau","start":1759827600000,"end":1759829400000},{"id":"II1JUqrhGb","start":1759842000000,"end":1759845600000},{"id":"JorrkhAYCu","start":1759852800000,"end":1759856400000},{"id":"Gt6APc4fhS","start":1759903200000,"end":1759906800000},{"id":"2anBkPdvA0","start":1759914000000,"end":1759917600000},{"id":"MVsGLhy42j","start":1759928400000,"end":1759930200000},{"id":"WlbZS04Rnp","start":1760076000000,"end":1760079600000},{"id":"8i0eJWcpwT","start":1760086800000,"end":1760090400000},{"id":"aaHJa9u1Hl","start":1760101200000,"end":1760103000000},{"id":"WOuEzwezCy","start":1760112000000,"end":1760113800000},{"id":"LiHyhHnIkS","start":1760508000000,"end":1760509800000},{"id":"Jk331hhdA7","start":1760522400000,"end":1760524200000},{"id":"ohZ04JD7zk","start":1760536800000,"end":1760540400000},{"id":"8rUyBZtcPI","start":1760594400000,"end":1760596200000},{"id":"OAwlo2j6Ou","start":1760608800000,"end":1760610600000},{"id":"5CnAtxmjk6","start":1760619600000,"end":1760623200000},{"id":"mXng97JCAm","start":1760680800000,"end":1760684400000},{"id":"RMM1q0SJY3","start":1760695200000,"end":1760698800000},{"id":"bnEBgrsGta","start":1760706000000,"end":1760707800000},{"id":"B6uEQnmTrw","start":1761026400000,"end":1761030000000},{"id":"Nc9RI33FAl","start":1761040800000,"end":1761042600000},{"id":"eXnTiYrhFM","start":1761051600000,"end":1761053400000},{"id":"DhTrOzZSZ5","start":1761199200000,"end":1761202800000},{"id":"nO85Ly3t34","start":1761210000000,"end":1761211800000},{"id":"b9sg4ehCHk","start":1761220800000,"end":1761224400000},{"id":"tTqLF8sfyw","start":1761235200000,"end":1761237000000},{"id":"pPFMq0c6Ox","start":1761285600000,"end":1761289200000},{"id":"Lcq2ZfCjLr","start":1761300000000,"end":1761303600000},{"id":"nh8imc2eOf","start":1761310800000,"end":1761312600000},{"id":"M10jqt1wrk","start":1761721200000,"end":1761724800000},{"id":"cguQKYYkLS","start":1761735600000,"end":1761737400000},{"id":"qblRRnQYIy","start":1761746400000,"end":1761748200000},{"id":"tjHJaQReb3","start":1761757200000,"end":1761759000000},{"id":"bKuqzirtr8","start":1761807600000,"end":1761811200000},{"id":"QXNCTeC8JP","start":1761818400000,"end":1761822000000},{"id":"8NDMlKnBAX","start":1761829200000,"end":1761832800000},{"id":"13Latg0s71","start":1761840000000,"end":1761843600000},{"id":"yy9oeHDRLw","start":1762239600000,"end":1762241400000},{"id":"tKjR4PXMsL","start":1762250400000,"end":1762252200000},{"id":"topp7fXm8y","start":1762264800000,"end":1762266600000},{"id":"QdaWXl8DlR","start":1762412400000,"end":1762416000000},{"id":"ySwacE33wx","start":1762423200000,"end":1762426800000},{"id":"lD5y6mM2UP","start":1762434000000,"end":1762435800000},{"id":"bpE0PO0LSZ","start":1762448400000,"end":1762450200000},{"id":"VJRRR2Oiqf","start":1762844400000,"end":1762846200000},{"id":"9xuP2bfJWP","start":1762855200000,"end":1762857000000},{"id":"mw48SlfvY6","start":1762869600000,"end":1762873200000},{"id":"d0RNu6M1TI","start":1762930800000,"end":1762934400000},{"id":"C2eIcV3x2v","start":1762941600000,"end":1762943400000},{"id":"Xn1sB4EVwT","start":1762952400000,"end":1762954200000},{"id":"JYFE2QxDyR","start":1762963200000,"end":1762966800000},{"id":"0BUQd9XfRt","start":1763103600000,"end":1763107200000},{"id":"blJda337iL","start":1763114400000,"end":1763116200000},{"id":"hcBwWUPVFh","start":1763128800000,"end":1763130600000},{"id":"edzCAfb7Fx","start":1763139600000,"end":1763141400000},{"id":"cuxUCPfVvg","start":1763449200000,"end":1763452800000},{"id":"oyaYyonkzT","start":1763463600000,"end":1763467200000},{"id":"e4qjZ7oRqD","start":1763474400000,"end":1763478000000},{"id":"GW7eWi4rBL","start":1763535600000,"end":1763537400000},{"id":"NsIey7rNwf","start":1763550000000,"end":1763551800000},{"id":"ljhlJcFoMt","start":1763560800000,"end":1763562600000},{"id":"cQQEdysUoa","start":1763571600000,"end":1763575200000},{"id":"mwBGxew96i","start":1763708400000,"end":1763710200000},{"id":"apNRCR6Pn9","start":1763719200000,"end":1763722800000},{"id":"iu9r1yBMqi","start":1763730000000,"end":1763731800000},{"id":"4h2d3lj2Ys","start":1763744400000,"end":1763746200000},{"id":"Unms2Fdb4Y","start":1764054000000,"end":1764055800000},{"id":"hhDKYpMyov","start":1764068400000,"end":1764070200000},{"id":"Y4nOd6B0eS","start":1764082800000,"end":1764086400000},{"id":"H86gLSahtR","start":1764226800000,"end":1764228600000},{"id":"CKaQ6hgPqB","start":1764241200000,"end":1764244800000},{"id":"57KjwnHGQE","start":1764252000000,"end":1764253800000},{"id":"LG15YXSKvA","start":1764262800000,"end":1764266400000},{"id":"i4wasktmWb","start":1764658800000,"end":1764662400000},{"id":"ylnpsKF0cJ","start":1764669600000,"end":1764673200000},{"id":"kZohsOPcYV","start":1764680400000,"end":1764682200000},{"id":"4M0cGNp5bx","start":1764691200000,"end":1764694800000},{"id":"film4mGNHD","start":1764831600000,"end":1764833400000},{"id":"RfFD0s0Uuj","start":1764842400000,"end":1764846000000},{"id":"HgMS8qnkNt","start":1764856800000,"end":1764858600000},{"id":"TR3CmzDP3z","start":1764867600000,"end":1764869400000},{"id":"mGi54Fny2v","start":1765350000000,"end":1765353600000},{"id":"kIPLs0gJMc","start":1765364400000,"end":1765366200000},{"id":"LbQ3DbO1qh","start":1765375200000,"end":1765378800000},{"id":"yfa1qiWFAf","start":1765386000000,"end":1765389600000},{"id":"Oy8q2WfYeh","start":1765522800000,"end":1765526400000},{"id":"YYcQlOBCK0","start":1765537200000,"end":1765539000000},{"id":"geaJG6ePvd","start":1765551600000,"end":1765555200000},{"id":"fBQHj90tnr","start":1765868400000,"end":1765872000000},{"id":"3WuZFcylv7","start":1765882800000,"end":1765884600000},{"id":"dH2s9w0S1N","start":1765897200000,"end":1765899000000},{"id":"l2C6Boglz7","start":1766041200000,"end":1766043000000},{"id":"MhYBl1U4MO","start":1766052000000,"end":1766053800000},{"id":"cTO2CZPhVI","start":1766066400000,"end":1766070000000},{"id":"ANEREPWSAW","start":1766077200000,"end":1766080800000},{"id":"zx7TkQG5ZO","start":1766127600000,"end":1766129400000},{"id":"8LaKpMfwHd","start":1766142000000,"end":1766143800000},{"id":"ZcAXITNfWY","start":1766152800000,"end":1766156400000},{"id":"EuCFQoN8iz","start":1766473200000,"end":1766476800000},{"id":"72dqBMkjj7","start":1766484000000,"end":1766487600000},{"id":"h1shU5t8yR","start":1766498400000,"end":1766502000000},{"id":"gdcrPZELph","start":1766509200000,"end":1766511000000},{"id":"gaJlDbEedh","start":1766559600000,"end":1766563200000},{"id":"URCCpnq8mY","start":1766570400000,"end":1766574000000},{"id":"zgSot8bOYL","start":1766581200000,"end":1766583000000},{"id":"hKkGWiLdfC","start":1766592000000,"end":1766593800000},{"id":"dnrbENRWo9","start":1766732400000,"end":1766736000000},{"id":"JbNSZJb8NQ","start":1766746800000,"end":1766748600000},{"id":"4rwDmImAQ6","start":1766761200000,"end":1766763000000},{"id":"I990NTEKIj","start":1767078000000,"end":1767081600000},{"id":"jeyAzFP8In","start":1767092400000,"end":1767094200000},{"id":"b0paMol6s1","start":1767106800000,"end":1767108600000},{"id":"ryuLT3qvjB","start":1767164400000,"end":1767168000000},{"id":"myV1b3BXqt","start":1767178800000,"end":1767180600000},{"id":"rIdGYTiGN8","start":1767189600000,"end":1767193200000},{"id":"15hCc85h9n","start":1767250800000,"end":1767252600000},{"id":"kEaoomJUBc","start":1767261600000,"end":1767263400000},{"id":"PgROfyxWUc","start":1767276000000,"end":1767277800000},{"id":"vshhm5jwSZ","start":1767286800000,"end":1767290400000},{"id":"nQe5syG6HI","start":1767337200000,"end":1767339000000},{"id":"R3ByYsBY3O","start":1767351600000,"end":1767353400000},{"id":"jlWygwIjly","start":1767366000000,"end":1767367800000},{"id":"pbyREikJb3","start":1767769200000,"end":1767772800000},{"id":"YaX3o31UT6","start":1767783600000,"end":1767787200000},{"id":"KwBdYZrdKL","start":1767798000000,"end":1767799800000},{"id":"SSC0WhScxL","start":1767942000000,"end":1767945600000},{"id":"uGe0hJtlpH","start":1767952800000,"end":1767956400000},{"id":"tnY9idYrI1","start":1767967200000,"end":1767970800000},{"id":"Lhmy30c9fG","start":1768287600000,"end":1768291200000},{"id":"AewbqQg2dr","start":1768298400000,"end":1768302000000},{"id":"2f3Jfdan7I","start":1768312800000,"end":1768314600000},{"id":"yKOwcq4Jwe","start":1768460400000,"end":1768462200000},{"id":"D2V5TB3Qob","start":1768471200000,"end":1768474800000},{"id":"EHIXUXwGgC","start":1768485600000,"end":1768487400000},{"id":"1t6j4NgLcG","start":1768546800000,"end":1768550400000},{"id":"PscGzJpw3S","start":1768561200000,"end":1768563000000},{"id":"XVuhxEHqTT","start":1768572000000,"end":1768573800000},{"id":"6v2UcV2jN8","start":1768582800000,"end":1768586400000},{"id":"lvRiu1YTHW","start":1768892400000,"end":1768896000000},{"id":"7tLajiJfhe","start":1768906800000,"end":1768908600000},{"id":"372P7XiC15","start":1768921200000,"end":1768923000000},{"id":"b43woF5wvB","start":1768978800000,"end":1768982400000},{"id":"OU4d3sCxa4","start":1768993200000,"end":1768996800000},{"id":"PLLhSc2MGi","start":1769007600000,"end":1769011200000},{"id":"Vg0tAOzb88","start":1769065200000,"end":1769068800000},{"id":"V7CJ3PiEQq","start":1769076000000,"end":1769077800000},{"id":"tQH7MBWvf9","start":1769086800000,"end":1769090400000},{"id":"yC9PpPoQFk","start":1769097600000,"end":1769099400000},{"id":"o9LLm5lIE6","start":1769151600000,"end":1769155200000},{"id":"sCNfzlkmWl","start":1769162400000,"end":1769166000000},{"id":"oFUsdEjMcX","start":1769173200000,"end":1769176800000},{"id":"buZBPnkWuz","start":1769184000000,"end":1769185800000},{"id":"X1pS9owA1i","start":1769497200000,"end":1769499000000},{"id":"Z3Ocvy5Y6y","start":1769511600000,"end":1769513400000},{"id":"ahB3FqGnBS","start":1769522400000,"end":1769526000000},{"id":"llUwMgYmw1","start":1769533200000,"end":1769535000000},{"id":"BBnObJHh3y","start":1769583600000,"end":1769587200000},{"id":"77TwoFkzB4","start":1769598000000,"end":1769599800000},{"id":"26se4nrSG3","start":1769608800000,"end":1769612400000},{"id":"z7Zo6h9Bm9","start":1769619600000,"end":1769623200000},{"id":"u9XtJ4q2Xm","start":1769756400000,"end":1769760000000},{"id":"I0ZDVqvRHK","start":1769770800000,"end":1769774400000},{"id":"6nCsrw1ct3","start":1769785200000,"end":1769788800000},{"id":"BjXFRYpxXK","start":1770102000000,"end":1770103800000},{"id":"rKYScvQeou","start":1770116400000,"end":1770120000000},{"id":"TaPcKPvsb3","start":1770127200000,"end":1770129000000},{"id":"4kVBE38wSm","start":1770138000000,"end":1770139800000},{"id":"4ch6wtFyBH","start":1770274800000,"end":1770276600000},{"id":"lcomrm9RxM","start":1770289200000,"end":1770292800000},{"id":"TRN1FcMBXW","start":1770303600000,"end":1770307200000},{"id":"r1F7gdcGRj","start":1770361200000,"end":1770364800000},{"id":"zisb2b1RcE","start":1770372000000,"end":1770375600000},{"id":"iCG727ajeW","start":1770386400000,"end":1770390000000},{"id":"MbuhcwHY9y","start":1770706800000,"end":1770708600000},{"id":"yhr8RjoBhs","start":1770721200000,"end":1770723000000},{"id":"CWp15IqA7N","start":1770732000000,"end":1770733800000},{"id":"m7sjHyLjuG","start":1770879600000,"end":1770883200000},{"id":"qjUcoD4J6u","start":1770890400000,"end":1770894000000},{"id":"DKX7WSNcRH","start":1770901200000,"end":1770904800000},{"id":"RkjcKbmZPY","start":1770915600000,"end":1770917400000},{"id":"E1mi9pBjsg","start":1771398000000,"end":1771399800000},{"id":"cL8LZVBxLi","start":1771412400000,"end":1771414200000},{"id":"lKGkTNT5xJ","start":1771423200000,"end":1771425000000},{"id":"B5AJVD6qQO","start":1771484400000,"end":1771488000000},{"id":"LAQC6eygwu","start":1771495200000,"end":1771498800000},{"id":"9IXdCDC7K7","start":1771509600000,"end":1771513200000},{"id":"i91tfaLK0R","start":1771520400000,"end":1771522200000},{"id":"ksiBQHGBhu","start":1772002800000,"end":1772006400000},{"id":"XacPG7u5gJ","start":1772013600000,"end":1772015400000},{"id":"g0oWo8jvIJ","start":1772028000000,"end":1772029800000},{"id":"q194qC8Vca","start":1772038800000,"end":1772040600000},{"id":"dQ4hmdD785","start":1772089200000,"end":1772092800000},{"id":"mgJPnNsXU3","start":1772103600000,"end":1772105400000},{"id":"vHnf3AGso7","start":1772118000000,"end":1772121600000},{"id":"JqWJEApZ0f","start":1772175600000,"end":1772177400000},{"id":"SpnVKZiCkP","start":1772186400000,"end":1772190000000},{"id":"Aw9TP4bnWn","start":1772197200000,"end":1772199000000},{"id":"OJwgeGajnw","start":1772211600000,"end":1772215200000},{"id":"pIMzFv2aJT","start":1772521200000,"end":1772523000000},{"id":"qk8zUarDCk","start":1772532000000,"end":1772533800000},{"id":"YGwDl8I7hP","start":1772546400000,"end":1772550000000},{"id":"rjfTVTFFJx","start":1772521200000,"end":1772523000000},{"id":"ULk6kJ14Tj","start":1772532000000,"end":1772535600000},{"id":"ASUz9rkhGE","start":1772546400000,"end":1772548200000},{"id":"LYGJnINy6A","start":1772557200000,"end":1772560800000},{"id":"2rkhLZtlZU","start":1772694000000,"end":1772697600000},{"id":"yYWSyu9Bjh","start":1772708400000,"end":1772710200000},{"id":"anxYSgpc8X","start":1772719200000,"end":1772722800000},{"id":"lvk3j5uwzZ","start":1772730000000,"end":1772731800000},{"id":"SNmeFvXKRO","start":1773212400000,"end":1773216000000},{"id":"TSEwsZK1yL","start":1773226800000,"end":1773230400000},{"id":"Ma35ZS17rc","start":1773241200000,"end":1773243000000},{"id":"cku0Q8sNrF","start":1773385200000,"end":1773388800000},{"id":"5EaZx2UiKg","start":1773399600000,"end":1773403200000},{"id":"WsjH9RjSSc","start":1773410400000,"end":1773414000000},{"id":"7SfMUh0X6K","start":1773421200000,"end":1773424800000},{"id":"IcwcZHqHBk","start":1773730800000,"end":1773734400000},{"id":"D1fQ8l20e5","start":1773741600000,"end":1773745200000},{"id":"99wyAsQKQw","start":1773756000000,"end":1773759600000},{"id":"GOaPM7anaz","start":1773766800000,"end":1773768600000},{"id":"6K2KUDx3Fv","start":1773817200000,"end":1773820800000},{"id":"hpo7yaDooF","start":1773831600000,"end":1773835200000},{"id":"PD4f3lDZhz","start":1773846000000,"end":1773849600000},{"id":"I02Ys1YmJL","start":1773990000000,"end":1773993600000},{"id":"A8vy0lNI4y","start":1774004400000,"end":1774008000000},{"id":"1yY8dDrSSi","start":1774018800000,"end":1774022400000},{"id":"pNKMLHjXZM","start":1774335600000,"end":1774339200000},{"id":"DbBvmV36ks","start":1774350000000,"end":1774353600000},{"id":"Z3xzbJlycq","start":1774364400000,"end":1774368000000},{"id":"xXsPD792M9","start":1774508400000,"end":1774510200000},{"id":"lRy5OS0u2L","start":1774522800000,"end":1774526400000},{"id":"rp5gAooyjZ","start":1774537200000,"end":1774539000000},{"id":"JioyNTGpwe","start":1774591200000,"end":1774593000000},{"id":"5WO17bFVpW","start":1774605600000,"end":1774609200000},{"id":"Ckrs2Snjno","start":1774616400000,"end":1774618200000},{"id":"2YYcqz1O7j","start":1774936800000,"end":1774940400000},{"id":"5ev9XQWEfQ","start":1774947600000,"end":1774951200000},{"id":"SQ2uo2Dmsa","start":1774958400000,"end":1774962000000},{"id":"xp4khOMNAZ","start":1774972800000,"end":1774976400000},{"id":"3NCTP2f0kZ","start":1775023200000,"end":1775026800000},{"id":"fhqUQOt8q3","start":1775037600000,"end":1775041200000},{"id":"pJKGZY7IRk","start":1775052000000,"end":1775055600000},{"id":"e6Yiy0MmCv","start":1775109600000,"end":1775113200000},{"id":"4AwE8LsgNz","start":1775120400000,"end":1775122200000},{"id":"jedWJysPJM","start":1775131200000,"end":1775133000000},{"id":"FNoaQOOUIq","start":1775145600000,"end":1775147400000},{"id":"v4SxdvhjAk","start":1775196000000,"end":1775197800000},{"id":"LJWymW7yH6","start":1775206800000,"end":1775208600000},{"id":"nV7F6DevDT","start":1775221200000,"end":1775224800000},{"id":"Y6D068gfXa","start":1775628000000,"end":1775631600000},{"id":"Ub8AjEELd8","start":1775638800000,"end":1775640600000},{"id":"vawMuAnFbo","start":1775653200000,"end":1775655000000},{"id":"eYUNyXRHDt","start":1775800800000,"end":1775804400000},{"id":"0BGOgbYesD","start":1775815200000,"end":1775817000000},{"id":"5j4tqdd5UI","start":1775826000000,"end":1775827800000},{"id":"FEaVSi1Kh9","start":1776232800000,"end":1776236400000},{"id":"4WKkVnFN33","start":1776247200000,"end":1776249000000},{"id":"RlDAwCTSzp","start":1776261600000,"end":1776263400000},{"id":"Ob8u8EfA7d","start":1776319200000,"end":1776321000000},{"id":"eh0QOnBewo","start":1776330000000,"end":1776333600000},{"id":"Tsv9RuAf9l","start":1776344400000,"end":1776348000000},{"id":"MAcnPIFzKK","start":1776837600000,"end":1776839400000},{"id":"Ls9HLCLKSL","start":1776848400000,"end":1776850200000},{"id":"KvBf5L24QV","start":1776859200000,"end":1776861000000},{"id":"5ONIeMdhd8","start":1776873600000,"end":1776875400000},{"id":"E5L94567Ha","start":1776924000000,"end":1776927600000},{"id":"xBraYwTIlr","start":1776934800000,"end":1776938400000},{"id":"PioOjwp24e","start":1776949200000,"end":1776951000000},{"id":"KaeO9JkdpF","start":1776960000000,"end":1776963600000},{"id":"CccoEsVkp2","start":1777356000000,"end":1777357800000},{"id":"qI9NtX7I2Z","start":1777370400000,"end":1777372200000},{"id":"J6LVMLjP97","start":1777384800000,"end":1777386600000},{"id":"MvAmz5ZJAh","start":1777442400000,"end":1777444200000},{"id":"AFm7TVtV6P","start":1777456800000,"end":1777458600000},{"id":"WAPIyXK75x","start":1777467600000,"end":1777471200000},{"id":"DscEbhT3ew","start":1777478400000,"end":1777482000000},{"id":"s0hGLEskcq","start":1777528800000,"end":1777530600000},{"id":"dXz2G5Gq4S","start":1777543200000,"end":1777545000000},{"id":"m3LTOLo4fJ","start":1777554000000,"end":1777557600000},{"id":"K4NAsWsrcn","start":1777615200000,"end":1777617000000},{"id":"uf0jj8AUPw","start":1777626000000,"end":1777629600000},{"id":"a5XEJapJCh","start":1777640400000,"end":1777644000000},{"id":"pS35t1BHf9","start":1777960800000,"end":1777962600000},{"id":"fguAP5zdIl","start":1777975200000,"end":1777977000000},{"id":"zHsMbbODS8","start":1777986000000,"end":1777989600000},{"id":"LnZ4leQpGL","start":1777996800000,"end":1777998600000},{"id":"CaZzcByLDq","start":1778047200000,"end":1778049000000},{"id":"8p1RHMtxpZ","start":1778061600000,"end":1778065200000},{"id":"gHFKcxQDwX","start":1778072400000,"end":1778076000000},{"id":"KWrWXsaW8b","start":1778083200000,"end":1778086800000},{"id":"v0O41BmXlS","start":1778133600000,"end":1778135400000},{"id":"32o8Rcs0XG","start":1778148000000,"end":1778149800000},{"id":"gGdJ5kj9b8","start":1778162400000,"end":1778166000000},{"id":"cmugjUqnef","start":1778220000000,"end":1778221800000},{"id":"pOs3S5h9vR","start":1778230800000,"end":1778234400000},{"id":"4WFsekhIZU","start":1778241600000,"end":1778245200000},{"id":"ytJLaJPYBf","start":1778256000000,"end":1778259600000},{"id":"LIv7AlJDaJ","start":1778565600000,"end":1778569200000},{"id":"tursfYiGk6","start":1778580000000,"end":1778583600000},{"id":"Z0Gowx6XDK","start":1778594400000,"end":1778596200000},{"id":"n9J1ODPZcd","start":1778738400000,"end":1778740200000},{"id":"K9QGriDX8R","start":1778752800000,"end":1778756400000},{"id":"NP4dr1srqG","start":1778763600000,"end":1778765400000},{"id":"GmhhJDhY3U","start":1779256800000,"end":1779258600000},{"id":"oL3Y5A8yzO","start":1779267600000,"end":1779269400000},{"id":"V1rLRYd2Vk","start":1779282000000,"end":1779283800000},{"id":"WqrPicVBtB","start":1779343200000,"end":1779345000000},{"id":"yVVX8ucfcV","start":1779357600000,"end":1779359400000},{"id":"ZjqdBLzCx2","start":1779372000000,"end":1779375600000},{"id":"2Z0ERhPg8v","start":1779775200000,"end":1779777000000},{"id":"3gYQCe1YJ1","start":1779786000000,"end":1779787800000},{"id":"Z94DPJRL7d","start":1779796800000,"end":1779800400000},{"id":"Kjq6CpK9MD","start":1779807600000,"end":1779809400000},{"id":"P5MJLRlylY","start":1779948000000,"end":1779951600000},{"id":"AAaqZsHUR4","start":1779962400000,"end":1779966000000},{"id":"UpauuZ2DZQ","start":1779976800000,"end":1779980400000},{"id":"ZG34ZODGcD","start":1780034400000,"end":1780038000000},{"id":"MU8N1J3vy1","start":1780045200000,"end":1780048800000},{"id":"tBZ1iS2SZp","start":1780056000000,"end":1780059600000},{"id":"iNS670ZSCU","start":1780070400000,"end":1780072200000},{"id":"yA4wD0sOBx","start":1780466400000,"end":1780468200000},{"id":"fZcJuIEzEp","start":1780477200000,"end":1780479000000},{"id":"jIHZldB0H8","start":1780491600000,"end":1780493400000},{"id":"wfA2Tw3Qt6","start":1780502400000,"end":1780504200000},{"id":"MAMSrhSUT9","start":1780639200000,"end":1780642800000},{"id":"l92OP8hS0F","start":1780653600000,"end":1780655400000},{"id":"R5nWbkHUbJ","start":1780668000000,"end":1780669800000},{"id":"Ci4oLME9xF","start":1780984800000,"end":1780988400000},{"id":"WUWPT7FWI6","start":1780999200000,"end":1781001000000},{"id":"IZcpkTQquC","start":1781010000000,"end":1781013600000},{"id":"PjKN5fweMK","start":1781071200000,"end":1781073000000},{"id":"g1VdDwKRkj","start":1781085600000,"end":1781089200000},{"id":"IxRszUHJqq","start":1781100000000,"end":1781103600000},{"id":"gy9ZBHLswF","start":1781244000000,"end":1781245800000},{"id":"fcLQ9LnR9z","start":1781254800000,"end":1781256600000},{"id":"yxzDtFBeXD","start":1781265600000,"end":1781269200000},{"id":"zXzg0JklfD","start":1781280000000,"end":1781283600000},{"id":"KcWo180YFF","start":1781589600000,"end":1781593200000},{"id":"wcSM1t603M","start":1781600400000,"end":1781604000000},{"id":"bTk3EMXsmy","start":1781614800000,"end":1781616600000},{"id":"yA303zzcMW","start":1781762400000,"end":1781766000000},{"id":"IrFdTGfkJ4","start":1781773200000,"end":1781776800000},{"id":"yfMAMSwSV8","start":1781787600000,"end":1781791200000},{"id":"NUppid2tn9","start":1781798400000,"end":1781800200000},{"id":"M8yv170B88","start":1782194400000,"end":1782198000000},{"id":"IG4nZxzqWs","start":1782205200000,"end":1782207000000},{"id":"rzuUOG8uw6","start":1782219600000,"end":1782221400000},{"id":"GE3wh6H2ih","start":1782367200000,"end":1782370800000},{"id":"jrSod9wikM","start":1782381600000,"end":1782385200000},{"id":"Vn6wF1SLTT","start":1782392400000,"end":1782396000000},{"id":"3KIv3wIpEh","start":1782403200000,"end":1782406800000},{"id":"jvUBmNo1Nn","start":1782799200000,"end":1782802800000},{"id":"L1i7H7nzqm","start":1782810000000,"end":1782811800000},{"id":"rLLoJBmPVA","start":1782824400000,"end":1782828000000},{"id":"96RoG4NQxk","start":1782835200000,"end":1782838800000},{"id":"sd6nZ82x0u","start":1782885600000,"end":1782889200000},{"id":"C8a2CWqm0j","start":1782900000000,"end":1782903600000},{"id":"jQABDtsIIo","start":1782910800000,"end":1782912600000},{"id":"pehUXkH34U","start":1783058400000,"end":1783062000000},{"id":"6A8e9e4cGr","start":1783072800000,"end":1783074600000},{"id":"S0Upzwlxy6","start":1783087200000,"end":1783090800000},{"id":"zYX4eXIke8","start":1783490400000,"end":1783494000000},{"id":"F9GgXepXL2","start":1783504800000,"end":1783506600000},{"id":"rjMkLb85eP","start":1783519200000,"end":1783521000000},{"id":"DWOxPm6iFX","start":1783663200000,"end":1783666800000},{"id":"KwIeBLM8F7","start":1783677600000,"end":1783681200000},{"id":"icJ7kDqYAD","start":1783692000000,"end":1783695600000},{"id":"nJdGPWZgdd","start":1784008800000,"end":1784010600000},{"id":"6B406q8bzl","start":1784019600000,"end":1784021400000},{"id":"NXZj34j0Vk","start":1784030400000,"end":1784032200000},{"id":"BbV9ywJlNq","start":1784041200000,"end":1784044800000},{"id":"DL8ed53k1s","start":1784181600000,"end":1784185200000},{"id":"dLYdLzTUQe","start":1784196000000,"end":1784197800000},{"id":"BzBEoKxEim","start":1784206800000,"end":1784210400000},{"id":"xtIljxEcUQ","start":1784700000000,"end":1784701800000},{"id":"mpkJojQnXN","start":1784710800000,"end":1784712600000},{"id":"0gkBQzcPIC","start":1784725200000,"end":1784728800000},{"id":"DhRZGzs6dH","start":1784786400000,"end":1784790000000},{"id":"pKegZ63GO0","start":1784800800000,"end":1784804400000},{"id":"gRisMcNmPq","start":1784811600000,"end":1784815200000},{"id":"GMGHrLfQAM","start":1784822400000,"end":1784824200000},{"id":"Cjma00OYzd","start":1785218400000,"end":1785220200000},{"id":"ukmzvclqjp","start":1785232800000,"end":1785236400000},{"id":"oGQK1mmSBl","start":1785243600000,"end":1785245400000},{"id":"ILAv8buogb","start":1785391200000,"end":1785394800000},{"id":"Fm2SfGudsE","start":1785402000000,"end":1785403800000},{"id":"VLHaTMreGF","start":1785416400000,"end":1785418200000},{"id":"Up6fXIbXSi","start":1785477600000,"end":1785481200000},{"id":"fg1jtVuPBq","start":1785492000000,"end":1785495600000},{"id":"ESqKXV2IVE","start":1785502800000,"end":1785504600000},{"id":"9vPeaGLv9w","start":1785513600000,"end":1785517200000},{"id":"6o9taTM78r","start":1785909600000,"end":1785913200000},{"id":"oaGjrq3imO","start":1785924000000,"end":1785927600000},{"id":"Zh59pGQa5u","start":1785934800000,"end":1785938400000},{"id":"PCPEXt1LSL","start":1786082400000,"end":1786084200000},{"id":"rcFIaUfSfj","start":1786093200000,"end":1786095000000},{"id":"TBNqsdQIzZ","start":1786104000000,"end":1786105800000},{"id":"yozufBfWUU","start":1786114800000,"end":1786116600000},{"id":"D6Tvj88ghk","start":1786428000000,"end":1786431600000},{"id":"HRSi4J6UUy","start":1786438800000,"end":1786442400000},{"id":"7TBlp3wmWN","start":1786453200000,"end":1786456800000},{"id":"9ud7U8AqEt","start":1786464000000,"end":1786465800000},{"id":"SyPbKmsBnW","start":1786514400000,"end":1786518000000},{"id":"z3BQ25ksiE","start":1786525200000,"end":1786527000000},{"id":"CvG1qXQ5Vd","start":1786536000000,"end":1786539600000},{"id":"srG4FEd1yt","start":1786546800000,"end":1786548600000},{"id":"HFkpFylMwd","start":1786600800000,"end":1786604400000},{"id":"mtTMNQFpg8","start":1786615200000,"end":1786618800000},{"id":"UKoMlDH2c4","start":1786629600000,"end":1786631400000},{"id":"WXSsLECLrQ","start":1786687200000,"end":1786690800000},{"id":"9Fet1z7zTV","start":1786698000000,"end":1786701600000},{"id":"mUJGEoj8nC","start":1786708800000,"end":1786710600000},{"id":"fxtzNzwUEJ","start":1786723200000,"end":1786725000000},{"id":"FJ4iNOED9G","start":1787032800000,"end":1787034600000},{"id":"zOXYrULrmq","start":1787047200000,"end":1787049000000},{"id":"qqrkL14XX6","start":1787058000000,"end":1787059800000},{"id":"iOlzNvXF7v","start":1787119200000,"end":1787121000000},{"id":"4bPkcotiAJ","start":1787133600000,"end":1787137200000},{"id":"27IgA2rQU4","start":1787144400000,"end":1787146200000},{"id":"ysB01P9EUm","start":1787155200000,"end":1787158800000},{"id":"5urXwcOu58","start":1787205600000,"end":1787207400000},{"id":"nTqK9bSXVF","start":1787216400000,"end":1787220000000},{"id":"OtgPsJo9Fc","start":1787227200000,"end":1787229000000},{"id":"5FyYYRFqyc","start":1787241600000,"end":1787245200000},{"id":"IfRTTghzqW","start":1787637600000,"end":1787641200000},{"id":"6L4pDbMqll","start":1787648400000,"end":1787652000000},{"id":"rztyKe4v9P","start":1787662800000,"end":1787666400000},{"id":"gVJbWQVGyt","start":1787724000000,"end":1787725800000},{"id":"pZNOQdRXZX","start":1787734800000,"end":1787738400000},{"id":"9t7TfV94lH","start":1787749200000,"end":1787751000000},{"id":"5HMD3Q0JpT","start":1787810400000,"end":1787812200000},{"id":"VnpoCogbqj","start":1787824800000,"end":1787826600000},{"id":"3gY96XDS3C","start":1787839200000,"end":1787842800000},{"id":"MqkT8bl6GR","start":1788242400000,"end":1788246000000},{"id":"H1clZxdfNk","start":1788256800000,"end":1788260400000},{"id":"CdnyBakLTT","start":1788267600000,"end":1788271200000},{"id":"qaDnMPbhSi","start":1788328800000,"end":1788330600000},{"id":"tavcDZaCjV","start":1788339600000,"end":1788343200000},{"id":"KOGoe8ElGS","start":1788354000000,"end":1788355800000},{"id":"8uk9g9X5Fk","start":1788501600000,"end":1788505200000},{"id":"xzOVJAQztP","start":1788512400000,"end":1788516000000},{"id":"j815YoEnih","start":1788523200000,"end":1788525000000},{"id":"czcxl1KlGG","start":1788534000000,"end":1788537600000},{"id":"ZVfSSla36f","start":1788933600000,"end":1788935400000},{"id":"LIK2neAdA0","start":1788944400000,"end":1788948000000},{"id":"VXQhzbaCPN","start":1788958800000,"end":1788960600000},{"id":"ULr8ZOgY2A","start":1788969600000,"end":1788971400000},{"id":"5DaKxg8aKF","start":1789106400000,"end":1789110000000},{"id":"SAZEfnoqkp","start":1789117200000,"end":1789119000000},{"id":"iu9NnTj7I6","start":1789128000000,"end":1789131600000},{"id":"N3yBoATqE1","start":1789138800000,"end":1789142400000},{"id":"y08bx7yhJh","start":1789538400000,"end":1789540200000},{"id":"XpD539VsuR","start":1789552800000,"end":1789554600000},{"id":"DWGXazJEIX","start":1789563600000,"end":1789565400000},{"id":"meZCZBQzvu","start":1789624800000,"end":1789628400000},{"id":"df40WmJICZ","start":1789635600000,"end":1789639200000},{"id":"NTiYlKHIQI","start":1789646400000,"end":1789650000000},{"id":"Bj1TsKX1Ho","start":1789660800000,"end":1789662600000},{"id":"jT1735U5y8","start":1789711200000,"end":1789714800000},{"id":"rsQhEA90Jr","start":1789722000000,"end":1789723800000},{"id":"GFg0fzviBI","start":1789732800000,"end":1789736400000},{"id":"O83avYU6L9","start":1789747200000,"end":1789750800000},{"id":"JadZUJJqjh","start":1790056800000,"end":1790058600000},{"id":"JTmw13Adje","start":1790067600000,"end":1790071200000},{"id":"VEGFkXz8I8","start":1790078400000,"end":1790082000000},{"id":"pq4ZtTSJC2","start":1790089200000,"end":1790092800000},{"id":"PwRqANbzzP","start":1790143200000,"end":1790145000000},{"id":"jpzdxjFMMn","start":1790154000000,"end":1790157600000},{"id":"tDrRgv4nVo","start":1790168400000,"end":1790172000000},{"id":"O3UNLH9KD4","start":1790179200000,"end":1790181000000},{"id":"ksgPxYzo9k","start":1790229600000,"end":1790233200000},{"id":"zMsztacv1l","start":1790240400000,"end":1790242200000},{"id":"jEk5OqWk80","start":1790254800000,"end":1790256600000},{"id":"OEyryQO8rc","start":1790265600000,"end":1790267400000},{"id":"mE1bgUIAjL","start":1790661600000,"end":1790665200000},{"id":"knv6Zb0aAr","start":1790672400000,"end":1790676000000},{"id":"Qyq1N1lM4k","start":1790686800000,"end":1790688600000},{"id":"kpJDmsNgM2","start":1790748000000,"end":1790751600000},{"id":"f1TcfgPhzG","start":1790758800000,"end":1790760600000},{"id":"CJLIl2WrCq","start":1790769600000,"end":1790771400000},{"id":"7lZZsek16w","start":1790780400000,"end":1790784000000},{"id":"lBOpmWpoNN","start":1790834400000,"end":1790838000000},{"id":"o1thz16H1x","start":1790848800000,"end":1790850600000},{"id":"MLmpJxiAEY","start":1790859600000,"end":1790863200000},{"id":"hrRt6FL57Q","start":1790870400000,"end":1790872200000},{"id":"VloYTemY6Z","start":1790834400000,"end":1790838000000},{"id":"FLo77glUjW","start":1790848800000,"end":1790850600000},{"id":"2ZNlblyJAt","start":1790859600000,"end":1790861400000},{"id":"7IlthWsk8F","start":1790920800000,"end":1790922600000},{"id":"7YR96weSeB","start":1790935200000,"end":1790938800000},{"id":"TCmCGPB50S","start":1790949600000,"end":1790951400000},{"id":"qLKBxklPWQ","start":1791266400000,"end":1791270000000},{"id":"KQWFxxG7rW","start":1791280800000,"end":1791284400000},{"id":"zSNPvNn5J8","start":1791295200000,"end":1791298800000},{"id":"AxM4bQyGXM","start":1791439200000,"end":1791442800000},{"id":"ymELMJ6ncf","start":1791453600000,"end":1791455400000},{"id":"bNn4rrRHwD","start":1791468000000,"end":1791469800000},{"id":"dK0L1zstpS","start":1791525600000,"end":1791529200000},{"id":"nUCssrHZ45","start":1791540000000,"end":1791541800000},{"id":"AO9ezpst7H","start":1791554400000,"end":1791558000000},{"id":"EgIFTZVBFs","start":1791957600000,"end":1791961200000},{"id":"626wBn2JFS","start":1791968400000,"end":1791970200000},{"id":"2PGj8AB1v0","start":1791982800000,"end":1791984600000},{"id":"KNuMPYPq6D","start":1791993600000,"end":1791995400000},{"id":"Qq7HYfIkEU","start":1792044000000,"end":1792045800000},{"id":"z4d9MyYpNm","start":1792054800000,"end":1792056600000},{"id":"xo4EGQIxVN","start":1792065600000,"end":1792067400000},{"id":"RUugVeNHpd","start":1792076400000,"end":1792080000000},{"id":"iUZXpdYAYo","start":1792476000000,"end":1792477800000},{"id":"FP6qsP5nx7","start":1792486800000,"end":1792490400000},{"id":"DbOAUwT4d6","start":1792501200000,"end":1792503000000},{"id":"wwNTgB1CKH","start":1792512000000,"end":1792515600000},{"id":"juv71Z62v8","start":1792562400000,"end":1792566000000},{"id":"fJYi21TFO2","start":1792573200000,"end":1792575000000},{"id":"ICgYFJUe4Y","start":1792587600000,"end":1792589400000},{"id":"F9tQicfi9I","start":1792598400000,"end":1792602000000},{"id":"QLLXZCU9PO","start":1792735200000,"end":1792737000000},{"id":"RwELqvQoAR","start":1792749600000,"end":1792751400000},{"id":"ZVhWgto5X1","start":1792760400000,"end":1792762200000},{"id":"5JkjLoG2h5","start":1793084400000,"end":1793088000000},{"id":"NXAFtwGR7L","start":1793095200000,"end":1793098800000},{"id":"Br4lEf18JC","start":1793106000000,"end":1793107800000},{"id":"1ILJWctEuE","start":1793120400000,"end":1793122200000},{"id":"nTjNU2rNX1","start":1793257200000,"end":1793260800000},{"id":"JbEd67dA7V","start":1793271600000,"end":1793273400000},{"id":"PdIw8AkNZ9","start":1793282400000,"end":1793284200000},{"id":"yR4xTnU4OT","start":1793343600000,"end":1793345400000},{"id":"pUQn2e70DN","start":1793354400000,"end":1793358000000},{"id":"7BFg1wV8Zh","start":1793365200000,"end":1793368800000},{"id":"JB8rjx3FXA","start":1793376000000,"end":1793377800000},{"id":"csUrXp9GlB","start":1793775600000,"end":1793779200000},{"id":"Uz1xGhYhdj","start":1793786400000,"end":1793790000000},{"id":"9fO5TDRJra","start":1793797200000,"end":1793799000000},{"id":"HVRbOcJ1db","start":1793808000000,"end":1793809800000},{"id":"f4w6Cy3Qd5","start":1793948400000,"end":1793952000000},{"id":"jXaUzO522x","start":1793959200000,"end":1793962800000},{"id":"4DAyB2SIHu","start":1793970000000,"end":1793973600000},{"id":"a2XP1LfPrz","start":1793980800000,"end":1793982600000},{"id":"QFoFs63q6Y","start":1794294000000,"end":1794295800000},{"id":"PWj5J0U0Ug","start":1794304800000,"end":1794308400000},{"id":"vth9VOSIaQ","start":1794315600000,"end":1794317400000},{"id":"y20qi5xjh6","start":1794330000000,"end":1794333600000},{"id":"9r5oerTzWp","start":1794380400000,"end":1794382200000},{"id":"6ExaypYGu9","start":1794394800000,"end":1794398400000},{"id":"QV7zCW3oli","start":1794409200000,"end":1794411000000},{"id":"Uabnk9W3Kj","start":1794466800000,"end":1794468600000},{"id":"Szi9Npv4dt","start":1794481200000,"end":1794484800000},{"id":"PoMEVE6fpA","start":1794495600000,"end":1794499200000},{"id":"Or71lAUgQk","start":1794553200000,"end":1794556800000},{"id":"H2gZNSthP9","start":1794564000000,"end":1794567600000},{"id":"VN5Q6zOaM5","start":1794574800000,"end":1794578400000},{"id":"aYcaOZKIJt","start":1794589200000,"end":1794592800000},{"id":"HDSFFDcmw7","start":1794985200000,"end":1794988800000},{"id":"HmPMNZg6je","start":1794999600000,"end":1795003200000},{"id":"qw9CL4mnVY","start":1795014000000,"end":1795017600000},{"id":"0rkUbEfHiR","start":1795071600000,"end":1795073400000},{"id":"sMVWnLnWZh","start":1795082400000,"end":1795086000000},{"id":"MWWL1RqeBD","start":1795096800000,"end":1795100400000},{"id":"cRx8aoY5Gk","start":1795158000000,"end":1795161600000},{"id":"8YKjQMKShN","start":1795168800000,"end":1795170600000},{"id":"gBgpXrqHNf","start":1795179600000,"end":1795183200000},{"id":"9BsyZj5OU2","start":1795190400000,"end":1795192200000},{"id":"VMuFTe3sm4","start":1795590000000,"end":1795593600000},{"id":"ufec7hyym8","start":1795604400000,"end":1795606200000},{"id":"3SN50sxzgP","start":1795615200000,"end":1795617000000},{"id":"KtoB3RQlm6","start":1795676400000,"end":1795678200000},{"id":"gLEmlCjKlC","start":1795690800000,"end":1795694400000},{"id":"LoXYbDV33L","start":1795701600000,"end":1795703400000},{"id":"aXuxNVgtCf","start":1795712400000,"end":1795714200000},{"id":"8pix8WoSV2","start":1795762800000,"end":1795764600000},{"id":"nedfVnHUMS","start":1795777200000,"end":1795780800000},{"id":"3hjT7zZJ0n","start":1795791600000,"end":1795793400000},{"id":"60j1iYp2J6","start":1796108400000,"end":1796112000000},{"id":"ot7hbLJl5P","start":1796119200000,"end":1796121000000},{"id":"Y6Ku9pLlWq","start":1796130000000,"end":1796131800000},{"id":"ch2Z1ORrKY","start":1796144400000,"end":1796146200000},{"id":"wB3LpCRxCu","start":1796281200000,"end":1796284800000},{"id":"vjcSqVnLw0","start":1796292000000,"end":1796293800000},{"id":"LDQFqxIugO","start":1796302800000,"end":1796306400000},{"id":"qcyABKCNRE","start":1796317200000,"end":1796319000000},{"id":"2bg5ZaFn8W","start":1796713200000,"end":1796716800000},{"id":"VUxCelNw6N","start":1796727600000,"end":1796729400000},{"id":"sxfOxo9sZK","start":1796742000000,"end":1796743800000},{"id":"fY5SwLPYLC","start":1796886000000,"end":1796887800000},{"id":"NHv1hJMqf9","start":1796896800000,"end":1796898600000},{"id":"peFUAvYdDF","start":1796907600000,"end":1796909400000},{"id":"9qyL27WuJM","start":1796922000000,"end":1796923800000},{"id":"xBBxKRy5sF","start":1796972400000,"end":1796976000000},{"id":"03xEdFYYW8","start":1796983200000,"end":1796986800000},{"id":"9HeenF5h4W","start":1796997600000,"end":1797001200000},{"id":"sT69ETmEMu","start":1797008400000,"end":1797010200000},{"id":"GdIvo2M9IV","start":1797404400000,"end":1797406200000},{"id":"xD9xsiopJt","start":1797418800000,"end":1797420600000},{"id":"oLc7Opqjhl","start":1797433200000,"end":1797436800000},{"id":"4ZlG6ABHRf","start":1797577200000,"end":1797579000000},{"id":"PdMF9xzvfM","start":1797591600000,"end":1797593400000},{"id":"CQeTZtb5Rk","start":1797606000000,"end":1797609600000},{"id":"qj8gk8DFh3","start":1797922800000,"end":1797924600000},{"id":"Ye0Ffs55Z2","start":1797937200000,"end":1797939000000},{"id":"AHwr976B06","start":1797951600000,"end":1797955200000},{"id":"RmbOkQtsMr","start":1798095600000,"end":1798097400000},{"id":"Llup60x4Lh","start":1798106400000,"end":1798110000000},{"id":"WwSNn921rp","start":1798120800000,"end":1798124400000},{"id":"CrulFyMmod","start":1798131600000,"end":1798133400000},{"id":"MBpA3OWKM3","start":1798182000000,"end":1798183800000},{"id":"WQSMeaOzcf","start":1798196400000,"end":1798198200000},{"id":"Ynlp44EshV","start":1798210800000,"end":1798212600000},{"id":"yb3a2P5BNa","start":1798614000000,"end":1798615800000},{"id":"PNNT7XWbQc","start":1798628400000,"end":1798630200000},{"id":"shOQGRqfwX","start":1798639200000,"end":1798641000000},{"id":"fLTMAUC9fL","start":1798650000000,"end":1798653600000},{"id":"IO6lL7UIvH","start":1798786800000,"end":1798788600000},{"id":"acppQENOYi","start":1798801200000,"end":1798804800000},{"id":"20Un2NvSIj","start":1798815600000,"end":1798817400000},{"id":"RlyAXwFjFQ","start":1799132400000,"end":1799134200000},{"id":"ZulFcun4vI","start":1799146800000,"end":1799150400000},{"id":"Dhaicg9Yvr","start":1799161200000,"end":1799163000000},{"id":"f8n9ajL3xl","start":1799305200000,"end":1799307000000},{"id":"G9RAxTSCr4","start":1799316000000,"end":1799319600000},{"id":"6B3LQsjIjm","start":1799330400000,"end":1799332200000},{"id":"NskscGehze","start":1799341200000,"end":1799344800000},{"id":"a419td3Psk","start":1799737200000,"end":1799739000000},{"id":"OFAB2sjLpv","start":1799751600000,"end":1799753400000},{"id":"itmiyOVKkk","start":1799766000000,"end":1799767800000},{"id":"K2fPjGOIaW","start":1799910000000,"end":1799911800000},{"id":"5bJhuOdWnF","start":1799920800000,"end":1799924400000},{"id":"k2RDM2kv6M","start":1799935200000,"end":1799938800000},{"id":"f9NAUnZS19","start":1799996400000,"end":1800000000000},{"id":"8ounrxYGMH","start":1800010800000,"end":1800012600000},{"id":"YxO4rekqgv","start":1800025200000,"end":1800028800000},{"id":"Js7oCbxiNL","start":1800342000000,"end":1800345600000},{"id":"pHJOZ1Ow2r","start":1800352800000,"end":1800354600000},{"id":"wjaNLCSjla","start":1800363600000,"end":1800367200000},{"id":"02y97vg6KA","start":1800374400000,"end":1800376200000},{"id":"TgkKeMf1Tq","start":1800428400000,"end":1800430200000},{"id":"r2P9D54uDa","start":1800442800000,"end":1800444600000},{"id":"gioFqx29eU","start":1800453600000,"end":1800457200000},{"id":"OwpX3aN6iR","start":1800464400000,"end":1800466200000},{"id":"eBRNiGN6RU","start":1800514800000,"end":1800516600000},{"id":"bdeCrXTIRK","start":1800525600000,"end":1800529200000},{"id":"ceHJRNoppu","start":1800536400000,"end":1800538200000},{"id":"sUnUY8Yveo","start":1800547200000,"end":1800549000000},{"id":"mUwd9nxwcz","start":1800601200000,"end":1800603000000},{"id":"xC0FqX4Ezy","start":1800612000000,"end":1800613800000},{"id":"zKRz2vOzhg","start":1800626400000,"end":1800630000000},{"id":"dMYIvQQZGo","start":1800637200000,"end":1800639000000},{"id":"PDvzruQ7cd","start":1800946800000,"end":1800948600000},{"id":"w720aeWRFB","start":1800957600000,"end":1800961200000},{"id":"izBDkKCYNf","start":1800968400000,"end":1800972000000},{"id":"PrKNHMfMKE","start":1800979200000,"end":1800981000000},{"id":"0ndayqyS81","start":1801119600000,"end":1801121400000},{"id":"84wIVKNi73","start":1801134000000,"end":1801137600000},{"id":"kYVZzaJtqU","start":1801148400000,"end":1801152000000},{"id":"iYoposNNzB","start":1801638000000,"end":1801639800000},{"id":"0x1jrCzKxO","start":1801648800000,"end":1801652400000},{"id":"MjuumRIVEY","start":1801659600000,"end":1801661400000},{"id":"yExJUWUAaz","start":1801670400000,"end":1801672200000},{"id":"gu631fmsSY","start":1801724400000,"end":1801726200000},{"id":"FeTAwJ87Tc","start":1801735200000,"end":1801737000000},{"id":"sHMduz3VBh","start":1801749600000,"end":1801751400000},{"id":"Nw7d781gm8","start":1801760400000,"end":1801762200000},{"id":"9xkXddHPw1","start":1801810800000,"end":1801814400000},{"id":"nTkfcg7tPf","start":1801821600000,"end":1801825200000},{"id":"MZf8Sa05OT","start":1801832400000,"end":1801834200000},{"id":"u7c6pIJQvx","start":1801846800000,"end":1801848600000},{"id":"jP6j6s4yKs","start":1802242800000,"end":1802244600000},{"id":"nFblEiyOqF","start":1802257200000,"end":1802259000000},{"id":"2j3iYGfcZN","start":1802268000000,"end":1802269800000},{"id":"hyR9xdoYwz","start":1802415600000,"end":1802417400000},{"id":"hVOVbvZ9r3","start":1802426400000,"end":1802430000000},{"id":"BdB2NlUfTr","start":1802440800000,"end":1802444400000},{"id":"7lDg2lfyOP","start":1802847600000,"end":1802849400000},{"id":"gMB1E4FLdM","start":1802862000000,"end":1802865600000},{"id":"flFzXLaRJZ","start":1802876400000,"end":1802878200000},{"id":"xTpAXZK2Na","start":1803020400000,"end":1803024000000},{"id":"nAfBZ8g0Zo","start":1803034800000,"end":1803038400000},{"id":"TubIjflQTi","start":1803045600000,"end":1803049200000},{"id":"BRDi2okc1X","start":1803366000000,"end":1803367800000},{"id":"Aq573ADNDT","start":1803376800000,"end":1803378600000},{"id":"xjvkelSCug","start":1803391200000,"end":1803394800000},{"id":"7u0z3gWLEl","start":1803402000000,"end":1803403800000},{"id":"XvNYu2yBNB","start":1803538800000,"end":1803540600000},{"id":"Cm6o6CWCHz","start":1803553200000,"end":1803556800000},{"id":"yx8xoCum0u","start":1803567600000,"end":1803569400000},{"id":"7W3BGx5jTX","start":1803970800000,"end":1803972600000},{"id":"U5aGc317vQ","start":1803985200000,"end":1803988800000},{"id":"fjcwr4zPo8","start":1803999600000,"end":1804003200000},{"id":"9lrfz7mmFl","start":1804057200000,"end":1804059000000},{"id":"r1pnc42ica","start":1804068000000,"end":1804069800000},{"id":"Mlg6dBlJf9","start":1804078800000,"end":1804080600000},{"id":"oBNef4L68V","start":1804093200000,"end":1804096800000},{"id":"fTaObv8GQD","start":1804143600000,"end":1804145400000},{"id":"G5er76hsve","start":1804154400000,"end":1804156200000},{"id":"WUI0fkbi0y","start":1804165200000,"end":1804168800000},{"id":"w3tbscS1nP","start":1804176000000,"end":1804179600000},{"id":"4JREtbgnZN","start":1804575600000,"end":1804577400000},{"id":"p1XBS9021h","start":1804590000000,"end":1804591800000},{"id":"vtQP3glvH2","start":1804604400000,"end":1804608000000},{"id":"Xgnz7javHZ","start":1804748400000,"end":1804752000000},{"id":"f0hH4QLLls","start":1804759200000,"end":1804761000000},{"id":"Xiv4pq4AUU","start":1804770000000,"end":1804773600000},{"id":"jtSrYaEqBA","start":1804780800000,"end":1804784400000},{"id":"pGn6IzOcn1","start":1805266800000,"end":1805268600000},{"id":"BdYNLoNrSL","start":1805277600000,"end":1805281200000},{"id":"V9xsvcmB6U","start":1805288400000,"end":1805292000000},{"id":"cwgYU2pY7z","start":1805302800000,"end":1805304600000},{"id":"UMyVnsBnkn","start":1805353200000,"end":1805355000000},{"id":"mWqgVO1Tij","start":1805367600000,"end":1805369400000},{"id":"MwePr9Psos","start":1805378400000,"end":1805382000000},{"id":"Lcpnm8EL29","start":1805389200000,"end":1805391000000},{"id":"9ZV4M6cB7I","start":1805439600000,"end":1805443200000},{"id":"l4XvNPbkE9","start":1805454000000,"end":1805455800000},{"id":"NGOe3tzHO4","start":1805464800000,"end":1805468400000},{"id":"LMM3aaaxFy","start":1805785200000,"end":1805787000000},{"id":"9AK22D3qCX","start":1805796000000,"end":1805797800000},{"id":"nDEdzuvHW1","start":1805806800000,"end":1805808600000},{"id":"ydhYYvKDEs","start":1805817600000,"end":1805819400000},{"id":"e2MOooUOfv","start":1805871600000,"end":1805873400000},{"id":"L5q0JBZ1oU","start":1805886000000,"end":1805887800000},{"id":"lCUe0UqsJ8","start":1805896800000,"end":1805900400000},{"id":"aKxlCgHCm3","start":1805958000000,"end":1805959800000},{"id":"weJRh0OsE3","start":1805972400000,"end":1805976000000},{"id":"hhaDtFNsOw","start":1805983200000,"end":1805985000000},{"id":"aJF9rgHYNx","start":1806040800000,"end":1806044400000},{"id":"yjH7vhm89N","start":1806055200000,"end":1806058800000},{"id":"PMcj12msYW","start":1806069600000,"end":1806071400000},{"id":"QK8aD8YKZX","start":1806386400000,"end":1806388200000},{"id":"RlCZOJi7nd","start":1806397200000,"end":1806399000000},{"id":"DPpiHgsE8n","start":1806408000000,"end":1806411600000},{"id":"oIkZwwZ76f","start":1806422400000,"end":1806426000000},{"id":"mwehDLxAZ2","start":1806559200000,"end":1806561000000},{"id":"YrFwwDno2Q","start":1806570000000,"end":1806573600000},{"id":"3pZiyx4ngq","start":1806584400000,"end":1806586200000},{"id":"JWlEFNh5aA","start":1806595200000,"end":1806597000000},{"id":"Yb9Rtl4lxP","start":1806645600000,"end":1806649200000},{"id":"QFQe5P6JcM","start":1806660000000,"end":1806663600000},{"id":"e9UHC6pWOx","start":1806670800000,"end":1806672600000},{"id":"5SWOl0r2Hj","start":1807077600000,"end":1807079400000},{"id":"xmbSwpASgX","start":1807088400000,"end":1807092000000},{"id":"KhuzjQ1mNs","start":1807099200000,"end":1807101000000},{"id":"z64HHcaAX5","start":1807113600000,"end":1807117200000},{"id":"m6LPeCU12o","start":1807164000000,"end":1807165800000},{"id":"1DQpojxSvn","start":1807178400000,"end":1807180200000},{"id":"F3i1FEyVuj","start":1807189200000,"end":1807191000000},{"id":"aRYCqlyyGM","start":1807596000000,"end":1807599600000},{"id":"FZKPKOjfp9","start":1807610400000,"end":1807612200000},{"id":"mqcC9uV5vk","start":1807624800000,"end":1807628400000},{"id":"PbcQrJYD2U","start":1807768800000,"end":1807772400000},{"id":"aDo7feCWIz","start":1807783200000,"end":1807786800000},{"id":"u1Ms1iebOd","start":1807797600000,"end":1807799400000},{"id":"TZbnDiu8nQ","start":1807855200000,"end":1807858800000},{"id":"Bdqi2RCvZI","start":1807869600000,"end":1807871400000},{"id":"sVyV4nuhLI","start":1807884000000,"end":1807887600000},{"id":"YyXo20iFry","start":1808287200000,"end":1808289000000},{"id":"561pvSVvhJ","start":1808298000000,"end":1808299800000},{"id":"DarrWKVyOW","start":1808308800000,"end":1808312400000},{"id":"neYOy5bUFf","start":1808323200000,"end":1808325000000},{"id":"EBkc9dgDd8","start":1808460000000,"end":1808463600000},{"id":"EBSxscSehx","start":1808474400000,"end":1808476200000},{"id":"fhWAdZRvl7","start":1808485200000,"end":1808487000000},{"id":"GSAtHVbZ9z","start":1808805600000,"end":1808807400000},{"id":"PWNYBVzUrB","start":1808816400000,"end":1808820000000},{"id":"vrzdDyH1Nm","start":1808827200000,"end":1808829000000},{"id":"JPpgkdmDoh","start":1808838000000,"end":1808839800000},{"id":"SWVS5IZ7Me","start":1808978400000,"end":1808982000000},{"id":"6LlLtb9xT1","start":1808989200000,"end":1808992800000},{"id":"KHzompRTuW","start":1809000000000,"end":1809001800000},{"id":"tqhDZNIA56","start":1809014400000,"end":1809016200000},{"id":"zMYL4zex5c","start":1809410400000,"end":1809414000000},{"id":"pAZfFA1e51","start":1809424800000,"end":1809426600000},{"id":"gPK5QcXp22","start":1809435600000,"end":1809439200000},{"id":"VDz1sEm70e","start":1809446400000,"end":1809450000000},{"id":"A776h3wZl5","start":1809496800000,"end":1809500400000},{"id":"Ln9TQfNYyA","start":1809507600000,"end":1809509400000},{"id":"SNEU1i4ktK","start":1809522000000,"end":1809523800000},{"id":"I9ShcSTmhI","start":1809532800000,"end":1809536400000},{"id":"uZFWxO1O33","start":1809669600000,"end":1809673200000},{"id":"RLdOloGhDV","start":1809684000000,"end":1809687600000},{"id":"qOimbUan8V","start":1809694800000,"end":1809698400000},{"id":"SKwuXQqC9r","start":1810015200000,"end":1810018800000},{"id":"QLd4H2X5L2","start":1810029600000,"end":1810031400000},{"id":"y1fgFTezgS","start":1810040400000,"end":1810042200000},{"id":"MukvvJjV79","start":1810051200000,"end":1810054800000},{"id":"fcohQd3JcV","start":1810101600000,"end":1810105200000},{"id":"VbdMBckIvz","start":1810116000000,"end":1810117800000},{"id":"C1qN4sBGId","start":1810130400000,"end":1810134000000},{"id":"R9OVsHciia","start":1810274400000,"end":1810278000000},{"id":"clD2wjYdts","start":1810288800000,"end":1810290600000},{"id":"30OE3f03Gg","start":1810303200000,"end":1810305000000},{"id":"ltLpHwVirH","start":1810620000000,"end":1810621800000},{"id":"5XuFAR9QS2","start":1810630800000,"end":1810632600000},{"id":"nCOEPWToSz","start":1810641600000,"end":1810643400000},{"id":"EUAaG5EYbc","start":1810656000000,"end":1810657800000},{"id":"U63OrNs6l0","start":1810792800000,"end":1810796400000},{"id":"Z6zgIRacB5","start":1810807200000,"end":1810810800000},{"id":"R6EKo6586L","start":1810821600000,"end":1810825200000},{"id":"rEYBqThNyF","start":1810879200000,"end":1810882800000},{"id":"ZAZgzC1axl","start":1810890000000,"end":1810891800000},{"id":"xnPtn1fzPP","start":1810900800000,"end":1810902600000},{"id":"SrNgQbY9KE","start":1810911600000,"end":1810915200000},{"id":"v8G8WwzXxi","start":1811311200000,"end":1811314800000},{"id":"2zloArn7Tk","start":1811325600000,"end":1811329200000},{"id":"QmV86tMpPX","start":1811336400000,"end":1811338200000},{"id":"HsriSLspq0","start":1811347200000,"end":1811349000000},{"id":"SizTruHi3I","start":1811397600000,"end":1811399400000},{"id":"wGX3FFX7Mv","start":1811408400000,"end":1811410200000},{"id":"Twjew87WUH","start":1811422800000,"end":1811424600000},{"id":"C0bRdTHe20","start":1811433600000,"end":1811437200000},{"id":"f3sW5aHeTe","start":1811484000000,"end":1811487600000},{"id":"BjfSn8uFjN","start":1811498400000,"end":1811500200000},{"id":"S1UDPyPtE4","start":1811509200000,"end":1811512800000},{"id":"00CJ1geXSs","start":1811829600000,"end":1811833200000},{"id":"M6l8S2GlDj","start":1811844000000,"end":1811845800000},{"id":"RXi2ee6ZyP","start":1811858400000,"end":1811860200000},{"id":"5uEdMyAJFA","start":1812002400000,"end":1812004200000},{"id":"GM1ib5kmzg","start":1812013200000,"end":1812015000000},{"id":"l2ZBuYMOOc","start":1812024000000,"end":1812025800000},{"id":"NdUbCZBMAr","start":1812034800000,"end":1812038400000},{"id":"PyJPJlQS69","start":1812088800000,"end":1812092400000},{"id":"CO7kzaLjiK","start":1812099600000,"end":1812103200000},{"id":"k7lhWIRv7O","start":1812110400000,"end":1812112200000},{"id":"s3p5avQlcy","start":1812124800000,"end":1812128400000},{"id":"yR56kIC6cY","start":1812434400000,"end":1812436200000},{"id":"YyYQnBSzs8","start":1812448800000,"end":1812452400000},{"id":"BIwl1lk9sZ","start":1812459600000,"end":1812461400000},{"id":"P54lwskUi4","start":1812607200000,"end":1812610800000},{"id":"TiXHq9aCrx","start":1812618000000,"end":1812619800000},{"id":"brWhImMm2C","start":1812628800000,"end":1812632400000},{"id":"ANjyYo8cCA","start":1812643200000,"end":1812646800000},{"id":"O5zTry4h98","start":1813125600000,"end":1813129200000},{"id":"Hxb9qn6f7w","start":1813136400000,"end":1813138200000},{"id":"eJ133HQLVx","start":1813150800000,"end":1813154400000},{"id":"ysGy2Xfx6d","start":1813161600000,"end":1813165200000},{"id":"FUz47wUefI","start":1813298400000,"end":1813302000000},{"id":"eQ5hgNbVVB","start":1813312800000,"end":1813314600000},{"id":"m7IUJSEdqb","start":1813323600000,"end":1813325400000},{"id":"tr8MT7Cbrd","start":1813334400000,"end":1813336200000},{"id":"ZviJIASQye","start":1813644000000,"end":1813647600000},{"id":"BRCoS86djB","start":1813658400000,"end":1813662000000},{"id":"0MvsrYT2ab","start":1813672800000,"end":1813674600000},{"id":"FXPVoqhQ0Q","start":1813730400000,"end":1813732200000},{"id":"vIiYNDHSCi","start":1813744800000,"end":1813746600000},{"id":"86glDfXZlx","start":1813759200000,"end":1813761000000},{"id":"wX8qwvLoNe","start":1813816800000,"end":1813820400000},{"id":"Qlho0BQ8im","start":1813827600000,"end":1813829400000},{"id":"L3K6wG7OXq","start":1813842000000,"end":1813843800000},{"id":"E19SeaeiFG","start":1813852800000,"end":1813856400000},{"id":"MRymTxS3iW","start":1813903200000,"end":1813905000000},{"id":"w3Pz33g6uA","start":1813914000000,"end":1813915800000},{"id":"LB04TQlOSK","start":1813928400000,"end":1813932000000},{"id":"9xHNLd8byq","start":1814248800000,"end":1814250600000},{"id":"Sg2irOajOj","start":1814259600000,"end":1814261400000},{"id":"kZTwfFDSJA","start":1814270400000,"end":1814274000000},{"id":"wZJlT16DyJ","start":1814281200000,"end":1814284800000},{"id":"Ueb4uLFWHK","start":1814335200000,"end":1814337000000},{"id":"QE1fGKnpgE","start":1814346000000,"end":1814349600000},{"id":"26y7P0gr6r","start":1814360400000,"end":1814364000000},{"id":"eSOo9Oz5TC","start":1814421600000,"end":1814425200000},{"id":"s4yI67go4b","start":1814436000000,"end":1814437800000},{"id":"MMlJll7ru3","start":1814450400000,"end":1814454000000},{"id":"N3XnCFvel9","start":1814853600000,"end":1814857200000},{"id":"C2mzs8RTqA","start":1814868000000,"end":1814871600000},{"id":"mcnRFtKsJr","start":1814882400000,"end":1814886000000},{"id":"EigChQEd4C","start":1815026400000,"end":1815028200000},{"id":"iIL4ZGpEEx","start":1815040800000,"end":1815044400000},{"id":"ObDZV6sriy","start":1815051600000,"end":1815055200000},{"id":"vRUixPvSQE","start":1815112800000,"end":1815114600000},{"id":"WK3N00Rfio","start":1815123600000,"end":1815125400000},{"id":"2h9ttVoTR4","start":1815138000000,"end":1815141600000},{"id":"no1n6s5O8j","start":1815148800000,"end":1815150600000},{"id":"6yCxi6qcsM","start":1815544800000,"end":1815546600000},{"id":"MuLst4rhbQ","start":1815559200000,"end":1815561000000},{"id":"o4NBiyvwP0","start":1815573600000,"end":1815575400000},{"id":"xWqnNWusPD","start":1815631200000,"end":1815633000000},{"id":"UmpDzmMSuJ","start":1815645600000,"end":1815649200000},{"id":"mbZPHFFMjF","start":1815656400000,"end":1815660000000},{"id":"4DPCJANbds","start":1815717600000,"end":1815721200000},{"id":"LbNZDrQo3C","start":1815728400000,"end":1815730200000},{"id":"KYzpxziG7y","start":1815739200000,"end":1815741000000},{"id":"qvggT7CSr2","start":1815750000000,"end":1815753600000},{"id":"oEMt5pOSg4","start":1816063200000,"end":1816066800000},{"id":"GnLOfINmgF","start":1816074000000,"end":1816075800000},{"id":"oKYj9AOfnj","start":1816084800000,"end":1816086600000},{"id":"ohDdyZoiNo","start":1816099200000,"end":1816101000000},{"id":"gZRIBn03fi","start":1816236000000,"end":1816239600000},{"id":"aVWke0Ctja","start":1816250400000,"end":1816252200000},{"id":"wmKIt37ost","start":1816264800000,"end":1816266600000},{"id":"TRCF0DOg8h","start":1816322400000,"end":1816326000000},{"id":"PT7dOx3wxF","start":1816336800000,"end":1816338600000},{"id":"B5icK1WHd2","start":1816347600000,"end":1816351200000},{"id":"h8m7ZzBB1J","start":1816358400000,"end":1816360200000},{"id":"UOxxhCTdSl","start":1816668000000,"end":1816671600000},{"id":"2p213VUIaV","start":1816678800000,"end":1816682400000},{"id":"fdIyQpV15F","start":1816689600000,"end":1816693200000},{"id":"dQlEuZGU3z","start":1816700400000,"end":1816702200000},{"id":"aGqYSaL4kn","start":1816754400000,"end":1816756200000},{"id":"k3BBI4NYNf","start":1816765200000,"end":1816768800000},{"id":"w0ZQLJtwSt","start":1816779600000,"end":1816781400000},{"id":"Oho7fHih22","start":1816790400000,"end":1816794000000},{"id":"F1IXgBBwNQ","start":1816927200000,"end":1816930800000},{"id":"sE4MmA1bqH","start":1816938000000,"end":1816939800000},{"id":"QXveEpGwUI","start":1816948800000,"end":1816952400000},{"id":"rY2LeZfspm","start":1816963200000,"end":1816966800000},{"id":"VCgYzhI3rz","start":1817272800000,"end":1817274600000},{"id":"zoUY9dWwdq","start":1817283600000,"end":1817285400000},{"id":"0tlmLLuHwf","start":1817298000000,"end":1817301600000},{"id":"YcOh67BJmZ","start":1817308800000,"end":1817310600000},{"id":"sZia6QTq5I","start":1817445600000,"end":1817447400000},{"id":"FLrDUEauE4","start":1817460000000,"end":1817461800000},{"id":"nGD9993Vjs","start":1817470800000,"end":1817472600000},{"id":"Q8VjJSfdyD","start":1817481600000,"end":1817483400000},{"id":"0eL3XQNJ5u","start":1817532000000,"end":1817533800000},{"id":"lsNGtEQcSc","start":1817546400000,"end":1817550000000},{"id":"jccBmLXXo5","start":1817560800000,"end":1817564400000},{"id":"qrRD2EChYE","start":1817877600000,"end":1817879400000},{"id":"34Dlg3Ft1C","start":1817888400000,"end":1817892000000},{"id":"o4pSrmgmJD","start":1817902800000,"end":1817906400000},{"id":"0wN279RQyC","start":1817964000000,"end":1817967600000},{"id":"LPhTg1M7CL","start":1817974800000,"end":1817978400000},{"id":"vQaF3pPRcM","start":1817989200000,"end":1817992800000},{"id":"xwYksJBt54","start":1818050400000,"end":1818052200000},{"id":"NpOyvy0JLa","start":1818064800000,"end":1818066600000},{"id":"tkkwOXRwdP","start":1818079200000,"end":1818081000000},{"id":"212sfDu0pV","start":1818568800000,"end":1818570600000},{"id":"tn6kCkIBv8","start":1818583200000,"end":1818586800000},{"id":"wkY0jLDn0a","start":1818594000000,"end":1818595800000},{"id":"Z1K4iGhlNn","start":1818741600000,"end":1818743400000},{"id":"pNMEknrXy8","start":1818752400000,"end":1818754200000},{"id":"avfKW6gUaS","start":1818763200000,"end":1818766800000},{"id":"LlrB2KKW3b","start":1818777600000,"end":1818779400000},{"id":"9NBNokgDId","start":1819087200000,"end":1819090800000},{"id":"wwA5ErbwVT","start":1819098000000,"end":1819099800000},{"id":"a4aS4KyTx9","start":1819112400000,"end":1819116000000},{"id":"c4rolHZpg8","start":1819173600000,"end":1819177200000},{"id":"nqSWDgpvSl","start":1819188000000,"end":1819189800000},{"id":"T0svuhMKeY","start":1819198800000,"end":1819200600000},{"id":"sCWVs4s648","start":1819260000000,"end":1819263600000},{"id":"1WwXBg12Ld","start":1819274400000,"end":1819276200000},{"id":"jzznuSa6pp","start":1819288800000,"end":1819292400000},{"id":"DvT8Nm4cUm","start":1819692000000,"end":1819695600000},{"id":"1IL8hsWvsX","start":1819706400000,"end":1819710000000},{"id":"pmJeLMT4cr","start":1819720800000,"end":1819722600000},{"id":"5fEKoeswim","start":1819778400000,"end":1819780200000},{"id":"LzOqTo1of5","start":1819792800000,"end":1819794600000},{"id":"1y3pDG81tY","start":1819803600000,"end":1819807200000},{"id":"t4Z0KTBZuR","start":1819951200000,"end":1819954800000},{"id":"jbDuDwhlVz","start":1819962000000,"end":1819963800000},{"id":"2KF9gU40qA","start":1819976400000,"end":1819980000000},{"id":"k8Ml06GKen","start":1820296800000,"end":1820300400000},{"id":"UKapRw3h9H","start":1820311200000,"end":1820313000000},{"id":"hyFM3mF8Dl","start":1820322000000,"end":1820325600000},{"id":"qemcdG6QZy","start":1820383200000,"end":1820385000000},{"id":"M81FGY1NRM","start":1820394000000,"end":1820395800000},{"id":"IzWL5MnJzj","start":1820404800000,"end":1820408400000},{"id":"NJjdmCZ88d","start":1820419200000,"end":1820421000000},{"id":"nWkLj0vcTg","start":1820556000000,"end":1820559600000},{"id":"rkvl6Z97Au","start":1820566800000,"end":1820570400000},{"id":"rgg7HGwKYb","start":1820577600000,"end":1820581200000},{"id":"27drxoeQZs","start":1820588400000,"end":1820592000000},{"id":"VbPcbEGBd4","start":1820901600000,"end":1820903400000},{"id":"r4YqEfNZX6","start":1820912400000,"end":1820916000000},{"id":"l57O5Xg9o0","start":1820923200000,"end":1820925000000},{"id":"JCUW33NPtc","start":1820937600000,"end":1820941200000},{"id":"atZuIZcoUx","start":1820988000000,"end":1820991600000},{"id":"ZoDk34EuDD","start":1821002400000,"end":1821004200000},{"id":"0vYE9okXQE","start":1821016800000,"end":1821020400000},{"id":"HNNfVs1f0m","start":1821074400000,"end":1821078000000},{"id":"e7S615L2Oi","start":1821088800000,"end":1821092400000},{"id":"WacdWpK6J5","start":1821103200000,"end":1821106800000},{"id":"jREgeZXcyQ","start":1821506400000,"end":1821510000000},{"id":"s08XxsM1q0","start":1821520800000,"end":1821522600000},{"id":"7FxkLrKT4w","start":1821531600000,"end":1821533400000},{"id":"mL5LAOWObC","start":1821592800000,"end":1821596400000},{"id":"TMHip5U4mu","start":1821607200000,"end":1821610800000},{"id":"wzMoBajXGV","start":1821621600000,"end":1821623400000},{"id":"7pNdT5OUUQ","start":1821765600000,"end":1821767400000},{"id":"Q3NvHRKiPO","start":1821776400000,"end":1821780000000},{"id":"0Xek2f8TlS","start":1821787200000,"end":1821789000000},{"id":"sQ0R5ZIL7M","start":1821798000000,"end":1821799800000},{"id":"PLzxQUuf2E","start":1822111200000,"end":1822114800000},{"id":"Up1VKFOoHC","start":1822125600000,"end":1822129200000},{"id":"p3hPU5Wrnb","start":1822140000000,"end":1822141800000},{"id":"eqSwzZ6LLL","start":1822197600000,"end":1822199400000},{"id":"toUJxMf190","start":1822212000000,"end":1822215600000},{"id":"jBtIBvpn0B","start":1822222800000,"end":1822226400000},{"id":"cilHnC2xaW","start":1822370400000,"end":1822374000000},{"id":"Mp5FkwUQnF","start":1822384800000,"end":1822386600000},{"id":"cEkaKsHIzO","start":1822395600000,"end":1822399200000},{"id":"f0dcfxEtO2","start":1822370400000,"end":1822372200000},{"id":"S2cEXh1jkM","start":1822384800000,"end":1822388400000},{"id":"U8nw2duQYo","start":1822395600000,"end":1822399200000},{"id":"GbQngNM3uv","start":1822716000000,"end":1822717800000},{"id":"VV0X8wn5uP","start":1822726800000,"end":1822730400000},{"id":"kU7K1MVSJS","start":1822737600000,"end":1822741200000},{"id":"rZ61tQpOZM","start":1822752000000,"end":1822753800000},{"id":"Nh2LIQ7G8k","start":1822802400000,"end":1822804200000},{"id":"ieuU3ZRmCu","start":1822816800000,"end":1822820400000},{"id":"TLGA0N4SRc","start":1822831200000,"end":1822834800000},{"id":"4nWCr3B2R2","start":1822975200000,"end":1822977000000},{"id":"DpVJF37P1t","start":1822986000000,"end":1822989600000},{"id":"q5d6k67l9Q","start":1822996800000,"end":1823000400000},{"id":"F0K48pe8ND","start":1823007600000,"end":1823011200000},{"id":"PCvBuPVgTN","start":1823320800000,"end":1823322600000},{"id":"JKzBthDRfM","start":1823335200000,"end":1823338800000},{"id":"AyXxu30rsl","start":1823346000000,"end":1823347800000},{"id":"Day70PY1QC","start":1823356800000,"end":1823358600000},{"id":"ysVyi5ddkH","start":1823493600000,"end":1823497200000},{"id":"fPKNFFTdb0","start":1823508000000,"end":1823509800000},{"id":"wUQk4tbnUl","start":1823522400000,"end":1823524200000},{"id":"pE4f7vCzCq","start":1823580000000,"end":1823581800000},{"id":"MsE5zQVL4B","start":1823590800000,"end":1823594400000},{"id":"r7XvCPDlYD","start":1823601600000,"end":1823603400000},{"id":"qkIJ6ixOij","start":1823616000000,"end":1823617800000},{"id":"ckncJhygr6","start":1824012000000,"end":1824013800000},{"id":"9aMcvpJTbL","start":1824022800000,"end":1824026400000},{"id":"nk3q5BWLhv","start":1824037200000,"end":1824040800000},{"id":"RONtX2LSFA","start":1824048000000,"end":1824049800000},{"id":"IufK7W5jRu","start":1824098400000,"end":1824102000000},{"id":"peE4hjIu3r","start":1824112800000,"end":1824116400000},{"id":"CUjrev20CM","start":1824123600000,"end":1824125400000},{"id":"IgFKn7FLjN","start":1824184800000,"end":1824186600000},{"id":"2o1d3nHyWY","start":1824199200000,"end":1824201000000},{"id":"T8AluGHHwV","start":1824210000000,"end":1824211800000},{"id":"DEAPEmF68R","start":1824530400000,"end":1824534000000},{"id":"Fd5NGOuoYy","start":1824544800000,"end":1824546600000},{"id":"B6zhnaJj3I","start":1824559200000,"end":1824561000000},{"id":"Lb0BOH0uf9","start":1824703200000,"end":1824706800000},{"id":"vKzk258yCl","start":1824714000000,"end":1824717600000},{"id":"6qqXpPVdRL","start":1824728400000,"end":1824730200000},{"id":"PPRfb1As0Z","start":1825138800000,"end":1825142400000},{"id":"BVyTOouZ0b","start":1825153200000,"end":1825156800000},{"id":"KD118jasEj","start":1825164000000,"end":1825165800000},{"id":"rInZ9i2O4R","start":1825174800000,"end":1825176600000},{"id":"u1qXaWG1qr","start":1825225200000,"end":1825228800000},{"id":"T0ohNq5BRH","start":1825239600000,"end":1825243200000},{"id":"okSPsuE9qP","start":1825254000000,"end":1825257600000},{"id":"JpGJuUCgHl","start":1825398000000,"end":1825401600000},{"id":"7SmEWa7nlQ","start":1825412400000,"end":1825414200000},{"id":"0NJyI1G7XI","start":1825423200000,"end":1825425000000},{"id":"DqcBvdr0Bw","start":1825830000000,"end":1825833600000},{"id":"A4YUwThugh","start":1825840800000,"end":1825844400000},{"id":"ArUVM7agbv","start":1825851600000,"end":1825855200000},{"id":"gmLIRVM4wJ","start":1825862400000,"end":1825864200000},{"id":"bAkF7dAL1b","start":1826002800000,"end":1826006400000},{"id":"DkBZ32VJIQ","start":1826013600000,"end":1826015400000},{"id":"tbS6D8pZSp","start":1826024400000,"end":1826026200000},{"id":"Uj8O7RXMXJ","start":1826035200000,"end":1826037000000},{"id":"cN3kj5JZTe","start":1826434800000,"end":1826438400000},{"id":"tKcTcfY2Nt","start":1826445600000,"end":1826449200000},{"id":"yirCKtojsY","start":1826456400000,"end":1826458200000},{"id":"L1SBGf4pCV","start":1826467200000,"end":1826469000000},{"id":"zBIroW2426","start":1826607600000,"end":1826609400000},{"id":"LZgG68N4fN","start":1826622000000,"end":1826625600000},{"id":"OQGZJJxMfX","start":1826636400000,"end":1826638200000},{"id":"1TvHBTTMBp","start":1826953200000,"end":1826956800000},{"id":"Rs85Rdcl2B","start":1826967600000,"end":1826969400000},{"id":"a5zJpoEPCE","start":1826982000000,"end":1826985600000},{"id":"bRV3MA7nEg","start":1827039600000,"end":1827043200000},{"id":"wyqukXfImI","start":1827054000000,"end":1827055800000},{"id":"BtBMnBimVX","start":1827068400000,"end":1827072000000},{"id":"rdfjgkuYek","start":1827212400000,"end":1827214200000},{"id":"iXoqRKTnhX","start":1827223200000,"end":1827226800000},{"id":"UnA1TI14U8","start":1827234000000,"end":1827235800000},{"id":"7WAN6dwakX","start":1827248400000,"end":1827252000000},{"id":"BQ5yXPo1YE","start":1827558000000,"end":1827561600000},{"id":"8O8Gu3BDYB","start":1827568800000,"end":1827570600000},{"id":"qWfzGaMlTE","start":1827579600000,"end":1827583200000},{"id":"FiV8Gi8q8J","start":1827594000000,"end":1827595800000},{"id":"sqRGukQI15","start":1827644400000,"end":1827648000000},{"id":"S7OEL6FZ0f","start":1827655200000,"end":1827658800000},{"id":"94ISovgqFq","start":1827666000000,"end":1827667800000},{"id":"jgH1Q4tbxq","start":1827680400000,"end":1827682200000},{"id":"l8gefwnXtB","start":1827817200000,"end":1827820800000},{"id":"YxmQte8SlR","start":1827831600000,"end":1827835200000},{"id":"f8Elxp57ll","start":1827846000000,"end":1827847800000},{"id":"O9I9eWVbZE","start":1828162800000,"end":1828166400000},{"id":"ohB1SdJfAC","start":1828177200000,"end":1828179000000},{"id":"0P1xRtWCgc","start":1828191600000,"end":1828195200000},{"id":"vvc53e6P8q","start":1828249200000,"end":1828252800000},{"id":"arYDlTW5Ea","start":1828260000000,"end":1828263600000},{"id":"gSKCC9Kw6f","start":1828274400000,"end":1828276200000},{"id":"Ofr4MHs2Pe","start":1828285200000,"end":1828287000000},{"id":"DL7ZT3MNzh","start":1828335600000,"end":1828339200000},{"id":"4Ua0AJ9mVY","start":1828346400000,"end":1828350000000},{"id":"GG6EAfv42C","start":1828357200000,"end":1828360800000},{"id":"49fZrkf61z","start":1828368000000,"end":1828371600000},{"id":"uoWW5EyyCd","start":1828767600000,"end":1828769400000},{"id":"jRsjIx6RL6","start":1828782000000,"end":1828785600000},{"id":"DLQ2Q79yR1","start":1828792800000,"end":1828794600000},{"id":"pKOkoDlSht","start":1828854000000,"end":1828855800000},{"id":"DIIcgFYkgE","start":1828864800000,"end":1828868400000},{"id":"gPc741FtQi","start":1828879200000,"end":1828881000000},{"id":"yPGnJ9Is4a","start":1828890000000,"end":1828891800000},{"id":"aTkWby1VGQ","start":1829026800000,"end":1829030400000},{"id":"n98PDsYQtD","start":1829041200000,"end":1829043000000},{"id":"037VojAc4k","start":1829055600000,"end":1829057400000},{"id":"J0N6HSJFM7","start":1829458800000,"end":1829460600000},{"id":"te4tM3KFXA","start":1829469600000,"end":1829471400000},{"id":"lU78WUrxbB","start":1829480400000,"end":1829484000000},{"id":"pFCjmyRkUH","start":1829491200000,"end":1829494800000},{"id":"8s4AvlwVVy","start":1829631600000,"end":1829633400000},{"id":"i3UmN5GXRI","start":1829642400000,"end":1829646000000},{"id":"fK9NjJE6wL","start":1829656800000,"end":1829658600000},{"id":"eZD6yhsTb3","start":1829977200000,"end":1829979000000},{"id":"WXGkesqdW0","start":1829991600000,"end":1829993400000},{"id":"rJRCZ9fdqV","start":1830002400000,"end":1830004200000},{"id":"7kl23Tl9t1","start":1830013200000,"end":1830016800000},{"id":"emJqXkEvBh","start":1830150000000,"end":1830151800000},{"id":"USEtbBLAHF","start":1830160800000,"end":1830162600000},{"id":"AbUVzxD9AU","start":1830175200000,"end":1830178800000},{"id":"A67qUuWaZi","start":1830186000000,"end":1830187800000},{"id":"zhipPeslXr","start":1830236400000,"end":1830238200000},{"id":"fjYdEHQsiw","start":1830250800000,"end":1830254400000},{"id":"YATCV2w1Qy","start":1830265200000,"end":1830267000000},{"id":"05rvDltJVE","start":1830582000000,"end":1830583800000},{"id":"ZhaY9ZpdTQ","start":1830596400000,"end":1830600000000},{"id":"YLK09zcOGQ","start":1830610800000,"end":1830612600000},{"id":"54xB9YUdaa","start":1830754800000,"end":1830756600000},{"id":"lmmEYpFQoX","start":1830769200000,"end":1830771000000},{"id":"ye5aCFGB6J","start":1830783600000,"end":1830785400000},{"id":"3CBspU2mYg","start":1831273200000,"end":1831275000000},{"id":"VBB5jeE5vu","start":1831284000000,"end":1831287600000},{"id":"CKvqp5IWdp","start":1831294800000,"end":1831296600000},{"id":"5FIO0KjYlW","start":1831309200000,"end":1831312800000},{"id":"DpiRN7UfAV","start":1831359600000,"end":1831361400000},{"id":"0fkebFHzfg","start":1831374000000,"end":1831377600000},{"id":"fCyqxgxPXY","start":1831388400000,"end":1831392000000},{"id":"Xxvf7uy1c6","start":1831446000000,"end":1831449600000},{"id":"66t0p6Xuvb","start":1831460400000,"end":1831464000000},{"id":"XyJIV9QPqe","start":1831471200000,"end":1831474800000},{"id":"L2d1zuyeLr","start":1831791600000,"end":1831793400000},{"id":"sNTO7gVhNh","start":1831802400000,"end":1831804200000},{"id":"pCX9vvAbPf","start":1831816800000,"end":1831818600000},{"id":"5pDbpXnhwm","start":1831827600000,"end":1831829400000},{"id":"oT4EkBNkOR","start":1831878000000,"end":1831881600000},{"id":"gejcpC8DlV","start":1831888800000,"end":1831890600000},{"id":"fUFOpGNBG7","start":1831899600000,"end":1831901400000},{"id":"4akUM5ZSMy","start":1831914000000,"end":1831917600000},{"id":"nnyM9KQe6d","start":1831964400000,"end":1831968000000},{"id":"aWOizENzsd","start":1831978800000,"end":1831982400000},{"id":"f8b0pwBoNA","start":1831993200000,"end":1831996800000},{"id":"op7fSOTTrA","start":1832050800000,"end":1832054400000},{"id":"VKpMhUUPyL","start":1832061600000,"end":1832065200000},{"id":"YqxckNDqWf","start":1832076000000,"end":1832079600000},{"id":"DNDErM52NV","start":1832396400000,"end":1832400000000},{"id":"1r8u9d5ixC","start":1832407200000,"end":1832410800000},{"id":"aZdOcjfDeC","start":1832421600000,"end":1832425200000},{"id":"YTHXTFkF14","start":1832432400000,"end":1832436000000},{"id":"czQaJPQsmL","start":1832482800000,"end":1832484600000},{"id":"K8FEYoObK4","start":1832493600000,"end":1832497200000},{"id":"xehTkKv7P4","start":1832504400000,"end":1832508000000},{"id":"LjBUOWp0CF","start":1832518800000,"end":1832522400000},{"id":"mrhYtLaoCi","start":1832655600000,"end":1832657400000},{"id":"u5XcIWZLAX","start":1832666400000,"end":1832670000000},{"id":"8FpdUl7rZl","start":1832680800000,"end":1832684400000},{"id":"dyWTjDp3Fa","start":1832691600000,"end":1832695200000},{"id":"6I3yWTwqO3","start":1833001200000,"end":1833003000000},{"id":"cb7BiW7hSo","start":1833012000000,"end":1833013800000},{"id":"dPmlT1zSiE","start":1833022800000,"end":1833026400000},{"id":"HyEZcvWFhO","start":1833037200000,"end":1833039000000},{"id":"MaTvpgKh0v","start":1833087600000,"end":1833091200000},{"id":"qkx2WEuIHO","start":1833098400000,"end":1833102000000},{"id":"7qETqOoFrW","start":1833112800000,"end":1833116400000},{"id":"EltSVx2UBf","start":1833174000000,"end":1833175800000},{"id":"wvfuBCJvHx","start":1833184800000,"end":1833188400000},{"id":"brmhFW3c93","start":1833195600000,"end":1833197400000},{"id":"IBpiJJyqSr","start":1833206400000,"end":1833210000000},{"id":"vWRZb0TZSP","start":1833260400000,"end":1833264000000},{"id":"AYMzNsJgES","start":1833274800000,"end":1833276600000},{"id":"W9O6OZQj2u","start":1833285600000,"end":1833289200000},{"id":"bV2DNQhC8T","start":1833606000000,"end":1833607800000},{"id":"dTwXxHZLam","start":1833620400000,"end":1833622200000},{"id":"Wpg4FzJ1y5","start":1833634800000,"end":1833636600000},{"id":"cciiAHCRVJ","start":1833778800000,"end":1833780600000},{"id":"tfWAvJB7x4","start":1833793200000,"end":1833795000000},{"id":"UaKRV8LMzO","start":1833804000000,"end":1833805800000},{"id":"DkbvFFelbK","start":1833865200000,"end":1833868800000},{"id":"8KFCIZFALA","start":1833876000000,"end":1833877800000},{"id":"0w5psAJ58U","start":1833886800000,"end":1833888600000},{"id":"yUDUfQX7F2","start":1833901200000,"end":1833903000000},{"id":"XxqxbZj2L9","start":1834210800000,"end":1834212600000},{"id":"1761vhlbJY","start":1834225200000,"end":1834227000000},{"id":"sdrlDRsqvM","start":1834239600000,"end":1834243200000},{"id":"DLOVRuwWAF","start":1834383600000,"end":1834387200000},{"id":"F4jnKb4tBi","start":1834398000000,"end":1834399800000},{"id":"mb84q5j355","start":1834412400000,"end":1834414200000},{"id":"lz3ZRCIJtV","start":1834815600000,"end":1834817400000},{"id":"qUxFA8QDus","start":1834826400000,"end":1834828200000},{"id":"GJSTzAFRw7","start":1834837200000,"end":1834840800000},{"id":"qN4kiMLBSP","start":1834848000000,"end":1834851600000},{"id":"sN27TP9ZEG","start":1834902000000,"end":1834903800000},{"id":"KPtjkQbkxr","start":1834912800000,"end":1834914600000},{"id":"JTGkoxJEKV","start":1834923600000,"end":1834927200000},{"id":"5IFQhK8nzJ","start":1834934400000,"end":1834936200000},{"id":"94gRLZ2JCO","start":1834988400000,"end":1834990200000},{"id":"gfhZtSHTfL","start":1834999200000,"end":1835001000000},{"id":"8OW2L7dc2M","start":1835013600000,"end":1835017200000},{"id":"TVTqk69plU","start":1835506800000,"end":1835510400000},{"id":"G2ImCW4FnD","start":1835521200000,"end":1835523000000},{"id":"FXm1m2mPNL","start":1835532000000,"end":1835533800000},{"id":"y4r4sYl33f","start":1835542800000,"end":1835546400000},{"id":"IWruD2C3Vj","start":1835593200000,"end":1835595000000},{"id":"H1TqQ5UAAF","start":1835607600000,"end":1835609400000},{"id":"LKo9fBc7gH","start":1835618400000,"end":1835622000000},{"id":"obeYOmA73v","start":1835629200000,"end":1835632800000},{"id":"r4I2WIsdMm","start":1835506800000,"end":1835510400000},{"id":"v79rgGHSbG","start":1835521200000,"end":1835523000000},{"id":"PthRmK5qih","start":1835532000000,"end":1835535600000},{"id":"n7mli38E89","start":1835679600000,"end":1835683200000},{"id":"zd1Eg8EK51","start":1835694000000,"end":1835695800000},{"id":"XNjIkCn7CQ","start":1835704800000,"end":1835708400000},{"id":"ZpRCSl6GGp","start":1835715600000,"end":1835719200000},{"id":"k4IThhP4kx","start":1836025200000,"end":1836027000000},{"id":"73QI7011he","start":1836036000000,"end":1836037800000},{"id":"MMwJ5tGgc1","start":1836046800000,"end":1836050400000},{"id":"gqo3TW3oWG","start":1836061200000,"end":1836064800000},{"id":"WoVK40QYFq","start":1836198000000,"end":1836199800000},{"id":"UnMPWUMRZF","start":1836212400000,"end":1836216000000},{"id":"U3K2a4fX1h","start":1836226800000,"end":1836230400000},{"id":"aHLmwCUYSS","start":1836630000000,"end":1836631800000},{"id":"RtgP3ojf90","start":1836644400000,"end":1836646200000},{"id":"grpxhkvvG8","start":1836658800000,"end":1836660600000},{"id":"t8v6c1Ghes","start":1836716400000,"end":1836720000000},{"id":"SGMkGTCCvE","start":1836730800000,"end":1836732600000},{"id":"uP1oRa188T","start":1836741600000,"end":1836743400000},{"id":"v6HahhMSB2","start":1836802800000,"end":1836804600000},{"id":"t0Z7P3udSU","start":1836817200000,"end":1836820800000},{"id":"e0ZyjxW8Qq","start":1836828000000,"end":1836831600000},{"id":"30pvhkgRVz","start":1836838800000,"end":1836840600000},{"id":"onVq9qp81I","start":1836889200000,"end":1836892800000},{"id":"fWoznIFiK6","start":1836903600000,"end":1836905400000},{"id":"uyB2ZaXeDy","start":1836914400000,"end":1836918000000},{"id":"HdeCKUZDtG","start":1837234800000,"end":1837238400000},{"id":"OPIzjIAgDX","start":1837249200000,"end":1837252800000},{"id":"bA6PaA8FIM","start":1837260000000,"end":1837263600000},{"id":"kQSwclLxG9","start":1837270800000,"end":1837272600000},{"id":"HINS82MMW5","start":1837407600000,"end":1837409400000},{"id":"tSBXDktotW","start":1837422000000,"end":1837423800000},{"id":"I1NKUcOuFL","start":1837432800000,"end":1837434600000},{"id":"Bn7FdNKWrU","start":1837443600000,"end":1837447200000},{"id":"W3R2jR3u5k","start":1837836000000,"end":1837839600000},{"id":"RGyAb9gijn","start":1837846800000,"end":1837848600000},{"id":"VeFxekEbUs","start":1837861200000,"end":1837863000000},{"id":"EEiREsuLgi","start":1837872000000,"end":1837873800000},{"id":"AxLPxP4lGM","start":1838008800000,"end":1838012400000},{"id":"o1Dp1KRibY","start":1838019600000,"end":1838023200000},{"id":"sPlGUObalU","start":1838034000000,"end":1838035800000},{"id":"NybHlYdtNJ","start":1838044800000,"end":1838048400000},{"id":"A8PX75wVAv","start":1838095200000,"end":1838098800000},{"id":"3RtxKxYEQ3","start":1838109600000,"end":1838111400000},{"id":"RyyVmezTDx","start":1838120400000,"end":1838124000000},{"id":"2XyjKELlRN","start":1838131200000,"end":1838134800000},{"id":"8hTVFnO4pa","start":1838440800000,"end":1838444400000},{"id":"USWbS612Ka","start":1838451600000,"end":1838453400000},{"id":"ufExMTE6XW","start":1838462400000,"end":1838464200000},{"id":"E3YmajnnyV","start":1838476800000,"end":1838478600000},{"id":"dufOXwIiaU","start":1838613600000,"end":1838617200000},{"id":"dOfhELZQxL","start":1838628000000,"end":1838631600000},{"id":"bDaBvVlYXI","start":1838638800000,"end":1838642400000},{"id":"r3FklXveF0","start":1838649600000,"end":1838651400000},{"id":"pBJiuJJgcI","start":1838700000000,"end":1838703600000},{"id":"cjKaWEQiD5","start":1838714400000,"end":1838718000000},{"id":"nP6fJuGVas","start":1838725200000,"end":1838727000000},{"id":"pWVtIXoVZi","start":1838736000000,"end":1838739600000},{"id":"CTtOYOGxPh","start":1839045600000,"end":1839049200000},{"id":"lWVUsEvYhO","start":1839056400000,"end":1839060000000},{"id":"bCE8rzHkLs","start":1839067200000,"end":1839069000000},{"id":"SPzl1gkrhi","start":1839081600000,"end":1839083400000},{"id":"zFmO1gs3UU","start":1839132000000,"end":1839135600000},{"id":"iWzXBuUD00","start":1839146400000,"end":1839150000000},{"id":"uVd0C305Wl","start":1839157200000,"end":1839159000000},{"id":"6WaYiuS7Oq","start":1839304800000,"end":1839308400000},{"id":"Lh8jF79GMz","start":1839315600000,"end":1839317400000},{"id":"pSI8u2wXo2","start":1839326400000,"end":1839328200000},{"id":"LXylbTwenj","start":1839340800000,"end":1839342600000},{"id":"orlFYsR6ig","start":1839650400000,"end":1839652200000},{"id":"lYy2qqlBMT","start":1839661200000,"end":1839664800000},{"id":"lbzz1o6Szy","start":1839675600000,"end":1839677400000},{"id":"Es6db4CVcB","start":1839736800000,"end":1839738600000},{"id":"r5vIOm0cA2","start":1839751200000,"end":1839754800000},{"id":"2b0anNxEgS","start":1839765600000,"end":1839767400000},{"id":"ITGSPhWOsM","start":1839823200000,"end":1839826800000},{"id":"j9d97oFm2H","start":1839837600000,"end":1839839400000},{"id":"WpRohdjpUB","start":1839848400000,"end":1839850200000},{"id":"sC9tX5fRLW","start":1839859200000,"end":1839861000000},{"id":"zklldGIe9a","start":1840341600000,"end":1840343400000},{"id":"cGucgzkLmh","start":1840356000000,"end":1840359600000},{"id":"8suZy6VUxu","start":1840366800000,"end":1840370400000},{"id":"xep9XTb6Dz","start":1840514400000,"end":1840518000000},{"id":"KfFAOIk1h9","start":1840525200000,"end":1840528800000},{"id":"wRTVTj0SRR","start":1840539600000,"end":1840541400000},{"id":"AyM4atR32D","start":1840946400000,"end":1840950000000},{"id":"47bvv55nth","start":1840957200000,"end":1840959000000},{"id":"o9jbCuXx6i","start":1840968000000,"end":1840969800000},{"id":"1XVyJCgBzT","start":1840978800000,"end":1840982400000},{"id":"AtMqYmz0XM","start":1841032800000,"end":1841034600000},{"id":"PtAVZAsy16","start":1841047200000,"end":1841050800000},{"id":"3FtKqzo7vL","start":1841058000000,"end":1841061600000},{"id":"Zz2my9eL8y","start":1841119200000,"end":1841122800000},{"id":"DkFQWSxzFQ","start":1841130000000,"end":1841133600000},{"id":"o7GNCScnkB","start":1841140800000,"end":1841144400000},{"id":"eVC1vGexXP","start":1841151600000,"end":1841155200000},{"id":"cQBpSMnNLB","start":1841464800000,"end":1841466600000},{"id":"A32t4yTlRk","start":1841479200000,"end":1841482800000},{"id":"ys1mVKfG19","start":1841490000000,"end":1841493600000},{"id":"fweEWpNInK","start":1841637600000,"end":1841641200000},{"id":"1T6tzh2e9G","start":1841652000000,"end":1841653800000},{"id":"SNVg71dCbx","start":1841662800000,"end":1841664600000},{"id":"UQk6NIvHga","start":1841724000000,"end":1841727600000},{"id":"5LkP3PWd5y","start":1841734800000,"end":1841736600000},{"id":"RAEgLtg6dU","start":1841749200000,"end":1841751000000},{"id":"XSqlJEnTei","start":1842069600000,"end":1842071400000},{"id":"oAPeQOT4Td","start":1842080400000,"end":1842084000000},{"id":"2WYL9Wf616","start":1842091200000,"end":1842093000000},{"id":"2tFEUlbnfZ","start":1842105600000,"end":1842109200000},{"id":"RqNBbWzLfo","start":1842156000000,"end":1842159600000},{"id":"L0o96AMMap","start":1842166800000,"end":1842168600000},{"id":"ILqNM91LJT","start":1842177600000,"end":1842179400000},{"id":"nbSYnON2uE","start":1842192000000,"end":1842195600000},{"id":"omGhTNc05f","start":1842242400000,"end":1842246000000},{"id":"c0itsWHrn9","start":1842253200000,"end":1842256800000},{"id":"AUV39X1ht1","start":1842267600000,"end":1842271200000},{"id":"j26n2Vt8y7","start":1842278400000,"end":1842280200000},{"id":"C0WBgSQBcg","start":1842328800000,"end":1842332400000},{"id":"qKmQoHwx1C","start":1842343200000,"end":1842346800000},{"id":"THdp80cK9B","start":1842354000000,"end":1842357600000},{"id":"2THdqVccKB","start":1842674400000,"end":1842676200000},{"id":"lRIGzY2DGw","start":1842685200000,"end":1842687000000},{"id":"eRq2FOM0MH","start":1842699600000,"end":1842703200000},{"id":"S9ipmirtZ2","start":1842710400000,"end":1842714000000},{"id":"owYhnWJotT","start":1842847200000,"end":1842849000000},{"id":"Y1Gh0CoGuZ","start":1842861600000,"end":1842865200000},{"id":"wHWNbebqUY","start":1842872400000,"end":1842876000000},{"id":"uHUDvtCYKB","start":1842883200000,"end":1842885000000},{"id":"GDjPVoIkY3","start":1843365600000,"end":1843369200000},{"id":"ctVGB2dXEB","start":1843376400000,"end":1843380000000},{"id":"MbGgd4PcEw","start":1843387200000,"end":1843389000000},{"id":"jjMlawfdMX","start":1843401600000,"end":1843405200000},{"id":"onXLwe5dTS","start":1843452000000,"end":1843455600000},{"id":"bb1xjDfZRg","start":1843462800000,"end":1843466400000},{"id":"7SiwJ1hdcc","start":1843477200000,"end":1843480800000},{"id":"VbMfAh16cW","start":1843538400000,"end":1843540200000},{"id":"OuF1mdSfdf","start":1843552800000,"end":1843554600000},{"id":"Op4P6CjPBi","start":1843567200000,"end":1843569000000},{"id":"TnHZ5d3yBx","start":1843970400000,"end":1843974000000},{"id":"kWKnyKjqvs","start":1843984800000,"end":1843988400000},{"id":"hKKSJuQ8ci","start":1843995600000,"end":1843997400000},{"id":"hPFshscGQI","start":1844006400000,"end":1844008200000},{"id":"lj8pwQwsrk","start":1844056800000,"end":1844058600000},{"id":"81YNTrZZwh","start":1844067600000,"end":1844069400000},{"id":"vaPIQwNc1B","start":1844082000000,"end":1844083800000},{"id":"WGg5VplQAN","start":1844575200000,"end":1844578800000},{"id":"VRxB0k0CtE","start":1844586000000,"end":1844587800000},{"id":"dWkRwy0cTw","start":1844596800000,"end":1844598600000},{"id":"KgMYJPU2H9","start":1844607600000,"end":1844609400000},{"id":"lKFGmDKXEs","start":1844748000000,"end":1844749800000},{"id":"mCQ4GHAxko","start":1844762400000,"end":1844764200000},{"id":"csLRHoGmR0","start":1844776800000,"end":1844778600000},{"id":"T5R0Rgykbl","start":1845093600000,"end":1845097200000},{"id":"ILjdaCwQxn","start":1845104400000,"end":1845108000000},{"id":"fRfc56j2zs","start":1845118800000,"end":1845122400000},{"id":"9vuRqFMutQ","start":1845180000000,"end":1845181800000},{"id":"6P53N9uoqn","start":1845190800000,"end":1845192600000},{"id":"Uow5wxCV7g","start":1845205200000,"end":1845208800000},{"id":"i9keD2I7b5","start":1845266400000,"end":1845270000000},{"id":"lv2D7RYnP4","start":1845280800000,"end":1845282600000},{"id":"c7fZIDkEfj","start":1845291600000,"end":1845293400000},{"id":"kJ1nyDn4XD","start":1845302400000,"end":1845306000000},{"id":"MfizuPHeM2","start":1845784800000,"end":1845786600000},{"id":"B7eDXLPpGm","start":1845799200000,"end":1845801000000},{"id":"AlhYxjMXV5","start":1845813600000,"end":1845817200000},{"id":"FQWSFutBTE","start":1845957600000,"end":1845959400000},{"id":"la2vSEFLBL","start":1845972000000,"end":1845973800000},{"id":"6PCWM2luyu","start":1845986400000,"end":1845990000000},{"id":"uV5i4lbVOk","start":1846389600000,"end":1846393200000},{"id":"m0bhT9EP1J","start":1846404000000,"end":1846405800000},{"id":"ya6J2VOxA2","start":1846418400000,"end":1846422000000},{"id":"jITvEKE4cb","start":1846562400000,"end":1846564200000},{"id":"brkjdvotoG","start":1846576800000,"end":1846580400000},{"id":"ikrc2cieuN","start":1846587600000,"end":1846589400000},{"id":"M4oLYCJ6d9","start":1846598400000,"end":1846602000000},{"id":"JFwszqCkzy","start":1846994400000,"end":1846998000000},{"id":"P9QvaclUWJ","start":1847005200000,"end":1847007000000},{"id":"l6yyxRBwnJ","start":1847019600000,"end":1847023200000},{"id":"i4maKTQ22G","start":1847030400000,"end":1847034000000},{"id":"5xCn05Pswo","start":1847080800000,"end":1847082600000},{"id":"2B05O76e5U","start":1847095200000,"end":1847097000000},{"id":"3eEs0l7wD4","start":1847106000000,"end":1847109600000},{"id":"d9D5bbLmjq","start":1847512800000,"end":1847516400000},{"id":"hbvM4IyUh4","start":1847527200000,"end":1847530800000},{"id":"2auSPweqDE","start":1847538000000,"end":1847539800000},{"id":"OgLia4lECH","start":1847685600000,"end":1847687400000},{"id":"di9kNpqDZN","start":1847700000000,"end":1847703600000},{"id":"eVKQ6Hzoxt","start":1847710800000,"end":1847714400000},{"id":"NqPgyFvm6Q","start":1847721600000,"end":1847723400000},{"id":"QRVjUkS35q","start":1848204000000,"end":1848207600000},{"id":"LWehvj4e3h","start":1848218400000,"end":1848220200000},{"id":"48oPjOxWJ4","start":1848229200000,"end":1848232800000},{"id":"3qJZOe7Cm8","start":1848240000000,"end":1848241800000},{"id":"pU2tvesome","start":1848376800000,"end":1848380400000},{"id":"nx83O0xRkH","start":1848391200000,"end":1848393000000},{"id":"dDUlnCbSSY","start":1848402000000,"end":1848405600000},{"id":"z4ieNs7iP2","start":1848412800000,"end":1848416400000},{"id":"zrn6hAJcm7","start":1848722400000,"end":1848724200000},{"id":"t1DNXTPt6W","start":1848733200000,"end":1848736800000},{"id":"QH5GIz3doc","start":1848747600000,"end":1848749400000},{"id":"eDS1hRdoyv","start":1848758400000,"end":1848762000000},{"id":"27fwlk1RaM","start":1848808800000,"end":1848810600000},{"id":"kiIlVUnCbE","start":1848823200000,"end":1848825000000},{"id":"6RebMAfmAd","start":1848837600000,"end":1848841200000},{"id":"y55qRDHgr6","start":1848895200000,"end":1848897000000},{"id":"O7M5S3X8dN","start":1848909600000,"end":1848913200000},{"id":"JjFdRRC0hn","start":1848920400000,"end":1848922200000},{"id":"Y5PmJ9rv0C","start":1848981600000,"end":1848983400000},{"id":"VjCVI0epyM","start":1848992400000,"end":1848994200000},{"id":"8jbpjihTZW","start":1849003200000,"end":1849005000000},{"id":"IcEQn3yx8v","start":1849014000000,"end":1849015800000},{"id":"S7jee594KT","start":1849413600000,"end":1849417200000},{"id":"1OtDHsGSMQ","start":1849428000000,"end":1849431600000},{"id":"RjmYPURc0f","start":1849442400000,"end":1849444200000},{"id":"5UuwoGXXZU","start":1849586400000,"end":1849590000000},{"id":"x35PeJkQgj","start":1849597200000,"end":1849600800000},{"id":"a3bLL3vLmm","start":1849611600000,"end":1849615200000},{"id":"NfW50MjchA","start":1849932000000,"end":1849933800000},{"id":"jpySpNN0I7","start":1849942800000,"end":1849944600000},{"id":"A7zLEZExpl","start":1849957200000,"end":1849959000000},{"id":"qq8TbasZCu","start":1850104800000,"end":1850108400000},{"id":"u24t7XI9j2","start":1850115600000,"end":1850117400000},{"id":"twIfCSTwoA","start":1850130000000,"end":1850133600000},{"id":"tKgm8lxHrS","start":1850191200000,"end":1850194800000},{"id":"CuRwYrAhC0","start":1850202000000,"end":1850203800000},{"id":"w7HIW6gf6h","start":1850212800000,"end":1850216400000},{"id":"R4Ltg0U0TL","start":1850223600000,"end":1850227200000},{"id":"KvlhYNxDxa","start":1850536800000,"end":1850538600000},{"id":"wM0XZ5PR9y","start":1850547600000,"end":1850549400000},{"id":"V9gMwSVSGj","start":1850558400000,"end":1850562000000},{"id":"2SMzAh0fw5","start":1850572800000,"end":1850576400000},{"id":"eyRJkqlhEV","start":1850623200000,"end":1850626800000},{"id":"iF8GMbyXFm","start":1850634000000,"end":1850637600000},{"id":"qdLM2U0Ei1","start":1850648400000,"end":1850652000000},{"id":"GL6I6BRX8I","start":1850709600000,"end":1850711400000},{"id":"PAx7ZdpEL3","start":1850724000000,"end":1850725800000},{"id":"6gYZvAm9nQ","start":1850738400000,"end":1850740200000},{"id":"hWosBskxKT","start":1851141600000,"end":1851145200000},{"id":"RSYJkoEftL","start":1851152400000,"end":1851156000000},{"id":"o14RYLNlSN","start":1851166800000,"end":1851170400000},{"id":"pTHLTJnHyF","start":1851228000000,"end":1851229800000},{"id":"B6AGqC86Rv","start":1851242400000,"end":1851246000000},{"id":"OTT8thSc3V","start":1851256800000,"end":1851258600000},{"id":"9v9Vvy87iD","start":1851400800000,"end":1851404400000},{"id":"7X1qew60Gd","start":1851411600000,"end":1851415200000},{"id":"A40rQ51TMy","start":1851426000000,"end":1851429600000},{"id":"OhnZkVl2fn","start":1851746400000,"end":1851750000000},{"id":"lFNkzMIJB8","start":1851760800000,"end":1851762600000},{"id":"nfBBeQRiEC","start":1851771600000,"end":1851773400000},{"id":"NNDBTdib62","start":1851782400000,"end":1851786000000},{"id":"OOI1IG7fZk","start":1851832800000,"end":1851836400000},{"id":"cPOLryoVE1","start":1851843600000,"end":1851845400000},{"id":"arTr0NKa7m","start":1851854400000,"end":1851856200000},{"id":"lSOZjq6eTH","start":1851868800000,"end":1851872400000},{"id":"HFu0xYCqRa","start":1851919200000,"end":1851921000000},{"id":"6pRvGVnx7c","start":1851930000000,"end":1851933600000},{"id":"ISwbUnqOiK","start":1851944400000,"end":1851948000000},{"id":"eimLc9gQTF","start":1851955200000,"end":1851958800000},{"id":"CamANJ9shd","start":1852351200000,"end":1852353000000},{"id":"ufkeVVOoaE","start":1852365600000,"end":1852369200000},{"id":"wpXxrq3p2K","start":1852380000000,"end":1852383600000},{"id":"rnvPM8xS3C","start":1852437600000,"end":1852441200000},{"id":"KJqUCci7fZ","start":1852452000000,"end":1852455600000},{"id":"1z0hsdpaGs","start":1852462800000,"end":1852466400000},{"id":"A0lklc1r0q","start":1852524000000,"end":1852527600000},{"id":"df0BHWrSmf","start":1852538400000,"end":1852540200000},{"id":"qPo7P1VGwH","start":1852549200000,"end":1852551000000},{"id":"DxIJKPYQrU","start":1852610400000,"end":1852612200000},{"id":"Hbpnq4gtev","start":1852621200000,"end":1852623000000},{"id":"j1i6RHXdG9","start":1852635600000,"end":1852639200000},{"id":"ouRjLyWjW9","start":1852646400000,"end":1852650000000},{"id":"Cw5T2PS5uJ","start":1853042400000,"end":1853046000000},{"id":"Q0rwq0Yyi8","start":1853053200000,"end":1853055000000},{"id":"f3Xv1rhd36","start":1853064000000,"end":1853065800000},{"id":"95zmD5w5MW","start":1853074800000,"end":1853078400000},{"id":"dfV06CiNNW","start":1853128800000,"end":1853130600000},{"id":"SnYp8K2BnU","start":1853139600000,"end":1853143200000},{"id":"RO9Qbacd6D","start":1853154000000,"end":1853155800000},{"id":"37NURxzSqr","start":1853215200000,"end":1853218800000},{"id":"Gt0ycHZzXl","start":1853229600000,"end":1853233200000},{"id":"8pRR25ofwV","start":1853240400000,"end":1853244000000},{"id":"6DYyxdUsz3","start":1853560800000,"end":1853562600000},{"id":"i9bApNTQnH","start":1853575200000,"end":1853577000000},{"id":"hRP17aHNUF","start":1853586000000,"end":1853587800000},{"id":"Z6kjkNMPxD","start":1853596800000,"end":1853598600000},{"id":"i6TehZ9AuY","start":1853647200000,"end":1853650800000},{"id":"OXDSaSFJTY","start":1853658000000,"end":1853661600000},{"id":"DvahZgG3Rz","start":1853668800000,"end":1853670600000},{"id":"9lw0xTHWbT","start":1853683200000,"end":1853685000000},{"id":"6s0WR92hHy","start":1853820000000,"end":1853823600000},{"id":"JmOJF08mz1","start":1853834400000,"end":1853836200000},{"id":"PzBcj54SGZ","start":1853845200000,"end":1853848800000},{"id":"lXUdLh56Co","start":1854165600000,"end":1854169200000},{"id":"rUEiD4LTb1","start":1854180000000,"end":1854183600000},{"id":"TDU076GDPW","start":1854194400000,"end":1854196200000},{"id":"VP3asOkNQZ","start":1854338400000,"end":1854340200000},{"id":"8YTyyoEhDS","start":1854349200000,"end":1854351000000},{"id":"HvbEG0MKjN","start":1854360000000,"end":1854363600000},{"id":"NLYUAUNr8E","start":1854374400000,"end":1854376200000},{"id":"zGBCHBK0BH","start":1854424800000,"end":1854428400000},{"id":"tYSXXghNTT","start":1854435600000,"end":1854439200000},{"id":"cPRnuxJktD","start":1854450000000,"end":1854451800000},{"id":"hQJbpMXbEU","start":1854770400000,"end":1854772200000},{"id":"kjRbUSJoli","start":1854784800000,"end":1854788400000},{"id":"94mDP0TYci","start":1854799200000,"end":1854801000000},{"id":"FjKXANaw49","start":1854856800000,"end":1854858600000},{"id":"WXtqytewc0","start":1854867600000,"end":1854869400000},{"id":"GZxuIbeVtE","start":1854878400000,"end":1854880200000},{"id":"Kuyil8AL2X","start":1854889200000,"end":1854891000000},{"id":"TkjEaUSrg6","start":1855029600000,"end":1855031400000},{"id":"JE6ieSB3TF","start":1855040400000,"end":1855042200000},{"id":"7AyIO9aFng","start":1855054800000,"end":1855056600000},{"id":"LuBDhw9WbD","start":1855375200000,"end":1855378800000},{"id":"ZAtWRNP7pZ","start":1855389600000,"end":1855391400000},{"id":"KcYzGbrxl9","start":1855404000000,"end":1855405800000},{"id":"WwFZSWq4Kc","start":1855548000000,"end":1855549800000},{"id":"z2132jBlga","start":1855562400000,"end":1855564200000},{"id":"EBhSrQLIOX","start":1855576800000,"end":1855580400000},{"id":"ikXThkgUIC","start":1855634400000,"end":1855638000000},{"id":"EmpckHLFV6","start":1855648800000,"end":1855650600000},{"id":"tYuTEQXy35","start":1855663200000,"end":1855666800000},{"id":"xnW4baq4BD","start":1855980000000,"end":1855983600000},{"id":"agBr13lHPs","start":1855990800000,"end":1855994400000},{"id":"m8DVMy9E6r","start":1856005200000,"end":1856008800000},{"id":"1P5XqysjM5","start":1856066400000,"end":1856068200000},{"id":"5mGiHCnzFB","start":1856080800000,"end":1856082600000},{"id":"7YQzoPqWOl","start":1856095200000,"end":1856098800000},{"id":"Da8dldjT83","start":1856239200000,"end":1856241000000},{"id":"kA4w8bNxhD","start":1856250000000,"end":1856251800000},{"id":"5CU1iafF2t","start":1856260800000,"end":1856264400000},{"id":"Co3yZUNlfq","start":1856275200000,"end":1856277000000},{"id":"j85guJy0ms","start":1856674800000,"end":1856678400000},{"id":"SZ3nIntpXu","start":1856685600000,"end":1856687400000},{"id":"9N2Bg5Wt4j","start":1856700000000,"end":1856703600000},{"id":"8VKhvT5O75","start":1856710800000,"end":1856714400000},{"id":"s4pZIZl8eJ","start":1856847600000,"end":1856849400000},{"id":"Pr2lovFMjM","start":1856858400000,"end":1856862000000},{"id":"fB1LFe2oY7","start":1856869200000,"end":1856872800000},{"id":"czYq3IGtoF","start":1856880000000,"end":1856883600000},{"id":"ljzd1oJrTi","start":1857193200000,"end":1857195000000},{"id":"NXB50G7Iph","start":1857204000000,"end":1857205800000},{"id":"TFFa9Wt393","start":1857218400000,"end":1857220200000},{"id":"pUT4G9jxNv","start":1857279600000,"end":1857283200000},{"id":"cf7wexZVpI","start":1857290400000,"end":1857294000000},{"id":"7gOG8mtjg2","start":1857301200000,"end":1857304800000},{"id":"EH0aVQvVcU","start":1857315600000,"end":1857317400000},{"id":"JvjHpZDARh","start":1857366000000,"end":1857369600000},{"id":"gAAUdulQyD","start":1857380400000,"end":1857382200000},{"id":"mbk8kS3W3a","start":1857394800000,"end":1857398400000},{"id":"Rb7rK303fS","start":1857452400000,"end":1857456000000},{"id":"pt4kMfbVBz","start":1857466800000,"end":1857468600000},{"id":"yE1k6SJ5cF","start":1857477600000,"end":1857479400000},{"id":"A04TGDcnnJ","start":1857884400000,"end":1857886200000},{"id":"vJAumCNfr5","start":1857898800000,"end":1857902400000},{"id":"QWBLweLggk","start":1857909600000,"end":1857911400000},{"id":"ZgUvgLDzPo","start":1857970800000,"end":1857972600000},{"id":"3XfmRBfCNy","start":1857981600000,"end":1857983400000},{"id":"1XT9fi9KEz","start":1857992400000,"end":1857996000000},{"id":"Clz2LPAQrO","start":1858003200000,"end":1858005000000},{"id":"mbkg0iWreX","start":1858489200000,"end":1858491000000},{"id":"6tnsRCmg8O","start":1858503600000,"end":1858505400000},{"id":"QGgzvjbmBq","start":1858514400000,"end":1858518000000},{"id":"rN4Nplxt8a","start":1858525200000,"end":1858528800000},{"id":"faH9CgajJ5","start":1858662000000,"end":1858665600000},{"id":"WVe2rk1bTv","start":1858676400000,"end":1858678200000},{"id":"Ll7N6my5fe","start":1858687200000,"end":1858690800000},{"id":"vmFWp6FuFR","start":1859007600000,"end":1859009400000},{"id":"kjrzOSeKwZ","start":1859022000000,"end":1859025600000},{"id":"GQm0UVxFVV","start":1859032800000,"end":1859034600000},{"id":"Z9arEGOGRz","start":1859094000000,"end":1859095800000},{"id":"q0QS7Zc0UF","start":1859108400000,"end":1859112000000},{"id":"WuuJjooW3c","start":1859119200000,"end":1859122800000},{"id":"2u8wasBQ16","start":1859130000000,"end":1859131800000},{"id":"bVsPZk0K8S","start":1859266800000,"end":1859270400000},{"id":"aFc5beSj7S","start":1859281200000,"end":1859283000000},{"id":"ss0oDtLVyW","start":1859292000000,"end":1859293800000},{"id":"gFVDIQmaxX","start":1859266800000,"end":1859270400000},{"id":"QKhG8RUlKg","start":1859281200000,"end":1859284800000},{"id":"THSEgPXhId","start":1859292000000,"end":1859293800000},{"id":"A0lTIKivsy","start":1859612400000,"end":1859616000000},{"id":"kOzgOgTmN6","start":1859623200000,"end":1859625000000},{"id":"JAB7nSOYWy","start":1859634000000,"end":1859635800000},{"id":"Qve5XthsM3","start":1859648400000,"end":1859650200000},{"id":"b0IBeGwAMa","start":1859785200000,"end":1859787000000},{"id":"QgFG2JWcQp","start":1859796000000,"end":1859799600000},{"id":"kFgU16Ft1O","start":1859810400000,"end":1859812200000},{"id":"P9UdeZ0PSD","start":1859821200000,"end":1859824800000},{"id":"bBbrMlQbXX","start":1859871600000,"end":1859873400000},{"id":"3KIYqv1x9w","start":1859882400000,"end":1859884200000},{"id":"94TIpe2or1","start":1859896800000,"end":1859898600000},{"id":"xCaWs30iVL","start":1859907600000,"end":1859911200000},{"id":"HOCxCxhviT","start":1860303600000,"end":1860305400000},{"id":"M8Gues5Kxi","start":1860314400000,"end":1860318000000},{"id":"nxFCsDZqxF","start":1860328800000,"end":1860332400000},{"id":"qb7Z5TSxpJ","start":1860339600000,"end":1860343200000},{"id":"klapPcMkqt","start":1860390000000,"end":1860393600000},{"id":"O3IwqiOfUE","start":1860404400000,"end":1860408000000},{"id":"0RxdRzi6HA","start":1860415200000,"end":1860417000000},{"id":"LZpINENXCW","start":1860426000000,"end":1860427800000},{"id":"Scd42e25m9","start":1860476400000,"end":1860480000000},{"id":"kFfKU2LfyG","start":1860487200000,"end":1860489000000},{"id":"YiAzwAfOqF","start":1860501600000,"end":1860505200000},{"id":"Uis1ahYIyT","start":1860512400000,"end":1860516000000},{"id":"izKtW6v6Mg","start":1860822000000,"end":1860823800000},{"id":"7RFeahcHSn","start":1860836400000,"end":1860838200000},{"id":"ZNrqJgM4m4","start":1860850800000,"end":1860852600000},{"id":"6Tyhrg2IK3","start":1860994800000,"end":1860996600000},{"id":"dGqhbhRUFP","start":1861005600000,"end":1861007400000},{"id":"dOH9zeG5fk","start":1861020000000,"end":1861023600000},{"id":"CtibicBRWL","start":1861081200000,"end":1861084800000},{"id":"RbVzzOBWu9","start":1861092000000,"end":1861095600000},{"id":"QjQ3xhWk3m","start":1861102800000,"end":1861106400000},{"id":"61XHtXhJMU","start":1861113600000,"end":1861115400000},{"id":"hQ8Pzylr6O","start":1861426800000,"end":1861428600000},{"id":"lki4EjHyA1","start":1861441200000,"end":1861444800000},{"id":"z3Qvbt2z1c","start":1861455600000,"end":1861459200000},{"id":"STHoXmZT3t","start":1861513200000,"end":1861515000000},{"id":"acJazxe0Yd","start":1861524000000,"end":1861527600000},{"id":"yefSqXAMvW","start":1861538400000,"end":1861542000000},{"id":"U7ti58dNt1","start":1861599600000,"end":1861603200000},{"id":"WPUFU8Xkiz","start":1861614000000,"end":1861615800000},{"id":"RbHFDcS6Pe","start":1861628400000,"end":1861632000000}];
\ No newline at end of file
diff --git a/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/MockServer.ts b/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/MockServer.ts
deleted file mode 100644
index b942d2885f..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/MockServer.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import _ from 'lodash';
-import {data} from './MockData';
-
-const PAGE_SIZE = 100;
-const FAKE_FETCH_TIME = 1500;
-
-class MockServer {
- async getEvents(date: number): Promise {
- return new Promise(resolve => {
- const eventIndexByDate = _.findIndex(data, event => {
- return event.start > date;
- });
-
- setTimeout(() => {
- const newEvents = _.slice(data, eventIndexByDate - PAGE_SIZE / 2, eventIndexByDate + PAGE_SIZE / 2);
- resolve(newEvents);
- }, FAKE_FETCH_TIME);
- });
- }
-}
-
-export default new MockServer();
diff --git a/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/index.tsx b/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/index.tsx
deleted file mode 100644
index e8af32bee0..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorCalendarScreen/index.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import _ from 'lodash';
-import React, {Component} from 'react';
-import {Incubator, View, Text} from 'react-native-ui-lib';
-import MockServer from './MockServer';
-
-export default class CalendarScreen extends Component {
- pageIndex = 0;
-
- state = {
- date: new Date().getTime(),
- events: [] as any[],
- showLoader: false
- };
-
- componentDidMount(): void {
- this.loadEvents(this.state.date);
- }
-
- loadEvents = async (date: number) => {
- this.setState({showLoader: true});
- // const {events} = this.state;
- const newEvents = await MockServer.getEvents(date);
- this.pageIndex++;
- // this.setState({events: _.uniqBy([...events, ...newEvents], e => e.id), showLoader: false});
- this.setState({events: newEvents, showLoader: false});
- };
-
- onChangeDate = (date: number) => {
- console.log('Date change: ', date);
- const {events} = this.state;
- if (date < events[0]?.start || date > _.last(events)?.start) {
- console.log('Load new events');
- this.loadEvents(date);
- }
- };
-
- onEndReached = (date: number) => {
- console.log('Reached End: ', date);
- this.loadEvents(date);
- };
-
- // TODO: Fix type once we export them
- renderEvent = (eventItem: any) => {
- return (
-
-
- Item for
- {new Date(eventItem.start).toLocaleString('en-GB', {
- month: 'short',
- day: 'numeric',
- hour12: false,
- hour: '2-digit',
- minute: '2-digit'
- })}
- -{new Date(eventItem.end).toLocaleString('en-GB', {hour12: false, hour: '2-digit', minute: '2-digit'})}
-
-
- );
- };
-
- // TODO: Fix type once we export them
- renderHeader = (headerItem: any) => {
- return (
-
- {headerItem.header}
-
- );
- };
-
- render() {
- const {date, events, showLoader} = this.state;
-
- return (
-
-
-
- );
- }
-}
diff --git a/demo/src/screens/incubatorScreens/IncubatorDialogScreen.tsx b/demo/src/screens/incubatorScreens/IncubatorDialogScreen.tsx
deleted file mode 100644
index eb7948adab..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorDialogScreen.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet} from 'react-native';
-import {FlatList} from 'react-native-gesture-handler';
-import {View, Text, Card, Button, Incubator, Colors, Spacings, ModalProps} from 'react-native-ui-lib';
-
-interface Item {
- value: string;
- label: string;
-}
-
-const colors: Item[] = [
- {value: Colors.red10, label: 'Red10'},
- {value: Colors.red30, label: 'Red30'},
- {value: Colors.red50, label: 'Red50'},
- {value: Colors.red70, label: 'Red70'},
- {value: Colors.blue10, label: 'Blue10'},
- {value: Colors.blue30, label: 'Blue30'},
- {value: Colors.blue50, label: 'Blue50'},
- {value: Colors.blue70, label: 'Blue70'},
- {value: Colors.purple10, label: 'Purple10'},
- {value: Colors.purple30, label: 'Purple30'},
- {value: Colors.purple50, label: 'Purple50'},
- {value: Colors.purple70, label: 'Purple70'},
- {value: Colors.green10, label: 'Green10'},
- {value: Colors.green30, label: 'Green30'},
- {value: Colors.green50, label: 'Green50'},
- {value: Colors.green70, label: 'Green70'},
- {value: Colors.yellow10, label: 'Yellow10'},
- {value: Colors.yellow30, label: 'Yellow30'},
- {value: Colors.yellow50, label: 'Yellow50'},
- {value: Colors.yellow70, label: 'Yellow70'}
-];
-
-export default class IncubatorDialogScreen extends Component {
- state = {visible: false};
- modalProps: ModalProps = {supportedOrientations: ['portrait', 'landscape']};
- headerProps: Incubator.DialogHeaderProps = {title: 'Title (swipe here)'};
-
- renderVerticalItem = ({item}: {item: Item}) => {
- return (
-
- {item.label}
-
- );
- };
-
- keyExtractor = (item: Item) => {
- return item.value;
- };
-
- openDialog = () => {
- this.setState({visible: true});
- };
-
- closeDialog = () => {
- this.setState({visible: false});
- };
-
- onDismiss = () => {
- this.setState({visible: false});
- };
-
- render() {
- const {visible} = this.state;
-
- return (
-
-
-
- IncubatorDialogScreen
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- verticalScroll: {
- paddingVertical: Spacings.s2
- }
-});
diff --git a/demo/src/screens/incubatorScreens/IncubatorExpandableOverlayScreen.tsx b/demo/src/screens/incubatorScreens/IncubatorExpandableOverlayScreen.tsx
deleted file mode 100644
index c57f0184cb..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorExpandableOverlayScreen.tsx
+++ /dev/null
@@ -1,143 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Colors, View, Text, Incubator, TouchableOpacity, ExpandableOverlayMethods, PickerMethods} from 'react-native-ui-lib';
-import _ from 'lodash';
-
-const COLOR_OPTIONS: {[key: string]: string} = {
- red: Colors.red30,
- green: Colors.green30,
- yellow: Colors.yellow30,
- blue: Colors.blue30
-};
-
-export default class TextFieldScreen extends Component {
- expandableInputRef = React.createRef();
- expandablePickerRef = React.createRef();
-
- state = {
- textFieldValueDraft: '',
- textFieldValue: '',
- selectedColor: 'red'
- };
-
- updateText = (value: string) => this.setState({textFieldValueDraft: value});
-
- onDone = () => {
- this.setState({textFieldValue: this.state.textFieldValueDraft});
- this.expandableInputRef.current?.closeExpandable();
- };
- onCancel = () => {
- this.setState({textFieldValueDraft: this.state.textFieldValue});
- this.expandableInputRef.current?.closeExpandable();
- };
-
- onPickItem = ({customValue: color}: {customValue: string}) => {
- this.setState({selectedColor: color});
- this.expandablePickerRef.current?.closeExpandable();
- };
-
- renderInputModal = () => {
- const {textFieldValueDraft} = this.state;
- return (
- <>
-
-
-
- >
- );
- };
-
- renderColorRow = (colorKey: string) => {
- return (
-
-
-
- {colorKey}
-
-
- );
- };
-
- renderPickerContent = () => {
- return (
-
- {_.map(COLOR_OPTIONS, (_color, key) => {
- return (
-
- {this.renderColorRow(key)}
-
- );
- })}
-
- );
- };
-
- renderExpandableFieldExample() {
- const {textFieldValue} = this.state;
- return (
- <>
-
- Expandable TextField
-
- console.warn('Modal is dismissed')}}
- expandableContent={this.renderInputModal()}
- showTopBar
- topBarProps={{title: 'Edit Input', doneLabel: 'Done', onCancel: this.onCancel, onDone: this.onDone}}
- >
-
-
- >
- );
- }
-
- renderExpandablePickerExample() {
- const {selectedColor} = this.state;
- return (
- <>
-
- Expandable Picker
-
- console.warn('Dialog is dismissed')}}
- migrateDialog
- >
- {this.renderColorRow(selectedColor)}
-
- >
- );
- }
-
- render() {
- return (
-
-
-
- ExpandableOverlay
-
-
- {this.renderExpandableFieldExample()}
- {this.renderExpandablePickerExample()}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- colorRowText: {
- textTransform: 'capitalize'
- }
-});
diff --git a/demo/src/screens/incubatorScreens/IncubatorSliderScreen.tsx b/demo/src/screens/incubatorScreens/IncubatorSliderScreen.tsx
deleted file mode 100644
index 9b64e072f2..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorSliderScreen.tsx
+++ /dev/null
@@ -1,321 +0,0 @@
-import React, {useState, useRef, useCallback} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Constants, Colors, View, Text, Button, Incubator, GradientSlider, ColorSliderGroup} from 'react-native-ui-lib'; //eslint-disable-line
-import {renderBooleanOption} from '../ExampleScreenPresenter';
-
-const VALUE = 20;
-const NEGATIVE_VALUE = -30;
-const MIN = 0;
-const MAX = 350;
-const INITIAL_MIN = 30;
-const INITIAL_MAX = 270;
-const COLOR = Colors.blue30;
-const GROUP_COLOR = Colors.yellow30;
-
-const IncubatorSliderScreen = () => {
- const [disableRTL, setDisableRTL] = useState(false);
-
- const [sliderValue, setSliderValue] = useState(0);
- const [customSliderValue, setCustomSliderValue] = useState(VALUE);
- const [negativeSliderValue, setNegativeSliderValue] = useState(NEGATIVE_VALUE);
- const [sliderMinValue, setSliderMinValue] = useState(INITIAL_MIN);
- const [sliderMaxValue, setSliderMaxValue] = useState(INITIAL_MAX);
-
- const [color, setColor] = useState(COLOR);
- const [groupColor, setGroupColor] = useState(GROUP_COLOR);
- const [alpha, setAlpha] = useState(1);
-
- const slider = useRef(null);
- const customSlider = useRef(null);
- const negativeSlider = useRef(null);
- const rangeSlider = useRef(null);
-
- const resetSliders = useCallback(() => {
- slider.current?.reset();
- customSlider.current?.reset();
- rangeSlider.current?.reset();
- negativeSlider.current?.reset();
- }, []);
-
- const onValueChange = useCallback((value: number) => {
- setSliderValue(value);
- }, []);
-
- const onCustomValueChange = useCallback((value: number) => {
- setCustomSliderValue(value);
- }, []);
-
- const onNegativeValueChange = useCallback((value: number) => {
- setNegativeSliderValue(value);
- }, []);
-
- const onRangeChange = useCallback((value: {min: number; max: number}) => {
- setSliderMaxValue(value.max);
- setSliderMinValue(value.min);
- }, []);
-
- const onGradientValueChange = useCallback((value: string, _: number) => {
- setColor(value);
- }, []);
-
- const onGradientAlphaValueChange = useCallback((_: string, alpha: number) => {
- setAlpha(alpha);
- }, []);
-
- const onGroupValueChange = (value: string) => {
- setGroupColor(value);
- };
-
- const renderValuesBox = (min: number, max?: number) => {
- if (max !== undefined) {
- return (
-
-
- min. {min}
-
-
- max. {max}
-
-
- );
- } else {
- return (
-
-
- value: {min}
-
-
- );
- }
- };
-
- const renderDefaultSliderExample = () => {
- return (
-
-
- Default Slider values 0 to 1
-
- {renderValuesBox(sliderValue)}
-
-
- );
- };
-
- const renderDisabledSliderExample = () => {
- return (
-
-
- Disabled Slider
-
-
-
- );
- };
-
- const renderCustomSliderExample = () => {
- return (
-
-
- Custom Slider
-
- {renderValuesBox(customSliderValue)}
-
-
- );
- };
-
- const renderNegativeSliderExample = () => {
- return (
-
-
- Negative values -20 to -100 initial -30
-
- {renderValuesBox(negativeSliderValue)}
-
-
- );
- };
-
- const renderRangeSliderExample = () => {
- return (
-
-
- Range Slider values 0 to 100
-
-
- {renderValuesBox(sliderMinValue, sliderMaxValue)}
-
-
-
- );
- };
-
- const renderGradientSlidersExample = () => {
- return (
-
-
- Gradient Sliders
-
-
-
- DEFAULT
-
-
-
-
-
-
-
-
- HUE
-
-
-
-
-
-
-
- );
- };
-
- const renderColorSliderGroupExample = () => {
- return (
- <>
-
- Color Slider Group
-
-
- >
- );
- };
-
- return (
-
-
-
- Slider
-
-
-
-
- {Constants.isRTL &&
- renderBooleanOption('Disable RTL', 'disableRTL', {spread: false, state: disableRTL, setState: setDisableRTL})}
-
- {renderDefaultSliderExample()}
- {renderDisabledSliderExample()}
- {renderCustomSliderExample()}
- {renderNegativeSliderExample()}
- {renderRangeSliderExample()}
- {renderGradientSlidersExample()}
- {renderColorSliderGroupExample()}
-
- );
-};
-
-export default IncubatorSliderScreen;
-
-const styles = StyleSheet.create({
- container: {
- marginHorizontal: 20
- },
- customTrack: {
- borderRadius: 1.5,
- height: 3
- },
- customThumb: {
- width: 14,
- height: 14,
- borderWidth: 0.5,
- borderRadius: 7,
- backgroundColor: Colors.black,
- borderColor: Colors.black
- },
- customActiveThumb: {
- backgroundColor: Colors.red30,
- borderWidth: 2,
- borderColor: Colors.red70
- },
- gradientSliderContainer: {
- flex: 1, // NOTE: to place a slider in a row layout you must set flex in its 'containerStyle'!!!
- marginHorizontal: 20,
- marginVertical: 10
- },
- box: {
- width: 20,
- height: 20,
- borderRadius: 4,
- borderWidth: 1,
- borderColor: Colors.$outlineDefault
- },
- slider: {
- marginVertical: 6
- },
- group: {
- backgroundColor: Colors.$backgroundNeutralMedium,
- padding: 20,
- margin: 20,
- borderRadius: 6
- }
-});
diff --git a/demo/src/screens/incubatorScreens/IncubatorToastScreen.tsx b/demo/src/screens/incubatorScreens/IncubatorToastScreen.tsx
deleted file mode 100644
index eb262d1034..0000000000
--- a/demo/src/screens/incubatorScreens/IncubatorToastScreen.tsx
+++ /dev/null
@@ -1,189 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {Assets, Colors, View, Button, Text, Incubator} from 'react-native-ui-lib';
-import {renderMultipleSegmentOptions, renderBooleanOption, renderRadioGroup} from '../ExampleScreenPresenter';
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-
-const {Toast} = Incubator;
-
-const TOAST_ACTIONS = {
- none: {},
- label: {label: 'Undo', onPress: () => console.warn('undo')},
- icon: {iconSource: Assets.icons.demo.plus, onPress: () => console.warn('add')}
-};
-
-const TOAST_MESSAGES = {
- general: 'La formule Pass VIP illimité 5 mois est masquée',
- success: 'The action completed successfully.',
- failure: 'The action could not be completed.',
- offline: 'Check Your Internet Connection'
-};
-
-class ToastsScreen extends Component {
- showToast = false; // keep this state in class instance for immediate response
- state = {
- visible: false,
- toastPosition: 'bottom' as Incubator.ToastProps['position'],
- isCustomContent: false,
- showLoader: false,
- selectedAction: 'none' as keyof typeof TOAST_ACTIONS,
- hasAttachment: false,
- selectedPreset: '' as Incubator.ToastProps['preset'] & '',
- isSwipeable: true
- };
-
- toggleVisibility = () => {
- // Im using this for storing toast visible since setState is async and takes time to response
- this.showToast = !this.showToast;
- this.setState({
- visible: this.showToast
- });
- };
-
- renderCustomContent = () => {
- return (
-
- This is a custom content
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry
- standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to
- make a type specimen book.
-
-
- );
- };
-
- renderAboveToast = () => {
- return (
-
-
-
- );
- };
-
- renderBelowToast = () => {
- return Attachment below toast ;
- };
-
- renderAttachment = () => {
- const {toastPosition, hasAttachment} = this.state;
- if (hasAttachment) {
- if (toastPosition === 'bottom') {
- return this.renderAboveToast();
- } else {
- return this.renderBelowToast();
- }
- }
- };
-
- getAction = () => {
- const {selectedAction} = this.state;
- return TOAST_ACTIONS[selectedAction];
- };
-
- getMessage = () => {
- const {selectedPreset} = this.state;
-
- return TOAST_MESSAGES[selectedPreset] || TOAST_MESSAGES.general;
- };
-
- renderToast = () => {
- const {visible, toastPosition, showLoader, isCustomContent, hasAttachment, selectedPreset, isSwipeable} =
- this.state;
- const action = this.getAction();
-
- return (
-
- {isCustomContent ? this.renderCustomContent() : undefined}
-
- );
- };
-
- renderToggleButton = () => {
- return (
-
-
-
- );
- };
-
- render() {
- return (
-
-
- Toast
-
-
-
-
- {renderMultipleSegmentOptions.call(this, 'Toast Position', 'toastPosition', [
- {label: 'Bottom', value: 'bottom'},
- {label: 'Top', value: 'top'}
- ])}
-
- {renderBooleanOption.call(this, 'Show Loader', 'showLoader')}
- {renderBooleanOption.call(this, 'Use custom content', 'isCustomContent')}
- {renderBooleanOption.call(this, 'With an attachment', 'hasAttachment')}
- {renderBooleanOption.call(this, 'Swipeable', 'isSwipeable')}
-
- {renderRadioGroup.call(this,
- 'Action',
- 'selectedAction',
- {None: '', Label: 'label', Icon: 'icon'},
- {isRow: true})}
-
-
- Presets
-
-
- {renderMultipleSegmentOptions.call(this, '', 'selectedPreset', [
- {label: 'None', value: ''},
- {label: 'General', value: 'general'},
- {label: 'Success', value: 'success'},
- {label: 'Failure', value: 'failure'},
- {label: 'Offline', value: 'offline'}
- ])}
-
- {this.renderToggleButton()}
-
-
- {this.renderToast()}
-
- );
- }
-}
-
-export default gestureHandlerRootHOC(ToastsScreen);
-
-const styles = StyleSheet.create({
- scrollView: {
- paddingBottom: 80
- }
-});
diff --git a/demo/src/screens/incubatorScreens/PanViewScreen.tsx b/demo/src/screens/incubatorScreens/PanViewScreen.tsx
deleted file mode 100644
index efc4c5bcf5..0000000000
--- a/demo/src/screens/incubatorScreens/PanViewScreen.tsx
+++ /dev/null
@@ -1,202 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {GestureHandlerRootView, FlatList} from 'react-native-gesture-handler';
-import {
- Assets,
- View,
- Text,
- Colors,
- Incubator,
- Card,
- Constants,
- Modal,
- BorderRadiuses,
- Icon,
- TouchableOpacity
-} from 'react-native-ui-lib';
-const {PanView} = Incubator;
-
-interface Item {
- value: string;
- label: string;
-}
-
-const OVERLAY_BACKGROUND_COLOR = Colors.rgba(Colors.$backgroundInverted, 0.3);
-const colors: Item[] = [
- {value: Colors.red10, label: 'Red10'},
- {value: Colors.red30, label: 'Red30'},
- {value: Colors.red50, label: 'Red50'},
- {value: Colors.red70, label: 'Red70'},
- {value: Colors.blue10, label: 'Blue10'},
- {value: Colors.blue30, label: 'Blue30'},
- {value: Colors.blue50, label: 'Blue50'},
- {value: Colors.blue70, label: 'Blue70'},
- {value: Colors.purple10, label: 'Purple10'},
- {value: Colors.purple30, label: 'Purple30'},
- {value: Colors.purple50, label: 'Purple50'},
- {value: Colors.purple70, label: 'Purple70'},
- {value: Colors.green10, label: 'Green10'},
- {value: Colors.green30, label: 'Green30'},
- {value: Colors.green50, label: 'Green50'},
- {value: Colors.green70, label: 'Green70'},
- {value: Colors.yellow10, label: 'Yellow10'},
- {value: Colors.yellow30, label: 'Yellow30'},
- {value: Colors.yellow50, label: 'Yellow50'},
- {value: Colors.yellow70, label: 'Yellow70'}
-];
-const TOAST_DIRECTIONS = [PanView.directions.LEFT, PanView.directions.DOWN, PanView.directions.RIGHT];
-const DIALOG_DIRECTIONS = [PanView.directions.DOWN];
-const TOAST_THRESHOLD = {y: 10};
-
-class PanViewScreen extends Component {
- state = {
- showToast: false,
- showDialog: false
- };
-
- onDialogDismissed = () => {
- this.setState({showDialog: false});
- };
-
- keyExtractor = (item: Item) => {
- return item.value;
- };
-
- renderVerticalItem = ({item}: {item: Item}) => {
- return (
-
- {item.label}
-
- );
- };
-
- renderDialog = () => {
- return (
-
-
-
-
-
- Title (swipe here)
-
-
-
-
-
-
-
- );
- };
-
- onToastDismissed = () => {
- this.setState({showToast: false});
- };
-
- renderToast = () => {
- return (
-
-
- Swipe or click to dismiss
-
-
- );
- };
-
- renderCard = (key: string, name: string) => {
- // @ts-expect-error
- const value = this.state[key];
- const text = value ? `I'm still showing or being dismissed` : `Click me (${name})`;
- const onPress = value ? undefined : () => this.setState({[key]: true});
- return (
-
-
-
- {text}
-
-
-
- );
- };
-
- render() {
- const {showToast, showDialog} = this.state;
- const Container = showDialog ? View : GestureHandlerRootView;
- return (
-
-
- New Pan View
-
-
- {this.renderCard('showToast', 'toast')}
- {this.renderCard('showDialog', 'dialog')}
-
-
- Scrollable
-
-
-
-
- {showToast && this.renderToast()}
- {showDialog && this.renderDialog()}
-
- );
- }
-}
-
-export default PanViewScreen;
-
-const styles = StyleSheet.create({
- root: {
- flex: 1,
- backgroundColor: Colors.grey80
- },
- panView: {
- flex: 1,
- position: 'absolute',
- bottom: 20,
- alignSelf: 'center'
- },
- toast: {
- backgroundColor: Colors.white,
- width: 200,
- height: 40,
- borderRadius: BorderRadiuses.br20,
- borderWidth: 0.5,
- borderColor: Colors.grey30
- },
- dialog: {
- backgroundColor: Colors.white,
- width: 200,
- height: 300,
- borderRadius: BorderRadiuses.br20
- },
- verticalScroll: {
- marginTop: 20
- }
-});
diff --git a/demo/src/screens/incubatorScreens/TouchableOpacityScreen.js b/demo/src/screens/incubatorScreens/TouchableOpacityScreen.js
deleted file mode 100644
index 2f937a2dc9..0000000000
--- a/demo/src/screens/incubatorScreens/TouchableOpacityScreen.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import React, {Component} from 'react';
-import {TouchableOpacity} from 'react-native';
-import {View, Text, Colors, Incubator} from 'react-native-ui-lib';
-
-// TODO: Android - multiple clicks on the example that allows long press button (maybe dragging is also involved) -->
-// long press on it --> sometimes the counter just start ticking up
-// (happens on 2.17.0 as well but more rare, with gestureHandlerRootHOC)
-class TouchableOpacityScreen extends Component {
- state = {
- counter: 0,
- longPressCounter: 0
- };
-
- onPress = () => {
- this.setState({counter: this.state.counter + 1});
- };
-
- onLongPress = () => {
- this.setState({longPressCounter: this.state.longPressCounter + 1});
- };
-
- renderRNTouchableExample = () => {
- return (
-
- RN TouchableOpacity
- {
- console.warn('onPress');
- }}
- onLongPress={() => {
- console.warn('onLongPress');
- }}
- >
-
-
-
- );
- };
-
- render() {
- const {counter, longPressCounter} = this.state;
- return (
-
- Native TouchableOpacity
-
-
- COUNTER: {counter}
-
-
- LONG PRESS COUNTER: {longPressCounter}
-
-
-
- TouchableOpacity
-
-
- TouchableOpacity (without LongPress)
-
- {this.renderRNTouchableExample()}
-
- );
- }
-}
-
-export default TouchableOpacityScreen;
diff --git a/demo/src/screens/incubatorScreens/index.js b/demo/src/screens/incubatorScreens/index.js
deleted file mode 100644
index 6f8be226ba..0000000000
--- a/demo/src/screens/incubatorScreens/index.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-
-export function registerScreens(registrar) {
- registrar('unicorn.components.IncubatorCalendarScreen', () => require('./IncubatorCalendarScreen').default);
- registrar('unicorn.incubator.TouchableOpacityScreen', () =>
- gestureHandlerRootHOC(require('./TouchableOpacityScreen').default));
- registrar('unicorn.incubator.IncubatorDialogScreen', () => require('./IncubatorDialogScreen').default);
- registrar('unicorn.components.IncubatorExpandableOverlayScreen', () => require('./IncubatorExpandableOverlayScreen').default);
- registrar('unicorn.components.IncubatorToastScreen', () => require('./IncubatorToastScreen').default);
- registrar('unicorn.incubator.PanViewScreen', () => require('./PanViewScreen').default);
- registrar('unicorn.components.IncubatorSliderScreen', () => gestureHandlerRootHOC(require('./IncubatorSliderScreen').default));
-}
diff --git a/demo/src/screens/index.js b/demo/src/screens/index.js
deleted file mode 100644
index ba3bb19478..0000000000
--- a/demo/src/screens/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-
-export function registerScreens(registrar) {
- // load demo app presets
- require('../configurations').loadDemoConfigurations();
-
- require('./componentScreens').registerScreens(registrar);
- require('./foundationScreens').registerScreens(registrar);
- require('./nativeComponentScreens').registerScreens(registrar);
- require('./realExamples').registerScreens(registrar);
- require('./incubatorScreens').registerScreens(registrar);
-
- registrar('unicorn.MainScreen', () => require('./MainScreen').default);
- registrar('unicorn.PlaygroundScreen', () => gestureHandlerRootHOC(require('./PlaygroundScreen').default));
- registrar('unicorn.Settings', () => require('./SettingsScreen').default);
-
-}
diff --git a/demo/src/screens/nativeComponentScreens/DynamicFontsScreen.tsx b/demo/src/screens/nativeComponentScreens/DynamicFontsScreen.tsx
deleted file mode 100644
index 7a23ce4c4d..0000000000
--- a/demo/src/screens/nativeComponentScreens/DynamicFontsScreen.tsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import React, {Component, Fragment} from 'react';
-import {ScrollView} from 'react-native';
-import {View, Text, Button, DynamicFonts} from 'react-native-ui-lib';
-import {renderMultipleSegmentOptions} from '../ExampleScreenPresenter';
-
-enum FontLoadingEnum {
- SINGLE_FONT = 'singleFont',
- FONT_FAMILY = 'fontFamily'
-}
-
-type State = {
- fontLoadingType: FontLoadingEnum;
- loadedFonts: string[];
-};
-
-export default class DynamicFontsScreen extends Component<{}, State> {
- private fontDownloader: InstanceType = new DynamicFonts({debug: true});
-
- state = {
- fontLoadingType: FontLoadingEnum.SINGLE_FONT,
- loadedFonts: []
- };
-
- renderSingleFont = () => {
- const {loadedFonts} = this.state;
- return (
-
- {`
-System:
-ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
- `}
- {loadedFonts.length > 0 && (
- {`
-${loadedFonts}:
-ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
- `}
- )}
- {
- try {
- const loadedFonts = await this.fontDownloader.getFont({
- fontUri:
- 'https://wixmp-1d257fba8470f1b562a0f5f2.wixmp.com/TypographyKits/fonts/Vollkorn/Vollkorn-Regular.ttf',
- fontName: 'Vollkorn-Regular',
- fontExtension: 'ttf'
- });
- this.setState({loadedFonts: [loadedFonts]});
- } catch (error) {
- console.log('Error!', error);
- }
- }}
- />
-
- );
- };
-
- renderFontFamily = () => {
- const {loadedFonts} = this.state;
- return (
-
- {`
-System:
-ABCDEFGH abcdefgh
- `}
-
- {loadedFonts?.map(loadedFont => (
- {`
-${loadedFont}:
-ABCDEFGH abcdefgh
- `}
- ))}
-
-
- {
- try {
- const loadedFonts = await this.fontDownloader.getFontFamily('https://wixmp-1d257fba8470f1b562a0f5f2.wixmp.com/TypographyKits/fonts/Vollkorn/',
- [
- 'Bold',
- 'BoldItalic',
- 'ExtraBold',
- 'ExtraBoldItalic',
- 'Italic',
- 'Medium',
- 'MediumItalic',
- 'Regular',
- 'SemiBold'
- ],
- 'ttf',
- 'Vollkorn-');
- this.setState({loadedFonts});
- } catch (error) {
- console.log('Error!', error);
- }
- }}
- />
-
- );
- };
-
- render() {
- const {fontLoadingType, loadedFonts} = this.state;
- return (
-
- {renderMultipleSegmentOptions.call(this, 'Font loading:', 'fontLoadingType', [
- {label: 'Single', value: FontLoadingEnum.SINGLE_FONT},
- {label: 'Family', value: FontLoadingEnum.FONT_FAMILY}
- ])}
-
- {fontLoadingType === FontLoadingEnum.SINGLE_FONT ? this.renderSingleFont() : this.renderFontFamily()}
- {loadedFonts && Loaded fonts: {loadedFonts.map(loadedFont => `${loadedFont} `)} }
-
-
- );
- }
-}
diff --git a/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js b/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js
deleted file mode 100644
index f31619f4cb..0000000000
--- a/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import React, {PureComponent} from 'react';
-import ReactNative from 'react-native';
-import {Text, Button, View, Colors, HighlighterOverlayView} from 'react-native-ui-lib'; //eslint-disable-line
-
-export default class HighlightOverlayViewScreen extends PureComponent {
-
- constructor(props) {
- super(props);
-
- this.onRefUpdated = this.onRefUpdated.bind(this);
-
- this.state = {
- fteHighlightViewTag: undefined,
- showFTE: false,
- };
- }
-
- componentDidMount() {
- this.setState({showFTE: true});
- }
-
- onRefUpdated(ref) {
- if (ref) {
- this.setState({fteHighlightViewTag: ReactNative.findNodeHandle(ref)});
- }
- }
-
- renderHighlighterOverlay() {
- return (
-
-
- {'Check out this new amazing feature, just tap here!'}
- this.setState({showFTE: false})}/>
-
-
- );
- }
-
- render() {
- return (
-
-
- {'Highlight Me'}
-
- {this.renderHighlighterOverlay()}
-
- );
- }
-}
diff --git a/demo/src/screens/nativeComponentScreens/KeyboardTrackingViewScreen.js b/demo/src/screens/nativeComponentScreens/KeyboardTrackingViewScreen.js
deleted file mode 100644
index f899fb3ea2..0000000000
--- a/demo/src/screens/nativeComponentScreens/KeyboardTrackingViewScreen.js
+++ /dev/null
@@ -1,129 +0,0 @@
-import _ from 'lodash';
-import React, {PureComponent} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {
- Constants,
- Colors,
- Spacings,
- Keyboard,
- View,
- Text,
- TextField,
- Button,
- Switch
-} from 'react-native-ui-lib';
-
-const KeyboardTrackingView = Keyboard.KeyboardTrackingView;
-const messages = [
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
- 'integer feugiat scelerisque varius morbi enim nunc faucibus a pellentesque sit amet porttitor eget dolor',
- 'turpis cursus in hac habitasse',
- 'neque gravida in fermentum et sollicitudin ac orci phasellus egestas'
-];
-
-export default class KeyboardTrackingViewScreen extends PureComponent {
- state = {
- trackInteractive: true
- };
-
- toggleTrackInteractive = () => {
- this.setState({
- trackInteractive: !this.state.trackInteractive
- });
- };
-
- renderChatBubbles() {
- return (
-
- {_.map(messages, (message, i) => {
- const isLeftBubble = i % 2 === 0;
- return (
-
-
-
- {message}
-
-
-
- );
- })}
-
- );
- }
-
- render() {
- const {trackInteractive} = this.state;
-
- return (
-
-
-
- Keyboard Tracking View
-
-
- Attach a custom view to that will track the keyboard position
-
-
- Dismiss Keyboard with Drag
-
-
- {this.renderChatBubbles()}
-
-
-
-
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- scrollContainer: {
- paddingHorizontal: Spacings.s5
- },
- trackingToolbarContainer: {
- position: Constants.isIOS ? 'absolute' : 'relative',
- bottom: 0,
- width: '100%',
- borderWidth: 1,
- borderColor: Colors.grey60
- },
- textField: {
- flex: 1,
- backgroundColor: Colors.grey80,
- paddingVertical: Spacings.s2,
- paddingHorizontal: Spacings.s4,
- borderRadius: 8
- }
-});
diff --git a/demo/src/screens/nativeComponentScreens/SafeAreaSpacerViewScreen.tsx b/demo/src/screens/nativeComponentScreens/SafeAreaSpacerViewScreen.tsx
deleted file mode 100644
index 5e3871ac35..0000000000
--- a/demo/src/screens/nativeComponentScreens/SafeAreaSpacerViewScreen.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import React, {PureComponent} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {Text, View, SafeAreaSpacerView} from 'react-native-ui-lib';
-
-export default class SafeAreaSpacerViewScreen extends PureComponent {
- static options() {
- return {
- topBar: {
- drawBehind: true,
- visible: false
- }
- };
- }
-
- render() {
- return (
-
-
-
-
- {'When there are absolute-positioned view at the bottom and top,' +
- 'it is sometimes hard or impossible to change the layout and avoid it.'}
- SafeAreaSpacerView
- {'can be used as a BOTTOM or TOP spacer and will get the height of the safe area insets'}
-
-
-
-
-
- {'This is an absolute position top view'}
-
-
- {'This is an absolute position bottom view'}
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- scrollView: {
- flex: 1,
- alignItems: 'center',
- justifyContent: 'center'
- },
- topView: {
- position: 'absolute',
- top: 0,
- left: 0
- },
- bottomView: {
- position: 'absolute',
- bottom: 0,
- left: 0
- }
-});
diff --git a/demo/src/screens/nativeComponentScreens/index.js b/demo/src/screens/nativeComponentScreens/index.js
deleted file mode 100644
index 27922e2000..0000000000
--- a/demo/src/screens/nativeComponentScreens/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export function registerScreens(registrar) {
- registrar('unicorn.nativeComponents.DynamicFontsScreen', () => require('./DynamicFontsScreen').default);
- registrar('unicorn.nativeComponents.HighlightOverlayViewScreen', () => require('./HighlightOverlayViewScreen').default);
- registrar('unicorn.nativeComponents.SafeAreaSpacerViewScreen', () => require('./SafeAreaSpacerViewScreen').default);
- registrar('unicorn.nativeComponents.KeyboardTrackingViewScreen', () => require('./KeyboardTrackingViewScreen').default);
- registrar('unicorn.nativeComponents.KeyboardAccessoryViewScreen', () => require('./keyboardAccessory/KeyboardAccessoryViewScreen').default);
-}
diff --git a/demo/src/screens/nativeComponentScreens/keyboardAccessory/KeyboardAccessoryViewScreen.js b/demo/src/screens/nativeComponentScreens/keyboardAccessory/KeyboardAccessoryViewScreen.js
deleted file mode 100644
index 7f41271120..0000000000
--- a/demo/src/screens/nativeComponentScreens/keyboardAccessory/KeyboardAccessoryViewScreen.js
+++ /dev/null
@@ -1,243 +0,0 @@
-import _ from 'lodash';
-import React, {PureComponent} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import {
- Constants,
- Assets,
- Colors,
- Spacings,
- Keyboard,
- View,
- Text,
- TextField,
- Button,
- Switch
-} from 'react-native-ui-lib';
-import './demoKeyboards';
-
-const KeyboardAccessoryView = Keyboard.KeyboardAccessoryView;
-const KeyboardUtils = Keyboard.KeyboardUtils;
-const KeyboardRegistry = Keyboard.KeyboardRegistry;
-const TrackInteractive = true;
-
-const demoKeyboards = [
- {
- id: 'unicorn.ImagesKeyboard',
- icon: Assets.icons.demo.image
- },
- {
- id: 'unicorn.CustomKeyboard',
- icon: Assets.icons.demo.dashboard
- }
-];
-
-export default class KeyboardAccessoryViewScreen extends PureComponent {
- state = {
- customKeyboard: {
- component: undefined,
- initialProps: undefined
- },
- receivedKeyboardData: undefined,
- useSafeArea: true,
- keyboardOpenState: false
- };
-
- onKeyboardItemSelected = (keyboardId, params) => {
- const receivedKeyboardData = `onItemSelected from "${keyboardId}"\nreceived params: ${JSON.stringify(params)}`;
- this.setState({receivedKeyboardData});
- };
-
- onKeyboardResigned = () => {
- this.resetKeyboardView();
- };
-
- isCustomKeyboardOpen = () => {
- const {keyboardOpenState, customKeyboard} = this.state;
- return keyboardOpenState && !_.isEmpty(customKeyboard);
- };
-
- resetKeyboardView = () => {
- this.setState({customKeyboard: {}});
- };
-
- dismissKeyboard = () => {
- KeyboardUtils.dismiss();
- };
-
- toggleUseSafeArea = () => {
- const {useSafeArea} = this.state;
- this.setState({useSafeArea: !useSafeArea});
-
- if (this.isCustomKeyboardOpen()) {
- this.dismissKeyboard();
- this.showLastKeyboard();
- }
- };
-
- showLastKeyboard() {
- const {customKeyboard} = this.state;
- this.setState({customKeyboard: {}});
-
- setTimeout(() => {
- this.setState({
- keyboardOpenState: true,
- customKeyboard
- });
- }, 500);
- }
-
- showKeyboardView(component, title) {
- this.setState({
- keyboardOpenState: true,
- customKeyboard: {
- component,
- initialProps: {title}
- }
- });
- }
-
- onHeightChanged = keyboardAccessoryViewHeight => {
- if (Constants.isIOS) {
- this.setState({keyboardAccessoryViewHeight});
- }
- };
-
- renderKeyboardAccessoryViewContent = () => {
- return (
-
-
- {
- this.textInputRef = r;
- }}
- containerStyle={styles.textField}
- preset={null}
- placeholder={'Message'}
- floatingPlaceholder={false}
- enableErrors={false}
- onFocus={this.resetKeyboardView}
- />
-
-
-
-
- {demoKeyboards.map(keyboard => (
- this.showKeyboardView(keyboard.id)}
- marginR-s2
- />
- ))}
-
-
-
-
-
- );
- };
-
- requestShowKeyboard = () => {
- KeyboardRegistry.requestShowKeyboard('unicorn.ImagesKeyboard');
- };
-
- onRequestShowKeyboard = componentID => {
- this.setState({
- customKeyboard: {
- component: componentID,
- initialProps: {title: 'Keyboard 1 opened by button'}
- }
- });
- };
-
- safeAreaSwitchToggle = () => {
- if (!Constants.isIOS) {
- return;
- }
- const {useSafeArea} = this.state;
- return (
-
-
-
-
- Safe Area Enabled:
-
-
-
-
-
- );
- };
-
- render() {
- const {message/* , isModal */} = this.props;
- const {receivedKeyboardData, customKeyboard, useSafeArea} = this.state;
-
- return (
-
-
- KeyboardAccessoryView + KeyboardRegistry
-
-
-
- {message}
-
- {receivedKeyboardData}
-
- {this.safeAreaSwitchToggle()}
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- scrollContainer: {
- paddingHorizontal: Spacings.s5,
- flex: 1,
- justifyContent: 'center'
- },
- textField: {
- flex: 1,
- backgroundColor: Colors.grey60,
- paddingVertical: Spacings.s2,
- paddingHorizontal: Spacings.s4,
- borderRadius: 8
- },
- button: {
- padding: Spacings.s2
- },
- keyboardContainer: {
- backgroundColor: Colors.white,
- borderWidth: 1,
- borderColor: Colors.grey60
- },
- separatorLine: {
- flex: 1,
- height: 1,
- backgroundColor: Colors.grey80
- }
-});
diff --git a/demo/src/screens/nativeComponentScreens/keyboardAccessory/demoKeyboards.js b/demo/src/screens/nativeComponentScreens/keyboardAccessory/demoKeyboards.js
deleted file mode 100644
index 1ecf3b72c0..0000000000
--- a/demo/src/screens/nativeComponentScreens/keyboardAccessory/demoKeyboards.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import _ from 'lodash';
-import React from 'react';
-import {ScrollView} from 'react-native';
-import {Keyboard, View, Text, Image, Spacings} from 'react-native-ui-lib';
-
-const KeyboardRegistry = Keyboard.KeyboardRegistry;
-const images = [
- 'https://images.pexels.com/photos/1148521/pexels-photo-1148521.jpeg?auto=compress&cs=tinysrgb&dpr=1&h=200',
- 'https://images.pexels.com/photos/1528975/pexels-photo-1528975.jpeg?auto=compress&cs=tinysrgb&dpr=1&h=200',
- 'https://images.pexels.com/photos/1495580/pexels-photo-1495580.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=200',
- 'https://images.pexels.com/photos/943150/pexels-photo-943150.jpeg?auto=compress&cs=tinysrgb&dpr=1&h=200',
- 'https://images.pexels.com/photos/1769408/pexels-photo-1769408.jpeg?auto=compress&cs=tinysrgb&dpr=1&h=200'
-];
-
-function ImagesKeyboard() {
- return (
-
-
- {_.map(images, (image, i) => {
- return (
-
- );
- })}
-
-
- );
-}
-
-function CustomKeyboard() {
- return (
-
- Custom Keyboard
-
- );
-}
-
-KeyboardRegistry.registerKeyboard('unicorn.ImagesKeyboard', () => ImagesKeyboard);
-KeyboardRegistry.registerKeyboard('unicorn.CustomKeyboard', () => CustomKeyboard);
diff --git a/demo/src/screens/realExamples/AppleMusic.js b/demo/src/screens/realExamples/AppleMusic.js
deleted file mode 100644
index 88dad93045..0000000000
--- a/demo/src/screens/realExamples/AppleMusic.js
+++ /dev/null
@@ -1,98 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView, TouchableOpacity, FlatList, Image} from 'react-native';
-import {Constants, Colors, View, Text} from 'react-native-ui-lib'; //eslint-disable-line
-import songs from '../../data/songs';
-
-
-const GUTTER_SIZE = 24;
-const NUMBER_OF_COLUMNS = 2;
-
-class AppleMusic extends Component {
- render() {
- return (
-
-
-
-
-
- Library
-
-
- Edit
-
-
-
- {/* Menu List */}
-
- item}
- renderItem={({item}) => }
- />
-
- {/* Grid List of Recently Added */}
-
-
- Recently Added
-
-
- item.url}
- data={songs}
- renderItem={props => }
- />
-
-
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- separator: {
- borderBottomWidth: StyleSheet.hairlineWidth,
- borderColor: Colors.grey60,
- },
-});
-
-export default AppleMusic;
-
-
-const ListItem = ({item}) => {
- return (
- {}}>
-
-
- {item}
-
-
-
- );
-};
-
-const GridListItem = ({item, index}) => {
- const itemSize = (Constants.screenWidth - (GUTTER_SIZE * (NUMBER_OF_COLUMNS + 1))) / NUMBER_OF_COLUMNS;
- return (
-
-
-
-
-
- {item.name}
- {item.artist.name}
-
-
- );
-};
-
-// todo: add border radius modifier
-// todo: add border modifier
-// todo: re-create grid list using FlatList
-// todo: add font-weight modifier
diff --git a/demo/src/screens/realExamples/ListActions/ActionsList.js b/demo/src/screens/realExamples/ListActions/ActionsList.js
deleted file mode 100644
index 0f05a262f6..0000000000
--- a/demo/src/screens/realExamples/ListActions/ActionsList.js
+++ /dev/null
@@ -1,268 +0,0 @@
-import PropTypes from 'prop-types';
-import React, {Component} from 'react';
-import {Animated, LayoutAnimation, PanResponder, I18nManager} from 'react-native';
-import {Constants, Assets, Colors, View, TouchableOpacity, Button, Text} from 'react-native-ui-lib'; //eslint-disable-line
-
-
-const icon1 = require('../../../assets/icons/share.png');
-const icon2 = require('../../../assets/icons/star.png');
-const icon3 = require('../../../assets/icons/tags.png');
-const icon4 = require('../../../assets/icons/collections.png');
-
-const INITIAL_WIDTH = 40;
-const DIRECTIONS = {
- LEFT: 'left',
- RIGHT: 'right'
-};
-
-export default class ActionsList extends Component {
- static displayName = 'ActionsList';
-
- static propTypes = {
- item: PropTypes.object,
- index: PropTypes.number
- }
-
- constructor(props) {
- super(props);
-
- this.state = {
- animationValue: new Animated.Value(0),
- animationValue2: new Animated.Value(0),
- rightPanelWidth: INITIAL_WIDTH,
- leftPanelWidth: INITIAL_WIDTH
- };
-
- this.panResponder = PanResponder.create({
- onMoveShouldSetPanResponder: this.handleMoveShouldSetPanResponder,
- // onPanResponderGrant: this.handlePanResponderGrant,
- onPanResponderMove: this.handlePanResponderMove,
- onPanResponderRelease: this.handlePanResponderEnd,
- onPanResponderTerminate: this.handlePanResponderEnd
- });
- }
-
- componentDidUpdate(prevProps) {
- LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
- }
-
- handleMoveShouldSetPanResponder = (e, gestureState) => {
- // return true if user is swiping, return false if it's a single click
- const {dx, dy} = gestureState;
- return dx > 5 || dx < -5 || dy > 5 || dy < -5;
- };
- // handlePanResponderGrant = (e, gestureState) => {
- // };
- handlePanResponderMove = (e, gestureState) => {
- if (gestureState.dx < 0 && this.direction !== DIRECTIONS.LEFT) {
- this.direction = I18nManager.isRTL ? DIRECTIONS.RIGHT : DIRECTIONS.LEFT;
- } else if (gestureState.dx > 0 && this.direction !== DIRECTIONS.RIGHT) {
- this.direction = I18nManager.isRTL ? DIRECTIONS.LEFT : DIRECTIONS.RIGHT;
- }
- };
- handlePanResponderEnd = () => {
- this.animate();
- this.direction = undefined;
- };
-
- closePanels = () => {
- if (this.rightPanel) {
- this.animate(DIRECTIONS.RIGHT);
- }
- if (this.leftPanel) {
- this.animate(DIRECTIONS.LEFT);
- }
- }
-
- animate(panelDirection) {
- if (panelDirection) {
- this.direction = panelDirection;
- }
-
- const {animationValue, animationValue2} = this.state;
-
- if (this.direction === DIRECTIONS.LEFT && !this.rightPanel && !this.leftPanel) { // open rightPanel
- Animated.spring(animationValue, {
- toValue: 1,
- speed: 2000,
- bounciness: 0
- }).start();
- setTimeout(() => {
- this.setState({rightPanelWidth: Constants.screenWidth - 40});
- }, 100);
- this.rightPanel = !this.rightPanel;
- } else if (this.direction === DIRECTIONS.RIGHT && this.rightPanel) { // close rightPanel
- this.setState({rightPanelWidth: INITIAL_WIDTH}, () => {
- Animated.spring(animationValue, {
- toValue: 0,
- speed: 20,
- bounciness: 0,
- delay: 500
- }).start();
- });
- this.rightPanel = !this.rightPanel;
- } else if (this.direction === DIRECTIONS.RIGHT && !this.leftPanel && !this.rightPanel) { // open leftPanel
- Animated.spring(animationValue2, {
- toValue: 1,
- speed: 2000,
- bounciness: 0
- }).start();
- setTimeout(() => {
- this.setState({leftPanelWidth: 64});
- }, 100);
- this.leftPanel = !this.leftPanel;
- } else if (this.direction === DIRECTIONS.LEFT && this.leftPanel) { // close leftPanel
- this.setState({leftPanelWidth: INITIAL_WIDTH}, () => {
- Animated.spring(animationValue2, {
- toValue: 0,
- speed: 20,
- bounciness: 0,
- delay: 500
- }).start();
- this.leftPanel = !this.leftPanel;
- });
- }
- }
-
- renderLeftPanel() {
- const {leftPanelWidth, animationValue2} = this.state;
-
- return (
-
-
- {leftPanelWidth > INITIAL_WIDTH &&
-
- {
- // console.warn('left action press');
- this.animate(DIRECTIONS.LEFT);
- }}
- />
- }
-
-
- );
- }
-
- renderRightPanel() {
- const {rightPanelWidth, animationValue} = this.state;
-
- return (
-
-
- {rightPanelWidth > INITIAL_WIDTH &&
-
- {
- // console.warn('dismiss press');
- this.animate(DIRECTIONS.RIGHT);
- }}
- />
- {
- // console.warn('action 1 press');
- this.animate(DIRECTIONS.RIGHT);
- }}
- />
- {
- // console.warn('action 2 press');
- this.setState({selected: !this.state.selected});
- }}
- />
- console.warn('action 3 press')}
- />
- }
-
-
- );
- }
-
- render() {
- const {item, index} = this.props;
-
- return (
-
-
-
- {item.text} #{item.id}
- Swipe to any direction
- console.warn(`button ${index} press`)}/>
-
-
- {this.renderLeftPanel()}
- {this.renderRightPanel()}
-
- );
- }
-}
diff --git a/demo/src/screens/realExamples/ListActions/ListActionsScreen.js b/demo/src/screens/realExamples/ListActions/ListActionsScreen.js
deleted file mode 100644
index 4b0957d4bb..0000000000
--- a/demo/src/screens/realExamples/ListActions/ListActionsScreen.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, FlatList} from 'react-native';
-import {Colors} from 'react-native-ui-lib'; //eslint-disable-line
-import ActionsList from './ActionsList';
-
-
-const listItems = [
- {id: '0', text: 'Item'},
- {id: '1', text: 'Item'},
- {id: '2', text: 'Item'},
- {id: '3', text: 'Item'},
- {id: '4', text: 'Item'},
- {id: '5', text: 'Item'},
-];
-
-export default class ListActionsScreen extends Component {
-
- keyExtractor = item => item.id;
-
- renderItem = (item, index) => {
- return (
-
- );
- }
-
- render() {
- return (
- this.renderItem(item, index)}
- keyExtractor={this.keyExtractor}
- />
- );
- }
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: Colors.grey80,
- }
-});
diff --git a/demo/src/screens/realExamples/Pinterest/configurations.js b/demo/src/screens/realExamples/Pinterest/configurations.js
deleted file mode 100644
index cbd46204e9..0000000000
--- a/demo/src/screens/realExamples/Pinterest/configurations.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import {Spacings} from 'react-native-ui-lib';
-
-Spacings.loadSpacings({
- page: 10
-});
diff --git a/demo/src/screens/realExamples/Pinterest/index.tsx b/demo/src/screens/realExamples/Pinterest/index.tsx
deleted file mode 100644
index f8446ff58d..0000000000
--- a/demo/src/screens/realExamples/Pinterest/index.tsx
+++ /dev/null
@@ -1,151 +0,0 @@
-import React, {Component} from 'react';
-import {StyleSheet, ScrollView} from 'react-native';
-import {Assets, Colors, Spacings, View, Card, Text, Image, Button, Constants} from 'react-native-ui-lib';
-import _ from 'lodash';
-
-import './configurations';
-
-const IMAGES = [
- 'https://images.pexels.com/photos/3337210/pexels-photo-3337210.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3496994/pexels-photo-3496994.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',
- 'https://images.pexels.com/photos/3494648/pexels-photo-3494648.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3297502/pexels-photo-3297502.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3280908/pexels-photo-3280908.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3323694/pexels-photo-3323694.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',
- 'https://images.pexels.com/photos/3137078/pexels-photo-3137078.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3350141/pexels-photo-3350141.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3127161/pexels-photo-3127161.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/2872767/pexels-photo-2872767.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3271010/pexels-photo-3271010.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3255549/pexels-photo-3255549.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3206153/pexels-photo-3206153.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'
-];
-
-// @ts-expect-error
-const GUTTER_SIZE = Spacings.page;
-// @ts-expect-error
-const COLUMN_SIZE = (Constants.screenWidth - 2 * Spacings.page - GUTTER_SIZE) / 2;
-
-type ImageObject = {uri: string; width: number; height: number; aspectRatio: number};
-interface State {
- images?: ImageObject[];
-}
-
-class Pinterest extends Component<{}, State> {
- constructor(props: any) {
- super(props);
-
- this.state = {};
- this.loadImages();
- }
-
- static options() {
- return {
- topBar: {
- background: {
- color: 'transparent'
- },
- backButton: {
- color: Colors.grey10
- }
- }
- };
- }
-
- loadImages() {
- const images: ImageObject[] = [];
-
- _.map(IMAGES, (image, index) => {
- Image.getSize(image,
- (width: number, height: number) => {
- images[index] = {
- uri: image,
- width,
- height,
- aspectRatio: width / height
- };
-
- if (_.size(images) === IMAGES.length) {
- this.setState({images: _.values(images)});
- }
- },
- () => {
- images[index] = {
- uri: image,
- width: COLUMN_SIZE,
- height: COLUMN_SIZE,
- aspectRatio: 1
- };
- });
- });
- }
-
-
- renderImage(image: ImageObject) {
- return (
-
-
-
-
-
-
- );
- }
-
- renderColumn(columnIndex: number) {
- const {images} = this.state;
- return (
-
- {_.map(images, (image, index) => {
- if (index % 2 === columnIndex) {
- return this.renderImage(image);
- }
- })}
-
- );
- }
-
- render() {
- const {images} = this.state;
-
- if (!images) {
- return (
-
- Loading...
-
- );
- }
-
- return (
-
-
- {this.renderColumn(0)}
- {this.renderColumn(1)}
-
-
- );
- }
-}
-
-const styles = StyleSheet.create({
- image: {
- width: COLUMN_SIZE,
- borderRadius: 10
- }
-});
-
-export default Pinterest;
diff --git a/demo/src/screens/realExamples/ProductPage/index.tsx b/demo/src/screens/realExamples/ProductPage/index.tsx
deleted file mode 100644
index 6d03a9445e..0000000000
--- a/demo/src/screens/realExamples/ProductPage/index.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import React, {Component} from 'react';
-import {ScrollView} from 'react-native';
-import {Assets, View, Text, Icon, Colors, Image, Button, Carousel, Picker, PickerValue} from 'react-native-ui-lib';
-import _ from 'lodash';
-
-const colorOptions = [
- {label: 'Red', value: 'red', color: Colors.red30},
- {label: 'Green', value: 'green', color: Colors.green30},
- {label: 'Blue', value: 'blue', color: Colors.blue30}
-];
-
-const sizeOptions = [
- {label: 'S', value: 's'},
- {label: 'M', value: 'm'},
- {label: 'L', value: 'l'}
-];
-
-const images = [
- 'https://images.pexels.com/photos/3297502/pexels-photo-3297502.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3496994/pexels-photo-3496994.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',
- 'https://images.pexels.com/photos/3323694/pexels-photo-3323694.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',
- 'https://images.pexels.com/photos/3350141/pexels-photo-3350141.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3127161/pexels-photo-3127161.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/2872767/pexels-photo-2872767.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3271010/pexels-photo-3271010.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/3206153/pexels-photo-3206153.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'
-];
-
-class Product extends Component {
- state = {
- isColor: false,
- isSize: false,
- selectedColor: 'red',
- selectedSize: 's'
- };
-
- render() {
- const {selectedColor, selectedSize} = this.state;
-
- return (
-
-
-
-
- {images.map((image, i) => {
- return (
-
-
-
- );
- })}
-
-
-
-
-
-
- New Product
-
-
-
- SKU: 1234567890
-
-
- $55.00
-
-
-
- this.setState({selectedColor: value})}
- trailingAccessory={
-
- }
- items={colorOptions}
- />
-
- this.setState({selectedSize: value})}
- items={sizeOptions}
- />
-
-
-
-
-
- Recommended for You
-
-
- {images.map((image, index) => (
-
- ))}
-
-
- );
- }
-}
-
-export default Product;
diff --git a/demo/src/screens/realExamples/Twitter/index.tsx b/demo/src/screens/realExamples/Twitter/index.tsx
deleted file mode 100644
index cf7c7eb08f..0000000000
--- a/demo/src/screens/realExamples/Twitter/index.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import React, {Component} from 'react';
-import {FlatList, StyleSheet} from 'react-native';
-import {View, Text, ListItem, Avatar, Card, Colors, Button} from 'react-native-ui-lib';
-
-const posts = [
- {
- height: 310,
- avatar:
- 'https://images.pexels.com/photos/3496994/pexels-photo-3496994.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',
- name: 'Jack',
- nickname: '@jackywhite',
- description: 'Join our live webinar and discover the secrets of successful serverless monitoring.',
- time: '1h',
- link: {
- website: 'helloworld.com',
- description: 'Live Webinar: Secrets of Serverless monitoring. Register Now!',
- thumbnail:
- 'https://images.pexels.com/photos/3271010/pexels-photo-3271010.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'
- },
- icons: [
- require('../../../assets/icons/video.png'),
- require('../../../assets/icons/tags.png'),
- require('../../../assets/icons/star.png'),
- require('../../../assets/icons/share.png')
- ]
- },
- {
- height: 196,
- avatar: 'https://images.pexels.com/photos/3297502/pexels-photo-3297502.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- name: 'Jessica Alba',
- nickname: '@jessicaalba',
- description:
- 'I am a Jessica Marie Alba, an American actress, model and businesswoman. I began my television and movie appearances at age 13 in Camp Nowhere and The Secret World of Alex Mack, but rose to prominence at age 19 as the lead actress of the television series Dark Angel, for which she received a Golden Globe nomination.',
- time: '47m',
- icons: [
- require('../../../assets/icons/video.png'),
- require('../../../assets/icons/tags.png'),
- require('../../../assets/icons/star.png'),
- require('../../../assets/icons/share.png')
- ]
- },
- {
- height: 310,
- avatar:
- 'https://images.pexels.com/photos/3323694/pexels-photo-3323694.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260',
- name: 'New York Times',
- nickname: '@NYTimesMagazine',
- description: 'Solar Power Mandate Approved for California Buildings',
- time: '1m',
- link: {
- website: 'newyorktimes.com',
- description: 'Californians have felt an urgency to move away from using fossil fuels as climate...',
- thumbnail:
- 'https://images.pexels.com/photos/3206153/pexels-photo-3206153.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'
- },
- icons: [
- require('../../../assets/icons/video.png'),
- require('../../../assets/icons/tags.png'),
- require('../../../assets/icons/star.png'),
- require('../../../assets/icons/share.png')
- ]
- }
-];
-
-class Twitter extends Component {
- keyExtractor = (item: any) => item.nickname;
-
- renderPost(post: any, id: number) {
- return (
-
-
-
-
-
-
-
- {post.name}
- {post.nickname}
- {' • ' + post.time}
-
- {post.description}
- {post.link ? (
-
-
-
- {post.link.website}
- {post.link.description}
-
-
- ) : null}
-
- {post.icons
- ? post.icons.map((icnSource: any, index: number) => {
- return (
-
- );
- })
- : null}
-
-
-
-
- );
- }
-
- render() {
- return (
- this.renderPost(item, index)}
- keyExtractor={this.keyExtractor}
- />
- );
- }
-}
-
-const styles = StyleSheet.create({
- post: {
- marginTop: 10,
- marginBottom: 10,
- borderBottomWidth: 0.5,
- borderBottomColor: Colors.grey70,
- paddingHorizontal: 20
- },
- avatar: {
- alignSelf: 'flex-start',
- marginRight: 8,
- marginTop: 8
- },
- icon: {
- tintColor: Colors.grey40,
- width: 20,
- height: 20
- }
-});
-
-export default Twitter;
diff --git a/demo/src/screens/realExamples/index.js b/demo/src/screens/realExamples/index.js
deleted file mode 100644
index 1b15406c76..0000000000
--- a/demo/src/screens/realExamples/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import {gestureHandlerRootHOC} from 'react-native-gesture-handler';
-
-export function registerScreens(registrar) {
- registrar('unicorn.examples.AppleMusic', () => require('./AppleMusic').default);
- registrar('unicorn.examples.Pinterest', () =>
- gestureHandlerRootHOC(require('./Pinterest').default));
- registrar('unicorn.examples.ListActionsScreen',
- () => require('./ListActions/ListActionsScreen').default);
- registrar('unicorn.examples.ProductPage', () => require('./ProductPage').default);
- registrar('unicorn.examples.Twitter', () => require('./Twitter').default);
-}
diff --git a/demo/src/storage.ts b/demo/src/storage.ts
deleted file mode 100644
index 82af5f3056..0000000000
--- a/demo/src/storage.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import {MMKV} from 'react-native-mmkv';
-const Storage = new MMKV();
-
-export const DEFAULT_SCREEN = 'uilib.defaultScreen';
-export const IS_RTL = 'uilib.isRTL';
-
-export default Storage;
diff --git a/docs/foundation/assets.md b/docs/foundation/assets.md
deleted file mode 100644
index c251d1d132..0000000000
--- a/docs/foundation/assets.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-sidebar_position: 3
-sidebar_label: Assets
-title: "Assets"
----
-
-Assets are a big part of the whole UI system, whether it's an icon, placeholder or an illustration, we use them everywhere.
-Load groups of assets and easily render them with the _Image_ component.
-
-```javascript
-import {Assets, Image} from 'react-native-ui-lib';
-
-Assets.loadAssetsGroup('icons', {
- icon1: require('icon1.png'),
- icon2: require('icon2.png'),
- icon3: require('icon3.png'),
-});
-
-// or as a nested group to create your own hierarchy
-Assets.loadAssetsGroup('illustrations.placeholders', {
- emptyCart: require('emptyCart.png'),
- emptyProduct: require('emptyProduct.png'),
-});
-Assets.loadAssetsGroup('illustrations.emptyStates.', {
- noMessages: require('noMessages.png'),
- noContacts: require('noContacts.png'),
-});
-
-```
-
-And use them like this
-```jsx
-// Use them with the Image component (our Image component)
- // default assetGroup is "icons"
-
-
-// The old fashion way will work as well
-
-```
\ No newline at end of file
diff --git a/docs/foundation/colors.md b/docs/foundation/colors.md
deleted file mode 100644
index 6d22240041..0000000000
--- a/docs/foundation/colors.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-sidebar_position: 2
-sidebar_label: Colors
-title: "Colors"
----
-## Colors
-Our default library Colors object is using **System Colors** and **Design Tokens**.
-
-### System Colors
-The System Colors are all the colors we use in our design system. (red30, grey10 and so on).
-
-### Design Tokens
-Design Tokens are contextual colors based on the system colors.
-The design token name structure is "$[property]-[semantic]-[weight]". (e.g $backgroundPrimaryHeavy, $textSuccessLight)
-* **Property** - The property we use this token for. The properties are:
- * `background`
- * `text`
- * `icon`
- * `outline`
-
-
-* **Semantic** - the meaning of the color, what is the message that we want to pass using this color. The semantics are:
- * `neutral`
- * `primary` - the primary color of the app, means, blue for Spaces app and green for Fit app.
- * `general`
- * `success`
- * `warning`
- * `danger`
- * `disabled`
- * `inverted`
- * `default`
-
-
-* **Weight** - the weight of the color (optional). The weights are:
- * `light`
- * `medium`
- * `heavy`
-
-So, for example, a valid token can be: `$backgroundPrimaryHeavy` or `$textSuccess`.
-A full list of our design tokens can be found here -
-
-### Dark Mode Support
-By using design tokens, your getting dark mode support out of the box!
-Each token is mapped to a single system color in light mode and to a (usually different) single system color in dark mode.
-For example, `$textSuccess` is mapped to `green10` in light (deafult) mode, and to `green60` in dark mode.
-All the design tokens and their mapping in light mode can be found [here](https://github.com/wix/react-native-ui-lib/blob/master/src/style/designTokens.ts), dark mode mapping can be found [here](https://github.com/wix/react-native-ui-lib/blob/master/src/style/designTokensDM.ts).
-
-### Add Your Own Design Tokens
-Adding or overriding your own design tokens can be done by using the [loadSchemes](https://wix.github.io/react-native-ui-lib/docs/foundation/colors#loadschemes) method.
-To generate the design tokens, based on your app primary color and load them automatically into the `Colors` object, use:
-```javascript
-Colors.loadDesignTokens({primaryColor: });
-```
-This method will update all the `primary` tokens to be based on your app primary color, both in light and dark mode.
-
-### loadColors
-Load a set of colors to be used in the app.
-These colors will be accessible through the Colors class and as modifiers.
-usage:
-```javascript
-import {Colors} from 'react-native-ui-lib';
-
-Colors.loadColors({
- error: '#ff2442',
- success: '#00CD8B',
- text: '#20303C'
-});
-```
-
-```jsx
-import {View, Text, Colors} from 'react-native-ui-lib';
-
-
- Error Message
- Success Message
-
-```
-
-### loadSchemes
-Load a set of scheme colors to support dark/light mode.
-This feature works hand in hand with our modifiers
-This method also supports adding and overriding design tokens:
-
-```js
-Colors.loadSchemes({
- light: {
- screenBG: 'transparent',
- textColor: Colors.grey10,
- moonOrSun: Colors.yellow30,
- mountainForeground: Colors.green30,
- mountainBackground: Colors.green50,
- $backgroundSuccess: Colors.green40,
- $backgroundSuccessLight: Colors.green70
- },
- dark: {
- screenBG: Colors.grey10,
- textColor: Colors.white,
- moonOrSun: Colors.grey80,
- mountainForeground: Colors.violet10,
- mountainBackground: Colors.violet20,
- $backgroundSuccess: Colors.green40,
- $backgroundSuccessLight: Colors.green20
- }
-});
-```
-
-```jsx
-
-
- Dark Mode
-
-
-```
-
-**Note:** for dark mode support please add the following `require` in your app, in an initial place, before importing `react-native-ui-lib` at the first time.
-```
-require('react-native-ui-lib/config').setConfig({appScheme: 'default'});
-```
-
-### rgba
-usage:
-```js
-import {Colors} from 'react-native-ui-lib';
-
-Colors.rgba('#ff2442', 0.05); // 'rgb(255, 36, 66, 0.05)'
-Colors.rgba(44, 224, 112, 0.2); // 'rgb(44, 224, 112, 0.2)'
-```
-
-### getColorTint
-usage:
-```js
-import {Colors} from 'react-native-ui-lib';
-
-Colors.getColorTint(Colors.green30, 70); // will return the value of Colors.green70
-Colors.getColorTint('#ff2442', 50); // will return the 5th tint in an autogenerate 8-tints palette based on '#ff2442'
-```
-
-### isDark
-returns `true` if a color is considered dark (bright colors will return `false`)
-```js
-import {Colors} from 'react-native-ui-lib';
-
-Colors.isDark(Colors.grey10); // true
-Colors.isDark(Colors.grey80); // false
-```
diff --git a/docs/foundation/modifiers.md b/docs/foundation/modifiers.md
deleted file mode 100644
index fd8c874450..0000000000
--- a/docs/foundation/modifiers.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-sidebar_position: 4
-sidebar_label: Modifiers
-title: "Modifiers"
----
-
-As you have probably noticed already, we translate our style presets into modifiers.
-**Modifiers** help you create a stunning UI easily and quickly.
-
-**[!IMPORTANT]**
-Make sure to use modifiers only on UILib components, as some modifiers can cause issues on Android when used on React Native components directly.
-
-## Layout Modifiers
-Use our alignment properties to quickly position the content of your view without getting confused calculating all those flex rules.
-- flex - apply `flex:1` on a view
-- flex-[value] - When you want to control the flex value
-- flexS - FlexShrink
-- flexG - FlexGrow
-- left
-- top
-- right
-- bottom
-- row - change direction to row (default is column)
-- center
-- centerH - center content horizontally
-- centerV - center content vertically
-- spread - spread content (similar to `space-between`)
-
-! Notice that the layout modifiers affect the View's children
-
-```jsx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-
-## Spacing Modifiers
-It's always important to use your margins and paddings correctly, and that's also easier to do with modifiers:
-
-- padding-[value] - will add padding to all corners (e.g. padding-30 will add 30 pt of padding)
-- paddingL-[value] - Left padding
-- paddingT-[value] - Top padding
-- paddingR-[value] - Right padding
-- paddingB-[value] - Bottom padding
-- paddingH-[value] - Horizontal padding
-- paddingV-[value] - Vertical padding
-```jsx
-...
-```
-
-- margin-[value]
-- marginL-[value] - Left margin
-- marginT-[value] - Top margin
-- marginR-[value] - Right margin
-- marginB-[value] - Bottom margin
-- marginH-[value] - Horizontal margin
-- marginV-[value] - Vertical margin
-
-```jsx
-...
-```
-
-! padding and margin modifiers can also take [Spacing](https://github.com/wix/react-native-ui-lib/blob/master/src/style/spacings.ts) constants.
-```jsx
-...
-```
-## Position Modifiers
-Use the position modifiers to quickly set an absolute position for your views.
-- `abs` will set the absolute position on your View
-- `absL`, `absT`, `absR`, `absB` - set the absolute position and align to Left, Top, Right, Bottom accordingly
-- `absH` and `absV` - position absolute and stretch horizontally or vertically
-- `absF` will set the absolute position and fill the parent view (similar to StyleSheet.absoluteFillObject)
-
-## Styling Modifiers
-The last type of modifiers is for styling your components
-
-- [colorKey] - Controls the color of text components
-- background-[colorKey] (or bg-[colorKey]) - Background color
-
-```jsx
-...
-...
-
-```
-
-- [typographyKey] - Controls the typography of text components
-```jsx
-...
-
-```
-
-- br[borderRadiusKey] - Set the border radius for the view (e.g. `br10`, `br20`, .., `br60`)
-```jsx
-...
-```
-
-
-! all styling modifiers are based on our [`Colors` & `Typography` presets](/docs/foundation/style).
-You can load your own presets and use them as modifiers.
-
-
-
-Check out [this example](/docs/getting-started/usage) where we use most of these props.
diff --git a/docs/foundation/style.md b/docs/foundation/style.md
deleted file mode 100644
index 28070b34b6..0000000000
--- a/docs/foundation/style.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-sidebar_position: 1
-sidebar_label: Style
-title: "Style"
----
-
-The base foundation of each UI component is its style.
-We use basic style presets to define the rules and the style guide we follow.
-
-Our presets include: **Colors**, **Typography**, **Spacings**, **Shadows**, **Border Radius** and more..
-
-The UILib already comes with a set of predefined constants and [presets](https://github.com/wix/react-native-ui-lib/tree/master/src/style).
-
-You can easily use it anywhere in your code (as you would use any other constant value), or as a component modifier.
-
-It's also very easy to define your own presets..
-
-```jsx
-import {Typography, Colors, Spacings} from 'react-native-ui-lib';
-
-Colors.loadColors({
- pink: '#FF69B4',
- gold: '#FFD700',
-});
-
-Typography.loadTypographies({
- h1: {fontSize: 58, fontWeight: '300', lineHeight: 80},
- h2: {fontSize: 46, fontWeight: '300', lineHeight: 64},
-});
-
-Spacings.loadSpacings({
- page: isSmallScreen ? 16 : 20
-});
-```
-
-For example, the following line
-
-```jsx
-Hello World
-```
-Will generate this text
-
-
-It will use the _h1_ preset for typography and the _pink_ color value we set to style the Text element.
diff --git a/docs/foundation/testing.md b/docs/foundation/testing.md
deleted file mode 100644
index af1aa6b850..0000000000
--- a/docs/foundation/testing.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-index: 6
-path: "/foundation/testing"
-title: 'Testing'
----
-#
-
-
Testing
-
- Experimental
-
-
-
-Testkits allows us to test components without knowing the internal implementation, making it easier to test and reduce over head from migrations and changes in implementation. For example:
-* Changing the input of a `TextField` component can be done using the driver's `changeText`
-* Pressing a button could be achieved using the Button driver's press function.
-## How to use the testkits
-### Initializing the driver
-In order to initialize a test driver you pass it the renderTree and the component's testId as an object.
-
-### Example
-Suppose we have a form that takes a `first name`, `last name` and an `address` and we want to test the submitting of this form. Our form component will look something like this:
-```jsx
-import {Button, TextField, View} from 'react-native-ui-lib/testkit';
-
-type OnSubmitHandler = (firstName: string, lastName: string, address: string) => void;
-const MyForm = (props: {onSubmit: OnSubmitHandler}) => {
- const {onSubmit} = props;
- const [firstName, setFirstName] = useState('');
- const [lastName, setLastName] = useState('');
- const [address, setAddress] = useState('');
- return (
-
- setFirstName(value)} value={firstName}/>
- setLastName(value)} value={lastName}/>
- setAddress(value)} value={address}/>
- onSubmit(firstName, lastName, address)}/>
-
- );
-};
-```
-### Testing our flow
-#### In order to test our flow we would do the following steps:
-1. Import the TextField and Button driver from UI-LIB's testkit
-```javascript
-import {TextFieldDriver, ButtonDriver} from 'react-native-ui-lib/testkit';
-```
-2. render our test case
-```javascript
-const renderTree = render();
-```
-3. Initialize our drivers for the TextFields and submit button
-```javascript
-const firstNameDriver = TextFieldDriver({renderTree, testID: 'firstName'});
-const lastNameDriver = TextFieldDriver({renderTree, testID: 'lastName'});
-const addressDriver = TextFieldDriver({renderTree, testID: 'address'});
-const submitBtnDriver = ButtonDriver({renderTree, testID: 'submit'});
-```
-4. Change the text of the fields and submit the form.
-```javascript
-firstNameDriver.changeText('Musa');
-lastNameDriver.changeText('The Man');
-addressDriver.changeText('Yunitzman 5');
-submitBtnDriver.press();
-```
-5. Check that the correct values were passed to the submit handler
-```javascript
-expect(onSubmit).toHaveBeenCalledWith('Musa', 'The Man', 'Yunitzman 5');
-```
-
-Full test
-
-```javascript
-describe('My Form', () => {
- it('should submit MyForm with Musa The Man, Yunitzman 5', () => {
- const onSubmit = jest.fn();
- const renderTree = render();
- const firstNameDriver = TextFieldDriver({renderTree, testID: 'firstName'});
- const lastNameDriver = TextFieldDriver({renderTree, testID: 'lastName'});
- const addressDriver = TextFieldDriver({renderTree, testID: 'address'});
- const submitBtnDriver = ButtonDriver({renderTree, testID: 'submit'});
- firstNameDriver.changeText('Musa');
- lastNameDriver.changeText('The Man');
- addressDriver.changeText('Yunitzman 5');
- submitBtnDriver.press();
- expect(onSubmit).toHaveBeenCalledWith('Musa', 'The Man', 'Yunitzman 5');
- });
-});
-```
-
-
-
diff --git a/docs/foundation/theme-manager.md b/docs/foundation/theme-manager.md
deleted file mode 100644
index 535afa8d91..0000000000
--- a/docs/foundation/theme-manager.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-sidebar_position: 5
-sidebar_label: ThemeManager
-title: "ThemeManager"
----
-
-Use `ThemeManager` to set default global behavior for your app.
-
-#### setComponentTheme
-
-Set default props for a component by passing an object or a callback (for dynamic, runtime default props)
-The default value will be overridden if a prop is being passed to the component instance (see `setComponentForcedTheme` for that).
-
-- `ThemeManager.setComponentTheme(componentName, defaultPropsObject);`
-- `ThemeManager.setComponentTheme(componentName, componentProps => newDefaultPropsObject);`
-
-Example
-
-```js
-import {ThemeManager} from 'react-native-ui-lib';
-
-ThemeManager.setComponentTheme('Text', {
- text70: true, // will set the text70 typography modifier prop to be true by default
- grey10: true, // will set the grey10 color modifier prop to be true by default
-});
-
-
-ThemeManager.setComponentTheme('Button', (props, context) => {
-
- return {
- // this will apply a different backgroundColor
- // depending on whether the Button has an outline or not
- backgroundColor: props.outline ? 'black' : 'green',
- };
-});
-```
-
-#### setComponentForcedTheme
-Same as `setComponentTheme`, but can't be overridden by props passed to the component.
-
-Example
-
-```js
-ThemeManager.setComponentForcedTheme('Card', (props, context) => {
- return {
- containerStyle: [styles.defaultContainerStyle, props.containerStyle]
- };
-});
-```
\ No newline at end of file
diff --git a/docs/getting-started/basic-showcase.png b/docs/getting-started/basic-showcase.png
deleted file mode 100644
index ed25e8affb..0000000000
Binary files a/docs/getting-started/basic-showcase.png and /dev/null differ
diff --git a/docs/getting-started/setup.md b/docs/getting-started/setup.md
deleted file mode 100644
index 6614426e82..0000000000
--- a/docs/getting-started/setup.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-sidebar_position: 1
-sidebar_label: Setup
-title: "Setup"
-# path: "/getting-started/setup"
----
-
-## Before You Start: UILib Packages
-
-Starting with version 5.12.0 UILib exports individual packages so you can import only what you need.
-
-### Why packages are important?
-- Smaller bundle size. By importing only the components you need, your bundle size will be reduced to the files that were imported.
-- Quicker setup. Avoid installing peer dependencies and linking native dependencies you don't need.
-
-### How does it work?
-```javascript
-import View from 'react-native-ui-lib/view';
-import Text from 'react-native-ui-lib/text';
-import {KeyboardTrackingView, KeyboardAwareInsetsView, KeyboardRegistry, KeyboardAccessoryView, KeyboardUtils} from 'react-native-ui-lib/keyboard';
-...
-```
-
-
-## Install UILib
-
-- Run `npm install react-native-ui-lib`
-- Install mandatory [peer dependencies](#peer-dependencies), `npm i react-native-reanimated react-native-gesture-handler`
-- Install ios pods, `cd ios && pod install`
-
-If you plan on using specific components, see **UILib Packages** above.
-*For some packages you might still need to install one of the peer dependencies*
-
-
-### Peer Dependencies
-UILIb has mandatory peer dependencies on the following packages:
-- react-native-reanimated (Make sure to follow [Reanimated setup guide](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started))
-- react-native-gesture-handler
-
-### Optional Dependencies
-Some dependencies are optional and required by specific components or features (e.g. Card's blur features requires installing `@react-native-community/blur` package)
-
-The following are optional dependencies:
-- @react-native-community/blur
-- @react-native-community/datetimepicker
-- @react-native-community/netinfo
-
-
-## Install Native Dependencies
-If you plan on using specific components, see **UILib Packages**.
-*For some packages you might still need to install one of the native dependencies*
-
-Some of the components are using the native dependencies listed below - those are defined as peer dependencies, so you can install the version that suits you.
-
-> It's important to run `cd ios && pod install` if you are using a component that has a native dependency.
-
-- "react-native-gesture-handler": ">=1.9.0" (mandatory)
-- "react-native-reanimated": ">=2.1.0" (mandatory)
-- "@react-native-community/blur": ">=3.4.1" (required for Card component when passing `enableBlur` prop)
-- "@react-native-community/datetimepicker": "^2.1.0"
-- "@react-native-community/netinfo": "^5.6.2" (required for ConnectionStatusBar component)
-
-## Demo App
-
-- Clone the project `git clone git@github.com:wix/react-native-ui-lib.git`
-- `cd react-native-ui-lib`
-- Install dependencies `npm install`
-- (for iOS) `cd ios && pod install`
-- (for Windows)
- - update `...&& export DEV_MODE...` with `...&& set DEV_MODE...`
- - copy `gradlew.bat` from a recent project to `./android/`
- - install fb-watchman for [windows](https://facebook.github.io/watchman/docs/install#prebuilt-binaries) or `choco install watchman`
-- Start the packager `npm start`
-- Build the app `npm run ios` or `npm run android` (or from Xcode or Android Studio).
-
-## Starter Kits
-Thanks to [Batyr](https://github.com/kanzitelli) we have these amazing starter kits
-
-- [RNUILib + ReactNativeNavigation Starter Kit](https://github.com/kanzitelli/rnn-starter)
-- [RNUILib + ReactNavigation Starter Kit](https://github.com/kanzitelli/rn-starter)
-- [RNUILib + Expo Starter Kit](https://github.com/kanzitelli/expo-starter)
diff --git a/docs/getting-started/testkit b/docs/getting-started/testkit
deleted file mode 100644
index ebf835c82a..0000000000
--- a/docs/getting-started/testkit
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 5
-sidebar_label: Teskit
-title: "Testkit"
-# path: "/getting-started/testkit"
----
-
-In order to test your code that use uilib components, we provide a testkit that will help you with writing tests easily without the .
-
-### How to use it?
-
-```
-import {ButtonDriver} from 'react-native-ui-lib/testkit';
-import MyScreen from 'path/to/MyScreen';
-
-
-const BUTTON_ID = 'my-button-test-id';
-
-describe('My test suit', () => {
- afterEach(() => {
- ButtonDriver.clear();
- });
-
- it('should render a button', async () => {
- const component = MyScreen();
- const buttonDriver = new ButtonDriver({component, testID: BUTTON_ID});
-
- expect(await buttonDriver.exists()).toBeTruthy();
- });
-
- it('should trigger onPress callback', async () => {
- const onPressCallback = jest.fn();
- const component = MyScreen({buttonOnPress: onPressCallback});
- const buttonDriver = new ButtonDriver({component, testID: BUTTON_ID});
-
- buttonDriver.press();
-
- await waitFor(() => expect(onPressCallback).toHaveBeenCalledTimes(1));
- });
-
-});
-```
-
diff --git a/docs/getting-started/usage.md b/docs/getting-started/usage.md
deleted file mode 100644
index 8257c62421..0000000000
--- a/docs/getting-started/usage.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-sidebar_position: 2
-sidebar_label: Usage
-title: "Usage"
-# path: "/getting-started/usage"
----
-This is a quick example of how to use our basic components, modifiers and presets to generate a good looking screen.
-For detailed information please go over the other sections: [Style](../foundation/style.md), [Modifiers](../foundation/modifiers.md), Components...
-
-.
-
-```jsx
-import React, {Component} from 'react';
-import {View, TextField, Text, Button} from 'react-native-ui-lib';
-
-export default class Example extends Component {
-
- render() {
- return (
-
- Welcome
-
-
-
-
-
-
-
- );
- }
-}
-```
diff --git a/docs/getting-started/v5.md b/docs/getting-started/v5.md
deleted file mode 100644
index 87e3ecf737..0000000000
--- a/docs/getting-started/v5.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-sidebar_position: 3
-sidebar_label: Migrating v4 -> v5
-title: "Migrating v4 -> v5"
-# path: "/getting-started/v5"
----
-## `react-native-ui-lib@5.x.x`
-
-### Presets Updates
-
-- **Typography** - Now provides a full set of typographies in all weights
-- **Colors**
-- **Spacings** - Unified both platforms to the same spacing presets (multiples of 4s).
-
----
-
-### Components
-
-#### AnimatedImage
-props change:
-- `imageSource` => `source`
-- `imageStyle` => `style`
-- `testId` => `testID`
-
-#### AnimatedScanner
-props change:
-`progress` accepts number instead of `Animated.Value`
-
-#### Button
-props change:
-- `containerStyle` => `style`
-
-#### Dialog
-Old implementation was deprecated. See new [example screen](https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/DialogScreen.js)
-
-#### TextInput
-Component renamed to `TextField` and enhanced with more form capabilities like validations.
-` `
-
-#### RadioGroup
-props change:
-- `value` => `initialValue`
-
-#### Toast
-Implementation had slightly changed, please see [example screen](https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/ToastsScreen.js)
-- `relative` value for `position` prop was removed
-- Blur effect is not part of the component
-
-#### ListItem
-Component not supporting animation out of the box (animatable wrapper was removed).
-
-#### LoaderScreen
-Remove `animationProps`
-
-#### Drawer
-Component implementation was completely changed and is using `react-native-gesture-handler` as its base infrastructure instead of `react-native-interactable`
-Please see [example screen](https://github.com/wix/react-native-ui-lib/blob/master/demo/src/screens/componentScreens/DrawerScreen.tsx)
-
-#### Carousel
-Component API and implementation has changed.
-Now supports non-full-page carousel and a better way of rendering Carousel children.
-
-Please refer to our [Docs](https://wix.github.io/react-native-ui-lib/) to learn more about the new API.
-
----
-### Removed Dependencies
-- react-native-interactable
-
-### New Peer Dependencies (these should be installed separately)
-- `react-native-reanimated`
-- `react-native-gesture-handler`
-- `@react-native-community/blur`
-- `@react-native-community/datetimepicker`
-
----
-
-### Removed components
-
-- `MultipleShadow`
-- `Tour`
-- `Notification`
-- `CardItem`
-- `CardSection`
diff --git a/docs/getting-started/v6.md b/docs/getting-started/v6.md
deleted file mode 100644
index f96409e8e1..0000000000
--- a/docs/getting-started/v6.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-sidebar_position: 4
-sidebar_label: Migrating v5 -> v6
-title: "Migrating v5 -> v6"
-# path: "/getting-started/v6"
----
-## `react-native-ui-lib@6.x.x`
-
-### Presets
-
-#### Colors
-The colors of the palette were updated to more accessible ones.
-Renamed dark preset (dark10, dark20, ...) to grey (grey10, grey20, ...)
-
-#### Shadows
-Old shadow presets changed to `Shadows.sh10.top/bottom`, `Shadows.sh20.top/bottom` & `Shadows.sh30.top/bottom`
-
-### Components
-
-#### Typings
-Various components typings were renamed ('ComponentPropTypes' is now 'ComponentProps')
-
-#### SelectableComponent
-Component was removed
-
-#### AnimationManager
-Service was removed
-
-#### TagsInput
-Component was removed, please use `ChipsInput` instead
-
-#### ThemeManager
-`ThemeManager.setTheme` API was removed
-
-#### Avatar
-- `isOnline` removed (use badgeProps instead)
-- `status` removed (use badgeProps instead)
-
-#### Badge
-- `animationProps` (please wrap with your own animated view)
-- `testId` (renamed `testID`)
-- `size` will not accept enum 'BADGE_SIZES' anymore, pass a number instead
-
-See conversion map
-```
-pimpleSmall -> 6
-pimpleBig -> 10
-pimpleHuge -> 14
-small -> 16
-default -> 20
-large -> 24
-```
-
-#### Card.Image
-- `imageSource` (renamed `source`)
-- `borderRadius` (should be passed to the Card component)
-
-#### PanningProviderDirection
-Renamed `PanningDirection`
-
-#### KeyboardTrackingView
-`useSafeArea` prop default value changed to `false`.
-
-#### react-native-animatable
-Dependency was removed
-
-#### Stepper
-New design and API.
-
-#### ProgressBar
-New design and API.
-
-#### Dialog
- `onModalDismissed` removed, use 'onDialogDismissed' instead
-
-#### CardSection
-Removed `source`, use `imageSource`
-
-#### StateScreen
-- Removed `source`, use `imageSource` instead
-- Removed `testId`, use `testID`
-
-#### TabBarItem
-Removed `badge`, use `badgeProps` instead
-
-#### TabController
- - The component has been re-implemented using reanimated v2
- - `TabController.TabBar` `childrend` props is not supported anymore, pass `items` to `TabController` instead
- - `Incubator.TabController` removed
diff --git a/docs/getting-started/v7.md b/docs/getting-started/v7.md
deleted file mode 100644
index f060ad8d8c..0000000000
--- a/docs/getting-started/v7.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-sidebar_position: 5
-sidebar_label: Migrating v6 -> v7
-title: "Migrating v6 -> v7"
-# path: "/getting-started/v7"
----
-## `react-native-ui-lib@7.x.x`
-
-## Presets
-
-### ThemeManager
-ThemeManager doesn’t support the following settings and getters anymore:
-- `getTheme()`
-- `primaryColor`
-- `CTATextColor`
-- `CTADisabledColor `
-- `CTABackgroundColor`
-- `titleColor`
-- `subtitleColor`
-- `dividerColor`
-
-#### Colors
-‘Colors.primary’ is deprecated. Please use the design tokens instead, for example:
-instead of passing
- `style={{backgroundColor: Colors.primary}}`
-pass
- `style={{backgroundColor: Colors.$backgorundPrimaryHeavy}}`
-
-To generate the tokens based on your primary color, use:
- `Colros.loadDesignTokens({primaryColor: })`
-
-See Colors docs for more information
-
-### Shadows
-The `dark` presets are deprecated. Please use the `grey` presets instead.
-
-## Dependencies
-
-### typescript
-Minimum version of typescript is now ^4.9.5.
-
-### moment
-The `moment` package was removed from our dependencies and bacome an optional dependency for the `DateTimePicker` component (relevant only for `dateFormat` and `timeFormat` feature).
-
-
-## Components
-
-### Avatar
-`imageSource` prop is deprecated. Please use ‘source’ prop instead.
-
-### ChipsInput
-The component was deprecated and replaced by formar `Incubator.ChipsInput`.
-
-### ColorPicker
-`style` prop is deprecated.
-
-### DateTimePicker
-Migrate internal `TextField` component to the new implementation. See `TextField` migration below.
-
-### Drawer
-`leftToggleHapticTrigger` prop is deprecated.
-
-### Fader
-`FaderPosition` enum `LEFT` and `RIGHT` cases are deprecated. Please use `START` and `END` instead.
-
-### Incubator.Toast
-`zIndex` prop is now set to `100` as default on Android.
-
-### KeyboardAccessoryView
-`iOSScrollBehavior` prop and `iosScrollBehaviors` enum are deprecated. Please use `scrollBehavior` prop instead and pass it `KeyboardAccessoryView.scrollBehaviors`.
-
-### KeyboardAwareListView
-Component removed. Please use `KeyboardAwareScrollView` or `KeyboardAwareFlatList` components instead.
-
-### Picker
-`value` prop now accepts only `string` or `number` and not objects.
-`useNativePicker` renamed `useWheelPicker`.
-`renderNativePicker` prop was deprecated.
-
-### RadioButton
-`contentOnRight` prop is deprecated (the content is on right by default).
-
-### Skeleton
-`contentData` prop is deprecate. Please use the `customValue` prop.
-All the following props has been removed, you can send them inside the `listProps` prop:
-- `size`
-- `contentType`
-- `hideSeparator`
-- `showLastSeparator`
-
-### TabBar
-Component removed. Please use `TabController` component instead.
-
-### TabController
-`selectedIndex` prop is deprecated. Please use `initialIndex` prop instead.
-
-### TextField
-The component was refactored completely with a new API.
-
-Props migration:
-- `helperText` -> `hint`
-- `Title` -> `label`
-- `titleColor`-> `labelColor`
-- `titleStyle` -> `labelStyle`
-- `showCharacterCounter` -> `showCharCounter`
-- `transformer` -> `formatter`
-- `prefix` -> `leadingAccessory`
-- `prefixStyle` -> `leadingAccessory`
-- `rightIconSource` -> `trailingAccessory`
-- `rightIconStyle` -> `trailingAccessory`
-- `rightButtonProps` -> `trailingAccessory`
-- `leadingIcon` -> `leadingAccessory`
-- `useTopErrors` -> `validationMessagePosition`
-- `error` prop is deprecated. Please use `validationMessage` prop with `validate` prop.
-- `expandable` prop is deprecated
-- `renderExpandableInput` prop is deprecated
-- `renderExpandable` prop is deprecated
-- `onToggleExpandableModal` 'prop is deprecated
-- `topBarProps` prop is deprecated
-
-Check full (and new) API: https://wix.github.io/react-native-ui-lib/docs/components/form/TextField
-
-### WheelPicker
-The WheelPicker component has a new implementation.
-The component is now uncontrolled and have some prop changes:
-`selectedValue` prop renamed `initialValue` (do not update unless it has been changed from non-user origin).
-`onValueChange` prop renamed `onChange`.
-Also, `children` can now be passed to the `items` prop (not mandatory).
-
-Check full (and new) API: https://wix.github.io/react-native-ui-lib/docs/components/form/WheelPicker
diff --git a/docuilib/.gitignore b/docuilib/.gitignore
deleted file mode 100644
index b2d6de3062..0000000000
--- a/docuilib/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# Dependencies
-/node_modules
-
-# Production
-/build
-
-# Generated files
-.docusaurus
-.cache-loader
-
-# Misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
diff --git a/docuilib/README.md b/docuilib/README.md
deleted file mode 100644
index 55d0c3ef41..0000000000
--- a/docuilib/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Website
-
-This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
-
-### Installation
-
-```
-$ yarn
-```
-
-### Local Development
-
-```
-$ yarn start
-```
-
-This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
-
-### Build
-
-```
-$ yarn build
-```
-
-This command generates static content into the `build` directory and can be served using any static contents hosting service.
-
-### Deployment
-
-```
-$ GIT_USER= USE_SSH=true yarn deploy
-```
-
-If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
diff --git a/docuilib/babel.config.js b/docuilib/babel.config.js
deleted file mode 100644
index e00595dae7..0000000000
--- a/docuilib/babel.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
-};
diff --git a/docuilib/docusaurus.config.js b/docuilib/docusaurus.config.js
deleted file mode 100644
index 46c957d535..0000000000
--- a/docuilib/docusaurus.config.js
+++ /dev/null
@@ -1,137 +0,0 @@
-const lightCodeTheme = require('prism-react-renderer/themes/github');
-const darkCodeTheme = require('prism-react-renderer/themes/dracula');
-
-// With JSDoc @type annotations, IDEs can provide config autocompletion
-/** @type {import('@docusaurus/types').DocusaurusConfig} */
-(
- module.exports = {
- title: 'RNUILib',
- tagline: 'React Native UI Lib',
- url: 'https://wix.github.io',
- baseUrl: '/react-native-ui-lib/',
- onBrokenLinks: 'throw',
- onBrokenMarkdownLinks: 'warn',
- favicon: 'img/favicon.ico',
- organizationName: 'wix', // Usually your GitHub org/user name.
- projectName: 'react-native-ui-lib', // Usually your repo name.
- trailingSlash: false,
- customFields: {
- docsMainEntry: 'getting-started/setup',
- expoSnackLink: 'https://snack.expo.io/@ethanshar/rnuilib_snack',
- stars: '4.7'
- },
- plugins: ['docusaurus-plugin-sass'],
- presets: [
- [
- '@docusaurus/preset-classic',
- /** @type {import('@docusaurus/preset-classic').Options} */
- ({
- docs: {
- sidebarPath: require.resolve('./sidebars.js'),
- path: '../docs',
- // Please change this to your repo.
- editUrl: 'https://github.com/facebook/docusaurus/edit/main/website/',
- docLayoutComponent: '@site/src/components/CustomLayout'
- },
- blog: {
- showReadingTime: true,
- // Please change this to your repo.
- editUrl: 'https://github.com/facebook/docusaurus/edit/main/website/blog/'
- },
- theme: {
- customCss: [
- require.resolve('./src/css/custom.css'),
- require.resolve('./src/css/presets.css'),
- require.resolve('./src/css/components.css')
- ]
- }
- })
- ]
- ],
-
- themeConfig:
- /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
- ({
- algolia: {
- // If Algolia did not provide you any appId, use 'BH4D9OD16A'
- appId: 'BWQFOHCCF3',
- // Public API key: it is safe to commit it
- apiKey: '96b00d78d5ec180ae266abefc79efc5d',
- indexName: 'react-native-ui-lib',
- // Optional: see doc section below
- contextualSearch: true
- // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them.
- // externalUrlRegex: 'external\\.com|domain\\.com',
- // Optional: Algolia search parameters
- // searchParameters: {}
- //... other Algolia params
- },
- navbar: {
- title: 'RNUILib',
- hideOnScroll: true,
- logo: {
- alt: 'RNUILib Logo',
- src: 'img/logo.png'
- },
- items: [
- {
- type: 'doc',
- docId: 'getting-started/setup',
- position: 'right',
- label: 'Docs'
- },
- // {to: '/blog', label: 'Blog', position: 'left'},
- {
- href: 'https://github.com/wix/react-native-ui-lib',
- label: 'GitHub',
- position: 'right'
- }
- ]
- },
- footer: {
- style: 'dark',
- links: [
- {
- title: 'Links',
- items: [
- {
- label: 'Docs',
- to: '/docs/getting-started/setup'
- },
- {
- label: 'GitHub',
- href: 'https://github.com/wix/react-native-ui-lib'
- },
- {
- label: 'Expo-Snack',
- href: 'https://snack.expo.io/@ethanshar/rnuilib_snack?platform=ios&supportedPlatforms=ios,android'
- }
- ]
- },
-
- {
- title: 'Community',
- items: [
- {
- label: 'Discord',
- href: 'https://discord.gg/2eW4g6Z'
- },
- {
- label: 'Twitter',
- href: 'https://twitter.com/rnuilib'
- }
- ]
- }
- ],
- copyright: `© 2006-${new Date().getFullYear()} Wix.com, Inc.`
- },
- prism: {
- theme: lightCodeTheme,
- darkTheme: darkCodeTheme
- },
- colorMode: {
- disableSwitch: true
- }
- })
- }
-);
diff --git a/docuilib/package.json b/docuilib/package.json
deleted file mode 100644
index eea3209d6c..0000000000
--- a/docuilib/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "uilib-docs",
- "version": "2.2.1",
- "scripts": {
- "docusaurus": "docusaurus",
- "start": "docusaurus start",
- "build": "docusaurus build",
- "swizzle": "docusaurus swizzle",
- "deploy": "docusaurus deploy",
- "clear": "docusaurus clear",
- "serve": "docusaurus serve",
- "write-translations": "docusaurus write-translations",
- "write-heading-ids": "docusaurus write-heading-ids",
- "typecheck": "tsc"
- },
- "dependencies": {
- "@docusaurus/core": "2.0.0-beta.6",
- "@docusaurus/preset-classic": "2.0.0-beta.6",
- "@mdx-js/react": "^1.6.21",
- "@svgr/webpack": "^5.5.0",
- "classnames": "^2.3.1",
- "clsx": "^1.1.1",
- "docusaurus-plugin-sass": "^0.2.1",
- "file-loader": "^6.2.0",
- "prism-react-renderer": "^1.2.1",
- "react": "^17.0.1",
- "react-dom": "^17.0.1",
- "sass": "^1.39.0",
- "url-loader": "^4.1.1"
- },
- "devDependencies": {
- "@docusaurus/module-type-aliases": "2.0.0-beta.6",
- "@tsconfig/docusaurus": "^1.0.4",
- "@types/react": "^17.0.14",
- "@types/react-helmet": "^6.1.2",
- "@types/react-router-dom": "^5.1.8",
- "typescript": "^4.3.5"
- },
- "browserslist": {
- "production": [
- ">0.5%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
- },
- "files": [
- "src",
- "static",
- "docusaurus.config.js",
- "sidebars.js"
- ]
-}
diff --git a/docuilib/sidebars.js b/docuilib/sidebars.js
deleted file mode 100644
index 6b5d9af912..0000000000
--- a/docuilib/sidebars.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Creating a sidebar enables you to:
- - create an ordered group of docs
- - render a sidebar for each doc of that group
- - provide next/previous navigation
-
- The sidebars can be generated from the filesystem, or explicitly defined here.
-
- Create as many sidebars as you want.
- */
-
-const componentsCategories = {
- // foundation: 'Foundation',
- // assets: 'Assets',
- basic: 'Basic',
- navigation: 'Navigation',
- layout: 'Layout',
- controls: 'Controls',
- status: 'Status',
- media: 'Media',
- lists: 'Lists',
- form: 'Form',
- dateTime: 'Date & Time',
- overlays: 'Overlays',
- charts: 'Charts',
- incubator: 'Incubator',
- infra: 'Infra'
-};
-
-module.exports = {
- // By default, Docusaurus generates a sidebar from the docs folder structure
- // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}]
-
- // But you can create a sidebar manually
- tutorialSidebar: [
- {
- type: 'category',
- label: 'Getting Started',
- collapsed: false,
- items: [
- {
- type: 'autogenerated',
- dirName: `getting-started`
- }
- ]
- },
- {
- type: 'category',
- label: 'Foundation',
- collapsed: false,
- items: [
- {
- type: 'autogenerated',
- dirName: `foundation`
- }
- ]
- },
- {
- type: 'category',
- label: 'Components',
- collapsible: false,
- // items: ['Basic', 'Lists', 'Form', 'Overlays', 'Layout', 'Keyboard', 'Incubator'].map(category => {
- items: Object.keys(componentsCategories).sort().map(category => {
- return {
- type: 'category',
- label: componentsCategories[category],
- collapsed: true,
- items: [
- {
- type: 'autogenerated',
- dirName: `components/${category}`
- }
- ]
- };
- })
- }
- ]
-};
diff --git a/docuilib/src/components/CodeSection.module.scss b/docuilib/src/components/CodeSection.module.scss
deleted file mode 100644
index fc7a765dff..0000000000
--- a/docuilib/src/components/CodeSection.module.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-@import 'src/css/constants';
-
-.codeSection {
- padding-bottom: 5%;
- display: flex;
- flex-direction: column;
- align-items: center;
-
- .headline {
- text-align: center;
- }
-
- .codeExample {
- display: flex;
- flex-direction: column;
- width: 80vw;
-
- @include desktop {
- width: 55vw;
- }
-
- .docsButton {
- margin-top: 40px;
- align-self: center;
- }
- }
-
- .tabs {
- display: flex;
- border: 1px solid;
- height: 32px;
-
- @include desktop {
- height: 46px;
- }
-
- .tab {
- flex: 1;
- display: flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- font-size: 0.8em;
- transition: 0.2s all;
-
- &:not(:last-child) {
- border-right: 1px solid;
- }
- }
- .tabSelected {
- background-color: $black;
- color: $white;
- }
- }
-
- .tabPage {
- pre {
- background-color: $dark10;
- padding: 20px;
- width: 100%;
- }
-
- .tabPageDescription {
- font-size: 1.2em;
- margin-top: 10px;
- }
-
- .tabPageCode {
- color: $white;
- }
- }
-
-}
diff --git a/docuilib/src/components/CodeSection.tsx b/docuilib/src/components/CodeSection.tsx
deleted file mode 100644
index 797a444f65..0000000000
--- a/docuilib/src/components/CodeSection.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React, {useState} from 'react';
-import Link from '@docusaurus/Link';
-import classnames from 'classnames';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-
-import {foundationSnippet, themeSnippet, modifiersSnippet} from './CodeSectionSnippets';
-import styles from './CodeSection.module.scss';
-
-const tabs = [
- {headline: `Define your app's foundation - colors, typography and spacings`, codeSnippet: foundationSnippet},
- {headline: `Set a theme for your components.`, codeSnippet: themeSnippet},
- {
- headline: `Build your app. With our auto-generated modifiers, it's a matter of minutes till you create your first beautiful screen.`,
- codeSnippet: modifiersSnippet
- }
-];
-
-export default () => {
- const [selectedTab, setSelectedTab] = useState(0);
- const {siteConfig} = useDocusaurusContext();
- const {docsMainEntry} = siteConfig.customFields;
-
- return (
-
-
Effortless App Building Using Our Toolset
-
-
-
-
- View Docs
-
-
-
- );
-};
-
-const TabBar = ({onChangeIndex, selectedIndex}) => {
- return (
-
- {['Foundation', 'Theme', 'Modifiers'].map((title, index) => {
- const tabClassName = classnames(styles.tab, {[`${styles.tabSelected}`]: selectedIndex === index});
- return (
-
onChangeIndex(index)}
- onKeyPress={() => onChangeIndex(index)}
- role="tab"
- tabIndex={index}
- >
- {title}
-
- );
- })}
-
- );
-};
-
-const Tab = ({headline, codeSnippet}) => {
- return (
-
-
{headline}
-
- {codeSnippet}
-
-
- );
-};
diff --git a/docuilib/src/components/CodeSectionSnippets.ts b/docuilib/src/components/CodeSectionSnippets.ts
deleted file mode 100644
index 6c9a001829..0000000000
--- a/docuilib/src/components/CodeSectionSnippets.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-export const foundationSnippet = `import {Colors, Typography, Spacings} from 'react-native-ui-lib';
-
-Colors.loadColors({
- primaryColor: '#2364AA',
- secondaryColor: '#81C3D7',
- textColor: '#221D23',
- errorColor: '#E63B2E',
- successColor: '#ADC76F',
- warnColor: '#FF963C'
-});
-
-Typography.loadTypographies({
- heading: {fontSize: 36, fontWeight: '600'},
- subheading: {fontSize: 28, fontWeight: '500'},
- body: {fontSize: 18, fontWeight: '400'}
-});
-
-Spacings.loadSpacings({
- page: 20,
- card: 12,
- gridGutter: 16
-});`;
-
-export const themeSnippet = `import {ThemeManager} from 'react-native-ui-lib';
-
-// with plain object
-ThemeManager.setComponentTheme('Card', {
- borderRadius: 8,
- activeOpacity: 0.9
-});
-
-// with a dynamic function
-ThemeManager.setComponentTheme('Button', (props, context) => {
- // 'square' is not an original Button prop, but a custom prop that can
- // be used to create different variations of buttons in your app
- if (props.square) {
- return {
- borderRadius: 0
- };
- }
-});`;
-
-export const modifiersSnippet = `import React, {Component} from 'react';
-import {View, Text, Card, Button} from 'react-native-ui-lib';
-
-class MyScreen extends Component {
- render() {
- return (
-
- My Screen
-
- This is an example card
-
-
-
-
- );
- }
-}`;
diff --git a/docuilib/src/components/ComponentsSection.module.scss b/docuilib/src/components/ComponentsSection.module.scss
deleted file mode 100644
index 73436e04d7..0000000000
--- a/docuilib/src/components/ComponentsSection.module.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-@import 'src/css/constants';
-
-.components {
- position: relative;
- display: flex;
- flex-direction: column;
- align-items: center;
- width: 100%;
- padding-left: 40px;
- padding-right: 40px;
-
- .componentsInner {
- text-align: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- width: 100%;
- padding: 0;
-
- p {
- @include desktop {
- width: 40%;
- min-width: 200px;
- }
- }
- }
-
- img {
- width: 100vw;
- min-width: 400px;
- margin-top: 20px;
-
- @include desktop {
- margin-top: 0;
- }
- }
-}
diff --git a/docuilib/src/components/ComponentsSection.tsx b/docuilib/src/components/ComponentsSection.tsx
deleted file mode 100644
index 6b222d9fc6..0000000000
--- a/docuilib/src/components/ComponentsSection.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from 'react';
-import Link from '@docusaurus/Link';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-
-import styles from './ComponentsSection.module.scss';
-import showcase from '@site/static/img/showcase.jpg';
-
-export default () => {
- const {siteConfig} = useDocusaurusContext();
- const {docsMainEntry} = siteConfig.customFields;
- return (
-
-
-
Build Stunning Apps Using Over 60 Beautiful Components
-
- Basic components like Button, Avatar and Card and more sophisticated ones like Hints, ColorPicker and Drawer.
-
-
-
View Docs
-
-
-
-
- );
-};
diff --git a/docuilib/src/components/CustomLayout.tsx b/docuilib/src/components/CustomLayout.tsx
deleted file mode 100644
index 1d4f81b6f8..0000000000
--- a/docuilib/src/components/CustomLayout.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React from 'react';
-import DocPage from '@theme/DocPage';
-import StandWithUkraine from '@site/src/components/StandWithUkraine';
-
-export default function CustomLayout(props) {
- return (
- <>
-
-
- >
- );
-}
diff --git a/docuilib/src/components/FeatureSection.module.scss b/docuilib/src/components/FeatureSection.module.scss
deleted file mode 100644
index 7e8683597c..0000000000
--- a/docuilib/src/components/FeatureSection.module.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-@import 'src/css/constants';
-
-.featuresSection {
- display: flex;
- flex-direction: column;
- align-items: center;
- padding-bottom: 100px;
- width: 100%;
- text-align: center;
- padding-left: 40px;
- padding-right: 40px;
-
- .cards {
- display: flex;
- flex-direction: column;
- margin-top: 3%;
- width: 70%;
- align-items: center;
-
- @include desktop {
- flex-direction: row;
- justify-content: space-between;
- min-width: 50vw;
- }
-
- .card {
- width: 15vw;
- min-width: 300px;
- box-shadow: 6px 6px 50px 15px rgba($primary, 0.05);
- background-color: $white;
- text-align: center;
- border-radius: 20px;
- margin-bottom: 20px;
- padding: 40px;
-
- @include desktop {
- margin-right: 20px;
- margin-bottom: 0;
- }
-
- .cardTitle {
- font-weight: 500;
- }
-
- img {
- width: 20%;
- min-width: 50px;
- margin-bottom: 10px;
- }
- }
- }
-}
diff --git a/docuilib/src/components/FeaturesSection.tsx b/docuilib/src/components/FeaturesSection.tsx
deleted file mode 100644
index 3e370af6ac..0000000000
--- a/docuilib/src/components/FeaturesSection.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import crossPlatform from '@site/static/img/crossPlatform.png';
-import accessibility from '@site/static/img/accessibility.png';
-import rtl from '@site/static/img/RTL.png';
-
-import styles from './FeatureSection.module.scss';
-
-export default () => {
- return (
-
-
Full, out-of-the-box support to RTL and Accessibility
-
-
-
-
-
-
- );
-};
-
-const Card = ({image, title, description}) => {
- return (
-
-
-
{title}
-
{description}
-
- );
-};
diff --git a/docuilib/src/components/HomepageFeatures.module.css b/docuilib/src/components/HomepageFeatures.module.css
deleted file mode 100644
index b248eb2e5d..0000000000
--- a/docuilib/src/components/HomepageFeatures.module.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.features {
- display: flex;
- align-items: center;
- padding: 2rem 0;
- width: 100%;
-}
-
-.featureSvg {
- height: 200px;
- width: 200px;
-}
diff --git a/docuilib/src/components/HomepageFeatures.tsx b/docuilib/src/components/HomepageFeatures.tsx
deleted file mode 100644
index 3897078da1..0000000000
--- a/docuilib/src/components/HomepageFeatures.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-import React from 'react';
-import clsx from 'clsx';
-import styles from './HomepageFeatures.module.css';
-
-type FeatureItem = {
- title: string;
- image: string;
- description: JSX.Element;
-};
-
-const FeatureList: FeatureItem[] = [
- {
- title: 'Easy to Use',
- image: '/img/undraw_docusaurus_mountain.svg',
- description: (
- <>
- Docusaurus was designed from the ground up to be easily installed and
- used to get your website up and running quickly.
- >
- ),
- },
- {
- title: 'Focus on What Matters',
- image: '/img/undraw_docusaurus_tree.svg',
- description: (
- <>
- Docusaurus lets you focus on your docs, and we'll do the chores. Go
- ahead and move your docs into the docs
directory.
- >
- ),
- },
- {
- title: 'Powered by React',
- image: '/img/undraw_docusaurus_react.svg',
- description: (
- <>
- Extend or customize your website layout by reusing React. Docusaurus can
- be extended while reusing the same header and footer.
- >
- ),
- },
-];
-
-function Feature({title, image, description}: FeatureItem) {
- return (
-
-
-
-
-
-
{title}
-
{description}
-
-
- );
-}
-
-export default function HomepageFeatures(): JSX.Element {
- return (
-
-
-
- {FeatureList.map((props, idx) => (
-
- ))}
-
-
-
- );
-}
diff --git a/docuilib/src/components/LibrariesSection.module.scss b/docuilib/src/components/LibrariesSection.module.scss
deleted file mode 100644
index 2a2569b577..0000000000
--- a/docuilib/src/components/LibrariesSection.module.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-@import 'src/css/constants';
-
-.librariesSection {
- width: 100vw;
- padding: 0 40px;
- height: 250px;
- display: flex;
- flex-direction: column;
- background-color: $primary;
- color: $white;
-
- @include desktop {
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- padding: 0 20%;
- }
-
- .headline {
- font-weight: bold;
- text-align: center;
- margin-bottom: 40px;
- margin-top: 20px;
- font-size: 2em;
-
- @include desktop {
- text-align: start;
- align-self: center;
- width: 20%;
- min-width: 400px;
- margin-top: 0;
- margin-right: 40px;
- margin-bottom: 0;
- }
- }
-
- .libraries {
- display: flex;
- justify-content: space-between;
- align-items: center;
-
- @include desktop {
- width: 60%;
- }
-
- .library {
- text-align: center;
- color: $white;
-
- img {
- max-height: 60px;
- height: 7vw;
- transition: 0.3s all;
- }
-
- .libraryName {
- margin: 0;
- }
-
- &:hover img {
- transform: scale(1.02);
- }
- }
- }
-}
diff --git a/docuilib/src/components/LibrariesSection.tsx b/docuilib/src/components/LibrariesSection.tsx
deleted file mode 100644
index 9e46b19f32..0000000000
--- a/docuilib/src/components/LibrariesSection.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from 'react';
-
-import styles from './LibrariesSection.module.scss';
-import rnn from '@site/static/img/rnn.png';
-import detox from '@site/static/img/detox.png';
-import calendars from '@site/static/img/calendars.png';
-import remx from '@site/static/img/remx.png';
-
-export default () => {
- return (
-
-
Check out more libraries made by us!
-
-
-
-
-
-
-
-
- );
-};
-
-const Library = ({image, name, link}) => {
- return (
-
-
-
-
{name}
-
-
- );
-};
diff --git a/docuilib/src/components/MainSection.module.scss b/docuilib/src/components/MainSection.module.scss
deleted file mode 100644
index bef4aa0d2e..0000000000
--- a/docuilib/src/components/MainSection.module.scss
+++ /dev/null
@@ -1,106 +0,0 @@
-@import 'src/css/constants';
-
-.main {
- position: relative;
- width: 100%;
- display: flex;
- justify-content: center;
- margin-bottom: 40px;
-
- @include desktop {
- height: 100vh;
- }
-
- .mainCover {
- display: none;
- position: absolute;
- min-width: 1920px;
-
- @include desktop {
- display: initial;
- }
- }
-
- .mainContent {
- z-index: 1;
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- top: 15vh;
- text-align: center;
- padding: 40px;
-
- @include desktop() {
- position: absolute;
- padding: 0;
- top: 15vw;
- left: 7vw;
- width: 40%;
- text-align: start;
- }
-
- > p {
- font-size: 2.5em;
- font-weight: 600;
- margin: 0;
- line-height: 1.2;
-
- @include desktop {
- font-size: 3em;
- line-height: 1.5;
- }
-
- > .libName {
- color: $primary;
- }
- }
-
- .gitStars {
- display: flex;
- align-items: center;
- border: 1px solid;
- border-radius: 2px;
- align-self: center;
- margin-top: 20px;
-
- @include desktop {
- margin-top: 0;
- align-self: flex-start;
- }
-
- img {
- padding: 0 4px;
- height: 16px;
- }
-
- span {
- display: inline-block;
- vertical-align: middle;
- padding: 0 10px;
- border-left: 1px solid;
- font-weight: 500;
- }
- }
-
- .buttons {
- margin-top: 40px;
- align-self: center;
- display: flex;
- flex-direction: column;
-
- @include desktop() {
- align-self: flex-start;
- flex-direction: row;
- }
-
- > :first-child {
- margin-bottom: 10px;
-
- @include desktop() {
- margin-right: 10px;
- margin-bottom: 0;
- }
- }
- }
- }
-}
diff --git a/docuilib/src/components/MainSection.tsx b/docuilib/src/components/MainSection.tsx
deleted file mode 100644
index edd45ddc5e..0000000000
--- a/docuilib/src/components/MainSection.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React, {useEffect, useState} from 'react';
-import Link from '@docusaurus/Link';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-
-import styles from './MainSection.module.scss';
-import mainCover from '@site/static/img/mainCover.jpg';
-import GoldStarSvg from '@site/static/img/goldStar.svg';
-
-const STARS_COUNT_KEY = 'starsCount';
-
-export default () => {
- const {siteConfig} = useDocusaurusContext();
- const {expoSnackLink, docsMainEntry} = siteConfig.customFields;
- const [starsCount, setStarsCount] = useState(localStorage.getItem(STARS_COUNT_KEY) ?? siteConfig.customFields.stars);
-
- useEffect(() => {
- fetchStarsCount();
- }, []);
-
- const fetchStarsCount = async () => {
- const response = await fetch('https://api.github.com/repos/wix/react-native-ui-lib');
- const data = await response.json();
- const _starsCount = (data.stargazers_count / 1000).toFixed(1);
-
-
- localStorage.setItem(STARS_COUNT_KEY, _starsCount.toString());
- setStarsCount(_starsCount);
- };
-
- return (
-
-
-
-
- RNUI is a UI Toolset & Components Library for React Native
-
-
-
- {starsCount}k
-
-
-
-
-
- );
-};
diff --git a/docuilib/src/components/StandWithUkraine.module.scss b/docuilib/src/components/StandWithUkraine.module.scss
deleted file mode 100644
index 97a35b4365..0000000000
--- a/docuilib/src/components/StandWithUkraine.module.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-.banner {
- display: flex;
- justify-content: center;
- align-items: center;
- background-color: #1f243c;
- padding: 0.5em;
-}
-
-.link {
- color: #fff;
- font-weight: bolder;
- text-align: center;
-}
-
-.link:hover {
- color: #fff;
- text-decoration: none;
-}
-
-.hashtag {
- color: #ffd600;
-}
-
-@media (min-width: 768px) {
- .banner {
- height: 56px;
- }
-}
diff --git a/docuilib/src/components/StandWithUkraine.tsx b/docuilib/src/components/StandWithUkraine.tsx
deleted file mode 100644
index eb856915db..0000000000
--- a/docuilib/src/components/StandWithUkraine.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-import styles from './StandWithUkraine.module.scss';
-import Link from '@docusaurus/Link';
-
-export default function StandWithUkraine(props) {
- return (
-
-
- 🇺🇦 This project is created with substantial contributions from our Ukrainian colleagues.{' '}
- #StandWithUkraine
-
-
- );
-}
diff --git a/docuilib/src/css/components.css b/docuilib/src/css/components.css
deleted file mode 100644
index e34d275078..0000000000
--- a/docuilib/src/css/components.css
+++ /dev/null
@@ -1,29 +0,0 @@
-.button {
- box-shadow: none;
- outline: 0;
- border: 0;
- min-width: 180px;
- padding: 12px 24px;
- border-radius: 100px;
- font-size: var(--text40);
- font-weight: 500;
- background-color: var(--white);
- color: var(--black);
- border: 1px solid var(--black);
- cursor: pointer;
- transition: 0.2s all;
-}
-
-.button:hover {
- background-color: var(--black);
- color: var(--white);
-}
-
-.button.dark {
- background-color: var(--black);
- color: var(--white);
-}
-
-.button.dark:hover {
- background-color: var(--dark10);
-}
diff --git a/docuilib/src/css/constants.scss b/docuilib/src/css/constants.scss
deleted file mode 100644
index f50cc14fc7..0000000000
--- a/docuilib/src/css/constants.scss
+++ /dev/null
@@ -1,120 +0,0 @@
-// COLORS
-
-$primary: #5848ff;
-$secondary: #f0f1fd;
-
-// DARKS
-$dark10: #20303c;
-$dark20: #43515c;
-$dark30: #66737c;
-$dark40: #858f96;
-$dark50: #a3abb0;
-$dark60: #c2c7cb;
-$dark70: #e0e3e5;
-$dark80: #f2f4f5;
-// BLUES
-$blue10: #3182c8;
-$blue20: #4196e0;
-$blue30: #459fed;
-$blue40: #57a8ef;
-$blue50: #8fc5f4;
-$blue60: #b5d9f8;
-$blue70: #daecfb;
-$blue80: #ecf5fd;
-
-// CYANS
-$cyan10: #00aaaf;
-$cyan20: #32babc;
-$cyan30: #3cc7c5;
-$cyan40: #64d4d2;
-$cyan50: #8bdfdd;
-$cyan60: #b1e9e9;
-$cyan70: #d8f4f4;
-$cyan80: #ebf9f9;
-// GREENS
-$green10: #00a65f;
-$green20: #32b76c;
-$green30: #65c888;
-$green40: #84d3a0;
-$green50: #a3deb8;
-$green60: #c1e9cf;
-$green70: #e8f7ef;
-$green80: #f3fbf7;
-// YELLOWS
-$yellow10: #e19800;
-$yellow20: #f0a700;
-$yellow30: #ffb600;
-$yellow40: #ffca45;
-$yellow50: #ffdd87;
-$yellow60: #ffeab5;
-$yellow70: #fff2d1;
-$yellow80: #fff7e3;
-// ORANGES
-$orange10: #d9644a;
-$orange20: #e66a4e;
-$orange30: #f27052;
-$orange40: #f37e63;
-$orange50: #f7a997;
-$orange60: #fac6ba;
-$orange70: #fce2dc;
-$orange80: #fef0ed;
-// REDS
-$red10: #cf262f;
-$red20: #ee2c38;
-$red30: #f2564d;
-$red40: #f57871;
-$red50: #f79a94;
-$red60: #fabbb8;
-$red70: #fcdddb;
-$red80: #feeeed;
-// PURPLES
-$purple10: #8b1079;
-$purple20: #a0138e;
-$purple30: #b13dac;
-$purple40: #c164bd;
-$purple50: #d08bcd;
-$purple60: #e0b1de;
-$purple70: #efd8ee;
-$purple80: #f7ebf7;
-// VIOLETS
-$violet10: #48217b;
-$violet20: #542790;
-$violet30: #733ca6;
-$violet40: #8f63b8;
-$violet50: #ab8aca;
-$violet60: #c7b1db;
-$violet70: #e3d8ed;
-$violet80: #f1ebf6;
-// WHITES
-$white: #ffffff;
-$black: #000000;
-
-// TEXTS
-$fontFamily: Poppins;
-$text10: 1.5em;
-$text20: 1.3em;
-$text30: 1.12em;
-$text40: 1em;
-$text50: 0.8em;
-$text60: 0.6em;
-
-// ELEMENTS
-$minScreenWidth: 1280px;
-$headerHeight: 72px;
-$navbarWidth: 300px;
-
-// BREAKPOINTS
-$tablet-width: 768px;
-$desktop-width: 1024px;
-
-@mixin tablet {
- @media (min-width: #{$tablet-width}) and (max-width: #{$desktop-width - 1px}) {
- @content;
- }
-}
-
-@mixin desktop {
- @media (min-width: #{$desktop-width}) {
- @content;
- }
-}
\ No newline at end of file
diff --git a/docuilib/src/css/custom.css b/docuilib/src/css/custom.css
deleted file mode 100644
index cef21feda4..0000000000
--- a/docuilib/src/css/custom.css
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Any CSS included here will be global. The classic template
- * bundles Infima by default. Infima is a CSS framework designed to
- * work well for content-centric websites.
- */
-
-@import url('https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700,800,900&display=swap');
-@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap');
-
-/* You can override the default Infima variables here. */
-:root {
- --ifm-color-primary: #5848ff;
- --ifm-color-primary-dark: #4633E9;
- --ifm-color-primary-darker: #3220CD;
- --ifm-color-primary-darkest: #3220CD;
- --ifm-color-primary-light: #5A48F5;
- --ifm-color-primary-lighter: #8579FF;
- --ifm-color-primary-lightest: #B2ABFF;
- --ifm-code-font-size: 95%;
-}
-
-.docusaurus-highlight-code-line {
- background-color: rgba(0, 0, 0, 0.1);
- display: block;
- margin: 0 calc(-1 * var(--ifm-pre-padding));
- padding: 0 var(--ifm-pre-padding);
-}
-
-html[data-theme='dark'] .docusaurus-highlight-code-line {
- background-color: rgba(0, 0, 0, 0.3);
-}
diff --git a/docuilib/src/css/presets.css b/docuilib/src/css/presets.css
deleted file mode 100644
index 62a6afe084..0000000000
--- a/docuilib/src/css/presets.css
+++ /dev/null
@@ -1,95 +0,0 @@
-:root {
- --white: #ffffff;
- --black: #000000;
- /* DARKS */
- --dark10: #20303c;
- --dark20: #43515c;
- --dark30: #66737c;
- --dark40: #858f96;
- --dark50: #a3abb0;
- --dark60: #c2c7cb;
- --dark70: #e0e3e5;
- --dark80: #f2f4f5;
- /* BLUES */
- --blue10: #3182c8;
- --blue20: #4196e0;
- --blue30: #459fed;
- --blue40: #57a8ef;
- --blue50: #8fc5f4;
- --blue60: #b5d9f8;
- --blue70: #daecfb;
- --blue80: #ecf5fd;
-
- /* CYANS */
- --cyan10: #00aaaf;
- --cyan20: #32babc;
- --cyan30: #3cc7c5;
- --cyan40: #64d4d2;
- --cyan50: #8bdfdd;
- --cyan60: #b1e9e9;
- --cyan70: #d8f4f4;
- --cyan80: #ebf9f9;
- /* GREENS */
- --green10: #00a65f;
- --green20: #32b76c;
- --green30: #65c888;
- --green40: #84d3a0;
- --green50: #a3deb8;
- --green60: #c1e9cf;
- --green70: #e8f7ef;
- --green80: #f3fbf7;
- /* YELLOWS */
- --yellow10: #e19800;
- --yellow20: #f0a700;
- --yellow30: #ffb600;
- --yellow40: #ffca45;
- --yellow50: #ffdd87;
- --yellow60: #ffeab5;
- --yellow70: #fff2d1;
- --yellow80: #fff7e3;
- /* ORANGES */
- --orange10: #d9644a;
- --orange20: #e66a4e;
- --orange30: #f27052;
- --orange40: #f37e63;
- --orange50: #f7a997;
- --orange60: #fac6ba;
- --orange70: #fce2dc;
- --orange80: #fef0ed;
- /* REDS */
- --red10: #cf262f;
- --red20: #ee2c38;
- --red30: #f2564d;
- --red40: #f57871;
- --red50: #f79a94;
- --red60: #fabbb8;
- --red70: #fcdddb;
- --red80: #feeeed;
- /* PURPLES */
- --purple10: #8b1079;
- --purple20: #a0138e;
- --purple30: #b13dac;
- --purple40: #c164bd;
- --purple50: #d08bcd;
- --purple60: #e0b1de;
- --purple70: #efd8ee;
- --purple80: #f7ebf7;
- /* VIOLETS */
- --violet10: #48217b;
- --violet20: #542790;
- --violet30: #733ca6;
- --violet40: #8f63b8;
- --violet50: #ab8aca;
- --violet60: #c7b1db;
- --violet70: #e3d8ed;
- --violet80: #f1ebf6;
-
- /* TEXTS */
- --fontFamily: Poppins;
- --text10: 1.5em;
- --text20: 1.3em;
- --text30: 1.12em;
- --text40: 1em;
- --text50: 0.8em;
- --text60: 0.6em;
-}
diff --git a/docuilib/src/pages/index.tsx b/docuilib/src/pages/index.tsx
deleted file mode 100644
index 2a90bb6cfc..0000000000
--- a/docuilib/src/pages/index.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import React from 'react';
-import Layout from '@theme/Layout';
-import BrowserOnly from '@docusaurus/BrowserOnly';
-// import clsx from 'clsx';
-// import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-// import HomepageFeatures from '../components/HomepageFeatures';
-
-import StandWithUkraine from '../components/StandWithUkraine';
-import MainSection from '../components/MainSection';
-import ComponentsSection from '../components/ComponentsSection';
-import FeaturesSection from '../components/FeaturesSection';
-import CodeSection from '../components/CodeSection';
-import LibrariesSection from '../components/LibrariesSection';
-
-export default function Home(): JSX.Element {
- // const {siteConfig} = useDocusaurusContext();
- return (
- <>
-
-
-
- {/* Note: BrowserOnly allows using `localStorage` in MainSection, otherwise docusaurus build fail */}
- {() => }
-
-
-
-
-
-
- >
- );
-}
diff --git a/docuilib/src/pages/markdown-page.md b/docuilib/src/pages/markdown-page.md
deleted file mode 100644
index 9756c5b668..0000000000
--- a/docuilib/src/pages/markdown-page.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Markdown page example
----
-
-# Markdown page example
-
-You don't need React to write simple standalone pages.
diff --git a/docuilib/static/.nojekyll b/docuilib/static/.nojekyll
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/docuilib/static/img/RTL.png b/docuilib/static/img/RTL.png
deleted file mode 100644
index cd89fa4206..0000000000
Binary files a/docuilib/static/img/RTL.png and /dev/null differ
diff --git a/docuilib/static/img/accessibility.png b/docuilib/static/img/accessibility.png
deleted file mode 100644
index 24b424496f..0000000000
Binary files a/docuilib/static/img/accessibility.png and /dev/null differ
diff --git a/docuilib/static/img/calendars.png b/docuilib/static/img/calendars.png
deleted file mode 100644
index 56feb4c80a..0000000000
Binary files a/docuilib/static/img/calendars.png and /dev/null differ
diff --git a/docuilib/static/img/crossPlatform.png b/docuilib/static/img/crossPlatform.png
deleted file mode 100644
index a9e49a746d..0000000000
Binary files a/docuilib/static/img/crossPlatform.png and /dev/null differ
diff --git a/docuilib/static/img/detox.png b/docuilib/static/img/detox.png
deleted file mode 100644
index f4dfe41bd2..0000000000
Binary files a/docuilib/static/img/detox.png and /dev/null differ
diff --git a/docuilib/static/img/docusaurus.png b/docuilib/static/img/docusaurus.png
deleted file mode 100644
index f458149e3c..0000000000
Binary files a/docuilib/static/img/docusaurus.png and /dev/null differ
diff --git a/docuilib/static/img/favicon.ico b/docuilib/static/img/favicon.ico
deleted file mode 100644
index 06299ba127..0000000000
Binary files a/docuilib/static/img/favicon.ico and /dev/null differ
diff --git a/docuilib/static/img/goldStar.svg b/docuilib/static/img/goldStar.svg
deleted file mode 100644
index f9840a2961..0000000000
--- a/docuilib/static/img/goldStar.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docuilib/static/img/logo.png b/docuilib/static/img/logo.png
deleted file mode 100644
index cefcf3cb87..0000000000
Binary files a/docuilib/static/img/logo.png and /dev/null differ
diff --git a/docuilib/static/img/logo.svg b/docuilib/static/img/logo.svg
deleted file mode 100644
index 9db6d0d066..0000000000
--- a/docuilib/static/img/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docuilib/static/img/mainCover.jpg b/docuilib/static/img/mainCover.jpg
deleted file mode 100644
index e6ec0404c7..0000000000
Binary files a/docuilib/static/img/mainCover.jpg and /dev/null differ
diff --git a/docuilib/static/img/qr.png b/docuilib/static/img/qr.png
deleted file mode 100644
index b797cc4c98..0000000000
Binary files a/docuilib/static/img/qr.png and /dev/null differ
diff --git a/docuilib/static/img/remx.png b/docuilib/static/img/remx.png
deleted file mode 100644
index 8e2dbcbef3..0000000000
Binary files a/docuilib/static/img/remx.png and /dev/null differ
diff --git a/docuilib/static/img/rnn.png b/docuilib/static/img/rnn.png
deleted file mode 100644
index 59e1c68380..0000000000
Binary files a/docuilib/static/img/rnn.png and /dev/null differ
diff --git a/docuilib/static/img/showcase.jpg b/docuilib/static/img/showcase.jpg
deleted file mode 100644
index 8421097655..0000000000
Binary files a/docuilib/static/img/showcase.jpg and /dev/null differ
diff --git a/docuilib/static/img/tutorial/docsVersionDropdown.png b/docuilib/static/img/tutorial/docsVersionDropdown.png
deleted file mode 100644
index ff1cbe6889..0000000000
Binary files a/docuilib/static/img/tutorial/docsVersionDropdown.png and /dev/null differ
diff --git a/docuilib/static/img/tutorial/localeDropdown.png b/docuilib/static/img/tutorial/localeDropdown.png
deleted file mode 100644
index d7163f9675..0000000000
Binary files a/docuilib/static/img/tutorial/localeDropdown.png and /dev/null differ
diff --git a/docuilib/static/img/undraw_docusaurus_mountain.svg b/docuilib/static/img/undraw_docusaurus_mountain.svg
deleted file mode 100644
index 431cef2f7f..0000000000
--- a/docuilib/static/img/undraw_docusaurus_mountain.svg
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docuilib/static/img/undraw_docusaurus_react.svg b/docuilib/static/img/undraw_docusaurus_react.svg
deleted file mode 100644
index e417050433..0000000000
--- a/docuilib/static/img/undraw_docusaurus_react.svg
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docuilib/static/img/undraw_docusaurus_tree.svg b/docuilib/static/img/undraw_docusaurus_tree.svg
deleted file mode 100644
index a05cc03dda..0000000000
--- a/docuilib/static/img/undraw_docusaurus_tree.svg
+++ /dev/null
@@ -1 +0,0 @@
-docu_tree
\ No newline at end of file
diff --git a/docuilib/tsconfig.json b/docuilib/tsconfig.json
deleted file mode 100644
index 6f4756980d..0000000000
--- a/docuilib/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- // This file is not used in compilation. It is here just for a nice editor experience.
- "extends": "@tsconfig/docusaurus/tsconfig.json",
- "compilerOptions": {
- "baseUrl": "."
- }
-}
diff --git a/eslint-rules/.eslintrc.js b/eslint-rules/.eslintrc.js
deleted file mode 100644
index 5a53df3fb3..0000000000
--- a/eslint-rules/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- "settings": {
- "import/resolver": {
- "node": {
- "extensions": [".js", ".ios.js", ".android.js"]
- }
- }
- }
-};
\ No newline at end of file
diff --git a/eslint-rules/README.md b/eslint-rules/README.md
deleted file mode 100644
index 731e634307..0000000000
--- a/eslint-rules/README.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# eslint-plugin-uilib
-
-uilib set of eslint rules
-
-## Installation
-
-You'll first need to install [ESLint](http://eslint.org):
-
-```
-$ npm i eslint --save-dev
-```
-
-Next, install `eslint-plugin-uilib`:
-
-```
-$ npm install eslint-plugin-uilib --save-dev
-```
-
-**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-uilib` globally.
-
-## Usage
-
-Add `uilib` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
-
-```json
-{
- "plugins": [
- "uilib"
- ]
-}
-```
-
-
-Then configure the rules you want to use under the rules section.
-
-```json
-{
- "rules": {
- "uilib/rule-name": 2
- }
-}
-```
-
-## Supported Rules
-
-#### uilib/no-hard-coded-color
-```js
-// Your app valid colors
-const validColors = {
- blue: '#459FED',
- red: '#F2564D',
- green: '#00CD8B',
- yellow: '#FFB600',
-}
-
-// Lint will catch all hard coded color values in the code and replace with valid colors if exist
-// `#459FED` will turn to `Colors.blue`
-{
- "rules": {
- "uilib/no-hard-coded-color": ['error', {validColors}]
- }
-}
-```
-
-### uilib/component-deprecation_warn, uilib/component-deprecation_error
-```js
-
-// deprecation message to warn you consumers about
-const deprecationWarnings = [
- {
- "component": "ActivityIndicator",
- "source": "react-native",
- "message": "Please avoid using react-native ActivityIndicator, use the 'Loader' component instead"
- },
- {
- "component": "OldComponent",
- "source": "react-native-ui-lib",
- "message": "Please use the 'NewComponent' instead. Auto fix available.",
- "fix": { "componentName": "NewComponent" }
- },
-];
-
-const deprecationErrors = [
- {
- "component": "Button", /// The component
- "source": "react-native-ui-lib", // The source you import the component from
- "message": "",
- "props": [
- {
- "prop": "title", // the prop to depreciate
- "message": "Please use `label` prop instead of `title` prop", // custom message to the user
- "fix": { "propName": "label" } // provice auto fix
- }
- ]
- },
-];
-
-// Two phases: warn & error to allow phasing your migration process
-{
- "rules": {
- 'uilib/component-deprecation_warn': ['warn', {deprecations: deprecationWarnings, dueDate: 'Thursday 31 January'}],
- 'uilib/component-deprecation_error': ['error', {deprecations: deprecationErrors , dueDate: 'Thursday 31 January'
- }
-}
-```
diff --git a/eslint-rules/index.js b/eslint-rules/index.js
deleted file mode 100644
index 6f8ec9f4de..0000000000
--- a/eslint-rules/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-module.exports = {
- rules: {
- 'no-hard-coded-color': require('./lib/rules/no-hard-coded-color'),
- 'no-direct-import': require('./lib/rules/no-direct-import'),
- 'component-deprecation': require('./lib/rules/component-deprecation'),
- 'component-prop-deprecation': require('./lib/rules/component-prop-deprecation'),
- 'assets-deprecation': require('./lib/rules/assets-deprecation'),
- 'typography-deprecation': require('./lib/rules/typography-deprecation'),
- 'function-deprecation': require('./lib/rules/function-deprecation'),
- 'prop-value-shape-deprecation': require('./lib/rules/prop-value-shape-deprecation'),
- // for duplicate rules usage
- 'no-direct-import_warn': require('./lib/rules/no-direct-import'),
- 'no-direct-import_error': require('./lib/rules/no-direct-import'),
- 'component-deprecation_warn': require('./lib/rules/component-deprecation'),
- 'component-prop-deprecation_warn': require('./lib/rules/component-prop-deprecation'),
- 'assets-deprecation_warn': require('./lib/rules/assets-deprecation'),
- 'typography-deprecation_warn': require('./lib/rules/typography-deprecation'),
- 'function-deprecation_warn': require('./lib/rules/function-deprecation'),
- 'prop-value-shape-deprecation_warn': require('./lib/rules/prop-value-shape-deprecation'),
- 'component-deprecation_error': require('./lib/rules/component-deprecation'),
- 'component-prop-deprecation_error': require('./lib/rules/component-prop-deprecation'),
- 'assets-deprecation_error': require('./lib/rules/assets-deprecation'),
- 'typography-deprecation_error': require('./lib/rules/typography-deprecation'),
- 'function-deprecation_error': require('./lib/rules/function-deprecation'),
- 'prop-value-shape-deprecation_error': require('./lib/rules/prop-value-shape-deprecation')
- }
-};
diff --git a/eslint-rules/lib/index.js b/eslint-rules/lib/index.js
deleted file mode 100644
index 660c23677c..0000000000
--- a/eslint-rules/lib/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * @fileoverview uilib set of eslint rules
- * @author Ethan Sharabi
- */
-
-'use strict';
-
-//------------------------------------------------------------------------------
-// Requirements
-//------------------------------------------------------------------------------
-
-const requireIndex = require('requireindex');
-
-//------------------------------------------------------------------------------
-// Plugin Definition
-//------------------------------------------------------------------------------
-
-// import all rules in lib/rules
-module.exports.rules = requireIndex(__dirname + "/rules");
diff --git a/eslint-rules/lib/rules/assets-deprecation.js b/eslint-rules/lib/rules/assets-deprecation.js
deleted file mode 100644
index 2f2516f25c..0000000000
--- a/eslint-rules/lib/rules/assets-deprecation.js
+++ /dev/null
@@ -1,83 +0,0 @@
-const _ = require('lodash');
-const {
- organizeDeprecations,
- getLocalizedFix,
- addToImports,
- getComponentLocalName,
- getComponentName,
- handleError
-} = require('../utils');
-
-const RULE_ID = 'assets-deprecation';
-
-const MAP_SCHEMA = {
- type: 'object',
- additionalProperties: true
-};
-
-module.exports = {
- meta: {
- docs: {
- description: 'asset is deprecated',
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: 'This asset is deprecated.'
- },
- fixable: 'code',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- function reportDeprecatedAssets(node, options) {
- try {
- const {dueDate} = context.options[0];
- const dueDateNotice = dueDate ? ` Please fix this issue by ${dueDate}!` : '';
- const msg = `'${options.path}' is deprecated. ${options.message}${dueDateNotice}`;
- context.report({
- node,
- message: `${msg}`,
- fix(fixer) {
- if (options.fix) {
- return fixer.replaceText(node, options.fix);
- }
- }
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- const {deprecations, source} = context.options[0];
- const organizedDeprecations = organizeDeprecations(deprecations, source);
- const imports = [];
-
- function deprecationCheck(node) {
- imports.forEach(currentImport => {
- const source = Object.keys(currentImport)[0];
- const componentLocalName = getComponentLocalName(node);
- if (componentLocalName) {
- const deprecationSource = organizedDeprecations[source];
- if (deprecationSource) {
- // There are deprecations from this source
- const componentName = getComponentName(componentLocalName, imports);
- const foundDeprecations = deprecationSource.filter(
- currentDeprecationSource => currentDeprecationSource.path === componentName
- );
-
- if (foundDeprecations.length > 0) {
- const localizedFix = getLocalizedFix(foundDeprecations[0].fix, currentImport);
- reportDeprecatedAssets(node, {...foundDeprecations[0], fix: localizedFix});
- }
- }
- }
- });
- }
-
- return {
- ImportDeclaration: node => addToImports(node, imports),
- VariableDeclarator: node => addToImports(node, imports),
- MemberExpression: node => deprecationCheck(node)
- };
- }
-};
diff --git a/eslint-rules/lib/rules/component-deprecation.js b/eslint-rules/lib/rules/component-deprecation.js
deleted file mode 100644
index c5d5406642..0000000000
--- a/eslint-rules/lib/rules/component-deprecation.js
+++ /dev/null
@@ -1,164 +0,0 @@
-const _ = require('lodash');
-const {addToImports, organizeDeprecations, getComponentLocalName, getPossibleDeprecations, handleError} = require('../utils');
-
-const RULE_ID = 'component-deprecation';
-const MAP_SCHEMA = {
- type: 'object',
- additionalProperties: true
-};
-
-module.exports = {
- meta: {
- docs: {
- description: 'component is deprecated',
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: 'This component is deprecated.'
- },
- fixable: 'code',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- function reportDeprecatedComponent(node, data) {
- try {
- const {dueDate} = context.options[0];
- const dueDateNotice = dueDate ? ` Please fix this issue by ${dueDate}!` : '';
- const msg = `The '${data.component}' component is deprecated. ${data.message}${dueDateNotice}`;
- context.report({
- node,
- message: `${msg}`,
- fix(fixer) {
- if (data.fix && data.fixNode) {
- return fixer.replaceText(data.fixNode, data.fix.componentName);
- }
- }
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- const {deprecations} = context.options[0];
- const organizedDeprecations = organizeDeprecations(deprecations);
-
- const imports = [];
- const parents = [];
-
- function getParent(localName) {
- const foundParents = parents.filter(parent => Object.keys(parent)[0] === localName);
- return !_.isEmpty(foundParents) ? foundParents[0][localName] : undefined;
- }
-
- function isParent(foundDeprecation, localName) {
- if (foundDeprecation.parent) {
- const parent = getParent(localName);
- if (foundDeprecation.parent === parent) {
- return true;
- }
- }
-
- return false;
- }
-
- function importDeprecationCheck(node) {
- const previousImports = _.cloneDeep(imports);
- addToImports(node, imports, parents);
- const addedImports = _.differenceWith(imports, previousImports, _.isEqual);
- addedImports.forEach(currentImport => {
- const source = Object.keys(currentImport)[0];
- const deprecationSource = organizedDeprecations[source];
- if (deprecationSource) {
- // There are deprecations from this source
- const components = currentImport[source];
- const foundDeprecations = deprecationSource.filter(currentDeprecationSource =>
- Object.values(components).includes(currentDeprecationSource.component)
- );
-
- if (foundDeprecations.length > 0) {
- foundDeprecations.forEach(foundDeprecation => {
- const localName = Object.keys(components).find(key => components[key] === foundDeprecation.component);
- if (isParent(foundDeprecation, localName)) {
- return;
- }
-
- let fixNode;
- if (node.type === 'ImportDeclaration') {
- const foundSpecifiers = node.specifiers.filter(
- specifier => _.get(specifier, 'imported.name') === foundDeprecation.component
- );
-
- if (foundSpecifiers.length > 0) {
- fixNode = foundSpecifiers[0].imported;
- }
- } else if (node.type === 'VariableDeclarator') {
- const properties = _.get(node, 'id.properties');
- if (properties) {
- fixNode = properties.filter(property => _.get(property, 'key.name') === foundDeprecation.component)[0]
- .key;
- }
- }
-
- reportDeprecatedComponent(node, {...foundDeprecation, fixNode});
- });
- }
- }
- });
- }
-
- function usageDeprecationCheck(node) {
- imports.forEach(currentImport => {
- const source = Object.keys(currentImport)[0];
- const componentLocalName = getComponentLocalName(node);
- if (componentLocalName) {
- const deprecationSource = organizedDeprecations[source];
- if (deprecationSource) {
- // There are deprecations from this source
- const foundDeprecations = getPossibleDeprecations(
- componentLocalName,
- imports,
- currentImport,
- deprecationSource
- );
-
- if (foundDeprecations.length > 0) {
- const foundDeprecation = foundDeprecations[0];
- if (isParent(foundDeprecation, componentLocalName)) {
- return;
- }
-
- // This is a little hacky, is there a better way?
- if (componentLocalName.includes(foundDeprecation.component)) {
- let fixNode;
- const dotCount = (componentLocalName.match(/\./g) || []).length;
- if (dotCount <= 1) {
- fixNode =
- componentLocalName === foundDeprecation.component
- ? _.get(node, 'name')
- : _.get(node, 'name.property');
- }
-
- reportDeprecatedComponent(node, {...foundDeprecation, fixNode});
- }
- }
- }
- }
- });
- }
-
- return {
- ImportDeclaration: node => importDeprecationCheck(node),
- VariableDeclarator: node => importDeprecationCheck(node),
- JSXOpeningElement: node => usageDeprecationCheck(node)
- };
- }
-};
-
-// Testing support for List.Part deprecations (module.List.Part)
-// let fixNode = _.get(node, 'name');
-// if (componentLocalName !== foundDeprecation.component) {
-// const objectCount = (componentLocalName.replace(`${foundDeprecation.component}`, '').match(/\./g) || []).length;
-// const objects = '.object'.repeat(objectCount);
-// fixNode = _.get(node, `name${objects}.property`);
-// }
diff --git a/eslint-rules/lib/rules/component-prop-deprecation.js b/eslint-rules/lib/rules/component-prop-deprecation.js
deleted file mode 100644
index 7cf4f75efe..0000000000
--- a/eslint-rules/lib/rules/component-prop-deprecation.js
+++ /dev/null
@@ -1,196 +0,0 @@
-// @ts-ignore
-const _ = require('lodash');
-const {
- organizeDeprecations,
- addToImports,
- getComponentLocalName,
- getComponentName,
- getPossibleDeprecations,
- findValueNodeOfIdentifier,
- handleError
-} = require('../utils');
-
-const RULE_ID = 'component-prop-deprecation';
-const MAP_SCHEMA = {
- type: 'object',
- properties: {
- component: {
- type: 'string'
- },
- source: {
- type: 'string'
- },
- props: {
- type: 'array',
- items: {
- type: 'object',
- required: ['prop', 'message'],
- properties: {
- prop: {
- type: 'string'
- },
- message: {
- type: 'string'
- },
- isRequired: {
- type: 'boolean'
- },
- fix: {
- type: 'object',
- required: ['propName'],
- properties: {
- propName: {
- type: 'string'
- }
- }
- }
- }
- }
- }
- },
- additionalProperties: true
-};
-
-module.exports = {
- meta: {
- docs: {
- description: "Some of the component's props are deprecated",
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: 'This component contains deprecated props.'
- },
- fixable: 'code',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- function reportDeprecatedProps(data) {
- try {
- const {dueDate} = context.options[0];
- const dueDateNotice = dueDate ? ` Please fix this issue by ${dueDate}!` : '';
- const message = `The '${data.name}' component's prop '${data.prop}' is deprecated. ${data.message}${dueDateNotice}`;
-
- context.report({
- node: data.node,
- message,
- fix(fixer) {
- if (data.fix) {
- return fixer.replaceText(data.fixNode, data.fix.propName);
- }
- }
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- function reportRequiredProps({node, name, prop, message: customMessage}) {
- try {
- const message = `The '${name}' component's prop '${prop}' is required. ${customMessage}`;
- context.report({
- node: node,
- message
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- const {deprecations} = context.options[0];
- const organizedDeprecations = organizeDeprecations(deprecations);
-
- const imports = [];
-
- function checkPropDeprecation(node, fixNode, propName, deprecatedPropList, componentName) {
- const deprecatedProp = _.find(deprecatedPropList, {prop: propName});
- if (deprecatedProp && !deprecatedProp.isRequired) {
- const {prop, message, fix} = deprecatedProp;
- reportDeprecatedProps({node, name: componentName, prop, message, fixNode, fix});
- }
-
- return !!deprecatedProp;
- }
-
- function testAttributeForDeprecation(attribute, deprecatedPropList, componentName) {
- let wasFound = false;
- if (attribute.type === 'JSXAttribute') {
- wasFound = checkPropDeprecation(
- attribute,
- attribute.name,
- attribute.name.name,
- deprecatedPropList,
- componentName
- );
- } else if (attribute.type === 'JSXSpreadAttribute') {
- const identifierName =
- _.get(attribute, 'argument.name') ||
- _.get(attribute, 'argument.callee.name') ||
- _.get(attribute, 'argument.property.name');
- const spreadSource = findValueNodeOfIdentifier(identifierName, context.getScope());
- if (spreadSource) {
- const properties = _.get(spreadSource, 'properties') || _.get(spreadSource, 'body.properties');
- if (properties) {
- _.forEach(properties, property => {
- const key = _.get(property, 'key');
- const propName = _.get(property, 'key.name');
- wasFound = checkPropDeprecation(key, key, propName, deprecatedPropList, componentName);
- });
- }
- }
- }
- return wasFound;
- }
-
- function deprecationCheck(node) {
- imports.forEach(currentImport => {
- const source = Object.keys(currentImport)[0];
- const componentLocalName = getComponentLocalName(node);
- if (componentLocalName) {
- const deprecationSource = organizedDeprecations[source];
- if (deprecationSource) {
- // There are deprecations from this source
- const componentName = getComponentName(componentLocalName, imports);
- const foundPossibleDeprecations = getPossibleDeprecations(
- componentLocalName,
- imports,
- currentImport,
- deprecationSource
- );
-
- foundPossibleDeprecations.forEach(foundPossibleDeprecation => {
- const deprecatedPropList = [...foundPossibleDeprecation.props];
- const requiredPropList = _.remove(deprecatedPropList, p => !!p.isRequired);
- const attributes = node.attributes;
-
- /* handle deprecated props */
- if (!_.isEmpty(deprecatedPropList)) {
- attributes.forEach(attribute => {
- testAttributeForDeprecation(attribute, deprecatedPropList, componentName);
- });
- }
-
- /* handle required props */
- let foundAttribute = false;
- attributes.forEach(attribute => {
- foundAttribute =
- foundAttribute || testAttributeForDeprecation(attribute, requiredPropList, componentName);
- });
-
- if (!foundAttribute && requiredPropList[0]) {
- const prop = requiredPropList[0];
- reportRequiredProps({node, name: componentName, prop: prop.prop, message: prop.message});
- }
- });
- }
- }
- });
- }
-
- return {
- ImportDeclaration: node => addToImports(node, imports),
- VariableDeclarator: node => addToImports(node, imports),
- JSXOpeningElement: node => deprecationCheck(node)
- };
- }
-};
diff --git a/eslint-rules/lib/rules/function-deprecation.js b/eslint-rules/lib/rules/function-deprecation.js
deleted file mode 100644
index af5b85f680..0000000000
--- a/eslint-rules/lib/rules/function-deprecation.js
+++ /dev/null
@@ -1,265 +0,0 @@
-const _ = require("lodash");
-const {addToImports, handleError} = require('../utils');
-
-const RULE_ID = 'function-deprecation';
-const MAP_SCHEMA = {
- type: "object",
- additionalProperties: true,
-};
-
-const FIX_TYPES = {
- PROP_NAME: "propName",
- FUNCTION_NAME: "functionName",
-};
-
-module.exports = {
- meta: {
- docs: {
- description: "function or some of the props sent to it are deprecated",
- category: "Best Practices",
- recommended: true,
- },
- messages: {
- uiLib: "This function is deprecated or contains deprecated props.",
- },
- fixable: "code",
- schema: [MAP_SCHEMA],
- },
- create(context) {
- function getSpecifierIndex(node, name) {
- let matchIndex;
- if (node && node.specifiers) {
- _.forEach(node.specifiers, (s, index) => {
- const x = _.get(s, 'imported.name');
- if (x === name) {
- matchIndex = index;
- }
- });
- }
- return matchIndex;
- }
-
- function reportDeprecatedFunction(node, options) {
- try {
- const { dueDate } = context.options[0];
- const dueDateNotice = dueDate
- ? ` Please fix this issue by ${dueDate}!`
- : "";
- const msg =
- options.prop === undefined
- ? `The '${options.name}' function is deprecated. ${options.message}${dueDateNotice}`
- : `The '${options.name}' function's prop '${options.prop}' is deprecated. ${options.message}${dueDateNotice}`;
-
- context.report({
- node,
- message: `${msg}`,
- fix(fixer) {
- if (options.fix) {
- const type = Object.keys(options.fix)[0];
- const fix = Object.values(options.fix)[0];
- let fixed;
- // console.warn('fix');
- switch (type) {
- case FIX_TYPES.PROP_NAME:
- // Fix for prop name change only (when prop's value and type does not change)
- // console.warn('fix prop');
- // console.warn('from', node.arguments[options.argumentIndex]);
- const prop = _.find(node.arguments[options.argumentIndex].properties, prop => prop.key.name === options.prop);
- const propIndex = node.arguments[options.argumentIndex].properties.indexOf(prop);
- fixed = fixer.replaceText(node.arguments[options.argumentIndex].properties[propIndex], fix)
- // console.warn('to', fixed);
- return fixed;
- case FIX_TYPES.FUNCTION_NAME:
- if (node.type === "ImportDeclaration") {
- // console.warn('fix function import');
- const index = getSpecifierIndex(node, options.name);
- // console.warn('from', node.specifiers[index]);
- fixed = fixer.replaceText(node.specifiers[index], fix);
- // console.warn('to', fixed);
- return fixed;
- }
-
- // console.warn('fix function not import');
- // console.warn('from', node.callee.name);
- fixed = fixer.replaceText(node.callee, fix)
- // console.warn('to', fixed);
- return fixed;
- default:
- break;
- }
- }
- },
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- const { deprecations, source } = context.options[0];
- const relevantDeprecationsData = [];
- let everythingIsImported = false;
- const imports = [];
-
- function getDeprecation(value) {
- if (value && value.name) {
- const name = value.name;
- return _.find(
- deprecations,
- (deprecation) => deprecation.function === name
- );
- }
- }
-
- function searchForPossibleDeprecation(node) {
- addToImports(node, imports)
- const importSource = node.source.value;
- if (source === importSource) {
- const specifiers = node.specifiers;
- if (specifiers) {
- _.map(specifiers, (specifier) => {
- const deprecation = getDeprecation(specifier.imported);
- if (deprecation) {
- let type = FIX_TYPES.PROP_NAME;
- if (!deprecation.arguments) {
- type = FIX_TYPES.FUNCTION_NAME;
- reportDeprecatedFunction(node, {
- name: deprecation.function,
- message: deprecation.message,
- fix: deprecation.fix,
- });
- }
-
- relevantDeprecationsData.push({
- localFunctionName: specifier.local.name,
- type,
- deprecation,
- });
- }
- });
- }
-
- if (relevantDeprecationsData.length === 0) { // someone is importing everything (*)
- everythingIsImported = true;
- _.map(deprecations, deprecation => {
- relevantDeprecationsData.push({
- localFunctionName: deprecation.function,
- type: deprecation.arguments ? FIX_TYPES.PROP_NAME : FIX_TYPES.FUNCTION_NAME,
- deprecation,
- });
- });
- }
- }
- }
-
- function findRelevantDeprecation(functionName) {
- return _.find(
- relevantDeprecationsData,
- (relevantDeprecationData) =>
- relevantDeprecationData.localFunctionName === functionName
- );
- }
-
- function getArgumentsSent(node) {
- const argumentsSent = [];
- _.map(node.arguments, argument => {
- const propsSentToArgument = [];
- if (argument.properties) {
- _.map(argument.properties, prop => {
- if (prop.key && prop.key.name) {
- propsSentToArgument.push(prop.key.name);
- }
- });
- }
-
- argumentsSent.push(propsSentToArgument);
- });
-
- return argumentsSent;
- }
-
- function getFunctionName(node) {
- const propName = everythingIsImported ? 'callee.property.name' : 'callee.name';
- return _.get(node, propName);
- }
-
- function testCallExpression(node) {
- const functionName = getFunctionName(node);
- if (functionName) {
- const relevantDeprecation = findRelevantDeprecation(functionName);
- if (relevantDeprecation) {
- if (relevantDeprecation.type === FIX_TYPES.PROP_NAME) {
- const argumentsSent = getArgumentsSent(node);
- _.map(relevantDeprecation.deprecation.arguments, (argument, index) => {
- if (argument.props && argument.props.length > 0 && argumentsSent.length >= index) {
- const deprecationProps = argument.props;
- const sentProps = argumentsSent[index];
- _.map(sentProps, sentProp => {
- const deprecationProp = _.find(deprecationProps, deprecationProp => deprecationProp.prop === sentProp);
- if (deprecationProp) {
- reportDeprecatedFunction(node, {
- name: functionName,
- message: deprecationProp.message,
- argumentIndex: index,
- prop: deprecationProp.prop,
- fix: deprecationProp.fix,
- });
- }
- });
- }
- });
- } else {
- const calleeType = _.get(node, 'callee.type');
- const caller = _.get(node, 'callee.object.name');
- if (calleeType === 'Identifier') {
- reportDeprecatedFunction(node, {
- name: relevantDeprecation.deprecation.function,
- message: relevantDeprecation.deprecation.message,
- fix: relevantDeprecation.deprecation.fix,
- });
- } else if (calleeType === 'MemberExpression' && caller) {
- imports.forEach(currentImport => {
- if (
- Object.values(currentImport)[0][caller] &&
- Object.keys(currentImport)[0] === relevantDeprecation.deprecation.source
- ) {
- reportDeprecatedFunction(node, {
- name: relevantDeprecation.deprecation.function,
- message: relevantDeprecation.deprecation.message,
- fix: relevantDeprecation.deprecation.fix,
- });
- }
- });
- }
- }
- }
- }
- }
-
- // Test for forbidden inherited functions (no source)
- function testClassBody(node) {
- if (node && node.body) {
- _.forEach(node.body, item => {
- const type = _.get(item, 'type');
- if (type === 'ClassProperty' || type === 'MethodDefinition') {
- const deprecation = _.find(deprecations,
- (deprecation) => !deprecation.source && deprecation.function === _.get(item, 'key.name')
- )
-
- if (deprecation) {
- reportDeprecatedFunction(node, {
- name: deprecation.function,
- message: deprecation.message
- });
- }
- }
- });
- }
- }
-
- return {
- ImportDeclaration: (node) => searchForPossibleDeprecation(node),
- CallExpression: (node) => relevantDeprecationsData.length > 0 && testCallExpression(node),
- ClassBody: (node) => testClassBody(node),
- };
- },
-};
diff --git a/eslint-rules/lib/rules/no-direct-import.js b/eslint-rules/lib/rules/no-direct-import.js
deleted file mode 100644
index d666c5db07..0000000000
--- a/eslint-rules/lib/rules/no-direct-import.js
+++ /dev/null
@@ -1,92 +0,0 @@
-const {handleError} = require('../utils');
-
-const RULE_ID = 'no-direct-import';
-const MAP_SCHEMA = {
- type: 'object',
- properties: {
- origin: {
- type: 'string'
- },
- destination: {
- type: 'string'
- },
- applyAutofix: {
- type: 'boolean'
- },
- rules: {
- type: 'array',
- items: [
- {
- type: 'object',
- properties: {
- origin: {
- type: 'string'
- },
- destination: {
- type: 'string'
- },
- applyAutofix: {
- type: 'boolean'
- }
- }
- }
- ]
- }
- },
- additionalProperties: true
-};
-
-module.exports = {
- meta: {
- docs: {
- description: 'Do not import directly from open source project',
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: 'Do not import directly from this source. Please use another import source (autofix may be available).'
- },
- fixable: 'code',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- function reportDirectImport(node, rule) {
- try {
- const origin = rule.origin;
- const destination = rule.destination;
- const applyAutofix = rule.applyAutofix;
- const autofixMessage = applyAutofix ? ' (autofix available)' : '';
- const message = `Do not import directly from '${origin}'. Please use '${destination}'${autofixMessage}.`;
- context.report({
- node,
- message,
- fix(fixer) {
- if (node && applyAutofix && destination) {
- return fixer.replaceText(node.source, `'${destination}'`);
- }
- }
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- function getRules() {
- // To support both structures; single rule or array of rules
- return context.options[0].rules || [context.options[0]];
- }
-
- function checkImportDeclaration(node) {
- const source = node.source.value;
- const rule = getRules().find((rule) => rule.origin === source);
-
- if (rule) {
- reportDirectImport(node, rule);
- }
- }
-
- return {
- ImportDeclaration: checkImportDeclaration
- };
- }
-};
diff --git a/eslint-rules/lib/rules/no-hard-coded-color.js b/eslint-rules/lib/rules/no-hard-coded-color.js
deleted file mode 100644
index 9464d2a9b3..0000000000
--- a/eslint-rules/lib/rules/no-hard-coded-color.js
+++ /dev/null
@@ -1,107 +0,0 @@
-const _ = require('lodash');
-const {findAndReportHardCodedValues, handleError} = require('../utils');
-
-const RULE_ID = 'no-hard-coded-color';
-const MAP_SCHEMA = {
- type: 'object',
- additionalProperties: true
-};
-
-module.exports = {
- meta: {
- docs: {
- description: 'disallow hard coded colors',
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: 'Use UILib colors instead of hardcoded colors.'
- },
- fixable: 'whitespace',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- function reportAndFixHardCodedColorString(node) {
- try {
- const colorString = _.get(node, 'extra.rawValue') || _.get(node, 'value');
- const dueDate = _.get(context, 'options[0].dueDate');
- const dueDateNotice = dueDate ? ` Please fix this issue by ${dueDate}!` : '';
- if (!isColorException(colorString)) {
- context.report({
- node,
- message: `Found '${colorString}'. Use UILib colors instead of hardcoded colors.${dueDateNotice}`,
- fix(fixer) {
- if (node) {
- const validColors = context.options[0] && context.options[0].validColors;
- const extraColors = context.options[0] && context.options[0].customColors;
- if (validColors) {
- const validColorsDic = _.chain(validColors)
- .mapValues(value => value.toLowerCase())
- .invert()
- .value();
- const invertedColorsDict = _.assign({}, validColorsDic, extraColors);
- const lowerCaseColorString = (colorString ? colorString.toLowerCase() : '').replace(/ /g, '');
- if (invertedColorsDict[lowerCaseColorString]) {
- return fixer.replaceText(node, `Colors.${invertedColorsDict[lowerCaseColorString]}`);
- }
- }
- }
- }
- });
- }
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- const colorProps = [
- 'color',
- 'backgroundColor',
- 'borderColor',
- 'borderRightColor',
- 'borderBottomColor',
- 'borderEndColor',
- 'borderLeftColor',
- 'borderStartColor',
- 'borderTopColor',
- 'textShadowColor',
- 'textDecorationColor',
- 'tintColor',
- 'placeholderTextColor',
- 'selectionColor',
- 'underlineColorAndroid'
- ];
-
- function propIsColor(propName) {
- return colorProps.indexOf(propName) !== -1;
- }
-
- const colorExceptions = ['transparent'];
-
- function isColorException(colorString = '') {
- if (colorString === null) {
- return true;
- }
-
- const lowerCaseColorString = colorString.toLowerCase();
- return colorExceptions.indexOf(lowerCaseColorString) !== -1;
- }
-
- function noHardCodedColors(node) {
- node.properties.forEach(property => {
- if (property.key) {
- const propName = property.key.name;
- if (propIsColor(propName)) {
- findAndReportHardCodedValues(property.value, reportAndFixHardCodedColorString, context);
- }
- }
- });
- }
-
- return {
- 'CallExpression[callee.object.name=StyleSheet][callee.property.name=create] ObjectExpression': node =>
- noHardCodedColors(node),
- 'JSXAttribute[name.name = style] ObjectExpression': node => noHardCodedColors(node)
- };
- }
-};
diff --git a/eslint-rules/lib/rules/no-hard-coded-font.js b/eslint-rules/lib/rules/no-hard-coded-font.js
deleted file mode 100644
index adca28dad6..0000000000
--- a/eslint-rules/lib/rules/no-hard-coded-font.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const {findAndReportHardCodedValues} = require('../utils');
-
-module.exports = {
- meta: {
- docs: {
- description: 'disallow hard coded font style',
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- avoidName: 'Please do not use hard coded font style objects.'
- },
- fixable: 'code',
- schema: [] // no options
- },
- create(context) {
- function reportAndFixHardCodedFont(node) {
- if (node.value) {
- context.report({
- node,
- message: `Found value '${node.value}' in font style prop. Use UILib typography instead of hardcoded font styles.`
- });
- }
- }
-
- const fontProps = ['fontSize', 'fontWeight', 'lineHeight', 'fontFamily'];
-
- function isPropFont(propName) {
- return fontProps.indexOf(propName) !== -1;
- }
-
- function noHardCodedFont(node) {
- node.properties.forEach(property => {
- if (property.key) {
- const propName = property.key.name;
- if (isPropFont(propName)) {
- findAndReportHardCodedValues(property.value, reportAndFixHardCodedFont, context);
- }
- }
- });
- }
-
- return {
- 'CallExpression[callee.object.name=StyleSheet][callee.property.name=create] ObjectExpression': node =>
- noHardCodedFont(node),
- 'JSXAttribute[name.name = style] ObjectExpression': node => noHardCodedFont(node)
- };
- }
-};
diff --git a/eslint-rules/lib/rules/prop-value-shape-deprecation.js b/eslint-rules/lib/rules/prop-value-shape-deprecation.js
deleted file mode 100644
index 885f676b5c..0000000000
--- a/eslint-rules/lib/rules/prop-value-shape-deprecation.js
+++ /dev/null
@@ -1,165 +0,0 @@
-const _ = require('lodash');
-const {
- getPrefix,
- getSuffix,
- findValueNodeOfIdentifier,
- getComponentLocalName,
- addToImports,
- getComponentName,
- handleError
-} = require('../utils');
-
-const RULE_ID = 'prop-value-shape-deprecation';
-const MAP_SCHEMA = {
- type: 'object',
- properties: {
- components: {
- type: 'array',
- items: {
- type: 'string'
- }
- },
- propNames: {
- type: 'array',
- items: {
- type: 'string'
- }
- },
- shape: {
- type: 'array',
- items: {
- type: 'object',
- required: ['prop', 'message', 'fix'],
- properties: {
- prop: {
- type: 'string'
- },
- message: {
- type: 'string'
- },
- fix: {
- type: 'object'
- }
- }
- }
- }
- }
-};
-
-module.exports = {
- meta: {
- docs: {
- description: "Detect deprecation of prop's value shape",
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: "This prop's value shape is deprecated."
- },
- fixable: 'code',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- function reportPropValueShapeDeprecation(propKey, prop, deprecation, node) {
- const componentName = getComponentName(getComponentLocalName(node), imports);
- const newProp = _.get(deprecation, 'fix.propName');
- const fixMessage = _.get(deprecation, 'message') ? ' ' + _.get(deprecation, 'message') : '';
- const message = `The shape of '${prop}' prop of '${componentName}' doesn't contain '${deprecation.prop}' anymore.${fixMessage}`;
- context.report({
- node,
- message,
- fix(fixer) {
- if (newProp && propKey) {
- return fixer.replaceText(propKey, newProp);
- }
- }
- });
- }
-
- const imports = [];
-
- function testJSXAttributes(node) {
- try {
- const {deprecations} = _.get(context, 'options[0]');
- const componentName = getComponentName(getComponentLocalName(node), imports);
- _.forEach(deprecations, deprecation => {
- if (_.includes(deprecation.components, componentName)) {
- _.forEach(node.attributes, attribute => {
- _.forEach(deprecation.propNames, deprecationProp => {
- recursiveDeprecation(attribute, deprecationProp, deprecation, deprecationProp, node);
- });
- });
- }
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- function recursiveDeprecation(attribute, deprecationProp, deprecation, deprecationPath, node) {
- const deprecationPrefix = getPrefix(deprecationProp);
- const deprecationSuffix = getSuffix(deprecationProp);
- let passedProps;
- let attributeName = _.get(attribute, 'name.name') || _.get(attribute, 'key.name');
- if (attribute.type === 'JSXSpreadAttribute' || attribute.type === 'ExperimentalSpreadProperty') {
- const spreadSource = findValueNodeOfIdentifier(attribute.argument.name, context.getScope());
- const spreadSourceName = _.get(spreadSource, 'properties[0].key.name');
- if (deprecationPrefix === spreadSourceName) {
- checkAttributeProperties(spreadSource.properties[0].value.properties, deprecationPath, deprecation, node);
- }
- } else if (!deprecationSuffix && deprecationPrefix === attributeName) {
- const attributeType = _.get(attribute, 'value.expression.type') || _.get(attribute, 'type');
- if (attributeType === 'Identifier') {
- const passedPropsName = _.get(attribute, 'value.expression.name');
- passedProps = findValueNodeOfIdentifier(passedPropsName, context.getScope());
- }
- let attributeProperties = passedProps
- ? _.get(passedProps, 'properties')
- : attributeType === 'Property'
- ? _.get(attribute, 'value.properties')
- : _.get(attribute, 'value.expression.properties');
- if (attributeType === 'Property' && !attributeProperties) {
- const passedPropsName = _.get(attribute, 'value.name');
- passedProps = findValueNodeOfIdentifier(passedPropsName, context.getScope());
- attributeProperties = passedProps.properties;
- }
- checkAttributeProperties(attributeProperties, deprecationPath, deprecation, node);
- } else if (deprecationSuffix) {
- const attributeType = _.get(attribute, 'value.expression.type');
- if (attributeType === 'Identifier') {
- const passedPropsName = _.get(attribute, 'value.expression.name');
- passedProps = findValueNodeOfIdentifier(passedPropsName, context.getScope());
- }
- const attributeProperties = passedProps
- ? _.get(passedProps, 'properties')
- : _.get(attribute, 'value.expression.properties') ||
- _.get(attribute, 'value.properties') ||
- _.get(attribute, 'value.expression.elements[0].properties');
- _.forEach(attributeProperties, attributeProperty => {
- recursiveDeprecation(attributeProperty, deprecationSuffix, deprecation, deprecationPath, node);
- });
- }
- }
-
- function checkAttributeProperties(attributeProperties = [], attributeName, deprecation, node) {
- for (let i = 0; i < attributeProperties.length; i++) {
- const propertyType = _.get(attributeProperties[i], 'type');
- if (propertyType === 'ExperimentalSpreadProperty') {
- const spreadProps = findValueNodeOfIdentifier(attributeProperties[i].argument.name, context.getScope());
- checkAttributeProperties(spreadProps.properties, attributeName, deprecation, node);
- }
- const propertyName = _.get(attributeProperties[i], 'key.name');
- const origin = propertyName && _.find(deprecation.shape, ['prop', propertyName]);
- if (origin && origin.prop && propertyName === origin.prop) {
- reportPropValueShapeDeprecation(attributeProperties[i].key, attributeName, origin, node);
- }
- }
- }
-
- return {
- ImportDeclaration: node => addToImports(node, imports),
- VariableDeclarator: node => addToImports(node, imports),
- JSXOpeningElement: testJSXAttributes
- };
- }
-};
diff --git a/eslint-rules/lib/rules/typography-deprecation.js b/eslint-rules/lib/rules/typography-deprecation.js
deleted file mode 100644
index 9afcfb97ab..0000000000
--- a/eslint-rules/lib/rules/typography-deprecation.js
+++ /dev/null
@@ -1,112 +0,0 @@
-const _ = require('lodash');
-const {
- organizeDeprecations,
- getLocalizedFix,
- addToImports,
- getComponentLocalName,
- getComponentName,
- handleError
-} = require('../utils');
-
-const RULE_ID = 'typography-deprecation';
-const MAP_SCHEMA = {
- type: 'object',
- additionalProperties: true
-};
-
-module.exports = {
- meta: {
- docs: {
- description: 'typography is deprecated',
- category: 'Best Practices',
- recommended: true
- },
- messages: {
- uiLib: 'This typography is deprecated.'
- },
- fixable: 'code',
- schema: [MAP_SCHEMA]
- },
- create(context) {
- const defaultImportName = 'Typography';
-
- function reportDeprecatedTypography(node, options, useShortVersion) {
- try {
- const {dueDate} = context.options[0];
- const dueDateNotice = dueDate ? ` Please fix this issue by ${dueDate}!` : '';
- const msg = `'${options.path}' is deprecated. ${options.message}${dueDateNotice}`;
- context.report({
- node,
- message: `${msg}`,
- fix(fixer) {
- if (options.fix) {
- const fix = useShortVersion ? options.fix.substr(`${defaultImportName}.`.length) : options.fix;
- return fixer.replaceText(node, fix);
- }
- }
- });
- } catch (err) {
- handleError(RULE_ID, err, context.getFilename());
- }
- }
-
- const {deprecations, source} = context.options[0];
- const organizedDeprecations = organizeDeprecations(deprecations, source);
-
- const imports = [];
-
- function isComponentRelevant(node, components) {
- let isComponentRelevant = true;
- if (!_.isEmpty(components)) {
- if (_.get(node, 'parent.type') === 'JSXOpeningElement') {
- return components.includes(_.get(node, 'parent.name.name'));
- }
- }
-
- return isComponentRelevant;
- }
-
- function findAndReportDeprecation(node, useDefaultImport, useShortVersion) {
- imports.forEach(currentImport => {
- const source = Object.keys(currentImport)[0];
- const prefix = useDefaultImport ? `${defaultImportName}.` : '';
- const componentLocalName = `${prefix}${getComponentLocalName(node)}`;
- if (componentLocalName) {
- const deprecationSource = organizedDeprecations[source];
- if (deprecationSource) {
- // There are deprecations from this source
- const componentName = getComponentName(componentLocalName, imports) || componentLocalName; // this (|| componentLocalName) is only needed in JSXAttribute but seem to cause no harm in MemberExpression
- const foundDeprecations = deprecationSource.filter(
- currentDeprecationSource => currentDeprecationSource.path === componentName
- );
-
- if (foundDeprecations.length > 0) {
- const foundDeprecation = foundDeprecations[0];
- if (isComponentRelevant(node, foundDeprecation.components)) {
- const fix = useDefaultImport
- ? foundDeprecation.fix
- : getLocalizedFix(foundDeprecation.fix, currentImport);
- reportDeprecatedTypography(node, {...foundDeprecation, fix}, useShortVersion);
- }
- }
- }
- }
- });
- }
-
- function testMemberDeprecation(node) {
- findAndReportDeprecation(node, false, false);
- }
-
- function testJSXAttribute(node) {
- findAndReportDeprecation(node, true, true);
- }
-
- return {
- ImportDeclaration: node => addToImports(node, imports),
- VariableDeclarator: node => addToImports(node, imports),
- MemberExpression: node => testMemberDeprecation(node),
- JSXAttribute: node => testJSXAttribute(node)
- };
- }
-};
diff --git a/eslint-rules/lib/utils/componentUtils.js b/eslint-rules/lib/utils/componentUtils.js
deleted file mode 100644
index 83a724c96d..0000000000
--- a/eslint-rules/lib/utils/componentUtils.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const {getPrefix} = require('./generalUtils');
-
-function getComponentLocalName(node) {
- if (!node) return;
- const name = node.name || node;
- if (typeof name === 'string') return name;
- if (!name.object) return name.name; //
- const start = getComponentLocalName(name.object);
- const end = name.property.name || node.property.value;
- return `${start}.${end}`; // OR etc.
-}
-
-function isNamespace(currentImport, componentLocalName) {
- const components = Object.values(currentImport)[0];
- const prefix = getPrefix(componentLocalName);
- if (prefix && components[prefix]) {
- return components[prefix].isNamespace;
- }
-
- return false;
-}
-
-function getComponentName(componentLocalName, imports) {
- for (let index = 0; index < imports.length; ++index) {
- const currentImport = imports[index];
- const components = Object.values(currentImport)[0];
- if (components[componentLocalName]) {
- return components[componentLocalName];
- } else if (componentLocalName.indexOf('.') > 0) {
- const prefix = getPrefix(componentLocalName);
- if (components[prefix]) {
- if (components[prefix].isNamespace) {
- const indexOfDot = componentLocalName.indexOf('.');
- return componentLocalName.slice(indexOfDot + 1);
- } else {
- return componentLocalName.replace(prefix, components[prefix]);
- }
- }
- }
- }
-}
-
-module.exports = {
- // The local name of the component (List as L --> L)
- getComponentLocalName,
- // Get the real name of the component
- getComponentName,
- // Is the localName comes from a namespace (module.Component)
- isNamespace
-};
diff --git a/eslint-rules/lib/utils/debugUtils.js b/eslint-rules/lib/utils/debugUtils.js
deleted file mode 100644
index e323f896ed..0000000000
--- a/eslint-rules/lib/utils/debugUtils.js
+++ /dev/null
@@ -1,30 +0,0 @@
-// stringify with no circular error
-function stringify(object) {
- if (object && typeof object === 'object') {
- object = _copyWithoutCircularReferences([object], object);
- }
- return JSON.stringify(object);
-
- function _copyWithoutCircularReferences(references, object) {
- const cleanObject = {};
- Object.keys(object).forEach(key => {
- const value = object[key];
- if (value && typeof value === 'object') { // TODO: do we need the 'value &&'?
- if (references.indexOf(value) < 0) {
- references.push(value);
- cleanObject[key] = _copyWithoutCircularReferences(references, value);
- references.pop();
- } else {
- cleanObject[key] = '###_Circular_###';
- }
- } else if (typeof value !== 'function') {
- cleanObject[key] = value;
- }
- });
- return cleanObject;
- }
-}
-
-module.exports = {
- stringify
-};
diff --git a/eslint-rules/lib/utils/deprecationsUtils.js b/eslint-rules/lib/utils/deprecationsUtils.js
deleted file mode 100644
index 8bfc53b72e..0000000000
--- a/eslint-rules/lib/utils/deprecationsUtils.js
+++ /dev/null
@@ -1,67 +0,0 @@
-const {getPrefix} = require('./generalUtils');
-const {getComponentName, isNamespace} = require('./componentUtils');
-
-function _organizeDeprecationsBySource(deprecations, defaultSource) {
- const obj = {};
- deprecations.forEach(deprecation => {
- const {source = defaultSource, ...others} = deprecation;
- if (!(source in obj)) {
- obj[source] = [others];
- } else {
- obj[source].push(others);
- }
- });
-
- return obj;
-}
-
-function organizeDeprecations(deprecations, defaultSource) {
- if (!deprecations) {
- return {};
- }
-
- return _organizeDeprecationsBySource(deprecations, defaultSource);
-}
-
-function getLocalizedFix(fix, currentImport) {
- if (!fix) {
- return;
- }
-
- let localizedFix = fix;
- const indexOfDot = fix.indexOf('.');
- if (indexOfDot > 0) {
- const components = currentImport[Object.keys(currentImport)[0]];
- const prefix = fix.slice(0, indexOfDot);
- if (!components[prefix]) {
- const newPrefix = Object.keys(components).find(key => components[key] === prefix);
- if (newPrefix) {
- const suffix = fix.slice(indexOfDot + 1);
- localizedFix = `${newPrefix}.${suffix}`;
- }
- }
- }
-
- return localizedFix;
-}
-
-function getPossibleDeprecations(componentLocalName, imports, currentImport, deprecationSource) {
- const source = Object.keys(currentImport)[0];
- const components = currentImport[source];
- const componentName = getComponentName(componentLocalName, imports);
- const prefix = getPrefix(componentLocalName);
- return deprecationSource.filter(currentDeprecationSource => {
- return (
- (isNamespace(currentImport, componentLocalName) ||
- components[componentLocalName] ||
- (prefix && components[prefix])) &&
- currentDeprecationSource.component === componentName
- );
- });
-}
-
-module.exports = {
- organizeDeprecations,
- getLocalizedFix,
- getPossibleDeprecations
-};
diff --git a/eslint-rules/lib/utils/generalUtils.js b/eslint-rules/lib/utils/generalUtils.js
deleted file mode 100644
index 18797d2e51..0000000000
--- a/eslint-rules/lib/utils/generalUtils.js
+++ /dev/null
@@ -1,51 +0,0 @@
-const _ = require('lodash');
-
-function getPrefix(str) {
- const indexOfDot = str.indexOf('.');
- return indexOfDot === -1 ? str : str.substring(0, indexOfDot);
-}
-
-function getSuffix(str) {
- const indexOfDot = str.indexOf('.');
- return indexOfDot === -1 ? undefined : str.substring(indexOfDot + 1);
-}
-
-function findValueNodeOfIdentifier(identifierName, scope) {
- const varsInScope = scope.variables;
- let valueNode = false;
- varsInScope.forEach((variable) => {
- if (variable.name === identifierName) {
- if (variable.defs && variable.defs.length > 0) {
- valueNode = variable.defs[variable.defs.length - 1].node.init;
- }
- }
- });
- if (valueNode === false || _.isNil(valueNode) || valueNode.value !== undefined) {
- if (_.get(scope, 'block.body.length', 0) > 0) {
- scope.block.body.forEach(scopeNode => {
- if (_.get(scopeNode, 'type') === 'ExpressionStatement') {
- const variableName = _.get(scopeNode, 'expression.left.name');
- if (variableName === identifierName && _.get(scopeNode, 'expression.right')) {
- valueNode = scopeNode.expression.right;
- }
- }
- });
- }
- }
- if (scope.upper === null) {
- return valueNode;
- }
- return valueNode || findValueNodeOfIdentifier(identifierName, scope.upper);
-}
-
-function handleError(ruleId, error, fileName) {
- console.log(`Found error in rule: ${ruleId}\n`, `Error: ${error}\n`, `In file: ${fileName}`);
-}
-
-
-module.exports = {
- getPrefix,
- getSuffix,
- findValueNodeOfIdentifier,
- handleError
-};
diff --git a/eslint-rules/lib/utils/importUtils.js b/eslint-rules/lib/utils/importUtils.js
deleted file mode 100644
index 368515d95c..0000000000
--- a/eslint-rules/lib/utils/importUtils.js
+++ /dev/null
@@ -1,113 +0,0 @@
-const _ = require('lodash');
-
-function _addToImports_aggregate(imports, source, newImports) {
- if (source && !_.isEmpty(newImports)) {
- const existingIndex = imports
- .map((currentImport, index) => (Object.keys(currentImport).includes(source) ? index : undefined))
- .filter(currentImport => !_.isUndefined(currentImport));
- if (!_.isEmpty(existingIndex)) {
- imports[existingIndex[0]] = {[source]: {...imports[existingIndex[0]][source], ...newImports}};
- } else {
- imports.push({[source]: newImports});
- }
- }
-}
-
-function _addToImports_fromImport(node, imports) {
- const specifiers = node.specifiers;
- if (specifiers) {
- const newImports = {};
- specifiers.forEach(specifier => {
- if (specifier.type === 'ImportSpecifier' || specifier.type === 'ImportNamespaceSpecifier') {
- const isNamespace = specifier.type === 'ImportNamespaceSpecifier';
- const value = _.get(specifier, 'imported.name') || _.get(specifier, 'local.name');
- newImports[specifier.local.name] = isNamespace ? {value, isNamespace} : value;
- }
- });
-
- const source = node.source.value;
- _addToImports_aggregate(imports, source, newImports);
- }
-}
-
-function _getSourceForComponent(component, imports) {
- for (let index = 0; index < imports.length; ++index) {
- if (Object.keys(Object.values(imports[index])[0]).includes(component)) {
- return Object.keys(imports[index])[0];
- }
- }
-}
-
-function _addToImports_fromSpreading(midSource, newImports, imports, parents) {
- if (midSource) {
- const source = _getSourceForComponent(midSource, imports);
- if (source) {
- _addToImports_aggregate(imports, source, newImports);
- if (parents) {
- _.forEach(Object.keys(newImports), currentImport => {
- if (!parents.includes(currentImport)) {
- parents.push({[currentImport]: midSource});
- }
- });
- }
- }
- }
-}
-
-function _getImportsFromProperties(node) {
- const newImports = {};
- _.map(node.id.properties, property => {
- if (property.type === 'Property') {
- newImports[property.value.name] = property.key.name;
- }
- });
-
- return newImports;
-}
-
-function _addToImports_fromDeclaration(node, imports, parents) {
- let newImports, source, midSource;
- if (_.get(node, 'init.type') === 'CallExpression' && _.get(node, 'init.callee.name') === 'require') {
- source = node.init.arguments[0].value;
- if (_.get(node, 'id.properties')) {
- newImports = _getImportsFromProperties(node);
- } else if (_.get(node, 'id.name')) {
- newImports = {[node.id.name]: node.id.name};
- }
- } else if (_.get(node, 'init.type') === 'MemberExpression' && node.init.object) {
- const {object} = node.init;
- if (object.type === 'CallExpression' && object.callee && object.callee.name === 'require') {
- source = object.arguments[0].value;
- const localName = _.get(node, 'id.typeAnnotation.typeAnnotation.id.name') || node.id.name;
- newImports = {[localName]: node.init.property.name};
- } else if (object.type === 'Identifier') {
- midSource = object.name;
- newImports = {[node.init.property.name]: node.init.property.name};
- }
- } else if (_.get(node, 'id.type') === 'ObjectPattern' && _.get(node, 'id.properties') && _.get(node, 'init.name')) {
- midSource = node.init.name;
- newImports = _getImportsFromProperties(node);
- }
-
- _addToImports_aggregate(imports, source, newImports);
- _addToImports_fromSpreading(midSource, newImports, imports, parents);
-}
-
-/**
- * Aggregate all components, from 'import', 'require' or 'spreading' of other components\imports
- * to a single object.
- */
-function addToImports(node, imports, parents) {
- if (!node) return;
- if (node.type === 'ImportDeclaration') {
- _addToImports_fromImport(node, imports); // import
- } else if (node.type === 'VariableDeclarator') {
- _addToImports_fromDeclaration(node, imports, parents); // require + spreading of sub-components etc
- } else {
- console.log('Debug', 'addToImports', 'unknown type:', node.type);
- }
-}
-
-module.exports = {
- addToImports
-};
diff --git a/eslint-rules/lib/utils/index.js b/eslint-rules/lib/utils/index.js
deleted file mode 100644
index 84a2acbf60..0000000000
--- a/eslint-rules/lib/utils/index.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const {getPrefix, getSuffix, findValueNodeOfIdentifier, handleError} = require('./generalUtils');
-const {organizeDeprecations, getLocalizedFix, getPossibleDeprecations} = require('./deprecationsUtils');
-const {addToImports} = require('./importUtils');
-const {getComponentLocalName, getComponentName} = require('./componentUtils');
-const {findAndReportHardCodedValues} = require('./noHardCodedUtils');
-const {stringify} = require('./debugUtils');
-
-module.exports = {
- // General
- getPrefix,
- getSuffix,
- findValueNodeOfIdentifier,
- handleError,
- // Deprecations
- organizeDeprecations,
- getLocalizedFix,
- getPossibleDeprecations,
- // Imports
- addToImports,
- // Components
- getComponentLocalName,
- getComponentName,
- // no-hard-coded color\font
- findAndReportHardCodedValues,
- // For debug:
- stringify
-};
-
-// Backup, please do NOT delete
-// ExpressionStatement: node => test(node, 'ExpressionStatement'),
-// AssignmentExpression: node => test(node, 'AssignmentExpression'),
-// ImportDeclaration: (node) => test(node, 'ImportDeclaration'),
-// CallExpression: (node) => test(node, 'CallExpression'),
-// MemberExpression: (node) => test(node, 'MemberExpression'),
-// JSXAttribute: (node) => test(node, 'JSXAttribute'),
-// JSXOpeningElement: (node) => test(node, 'JSXOpeningElement'),
-// ObjectExpression: (node) => test(node, 'ObjectExpression'),
-// VariableDeclarator: (node) => test(node, 'VariableDeclarator'),
-// Property: (node) => test(node, 'Property'),
-// JSXSpreadAttribute: (node) => test(node, 'JSXSpreadAttribute')
diff --git a/eslint-rules/lib/utils/noHardCodedUtils.js b/eslint-rules/lib/utils/noHardCodedUtils.js
deleted file mode 100644
index bed715f661..0000000000
--- a/eslint-rules/lib/utils/noHardCodedUtils.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const {findValueNodeOfIdentifier} = require('./generalUtils');
-
-function _isLiteral(type) {
- return (type === 'Literal' || type === 'TemplateLiteral');
-}
-
-function findAndReportHardCodedValues(value, reporter, context, depthOfSearch = 4) {
- if (depthOfSearch === 0) return;
- if (value === undefined || value === false) return;
- if (_isLiteral(value.type)) {
- reporter(value);
- } else if (value.type === 'ConditionalExpression') {
- findAndReportHardCodedValues(value.consequent, reporter, context, depthOfSearch - 1);
- findAndReportHardCodedValues(value.alternate, reporter, context, depthOfSearch - 1);
- } else if (value.type === 'Identifier') {
- findAndReportHardCodedValues(findValueNodeOfIdentifier(value.name, context.getScope()), reporter, context, depthOfSearch - 1);
- }
-}
-
-module.exports = {
- findAndReportHardCodedValues
-};
diff --git a/eslint-rules/package.json b/eslint-rules/package.json
deleted file mode 100644
index 59925e64fc..0000000000
--- a/eslint-rules/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "eslint-plugin-uilib",
- "version": "2.1.7",
- "description": "uilib set of eslint rules",
- "keywords": [
- "eslint",
- "eslintplugin",
- "eslint-plugin"
- ],
- "author": "Inbal Tish ",
- "license": "MIT",
- "publishConfig": {
- "registry": "https://registry.npmjs.org/"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/wix/react-native-ui-lib/blob/master/eslint-rules/README.md"
- },
- "main": "index.js",
- "scripts": {
- "test": "mocha tests --recursive",
- "test:watch": "mocha tests --recursive --watch"
- },
- "dependencies": {
- "lodash": "^4.0.0",
- "requireindex": "~1.1.0"
- },
- "devDependencies": {
- "babel-cli": "^6.23.0",
- "babel-eslint": "^7.0.0",
- "babel-jest": "^25.5.1",
- "babel-preset-es2015": "^6.22.0",
- "babel-preset-react": "^6.22.0",
- "babel-preset-react-native": "1.9.1",
- "eslint": "^4.18.2",
- "eslint-config-standard": "^11.0.0",
- "eslint-plugin-import": "^2.9.0",
- "eslint-plugin-node": "^6.0.1",
- "eslint-plugin-promise": "^3.7.0",
- "eslint-plugin-standard": "^3.0.1",
- "mocha": "7.1.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
-}
diff --git a/eslint-rules/tests/assets_deprecation.json b/eslint-rules/tests/assets_deprecation.json
deleted file mode 100644
index cdc042621f..0000000000
--- a/eslint-rules/tests/assets_deprecation.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
- {
- "path": "Assets.icons.deprecated",
- "message": "Please use 'Assets.icons.general.valid' instead (fix is available).",
- "fix": "Assets.icons.general.valid"
- }
-]
\ No newline at end of file
diff --git a/eslint-rules/tests/component_deprecation.json b/eslint-rules/tests/component_deprecation.json
deleted file mode 100644
index fac6fbb1ab..0000000000
--- a/eslint-rules/tests/component_deprecation.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "component": "Avatar",
- "source": "module-with-deprecations",
- "message": "Please use the 'Picture' component instead.",
- "fix": {"componentName": "Picture"}
- },
- {
- "component": "Button",
- "source": "module-with-deprecations",
- "message": "Please use the 'Touch' component instead.",
- "fix": {"componentName": "Touch"}
- },
- {
- "component": "TextInput",
- "source": "module-with-deprecations",
- "message": "Please use the 'TextField' component instead.",
- "fix": {"componentName": "TextField"}
- },
- {
- "component": "List.Part",
- "source": "module-with-deprecations",
- "message": "Please use the 'List.Item' component instead (fix is working partially).",
- "fix": {"componentName": "List.Item"}
- },
- {
- "component": "List",
- "source": "another-module-with-deprecations",
- "message": "Please use the 'ListList' component instead.",
- "fix": {"componentName": "ListList"}
- },
- {
- "component": "ScrollView",
- "parent": "MyComponent",
- "source": "module-with-deprecations",
- "message": "Please use the 'MyComponent.ScrollView' component instead."
- }
-]
diff --git a/eslint-rules/tests/component_prop_deprecation.json b/eslint-rules/tests/component_prop_deprecation.json
deleted file mode 100644
index 609cb29cf7..0000000000
--- a/eslint-rules/tests/component_prop_deprecation.json
+++ /dev/null
@@ -1,93 +0,0 @@
-[
- {
- "component": "Keyboard.KeyboardAccessoryView",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "iOSScrollBehavior",
- "message": "'iOSScrollBehavior' prop is deprecated. Please use 'scrollBehavior' prop instead and pass it 'Keyboard.KeyboardAccessoryView.scrollBehaviors' ('Keyboard.KeyboardAccessoryView.iosScrollBehaviors' enum is deprecated)."
- }
- ]
- },
- {
- "component": "Avatar",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "url",
- "message": "Please use the 'source' prop instead."
- }
- ]
- },
- {
- "component": "Thumbnail",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "url",
- "message": "Please use the 'uri' prop instead.",
- "fix": {"propName": "uri"}
- }
- ]
- },
- {
- "component": "Button",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "text",
- "message": "Please use the 'label' prop instead.",
- "fix": {"propName": "label"}
- }
- ]
- },
- {
- "component": "List",
- "source": "another-module-with-deprecations",
- "props": [
- {
- "prop": "text",
- "message": "Please use the 'label' prop instead.",
- "fix": {"propName": "label"}
- }
- ]
- },
- {
- "component": "List.Item",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "text",
- "message": "Please use the 'label' prop instead.",
- "fix": {"propName": "label"}
- }
- ]
- },
- {
- "component": "Text",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "t",
- "message": "Please use the 'title' prop instead.",
- "fix": {"propName": "title"}
- },
- {
- "prop": "s",
- "message": "Please use the 'subtitle' prop instead.",
- "fix": {"propName": "subtitle"}
- }
- ]
- },
- {
- "component": "Picker",
- "source": "module-with-deprecations",
- "props": [
- {
- "prop": "migrate",
- "message": "Please make sure to pass the 'migrate' prop.",
- "isRequired": true
- }
- ]
- }
-]
diff --git a/eslint-rules/tests/function_deprecation.json b/eslint-rules/tests/function_deprecation.json
deleted file mode 100644
index 7b90198502..0000000000
--- a/eslint-rules/tests/function_deprecation.json
+++ /dev/null
@@ -1,38 +0,0 @@
-[
- {
- "function": "deprecatedFunction",
- "source": "our-source",
- "message": "Please use the 'validFunction' function instead (fix is available).",
- "fix": {"functionName": "validFunction"}
- },
- {
- "function": "validFunction",
- "source": "our-source",
- "message": "",
- "arguments": [
- {},
- {
- "props": [
- {
- "prop": "deprecatedProp",
- "message": "Please use the 'validProp' prop instead (fix is available).",
- "fix": {"propName": "validProp"}
- }
- ]
- }
- ]
- },
- {
- "function": "deprecatedInheritedFunction",
- "message": "please stop using it."
- },
- {
- "function": "deprecatedFunction2",
- "message": "please stop using it."
- },
- {
- "function": "deprecatedFunction3",
- "source": "our-source",
- "message": "please stop using it."
- }
-]
diff --git a/eslint-rules/tests/lib/rules/assets-deprecation.js b/eslint-rules/tests/lib/rules/assets-deprecation.js
deleted file mode 100644
index bb690baf00..0000000000
--- a/eslint-rules/tests/lib/rules/assets-deprecation.js
+++ /dev/null
@@ -1,450 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/assets-deprecation');
-const deprecationsJson = require('../../assets_deprecation.json');
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-
-const ruleTester = new RuleTester();
-
-const ourSource = 'our-source';
-const notOurSource = 'another-source';
-const notOurSource2 = 'another-source-2';
-
-const options = [{deprecations: deprecationsJson, source: ourSource}];
-const optionsWithDate = [{deprecations: deprecationsJson, source: ourSource, dueDate: '2 November, Friday'}];
-
-const ourImport = `import {Assets} from '${ourSource}';`;
-const ourImportRenamed = `import {Assets as UIAssets} from '${ourSource}';`;
-const notOurImport = `import {Assets} from '${notOurSource}';`;
-
-const constValid1 = 'const assets = Assets.icons.general.valid;';
-const constValidRenamed1 = 'const assets = UIAssets.icons.general.valid;';
-const constDeprecated1 = 'const assets = Assets.icons.deprecated;';
-const constDeprecatedRenamed1 = 'const assets = UIAssets.icons.deprecated;';
-
-const constValid2 = 'const assets = ;';
-const constValidRenamed2 = 'const assets = ;';
-const constDeprecated2 = 'const assets = ;';
-const constDeprecatedRenamed2 = 'const assets = ;';
-
-const jsx1 = ' ';
-const jsxValid1 = 'const others = {iconSource: Assets.icons.general.valid};';
-const jsxValidRenamed1 = 'const others = {iconSource: UIAssets.icons.general.valid};';
-const jsxDeprecated1 = 'const others = {iconSource: Assets.icons.deprecated};';
-const jsxDeprecatedRenamed1 = 'const others = {iconSource: UIAssets.icons.deprecated};';
-
-const jsxValid2 = '';
-const jsxValidRenamed2 = '';
-const jsxDeprecated2 = '';
-const jsxDeprecatedRenamed2 = '';
-
-const jsxValid3 = ' ';
-const jsxValidRenamed3 = ' ';
-const jsxDeprecated3 = ' ';
-const jsxDeprecatedRenamed3 = ' ';
-
-const jsxValid4 = 'const others = {iconSource: Assets.icons.general.valid}; const test = ';
-const jsxValidRenamed4 =
- 'const others = {iconSource: UIAssets.icons.general.valid}; const test = ';
-const jsxDeprecated4 = 'const others = {iconSource: Assets.icons.deprecated}; const test = ';
-const jsxDeprecatedRenamed4 =
- 'const others = {iconSource: UIAssets.icons.deprecated}; const test = ';
-
-const fullClassValid = `
-${ourImport}
-${jsxValid1}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsx1}
- ${jsxValid2}
- ${jsxValid3}
-
- );
- }
-}`;
-
-const fullClassValidRenamed = `
-${ourImportRenamed}
-${jsxValidRenamed1}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsx1}
- ${jsxValidRenamed2}
- ${jsxValidRenamed3}
-
- );
- }
-}`;
-
-const fullClassDeprecated = `
-${ourImport}
-${jsxDeprecated1}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsx1}
- ${jsxDeprecated2}
- ${jsxDeprecated3}
-
- );
- }
-}`;
-
-const fullClassDeprecatedRenamed = `
-${ourImportRenamed}
-${jsxDeprecatedRenamed1}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsx1}
- ${jsxDeprecatedRenamed2}
- ${jsxDeprecatedRenamed3}
-
- );
- }
-}`;
-
-const fullClassTest1 = `
-import {Something} from '${notOurSource}';
-${ourImport}
-import {SomethingElse} from '${notOurSource2}';
-
-const validIcon = (icon) => (typeof icon === 'number' ? icon : undefined);
-
-class Example extends React.Component {
- renderComponent1() {
- return this.props.list.map((item) => (
-
- ));
- }
-
- render() {
- return (
-
-
- {this.renderComponent1()}
-
-
-
-
- );
- }
-}
-
-export default Example;`;
-
-const fullClassTest2 = `
-import * as LetsImportEverything from '${ourSource}';
-
-const {Assets}: typeof LetsImportEverything = require('${ourSource}');
-
-const validIcon = (icon) => (typeof icon === 'number' ? icon : undefined);
-
-class Example extends React.Component {
- renderComponent1() {
- return this.props.list.map((item) => (
-
- ));
- }
-
- render() {
- return (
-
-
- {this.renderComponent1()}
-
-
-
-
- );
- }
-}
-
-export default Example;`;
-
-const error =
- "'Assets.icons.deprecated' is deprecated. Please use 'Assets.icons.general.valid' instead (fix is available).";
-const errorDate = ' Please fix this issue by 2 November, Friday!';
-
-ruleTester.run('assets-deprecation', rule, {
- valid: [
- {
- options: options,
- code: `${notOurImport} ${constDeprecated1}`
- },
- {
- options: options,
- code: `${ourImport} ${constValid1}`
- },
- {
- options: options,
- code: `${ourImport} ${constValid2}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid1} ${jsx1}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid2}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid3}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid4}`
- },
- {
- options: options,
- code: `${fullClassValid}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constValidRenamed1}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constValidRenamed2}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValidRenamed1} ${jsx1}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValidRenamed2}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValidRenamed3}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValidRenamed4}`
- },
- {
- options: options,
- code: `${fullClassValidRenamed}`
- }
- ],
- invalid: [
- {
- options: options,
- code: `${ourImport} ${constDeprecated1}`,
- output: `${ourImport} const assets = Assets.icons.general.valid;`,
- errors: [{message: error}]
- },
- {
- options: optionsWithDate,
- code: `${ourImport} ${constDeprecated1}`,
- output: `${ourImport} const assets = Assets.icons.general.valid;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `${ourImport} ${constDeprecated2}`,
- output: `${ourImport} const assets = ;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated1} ${jsx1}`,
- output: `${ourImport} const others = {iconSource: Assets.icons.general.valid}; ${jsx1}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated2}`,
- output: `${ourImport} `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated3}`,
- output: `${ourImport} `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated4}`,
- output: `${ourImport} const others = {iconSource: Assets.icons.general.valid}; const test = `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${fullClassDeprecated}`,
- errors: [{message: error}, {message: error}, {message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constDeprecatedRenamed1}`,
- output: `${ourImportRenamed} const assets = UIAssets.icons.general.valid;`,
- errors: [{message: error}]
- },
- {
- options: optionsWithDate,
- code: `${ourImportRenamed} ${constDeprecatedRenamed1}`,
- errors: [{message: error + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `${ourImportRenamed} ${constDeprecatedRenamed2}`,
- errors: [{message: error + errorDate}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecatedRenamed1} ${jsx1}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecatedRenamed2}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecatedRenamed3}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecatedRenamed4}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${fullClassDeprecatedRenamed}`,
- errors: [{message: error}, {message: error}, {message: error}]
- },
- {
- options: options,
- code: `${fullClassTest1}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${fullClassTest2}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `
-function createImages() {
- const IDs1 = require('my-ids-1');
- const {Assets} = require('${ourSource}');
- const IDs2 = require('my-ids-2');
-
- const images = {};
- images[IDs1.ID1] = Assets.icons.valid;
- images[IDs1.ID2] = Assets.icons.deprecated;
- images[IDs1.ID3] = Assets.icons.general.valid;
- images[IDs1.ID4] = require('../../images/image1.png');
- images[IDs2.ID5] = require('../../images/image2.png');
- images[IDs2.ID6] = Assets.icons.general.valid2;
- images[IDs2.ID7] = Assets.icons.valid2;
- return images;
-}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `
-${ourImport}
-
-const props = {
- title: 'title',
- subtitle: 'subtitle',
- icon: Assets.icons.deprecated
-};`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `
-${ourImport}
-
-const props = {
- title: 'title',
- subtitle: 'subtitle',
- icon: Assets.icons['deprecated']
-};`,
- errors: [{message: error}]
- }
- // TODO: ¯\_(ツ)_/¯
- // {
- // options: options,
- // code: `
- // ${ourImport}
-
- // const data = 'deprecated';
- // const props = {
- // title: 'title',
- // subtitle: 'subtitle',
- // icon: Assets.icons[data]
- // };`,
- // errors: [{message: error}]
- // },
- // {
- // options: options,
- // code: `
- // ${ourImport}
-
- // function getAsset() {
- // const result = 'deprecated';
- // return result;
- // }
-
- // const props = {
- // title: 'title',
- // subtitle: 'subtitle',
- // icon: Assets.icons[getAsset()]
- // };`,
- // errors: [{message: error}]
- // }
- ]
-});
diff --git a/eslint-rules/tests/lib/rules/component-deprecation.js b/eslint-rules/tests/lib/rules/component-deprecation.js
deleted file mode 100644
index d4dec32e25..0000000000
--- a/eslint-rules/tests/lib/rules/component-deprecation.js
+++ /dev/null
@@ -1,359 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/component-deprecation');
-const deprecationsJson = require('../../component_deprecation.json');
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-
-const ruleTester = new RuleTester();
-
-const ruleOptions = [{deprecations: deprecationsJson}];
-const invalidExample =
- "import {Avatar} from 'module-with-deprecations'; const test = ";
-
-// NOTE: Deprecated components will error at import and again if used as jsx tag.
-// KNOWN BUG: usages such as module.List.Item will not be fixed (not supported ATM)
-ruleTester.run('component-deprecation', rule, {
- valid: [
- {
- options: ruleOptions,
- code: `
- const Avatar = require('another-module').Avatar;
- const test = ;
- `
- },
- {
- options: ruleOptions,
- code: `
- const {Avatar, List} = require('another-module');
- const test = ;
- `
- },
- {
- options: ruleOptions,
- code: `
- const module = require('another-module');
- const {Avatar, TextField} = module;
- const test1 = ;
- const test2 = Bla ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {Avatar, TextField} from 'another-module';
- const test1 = ;
- const test2 = Bla ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {List} from 'module-with-deprecations';
-
`
- },
- {
- options: ruleOptions,
- code: `
- import {MyComponent} from 'module-with-deprecations';
- const {ScrollView} = MyComponent;
- ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {MyComponent} from 'module-with-deprecations';
- const {ScrollView: S, FlatList: F} = MyComponent;
- ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {MyComponent} from 'module-with-deprecations';
- ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {ScrollView} from 'another-module';
- ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {ScrollView} from 'another-module';
- import {View} from 'module-with-deprecations';
- ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {ScrollView as S} from 'another-module';
- import {View} from 'module-with-deprecations';
- ;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {ScrollView} from 'another-module';
- import {View as V} from 'module-with-deprecations';
- ;
- `
- }
- ],
- invalid: [
- {
- options: ruleOptions,
- code: invalidExample,
- errors: [
- {message: "The 'Avatar' component is deprecated. Please use the 'Picture' component instead."},
- {message: "The 'Avatar' component is deprecated. Please use the 'Picture' component instead."}
- ]
- },
- {
- options: [{...ruleOptions[0], dueDate: '10/11/18'}],
- code: invalidExample,
- errors: [
- {
- message:
- "The 'Avatar' component is deprecated. Please use the 'Picture' component instead. Please fix this issue by 10/11/18!"
- },
- {
- message:
- "The 'Avatar' component is deprecated. Please use the 'Picture' component instead. Please fix this issue by 10/11/18!"
- }
- ]
- },
- {
- options: ruleOptions,
- code: 'import {Button} from \'module-with-deprecations\'; ',
- output: 'import {Touch} from \'module-with-deprecations\'; ',
- errors: [
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: 'import {TextInput} from \'module-with-deprecations\'; ',
- output: 'import {TextField} from \'module-with-deprecations\'; ',
- errors: [
- {message: "The 'TextInput' component is deprecated. Please use the 'TextField' component instead."},
- {message: "The 'TextInput' component is deprecated. Please use the 'TextField' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `import {List} from 'module-with-deprecations'; `,
- output: `import {List} from 'module-with-deprecations'; `,
- errors: [
- {
- message:
- "The 'List.Part' component is deprecated. Please use the 'List.Item' component instead (fix is working partially)."
- }
- ]
- },
- {
- options: ruleOptions,
- code: `import {Button} from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- output: `import {Touch} from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- errors: [
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `import {Button as B} from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- output: `import {Touch as B} from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- errors: [{message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- const {Button} = module;
- const props = {text: "button", color: "red"};
- `,
- output: `import * as module from 'module-with-deprecations';
- const {Touch} = module;
- const props = {text: "button", color: "red"};
- `,
- errors: [
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- const {Button: B} = module;
- const props = {text: "button", color: "red"};
- `,
- output: `import * as module from 'module-with-deprecations';
- const {Touch: B} = module;
- const props = {text: "button", color: "red"};
- `,
- errors: [{message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- output: `import * as module from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- errors: [{message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- `,
- // TODO: Fix is not working on this example
- output: `import * as module from 'module-with-deprecations';
- `,
- errors: [
- {
- message:
- "The 'List.Part' component is deprecated. Please use the 'List.Item' component instead (fix is working partially)."
- }
- ]
- },
- {
- options: ruleOptions,
- code: `import {List} from 'another-module-with-deprecations';
;`,
- output: `import {ListList} from 'another-module-with-deprecations'; ;`,
- errors: [
- {message: "The 'List' component is deprecated. Please use the 'ListList' component instead."},
- {message: "The 'List' component is deprecated. Please use the 'ListList' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `import {View, Button, TextInput} from 'module-with-deprecations';
-
-
-
- `,
- output: `import {View, Touch, TextField} from 'module-with-deprecations';
-
-
-
- `,
- errors: [
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'TextInput' component is deprecated. Please use the 'TextField' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'TextInput' component is deprecated. Please use the 'TextField' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `const module = require('module-with-deprecations');
- const {Button, List, TextField} = module;
- const props = {text: "button", color: "red"};
- const test1 = ;
- const test2 = Bla ;`,
- output: `const module = require('module-with-deprecations');
- const {Touch, List, TextField} = module;
- const props = {text: "button", color: "red"};
- const test1 = ;
- const test2 = Bla ;`,
- errors: [
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `const {Avatar, Button, Thumbnail, View} = require('module-with-deprecations');
- const {List, Card} = require('another-module-with-deprecations');
- const props = {text: "button", color: "red"};
-
-
-
-
-
-
- `,
- output: `const {Picture, Touch, Thumbnail, View} = require('module-with-deprecations');
- const {ListList, Card} = require('another-module-with-deprecations');
- const props = {text: "button", color: "red"};
-
-
-
-
-
-
- `,
- errors: [
- {message: "The 'Avatar' component is deprecated. Please use the 'Picture' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'List' component is deprecated. Please use the 'ListList' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'Avatar' component is deprecated. Please use the 'Picture' component instead."},
- {message: "The 'List' component is deprecated. Please use the 'ListList' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `const {Avatar: A, Button: B, Thumbnail: T, View} = require('module-with-deprecations');
- const {List: L, Card: C} = require('another-module-with-deprecations');
- const props = {text: "button", color: "red"};
-
-
-
-
-
-
- `,
- output: `const {Picture: A, Touch: B, Thumbnail: T, View} = require('module-with-deprecations');
- const {ListList: L, Card: C} = require('another-module-with-deprecations');
- const props = {text: "button", color: "red"};
-
-
-
-
-
-
- `,
- errors: [
- {message: "The 'Avatar' component is deprecated. Please use the 'Picture' component instead."},
- {message: "The 'Button' component is deprecated. Please use the 'Touch' component instead."},
- {message: "The 'List' component is deprecated. Please use the 'ListList' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `import {ScrollView} from 'module-with-deprecations'; ;`,
- output: `import {ScrollView} from 'module-with-deprecations'; ;`,
- errors: [
- {message: "The 'ScrollView' component is deprecated. Please use the 'MyComponent.ScrollView' component instead."},
- {message: "The 'ScrollView' component is deprecated. Please use the 'MyComponent.ScrollView' component instead."}
- ]
- },
- {
- options: ruleOptions,
- code: `import {ScrollView as S} from 'module-with-deprecations'; ;`,
- errors: [
- {message: "The 'ScrollView' component is deprecated. Please use the 'MyComponent.ScrollView' component instead."},
- ]
- }
- ]
-});
diff --git a/eslint-rules/tests/lib/rules/component-prop-deprecation.js b/eslint-rules/tests/lib/rules/component-prop-deprecation.js
deleted file mode 100644
index 68707e2b49..0000000000
--- a/eslint-rules/tests/lib/rules/component-prop-deprecation.js
+++ /dev/null
@@ -1,407 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/component-prop-deprecation');
-const deprecationsJson = require('../../component_prop_deprecation.json');
-const fs = require('fs');
-const bigExample = fs.readFileSync('../demo/src/screens/componentScreens/AvatarsScreen.tsx', 'utf8');
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-
-const ruleTester = new RuleTester();
-
-const ruleOptions = [{deprecations: deprecationsJson}];
-const invalidExample =
- `import {Avatar} from 'module-with-deprecations'; const test = `;
-const validKeyboardExample =
- `import {Keyboard} from 'module-with-deprecations'; const test = `;
-const invalidKeyboardExample =
- `import {Keyboard} from 'module-with-deprecations'; const test = `;
-
-ruleTester.run('component-prop-deprecation', rule, {
- valid: [
- {
- options: ruleOptions,
- code: validKeyboardExample
- },
- {
- options: ruleOptions,
- code: `const Avatar = require('another-module').Avatar;
- const test = ;`
- },
- {
- options: ruleOptions,
- code: `const {Avatar, List} = require('another-module');
- const test = ;`
- },
- {
- options: ruleOptions,
- code: `const module = require('another-module');
- const {Avatar, TextField} = module;
- const test1 = ;
- const test2 = Bla ;`
- },
- {
- options: ruleOptions,
- code: `import {Avatar, TextField} from 'another-module';
- const test1 = ;
- const test2 = Bla ;`
- },
- {
- options: ruleOptions,
- code: `import {List} from 'module-with-deprecations';
-
`
- },
- {
- options: ruleOptions,
- code: 'import {List} from \'module-with-deprecations\';
'
- },
- {
- options: ruleOptions,
- code: bigExample
- },
- {
- options: ruleOptions,
- code: `
- const A = require('some-module').Avatar;
- const {Button, Card: C} = require('another-module');
- import {Dialog as D, Egg} from 'some-module';
- const module = require('another-module');
- const {Files: F, Guide} = module;
- const {Wizard: W} = Guide;
- const Dir = F.Dir;
- const Header = D.Header;
- `
- },
- {
- options: ruleOptions,
- code: `
- import {Button} from 'another-module';
- import {View} from 'module-with-deprecations';
-
- `
- },
- {
- options: ruleOptions,
- code: `
- import {Button} from 'another-module';
- import {View as V} from 'module-with-deprecations';
-
- `
- },
- {
- options: ruleOptions,
- code: `
- import {Picker} from 'module-with-deprecations';
-
- `
- },
- {
- options: ruleOptions,
- code: 'import {Picker} from \'module-with-deprecations\'; '
- },
- {
- options: ruleOptions,
- code: 'import {Picker} from \'module-with-deprecations\'; pickerProps = {t: "title", s:"subtitle", migrate: true}; '
- },
- {
- options: ruleOptions,
- code: `
- import {Picker} from 'module-with-deprecations';
- const getPickerProps = () => ({t: "title", s:"subtitle", migrate: true});
-
- `
- },
- {
- options: ruleOptions,
- code: `
- import {Picker} from 'module-with-deprecations';
- pickerProps = {t: "title", s:"subtitle", migrate: true};
-
- `
- }
- ],
- invalid: [
- {
- options: ruleOptions,
- code: invalidKeyboardExample,
- errors: [{
- message: `The 'Keyboard.KeyboardAccessoryView' component's prop 'iOSScrollBehavior' is deprecated. 'iOSScrollBehavior' prop is deprecated. Please use 'scrollBehavior' prop instead and pass it 'Keyboard.KeyboardAccessoryView.scrollBehaviors' ('Keyboard.KeyboardAccessoryView.iosScrollBehaviors' enum is deprecated).`
- }]
- },
- {
- options: ruleOptions,
- code: invalidExample,
- errors: [{
- message: `The 'Avatar' component's prop 'url' is deprecated. Please use the 'source' prop instead.`
- }]
- },
- {
- options: [{...ruleOptions[0], dueDate: '10/11/18'}],
- code: invalidExample,
- errors: [
- {
- message:
- `The 'Avatar' component's prop 'url' is deprecated. Please use the 'source' prop instead. Please fix this issue by 10/11/18!`
- }
- ]
- },
- {
- options: [{...ruleOptions[0], dueDate: '10/11/18'}],
- code: `import {Thumbnail} from 'module-with-deprecations'; const test = `,
- output: `import {Thumbnail} from 'module-with-deprecations'; const test = `,
- errors: [
- {
- message:
- `The 'Thumbnail' component's prop 'url' is deprecated. Please use the 'uri' prop instead. Please fix this issue by 10/11/18!`
- }
- ]
- },
- {
- options: ruleOptions,
- code: 'import {Button} from \'module-with-deprecations\'; ',
- output: 'import {Button} from \'module-with-deprecations\'; ',
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: 'import {List} from \'another-module-with-deprecations\';
',
- output: 'import {List} from \'another-module-with-deprecations\';
',
- errors: [{message: `The 'List' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `import {Button} from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- output: `import {Button} from 'module-with-deprecations';
- const props = {label: "button", color: "red"};
- `,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `import {Button as B} from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- output: `import {Button as B} from 'module-with-deprecations';
- const props = {label: "button", color: "red"};
- `,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- const {Button} = module;
- const props = {text: "button", color: "red"};
- `,
- output: `import * as module from 'module-with-deprecations';
- const {Button} = module;
- const props = {label: "button", color: "red"};
- `,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- const props = {text: "button", color: "red"};
- `,
- output: `import * as module from 'module-with-deprecations';
- const props = {label: "button", color: "red"};
- `,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `const Button = require('module-with-deprecations').Button
- const props = {text: "button", color: "red"};
- `,
- output: `const Button = require('module-with-deprecations').Button
- const props = {label: "button", color: "red"};
- `,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `const {Button, List} = require('module-with-deprecations')
- const props = {text: "button", color: "red"};
- const test = ;`,
- output: `const {Button, List} = require('module-with-deprecations')
- const props = {label: "button", color: "red"};
- const test = ;`,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `const module = require('module-with-deprecations');
- const {Button, List, TextField} = module;
- const props = {text: "button", color: "red"};
- const test1 = ;
- const test2 = Bla ;`,
- output: `const module = require('module-with-deprecations');
- const {Button, List, TextField} = module;
- const props = {label: "button", color: "red"};
- const test1 = ;
- const test2 = Bla ;`,
- errors: [{message: `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: [{...ruleOptions[0], dueDate: '10/11/18'}],
- code: `import {Avatar as A, Button as B, Thumbnail as T, View} from 'module-with-deprecations';
- import {List as L} from 'another-module-with-deprecations';
- const props = {text: "button", color: "red"};
-
-
-
-
-
- `,
- output: `import {Avatar as A, Button as B, Thumbnail as T, View} from 'module-with-deprecations';
- import {List as L} from 'another-module-with-deprecations';
- const props = {label: "button", color: "red"};
-
-
-
-
-
- `,
- errors: [
- {
- message:
- `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'Avatar' component's prop 'url' is deprecated. Please use the 'source' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'Thumbnail' component's prop 'url' is deprecated. Please use the 'uri' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'List' component's prop 'text' is deprecated. Please use the 'label' prop instead. Please fix this issue by 10/11/18!`
- }
- ]
- },
- {
- options: [{...ruleOptions[0], dueDate: '10/11/18'}],
- code: `const {Avatar, Button, Thumbnail, View} = require('module-with-deprecations');
- const {List, Card} = require('another-module-with-deprecations');
- const props = {text: "button", color: "red"};
-
-
-
-
-
-
- `,
- output: `const {Avatar, Button, Thumbnail, View} = require('module-with-deprecations');
- const {List, Card} = require('another-module-with-deprecations');
- const props = {label: "button", color: "red"};
-
-
-
-
-
-
- `,
- errors: [
- {
- message:
- `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'Avatar' component's prop 'url' is deprecated. Please use the 'source' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'Thumbnail' component's prop 'url' is deprecated. Please use the 'uri' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'List' component's prop 'text' is deprecated. Please use the 'label' prop instead. Please fix this issue by 10/11/18!`
- }
- ]
- },
- {
- options: [{...ruleOptions[0], dueDate: '10/11/18'}],
- code: `const {Avatar: A, Button: B, Thumbnail: T, View} = require('module-with-deprecations');
- const {List: L, Card: C} = require('another-module-with-deprecations');
- const props = {text: "button", color: "red"};
-
-
-
-
-
-
- `,
- output: `const {Avatar: A, Button: B, Thumbnail: T, View} = require('module-with-deprecations');
- const {List: L, Card: C} = require('another-module-with-deprecations');
- const props = {label: "button", color: "red"};
-
-
-
-
-
-
- `,
- errors: [
- {
- message:
- `The 'Button' component's prop 'text' is deprecated. Please use the 'label' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'Avatar' component's prop 'url' is deprecated. Please use the 'source' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'Thumbnail' component's prop 'url' is deprecated. Please use the 'uri' prop instead. Please fix this issue by 10/11/18!`
- },
- {
- message:
- `The 'List' component's prop 'text' is deprecated. Please use the 'label' prop instead. Please fix this issue by 10/11/18!`
- }
- ]
- },
- {
- options: ruleOptions,
- code: `const {List} = require('module-with-deprecations')
- const props = {text: "list"};
- const test = ;`,
- output: `const {List} = require('module-with-deprecations')
- const props = {label: "list"};
- const test = ;`,
- errors: [{message: `The 'List.Item' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: `import * as module from 'module-with-deprecations';
- const props = {text: "list"};
- `,
- output: `import * as module from 'module-with-deprecations';
- const props = {label: "list"};
- `,
- errors: [{message: `The 'List.Item' component's prop 'text' is deprecated. Please use the 'label' prop instead.`}]
- },
- {
- options: ruleOptions,
- code: 'import {Text} from \'module-with-deprecations\'; ',
- output: 'import {Text} from \'module-with-deprecations\'; ',
- errors: [
- {message: `The 'Text' component's prop 't' is deprecated. Please use the 'title' prop instead.`},
- {message: `The 'Text' component's prop 's' is deprecated. Please use the 'subtitle' prop instead.`}
- ]
- },
- {
- options: ruleOptions,
- code: 'import {Picker} from \'module-with-deprecations\'; ',
- errors: [
- {message: `The 'Picker' component's prop 'migrate' is required. Please make sure to pass the 'migrate' prop.`}
- ]
- }
- ]
-});
diff --git a/eslint-rules/tests/lib/rules/function-deprecation.js b/eslint-rules/tests/lib/rules/function-deprecation.js
deleted file mode 100644
index 10d0ff0de8..0000000000
--- a/eslint-rules/tests/lib/rules/function-deprecation.js
+++ /dev/null
@@ -1,353 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/function-deprecation');
-const deprecationsJson = require('../../function_deprecation.json');
-
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}},
-});
-
-const ruleTester = new RuleTester();
-
-const ourSource = 'our-source';
-const notOurSource = 'another-source';
-const notOurSource2 = 'another-source-2';
-
-const options = [{deprecations: deprecationsJson, source: ourSource}];
-const optionsWithDate = [{deprecations: deprecationsJson, source: ourSource, dueDate: '2 November, Friday'}];
-
-const notOurFunctionImport = `import {deprecatedFunction} from '${notOurSource}';`
-const validFunctionImport = `import {validFunction} from '${ourSource}';`
-const validFunctionRenamedImport = `import {validFunction as validFunctionRenamed} from '${ourSource}';`
-const deprecatedFunctionImport = `import {deprecatedFunction} from '${ourSource}';`
-
-const validProps = `{validProp: "I'm valid!", validProp2: "I'm not deprecated, so I'm valid as well"}`;
-const deprecatedProps = `{deprecatedProp: "I'm deprecated :(", validProp2: "I'm not deprecated, so I'm valid as well"}`;
-
-const onPress = functionCall => `const onPress = () => {${functionCall}};`;
-
-const fullClassValid = `
-${validFunctionImport}
-class Example extends Component {
-
- onPress = () => {
- validFunction(${validProps});
- validFunction(${deprecatedProps}, ${validProps});
- }
-
- render() {
- return (
-
- {validFunction(${validProps})}
- {validFunction(${deprecatedProps}, ${validProps})}
- onPress={this.onPress}
-
- );
- }
-}`;
-
-const fullClassDeprecated1 = `
-import {Something} from '${notOurSource}';
-import {deprecatedFunction as someFunction, validFunction} from '${ourSource}';
-import {SomethingElse} from '${notOurSource2}';
-class Example extends Component {
-
- onPress = () => {
- validFunction(${validProps});
- validFunction(${validProps}, ${deprecatedProps});
- someFunction(${validProps});
- someFunction(${deprecatedProps}, ${validProps});
- }
-
- render() {
- return (
-
- {validFunction(${validProps})}
- {validFunction(${validProps}, ${deprecatedProps})}
- {someFunction(${validProps})}
- {someFunction(${deprecatedProps}, ${validProps})}
- onPress={this.onPress}
-
- );
- }
-}`;
-
-const fullClassDeprecated2 = `
-import {Something} from '${notOurSource}';
-import * as Everything from '${ourSource}';
-import {SomethingElse} from '${notOurSource2}';
-class Example extends Component {
-
- onPress = () => {
- Everything.validFunction(${validProps});
- Everything.validFunction(${validProps}, ${deprecatedProps});
- Everything.deprecatedFunction(${validProps});
- Everything.deprecatedFunction(${deprecatedProps}, ${validProps});
- }
-
- render() {
- return (
-
- {Everything.validFunction(${validProps})}
- {Everything.validFunction(${validProps}, ${deprecatedProps})}
- {Everything.deprecatedFunction(${validProps})}
- {Everything.deprecatedFunction(${deprecatedProps}, ${validProps})}
- onPress={this.onPress}
-
- );
- }
-}`;
-
-const fullClassDeprecated3 = `
-import {Something} from '${notOurSource}';
-import * as Everything from '${ourSource}';
-import {SomethingElse} from '${notOurSource2}';
-class Example extends Component {
-
- deprecatedInheritedFunction = () => {
- return true
- }
-}`;
-
-const fullClassDeprecated4 = `
-import {Something} from '${notOurSource}';
-import * as Everything from '${ourSource}';
-import {SomethingElse} from '${notOurSource2}';
-class Example extends Component {
-
- deprecatedInheritedFunction() {
- return true
- }
-}`;
-
-const fullClassDeprecated5 = `
-import {someFunction} from '${notOurSource}';
-class Example extends Component {
-
- deprecatedFunction = () => {
- someFunction(${validProps});
- }
-
- render() {
- return (
-
- onPress={this.deprecatedFunction}
-
- );
- }
-}`;
-
-const functionError = "The 'deprecatedFunction' function is deprecated. Please use the 'validFunction' function instead (fix is available).";
-const propError = "The 'validFunction' function's prop 'deprecatedProp' is deprecated. Please use the 'validProp' prop instead (fix is available).";
-const classFunctionError = "The 'deprecatedInheritedFunction' function is deprecated. please stop using it.";
-const errorDate = ' Please fix this issue by 2 November, Friday!';
-
-ruleTester.run('function-deprecation', rule, {
- valid: [
- {
- options: options,
- code: `${notOurFunctionImport} deprecatedFunction(${validProps});`
- },
- {
- options: options,
- code: `${notOurFunctionImport} ${onPress(`deprecatedFunction(${validProps})`)}`
- },
- {
- options: options,
- code: `${notOurFunctionImport} deprecatedFunction(${deprecatedProps}, ${deprecatedProps});`
- },
- {
- options: options,
- code: `${notOurFunctionImport} ${onPress(`deprecatedFunction(${deprecatedProps})`)}`
- },
- {
- options: options,
- code: `${validFunctionImport} validFunction(${validProps});`
- },
- {
- options: options,
- code: `${validFunctionImport} validFunction(${deprecatedProps}, ${validProps});`
- },
- {
- options: options,
- code: `${validFunctionImport} ${onPress(`validFunction(${validProps})`)}`
- },
- {
- options: options,
- code: `${validFunctionRenamedImport} validFunctionRenamed(${validProps});`
- },
- {
- options: options,
- code: `${validFunctionRenamedImport} ${onPress(`validFunctionRenamed(${validProps})`)}`
- },
- {
- options: optionsWithDate,
- code: `${validFunctionImport} validFunction(${validProps});`
- },
- {
- options: optionsWithDate,
- code: `${validFunctionRenamedImport} ${onPress(`validFunctionRenamed(${validProps})`)}`
- },
- {
- options: options,
- code: `${validFunctionImport} validFunction();`
- },
- {
- options: options,
- code: `import * as Everything from '${ourSource}'; Everything.validFunction(${deprecatedProps}, ${validProps});`,
- },
- {
- options: options,
- code: `import * as Everything from '${notOurSource}'; Everything.deprecatedFunction(${validProps});`,
- },
- {
- options: options,
- code: `${fullClassValid}`,
- },
- {
- options: options,
- code: `${fullClassDeprecated5}`,
- },
- {
- options: options,
- code: `
-import {a, c} from '${ourSource}';
-import {b} from '${notOurSource}';
-b.deprecatedFunction2();`
- },
- {
- options: options,
- code: `
-import {a, c} from '${ourSource}';
-import {b} from '${notOurSource}';
-b.deprecatedFunction3();`
- },
- ],
- invalid: [
- {
- options: options,
- code: `${deprecatedFunctionImport} deprecatedFunction(${validProps})`,
- errors: [{message: functionError}, {message: functionError}]
- },
- {
- options: options,
- code: `${validFunctionImport} validFunction(${deprecatedProps}, ${deprecatedProps});`,
- errors: [{message: propError}]
- },
- {
- options: options,
- code: `
-import {Something as deprecatedFunction, deprecatedFunction as someFunction, SomethingElse, validFunction} from '${ourSource}';
-someFunction(${validProps});
-validFunction(${validProps}, ${deprecatedProps});`,
- errors: [{message: functionError}, {message: functionError}, {message: propError}]
- },
- {
- options: options,
- code: `
-import {Something} from '${notOurSource}';
-import {deprecatedFunction as someFunction, validFunction} from '${ourSource}';
-import {SomethingElse} from '${notOurSource2}';
-someFunction(${validProps});
-validFunction(${validProps}, ${deprecatedProps});`,
- errors: [{message: functionError}, {message: functionError}, {message: propError}]
- },
- {
- options: optionsWithDate,
- code: `
-import {Something as deprecatedFunction, deprecatedFunction as someFunction, SomethingElse, validFunction} from '${ourSource}';
-someFunction(${validProps});`,
- errors: [{message: functionError + errorDate}, {message: functionError + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `
-import {Something as deprecatedFunction, deprecatedFunction as someFunction, SomethingElse, validFunction} from '${ourSource}';
-validFunction(${validProps}, ${deprecatedProps});`,
- errors: [{message: functionError + errorDate}, {message: propError + errorDate}]
- },
- {
- options: options,
- code: `
-import {deprecatedFunction as validFunction, SomethingElse} from '${ourSource}';
-validFunction(${validProps});`,
- errors: [{message: functionError}, {message: functionError}]
- },
- {
- options: options,
- code: `import * as Everything from '${ourSource}'; Everything.deprecatedFunction(${validProps});`,
- errors: [{message: functionError}]
- },
- {
- options: options,
- code: `import * as Everything from '${ourSource}'; Everything.validFunction(${validProps}, ${deprecatedProps});`,
- errors: [{message: propError}]
- },
- {
- options: options,
- code: `
-${deprecatedFunctionImport}
-const props = ${validProps};
-deprecatedFunction(props)`,
- errors: [{message: functionError}, {message: functionError}]
- },
- {
- options: options,
- code: `
-${deprecatedFunctionImport}
-function getProps() {
- return ${validProps};
-}
-deprecatedFunction(getProp())`,
- errors: [{message: functionError}, {message: functionError}]
- },
- {
- options: options,
- code: `${fullClassDeprecated1}`,
- errors: [
- { message: functionError },
- { message: propError },
- { message: functionError },
- { message: functionError },
- { message: propError },
- { message: functionError },
- { message: functionError },
- ],
- },
- {
- options: options,
- code: `${fullClassDeprecated2}`,
- errors: [
- { message: propError },
- { message: functionError },
- { message: functionError },
- { message: propError },
- { message: functionError },
- { message: functionError },
- ],
- },
- {
- options: options,
- code: `${fullClassDeprecated3}`,
- errors: [
- { message: classFunctionError }
- ],
- },
- {
- options: options,
- code: `${fullClassDeprecated4}`,
- errors: [
- { message: classFunctionError }
- ],
- },
- {
- options: options,
- code: `
-import {a, c} from '${ourSource}';
-import {b} from '${notOurSource}';
-a.deprecatedFunction3();`,
- errors: [{message: `The 'deprecatedFunction3' function is deprecated. please stop using it.`}]
- },
- ],
-});
diff --git a/eslint-rules/tests/lib/rules/no-direct-import.js b/eslint-rules/tests/lib/rules/no-direct-import.js
deleted file mode 100644
index bb9a9a148f..0000000000
--- a/eslint-rules/tests/lib/rules/no-direct-import.js
+++ /dev/null
@@ -1,74 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/no-direct-import');
-
-const ruleOptions = [
- {origin: 'some-module', destination: 'another-module', applyAutofix: true}
-];
-
-const ruleOptionsArray = [
- {
- rules: [
- {origin: 'some-module', destination: 'another-module', applyAutofix: true},
- {origin: 'old-module', destination: 'new-module', applyAutofix: true}
- ]
- }
-];
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-
-const ruleTester = new RuleTester();
-
-const validExample1 = `import {Component} from 'another-module';`;
-const validExample2 = `import {Component} from 'new-module';`;
-
-const invalidExample1 = `import {Component} from 'some-module';`;
-const invalidExample2 = `import {Component} from 'old-module';`;
-
-const error1 = `Do not import directly from 'some-module'. Please use 'another-module' (autofix available).`;
-const error2 = `Do not import directly from 'old-module'. Please use 'new-module' (autofix available).`;
-
-ruleTester.run('no-direct-import', rule, {
- valid: [
- {
- options: ruleOptions,
- code: validExample1
- },
- {
- options: ruleOptionsArray,
- code: validExample1
- },
- {
- options: ruleOptionsArray,
- code: validExample2
- }
- ],
- invalid: [
- {
- options: ruleOptions,
- code: invalidExample1,
- output: `import {Component} from 'another-module';`,
- errors: [
- {message: error1}
- ]
- },
- {
- options: ruleOptionsArray,
- code: invalidExample1,
- output: `import {Component} from 'another-module';`,
- errors: [
- {message: error1}
- ]
- },
- {
- options: ruleOptionsArray,
- code: invalidExample2,
- output: `import {Component} from 'new-module';`,
- errors: [
- {message: error2}
- ]
- }
- ]
-});
diff --git a/eslint-rules/tests/lib/rules/no-hard-coded-color.js b/eslint-rules/tests/lib/rules/no-hard-coded-color.js
deleted file mode 100644
index cef341494f..0000000000
--- a/eslint-rules/tests/lib/rules/no-hard-coded-color.js
+++ /dev/null
@@ -1,154 +0,0 @@
-const Colors = {
- grey10: '#20303C',
- grey20: '#43515C',
- grey30: '#66737C',
- white: '#ffffff',
- black: '#000000'
-};
-
-const extraFixColorsMap = {
- black: 'black',
- white: 'white',
- '#000': 'black',
- '#fff': 'white'
-};
-
-const rule = require('../../../lib/rules/no-hard-coded-color');
-const RuleTester = require('eslint').RuleTester;
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-const ruleOptions = [{validColors: Colors, customColors: extraFixColorsMap}];
-
-const invalidStyleSheetExample = `StyleSheet.create({
- container: {
- padding: 5,
- backgroundColor: '${Colors.grey30}'
- }
-})
-`;
-
-const validStyleSheetExample = `StyleSheet.create({
- container: {
- padding: 5,
- backgroundColor: Colors.grey30
- }
-})
-`;
-
-const invalidConditionalExpression = `const test = ;`;
-const validConditionalExpression =
- 'const test = ;';
-
-const invalidIdentifierExample = `
- const x = true ? '${Colors.grey10}' : '${Colors.grey20}'
- const test = ;
-`;
-const validIdentifierExample = `
- const x = true ? Colors.grey10 : Colors.grey20
- const test = ;
-`;
-const ruleTester = new RuleTester();
-
-ruleTester.run('no-hard-coded-color', rule, {
- valid: [
- {code: 'const goodUsage = ;'},
- {code: 'const goodUsage = ;'}
- ],
- invalid: [
- {
- options: ruleOptions,
- code: `
- let x;
- let y;
- x = '#20303C';
- y = 3;
- const test = text ;
- `,
- output: `
- let x;
- let y;
- x = Colors.grey10;
- y = 3;
- const test = text ;
- `,
- errors: [{message: "Found '#20303C'. Use UILib colors instead of hardcoded colors."}]
- },
- {
- options: ruleOptions,
- code: `
- let x = 0;
- x = 1;
- x = '#20303C';
- const test = text ;
- `,
- output: `
- let x = 0;
- x = 1;
- x = Colors.grey10;
- const test = text ;
- `,
- errors: [{message: "Found '#20303C'. Use UILib colors instead of hardcoded colors."}]
- },
- {
- options: ruleOptions,
- code: invalidStyleSheetExample,
- output: validStyleSheetExample,
- errors: [{message: 'Found \'#66737C\'. Use UILib colors instead of hardcoded colors.'}]
- },
- {
- options: ruleOptions,
- code: invalidConditionalExpression,
- output: validConditionalExpression,
- errors: [
- {message: 'Found \'#20303C\'. Use UILib colors instead of hardcoded colors.'},
- {message: 'Found \'#43515C\'. Use UILib colors instead of hardcoded colors.'}
- ]
- },
- {
- options: ruleOptions,
- code: invalidIdentifierExample,
- output: validIdentifierExample,
- errors: [
- {message: 'Found \'#20303C\'. Use UILib colors instead of hardcoded colors.'},
- {message: 'Found \'#43515C\'. Use UILib colors instead of hardcoded colors.'}
- ]
- },
- {
- options: ruleOptions,
- code: `const badUsage = ;`,
- output: 'const badUsage = ;',
- errors: [{message: 'Found \'#20303C\'. Use UILib colors instead of hardcoded colors.'}]
- },
- {
- options: ruleOptions,
- code: 'const badUsage = ;',
- errors: [{message: 'Found \'#123456\'. Use UILib colors instead of hardcoded colors.'}]
- },
- {
- options: ruleOptions,
- code: `const badUsage = ;`,
- output: 'const badUsage = ;',
- errors: [{message: 'Found \'#20303c\'. Use UILib colors instead of hardcoded colors.'}]
- },
- {
- options: ruleOptions,
- code: 'const badUsage = ;',
- output: 'const badUsage = ;',
- errors: [{message: 'Found \'#fff\'. Use UILib colors instead of hardcoded colors.'}]
- },
- {
- options: [{...ruleOptions[0], dueDate: 'Thursday, 12 August'}],
- code: 'const badUsage = ;',
- output: 'const badUsage = ;',
- errors: [
- {
- message:
- 'Found \'#ffffff\'. Use UILib colors instead of hardcoded colors. Please fix this issue by Thursday, 12 August!'
- }
- ]
- }
- ]
-});
diff --git a/eslint-rules/tests/lib/rules/no-hard-coded-font.js b/eslint-rules/tests/lib/rules/no-hard-coded-font.js
deleted file mode 100644
index 5af04877df..0000000000
--- a/eslint-rules/tests/lib/rules/no-hard-coded-font.js
+++ /dev/null
@@ -1,52 +0,0 @@
-const rule = require('../../../lib/rules/no-hard-coded-font');
-const RuleTester = require('eslint').RuleTester;
-
-RuleTester.setDefaultConfig({
- parserOptions: {
- ecmaVersion: 6,
- ecmaFeatures: {
- jsx: true,
- experimentalObjectRestSpread: true,
- },
- },
-});
-
-const ruleTester = new RuleTester();
-
-ruleTester.run('no-hard-coded-font', rule, {
- valid: [
- {code: 'const goodUsage = ;'},
- {code: 'const goodUsage = ;'}
- ],
- invalid: [
- {
- // fontWeight as a string
- code: 'const badUsage = ;',
- errors: [
- {message: 'Found value \'100\' in font style prop. Use UILib typography instead of hardcoded font styles.'}
- ],
- },
- {
- // fontSize as a number
- code: 'const badUsage = ;',
- errors: [
- {message: 'Found value \'24\' in font style prop. Use UILib typography instead of hardcoded font styles.'}
- ],
- },
- {
- // fontSize as a trinry
- code: 'const badUsage = ;',
- errors: [
- {message: 'Found value \'16\' in font style prop. Use UILib typography instead of hardcoded font styles.'},
- {message: 'Found value \'17\' in font style prop. Use UILib typography instead of hardcoded font styles.'}
- ],
- },
- {
- // fontSize as a string variable
- code: 'const size = 22; const badUsage = ;',
- errors: [
- {message: 'Found value \'22\' in font style prop. Use UILib typography instead of hardcoded font styles.'}
- ],
- },
- ],
-});
diff --git a/eslint-rules/tests/lib/rules/prop-value-shape-deprecation.js b/eslint-rules/tests/lib/rules/prop-value-shape-deprecation.js
deleted file mode 100644
index aeae5a59c2..0000000000
--- a/eslint-rules/tests/lib/rules/prop-value-shape-deprecation.js
+++ /dev/null
@@ -1,483 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/prop-value-shape-deprecation');
-const deprecationsJson = require('../../prop-value-shape-deprecation.json');
-const fs = require('fs');
-const bigExampleValid = fs.readFileSync('../demo/src/screens/componentScreens/ChipScreen.tsx', 'utf8');
-// TODO: parsing error
-// const bigExampleError = fs.readFileSync('../demo/src/screens/componentScreens/PickerScreen.tsx', 'utf8');
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-
-const ruleTester = new RuleTester();
-const imageSource = 'imageSource: {uri: some_uri}';
-const source = 'source: {uri: some_uri}';
-const ruleOptions = [{deprecations: deprecationsJson}];
-const PassedPropExampleCode = `
-import {Label} from 'our-source';
-const myProps = {
- goodProp: goodValue,
- ${imageSource}
-};
-
-
-`;
-const PassedPropExampleOutput = `
-import {Label} from 'our-source';
-const myProps = {
- goodProp: goodValue,
- ${source}
-};
-
-
-`;
-
-const firstLevelSpreadCode = `
-import {Label} from 'our-source';
-const myProps = {
- avatarProps: {
- goodProp: goodValue,
- ${imageSource}
- }
-};
-
-
-`;
-
-const firstLevelSpreadOutput = `
-import {Label} from 'our-source';
-const myProps = {
- avatarProps: {
- goodProp: goodValue,
- ${source}
- }
-};
-
-
-`;
-
-const secondLevelSpreadCode = `
-import {Label} from 'our-source';
-const myProps = {
- goodProp: goodValue,
- ${imageSource}
-};
-
-
-`;
-
-const secondLevelSpreadOutput = `
-import {Label} from 'our-source';
-const myProps = {
- goodProp: goodValue,
- ${source}
-};
-
-
-`;
-
-const deprecationWithoutFix = `import React, {Component} from 'react';
-import {ListItem} from 'our-source';
-class NewFeature extends Component {
- render () {
- return (
-
- )
- };
-}`;
-
-ruleTester.run('prop-value-shape-deprecation', rule, {
- valid: [
- {
- options: ruleOptions,
- code: ``
- },
- {
- options: ruleOptions,
- code: ` `
- },
- {
- options: ruleOptions,
- code: ``
- },
- {
- options: ruleOptions,
- code: bigExampleValid
- }
- ],
- invalid: [
- {
- options: ruleOptions,
- code: `import {ListItem} from 'our-source'; `,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'ListItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import {ListItem} from 'our-source'; `
- },
- {
- options: ruleOptions,
- code: `import {ListItem} from 'our-source'; `,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'ListItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import {ListItem} from 'our-source'; `
- },
- {
- options: ruleOptions,
- code: `import {ListItem} from 'our-source'; `,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'ListItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import {ListItem} from 'our-source'; `
- },
- {
- options: ruleOptions,
- code: PassedPropExampleCode,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'Label' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: PassedPropExampleOutput
- },
- {
- options: ruleOptions,
- code: firstLevelSpreadCode,
- errors: [
- {
- message: `The shape of 'avatarProps' prop of 'Label' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: firstLevelSpreadOutput
- },
- {
- options: ruleOptions,
- code: secondLevelSpreadCode,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'Label' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: secondLevelSpreadOutput
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {Label, View} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
-
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'Label' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {Label, View} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
-
-
- )
- };
- }`
- },
- // {
- // options: ruleOptions,
- // code: bigExampleError,
- // errors: [
- // {
- // message: `The shape of 'pannableHeaderProps' prop of 'Dialog' doesn't contain 'title' anymore. Please use 'header' instead (fix is available).`
- // }
- // ]
- // },
- {
- options: ruleOptions,
- code: `
- import {Label} from 'our-source';
- const myProps1 = {
- avatarProps: {
- ${imageSource},
- goodProp1: goodValue1
- }
- };
-
- const myProps2 = {
- buttonProps: {
- goodProp2: goodValue2,
- goodProp3: goodValue3
- }
- };
-
- `,
- errors: [
- {
- message: `The shape of 'avatarProps' prop of 'Label' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ]
- },
- {
- options: ruleOptions,
- code: `
- import {Label} from 'our-source';
- const myProps1 = {
- buttonProps: {
- goodProp1: goodValue1,
- goodProp2: goodValue2,
- }
- };
-
- const myProps2 = {
- avatarProps: {
- goodProp3: goodValue3,
- ${imageSource}
- }
- };
-
- `,
- errors: [
- {
- message: `The shape of 'avatarProps' prop of 'Label' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ]
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {Dialog, View} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
-
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'avatar' prop of 'Dialog.Header' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {Dialog, View} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
-
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'label.avatarProps' prop of 'MediaItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {ChipList} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'chips.label.avatarProps' prop of 'ChipList' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {ChipList} from 'our-source';
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- class NewFeature extends Component {
- render () {
- const labelProps = {
- avatarProps: {${imageSource}}
- };
- return (
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'label.avatarProps' prop of 'MediaItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- class NewFeature extends Component {
- render () {
- const labelProps = {
- avatarProps: {${source}}
- };
- return (
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- const labelProps = {
- avatarProps: {${imageSource}}
- };
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'label.avatarProps' prop of 'MediaItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- const labelProps = {
- avatarProps: {${source}}
- };
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- const labelProps = {
- avatarProps: {${imageSource}}
- };
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'label.avatarProps' prop of 'MediaItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- const labelProps = {
- avatarProps: {${source}}
- };
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- const imageProp = {
- propA: 'valueA',
- ${imageSource}
- };
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`,
- errors: [
- {
- message: `The shape of 'label.avatar' prop of 'MediaItem' doesn't contain 'imageSource' anymore. Please use 'source' instead (fix is available).`
- }
- ],
- output: `import React, {Component} from 'react';
- import {MediaItem} from 'our-source';
- const imageProp = {
- propA: 'valueA',
- ${source}
- };
- class NewFeature extends Component {
- render () {
- return (
-
- )
- };
- }`
- },
- {
- options: ruleOptions,
- code: deprecationWithoutFix,
- errors: [
- {
- message: `The shape of 'thumbnail' prop of 'ListItem' doesn't contain 'useCustomTheme' anymore.`
- }
- ],
- output: deprecationWithoutFix
- }
- ]
-});
diff --git a/eslint-rules/tests/lib/rules/typography-deprecation.js b/eslint-rules/tests/lib/rules/typography-deprecation.js
deleted file mode 100644
index 9e93ea7b21..0000000000
--- a/eslint-rules/tests/lib/rules/typography-deprecation.js
+++ /dev/null
@@ -1,723 +0,0 @@
-const RuleTester = require('eslint').RuleTester;
-const rule = require('../../../lib/rules/typography-deprecation');
-const deprecationsJson = require('../../typography_deprecation.json');
-
-RuleTester.setDefaultConfig({
- parser: 'babel-eslint',
- parserOptions: {ecmaVersion: 6, ecmaFeatures: {jsx: true}}
-});
-
-const ruleTester = new RuleTester();
-
-const ourSource = 'our-source';
-const notOurSource = 'another-source';
-const notOurSource2 = 'another-source-2';
-
-const options = [{deprecations: deprecationsJson, source: ourSource}];
-const optionsWithDate = [{deprecations: deprecationsJson, source: ourSource, dueDate: '2 November, Friday'}];
-
-const ourImport = `import {Typography} from '${ourSource}';`;
-const ourImportRenamed = `import {Typography as UITypography} from '${ourSource}';`;
-const notOurImport = `import {Typography} from '${notOurSource}';`;
-
-const constValid1 = 'const typography = Typography.valid;';
-const constValidRenamed1 = 'const typography = UITypography.valid;';
-const constDeprecated1 = 'const typography = Typography.deprecated;';
-const constDeprecatedRenamed1 = 'const typography = UITypography.deprecated;';
-
-const constValid2 = 'const typography = Title ;';
-const constValidRenamed2 = 'const typography = Title ;';
-const constDeprecated2 = 'const typography = Title ;';
-const constDeprecatedRenamed2 = 'const typography = Title ;';
-
-const constValid3 = 'const typography = Title ;';
-const constDeprecated3 = 'const typography = Title ;';
-
-const styleSheetValid1 = `const styles = StyleSheet.create({text: {...Typography.valid}});`;
-const styleSheetValidRenamed1 = `const styles = StyleSheet.create({text: {...UITypography.valid}});`;
-const styleSheetDeprecated1 = `const styles = StyleSheet.create({text: {...Typography.deprecated}});`;
-const styleSheetDeprecatedRenamed1 = `const styles = StyleSheet.create({text: {...UITypography.deprecated}});`;
-
-const styleSheetValid2 = `const styles = StyleSheet.create({text: Typography.valid});`;
-const styleSheetValidRenamed2 = `const styles = StyleSheet.create({text: UITypography.valid});`;
-const styleSheetDeprecated2 = `const styles = StyleSheet.create({text: Typography.deprecated});`;
-const styleSheetDeprecatedRenamed2 = `const styles = StyleSheet.create({text: UITypography.deprecated});`;
-
-const jsxValid1 = 'Title ';
-const jsxValidRenamed1 = 'Title ';
-const jsxDeprecated1 = 'Title ';
-const jsxDeprecatedRenamed1 = 'Title ';
-
-const jsxValid2 = 'Title ';
-const jsxDeprecated2 = 'Title ';
-
-const jsxValid3 = 'Title ';
-const jsxValidRenamed3 = 'Title ';
-const jsxDeprecated3 = 'Title ';
-const jsxDeprecatedRenamed3 = 'Title ';
-
-const jsxValid4 = 'Title ';
-const jsxDeprecated4 = 'Title ';
-
-const fullClassValid = `
-${ourImport}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsxValid1}
- ${jsxValid2}
- ${jsxValid3}
- ${jsxValid4}
-
- );
- }
-}`;
-
-const fullClassValidRenamed = `
-${ourImportRenamed}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsxValidRenamed1}
- ${jsxValid2}
- ${jsxValidRenamed3}
- ${jsxValid4}
-
- );
- }
-}`;
-
-const fullClassDeprecated = `
-${ourImport}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsxDeprecated1}
- ${jsxDeprecated2}
- ${jsxDeprecated3}
- ${jsxDeprecated4}
-
- );
- }
-}`;
-
-const fullClassDeprecatedRenamed = `
-${ourImportRenamed}
-class Example extends Component {
-
- render() {
- return (
-
- ${jsxDeprecatedRenamed1}
- ${jsxDeprecated2}
- ${jsxDeprecatedRenamed3}
- ${jsxDeprecated4}
-
- );
- }
-}`;
-
-const fullClassTest1 = `
-import {Something} from '${notOurSource}';
-${ourImport}
-import {SomethingElse} from '${notOurSource2}';
-
-const validTypography = (typography) => (myLogic(typography) ? typography : undefined);
-
-class Example extends React.Component {
- renderComponent1() {
- return this.props.list.map((item) => (
-
- ));
- }
-
- render() {
- return (
-
-
- {this.renderComponent1()}
-
-
-
-
- );
- }
-}
-
-export default Example;`;
-
-const fullClassTest2 = `
-import * as LetsImportEverything from '${ourSource}';
-
-const {Typography}: typeof LetsImportEverything = require('${ourSource}');
-
-const validTypography = (typography) => (myLogic(typography) ? typography : undefined);
-
-class Example extends React.Component {
- renderComponent1() {
- return this.props.list.map((item) => (
-
- ));
- }
-
- render() {
- return (
-
-
- {this.renderComponent1()}
-
-
-
-
- );
- }
-}
-
-export default Example;`;
-
-const error = "'Typography.deprecated' is deprecated. Please use 'Typography.valid' instead (fix is available).";
-const errorDate = ' Please fix this issue by 2 November, Friday!';
-
-ruleTester.run('typography-deprecation', rule, {
- valid: [
- {
- options: options,
- code: `${notOurImport} ${constDeprecated1}`
- },
- {
- options: options,
- code: `${ourImport} ${constValid1}`
- },
- {
- options: options,
- code: `${ourImport} ${constValid2}`
- },
- {
- options: options,
- code: `${ourImport} ${constValid3}`
- },
- {
- options: options,
- code: `${ourImport} ${styleSheetValid1}`
- },
- {
- options: options,
- code: `${ourImport} ${styleSheetValid2}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid1}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid2}`
- },
- {
- options: options,
- code: `${jsxValid2}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid3}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid4}`
- },
- {
- options: options,
- code: `${ourImport} ${jsxValid4}`
- },
- {
- options: options,
- code: `${fullClassValid}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constValidRenamed1}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constValidRenamed2}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constValid3}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${styleSheetValidRenamed1}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${styleSheetValidRenamed2}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValidRenamed1}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValid2}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValidRenamed3}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValid4}`
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxValid4}`
- },
- {
- options: options,
- code: `${fullClassValidRenamed}`
- },
- {
- options: options,
- code: `${fullClassValidRenamed}`,
- },
- {
- options: options,
- code: `
- ${ourImport}
- import {List} from 'another-source';
- `
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography} from 'our-source';
- import {List} from 'another-source';
- export default class OurList extends Component {
- render() {
- const titleVal = 'bla';
- return (
-
- )
- }
- }`
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, List} from 'our-source';
- export default class OurList extends Component {
- render() {
- const titleVal = 'bla';
- return (
-
- )
- }
- }`
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, List} from 'our-source';
- export default class OurList extends Component {
- render() {
- const titleVal = this.props.title;
- const subtitleVal = this.props.subtitle;
- return (
-
- )
- }
- }`
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, List} from 'our-source';
- export default class OurList extends Component {
- render() {
- const {title, subtitle} = this.props;
- return (
-
- )
- }
- }`
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, List} from 'our-source';
- export default class OurList extends Component {
- render() {
- const {title: titleVal, subtitle: subtitleVal} = this.props;
- return (
-
- )
- }
- }`
- }
- ],
- invalid: [
- {
- options: options,
- code: `${ourImport} ${constDeprecated1}`,
- output: `${ourImport} const typography = Typography.valid;`,
- errors: [{message: error}]
- },
- {
- options: optionsWithDate,
- code: `${ourImport} ${constDeprecated1}`,
- output: `${ourImport} const typography = Typography.valid;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `${ourImport} ${constDeprecated2}`,
- output: `${ourImport} const typography = Title ;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `${ourImport} ${constDeprecated3}`,
- output: `${ourImport} const typography = Title ;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: options,
- code: `${ourImport} ${styleSheetDeprecated1}`,
- output: `${ourImport} const styles = StyleSheet.create({text: {...Typography.valid}});`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${styleSheetDeprecated2}`,
- output: `${ourImport} const styles = StyleSheet.create({text: Typography.valid});`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated1}`,
- output: `${ourImport} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated2}`,
- output: `${ourImport} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated2}`,
- output: `${ourImport} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated3}`,
- output: `${ourImport} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImport} ${jsxDeprecated4}`,
- output: `${ourImport} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${fullClassDeprecated}`,
- errors: [{message: error}, {message: error}, {message: error}, {message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${constDeprecatedRenamed1}`,
- output: `${ourImportRenamed} const typography = UITypography.valid;`,
- errors: [{message: error}]
- },
- {
- options: optionsWithDate,
- code: `${ourImportRenamed} ${constDeprecatedRenamed1}`,
- output: `${ourImportRenamed} const typography = UITypography.valid;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `${ourImportRenamed} ${constDeprecatedRenamed2}`,
- output: `${ourImportRenamed} const typography = Title ;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: optionsWithDate,
- code: `${ourImportRenamed} ${constDeprecated3}`,
- output: `${ourImportRenamed} const typography = Title ;`,
- errors: [{message: error + errorDate}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${styleSheetDeprecatedRenamed1}`,
- output: `${ourImportRenamed} const styles = StyleSheet.create({text: {...UITypography.valid}});`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${styleSheetDeprecatedRenamed2}`,
- output: `${ourImportRenamed} const styles = StyleSheet.create({text: UITypography.valid});`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecatedRenamed1}`,
- output: `${ourImportRenamed} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecated2}`,
- output: `${ourImportRenamed} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecatedRenamed3}`,
- output: `${ourImportRenamed} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${ourImportRenamed} ${jsxDeprecated4}`,
- output: `${ourImportRenamed} Title `,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${fullClassDeprecatedRenamed}`,
- errors: [{message: error}, {message: error}, {message: error}, {message: error}]
- },
- {
- options: options,
- code: `${fullClassTest1}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `${fullClassTest2}`,
- errors: [{message: error}]
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, Text} from 'our-source';
- export default class OurList extends Component {
- render() {
- const titleVal = true;
- return (
-
- )
- }
- }`,
- errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, Text} from 'our-source';
- export default class OurList extends Component {
- render() {
- const {isTitle} = this.props;
- const titleVal = this.props.isTitle;
- const subtitleVal = !this.props.isTitle;
- return (
-
- )
- }
- }`,
- errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, Text} from 'our-source';
- export default class OurList extends Component {
- render() {
- const {isTitle} = this.props;
- const titleVal = isTitle;
- const subtitleVal = !isTitle;
- return (
-
- )
- }
- }`,
- errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, TextField} from 'our-source';
- export default class OurList extends Component {
- render() {
- const titleVal = true;
- return (
-
- )
- }
- }`,
- errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, TextField} from 'our-source';
- export default class OurList extends Component {
- render() {
- const {isTitle} = this.props;
- const titleVal = this.props.isTitle;
- const subtitleVal = !this.props.isTitle;
- return (
-
- )
- }
- }`,
- errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- },
- {
- options: options,
- code: `
- import React, {Component} from 'react';
- import {Typography, TextField} from 'our-source';
- export default class OurList extends Component {
- render() {
- const {isTitle} = this.props;
- const titleVal = isTitle;
- const subtitleVal = !isTitle;
- return (
-
- )
- }
- }`,
- errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- },
- // TODO: these tests are not currently supported, they might be supported when prop-value-shape-deprecation is merged (or we'll have to add support)
- // {
- // options: options,
- // code: `
- // import React, {Component} from 'react';
- // import {Typography, Button} from 'our-source';
- // export default class OurList extends Component {
- // render() {
- // const titleVal = true;
- // return (
- //
- // )
- // }
- // }`,
- // errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- // },
- // {
- // options: options,
- // code: `
- // import React, {Component} from 'react';
- // import {Typography, Button} from 'our-source';
- // export default class OurList extends Component {
- // render() {
- // const titleVal = true;
- // return (
- //
- // )
- // }
- // }`,
- // errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- // },
- // {
- // options: options,
- // code: `
- // import React, {Component} from 'react';
- // import {Typography, Card} from 'our-source';
- // export default class OurList extends Component {
- // render() {
- // const titleVal = true;
- // return (
- //
- // )
- // }
- // }`,
- // errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- // },
- // {
- // options: options,
- // code: `
- // import React, {Component} from 'react';
- // import {Typography, Label} from 'our-source';
- // export default class OurList extends Component {
- // render() {
- // const titleVal = true;
- // return (
- //
- // )
- // }
- // }`,
- // errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- // },
- // TODO: this is not currently supported, it should be easily supported after the new utils are added
- // {
- // options: options,
- // code: `
- // import React, {Component} from 'react';
- // import {Typography, Text as T} from 'our-source';
- // export default class OurList extends Component {
- // render() {
- // const titleVal = true;
- // return (
- //
- // )
- // }
- // }`,
- // errors: [{message: `'Typography.title' is deprecated. Please use 'Typography.heading' instead (fix is available).`}]
- // },
- ],
-});
diff --git a/eslint-rules/tests/prop-value-shape-deprecation.json b/eslint-rules/tests/prop-value-shape-deprecation.json
deleted file mode 100644
index 899998624a..0000000000
--- a/eslint-rules/tests/prop-value-shape-deprecation.json
+++ /dev/null
@@ -1,63 +0,0 @@
-[
- {
- "components": ["ListItem", "Label", "Chip", "Dialog.Header"],
- "propNames": ["avatar", "avatarProps"],
- "shape": [
- {
- "prop": "imageSource",
- "message": "Please use 'source' instead (fix is available).",
- "fix": {
- "propName": "source"
- }
- }
- ]
- },
- {
- "components": ["MediaItem"],
- "propNames": ["label.avatar", "label.avatarProps"],
- "shape": [
- {
- "prop": "imageSource",
- "message": "Please use 'source' instead (fix is available).",
- "fix": {
- "propName": "source"
- }
- }
- ]
- },
- {
- "components": ["ChipList"],
- "propNames": ["chips.label.avatar", "chips.label.avatarProps"],
- "shape": [
- {
- "prop": "imageSource",
- "message": "Please use 'source' instead (fix is available).",
- "fix": {
- "propName": "source"
- }
- }
- ]
- },
- {
- "components": ["Dialog"],
- "propNames": ["pannableHeaderProps"],
- "shape": [
- {
- "prop": "title",
- "message": "Please use 'header' instead (fix is available).",
- "fix": {
- "propName": "header"
- }
- }
- ]
- },
- {
- "components": ["ListItem"],
- "propNames": ["thumbnail"],
- "shape": [
- {
- "prop": "useCustomTheme"
- }
- ]
- }
-]
diff --git a/eslint-rules/tests/typography_deprecation.json b/eslint-rules/tests/typography_deprecation.json
deleted file mode 100644
index 00885a9dd8..0000000000
--- a/eslint-rules/tests/typography_deprecation.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- {
- "path": "Typography.deprecated",
- "message": "Please use 'Typography.valid' instead (fix is available).",
- "fix": "Typography.valid"
- },
- {
- "path": "Typography.title",
- "message": "Please use 'Typography.heading' instead (fix is available).",
- "fix": "Typography.heading",
- "components": ["Text", "TextField"]
- }
-]
\ No newline at end of file
diff --git a/expoDemo/.expo-shared/README.md b/expoDemo/.expo-shared/README.md
deleted file mode 100644
index e9e5318987..0000000000
--- a/expoDemo/.expo-shared/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-> Why do I have a folder named ".expo-shared" in my project?
-
-The ".expo-shared" folder is created when running commands that produce state that is intended to be shared with all developers on the project. For example, "npx expo-optimize".
-
-> What does the "assets.json" file contain?
-
-The "assets.json" file describes the assets that have been optimized through "expo-optimize" and do not need to be processed again.
-
-> Should I commit the ".expo-shared" folder?
-
-Yes, you should share the ".expo-shared" folder with your collaborators.
diff --git a/expoDemo/.expo-shared/assets.json b/expoDemo/.expo-shared/assets.json
deleted file mode 100644
index 1e6decfbb5..0000000000
--- a/expoDemo/.expo-shared/assets.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true,
- "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true
-}
diff --git a/expoDemo/.gitignore b/expoDemo/.gitignore
deleted file mode 100644
index 454c38f7ac..0000000000
--- a/expoDemo/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-node_modules/
-.expo/
-npm-debug.*
-*.jks
-*.p8
-*.p12
-*.key
-*.mobileprovision
-*.orig.*
-web-build/
-
-# macOS
-.DS_Store
diff --git a/expoDemo/App.tsx b/expoDemo/App.tsx
deleted file mode 100644
index 1c1648d07a..0000000000
--- a/expoDemo/App.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import 'react-native-gesture-handler';
-import React from 'react';
-import {AppRegistry} from 'react-native';
-import {map} from 'lodash';
-import {NavigationContainer} from '@react-navigation/native';
-import {createStackNavigator} from '@react-navigation/stack';
-import {screens, loadDemoConfigurations} from 'unicorn-demo-app';
-import MainScreen from './MainScreen';
-
-loadDemoConfigurations()
-
-const Stack = createStackNavigator();
-
-import {View, Text} from 'react-native-ui-lib';
-
-// export default function App() {
-// return (
-//
-//
-//
-// );
-// }
-
-
-export default function App() {
- return (
-
-
-
- {map(screens, (screen, key) => {
- return ;
- })}
-
-
- );
-}
\ No newline at end of file
diff --git a/expoDemo/MainScreen.tsx b/expoDemo/MainScreen.tsx
deleted file mode 100644
index 39f7fd70d7..0000000000
--- a/expoDemo/MainScreen.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import React, {useCallback} from 'react';
-import {SectionList, StyleSheet} from 'react-native';
-import {Colors, View, Text, TouchableOpacity, Spacings, Icon, Assets, Incubator} from 'react-native-ui-lib';
-import {menuStructure} from 'unicorn-demo-app';
-import _ from 'lodash';
-import fuzzysearch from 'fuzzysearch';
-
-const {TextField} = Incubator;
-
-const sections = _.map(menuStructure, (section, key) => {
- return {
- key,
- data: section.screens
- };
-});
-
-export default function MainScreen({navigation}) {
- const [searchText, setSearchText] = React.useState('');
-
- const includedInSearch = (text = '') => {
- return fuzzysearch(searchText.toLowerCase(), text.toLowerCase());
- };
-
- const onItemPress = useCallback(({customValue: screenId}) => {
- // convert "unicorn.components.ActionBarScreen" -> "ActionBar"
- navigation.navigate(screenId);
- });
-
- const renderSectionHeader = useCallback(({section}) => {
- if (!_.find(section.data, screen => includedInSearch(screen.title))) {
- return null;
- }
-
- return (
-
-
- {section.key}
-
-
- );
- },
- [searchText]);
-
- const renderItem = useCallback(({item}) => {
- if (!includedInSearch(item.title)) {
- return null;
- }
-
- if (!item.title) {
- return ;
- }
-
- const screenId = _.flow((str: string) => _.split(str, '.'),
- _.last,
- (str: string) => _.replace(str, 'Screen', ''))(item.screen);
-
- return (
-
-
- {item.title}
-
-
- );
- },
- [searchText]);
-
- return (
-
- setSearchText(text)}
- value={searchText}
- preset={null}
- text70
- fieldStyle={styles.fieldStyle}
- leadingAccessory={ }
- />
- }
- sections={sections}
- renderSectionHeader={renderSectionHeader}
- renderItem={renderItem}
- />
-
- );
-}
-
-const styles = StyleSheet.create({
- fieldStyle: {
- paddingVertical: Spacings.s3
- },
- sectionItem: {
- borderBottomWidth: 1,
- borderBottomColor: Colors.grey60,
- paddingHorizontal: Spacings.s5,
- paddingVertical: Spacings.s3
- }
-});
diff --git a/expoDemo/app.json b/expoDemo/app.json
deleted file mode 100644
index dae1c36bee..0000000000
--- a/expoDemo/app.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "react-native-ui-lib",
- "displayName": "rnuilib Demo",
- "expo": {
- "name": "rnuilib",
- "slug": "rnuilib",
- "privacy": "public",
- "description": "Demo project show case for react-native-ui-lib components",
- "githubUrl": "https://github.com/wix/react-native-ui-lib",
- "version": "7.1.0",
- "orientation": "portrait",
- "icon": "https://user-images.githubusercontent.com/1780255/107911939-34e98a80-6f66-11eb-91a6-1eb1b384e429.png",
- "splash": {
- "image": "./assets/splash.png",
- "resizeMode": "contain",
- "backgroundColor": "#ffffff"
- },
- "updates": {
- "fallbackToCacheTimeout": 0
- },
- "assetBundlePatterns": [
- "**/*"
- ],
- "ios": {
- "supportsTablet": true
- },
- "android": {
- "adaptiveIcon": {
- "foregroundImage": "./assets/adaptive-icon.png",
- "backgroundColor": "#FFFFFF"
- }
- },
- "web": {
- "favicon": "./assets/favicon.png"
- }
- }
-}
diff --git a/expoDemo/assets/adaptive-icon.png b/expoDemo/assets/adaptive-icon.png
deleted file mode 100644
index 03d6f6b6c6..0000000000
Binary files a/expoDemo/assets/adaptive-icon.png and /dev/null differ
diff --git a/expoDemo/assets/favicon.png b/expoDemo/assets/favicon.png
deleted file mode 100644
index e75f697b18..0000000000
Binary files a/expoDemo/assets/favicon.png and /dev/null differ
diff --git a/expoDemo/assets/icon.png b/expoDemo/assets/icon.png
deleted file mode 100644
index a0b1526fc7..0000000000
Binary files a/expoDemo/assets/icon.png and /dev/null differ
diff --git a/expoDemo/assets/splash.png b/expoDemo/assets/splash.png
deleted file mode 100644
index 6f47774733..0000000000
Binary files a/expoDemo/assets/splash.png and /dev/null differ
diff --git a/expoDemo/babel.config.js b/expoDemo/babel.config.js
deleted file mode 100644
index 870a4bf29c..0000000000
--- a/expoDemo/babel.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = function (api) {
- api.cache(true);
- return {
- presets: ['babel-preset-expo'],
- plugins: ['react-native-reanimated/plugin']
- };
-};
diff --git a/expoDemo/metro.config.js b/expoDemo/metro.config.js
deleted file mode 100644
index 0ca1405fbb..0000000000
--- a/expoDemo/metro.config.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const {getDefaultConfig} = require('@expo/metro-config');
-
-/**
- * Metro configuration for React Native
- * https://github.com/facebook/react-native
- *
- * @format
- */
-module.exports = (async () => {
- const {
- resolver: {sourceExts, assetExts}
- } = await getDefaultConfig(__dirname);
- return {
- transformer: {
- getTransformOptions: async () => ({
- transform: {
- experimentalImportSupport: false,
- inlineRequires: false
- }
- }),
- babelTransformerPath: require.resolve('react-native-svg-transformer')
- },
- resolver: {
- assetExts: assetExts.filter(ext => ext !== 'svg'),
- sourceExts: [...sourceExts, 'svg']
- }
- };
-})();
diff --git a/expoDemo/package.json b/expoDemo/package.json
deleted file mode 100644
index 032a603884..0000000000
--- a/expoDemo/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "scripts": {
- "start": "expo start",
- "android": "expo start --android",
- "ios": "expo start --ios",
- "web": "expo start --web",
- "eject": "expo eject"
- },
- "dependencies": {
- "@expo/metro-config": "^0.7.1",
- "@react-native/normalize-color": "^2.1.0",
- "@react-navigation/native": "^6.1.5",
- "@react-navigation/stack": "^6.3.15",
- "expo": "^48.0.4",
- "expo-status-bar": "~1.4.4",
- "fuzzysearch": "^1.0.3",
- "lodash": "^4.17.21",
- "metro-config": "^0.75.1",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-native": "0.71.3",
- "react-native-gesture-handler": "~2.9.0",
- "react-native-haptic-feedback": "^1.14.0",
- "react-native-navigation": "^7.32.1",
- "react-native-reanimated": "~2.14.4",
- "react-native-safe-area-context": "4.5.0",
- "react-native-screens": "~3.20.0",
- "react-native-svg": "13.4.0",
- "react-native-svg-transformer": "1.1.0",
- "react-native-ui-lib": "^7.1.0",
- "react-native-web": "~0.18.12",
- "unicorn-demo-app": "^7.1.0"
- },
- "devDependencies": {
- "@babel/core": "^7.21.0",
- "@types/react": "~18.0.28",
- "@types/react-native": "~0.71.3",
- "typescript": "^4.9.5"
- },
- "private": true
-}
diff --git a/expoDemo/tsconfig.json b/expoDemo/tsconfig.json
deleted file mode 100644
index b9567f6052..0000000000
--- a/expoDemo/tsconfig.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "extends": "expo/tsconfig.base",
- "compilerOptions": {
- "strict": true
- }
-}
diff --git a/extensions/rnuilib-snippets/.gitattributes b/extensions/rnuilib-snippets/.gitattributes
deleted file mode 100644
index 13bc9c2eed..0000000000
--- a/extensions/rnuilib-snippets/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-# Set default behavior to automatically normalize line endings.
-* text=auto
-
diff --git a/extensions/rnuilib-snippets/.gitignore b/extensions/rnuilib-snippets/.gitignore
deleted file mode 100644
index aeee7322bf..0000000000
--- a/extensions/rnuilib-snippets/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-*.vsix
diff --git a/extensions/rnuilib-snippets/.vscodeignore b/extensions/rnuilib-snippets/.vscodeignore
deleted file mode 100644
index c6d50979be..0000000000
--- a/extensions/rnuilib-snippets/.vscodeignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.vscode/**
-.vscode-test/**
-.gitignore
-vsc-extension-quickstart.md
\ No newline at end of file
diff --git a/extensions/rnuilib-snippets/CHANGELOG.md b/extensions/rnuilib-snippets/CHANGELOG.md
deleted file mode 100644
index db72f1ea07..0000000000
--- a/extensions/rnuilib-snippets/CHANGELOG.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Change Log
-
-All notable changes to the "rnuilib-snippets" extension will be documented in this file.
-
-## [1.0.3]
-- Updating snippets and README file.
-
-## [1.0.2]
-- Updating snippets.
-
-## [1.0.1]
-- Updating snippets.
-
-## [1.0.0]
-- Initial release of rnuilib-snippets extension.
diff --git a/extensions/rnuilib-snippets/LICENSE b/extensions/rnuilib-snippets/LICENSE
deleted file mode 100644
index 8bdcf7aa2f..0000000000
--- a/extensions/rnuilib-snippets/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Wix.com
-
-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.
diff --git a/extensions/rnuilib-snippets/README.md b/extensions/rnuilib-snippets/README.md
deleted file mode 100644
index 8393185d74..0000000000
--- a/extensions/rnuilib-snippets/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# rnuilib-snippets
--------------------
-
-This extension provides code snippets for `react-native-ui-lib`'s components for VS Code editor.
-The extension supports JavaScript and TypeScript, ReactJavaScript and ReactTypeScript.
-
-## How to use
-
-After installing the extension you can generate a code snippet by simply typing a component's name (camelCase) and see the option in the suggestions tooltip.
-⚠️ Make sure the 'snippet suggestion' option in your user settings is set to 'top' for better visibility.
-
-Using the 'tab' key you can navigate through the component's fields to enter your own values.
-
-Also, type 'rnuilib' and get the rnuilib import - `import {} from 'react-native-ui-lib'` - necessary to import the rnuilib components.
-
-See video:
-
-
-
-## Requirements
-
-This extension generate code for `react-native-ui-lib`'s components. `react-native-ui-lib` should be installed as a dependency to your projects. See: https://wix.github.io/react-native-ui-lib/docs/getting-started/setup
-
-
-**Enjoy!**
diff --git a/extensions/rnuilib-snippets/assets/icon.png b/extensions/rnuilib-snippets/assets/icon.png
deleted file mode 100644
index 67a88e6145..0000000000
Binary files a/extensions/rnuilib-snippets/assets/icon.png and /dev/null differ
diff --git a/extensions/rnuilib-snippets/assets/usage.gif b/extensions/rnuilib-snippets/assets/usage.gif
deleted file mode 100644
index 2159f05e61..0000000000
Binary files a/extensions/rnuilib-snippets/assets/usage.gif and /dev/null differ
diff --git a/extensions/rnuilib-snippets/index.tsx b/extensions/rnuilib-snippets/index.tsx
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/extensions/rnuilib-snippets/package.json b/extensions/rnuilib-snippets/package.json
deleted file mode 100644
index 3f927b84a5..0000000000
--- a/extensions/rnuilib-snippets/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "rnuilib-snippets",
- "displayName": "React Native UILIB Snippets",
- "description": "Code snippets for react-native-ui-lib components",
- "author": "Inbal Tish ",
- "publisher": "wix",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/wix/react-native-ui-lib"
- },
- "icon": "assets/icon.png",
- "version": "1.0.3",
- "engines": {
- "vscode": "^1.64.0"
- },
- "keywords": [
- "react-native",
- "ui",
- "components",
- "snippets",
- "javascript",
- "typescript"
- ],
- "categories": [
- "Snippets"
- ],
- "contributes": {
- "snippets": [
- {
- "language": "typescript",
- "path": "./snippets/snippets.code-snippets"
- },
- {
- "language": "typescriptreact",
- "path": "./snippets/snippets.code-snippets"
- },
- {
- "language": "javascript",
- "path": "./snippets/snippets.code-snippets"
- },
- {
- "language": "javascriptreact",
- "path": "./snippets/snippets.code-snippets"
- }
- ]
- }
-}
diff --git a/extensions/rnuilib-snippets/snippets/snippets.code-snippets b/extensions/rnuilib-snippets/snippets/snippets.code-snippets
deleted file mode 100644
index 019ff9a2e4..0000000000
--- a/extensions/rnuilib-snippets/snippets/snippets.code-snippets
+++ /dev/null
@@ -1,645 +0,0 @@
-{
- "RadioGroup": {
- "prefix": "radioGroup",
- "description": "Wrap a group of Radio Buttons to automatically control their selection",
- "body": [
- "",
- " ",
- " ",
- " "
- ]
- },
- "SectionsWheelPicker": {
- "prefix": "sectionsWheelPicker",
- "description": "SectionsWheelPicker component for presenting set of WheelPickers",
- "body": [""]
- },
- "Gradient": {
- "prefix": "gradient",
- "description": "Gradient Component",
- "body": [""]
- },
- "Hint": {
- "prefix": "hint",
- "description": "Hint component for displaying a tooltip over wrapped component",
- "body": [
- " setVisible(false)$4}>",
- " Text to hint ",
- " "
- ]
- },
- "FeatureHighlight": {
- "prefix": "featureHighlight",
- "description": "Component for feature discovery",
- "body": [
- " console.log('confirmed')}$5}",
- " onBackgroundPress={() => console.log('background pressed')$6}",
- "/>"
- ]
- },
- "Drawer": {
- "prefix": "drawer",
- "description": "Drawer Component",
- "body": [
- " console.log('read pressed')}]$1}",
- " leftItem={{text: 'Delete', background: Colors.red30, onPress: () => console.log('delete pressed')}$2}",
- ">",
- " ",
- " Item ",
- " ",
- " "
- ]
- },
- "ActionSheet": {
- "prefix": "actionSheet",
- "description": "Cross platform Action Sheet, with a support for native iOS solutions",
- "body": [
- " console.log('cancel')$10}",
- " ]}",
- "/>"
- ]
- },
- "Card.Image": {
- "prefix": "card.Image",
- "description": "Inner component for the Card component (better be a direct child)",
- "body": [
- ""
- ]
- },
- "Card.Section": {
- "prefix": "card.Section",
- "description": "Inner component for rendering content easily inside a Card component",
- "body": [
- " "
- ]
- },
- "Card": {
- "prefix": "card",
- "description": "Customizable card component that handles press events",
- "body": [
- " console.log('pressed')}$1>",
- " ",
- " "
- ]
- },
- "SortableList": {
- "prefix": "sortableList",
- "description": "A sortable list component",
- "body": [
- " "
- ]
- },
- "RadioButton": {
- "prefix": "radioButton",
- "description": "A Radio Button component, should be wrapped with a RadioGroup",
- "body": [""]
- },
- "SkeletonView": {
- "prefix": "skeletonView",
- "description": "Allows showing a temporary skeleton view while your real view is loading",
- "body": [
- "The item $3}",
- " times={10$4}",
- "/>"
- ]
- },
- "ConnectionStatusBar": {
- "prefix": "connectionStatusBar",
- "description": "Top bar to show a 'no internet' connection status",
- "body": [" console.log('connection changed')$1}/>"]
- },
- "Picker.Item": {
- "prefix": "picker.Item",
- "description": "Picker.Item, for configuring the Picker's selectable options",
- "body": [""]
- },
- "Picker": {
- "prefix": "picker",
- "description": "Picker Component, support single or multiple selection, blurModel and native wheel picker",
- "body": [
- " console.log('changed')$3}",
- ">",
- " {_.map(items, item => (",
- " return renderItem(item, index);",
- " ))$4}",
- " "
- ]
- },
- "SortableGridList": {
- "prefix": "sortableGridList",
- "description": "An sortable grid list (based on GridList component)",
- "body": [
- "",
- " data={items$1}",
- " maxItemWidth={140$2}",
- " itemSpacing={Spacings.s3$3}",
- " listPadding={Spacings.s5}",
- " onOrderChange={onOrderChange$4}",
- "/>"
- ]
- },
- "FloatingButton": {
- "prefix": "floatingButton",
- "description": "Hovering button with gradient background",
- "body": [
- " console.log('approved')}}$2}/>"
- ]
- },
- "MaskedInput": {
- "prefix": "maskedInput",
- "description": "Mask Input to create custom looking inputs with custom formats",
- "body": ["{value}$$2}/>"]
- },
- "Chip": {
- "prefix": "chip",
- "description": "Chip component",
- "body": [" console.log('pressed')$2}/>"]
- },
- "Wizard.Step": {
- "prefix": "wizard.Step",
- "description": "A wizard presents a series of steps in prescribed order. That the user needs to complete in order to accomplish a goal (e.g. purchase a product)",
- "body": [""]
- },
- "Wizard": {
- "prefix": "wizard",
- "description": "A wizard presents a series of steps in prescribed order. That the user needs to complete in order to accomplish a goal (e.g. purchase a product)",
- "body": [
- " console.log('changed')$2}>",
- " {_.map(items, item => (",
- " return renderItem(item, index);",
- " ))$3}",
- " "
- ]
- },
- "ColorPalette": {
- "prefix": "colorPalette",
- "description": "A component for displaying a color palette",
- "body": [
- " console.log('value changed')$3}",
- "/>"
- ]
- },
- "Checkbox": {
- "prefix": "checkbox",
- "description": "Checkbox component for toggling boolean value related to some context",
- "body": [" console.log('value changed')$2}/>"]
- },
- "Slider": {
- "prefix": "slider",
- "description": "A Slider component",
- "body": [
- " console.log('value changed')$4}",
- "/>"
- ]
- },
- "StackAggregator": {
- "prefix": "stackAggregator",
- "description": "Stack aggregator component",
- "body": [
- " console.log('pressed')$1}",
- ">",
- " {_.map(items, (item, index) => {",
- " return renderItem(item, index);",
- " })$2}",
- " "
- ]
- },
- "Stepper": {"prefix": "stepper", "description": "A stepper component", "body": [" "]},
- "ProgressiveImage": {
- "prefix": "progressiveImage",
- "description": "Image component that loads first a small thumbnail of the images, and fades-in the full-sized image with animation once it's loaded",
- "body": [
- " "
- ]
- },
- "Marquee": {
- "prefix": "marquee",
- "description": "Marquee component for sliding text",
- "body": [
- " "
- ]
- },
- "ProgressBar": {
- "prefix": "progressBar",
- "description": "Progress bar",
- "body": [""]
- },
- "Carousel": {
- "prefix": "carousel",
- "description": "Carousel for scrolling pages",
- "body": [
- " console.log('page changed')$1}>",
- " {_.map(items, item => (",
- " return renderItem(item, index);",
- " ))$2}",
- " "
- ]
- },
- "Image": {
- "prefix": "image",
- "description": "Image wrapper with extra functionality like source transform and assets support",
- "body": [
- " "
- ]
- },
- "ListItem": {
- "prefix": "listItem",
- "description": "List item component to render inside a List component",
- "body": [
- " console.log('pressed')$1}>",
- " The item $2",
- " "
- ]
- },
- "ListItem.Part": {
- "prefix": "listItem.Part",
- "description": "A sub ListItem component for layout-ing inside a ListItem",
- "body": ["", " The item $2", " "]
- },
- "Dialog": {
- "prefix": "dialog",
- "description": "Component for displaying custom content inside a popup dialog",
- "body": [
- " console.log('dismissed')$2}",
- " panDirection={PanningProvider.Directions.DOWN$3}",
- ">",
- " Content $4",
- " "
- ]
- },
- "GridList": {
- "prefix": "gridList",
- "description": "An auto-generated grid list that calculate item size according to given props",
- "body": [
- "",
- " data={items$1}",
- " maxItemWidth={140$2}",
- " numColumns={2$3}",
- " itemSpacing={Spacings.s3$4}",
- " listPadding={Spacings.s5$5}",
- "/>"
- ]
- },
- "GridView": {
- "prefix": "gridView",
- "description": "An auto-generated grid view that calculate item size according to given props",
- "body": [
- " console.log('item 1 pressed')}, {title: 'item 2', onPress: () => console.log('item 2 pressed')}]$1}",
- " numColumns={2$2}",
- " lastItemLabel={'+'$3}",
- " lastItemOverlayColor={'Colors.rgba(Colors.blue30)'$4}",
- "/>"
- ]
- },
- "Button": {
- "prefix": "button",
- "description": "Customizable button component that handles press events",
- "body": [""]
- },
- "AnimatedScanner": {
- "prefix": "animatedScanner",
- "description": "description",
- "body": [""]
- },
- "AnimatedImage": {
- "prefix": "animatedImage",
- "description": "Image component that fades-in the image with animation once it's loaded",
- "body": [
- " "
- ]
- },
- "SegmentedControl": {
- "prefix": "segmentedControl",
- "description": "SegmentedControl component for toggling two values or more",
- "body": [" "]
- },
- "ColorSwatch": {
- "prefix": "colorSwatch",
- "description": "A color swatch component",
- "body": [" console.log('pressed')$3}/>"]
- },
- "TouchableOpacity": {
- "prefix": "touchableOpacity",
- "description": "A wrapper for TouchableOpacity component. Support onPress, throttling and activeBackgroundColor",
- "body": [" console.log('pressed')$1}/>"]
- },
- "StateScreen": {
- "prefix": "stateScreen",
- "description": "Component that shows a full screen for a certain state, like an empty state",
- "body": [
- " "
- ]
- },
- "Avatar": {
- "prefix": "avatar",
- "description": "Avatar component for displaying user profile images",
- "body": [
- ""
- ]
- },
- "ColorPicker": {
- "prefix": "colorPicker",
- "description": "A picker component for color selection",
- "body": [
- " console.log('dismissed')$4}",
- " onSubmit={() => console.log('submit')$5}",
- " onValueChange={() => console.log('value changed')$6}",
- "/>"
- ]
- },
- "Fader": {
- "prefix": "fader",
- "description": "A gradient fading overlay to render on top of overflowing content (like scroll component)",
- "body": [""]
- },
- "Switch": {
- "prefix": "switch",
- "description": "Switch component for toggling boolean value related to some context",
- "body": [" console.log('value changed')$2}/>"]
- },
- "DateTimePicker": {
- "prefix": "dateTimePicker",
- "description": "Date and Time Picker Component that wraps RNDateTimePicker for date and time modes. See: https://github.com/react-native-community/react-native-datetimepicker#react-native-datetimepicker",
- "body": [""]
- },
- "LoaderScreen": {
- "prefix": "loaderScreen",
- "description": "Component that shows a full screen with an activity indicator",
- "body": [""]
- },
- "Dash": {
- "prefix": "dash",
- "description": "Dashed line Component",
- "body": [""]
- },
- "ActionBar": {
- "prefix": "actionBar",
- "description": "Quick actions bar, each action support Button component props",
- "body": [
- " console.log('delete')$2},",
- " {label: $3, onPress: $4},",
- " {label: $5, onPress: $6}",
- " ]}",
- "/>"
- ]
- },
- "NumberInput": {
- "prefix": "numberInput",
- "description": "Number Input to create an input with a formatted number",
- "body": [""]
- },
- "Text": {
- "prefix": "text",
- "description": "A wrapper for Text component with extra functionality like modifiers support",
- "body": ["Text goes here$2 "]
- },
- "Icon": {
- "prefix": "icon",
- "description": "Icon component",
- "body": [
- ""
- ]
- },
- "ChipsInput": {
- "prefix": "chipsInput",
- "description": "A chips input",
- "body": [
- " "
- ]
- },
- "Modal.TopBar": {
- "prefix": "modal.TopBar",
- "description": "Modal.TopBar, inner component for configuring the Modal component's title, buttons and statusBar",
- "body": [
- " console.log('cancel')$2}",
- " onDone={() => console.log('done')$3}",
- "/>"
- ]
- },
- "Modal": {
- "prefix": "modal",
- "description": "Component that present content on top of the invoking screen",
- "body": [
- " console.log('background pressed')$3}>",
- " Content $4",
- " "
- ]
- },
- "ExpandableSection": {
- "prefix": "expandableSection",
- "description": "Component to render expanded section below or above the SectionHeader",
- "body": [
- "The section header$3}",
- " onPress={() => console.log('pressed')$4}",
- ">"
- ]
- },
- "GridListItem": {
- "prefix": "gridListItem",
- "description": "A single grid view/list item component",
- "body": [
- " "
- ]
- },
- "PageControl": {
- "prefix": "pageControl",
- "description": "Page indicator, typically used in paged scroll-views",
- "body": [""]
- },
- "Overlay": {
- "prefix": "overlay",
- "description": "Overlay view with types",
- "body": [
- " "
- ]
- },
- "Timeline": {
- "prefix": "timeline",
- "description": "A timeline item to render as part of a timeline list",
- "body": [
- "",
- " topLine={{",
- " state: Timeline.states.ERROR",
- " }$3}",
- " bottomLine={{",
- " type: Timeline.lineTypes.DASHED,",
- " color: Colors.orange40",
- " }$4}",
- " point={{",
- " type: Timeline.pointTypes.OUTLINE,",
- " color: Colors.orange40,",
- " icon: Assets.icons.demo.camera,",
- " targetContainerRef: targetContainer,",
- " alignmentTargetRef: target",
- " }$5}",
- "/>"
- ]
- },
- "TabController.TabPage": {
- "prefix": "tabController.TabPage",
- "description": "TabController's TabPage component",
- "body": [""]
- },
- "TabController": {
- "prefix": "tabController",
- "description": "A performant solution for a tab controller with lazy load mechanism",
- "body": [
- "",
- " ",
- " ",
- " {renderFirstPage()} ",
- " {renderSecondPage()} ",
- " {renderThirdPage()} ",
- " ",
- " "
- ]
- },
- "TabController.TabBar": {
- "prefix": "tabController.TabBar",
- "description": "TabController's TabBar component",
- "body": [""]
- },
- "TabController.PageCarousel": {
- "prefix": "tabController.PageCarousel",
- "description": "TabController's PageCarousel component",
- "body": [
- "",
- " {_.map(items, (item, key) => {",
- " return ($1);",
- " })}",
- " "
- ]
- },
- "TabController.TabBarItem": {
- "prefix": "tabController.TabBarItem",
- "description": "TabController's TabBarItem component",
- "body": [""]
- },
- "Badge": {
- "prefix": "badge",
- "description": "Round colored badge, typically used to show a number",
- "body": [""]
- },
- "Toast": {
- "prefix": "toast",
- "description": "A toast component for displaying non-disruptive messages to the user",
- "body": [
- ""
- ]
- },
- "TextField": {
- "prefix": "textField",
- "description": "An enhanced customizable TextField with validation support",
- "body": [
- " value.length > 6]$5}",
- " validationMessage={['Field is required', 'Email is invalid', 'Password is too short']$6}",
- " showCharCounter$7",
- " maxLength={30$8}",
- "/>"
- ]
- },
- "Dialog.Header": {
- "prefix": "dialog.Header",
- "description": "Component for displaying the header of a popup dialog",
- "body": [""]
- },
- "WheelPicker": {
- "prefix": "wheelPicker",
- "description": "A customizable WheelPicker component",
- "body": [
- " console.log('changed')$3}",
- "/>"
- ]
- },
- "RNUilibImport": {
- "prefix": "rnuilib",
- "description": "Import react-native-ui-lib",
- "body": ["import {$1} from 'react-native-ui-lib';"]
- }
-}
diff --git a/harmony/ui_lib.har b/harmony/ui_lib.har
new file mode 100644
index 0000000000..c907b8d353
Binary files /dev/null and b/harmony/ui_lib.har differ
diff --git a/harmony/ui_lib/.gitignore b/harmony/ui_lib/.gitignore
new file mode 100644
index 0000000000..e2713a2779
--- /dev/null
+++ b/harmony/ui_lib/.gitignore
@@ -0,0 +1,6 @@
+/node_modules
+/oh_modules
+/.preview
+/build
+/.cxx
+/.test
\ No newline at end of file
diff --git a/harmony/ui_lib/BuildProfile.ets b/harmony/ui_lib/BuildProfile.ets
new file mode 100644
index 0000000000..2b8a73ec42
--- /dev/null
+++ b/harmony/ui_lib/BuildProfile.ets
@@ -0,0 +1,17 @@
+/**
+ * Use these variables when you tailor your ArkTS code. They must be of the const type.
+ */
+export const HAR_VERSION = '7.0.0-0.0.1';
+export const BUILD_MODE_NAME = 'debug';
+export const DEBUG = true;
+export const TARGET_NAME = 'default';
+
+/**
+ * BuildProfile Class is used only for compatibility purposes.
+ */
+export default class BuildProfile {
+ static readonly HAR_VERSION = HAR_VERSION;
+ static readonly BUILD_MODE_NAME = BUILD_MODE_NAME;
+ static readonly DEBUG = DEBUG;
+ static readonly TARGET_NAME = TARGET_NAME;
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/build-profile.json5 b/harmony/ui_lib/build-profile.json5
new file mode 100644
index 0000000000..b695582d36
--- /dev/null
+++ b/harmony/ui_lib/build-profile.json5
@@ -0,0 +1,28 @@
+{
+ "apiType": "stageMode",
+ "buildOption": {
+ },
+ "buildOptionSet": [
+ {
+ "name": "release",
+ "arkOptions": {
+ "obfuscation": {
+ "ruleOptions": {
+ "enable": true,
+ "files": [
+ "./obfuscation-rules.txt"
+ ]
+ }
+ }
+ }
+ },
+ ],
+ "targets": [
+ {
+ "name": "default"
+ },
+ {
+ "name": "ohosTest",
+ }
+ ]
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/hvigorfile.ts b/harmony/ui_lib/hvigorfile.ts
new file mode 100644
index 0000000000..eba2944d1a
--- /dev/null
+++ b/harmony/ui_lib/hvigorfile.ts
@@ -0,0 +1 @@
+export { harTasks } from '@ohos/hvigor-ohos-plugin';
diff --git a/harmony/ui_lib/index.ets b/harmony/ui_lib/index.ets
new file mode 100644
index 0000000000..0d82e19fd4
--- /dev/null
+++ b/harmony/ui_lib/index.ets
@@ -0,0 +1,26 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2023 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+export * from './ts'
+export * from "./src/main/ets/HightlighterView"
+export * from "./src/main/ets/KeyboardTrackingViewTemp"
diff --git a/harmony/ui_lib/obfuscation-rules.txt b/harmony/ui_lib/obfuscation-rules.txt
new file mode 100644
index 0000000000..69c4d6a8a5
--- /dev/null
+++ b/harmony/ui_lib/obfuscation-rules.txt
@@ -0,0 +1,18 @@
+# Define project specific obfuscation rules here.
+# You can include the obfuscation configuration files in the current module's build-profile.json5.
+#
+# For more details, see
+# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5
+
+# Obfuscation options:
+# -disable-obfuscation: disable all obfuscations
+# -enable-property-obfuscation: obfuscate the property names
+# -enable-toplevel-obfuscation: obfuscate the names in the global scope
+# -compact: remove unnecessary blank spaces and all line feeds
+# -remove-log: remove all console.* statements
+# -print-namecache: print the name cache that contains the mapping from the old names to new names
+# -apply-namecache: reuse the given cache file
+
+# Keep options:
+# -keep-property-name: specifies property names that you want to keep
+# -keep-global-name: specifies names that you want to keep in the global scope
\ No newline at end of file
diff --git a/harmony/ui_lib/oh-package-lock.json5 b/harmony/ui_lib/oh-package-lock.json5
new file mode 100644
index 0000000000..00170bbdca
--- /dev/null
+++ b/harmony/ui_lib/oh-package-lock.json5
@@ -0,0 +1,18 @@
+{
+ "meta": {
+ "stableOrder": true
+ },
+ "lockfileVersion": 3,
+ "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
+ "specifiers": {
+ "@rnoh/react-native-openharmony@../react_native_openharmony": "@rnoh/react-native-openharmony@../react_native_openharmony"
+ },
+ "packages": {
+ "@rnoh/react-native-openharmony@../react_native_openharmony": {
+ "name": "@rnoh/react-native-openharmony",
+ "version": "0.72.27",
+ "resolved": "../react_native_openharmony",
+ "registryType": "local"
+ }
+ }
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/oh-package.json5 b/harmony/ui_lib/oh-package.json5
new file mode 100644
index 0000000000..def2f5d2a1
--- /dev/null
+++ b/harmony/ui_lib/oh-package.json5
@@ -0,0 +1,12 @@
+{
+ "name": "@react-native-oh-tpl/react-native-ui-lib",
+ "version": "7.29.1-0.0.5-rc.3",
+ "description": "Please describe the basic information.",
+ "main": "index.ets",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@rnoh/react-native-openharmony": 'file:../react_native_openharmony'
+ }
+}
+
diff --git a/harmony/ui_lib/src/main/cpp/CMakeLists.txt b/harmony/ui_lib/src/main/cpp/CMakeLists.txt
new file mode 100644
index 0000000000..3827834353
--- /dev/null
+++ b/harmony/ui_lib/src/main/cpp/CMakeLists.txt
@@ -0,0 +1,9 @@
+cmake_minimum_required(VERSION 3.13)
+set(CMAKE_VERBOSE_MAKEFILE on)
+
+set(rnoh_ui_lib_generated_dir "${RNOH_GENERATED_DIR}/_react_native_oh_tpl_react_native_ui_lib")
+file(GLOB_RECURSE rnoh_ui_lib_generated_SRC "${rnoh_ui_lib_generated_dir}/**/*.cpp")
+file(GLOB rnoh_ui_lib_SRC CONFIGURE_DEPENDS *.cpp)
+add_library(rnoh_ui_lib SHARED ${rnoh_ui_lib_SRC} ${rnoh_ui_lib_generated_SRC})
+target_include_directories(rnoh_ui_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${rnoh_ui_lib_generated_dir})
+target_link_libraries(rnoh_ui_lib PUBLIC rnoh)
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/cpp/KeyboardTrackingViewTempComponentInstance.h b/harmony/ui_lib/src/main/cpp/KeyboardTrackingViewTempComponentInstance.h
new file mode 100644
index 0000000000..3cbe77bdbd
--- /dev/null
+++ b/harmony/ui_lib/src/main/cpp/KeyboardTrackingViewTempComponentInstance.h
@@ -0,0 +1,113 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+#pragma once
+
+#include "RNOH/Color.h"
+#include "RNOH/arkui/StackNode.h"
+#include "RNOH/generated/components/BaseKeyboardTrackingViewTempComponentInstance.h"
+#include "RNOH/CppComponentInstance.h"
+#include "RNOH/arkui/CustomNode.h"
+#include "RNOH/ArkTSMessageHub.h"
+
+namespace rnoh {
+class KeyboardTrackingViewTempComponentInstance
+ : public BaseKeyboardTrackingViewTempComponentInstance,
+ ArkTSMessageHub::Observer {
+ using Super = BaseKeyboardTrackingViewTempComponentInstance;
+
+ StackNode m_stackNode{};
+ CustomNode m_customNode{};
+
+ public:
+ KeyboardTrackingViewTempComponentInstance(Context context)
+ : Super(std::move(context)), ArkTSMessageHub::Observer(m_deps->arkTSMessageHub) {
+ m_stackNode.insertChild(m_customNode, 0);
+ this->subscribeListeners();
+ }
+
+ ArkUINode& getLocalRootArkUINode() {
+ return m_stackNode;
+ };
+
+ void onChildInserted(
+ ComponentInstance::Shared const& childComponentInstance,
+ std::size_t index) {
+ CppComponentInstance::onChildInserted(childComponentInstance, index);
+ m_stackNode.insertChild(
+ childComponentInstance->getLocalRootArkUINode(), index + 1);
+ }
+
+ void onChildRemoved(
+ ComponentInstance::Shared const& childComponentInstance,
+ std::size_t index) {
+ CppComponentInstance::onChildRemoved(childComponentInstance);
+ }
+
+ void onPropsChanged(SharedConcreteProps const& props) {
+
+ };
+
+ void onLayoutChanged(facebook::react::LayoutMetrics const &layoutMetrics) {
+ CppComponentInstance::onLayoutChanged(layoutMetrics);
+ }
+
+ void subscribeListeners() {
+ callTurboModuleSync("subscribeListeners", {});
+ }
+
+ void unregisterListeners(facebook::react::LayoutMetrics const &layoutMetrics) {
+ callTurboModuleSync("unregisterListeners", {});
+ }
+
+ void callTurboModuleSync(const std::string &methodName, const std::vector params) {
+ auto rnInstancePtr = this->m_deps->rnInstance.lock();
+ if (rnInstancePtr != nullptr) {
+ auto turboModule = rnInstancePtr->getTurboModule("KeyboardTrackingViewTempTurboModule");
+ } else {
+ DLOG(ERROR) << "rnInstancePtr is null";
+ }
+ }
+
+ void onMessageReceived(ArkTSMessage const &message) {
+ if (message.payload.isNull()) {
+ DLOG(ERROR) << "payload is null";
+ return;
+ }
+ if (message.name == "Keyboard-Height-Show") {
+ auto mKeyboardHeight = message.payload.asDouble() - 10;
+ if (m_stackNode.getArkUINodeHandle() != nullptr) {
+ m_stackNode.setOffset(0, -mKeyboardHeight);
+ }
+ } else if (message.name == "Keyboard-Height-Hide") {
+ auto mKeyboardHeight = message.payload.asDouble();
+ if (m_stackNode.getArkUINodeHandle() != nullptr) {
+ m_stackNode.setOffset(0, 0);
+ }
+ }
+ }
+
+};
+
+} // namespace rnoh
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/cpp/UiLibPackage.cpp b/harmony/ui_lib/src/main/cpp/UiLibPackage.cpp
new file mode 100644
index 0000000000..7ed928a391
--- /dev/null
+++ b/harmony/ui_lib/src/main/cpp/UiLibPackage.cpp
@@ -0,0 +1,41 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+#include "UiLibPackage.h"
+#include "KeyboardTrackingViewTempComponentInstance.h"
+
+using namespace facebook;
+
+/**
+ * Deprecated approach. Use `createComponentInstance`. We keep this approach
+ * here for testing purposes.
+ */
+
+rnoh::ComponentInstance::Shared rnoh::UiLibPackage::createComponentInstance(
+ const ComponentInstance::Context& ctx) {
+ if (ctx.componentName == "KeyboardTrackingViewTemp") {
+ return std::make_shared(ctx);
+ }
+ return nullptr;
+};
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/cpp/UiLibPackage.h b/harmony/ui_lib/src/main/cpp/UiLibPackage.h
new file mode 100644
index 0000000000..a8ffbecaec
--- /dev/null
+++ b/harmony/ui_lib/src/main/cpp/UiLibPackage.h
@@ -0,0 +1,40 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+#include "RNOH/Package.h"
+#include "RNOH/generated/BaseReactNativeOhTplReactNativeUiLibPackage.h"
+
+namespace rnoh {
+class UiLibPackage : public BaseReactNativeOhTplReactNativeUiLibPackage {
+ using Super = BaseReactNativeOhTplReactNativeUiLibPackage;
+
+ public:
+ UiLibPackage(Package::Context ctx)
+ : BaseReactNativeOhTplReactNativeUiLibPackage(ctx) {}
+
+ ComponentInstance::Shared createComponentInstance(
+ const ComponentInstance::Context& ctx) override;
+
+};
+} // namespace rnoh
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/ets/CustomInputControllerTempTurboModule.ts b/harmony/ui_lib/src/main/ets/CustomInputControllerTempTurboModule.ts
new file mode 100644
index 0000000000..0bf9807dfb
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/CustomInputControllerTempTurboModule.ts
@@ -0,0 +1,56 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import { TurboModule, TurboModuleContext } from '@rnoh/react-native-openharmony/ts';
+import { TM } from "@rnoh/react-native-openharmony/generated/ts"
+
+export type initialPropsInterface = {title: string}
+
+export type InputInterface = {component: string, initialProps: initialPropsInterface, useSafeArea: boolean}
+
+export class CustomInputControllerTemp extends TurboModule implements TM.CustomInputControllerTemp.Spec {
+ constructor(ctx: TurboModuleContext) {
+ super(ctx)
+ }
+
+ presentCustomInputComponent(reactTag: null | number, inputObj: InputInterface) {
+ return {}
+ };
+
+ resetInput(reactTag: null | number) {
+
+ };
+
+ dismissKeyboard() {
+
+ };
+
+ expandFullScreenForInput(reactTag: null | number) {
+
+ };
+
+ resetSizeForInput(reactTag: null | number) {
+
+ };
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/ets/Highlighter.ets b/harmony/ui_lib/src/main/ets/Highlighter.ets
new file mode 100644
index 0000000000..702be8927f
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/Highlighter.ets
@@ -0,0 +1,126 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import { highlightFrameType, minimumRectSizeType } from './HightlighterView';
+
+interface IOptions {
+ overlayColor?: string;
+ borderRadius?: number;
+ strokeColor?: string;
+ strokeWidth?: number;
+ innerPadding?: number;
+ highlightFrame?: highlightFrameType;
+ minimumRectSize?: minimumRectSizeType;
+}
+
+class Highlighter {
+ constructor(context2D: CanvasRenderingContext2D, options: IOptions) {
+ this.context2D = context2D;
+ }
+ context2D: CanvasRenderingContext2D;
+ overlayColor = '';
+ borderRadius = 0;
+ strokeColor = '';
+ strokeWidth = 0;
+ innerPadding = 0;
+ highlightFrame: highlightFrameType = {x: 17, y: 287, width: 40, height: 40};
+ minimumRectSize: minimumRectSizeType = {width: 0, height: 0}
+
+ init(options: IOptions = {}) {
+ this.overlayColor = options.overlayColor || this.overlayColor;
+ this.borderRadius = options.borderRadius || this.borderRadius;
+ this.strokeColor = options.strokeColor || this.strokeColor;
+ this.strokeWidth = options.strokeWidth || this.strokeWidth;
+ this.innerPadding = options.innerPadding || this.innerPadding;
+ if(options.highlightFrame?.x) {
+ this.highlightFrame = options.highlightFrame || this.highlightFrame;
+ }
+ if(options.minimumRectSize?.width) {
+ this.minimumRectSize = options.minimumRectSize || this.minimumRectSize;
+ }
+ this.draw();
+ }
+
+ // 圆角矩形绘制函数
+ private roundRect(ctx: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number, flag: boolean = false) {
+ if(this.innerPadding) {
+ width = width + (this.innerPadding * 2);
+ height = height + (this.innerPadding * 2);
+ x = x - this.innerPadding;
+ y = y - this.innerPadding;
+ }
+ if(this.minimumRectSize.width || this.minimumRectSize.height){
+ if(width < this.minimumRectSize.width) {
+ x = x - ((this.minimumRectSize.width - width) / 2);
+ width = this.minimumRectSize.width;
+ }
+ if(height < this.minimumRectSize.height) {
+ y = y - ((this.minimumRectSize.height - height) / 2);
+ height = this.minimumRectSize.height;
+ }
+ }
+ if(flag) {
+ ctx.lineWidth = this.strokeWidth;
+ }
+ ctx.beginPath();
+ ctx.moveTo(x + radius, y);
+ ctx.lineTo(x + width - radius, y);
+ ctx.arcTo(x + width, y, x + width, y + radius, radius);
+ ctx.lineTo(x + width, y + height - radius);
+ ctx.arcTo(x + width, y + height, x + width - radius, y + height, radius);
+ ctx.lineTo(x + radius, y + height);
+ ctx.arcTo(x, y + height, x, y + height - radius, radius);
+ ctx.lineTo(x, y + radius);
+ ctx.arcTo(x, y, x + radius, y, radius);
+ ctx.closePath();
+ if(flag) {
+ ctx.strokeStyle = this.strokeColor;
+ ctx.stroke()
+ } else {
+ ctx.fill();
+ }
+ }
+
+ reset() {
+ this.context2D.clearRect(0, 0, this.context2D.width, this.context2D.height);
+ }
+
+ draw() {
+ if (!this.highlightFrame) return
+ //绘制半透明背景 #F5DC62
+ this.context2D.globalCompositeOperation = 'source-over';
+ this.context2D.fillStyle = this.overlayColor;
+ this.context2D.fillRect(0, 0, this.context2D.width, this.context2D.height);
+ // 绘制边框
+ if(this.strokeWidth && this.strokeColor) {
+ this.roundRect(this.context2D, this.highlightFrame.x, this.highlightFrame.y, this.highlightFrame.width, this.highlightFrame.height, this.borderRadius, true);
+ }
+ // 绘制镂空 2
+ this.context2D.globalCompositeOperation = 'destination-out';
+ this.context2D.fillStyle = 'rgb(0,0,255)'
+ this.roundRect(this.context2D, this.highlightFrame.x, this.highlightFrame.y, this.highlightFrame.width, this.highlightFrame.height, this.borderRadius, false);
+ }
+}
+
+export default Highlighter
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/ets/HightlighterView.ets b/harmony/ui_lib/src/main/ets/HightlighterView.ets
new file mode 100644
index 0000000000..f4ea3a8e78
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/HightlighterView.ets
@@ -0,0 +1,148 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import { Descriptor, RNComponentContext, RNOHLogger, RNViewBase, ViewRawProps, ViewBaseProps } from '@rnoh/react-native-openharmony';
+import { RNC } from "@rnoh/react-native-openharmony/generated"
+import Highlighter from './Highlighter';
+
+
+export interface highlightFrameType {
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+}
+export interface minimumRectSizeType {
+ width: number;
+ height: number
+}
+interface HighlighterViewProps extends ViewRawProps {
+ highlightFrame?: highlightFrameType;
+ overlayColor: string;
+ borderRadius?: number;
+ strokeColor: string;
+ strokeWidth: number;
+ highlightViewTag?: number;
+ minimumRectSize: minimumRectSizeType;
+ innerPadding: number;
+}
+export interface AutoLayoutProps {}
+export type HighlighterViewDescriptor = Descriptor<"HighlighterView", ViewBaseProps, AutoLayoutProps, HighlighterViewProps>
+
+@Component
+export struct HighlighterView {
+ public static readonly NAME = RNC.HighlighterView.NAME
+ public ctx!: RNComponentContext
+ public tag: number = 0
+ private logger!: RNOHLogger;
+ //用来配置CanvasRenderingContext2D对象的参数,包括是否开启抗锯齿,true表明开启抗锯齿。
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
+ //用来创建CanvasRenderingContext2D对象,通过在canvas中调用CanvasRenderingContext2D对象来绘制。
+ private context2D: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ sign = new Highlighter(this.context2D, {});
+ @State descriptor: HighlighterViewDescriptor = {} as HighlighterViewDescriptor
+ private eventEmitter: RNC.HighlighterView.EventEmitter | undefined = undefined
+ private cleanUpCallbacks: (() => void)[] = []
+
+ aboutToAppear() {
+ // 初始化logger
+ this.logger = this.ctx.logger.clone('HighlighterView');
+ this.eventEmitter = new RNC.HighlighterView.EventEmitter(this.ctx.rnInstance, this.tag)
+ this.descriptor = this.ctx.descriptorRegistry.getDescriptor(this.tag)
+ this.cleanUpCallbacks.push(this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag,
+ (newDescriptor) => {
+ this.descriptor = (newDescriptor as HighlighterViewDescriptor)
+ this.reset();
+ this.setProps();
+ }
+ ))
+ }
+
+ private setProps() {
+ this.setHighlightFrame();
+ this.setOverlayColor();
+ this.setBorderRadius();
+ this.setStrokeColor();
+ this.setStrokeWidth();
+ this.setMinimumRectSize();
+ this.setInnerPadding();
+ this.sign.draw();
+ }
+
+ private setHighlightFrame() {
+ this.sign.highlightFrame = this.descriptor.rawProps.highlightFrame as highlightFrameType;
+ }
+
+ private setOverlayColor() {
+ this.sign.overlayColor = this.descriptor.rawProps.overlayColor;
+ }
+
+ private setBorderRadius() {
+ this.sign.borderRadius = this.descriptor.rawProps.borderRadius || 0;
+ }
+
+ private setStrokeColor() {
+ this.sign.strokeColor = this.descriptor.rawProps.strokeColor;
+ }
+
+ private setStrokeWidth() {
+ this.sign.strokeWidth = this.descriptor.rawProps.strokeWidth;
+ }
+
+ private setMinimumRectSize() {
+ this.sign.minimumRectSize = this.descriptor.rawProps.minimumRectSize;
+ }
+
+ private setInnerPadding() {
+ this.sign.innerPadding = this.descriptor.rawProps.innerPadding;
+ }
+
+ // 重置画布
+ public reset() {
+ this.sign.reset();
+ }
+
+ aboutToDisappear() {
+ this.cleanUpCallbacks.forEach(cb => cb())
+ }
+
+ public canvasReady() {
+ this.logger.info('canvas ready');
+ this.sign.init();
+ }
+
+ build() {
+ RNViewBase({ ctx: this.ctx, tag: this.tag }) {
+ Canvas(this.context2D)
+ .width("100%")
+ .height("100%")
+ .backgroundColor('transparent')
+ .onReady(() => {
+ this.canvasReady()
+ })
+
+ this.ctx.wrappedRNChildrenBuilder.builder(this.ctx, this.tag)
+ }
+ }
+}
diff --git a/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTemp.ets b/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTemp.ets
new file mode 100644
index 0000000000..296f0aeeb5
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTemp.ets
@@ -0,0 +1,67 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import { Descriptor, RNComponentContext, RNOHLogger, RNViewBase, ViewRawProps, ViewBaseProps } from '@rnoh/react-native-openharmony';
+import { RNC } from "@rnoh/react-native-openharmony/generated"
+
+interface KeyboardTrackingViewTempProps extends ViewRawProps {
+ text?: string
+}
+interface AutoLayoutProps {}
+type KeyboardTrackingViewTempDescriptor = Descriptor<"KeyboardTrackingViewTemp", ViewBaseProps, AutoLayoutProps, KeyboardTrackingViewTempProps>
+
+@Component
+export struct KeyboardTrackingViewTemp {
+ public static readonly NAME = RNC.KeyboardTrackingViewTempArkTS.NAME
+ public ctx!: RNComponentContext
+ public tag: number = 0
+ private logger!: RNOHLogger;
+
+ @State descriptor: KeyboardTrackingViewTempDescriptor = {} as KeyboardTrackingViewTempDescriptor
+ private eventEmitter: RNC.KeyboardTrackingViewTempArkTS.EventEmitter | undefined = undefined
+ private cleanUpCallbacks: (() => void)[] = []
+
+ aboutToAppear() {
+ // 初始化logger
+ this.logger = this.ctx.logger.clone('KeyboardTrackingViewTemp');
+ this.eventEmitter = new RNC.KeyboardTrackingViewTempArkTS.EventEmitter(this.ctx.rnInstance, this.tag)
+ this.descriptor = this.ctx.descriptorRegistry.getDescriptor(this.tag)
+ this.cleanUpCallbacks.push(this.ctx.descriptorRegistry.subscribeToDescriptorChanges(this.tag,
+ (newDescriptor) => {
+ this.descriptor = (newDescriptor as KeyboardTrackingViewTempDescriptor)
+ }
+ ))
+ }
+
+ build() {
+ RNViewBase({ ctx: this.ctx, tag: this.tag }) {
+ Column() {
+ Text("Hello word").width("100%").fontSize(18)
+ TextInput().width("100%").height(30)
+ }.width("100%").height("100%").backgroundColor("#ffff00")
+
+ this.ctx.wrappedRNChildrenBuilder.builder(this.ctx, this.tag)
+ }
+ }
+}
diff --git a/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTempManagerTurboModule.ts b/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTempManagerTurboModule.ts
new file mode 100644
index 0000000000..e90af8bd62
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTempManagerTurboModule.ts
@@ -0,0 +1,39 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import { TurboModule, TurboModuleContext } from '@rnoh/react-native-openharmony/ts';
+import { TM } from "@rnoh/react-native-openharmony/generated/ts"
+
+
+export class KeyboardTrackingViewTempManager extends TurboModule implements TM.KeyboardTrackingViewTempManager.Spec {
+ constructor(ctx: TurboModuleContext) {
+ super(ctx)
+ }
+ getNativeProps(target: null | number): Object {
+ return {trackingViewHeight: 0, keyboardHeight: 0, contentTopInset: 0}
+ }
+ scrollToStart(target: null | number) {
+
+ }
+}
diff --git a/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTempTurboModule.ts b/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTempTurboModule.ts
new file mode 100644
index 0000000000..b83b2267f1
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/KeyboardTrackingViewTempTurboModule.ts
@@ -0,0 +1,61 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import { TurboModule, TurboModuleContext } from '@rnoh/react-native-openharmony/ts';
+import window from '@ohos.window';
+
+export class KeyboardTrackingViewTempTurboModule extends TurboModule {
+ constructor(ctx: TurboModuleContext) {
+ super(ctx);
+ this.subscribeListeners();
+ }
+
+ async subscribeListeners() {
+ const windowInstance = await window.getLastWindow(this.ctx.uiAbilityContext);
+
+ if (!windowInstance) {
+ return;
+ }
+
+ const onKeyboardHeightChange = (keyboardHeight: number) => {
+ if (keyboardHeight > 0) {
+ keyboardHeight = px2vp(keyboardHeight);
+ this.ctx.rnInstance.postMessageToCpp('Keyboard-Height-Show', keyboardHeight);
+ } else {
+ this.ctx.rnInstance.postMessageToCpp('Keyboard-Height-Hide', keyboardHeight);
+ }
+ };
+
+ windowInstance.on('keyboardHeightChange', onKeyboardHeightChange);
+ }
+
+ async unregisterListeners() {
+ const windowInstance = await window.getLastWindow(this.ctx.uiAbilityContext);
+ if (!windowInstance) {
+ return;
+ }
+
+ windowInstance.off('keyboardHeightChange');
+ }
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/ets/UiLibPackage.ts b/harmony/ui_lib/src/main/ets/UiLibPackage.ts
new file mode 100644
index 0000000000..5384d7d468
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/UiLibPackage.ts
@@ -0,0 +1,70 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+import {
+ RNPackage,
+ TurboModulesFactory,
+ DescriptorWrapperFactoryByDescriptorType,
+ DescriptorWrapperFactoryByDescriptorTypeCtx
+} from '@rnoh/react-native-openharmony/ts';
+import type { TurboModule, TurboModuleContext, } from '@rnoh/react-native-openharmony/ts';
+import { RNC, TM } from "@rnoh/react-native-openharmony/generated/ts"
+import { KeyboardTrackingViewTempManager } from './KeyboardTrackingViewTempManagerTurboModule'
+import { KeyboardTrackingViewTempTurboModule } from './KeyboardTrackingViewTempTurboModule'
+import { CustomInputControllerTemp } from './CustomInputControllerTempTurboModule'
+
+class KeyboardTrackingViewTempManagerTurboModulesFactory extends TurboModulesFactory {
+ createTurboModule(name: string): TurboModule | null {
+ if (name === 'KeyboardTrackingViewTempTurboModule') {
+ return new KeyboardTrackingViewTempTurboModule(this.ctx);
+ }
+ if (name === TM.CustomInputControllerTemp.NAME || name === 'CustomInputControllerTemp') {
+ return new CustomInputControllerTemp(this.ctx);
+ }
+ if (name === TM.KeyboardTrackingViewTempManager.NAME || name === 'KeyboardTrackingViewTempManager') {
+ return new KeyboardTrackingViewTempManager(this.ctx);
+ }
+ return null;
+ }
+
+ hasTurboModule(name: string): boolean {
+ return name === TM.KeyboardTrackingViewTempManager.NAME ||
+ name === TM.CustomInputControllerTemp.NAME ||
+ name === 'KeyboardTrackingViewTempManager' ||
+ name === 'KeyboardTrackingViewTempTurboModule';
+ }
+}
+
+export class UiLibPackage extends RNPackage {
+ createTurboModulesFactory(ctx: TurboModuleContext): TurboModulesFactory {
+ return new KeyboardTrackingViewTempManagerTurboModulesFactory(ctx);
+ }
+
+ createDescriptorWrapperFactoryByDescriptorType(ctx: DescriptorWrapperFactoryByDescriptorTypeCtx): DescriptorWrapperFactoryByDescriptorType {
+ return {
+ [RNC.HighlighterView.NAME]: (ctx) => new RNC.HighlighterView.DescriptorWrapper(ctx.descriptor),
+ [RNC.KeyboardTrackingViewTempArkTS.NAME]: (ctx) => new RNC.KeyboardTrackingViewTempArkTS.DescriptorWrapper(ctx.descriptor)
+ }
+ }
+}
diff --git a/harmony/ui_lib/src/main/ets/pages/Index.ets b/harmony/ui_lib/src/main/ets/pages/Index.ets
new file mode 100644
index 0000000000..8b9504ca2f
--- /dev/null
+++ b/harmony/ui_lib/src/main/ets/pages/Index.ets
@@ -0,0 +1,44 @@
+/**
+ * MIT License
+ *
+ * Copyright (C) 2024 Huawei Device Co., Ltd.
+ *
+ * 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.
+ */
+
+@Entry
+@Component
+struct Index {
+ @State message: string = 'Hello World';
+
+ build() {
+ RelativeContainer() {
+ Text(this.message)
+ .id('HelloWorld')
+ .fontSize(50)
+ .fontWeight(FontWeight.Bold)
+ .alignRules({
+ center: { anchor: '__container__', align: VerticalAlign.Center },
+ middle: { anchor: '__container__', align: HorizontalAlign.Center }
+ })
+ }
+ .height('100%')
+ .width('100%')
+ }
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/module.json5 b/harmony/ui_lib/src/main/module.json5
new file mode 100644
index 0000000000..ae2fe1081f
--- /dev/null
+++ b/harmony/ui_lib/src/main/module.json5
@@ -0,0 +1,11 @@
+{
+ "module": {
+ "name": "ui_lib",
+ "type": "har",
+ "deviceTypes": [
+ "default",
+ "tablet",
+ "2in1"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/resources/base/element/color.json b/harmony/ui_lib/src/main/resources/base/element/color.json
new file mode 100644
index 0000000000..3c712962da
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/base/element/color.json
@@ -0,0 +1,8 @@
+{
+ "color": [
+ {
+ "name": "start_window_background",
+ "value": "#FFFFFF"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/resources/base/element/string.json b/harmony/ui_lib/src/main/resources/base/element/string.json
new file mode 100644
index 0000000000..3d69c9c908
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/base/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_desc",
+ "value": "module description"
+ },
+ {
+ "name": "Ui_libAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "Ui_libAbility_label",
+ "value": "label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/resources/base/media/background.png b/harmony/ui_lib/src/main/resources/base/media/background.png
new file mode 100644
index 0000000000..f939c9fa8c
Binary files /dev/null and b/harmony/ui_lib/src/main/resources/base/media/background.png differ
diff --git a/harmony/ui_lib/src/main/resources/base/media/foreground.png b/harmony/ui_lib/src/main/resources/base/media/foreground.png
new file mode 100644
index 0000000000..4483ddad1f
Binary files /dev/null and b/harmony/ui_lib/src/main/resources/base/media/foreground.png differ
diff --git a/harmony/ui_lib/src/main/resources/base/media/layered_image.json b/harmony/ui_lib/src/main/resources/base/media/layered_image.json
new file mode 100644
index 0000000000..fb49920440
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/base/media/layered_image.json
@@ -0,0 +1,7 @@
+{
+ "layered-image":
+ {
+ "background" : "$media:background",
+ "foreground" : "$media:foreground"
+ }
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/resources/base/media/startIcon.png b/harmony/ui_lib/src/main/resources/base/media/startIcon.png
new file mode 100644
index 0000000000..205ad8b5a8
Binary files /dev/null and b/harmony/ui_lib/src/main/resources/base/media/startIcon.png differ
diff --git a/harmony/ui_lib/src/main/resources/base/profile/backup_config.json b/harmony/ui_lib/src/main/resources/base/profile/backup_config.json
new file mode 100644
index 0000000000..78f40ae7c4
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/base/profile/backup_config.json
@@ -0,0 +1,3 @@
+{
+ "allowToBackupRestore": true
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/resources/base/profile/main_pages.json b/harmony/ui_lib/src/main/resources/base/profile/main_pages.json
new file mode 100644
index 0000000000..1898d94f58
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/base/profile/main_pages.json
@@ -0,0 +1,5 @@
+{
+ "src": [
+ "pages/Index"
+ ]
+}
diff --git a/harmony/ui_lib/src/main/resources/en_US/element/string.json b/harmony/ui_lib/src/main/resources/en_US/element/string.json
new file mode 100644
index 0000000000..3d69c9c908
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/en_US/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_desc",
+ "value": "module description"
+ },
+ {
+ "name": "Ui_libAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "Ui_libAbility_label",
+ "value": "label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/main/resources/zh_CN/element/string.json b/harmony/ui_lib/src/main/resources/zh_CN/element/string.json
new file mode 100644
index 0000000000..566196f568
--- /dev/null
+++ b/harmony/ui_lib/src/main/resources/zh_CN/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "module_desc",
+ "value": "模块描述"
+ },
+ {
+ "name": "Ui_libAbility_desc",
+ "value": "description"
+ },
+ {
+ "name": "Ui_libAbility_label",
+ "value": "label"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/ohosTest/ets/test/Ability.test.ets b/harmony/ui_lib/src/ohosTest/ets/test/Ability.test.ets
new file mode 100644
index 0000000000..85c78f6757
--- /dev/null
+++ b/harmony/ui_lib/src/ohosTest/ets/test/Ability.test.ets
@@ -0,0 +1,35 @@
+import { hilog } from '@kit.PerformanceAnalysisKit';
+import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
+
+export default function abilityTest() {
+ describe('ActsAbilityTest', () => {
+ // Defines a test suite. Two parameters are supported: test suite name and test suite function.
+ beforeAll(() => {
+ // Presets an action, which is performed only once before all test cases of the test suite start.
+ // This API supports only one parameter: preset action function.
+ })
+ beforeEach(() => {
+ // Presets an action, which is performed before each unit test case starts.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: preset action function.
+ })
+ afterEach(() => {
+ // Presets a clear action, which is performed after each unit test case ends.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: clear action function.
+ })
+ afterAll(() => {
+ // Presets a clear action, which is performed after all test cases of the test suite end.
+ // This API supports only one parameter: clear action function.
+ })
+ it('assertContain', 0, () => {
+ // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
+ hilog.info(0x0000, 'testTag', '%{public}s', 'it begin');
+ let a = 'abc';
+ let b = 'b';
+ // Defines a variety of assertion methods, which are used to declare expected boolean conditions.
+ expect(a).assertContain(b);
+ expect(a).assertEqual(a);
+ })
+ })
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/ohosTest/ets/test/List.test.ets b/harmony/ui_lib/src/ohosTest/ets/test/List.test.ets
new file mode 100644
index 0000000000..794c7dc4ed
--- /dev/null
+++ b/harmony/ui_lib/src/ohosTest/ets/test/List.test.ets
@@ -0,0 +1,5 @@
+import abilityTest from './Ability.test';
+
+export default function testsuite() {
+ abilityTest();
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/ohosTest/module.json5 b/harmony/ui_lib/src/ohosTest/module.json5
new file mode 100644
index 0000000000..abea94dc5e
--- /dev/null
+++ b/harmony/ui_lib/src/ohosTest/module.json5
@@ -0,0 +1,13 @@
+{
+ "module": {
+ "name": "ui_lib_test",
+ "type": "feature",
+ "deviceTypes": [
+ "phone",
+ "tablet",
+ "2in1"
+ ],
+ "deliveryWithInstall": true,
+ "installationFree": false
+ }
+}
diff --git a/harmony/ui_lib/src/test/List.test.ets b/harmony/ui_lib/src/test/List.test.ets
new file mode 100644
index 0000000000..bb5b5c3731
--- /dev/null
+++ b/harmony/ui_lib/src/test/List.test.ets
@@ -0,0 +1,5 @@
+import localUnitTest from './LocalUnit.test';
+
+export default function testsuite() {
+ localUnitTest();
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/src/test/LocalUnit.test.ets b/harmony/ui_lib/src/test/LocalUnit.test.ets
new file mode 100644
index 0000000000..165fc1615e
--- /dev/null
+++ b/harmony/ui_lib/src/test/LocalUnit.test.ets
@@ -0,0 +1,33 @@
+import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
+
+export default function localUnitTest() {
+ describe('localUnitTest', () => {
+ // Defines a test suite. Two parameters are supported: test suite name and test suite function.
+ beforeAll(() => {
+ // Presets an action, which is performed only once before all test cases of the test suite start.
+ // This API supports only one parameter: preset action function.
+ });
+ beforeEach(() => {
+ // Presets an action, which is performed before each unit test case starts.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: preset action function.
+ });
+ afterEach(() => {
+ // Presets a clear action, which is performed after each unit test case ends.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: clear action function.
+ });
+ afterAll(() => {
+ // Presets a clear action, which is performed after all test cases of the test suite end.
+ // This API supports only one parameter: clear action function.
+ });
+ it('assertContain', 0, () => {
+ // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function.
+ let a = 'abc';
+ let b = 'b';
+ // Defines a variety of assertion methods, which are used to declare expected boolean conditions.
+ expect(a).assertContain(b);
+ expect(a).assertEqual(a);
+ });
+ });
+}
\ No newline at end of file
diff --git a/harmony/ui_lib/ts.ts b/harmony/ui_lib/ts.ts
new file mode 100644
index 0000000000..a4ef7e9371
--- /dev/null
+++ b/harmony/ui_lib/ts.ts
@@ -0,0 +1,9 @@
+/*
+ * Copyright (c) 2024 Huawei Device Co., Ltd. All rights reserved
+ * Use of this source code is governed by a MIT license that can be
+ * found in the LICENSE file.
+ */
+export * from "./src/main/ets/UiLibPackage"
+export * from "./src/main/ets/KeyboardTrackingViewTempManagerTurboModule"
+export * from "./src/main/ets/KeyboardTrackingViewTempTurboModule"
+export * from "./src/main/ets/CustomInputControllerTempTurboModule"
\ No newline at end of file
diff --git a/ios/.xcode.env b/ios/.xcode.env
deleted file mode 100644
index 9d643e97ae..0000000000
--- a/ios/.xcode.env
+++ /dev/null
@@ -1,10 +0,0 @@
-# This `.xcode.env` file is versioned and is used to source the environment
-# used when running script phases inside Xcode.
-# To customize your local environment, you can create an `.xcode.env.local`
-# file that is not versioned.
-# NODE_BINARY variable contains the PATH to the node executable.
-#
-# Customize the NODE_BINARY variable here.
-# For example, to use nvm with brew, add the following line
-# . "$(brew --prefix nvm)/nvm.sh" --no-use
-export NODE_BINARY=$(command -v node)
\ No newline at end of file
diff --git a/ios/DesignTokens.xcassets/$backgroundDangerHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDangerHeavy.colorset/Contents.json
deleted file mode 100644
index ed93c1b2b5..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDangerHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x2F",
- "green" : "0x3D",
- "red" : "0xFC"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x67",
- "green" : "0x72",
- "red" : "0xFD"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDangerLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDangerLight.colorset/Contents.json
deleted file mode 100644
index d62262dcae..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDangerLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xEC",
- "green" : "0xED",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x0E",
- "green" : "0x12",
- "red" : "0x4C"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDark.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDark.colorset/Contents.json
deleted file mode 100644
index 10fa737edb..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDark.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDarkActive.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDarkActive.colorset/Contents.json
deleted file mode 100644
index 1fd34cd1bb..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDarkActive.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDarkElevated.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDarkElevated.colorset/Contents.json
deleted file mode 100644
index 0e8d9ed0d2..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDarkElevated.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDefault.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDefault.colorset/Contents.json
deleted file mode 100644
index 73a64f985e..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDefault.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xFF",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x03",
- "green" : "0x02",
- "red" : "0x02"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDineHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDineHeavy.colorset/Contents.json
deleted file mode 100644
index 5b26d059be..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDineHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF2",
- "green" : "0x18",
- "red" : "0x73"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x7A",
- "red" : "0xB1"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDineLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDineLight.colorset/Contents.json
deleted file mode 100644
index 17ff75ce53..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDineLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xED",
- "red" : "0xF5"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3F",
- "green" : "0x05",
- "red" : "0x1D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundDisabled.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundDisabled.colorset/Contents.json
deleted file mode 100644
index 1dc91a2fb6..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundDisabled.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundElevated.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundElevated.colorset/Contents.json
deleted file mode 100644
index a44ab2a005..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundElevated.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xFF",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x1E",
- "green" : "0x18",
- "red" : "0x10"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundFitHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundFitHeavy.colorset/Contents.json
deleted file mode 100644
index fc0619134c..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundFitHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x69",
- "green" : "0x7A",
- "red" : "0x06"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x94",
- "green" : "0x9F",
- "red" : "0x4E"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundFitLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundFitLight.colorset/Contents.json
deleted file mode 100644
index db3f096cc2..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundFitLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xE4",
- "green" : "0xE6",
- "red" : "0xD5"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x24",
- "green" : "0x2A",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundGeneralHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundGeneralHeavy.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundGeneralHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundGeneralLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundGeneralLight.colorset/Contents.json
deleted file mode 100644
index 1d0f657f02..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundGeneralLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xF3",
- "red" : "0xE9"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x4D",
- "green" : "0x21",
- "red" : "0x05"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundGeneralMedium.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundGeneralMedium.colorset/Contents.json
deleted file mode 100644
index 66727b3a1d..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundGeneralMedium.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xDF",
- "red" : "0xC4"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x80",
- "green" : "0x37",
- "red" : "0x09"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundInverted.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundInverted.colorset/Contents.json
deleted file mode 100644
index c79385cddd..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundInverted.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFA",
- "green" : "0xF9",
- "red" : "0xF8"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundMajorHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundMajorHeavy.colorset/Contents.json
deleted file mode 100644
index 4c9139ec23..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundMajorHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "19",
- "green" : "100",
- "red" : "251"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "83",
- "green" : "142",
- "red" : "252"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundMajorLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundMajorLight.colorset/Contents.json
deleted file mode 100644
index 5fc40be86b..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundMajorLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xEA",
- "green" : "0xF1",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x06",
- "green" : "0x1E",
- "red" : "0x4B"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundNeutral.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundNeutral.colorset/Contents.json
deleted file mode 100644
index a509c9b908..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundNeutral.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF5",
- "green" : "0xF2",
- "red" : "0xF0"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x2A",
- "green" : "0x22",
- "red" : "0x16"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundNeutralHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundNeutralHeavy.colorset/Contents.json
deleted file mode 100644
index 36f546cb05..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundNeutralHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundNeutralIdle.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundNeutralIdle.colorset/Contents.json
deleted file mode 100644
index 58287f0314..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundNeutralIdle.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xB1",
- "green" : "0xAC",
- "red" : "0xA6"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x81",
- "green" : "0x78",
- "red" : "0x6E"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundNeutralLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundNeutralLight.colorset/Contents.json
deleted file mode 100644
index 4c065bb113..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundNeutralLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFA",
- "green" : "0xF9",
- "red" : "0xF8"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x1E",
- "green" : "0x18",
- "red" : "0x10"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundNeutralMedium.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundNeutralMedium.colorset/Contents.json
deleted file mode 100644
index fd066615f7..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundNeutralMedium.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF0",
- "green" : "0xEC",
- "red" : "0xE8"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundPremiumHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundPremiumHeavy.colorset/Contents.json
deleted file mode 100644
index 3d44b42870..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundPremiumHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xBD",
- "green" : "0x42",
- "red" : "0x9F"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xCA",
- "green" : "0x68",
- "red" : "0xB2"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundPremiumLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundPremiumLight.colorset/Contents.json
deleted file mode 100644
index 6871d379d2..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundPremiumLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFD",
- "green" : "0xEB",
- "red" : "0xFA"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x39",
- "green" : "0x14",
- "red" : "0x30"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundPrimaryHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundPrimaryHeavy.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundPrimaryHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundPrimaryLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundPrimaryLight.colorset/Contents.json
deleted file mode 100644
index 1d0f657f02..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundPrimaryLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xF3",
- "red" : "0xE9"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x4D",
- "green" : "0x21",
- "red" : "0x05"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundPrimaryMedium.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundPrimaryMedium.colorset/Contents.json
deleted file mode 100644
index 66727b3a1d..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundPrimaryMedium.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xDF",
- "red" : "0xC4"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x80",
- "green" : "0x37",
- "red" : "0x09"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundSuccessHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundSuccessHeavy.colorset/Contents.json
deleted file mode 100644
index bb80185d8b..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundSuccessHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x7E",
- "green" : "0xA8",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xA4",
- "green" : "0xC3",
- "red" : "0x45"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundSuccessLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundSuccessLight.colorset/Contents.json
deleted file mode 100644
index 5a45ba615d..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundSuccessLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF2",
- "green" : "0xF7",
- "red" : "0xE3"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x26",
- "green" : "0x32",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundWarningHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundWarningHeavy.colorset/Contents.json
deleted file mode 100644
index 6191577dca..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundWarningHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x0D",
- "green" : "0xC5",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x4E",
- "green" : "0xD5",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$backgroundWarningLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$backgroundWarningLight.colorset/Contents.json
deleted file mode 100644
index 2670e8196f..0000000000
--- a/ios/DesignTokens.xcassets/$backgroundWarningLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD3",
- "green" : "0xF4",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x06",
- "green" : "0x62",
- "red" : "0x80"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconDanger.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconDanger.colorset/Contents.json
deleted file mode 100644
index ee6335bbcc..0000000000
--- a/ios/DesignTokens.xcassets/$iconDanger.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x12",
- "green" : "0x27",
- "red" : "0xD5"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xC5",
- "green" : "0xC9",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconDangerLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconDangerLight.colorset/Contents.json
deleted file mode 100644
index ed93c1b2b5..0000000000
--- a/ios/DesignTokens.xcassets/$iconDangerLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x2F",
- "green" : "0x3D",
- "red" : "0xFC"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x67",
- "green" : "0x72",
- "red" : "0xFD"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconDefault.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconDefault.colorset/Contents.json
deleted file mode 100644
index 0f3270917e..0000000000
--- a/ios/DesignTokens.xcassets/$iconDefault.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF0",
- "green" : "0xEC",
- "red" : "0xE8"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconDefaultLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconDefaultLight.colorset/Contents.json
deleted file mode 100644
index 0474cd3e90..0000000000
--- a/ios/DesignTokens.xcassets/$iconDefaultLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xFF",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconDisabled.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconDisabled.colorset/Contents.json
deleted file mode 100644
index 1dc91a2fb6..0000000000
--- a/ios/DesignTokens.xcassets/$iconDisabled.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconGeneral.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconGeneral.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$iconGeneral.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconGeneralLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconGeneralLight.colorset/Contents.json
deleted file mode 100644
index 6bb3772382..0000000000
--- a/ios/DesignTokens.xcassets/$iconGeneralLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconMajor.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconMajor.colorset/Contents.json
deleted file mode 100644
index efad6b2d24..0000000000
--- a/ios/DesignTokens.xcassets/$iconMajor.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x00",
- "green" : "0x47",
- "red" : "0xCD"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xBD",
- "green" : "0xD4",
- "red" : "0xFE"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconNeutral.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconNeutral.colorset/Contents.json
deleted file mode 100644
index 36f546cb05..0000000000
--- a/ios/DesignTokens.xcassets/$iconNeutral.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconPremium.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconPremium.colorset/Contents.json
deleted file mode 100644
index a7a108eee2..0000000000
--- a/ios/DesignTokens.xcassets/$iconPremium.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xBD",
- "green" : "0x42",
- "red" : "0x9F"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xBD",
- "green" : "0x42",
- "red" : "0x9F"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconPrimary.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconPrimary.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$iconPrimary.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconPrimaryLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconPrimaryLight.colorset/Contents.json
deleted file mode 100644
index 6bb3772382..0000000000
--- a/ios/DesignTokens.xcassets/$iconPrimaryLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconSuccess.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconSuccess.colorset/Contents.json
deleted file mode 100644
index b465eff714..0000000000
--- a/ios/DesignTokens.xcassets/$iconSuccess.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x85",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xDD",
- "green" : "0xEB",
- "red" : "0xB3"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$iconSuccessLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$iconSuccessLight.colorset/Contents.json
deleted file mode 100644
index bb80185d8b..0000000000
--- a/ios/DesignTokens.xcassets/$iconSuccessLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x7E",
- "green" : "0xA8",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xA4",
- "green" : "0xC3",
- "red" : "0x45"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineDanger.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineDanger.colorset/Contents.json
deleted file mode 100644
index ed93c1b2b5..0000000000
--- a/ios/DesignTokens.xcassets/$outlineDanger.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x2F",
- "green" : "0x3D",
- "red" : "0xFC"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x67",
- "green" : "0x72",
- "red" : "0xFD"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineDefault.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineDefault.colorset/Contents.json
deleted file mode 100644
index fd066615f7..0000000000
--- a/ios/DesignTokens.xcassets/$outlineDefault.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF0",
- "green" : "0xEC",
- "red" : "0xE8"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineDisabled.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineDisabled.colorset/Contents.json
deleted file mode 100644
index 1dc91a2fb6..0000000000
--- a/ios/DesignTokens.xcassets/$outlineDisabled.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineDisabledHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineDisabledHeavy.colorset/Contents.json
deleted file mode 100644
index ce7b96c0dd..0000000000
--- a/ios/DesignTokens.xcassets/$outlineDisabledHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x81",
- "green" : "0x78",
- "red" : "0x6E"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xB1",
- "green" : "0xAC",
- "red" : "0xA6"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineGeneral.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineGeneral.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$outlineGeneral.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineInverted.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineInverted.colorset/Contents.json
deleted file mode 100644
index 0474cd3e90..0000000000
--- a/ios/DesignTokens.xcassets/$outlineInverted.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xFF",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlinePrimary.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlinePrimary.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$outlinePrimary.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$outlineWarning.colorset/Contents.json b/ios/DesignTokens.xcassets/$outlineWarning.colorset/Contents.json
deleted file mode 100644
index 6191577dca..0000000000
--- a/ios/DesignTokens.xcassets/$outlineWarning.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x0D",
- "green" : "0xC5",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x4E",
- "green" : "0xD5",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textDanger.colorset/Contents.json b/ios/DesignTokens.xcassets/$textDanger.colorset/Contents.json
deleted file mode 100644
index ee6335bbcc..0000000000
--- a/ios/DesignTokens.xcassets/$textDanger.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x12",
- "green" : "0x27",
- "red" : "0xD5"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xC5",
- "green" : "0xC9",
- "red" : "0xFF"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textDangerLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$textDangerLight.colorset/Contents.json
deleted file mode 100644
index ed93c1b2b5..0000000000
--- a/ios/DesignTokens.xcassets/$textDangerLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x2F",
- "green" : "0x3D",
- "red" : "0xFC"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x67",
- "green" : "0x72",
- "red" : "0xFD"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textDefault.colorset/Contents.json b/ios/DesignTokens.xcassets/$textDefault.colorset/Contents.json
deleted file mode 100644
index 0f3270917e..0000000000
--- a/ios/DesignTokens.xcassets/$textDefault.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xF0",
- "green" : "0xEC",
- "red" : "0xE8"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textDefaultLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$textDefaultLight.colorset/Contents.json
deleted file mode 100644
index 70ff387c3e..0000000000
--- a/ios/DesignTokens.xcassets/$textDefaultLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "1.000",
- "green" : "1.000",
- "red" : "1.000"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x3C",
- "green" : "0x30",
- "red" : "0x20"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textDisabled.colorset/Contents.json b/ios/DesignTokens.xcassets/$textDisabled.colorset/Contents.json
deleted file mode 100644
index 1dc91a2fb6..0000000000
--- a/ios/DesignTokens.xcassets/$textDisabled.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textGeneral.colorset/Contents.json b/ios/DesignTokens.xcassets/$textGeneral.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$textGeneral.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textMajor.colorset/Contents.json b/ios/DesignTokens.xcassets/$textMajor.colorset/Contents.json
deleted file mode 100644
index efad6b2d24..0000000000
--- a/ios/DesignTokens.xcassets/$textMajor.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x00",
- "green" : "0x47",
- "red" : "0xCD"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xBD",
- "green" : "0xD4",
- "red" : "0xFE"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textNeutral.colorset/Contents.json b/ios/DesignTokens.xcassets/$textNeutral.colorset/Contents.json
deleted file mode 100644
index ce7b96c0dd..0000000000
--- a/ios/DesignTokens.xcassets/$textNeutral.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x81",
- "green" : "0x78",
- "red" : "0x6E"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xB1",
- "green" : "0xAC",
- "red" : "0xA6"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textNeutralHeavy.colorset/Contents.json b/ios/DesignTokens.xcassets/$textNeutralHeavy.colorset/Contents.json
deleted file mode 100644
index 36f546cb05..0000000000
--- a/ios/DesignTokens.xcassets/$textNeutralHeavy.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x59",
- "red" : "0x4D"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xD8",
- "green" : "0xD6",
- "red" : "0xD2"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textNeutralLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$textNeutralLight.colorset/Contents.json
deleted file mode 100644
index 58287f0314..0000000000
--- a/ios/DesignTokens.xcassets/$textNeutralLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xB1",
- "green" : "0xAC",
- "red" : "0xA6"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x81",
- "green" : "0x78",
- "red" : "0x6E"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textPrimary.colorset/Contents.json b/ios/DesignTokens.xcassets/$textPrimary.colorset/Contents.json
deleted file mode 100644
index 9366ee797f..0000000000
--- a/ios/DesignTokens.xcassets/$textPrimary.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0x6D",
- "red" : "0x11"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xFF",
- "green" : "0xA1",
- "red" : "0x60"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textSuccess.colorset/Contents.json b/ios/DesignTokens.xcassets/$textSuccess.colorset/Contents.json
deleted file mode 100644
index b465eff714..0000000000
--- a/ios/DesignTokens.xcassets/$textSuccess.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x63",
- "green" : "0x85",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xDD",
- "green" : "0xEB",
- "red" : "0xB3"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/$textSuccessLight.colorset/Contents.json b/ios/DesignTokens.xcassets/$textSuccessLight.colorset/Contents.json
deleted file mode 100644
index bb80185d8b..0000000000
--- a/ios/DesignTokens.xcassets/$textSuccessLight.colorset/Contents.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "colors" : [
- {
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0x7E",
- "green" : "0xA8",
- "red" : "0x00"
- }
- },
- "idiom" : "universal"
- },
- {
- "appearances" : [
- {
- "appearance" : "luminosity",
- "value" : "dark"
- }
- ],
- "color" : {
- "color-space" : "srgb",
- "components" : {
- "alpha" : "1.000",
- "blue" : "0xA4",
- "green" : "0xC3",
- "red" : "0x45"
- }
- },
- "idiom" : "universal"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/DesignTokens.xcassets/Contents.json b/ios/DesignTokens.xcassets/Contents.json
deleted file mode 100644
index 73c00596a7..0000000000
--- a/ios/DesignTokens.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/Podfile b/ios/Podfile
deleted file mode 100644
index ce739bd8d9..0000000000
--- a/ios/Podfile
+++ /dev/null
@@ -1,62 +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, min_ios_version_supported
-prepare_react_native_project!
-
-# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
-# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded
-#
-# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js`
-# ```js
-# module.exports = {
-# dependencies: {
-# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
-# ```
-flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
-linkage = ENV['USE_FRAMEWORKS']
-if linkage != nil
- Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
- use_frameworks! :linkage => linkage.to_sym
-end
-
-target 'rnuilib' do
- pod 'ReactNativeUiLib', :path => "../lib/ReactNativeUiLib.podspec"
-
- config = use_native_modules!
-
- # Flags change depending on the env values.
- flags = get_default_flags()
-
- use_react_native!(
- :path => config[:reactNativePath],
- # Hermes is now enabled by default. Disable by setting this flag to false.
- # Upcoming versions of React Native may rely on get_default_flags(), but
- # we make it explicit here to aid in the React Native upgrade process.
- :hermes_enabled => true,
- :fabric_enabled => flags[:fabric_enabled],
- # Enables Flipper.
- #
- # Note that if you have use_frameworks! enabled, Flipper will not work and
- # you should disable the next line.
- :flipper_configuration => flipper_config,
- # An absolute path to your application root.
- :app_path => "#{Pod::Config.instance.installation_root}/.."
- )
-
- target 'rnuilibTests' do
- inherit! :complete
- # Pods for testing
- # use_flipper!()
- end
-
- post_install do |installer|
- react_native_post_install(
- installer,
- # Set `mac_catalyst_enabled` to `true` in order to apply patches
- # necessary for Mac Catalyst builds
- :mac_catalyst_enabled => false
- )
- __apply_Xcode_12_5_M1_post_install_workaround(installer)
- end
-end
diff --git a/ios/rnuilib-tvOS/Info.plist b/ios/rnuilib-tvOS/Info.plist
deleted file mode 100644
index ecbd496be7..0000000000
--- a/ios/rnuilib-tvOS/Info.plist
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- NSAppTransportSecurity
-
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
-
-
-
- NSLocationWhenInUseUsageDescription
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIViewControllerBasedStatusBarAppearance
-
-
-
diff --git a/ios/rnuilib-tvOSTests/Info.plist b/ios/rnuilib-tvOSTests/Info.plist
deleted file mode 100644
index ba72822e87..0000000000
--- a/ios/rnuilib-tvOSTests/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- BNDL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
-
-
diff --git a/ios/rnuilib.xcodeproj/project.pbxproj b/ios/rnuilib.xcodeproj/project.pbxproj
deleted file mode 100644
index 3f365b54c8..0000000000
--- a/ios/rnuilib.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,980 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 00E356F31AD99517003FC87E /* rnuilibTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* rnuilibTests.m */; };
- 10A864C1285B5CB00011FF03 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 10A864C0285B5CB00011FF03 /* AppDelegate.mm */; };
- 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
- 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
- 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
- 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
- 2DCD954D1E0B4F2C00145EB5 /* rnuilibTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* rnuilibTests.m */; };
- 56EBC4A1F72808C5B51F7BBF /* libPods-rnuilib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C5768CF5EB4CEC5AF24695D /* libPods-rnuilib.a */; };
- 8E52CBDF2887DD21009D5EC5 /* DesignTokens.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8E52CBDE2887DD21009D5EC5 /* DesignTokens.xcassets */; };
- 8E8B0D662744D9CD0026B520 /* void.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E8B0D652744D9CD0026B520 /* void.swift */; };
- 8EA1FC8C2519E7F7008B4B36 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8EA1FC8B2519E7F7008B4B36 /* LaunchScreen.storyboard */; };
- C24F706C923507D9D0AFAF26 /* libPods-rnuilib-rnuilibTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB858F3A7230EAA142D23DA1 /* libPods-rnuilib-rnuilibTests.a */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
- remoteInfo = rnuilib;
- };
- 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
- remoteInfo = "rnuilib-tvOS";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; };
- 00E356EE1AD99517003FC87E /* rnuilibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = rnuilibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 00E356F21AD99517003FC87E /* rnuilibTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = rnuilibTests.m; sourceTree = ""; };
- 10A864C0285B5CB00011FF03 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = rnuilib/AppDelegate.mm; sourceTree = ""; };
- 13B07F961A680F5B00A75B9A /* rnuilib.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = rnuilib.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = rnuilib/AppDelegate.h; sourceTree = ""; };
- 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = rnuilib/Images.xcassets; sourceTree = ""; };
- 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = rnuilib/Info.plist; sourceTree = ""; };
- 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = rnuilib/main.m; sourceTree = ""; };
- 2D02E47B1E0B4A5D006451C7 /* rnuilib-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "rnuilib-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
- 2D02E4901E0B4A5D006451C7 /* rnuilib-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "rnuilib-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- 56523CB09C6A79FEBA0C210A /* Pods-rnuilib-rnuilibTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib-rnuilibTests.release.xcconfig"; path = "Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests.release.xcconfig"; sourceTree = ""; };
- 65B766BC0A8D1F830F3D2004 /* Pods-rnuilib.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib.debug.xcconfig"; path = "Target Support Files/Pods-rnuilib/Pods-rnuilib.debug.xcconfig"; sourceTree = ""; };
- 66AD894C4A02A884861A27E2 /* Pods-rnuilib.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib.release.xcconfig"; path = "Target Support Files/Pods-rnuilib/Pods-rnuilib.release.xcconfig"; sourceTree = ""; };
- 6C5768CF5EB4CEC5AF24695D /* libPods-rnuilib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-rnuilib.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 86A4AD8C011363501515A0EC /* Pods-rnuilib-rnuilibTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib-rnuilibTests.debug.xcconfig"; path = "Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests.debug.xcconfig"; sourceTree = ""; };
- 8E52CBDE2887DD21009D5EC5 /* DesignTokens.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = DesignTokens.xcassets; sourceTree = ""; };
- 8E8B0D652744D9CD0026B520 /* void.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = void.swift; sourceTree = ""; };
- 8EA1FC8B2519E7F7008B4B36 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = rnuilib/LaunchScreen.storyboard; sourceTree = ""; };
- 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; };
- FB858F3A7230EAA142D23DA1 /* libPods-rnuilib-rnuilibTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-rnuilib-rnuilibTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 00E356EB1AD99517003FC87E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- C24F706C923507D9D0AFAF26 /* libPods-rnuilib-rnuilibTests.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 56EBC4A1F72808C5B51F7BBF /* libPods-rnuilib.a in Frameworks */,
- );
- 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 /* rnuilibTests */ = {
- isa = PBXGroup;
- children = (
- 00E356F21AD99517003FC87E /* rnuilibTests.m */,
- 00E356F01AD99517003FC87E /* Supporting Files */,
- );
- path = rnuilibTests;
- sourceTree = "";
- };
- 00E356F01AD99517003FC87E /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- 00E356F11AD99517003FC87E /* Info.plist */,
- );
- name = "Supporting Files";
- sourceTree = "";
- };
- 13B07FAE1A68108700A75B9A /* rnuilib */ = {
- isa = PBXGroup;
- children = (
- 8E52CBDE2887DD21009D5EC5 /* DesignTokens.xcassets */,
- 10A864C0285B5CB00011FF03 /* AppDelegate.mm */,
- 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
- 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
- 13B07FB51A68108700A75B9A /* Images.xcassets */,
- 13B07FB61A68108700A75B9A /* Info.plist */,
- 13B07FB71A68108700A75B9A /* main.m */,
- 8EA1FC8B2519E7F7008B4B36 /* LaunchScreen.storyboard */,
- 8E8B0D652744D9CD0026B520 /* void.swift */,
- );
- name = rnuilib;
- sourceTree = "";
- };
- 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
- ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
- 6C5768CF5EB4CEC5AF24695D /* libPods-rnuilib.a */,
- FB858F3A7230EAA142D23DA1 /* libPods-rnuilib-rnuilibTests.a */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
- isa = PBXGroup;
- children = (
- );
- name = Libraries;
- sourceTree = "";
- };
- 83CBB9F61A601CBA00E9B192 = {
- isa = PBXGroup;
- children = (
- 13B07FAE1A68108700A75B9A /* rnuilib */,
- 832341AE1AAA6A7D00B99B32 /* Libraries */,
- 00E356EF1AD99517003FC87E /* rnuilibTests */,
- 83CBBA001A601CBA00E9B192 /* Products */,
- 2D16E6871FA4F8E400B85C8A /* Frameworks */,
- D99C980AB24A05601E0007F9 /* Pods */,
- );
- indentWidth = 2;
- sourceTree = "";
- tabWidth = 2;
- usesTabs = 0;
- };
- 83CBBA001A601CBA00E9B192 /* Products */ = {
- isa = PBXGroup;
- children = (
- 13B07F961A680F5B00A75B9A /* rnuilib.app */,
- 00E356EE1AD99517003FC87E /* rnuilibTests.xctest */,
- 2D02E47B1E0B4A5D006451C7 /* rnuilib-tvOS.app */,
- 2D02E4901E0B4A5D006451C7 /* rnuilib-tvOSTests.xctest */,
- );
- name = Products;
- sourceTree = "";
- };
- D99C980AB24A05601E0007F9 /* Pods */ = {
- isa = PBXGroup;
- children = (
- 65B766BC0A8D1F830F3D2004 /* Pods-rnuilib.debug.xcconfig */,
- 66AD894C4A02A884861A27E2 /* Pods-rnuilib.release.xcconfig */,
- 86A4AD8C011363501515A0EC /* Pods-rnuilib-rnuilibTests.debug.xcconfig */,
- 56523CB09C6A79FEBA0C210A /* Pods-rnuilib-rnuilibTests.release.xcconfig */,
- );
- path = Pods;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 00E356ED1AD99517003FC87E /* rnuilibTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "rnuilibTests" */;
- buildPhases = (
- 72FA426D5675971732169A33 /* [CP] Check Pods Manifest.lock */,
- 00E356EA1AD99517003FC87E /* Sources */,
- 00E356EB1AD99517003FC87E /* Frameworks */,
- 00E356EC1AD99517003FC87E /* Resources */,
- 4A2DFE2E4F276607CC9422BA /* [CP] Embed Pods Frameworks */,
- 05F5C3E9528158446F3788A5 /* [CP] Copy Pods Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 00E356F51AD99517003FC87E /* PBXTargetDependency */,
- );
- name = rnuilibTests;
- productName = rnuilibTests;
- productReference = 00E356EE1AD99517003FC87E /* rnuilibTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- 13B07F861A680F5B00A75B9A /* rnuilib */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "rnuilib" */;
- buildPhases = (
- 5C139D0477DFF8903C0C457A /* [CP] Check Pods Manifest.lock */,
- FD10A7F022414F080027D42C /* Start Packager */,
- 13B07F871A680F5B00A75B9A /* Sources */,
- 13B07F8C1A680F5B00A75B9A /* Frameworks */,
- 13B07F8E1A680F5B00A75B9A /* Resources */,
- 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
- A077BED00DEE8BB3D2E7978D /* [CP] Embed Pods Frameworks */,
- 74E5355D055C34254F806DF4 /* [CP] Copy Pods Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = rnuilib;
- productName = rnuilib;
- productReference = 13B07F961A680F5B00A75B9A /* rnuilib.app */;
- productType = "com.apple.product-type.application";
- };
- 2D02E47A1E0B4A5D006451C7 /* rnuilib-tvOS */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "rnuilib-tvOS" */;
- buildPhases = (
- FD10A7F122414F3F0027D42C /* Start Packager */,
- 2D02E4771E0B4A5D006451C7 /* Sources */,
- 2D02E4781E0B4A5D006451C7 /* Frameworks */,
- 2D02E4791E0B4A5D006451C7 /* Resources */,
- 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "rnuilib-tvOS";
- productName = "rnuilib-tvOS";
- productReference = 2D02E47B1E0B4A5D006451C7 /* rnuilib-tvOS.app */;
- productType = "com.apple.product-type.application";
- };
- 2D02E48F1E0B4A5D006451C7 /* rnuilib-tvOSTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "rnuilib-tvOSTests" */;
- buildPhases = (
- 2D02E48C1E0B4A5D006451C7 /* Sources */,
- 2D02E48D1E0B4A5D006451C7 /* Frameworks */,
- 2D02E48E1E0B4A5D006451C7 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
- );
- name = "rnuilib-tvOSTests";
- productName = "rnuilib-tvOSTests";
- productReference = 2D02E4901E0B4A5D006451C7 /* rnuilib-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 = 1300;
- };
- 2D02E47A1E0B4A5D006451C7 = {
- CreatedOnToolsVersion = 8.2.1;
- ProvisioningStyle = Automatic;
- };
- 2D02E48F1E0B4A5D006451C7 = {
- CreatedOnToolsVersion = 8.2.1;
- ProvisioningStyle = Automatic;
- TestTargetID = 2D02E47A1E0B4A5D006451C7;
- };
- };
- };
- buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "rnuilib" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 83CBB9F61A601CBA00E9B192;
- productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 13B07F861A680F5B00A75B9A /* rnuilib */,
- 00E356ED1AD99517003FC87E /* rnuilibTests */,
- 2D02E47A1E0B4A5D006451C7 /* rnuilib-tvOS */,
- 2D02E48F1E0B4A5D006451C7 /* rnuilib-tvOSTests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 00E356EC1AD99517003FC87E /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 13B07F8E1A680F5B00A75B9A /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
- 8EA1FC8C2519E7F7008B4B36 /* LaunchScreen.storyboard in Resources */,
- 8E52CBDF2887DD21009D5EC5 /* DesignTokens.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 = (
- "$(SRCROOT)/.xcode.env.local",
- "$(SRCROOT)/.xcode.env",
- );
- name = "Bundle React Native code and images";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
- };
- 05F5C3E9528158446F3788A5 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests-resources.sh",
- "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
- );
- name = "[CP] Copy Pods Resources";
- outputPaths = (
- "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
- 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";
- };
- 4A2DFE2E4F276607CC9422BA /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests-frameworks.sh",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
- );
- name = "[CP] Embed Pods Frameworks";
- outputPaths = (
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- 5C139D0477DFF8903C0C457A /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-rnuilib-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- 72FA426D5675971732169A33 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-rnuilib-rnuilibTests-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- 74E5355D055C34254F806DF4 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-rnuilib/Pods-rnuilib-resources.sh",
- "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
- );
- name = "[CP] Copy Pods Resources";
- outputPaths = (
- "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-rnuilib/Pods-rnuilib-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
- A077BED00DEE8BB3D2E7978D /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-rnuilib/Pods-rnuilib-frameworks.sh",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
- "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
- );
- name = "[CP] Embed Pods Frameworks";
- outputPaths = (
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-rnuilib/Pods-rnuilib-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- 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 /* rnuilibTests.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 13B07F871A680F5B00A75B9A /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 13B07FC11A68108700A75B9A /* main.m in Sources */,
- 10A864C1285B5CB00011FF03 /* AppDelegate.mm in Sources */,
- 8E8B0D662744D9CD0026B520 /* void.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 2D02E4771E0B4A5D006451C7 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 2D02E48C1E0B4A5D006451C7 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2DCD954D1E0B4F2C00145EB5 /* rnuilibTests.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 13B07F861A680F5B00A75B9A /* rnuilib */;
- targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
- };
- 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 2D02E47A1E0B4A5D006451C7 /* rnuilib-tvOS */;
- targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 00E356F61AD99517003FC87E /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 86A4AD8C011363501515A0EC /* Pods-rnuilib-rnuilibTests.debug.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
- BUNDLE_LOADER = "$(TEST_HOST)";
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- INFOPLIST_FILE = rnuilibTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 12.4;
- 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)/rnuilib.app/rnuilib";
- };
- name = Debug;
- };
- 00E356F71AD99517003FC87E /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 56523CB09C6A79FEBA0C210A /* Pods-rnuilib-rnuilibTests.release.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
- BUNDLE_LOADER = "$(TEST_HOST)";
- COPY_PHASE_STRIP = NO;
- INFOPLIST_FILE = rnuilibTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 12.4;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- MARKETING_VERSION = 1.0;
- OTHER_LDFLAGS = (
- "-ObjC",
- "-lc++",
- "$(inherited)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = "$(TARGET_NAME)";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/rnuilib.app/rnuilib";
- };
- name = Release;
- };
- 13B07F941A680F5B00A75B9A /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 65B766BC0A8D1F830F3D2004 /* Pods-rnuilib.debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
- ENABLE_BITCODE = NO;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "$(inherited)",
- "FB_SONARKIT_ENABLED=1",
- );
- INFOPLIST_FILE = rnuilib/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 1.1.16;
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-ObjC",
- "-lc++",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = org.reactjs.native.example.wix.rnuilib;
- PRODUCT_NAME = rnuilib;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Debug;
- };
- 13B07F951A680F5B00A75B9A /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 66AD894C4A02A884861A27E2 /* Pods-rnuilib.release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
- INFOPLIST_FILE = rnuilib/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 1.1.16;
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-ObjC",
- "-lc++",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- "PRODUCT_BUNDLE_IDENTIFIER[sdk=iphoneos*]" = org.reactjs.native.example.wix.rnuilib;
- PRODUCT_NAME = rnuilib;
- SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2";
- 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 = "rnuilib-tvOS/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-ObjC",
- "-lc++",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.rnuilib-tvOS";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = appletvos;
- TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 9.2;
- };
- 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 = "rnuilib-tvOS/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-ObjC",
- "-lc++",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.rnuilib-tvOS";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = appletvos;
- TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 9.2;
- };
- 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 = "rnuilib-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.rnuilib-tvOSTests";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = appletvos;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/rnuilib-tvOS.app/rnuilib-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 = "rnuilib-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.rnuilib-tvOSTests";
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = appletvos;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/rnuilib-tvOS.app/rnuilib-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 = "c++17";
- 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;
- "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
- 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 = 12.4;
- LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
- LIBRARY_SEARCH_PATHS = (
- "$(SDKROOT)/usr/lib/swift",
- "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
- "\"$(inherited)\"",
- );
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
- SDKROOT = iphoneos;
- };
- name = Debug;
- };
- 83CBBA211A601CBA00E9B192 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "c++17";
- 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;
- "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
- 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 = 12.4;
- LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
- LIBRARY_SEARCH_PATHS = (
- "$(SDKROOT)/usr/lib/swift",
- "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
- "\"$(inherited)\"",
- );
- MTL_ENABLE_DEBUG_INFO = NO;
- REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
- SDKROOT = iphoneos;
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "rnuilibTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 00E356F61AD99517003FC87E /* Debug */,
- 00E356F71AD99517003FC87E /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "rnuilib" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 13B07F941A680F5B00A75B9A /* Debug */,
- 13B07F951A680F5B00A75B9A /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "rnuilib-tvOS" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2D02E4971E0B4A5E006451C7 /* Debug */,
- 2D02E4981E0B4A5E006451C7 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "rnuilib-tvOSTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2D02E4991E0B4A5E006451C7 /* Debug */,
- 2D02E49A1E0B4A5E006451C7 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "rnuilib" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 83CBBA201A601CBA00E9B192 /* Debug */,
- 83CBBA211A601CBA00E9B192 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
-}
diff --git a/ios/rnuilib.xcodeproj/xcshareddata/xcschemes/rnuilib-tvOS.xcscheme b/ios/rnuilib.xcodeproj/xcshareddata/xcschemes/rnuilib-tvOS.xcscheme
deleted file mode 100644
index bacb4328f1..0000000000
--- a/ios/rnuilib.xcodeproj/xcshareddata/xcschemes/rnuilib-tvOS.xcscheme
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/rnuilib.xcodeproj/xcshareddata/xcschemes/rnuilib.xcscheme b/ios/rnuilib.xcodeproj/xcshareddata/xcschemes/rnuilib.xcscheme
deleted file mode 100644
index 4c2c7a460a..0000000000
--- a/ios/rnuilib.xcodeproj/xcshareddata/xcschemes/rnuilib.xcscheme
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/rnuilib.xcworkspace/contents.xcworkspacedata b/ios/rnuilib.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index ad7eb3e0f6..0000000000
--- a/ios/rnuilib.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ios/rnuilib.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/rnuilib.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d981003d..0000000000
--- a/ios/rnuilib.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/ios/rnuilib/AppDelegate.h b/ios/rnuilib/AppDelegate.h
deleted file mode 100644
index 5d2808256c..0000000000
--- a/ios/rnuilib/AppDelegate.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#import
-#import
-
-@interface AppDelegate : RCTAppDelegate
-
-@end
diff --git a/ios/rnuilib/AppDelegate.mm b/ios/rnuilib/AppDelegate.mm
deleted file mode 100644
index 24484b0ca7..0000000000
--- a/ios/rnuilib/AppDelegate.mm
+++ /dev/null
@@ -1,45 +0,0 @@
-// Reverting to using AppDelegate.m since this is causing iOS to fail on start
-#import "AppDelegate.h"
-#import
-#import
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-{
- RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
- [ReactNativeNavigation bootstrapWithBridge:bridge];
-
-// self.moduleName = @"rnuilib";
- // You can add your custom initial props in the dictionary below.
- // They will be passed down to the ViewController used by React Native.
- self.initialProps = @{};
-
-// return [super application:application didFinishLaunchingWithOptions:launchOptions];
- return YES;
-}
-
-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
-{
-#if DEBUG
- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"demo"];
-#else
- return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
-#endif
-}
-
-/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.
-///
-/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html
-/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).
-/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.
-- (BOOL)concurrentRootEnabled
-{
- return true;
-}
-
-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge {
- return [ReactNativeNavigation extraModulesForBridge:bridge];
-}
-
-@end
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/1024.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/1024.png
deleted file mode 100644
index 925ec93b74..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/1024.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/120-1.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/120-1.png
deleted file mode 100644
index 67a88e6145..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/120-1.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/120.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/120.png
deleted file mode 100644
index 67a88e6145..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/120.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/152.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/152.png
deleted file mode 100644
index d5673d8b61..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/152.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/167.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/167.png
deleted file mode 100644
index 163cad22e4..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/167.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/180.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/180.png
deleted file mode 100644
index fd9b2f8c0b..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/180.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/20.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/20.png
deleted file mode 100644
index e91d089212..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/20.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/29.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/29.png
deleted file mode 100644
index 65ed0e3dcb..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/29.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40-1.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40-1.png
deleted file mode 100644
index 02a5a9141f..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40-1.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40-2.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40-2.png
deleted file mode 100644
index 02a5a9141f..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40-2.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40.png
deleted file mode 100644
index 02a5a9141f..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/40.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/58-1.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/58-1.png
deleted file mode 100644
index e5f7159f0d..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/58-1.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/58.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/58.png
deleted file mode 100644
index e5f7159f0d..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/58.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/60.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/60.png
deleted file mode 100644
index 35f094e13f..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/60.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/76.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/76.png
deleted file mode 100644
index 1491cead1b..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/76.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/80-1.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/80-1.png
deleted file mode 100644
index 33679f1932..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/80-1.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/80.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/80.png
deleted file mode 100644
index 33679f1932..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/80.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/87.png b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/87.png
deleted file mode 100644
index 2f2d4564d5..0000000000
Binary files a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/87.png and /dev/null differ
diff --git a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/rnuilib/Images.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index ce5b7f9beb..0000000000
--- a/ios/rnuilib/Images.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "images" : [
- {
- "filename" : "40.png",
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "20x20"
- },
- {
- "filename" : "60.png",
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "20x20"
- },
- {
- "filename" : "58.png",
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "29x29"
- },
- {
- "filename" : "87.png",
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "29x29"
- },
- {
- "filename" : "80.png",
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "40x40"
- },
- {
- "filename" : "120-1.png",
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "40x40"
- },
- {
- "filename" : "120.png",
- "idiom" : "iphone",
- "scale" : "2x",
- "size" : "60x60"
- },
- {
- "filename" : "180.png",
- "idiom" : "iphone",
- "scale" : "3x",
- "size" : "60x60"
- },
- {
- "filename" : "20.png",
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "20x20"
- },
- {
- "filename" : "40-1.png",
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "20x20"
- },
- {
- "filename" : "29.png",
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "29x29"
- },
- {
- "filename" : "58-1.png",
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "29x29"
- },
- {
- "filename" : "40-2.png",
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "40x40"
- },
- {
- "filename" : "80-1.png",
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "40x40"
- },
- {
- "filename" : "76.png",
- "idiom" : "ipad",
- "scale" : "1x",
- "size" : "76x76"
- },
- {
- "filename" : "152.png",
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "76x76"
- },
- {
- "filename" : "167.png",
- "idiom" : "ipad",
- "scale" : "2x",
- "size" : "83.5x83.5"
- },
- {
- "filename" : "1024.png",
- "idiom" : "ios-marketing",
- "scale" : "1x",
- "size" : "1024x1024"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/rnuilib/Images.xcassets/Contents.json b/ios/rnuilib/Images.xcassets/Contents.json
deleted file mode 100644
index 2d92bd53fd..0000000000
--- a/ios/rnuilib/Images.xcassets/Contents.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/ios/rnuilib/Info.plist b/ios/rnuilib/Info.plist
deleted file mode 100644
index 502c80e0cd..0000000000
--- a/ios/rnuilib/Info.plist
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleDisplayName
- R N U I L I B
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(MARKETING_VERSION)
- CFBundleSignature
- ????
- CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
- LSRequiresIPhoneOS
-
- NSAppTransportSecurity
-
- NSAllowsArbitraryLoads
-
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
-
-
-
- NSLocationWhenInUseUsageDescription
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
-
- UIViewControllerBasedStatusBarAppearance
-
-
-
diff --git a/ios/rnuilib/LaunchScreen.storyboard b/ios/rnuilib/LaunchScreen.storyboard
deleted file mode 100644
index b3da53dc87..0000000000
--- a/ios/rnuilib/LaunchScreen.storyboard
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ios/rnuilib/main.m b/ios/rnuilib/main.m
deleted file mode 100644
index d645c7246c..0000000000
--- a/ios/rnuilib/main.m
+++ /dev/null
@@ -1,10 +0,0 @@
-#import
-
-#import "AppDelegate.h"
-
-int main(int argc, char *argv[])
-{
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
-}
diff --git a/ios/rnuilibTests/Info.plist b/ios/rnuilibTests/Info.plist
deleted file mode 100644
index ba72822e87..0000000000
--- a/ios/rnuilibTests/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- BNDL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
-
-
diff --git a/ios/rnuilibTests/rnuilibTests.m b/ios/rnuilibTests/rnuilibTests.m
deleted file mode 100644
index 610389222a..0000000000
--- a/ios/rnuilibTests/rnuilibTests.m
+++ /dev/null
@@ -1,65 +0,0 @@
-#import
-#import
-
-#import
-#import
-
-#define TIMEOUT_SECONDS 600
-#define TEXT_TO_LOOK_FOR @"Welcome to React"
-
-@interface rnuilibTests : XCTestCase
-
-@end
-
-@implementation rnuilibTests
-
-- (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
diff --git a/ios/void.swift b/ios/void.swift
deleted file mode 100644
index a324a80788..0000000000
--- a/ios/void.swift
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-// void.swift
-// rnuilib
-//
-// Created by Ethan Sharabi on 17/11/2021.
-//
-
-import Foundation
diff --git a/lib/components/DynamicFonts/PermissionsAcquirer.harmony.ts b/lib/components/DynamicFonts/PermissionsAcquirer.harmony.ts
new file mode 100644
index 0000000000..708eb40957
--- /dev/null
+++ b/lib/components/DynamicFonts/PermissionsAcquirer.harmony.ts
@@ -0,0 +1,3 @@
+import PermissionsAcquirer from './NoPermissionsAcquirer';
+
+export default PermissionsAcquirer;
diff --git a/package.json b/package.json
index 86120ef9ce..8ae9eb6935 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
- "name": "react-native-ui-lib",
- "version": "7.0.0",
+ "name": "@react-native-oh-tpl/react-native-ui-lib",
+ "version": "7.29.1-0.0.5-rc.3",
"main": "src/index.ts",
"types": "src/index.d.ts",
"author": "Ethan Sharabi ",
@@ -13,6 +13,26 @@
"type": "git",
"url": "https://github.com/wix/react-native-ui-lib"
},
+ "harmony": {
+ "alias": "react-native-ui-lib",
+ "codegenConfig": [
+ {
+ "version": 1,
+ "specPaths": [
+ "./src/native/v1"
+ ]
+ },
+ {
+ "version": 2,
+ "specPaths": [
+ "./src/native/v2"
+ ]
+ }
+ ]
+ },
+ "keywords": [
+ "harmony"
+ ],
"scripts": {
"start": "watchman watch-del-all && export DEV_MODE=true && react-native start",
"start:web": "npm --prefix webDemo run start",
@@ -35,7 +55,8 @@
"calendar:createMocks": "node scripts/createCalendarMockData.js",
"snippets:build": "node scripts/generateSnippets.js",
"demo": "./scripts/demo.sh",
- "release": "node ./scripts/release.js"
+ "release": "node ./scripts/release.js",
+ "postinstall": "node ./scripts/postinstall.js"
},
"dependencies": {
"babel-plugin-transform-inline-environment-variables": "^0.0.2",
@@ -52,7 +73,8 @@
"semver": "^5.5.0",
"tinycolor2": "^1.4.2",
"url-parse": "^1.2.0",
- "wix-react-native-text-size": "~1.0.0"
+ "wix-react-native-text-size": "~1.0.0",
+ "react-native-ui-lib": "7.29.1"
},
"devDependencies": {
"@babel/cli": "^7.16.8",
diff --git a/scripts/build.js b/scripts/build.js
index 8bdf0497b0..c2d5d9788a 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -1,7 +1,7 @@
const childProcess = require('child_process');
const fs = require('fs');
-const BABEL_OPTIONS = `--config-file ./src/.babelrc.json --extensions '.ts,.tsx' --ignore "src/**/*.d.ts"`;
+const BABEL_OPTIONS = `--config-file ./src/.babelrc.json --extensions .ts,.tsx --ignore "src/**/*.d.ts,src/native"`;
const BABEL_INDEX_EXPORTS_OPTIONS = `--config-file ./src/.babelrc.exports.js`;
console.info('## Start RNUILib Build ##');
diff --git a/scripts/postinstall.js b/scripts/postinstall.js
new file mode 100644
index 0000000000..d42c7ae19e
--- /dev/null
+++ b/scripts/postinstall.js
@@ -0,0 +1,37 @@
+const fs = require('fs');
+const path = require('path');
+
+// 源文件路径
+const sourceDir = path.join(__dirname, '../lib/components/DynamicFonts');
+
+// 目标目录(库 B)
+const targetDir = path.join(__dirname, '../../../react-native-ui-lib/lib/components/DynamicFonts');
+
+// 文件列表
+const filesToCopy = [
+ 'PermissionsAcquirer.harmony.d.js',
+ 'PermissionsAcquirer.harmony.d.ts',
+ 'PermissionsAcquirer.harmony.js'
+];
+
+// 确保目标目录存在,如果不存在则创建它
+if (!fs.existsSync(targetDir)) {
+ fs.mkdirSync(targetDir, { recursive: true });
+}
+
+// 复制文件函数
+async function copyFiles() {
+ for (const file of filesToCopy) {
+ const sourceFile = path.join(sourceDir, file);
+ const targetFile = path.join(targetDir, file);
+
+ try {
+ await fs.promises.copyFile(sourceFile, targetFile);
+ } catch (err) {
+ process.exit(1); // 退出并返回错误代码
+ }
+ }
+}
+
+// 执行文件复制操作
+copyFiles();
\ No newline at end of file
diff --git a/src/commons/Constants.ts b/src/commons/Constants.ts
index 5fa1d4dcca..00e197c444 100644
--- a/src/commons/Constants.ts
+++ b/src/commons/Constants.ts
@@ -22,7 +22,7 @@ function breakpointComparator(b1: Breakpoint, b2: Breakpoint) {
}
const isAndroid: boolean = Platform.OS === 'android';
-const isIOS: boolean = Platform.OS === 'ios';
+const isIOS: boolean = Platform.OS === 'ios' || Platform.OS === 'harmony';
const isWeb: boolean = Platform.OS === 'web';
let isTablet: boolean;
let statusBarHeight: number;
diff --git a/src/components/dateTimePicker/index.tsx b/src/components/dateTimePicker/index.tsx
index cbc561c35b..1cc60ff191 100644
--- a/src/components/dateTimePicker/index.tsx
+++ b/src/components/dateTimePicker/index.tsx
@@ -8,7 +8,7 @@ import React, {
forwardRef,
ForwardedRef
} from 'react';
-import {StyleProp, StyleSheet, ViewStyle} from 'react-native';
+import {StyleProp, StyleSheet, ViewStyle, Platform} from 'react-native';
import {DateTimePickerPackage as RNDateTimePicker} from '../../optionalDependencies';
import {useDidUpdate} from '../../hooks';
import {Colors} from '../../style';
@@ -264,6 +264,8 @@ const DateTimePicker = forwardRef((props: DateTimePickerPropsInternal, ref: Forw
return (
{
? dateFormatter(value)
: dateFormat && moment
? moment(value).format(dateFormat)
- : value.toLocaleDateString();
+ : formatTimestamp(value).formattedDate;
case 'time':
return timeFormatter
? timeFormatter(value)
: timeFormat && moment
? moment(value).format(timeFormat)
- : value.toLocaleTimeString();
+ : formatTimestamp(value).formattedTime;
}
}
};
@@ -61,4 +61,27 @@ const useOldApi = (props: OldApiProps) => {
return {getStringValue};
};
+function formatTimestamp(timestamp: any) {
+ const ts = typeof timestamp === 'string' ? Number(timestamp) : timestamp;
+ const date = new Date(ts);
+
+ if (isNaN(date.getTime())) {
+ return { formattedDate: '', formattedTime: '' };
+ }
+ // const date = new Date(timestamp);
+
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
+ const day = String(date.getDate()).padStart(2, '0');
+
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ // const seconds = String(date.getSeconds()).padStart(2, '0');
+
+ const formattedDate = `${year}/${month}/${day}`;
+ const formattedTime = `${hours}:${minutes}`;
+
+ return { formattedDate, formattedTime };
+}
+
export default useOldApi;
diff --git a/src/components/scrollBar/index.tsx b/src/components/scrollBar/index.tsx
index 15162da00c..58908b6dc1 100644
--- a/src/components/scrollBar/index.tsx
+++ b/src/components/scrollBar/index.tsx
@@ -6,9 +6,11 @@ import {
ImageSourcePropType,
NativeSyntheticEvent,
NativeScrollEvent,
- LayoutChangeEvent
+ LayoutChangeEvent,
+ ScrollView,
+ FlatList
} from 'react-native';
-import {ScrollView, FlatList} from 'react-native-gesture-handler';
+// import {ScrollView, FlatList} from 'react-native-gesture-handler';
import {Colors} from '../../style';
import {Constants, asBaseComponent, forwardRef, ForwardRefInjectedProps} from '../../commons/new';
import {ComponentStatics} from '../../typings/common';
diff --git a/src/components/segmentedControl/index.tsx b/src/components/segmentedControl/index.tsx
index 52a1655e38..bd1873d301 100644
--- a/src/components/segmentedControl/index.tsx
+++ b/src/components/segmentedControl/index.tsx
@@ -204,8 +204,8 @@ const SegmentedControl = (props: SegmentedControlProps) => {
const isMiddleSelected = !isFirstElementSelected && !isLastElementSelected;
const insetFix = -CONTAINER_BORDER_WIDTH - (!isFirstElementSelected ? segmentDividerWidth : 1);
const widthFix = isMiddleSelected ? 2 * segmentDividerWidth : CONTAINER_BORDER_WIDTH + segmentDividerWidth;
- const inset = withTiming(value[animatedSelectedIndex.value].x + insetFix, TIMING_CONFIG);
- const width = withTiming(value[animatedSelectedIndex.value].width + widthFix, TIMING_CONFIG);
+ const inset = withTiming(value[animatedSelectedIndex.value]?.x + insetFix, TIMING_CONFIG);
+ const width = withTiming(value[animatedSelectedIndex.value]?.width + widthFix, TIMING_CONFIG);
return Constants.isRTL ? {width, height, right: inset} : {width, height, left: inset};
}
return {};
diff --git a/src/components/slider/index.tsx b/src/components/slider/index.tsx
index 1156d30ade..a90c26d73c 100644
--- a/src/components/slider/index.tsx
+++ b/src/components/slider/index.tsx
@@ -367,10 +367,10 @@ class Slider extends PureComponent {
const newX = Constants.isRTL && !this.disableRTL ? trackSize.width - nativeEvent.locationX : nativeEvent.locationX;
if (useRange) {
- if (this.isDefaultThumbActive() && this._minThumbStyles?.left && newX < this._minThumbStyles?.left) {
+ if (this.isDefaultThumbActive() && this._minThumbStyles?.left && newX < Number(this._minThumbStyles?.left)) {
// new x is smaller then min but the active thumb is the max
this.setActiveThumb(this.minThumb);
- } else if (!this.isDefaultThumbActive() && this._thumbStyles.left && newX > this._thumbStyles.left) {
+ } else if (!this.isDefaultThumbActive() && this._thumbStyles.left && newX > Number(this._thumbStyles.left)) {
// new x is bigger then max but the active thumb is the min
this.setActiveThumb(this.thumb);
}
diff --git a/src/incubator/Dialog/index.tsx b/src/incubator/Dialog/index.tsx
index f95137fe03..e718488944 100644
--- a/src/incubator/Dialog/index.tsx
+++ b/src/incubator/Dialog/index.tsx
@@ -214,7 +214,7 @@ const Dialog = (props: DialogProps, ref: ForwardedRef)
const renderDialog = () => (
{/* @ts-expect-error should be fixed in version 3.5 (https://github.com/software-mansion/react-native-reanimated/pull/4881) */}
-
+
{renderDialogContent()}
@@ -228,7 +228,7 @@ const Dialog = (props: DialogProps, ref: ForwardedRef)
}, [overlayBackgroundColor]);
const renderOverlayView = () => (
-
+
);
return (
diff --git a/src/incubator/TouchableOpacity.tsx b/src/incubator/TouchableOpacity.tsx
index 58d6cbd069..b53fe81737 100644
--- a/src/incubator/TouchableOpacity.tsx
+++ b/src/incubator/TouchableOpacity.tsx
@@ -1,5 +1,5 @@
-import React, {PropsWithChildren, useCallback, useMemo} from 'react';
-import {LayoutChangeEvent} from 'react-native';
+import React, { PropsWithChildren, useCallback, useMemo } from 'react';
+import { LayoutChangeEvent } from 'react-native';
import Reanimated, {
useAnimatedGestureHandler,
useAnimatedStyle,
@@ -9,10 +9,10 @@ import Reanimated, {
interpolateColor,
runOnJS
} from 'react-native-reanimated';
-import {TapGestureHandler, LongPressGestureHandler, State} from 'react-native-gesture-handler';
-import {asBaseComponent, forwardRef, BaseComponentInjectedProps, ForwardRefInjectedProps} from '../commons/new';
-import View, {ViewProps} from '../components/view';
-import {Colors} from '../../src/style';
+import { GestureHandlerRootView, TapGestureHandler, LongPressGestureHandler, State } from 'react-native-gesture-handler';
+import { asBaseComponent, forwardRef, BaseComponentInjectedProps, ForwardRefInjectedProps } from '../commons/new';
+import View, { ViewProps } from '../components/view';
+import { Colors } from '../../src/style';
export type TouchableOpacityProps = {
/**
@@ -80,7 +80,7 @@ function TouchableOpacity(props: Props) {
activeScale = 1,
...others
} = props;
- const {borderRadius, paddings, margins, alignments, flexStyle} = modifiers;
+ const { borderRadius, paddings, margins, alignments, flexStyle } = modifiers;
const isActive = useSharedValue(0);
/* This flag is for fixing an issue with long press triggering twice
@@ -101,7 +101,7 @@ function TouchableOpacity(props: Props) {
const toggleActive = (value: number) => {
'worklet';
- isActive.value = withTiming(value, {duration: 200});
+ isActive.value = withTiming(value, { duration: 200 });
};
const tapGestureHandler = useAnimatedGestureHandler({
@@ -143,39 +143,41 @@ function TouchableOpacity(props: Props) {
? backgroundColor
: interpolateColor(isActive.value, [0, 1], [backgroundColor, activeColor]),
opacity,
- transform: [{scale}]
+ transform: [{ scale }]
};
}, [backgroundColor, feedbackColor]);
const Container = props.onLongPress ? LongPressGestureHandler : View;
return (
-
-
-
-
- {children}
-
-
-
-
+
+
+
+
+
+ {children}
+
+
+
+
+
);
}
diff --git a/src/incubator/toast/index.tsx b/src/incubator/toast/index.tsx
index e157b0f71b..9431f1beb3 100644
--- a/src/incubator/toast/index.tsx
+++ b/src/incubator/toast/index.tsx
@@ -111,7 +111,7 @@ const Toast = (props: PropsWithChildren) => {
}, [position]);
const toastStyle = useMemo(() => {
- return [opacityStyle, containerStyle];
+ return [containerStyle];
}, [opacityStyle, containerStyle]);
const toastContainerStyle = useMemo(() => {
diff --git a/src/index.harmony.ts b/src/index.harmony.ts
new file mode 100644
index 0000000000..8fee83d04a
--- /dev/null
+++ b/src/index.harmony.ts
@@ -0,0 +1,205 @@
+/* ===== General Stuff ===== */
+export {default as Assets} from './assets';
+export type {emojis as EmojisAssetsType} from './assets/emojis';
+export * from './style';
+export * from './services';
+export * from '../lib/components';
+export {
+ asBaseComponent,
+ Config,
+ Constants,
+ forwardRef,
+ withScrollEnabler,
+ WithScrollEnablerProps,
+ withScrollReached,
+ WithScrollReachedProps,
+ UIComponent,
+ BaseComponentInjectedProps,
+ ForwardRefInjectedProps,
+ ContainerModifiers,
+ MarginModifiers,
+ PaddingModifiers,
+ TypographyModifiers,
+ ColorsModifiers,
+ BackgroundColorModifier
+} from './commons/new';
+// @ts-expect-error
+export {BaseComponent, PureBaseComponent} from './commons';
+
+import * as Incubator from './incubator';
+export {
+ ExpandableOverlayProps,
+ ExpandableOverlayMethods,
+ ToastProps,
+ ToastPresets,
+ PanViewProps,
+ PanViewDirections,
+ PanViewDismissThreshold
+} from './incubator';
+import * as Hooks from './hooks';
+import * as Modifiers from './commons/modifiers';
+export {default as LogService} from './services/LogService';
+export {Incubator, Hooks, Modifiers};
+
+/* ===== Components ===== */
+export {default as ActionBar, ActionBarProps} from './components/actionBar';
+export {default as ActionSheet} from './components/actionSheet';
+export {default as AnimatedImage} from './components/animatedImage';
+// @ts-expect-error
+export {default as AnimatedScanner} from './components/animatedScanner';
+export {default as Avatar, AvatarProps} from './components/avatar';
+export {AvatarHelper, Profiler} from './helpers';
+export {default as Badge, BadgeProps} from './components/badge';
+export {default as BaseInput} from './components/baseInput';
+export {default as Button, ButtonProps, ButtonSize, ButtonAnimationDirection} from './components/button';
+export {default as Card, CardProps, CardSectionProps, CardSelectionOptions} from './components/card';
+export {default as Carousel, CarouselProps, PageControlPosition} from './components/carousel';
+export {default as Checkbox, CheckboxProps, CheckboxRef} from './components/checkbox';
+export {default as ChipsInput, ChipsInputProps, ChipsInputChipProps} from './components/chipsInput';
+export {default as Chip, ChipProps} from './components/chip';
+export {default as ColorPicker, ColorPickerProps} from './components/colorPicker';
+export {default as ColorPalette, ColorPaletteProps} from './components/colorPalette';
+export {default as ColorPickerDialog, ColorPickerDialogProps} from './components/colorPicker/ColorPickerDialog';
+export {default as ColorSwatch, ColorSwatchProps, ColorInfo} from './components/colorSwatch';
+export {default as ConnectionStatusBar, ConnectionStatusBarProps} from './components/connectionStatusBar';
+export {default as Dash, DashProps} from './components/dash';
+export {default as DateTimePicker, DateTimePickerProps, DateTimePickerMode} from './components/dateTimePicker';
+export {default as Dialog, DialogProps, DialogDirections, DialogDirectionsEnum} from './components/dialog';
+export {default as Drawer, DrawerProps, DrawerItemProps} from './components/drawer';
+export {default as ExpandableSection, ExpandableSectionProps} from './components/expandableSection';
+export {default as Fader, FaderProps, FaderPosition} from './components/fader';
+export {default as FeatureHighlight, FeatureHighlightProps} from './components/featureHighlight';
+export {default as FloatingButton, FloatingButtonProps, FloatingButtonLayouts} from './components/floatingButton';
+export {default as Gradient, GradientProps, GradientTypes} from './components/gradient';
+export {default as Slider} from './components/slider';
+export {default as GradientSlider} from './components/slider/GradientSlider';
+export {default as ColorSliderGroup} from './components/slider/ColorSliderGroup';
+export type {SliderProps, GradientSliderProps, ColorSliderGroupProps} from './components/slider/types';
+export {default as GridListItem, GridListItemProps} from './components/gridListItem';
+export {default as GridList, GridListProps} from './components/gridList';
+export {default as GridView, GridViewProps} from './components/gridView';
+export {default as HapticService, HapticType} from './services/HapticService';
+export {default as Hint, HintProps} from './components/hint';
+export {default as Icon, IconProps} from './components/icon';
+export {default as Image, ImageProps} from './components/image';
+// @ts-expect-error
+export {default as KeyboardAwareScrollView} from './components/KeyboardAwareScrollView/KeyboardAwareScrollView';
+// @ts-expect-error
+export {default as KeyboardAwareFlatList} from './components/KeyboardAwareScrollView/KeyboardAwareFlatList';
+export {default as ListItem, ListItemProps} from './components/listItem';
+export {default as LoaderScreen, LoaderScreenProps} from './components/loaderScreen';
+export {default as MaskedInput, MaskedInputProps} from './components/maskedInput';
+export {default as Marquee, MarqueeDirections, MarqueeProps} from './components/marquee';
+export {default as Modal, ModalProps, ModalTopBarProps} from './components/modal';
+export {default as NumberInput, NumberInputProps, NumberInputData} from './components/numberInput';
+export {default as Overlay, OverlayTypes} from './components/overlay';
+export {default as PageControl, PageControlProps} from './components/pageControl';
+export {
+ default as PanDismissibleView,
+ PanDismissibleViewProps,
+ DismissibleAnimationProps
+} from './components/panningViews/panDismissibleView';
+export {default as PanGestureView, PanGestureViewProps} from './components/panningViews/panGestureView';
+export {default as PanListenerView, PanListenerViewProps} from './components/panningViews/panListenerView';
+export {default as PanningContext} from './components/panningViews/panningContext';
+export {
+ default as PanningProvider,
+ PanningDirections,
+ PanLocationProps,
+ PanAmountsProps,
+ PanDirectionsProps
+} from './components/panningViews/panningProvider';
+export {default as PanResponderView, PanResponderViewProps} from './components/panningViews/panResponderView';
+export {default as asPanViewConsumer} from './components/panningViews/asPanViewConsumer';
+export {
+ default as Picker,
+ PickerProps,
+ PickerItemProps,
+ PickerValue,
+ PickerModes,
+ PickerFieldTypes,
+ PickerSearchStyle,
+ RenderCustomModalProps,
+ PickerItemsListProps,
+ PickerMethods
+} from './components/picker';
+export {default as ProgressBar, ProgressBarProps} from './components/progressBar';
+export {default as ProgressiveImage, ProgressiveImageProps} from './components/progressiveImage';
+export {default as RadioButton, RadioButtonProps} from './components/radioButton';
+export {default as RadioGroup, RadioGroupProps} from './components/radioGroup';
+export type {RecorderProps} from './typings/recorderTypes';
+export type {ComponentStatics} from './typings/common';
+export {default as ScrollBar, ScrollBarProps} from './components/scrollBar';
+export {default as SectionsWheelPicker, SectionsWheelPickerProps} from './components/sectionsWheelPicker';
+export {
+ default as SegmentedControl,
+ SegmentedControlProps,
+ SegmentedControlItemProps
+} from './components/segmentedControl';
+// @ts-expect-error
+export {default as SharedTransition} from './components/sharedTransition';
+export {default as SkeletonView, SkeletonViewProps} from './components/skeletonView';
+export {default as SortableGridList, SortableGridListProps} from './components/sortableGridList';
+export {default as SortableList, SortableListProps, SortableListItemProps} from './components/sortableList';
+export {default as StackAggregator, StackAggregatorProps} from './components/stackAggregator';
+export {default as StateScreen, StateScreenProps} from './components/stateScreen';
+export {default as Stepper, StepperProps} from './components/stepper';
+export {default as Switch, SwitchProps} from './components/switch';
+export {
+ default as TabController,
+ TabControllerProps,
+ TabControllerBarProps,
+ TabControllerItemProps,
+ TabControllerImperativeMethods
+} from './components/tabController';
+export {
+ default as Timeline,
+ TimelineProps,
+ TimelinePointProps,
+ TimelineLineProps,
+ TimelineStateTypes,
+ TimelinePointTypes,
+ TimelineLineTypes
+} from './components/timeline';
+export {default as Text, TextProps} from './components/text';
+// @ts-expect-error
+export {default as TextArea} from './components/textArea';
+export {
+ default as TextField,
+ TextFieldProps,
+ TextFieldMethods,
+ TextFieldRef,
+ TextFieldValidationMessagePosition,
+ TextFieldValidationMessagePositionType,
+ TextFieldMandatoryIndication,
+ TextFieldValidator,
+ FieldContextType,
+ TextFieldValidators
+} from './components/textField';
+// @ts-expect-error
+export {default as Toast} from './components/toast';
+export {default as TouchableOpacity, TouchableOpacityProps} from './components/touchableOpacity';
+export {default as View, ViewProps} from './components/view';
+export {
+ default as Wizard,
+ WizardProps,
+ WizardStepProps,
+ WizardStepStates,
+ WizardStepConfig,
+ WizardStepsConfig
+} from './components/wizard';
+export {
+ default as WheelPicker,
+ WheelPickerProps,
+ WheelPickerItemProps,
+ WheelPickerAlign,
+ WheelPickerItemValue
+} from './components/WheelPicker';
+
+/* ===== TestKit ===== */
+// export {default as TextTestKit} from './components/text/Text.driver';
+// export {default as ImageTestKit} from './components/image/Image.driver';
+// export {default as ButtonTestKit} from './components/button/Button.driver';
+// export {default as TextFieldTestKit} from './incubator/TextField/TextField.driver';
+
+// export {default as ButtonDriverFactory} from './components/button/Button.driver';
diff --git a/src/index.ts b/src/index.ts
index 8fee83d04a..3a29ea1110 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,205 +1,203 @@
-/* ===== General Stuff ===== */
-export {default as Assets} from './assets';
-export type {emojis as EmojisAssetsType} from './assets/emojis';
-export * from './style';
-export * from './services';
-export * from '../lib/components';
-export {
- asBaseComponent,
- Config,
- Constants,
- forwardRef,
- withScrollEnabler,
- WithScrollEnablerProps,
- withScrollReached,
- WithScrollReachedProps,
- UIComponent,
- BaseComponentInjectedProps,
- ForwardRefInjectedProps,
- ContainerModifiers,
- MarginModifiers,
- PaddingModifiers,
- TypographyModifiers,
- ColorsModifiers,
- BackgroundColorModifier
-} from './commons/new';
-// @ts-expect-error
-export {BaseComponent, PureBaseComponent} from './commons';
+import * as AndroidIOSComponent from 'react-native-ui-lib';
+import * as HarmonyComponent from './index.harmony';
+import { Platform } from 'react-native';
-import * as Incubator from './incubator';
-export {
- ExpandableOverlayProps,
- ExpandableOverlayMethods,
- ToastProps,
- ToastPresets,
- PanViewProps,
- PanViewDirections,
- PanViewDismissThreshold
-} from './incubator';
-import * as Hooks from './hooks';
-import * as Modifiers from './commons/modifiers';
-export {default as LogService} from './services/LogService';
-export {Incubator, Hooks, Modifiers};
+const isIosAndroid = Platform.OS === 'ios' || Platform.OS === 'android';
-/* ===== Components ===== */
-export {default as ActionBar, ActionBarProps} from './components/actionBar';
-export {default as ActionSheet} from './components/actionSheet';
-export {default as AnimatedImage} from './components/animatedImage';
-// @ts-expect-error
-export {default as AnimatedScanner} from './components/animatedScanner';
-export {default as Avatar, AvatarProps} from './components/avatar';
-export {AvatarHelper, Profiler} from './helpers';
-export {default as Badge, BadgeProps} from './components/badge';
-export {default as BaseInput} from './components/baseInput';
-export {default as Button, ButtonProps, ButtonSize, ButtonAnimationDirection} from './components/button';
-export {default as Card, CardProps, CardSectionProps, CardSelectionOptions} from './components/card';
-export {default as Carousel, CarouselProps, PageControlPosition} from './components/carousel';
-export {default as Checkbox, CheckboxProps, CheckboxRef} from './components/checkbox';
-export {default as ChipsInput, ChipsInputProps, ChipsInputChipProps} from './components/chipsInput';
-export {default as Chip, ChipProps} from './components/chip';
-export {default as ColorPicker, ColorPickerProps} from './components/colorPicker';
-export {default as ColorPalette, ColorPaletteProps} from './components/colorPalette';
-export {default as ColorPickerDialog, ColorPickerDialogProps} from './components/colorPicker/ColorPickerDialog';
-export {default as ColorSwatch, ColorSwatchProps, ColorInfo} from './components/colorSwatch';
-export {default as ConnectionStatusBar, ConnectionStatusBarProps} from './components/connectionStatusBar';
-export {default as Dash, DashProps} from './components/dash';
-export {default as DateTimePicker, DateTimePickerProps, DateTimePickerMode} from './components/dateTimePicker';
-export {default as Dialog, DialogProps, DialogDirections, DialogDirectionsEnum} from './components/dialog';
-export {default as Drawer, DrawerProps, DrawerItemProps} from './components/drawer';
-export {default as ExpandableSection, ExpandableSectionProps} from './components/expandableSection';
-export {default as Fader, FaderProps, FaderPosition} from './components/fader';
-export {default as FeatureHighlight, FeatureHighlightProps} from './components/featureHighlight';
-export {default as FloatingButton, FloatingButtonProps, FloatingButtonLayouts} from './components/floatingButton';
-export {default as Gradient, GradientProps, GradientTypes} from './components/gradient';
-export {default as Slider} from './components/slider';
-export {default as GradientSlider} from './components/slider/GradientSlider';
-export {default as ColorSliderGroup} from './components/slider/ColorSliderGroup';
-export type {SliderProps, GradientSliderProps, ColorSliderGroupProps} from './components/slider/types';
-export {default as GridListItem, GridListItemProps} from './components/gridListItem';
-export {default as GridList, GridListProps} from './components/gridList';
-export {default as GridView, GridViewProps} from './components/gridView';
-export {default as HapticService, HapticType} from './services/HapticService';
-export {default as Hint, HintProps} from './components/hint';
-export {default as Icon, IconProps} from './components/icon';
-export {default as Image, ImageProps} from './components/image';
-// @ts-expect-error
-export {default as KeyboardAwareScrollView} from './components/KeyboardAwareScrollView/KeyboardAwareScrollView';
-// @ts-expect-error
-export {default as KeyboardAwareFlatList} from './components/KeyboardAwareScrollView/KeyboardAwareFlatList';
-export {default as ListItem, ListItemProps} from './components/listItem';
-export {default as LoaderScreen, LoaderScreenProps} from './components/loaderScreen';
-export {default as MaskedInput, MaskedInputProps} from './components/maskedInput';
-export {default as Marquee, MarqueeDirections, MarqueeProps} from './components/marquee';
-export {default as Modal, ModalProps, ModalTopBarProps} from './components/modal';
-export {default as NumberInput, NumberInputProps, NumberInputData} from './components/numberInput';
-export {default as Overlay, OverlayTypes} from './components/overlay';
-export {default as PageControl, PageControlProps} from './components/pageControl';
-export {
- default as PanDismissibleView,
- PanDismissibleViewProps,
- DismissibleAnimationProps
-} from './components/panningViews/panDismissibleView';
-export {default as PanGestureView, PanGestureViewProps} from './components/panningViews/panGestureView';
-export {default as PanListenerView, PanListenerViewProps} from './components/panningViews/panListenerView';
-export {default as PanningContext} from './components/panningViews/panningContext';
-export {
- default as PanningProvider,
- PanningDirections,
- PanLocationProps,
- PanAmountsProps,
- PanDirectionsProps
-} from './components/panningViews/panningProvider';
-export {default as PanResponderView, PanResponderViewProps} from './components/panningViews/panResponderView';
-export {default as asPanViewConsumer} from './components/panningViews/asPanViewConsumer';
-export {
- default as Picker,
- PickerProps,
- PickerItemProps,
- PickerValue,
- PickerModes,
- PickerFieldTypes,
- PickerSearchStyle,
- RenderCustomModalProps,
- PickerItemsListProps,
- PickerMethods
-} from './components/picker';
-export {default as ProgressBar, ProgressBarProps} from './components/progressBar';
-export {default as ProgressiveImage, ProgressiveImageProps} from './components/progressiveImage';
-export {default as RadioButton, RadioButtonProps} from './components/radioButton';
-export {default as RadioGroup, RadioGroupProps} from './components/radioGroup';
-export type {RecorderProps} from './typings/recorderTypes';
-export type {ComponentStatics} from './typings/common';
-export {default as ScrollBar, ScrollBarProps} from './components/scrollBar';
-export {default as SectionsWheelPicker, SectionsWheelPickerProps} from './components/sectionsWheelPicker';
-export {
- default as SegmentedControl,
- SegmentedControlProps,
- SegmentedControlItemProps
-} from './components/segmentedControl';
-// @ts-expect-error
-export {default as SharedTransition} from './components/sharedTransition';
-export {default as SkeletonView, SkeletonViewProps} from './components/skeletonView';
-export {default as SortableGridList, SortableGridListProps} from './components/sortableGridList';
-export {default as SortableList, SortableListProps, SortableListItemProps} from './components/sortableList';
-export {default as StackAggregator, StackAggregatorProps} from './components/stackAggregator';
-export {default as StateScreen, StateScreenProps} from './components/stateScreen';
-export {default as Stepper, StepperProps} from './components/stepper';
-export {default as Switch, SwitchProps} from './components/switch';
-export {
- default as TabController,
- TabControllerProps,
- TabControllerBarProps,
- TabControllerItemProps,
- TabControllerImperativeMethods
-} from './components/tabController';
-export {
- default as Timeline,
- TimelineProps,
- TimelinePointProps,
- TimelineLineProps,
- TimelineStateTypes,
- TimelinePointTypes,
- TimelineLineTypes
-} from './components/timeline';
-export {default as Text, TextProps} from './components/text';
-// @ts-expect-error
-export {default as TextArea} from './components/textArea';
-export {
- default as TextField,
- TextFieldProps,
- TextFieldMethods,
- TextFieldRef,
- TextFieldValidationMessagePosition,
- TextFieldValidationMessagePositionType,
- TextFieldMandatoryIndication,
- TextFieldValidator,
- FieldContextType,
- TextFieldValidators
-} from './components/textField';
-// @ts-expect-error
-export {default as Toast} from './components/toast';
-export {default as TouchableOpacity, TouchableOpacityProps} from './components/touchableOpacity';
-export {default as View, ViewProps} from './components/view';
-export {
- default as Wizard,
- WizardProps,
- WizardStepProps,
- WizardStepStates,
- WizardStepConfig,
- WizardStepsConfig
-} from './components/wizard';
-export {
- default as WheelPicker,
- WheelPickerProps,
- WheelPickerItemProps,
- WheelPickerAlign,
- WheelPickerItemValue
-} from './components/WheelPicker';
+const exportComp: any = isIosAndroid ? AndroidIOSComponent : HarmonyComponent;
-/* ===== TestKit ===== */
-// export {default as TextTestKit} from './components/text/Text.driver';
-// export {default as ImageTestKit} from './components/image/Image.driver';
-// export {default as ButtonTestKit} from './components/button/Button.driver';
-// export {default as TextFieldTestKit} from './incubator/TextField/TextField.driver';
-
-// export {default as ButtonDriverFactory} from './components/button/Button.driver';
+export const {
+ Assets,
+ EmojisAssetsType,
+ Colors,
+ DesignTokens,
+ DesignTokensDM,
+ Scheme,
+ SchemeType,
+ Schemes,
+ SchemeChangeListener,
+ Typography,
+ TypographyKeys,
+ BorderRadiuses,
+ Shadows,
+ Spacings,
+ ComponentsColors,
+ Components,
+ ThemeManager,
+ ColorName,
+ Dividers,
+ DynamicFonts,
+ FontExtension,
+ HighlighterOverlayView,
+ SafeAreaSpacerView,
+ SafeAreaInsetsManager,
+ Keyboard,
+ KeyboardTrackingViewProps,
+ KeyboardAccessoryViewProps,
+ asBaseComponent,
+ Config,
+ Constants,
+ forwardRef,
+ withScrollEnabler,
+ WithScrollEnablerProps,
+ withScrollReached,
+ WithScrollReachedProps,
+ UIComponent,
+ BaseComponentInjectedProps,
+ ForwardRefInjectedProps,
+ ContainerModifiers,
+ MarginModifiers,
+ PaddingModifiers,
+ TypographyModifiers,
+ ColorsModifiers,
+ BackgroundColorModifier,
+ BaseComponent,
+ PureBaseComponent,
+ ExpandableOverlayProps,
+ ExpandableOverlayMethods,
+ ToastProps,
+ ToastPresets,
+ PanViewProps,
+ PanViewDirections,
+ PanViewDismissThreshold,
+ LogService,
+ Incubator,
+ Hooks,
+ Modifiers,
+ /* ===== Components ===== */
+ ActionBar,
+ ActionBarProps,
+ ActionSheet,
+ AnimatedImage,
+ AnimatedScanner,
+ Avatar,
+ AvatarProps,
+ AvatarHelper,
+ Profiler,
+ Badge,
+ BadgeProps,
+ BaseInput,
+ Button,
+ ButtonProps,
+ ButtonSize, ButtonAnimationDirection,
+ Card, CardProps, CardSectionProps, CardSelectionOptions,
+ Carousel, CarouselProps, PageControlPosition,
+ Checkbox, CheckboxProps, CheckboxRef,
+ ChipsInput, ChipsInputProps, ChipsInputChipProps,
+ Chip, ChipProps,
+ ColorPicker, ColorPickerProps,
+ ColorPalette, ColorPaletteProps,
+ ColorPickerDialog, ColorPickerDialogProps,
+ ColorSwatch, ColorSwatchProps, ColorInfo,
+ ConnectionStatusBar, ConnectionStatusBarProps,
+ Dash, DashProps,
+ DateTimePicker, DateTimePickerProps, DateTimePickerMode,
+ Dialog, DialogProps, DialogDirections, DialogDirectionsEnum,
+ Drawer, DrawerProps, DrawerItemProps,
+ ExpandableSection, ExpandableSectionProps,
+ Fader, FaderProps, FaderPosition,
+ FeatureHighlight, FeatureHighlightProps,
+ FloatingButton, FloatingButtonProps, FloatingButtonLayouts,
+ Gradient, GradientProps, GradientTypes,
+ Slider,
+ GradientSlider,
+ ColorSliderGroup,
+ SliderProps, GradientSliderProps, ColorSliderGroupProps,
+ GridListItem, GridListItemProps,
+ GridList, GridListProps,
+ GridView, GridViewProps,
+ HapticService, HapticType,
+ Hint, HintProps,
+ Icon, IconProps,
+ Image, ImageProps,
+ KeyboardAwareScrollView,
+ KeyboardAwareFlatList,
+ ListItem, ListItemProps,
+ LoaderScreen, LoaderScreenProps,
+ MaskedInput, MaskedInputProps,
+ Marquee, MarqueeDirections, MarqueeProps,
+ Modal, ModalProps, ModalTopBarProps,
+ NumberInput, NumberInputProps, NumberInputData,
+ Overlay, OverlayTypes,
+ PageControl, PageControlProps,
+ PanDismissibleView,
+ PanDismissibleViewProps,
+ DismissibleAnimationProps,
+ PanGestureView, PanGestureViewProps,
+ PanListenerView, PanListenerViewProps,
+ PanningContext,
+ PanningProvider,
+ PanningDirections,
+ PanLocationProps,
+ PanAmountsProps,
+ PanDirectionsProps,
+ PanResponderView, PanResponderViewProps,
+ asPanViewConsumer,
+ Picker,
+ PickerProps,
+ PickerItemProps,
+ PickerValue,
+ PickerModes,
+ PickerFieldTypes,
+ PickerSearchStyle,
+ RenderCustomModalProps,
+ PickerItemsListProps,
+ PickerMethods,
+ ProgressBar, ProgressBarProps,
+ ProgressiveImage, ProgressiveImageProps,
+ RadioButton, RadioButtonProps,
+ RadioGroup, RadioGroupProps,
+ RecorderProps,
+ ComponentStatics,
+ ScrollBar, ScrollBarProps,
+ SectionsWheelPicker, SectionsWheelPickerProps,
+ SegmentedControl,
+ SegmentedControlProps,
+ SegmentedControlItemProps,
+ SharedTransition,
+ SkeletonView, SkeletonViewProps,
+ SortableGridList, SortableGridListProps,
+ SortableList, SortableListProps, SortableListItemProps,
+ StackAggregator, StackAggregatorProps,
+ StateScreen, StateScreenProps,
+ Stepper, StepperProps,
+ Switch, SwitchProps,
+ TabController,
+ TabControllerProps,
+ TabControllerBarProps,
+ TabControllerItemProps,
+ TabControllerImperativeMethods,
+ Timeline,
+ TimelineProps,
+ TimelinePointProps,
+ TimelineLineProps,
+ TimelineStateTypes,
+ TimelinePointTypes,
+ TimelineLineTypes,
+ Text, TextProps,
+ TextArea,
+ TextField,
+ TextFieldProps,
+ TextFieldMethods,
+ TextFieldRef,
+ TextFieldValidationMessagePosition,
+ TextFieldValidationMessagePositionType,
+ TextFieldMandatoryIndication,
+ TextFieldValidator,
+ FieldContextType,
+ TextFieldValidators,
+ Toast,
+ TouchableOpacity, TouchableOpacityProps,
+ View, ViewProps,
+ Wizard,
+ WizardProps,
+ WizardStepProps,
+ WizardStepStates,
+ WizardStepConfig,
+ WizardStepsConfig,
+ WheelPicker,
+ WheelPickerProps,
+ WheelPickerItemProps,
+ WheelPickerAlign,
+ WheelPickerItemValue
+} = exportComp;
diff --git a/src/native/v1/CustomInputControllerTempNativeModule.ts b/src/native/v1/CustomInputControllerTempNativeModule.ts
new file mode 100644
index 0000000000..0d7dc154e6
--- /dev/null
+++ b/src/native/v1/CustomInputControllerTempNativeModule.ts
@@ -0,0 +1,22 @@
+import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
+import { TurboModuleRegistry} from 'react-native';
+
+interface initialPropsInterface {
+ title: string
+}
+
+interface InputInterface {
+ component: string
+ initialProps: initialPropsInterface
+ useSafeArea: boolean
+}
+
+export interface Spec extends TurboModule {
+ presentCustomInputComponent: (reactTag: number | null, inputObj: InputInterface) => {};
+ resetInput: (reactTag: number | null) => void;
+ dismissKeyboard: () => void;
+ expandFullScreenForInput: (reactTag: number | null) => void;
+ resetSizeForInput: (reactTag: number | null) => void;
+}
+
+export default TurboModuleRegistry.get('CustomInputControllerTemp') as Spec | null;
\ No newline at end of file
diff --git a/src/native/v1/KeyboardTrackingViewTempManagerNativeModule.ts b/src/native/v1/KeyboardTrackingViewTempManagerNativeModule.ts
new file mode 100644
index 0000000000..975b1403b2
--- /dev/null
+++ b/src/native/v1/KeyboardTrackingViewTempManagerNativeModule.ts
@@ -0,0 +1,12 @@
+import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
+import { TurboModuleRegistry} from 'react-native';
+
+export interface Spec extends TurboModule {
+ getNativeProps: (target: number | null) => {};
+ scrollToStart: (target: number | null) => void;
+ // KeyboardTrackingScrollBehaviorNone: () => {};
+ // KeyboardTrackingScrollBehaviorScrollToBottomInvertedOnly: () => {};
+ // KeyboardTrackingScrollBehaviorFixedOffset: () => number;
+}
+
+export default TurboModuleRegistry.get('KeyboardTrackingViewTempManager') as Spec | null;
\ No newline at end of file
diff --git a/src/native/v1/NativeHighlighterView.ts b/src/native/v1/NativeHighlighterView.ts
new file mode 100644
index 0000000000..117f644799
--- /dev/null
+++ b/src/native/v1/NativeHighlighterView.ts
@@ -0,0 +1,31 @@
+import type { ViewProps } from "reactnative/Libraries/Components/View/ViewPropTypes";
+import type { HostComponent } from "react-native";
+import codegenNativeComponent from "reactnative/Libraries/Utilities/codegenNativeComponent";
+import { Int32 } from "react-native/Libraries/Types/CodegenTypes";
+
+export type HighlightFrame = {
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+};
+
+// type HighlightViewTagParams = {
+// padding: number | ViewStyle['padding'];
+// offset: Pick;
+// };
+
+export interface NativeProps extends ViewProps {
+ highlightFrame?: { x: Int32; y: Int32; width: Int32; height: Int32 };
+ overlayColor?: string;
+ borderRadius?: Int32;
+ strokeColor?: string;
+ strokeWidth?: Int32;
+ highlightViewTag?: Int32 | null;
+ // highlightViewTagParams?: { padding: Int32 | { top: Int32, bottom: Int32, left: Int32, right: Int32 }, offset: { x: Int32, y: Int32 } };
+ minimumRectSize?: { width: Int32; height: Int32 };
+ innerPadding?: Int32;
+ // 添加其它 props
+}
+
+export default codegenNativeComponent("HighlighterView") as HostComponent;
\ No newline at end of file
diff --git a/src/native/v1/NativeKeyboardTrackingViewTemp.ts b/src/native/v1/NativeKeyboardTrackingViewTemp.ts
new file mode 100644
index 0000000000..7f76610695
--- /dev/null
+++ b/src/native/v1/NativeKeyboardTrackingViewTemp.ts
@@ -0,0 +1,11 @@
+import type { ViewProps } from "reactnative/Libraries/Components/View/ViewPropTypes";
+import type { HostComponent } from "react-native";
+import codegenNativeComponent from "reactnative/Libraries/Utilities/codegenNativeComponent";
+// import { Int32 } from "react-native/Libraries/Types/CodegenTypes";
+
+export interface NativeProps extends ViewProps {
+ text?: string
+ // 添加其它 props
+}
+
+export default codegenNativeComponent("KeyboardTrackingViewTempArkTS") as HostComponent;
\ No newline at end of file
diff --git a/src/native/v2/NativeKeyboardTrackingViewTemp.ts b/src/native/v2/NativeKeyboardTrackingViewTemp.ts
new file mode 100644
index 0000000000..fd5a73e5a5
--- /dev/null
+++ b/src/native/v2/NativeKeyboardTrackingViewTemp.ts
@@ -0,0 +1,13 @@
+import type { ViewProps } from "reactnative/Libraries/Components/View/ViewPropTypes";
+import type { HostComponent } from "react-native";
+import codegenNativeComponent from "reactnative/Libraries/Utilities/codegenNativeComponent";
+import { Int32 } from "react-native/Libraries/Types/CodegenTypes";
+// import { Int32 } from "react-native/Libraries/Types/CodegenTypes";
+
+export interface NativeProps extends ViewProps {
+ text?: string
+ // 添加其它 props
+ scrollBehavior?: Int32
+}
+
+export default codegenNativeComponent("KeyboardTrackingViewTemp") as HostComponent;
\ No newline at end of file
diff --git a/tsconfig.build.json b/tsconfig.build.json
index e9bc8e1ac4..2e03751ce1 100644
--- a/tsconfig.build.json
+++ b/tsconfig.build.json
@@ -4,5 +4,5 @@
"emitDeclarationOnly": true
},
"include": ["src/**/*", "typings/**/*", "lib/components/*/*", "testkit/**/*"],
- "exclude": [ "node_modules", "src/**/__tests__/*.*"]
+ "exclude": [ "node_modules", "src/**/__tests__/*.*", "src/native"]
}
diff --git a/webDemo/.babelrc b/webDemo/.babelrc
deleted file mode 100644
index 5385af6ca7..0000000000
--- a/webDemo/.babelrc
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "presets": [
- "@babel/preset-react",
- [
- "@babel/preset-env",
- {
- "targets": "last 2 chrome versions, last 2 firefox versions"
- }
- ]
- ],
- "plugins": [
- "@babel/plugin-proposal-export-namespace-from",
- [
- "@babel/plugin-proposal-class-properties",
- {
- "loose": true
- }
- ],
- [
- "react-native-web",
- {
- "commonjs": true
- }
- ],
- [
- "module-resolver",
- {
- "alias": {
- "^react-native$": "react-native-web"
- }
- }
- ],
- "react-native-reanimated/plugin"
- ]
-}
\ No newline at end of file
diff --git a/webDemo/index.html b/webDemo/index.html
deleted file mode 100644
index 3455be48e2..0000000000
--- a/webDemo/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
- react-native-ui-lib-web demo app
-
-
-
- You need to enable JavaScript to run this app.
-
-
-
-
-
\ No newline at end of file
diff --git a/webDemo/package.json b/webDemo/package.json
deleted file mode 100644
index e76f60c945..0000000000
--- a/webDemo/package.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "name": "web-demo-app",
- "version": "0.1.0",
- "author": "Ethan Sharabi ",
- "license": "MIT",
- "publishConfig": {
- "registry": "https://registry.npmjs.org/"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wix/react-native-ui-lib.git"
- },
- "scripts": {
- "build": "webpack --config ./webpack.config.js",
- "start": "webpack-dev-server --config ./webpack.config.js"
- },
- "dependencies": {
- "@react-native-community/datetimepicker": "^3.4.6",
- "@react-native-community/netinfo": "^9.3.0",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
- "react-native-gesture-handler": "2.9.0",
- "react-native-haptic-feedback": "^1.14.0",
- "react-native-linear-gradient": "^2.6.2",
- "react-native-reanimated": "3.1.0",
- "react-native-shimmer-placeholder": "^2.0.8",
- "react-native-svg": "^12.1.0",
- "react-native-svg-transformer": "^0.14.3",
- "react-native-ui-lib": "snapshot",
- "react-native-web": "^0.18.6",
- "typescript": "^4.4.2",
- "postcss": "^8.4.21",
- "postcss-js": "^4.0.0"
- },
- "devDependencies": {
- "@babel/core": "^7.14.8",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/preset-react": "^7.16.7",
- "@babel/preset-typescript": "^7.14.5",
- "@types/node": "^16.7.13",
- "@types/react": "^17.0.2",
- "@types/react-dom": "^17.0.2",
- "@types/react-native": "^0.66.4",
- "@typescript-eslint/eslint-plugin": "4.25.0",
- "@typescript-eslint/parser": "4.25.0",
- "babel-loader": "^8.2.3",
- "babel-plugin-module-resolver": "^4.1.0",
- "babel-plugin-react-native-web": "^0.18.7",
- "babel-preset-react": "^6.24.1",
- "clean-webpack-plugin": "^4.0.0",
- "concat-with-sourcemaps": "^1.1.0",
- "eslint": "^6.8.0",
- "eslint-plugin-react": "7.24.0",
- "eslint-plugin-react-hooks": "^4.0.4",
- "html-webpack-plugin": "^4.0.0",
- "metro-react-native-babel-preset": "^0.71.3",
- "process": "^0.11.10",
- "ts-loader": "^9.3.1",
- "url-loader": "^4.1.1",
- "webpack": "^4.35.2",
- "webpack-cli": "^3.3.5",
- "webpack-dev-server": "^3.7.2"
- }
-}
diff --git a/webDemo/src/App.tsx b/webDemo/src/App.tsx
deleted file mode 100644
index 0cb372e367..0000000000
--- a/webDemo/src/App.tsx
+++ /dev/null
@@ -1,445 +0,0 @@
-import React, {useState, useRef} from 'react';
-import {StyleSheet, ScrollView, ActivityIndicator, Animated} from 'react-native';
-
-// import TextField from 'react-native-ui-lib/TextField';
-import View from 'react-native-ui-lib/View';
-import Button from 'react-native-ui-lib/Button';
-import Switch from 'react-native-ui-lib/Switch';
-import Checkbox from 'react-native-ui-lib/Checkbox';
-import Slider from 'react-native-ui-lib/Slider';
-import Stepper from 'react-native-ui-lib/Stepper';
-import Icon from 'react-native-ui-lib/Icon';
-import DateTimePicker from 'react-native-ui-lib/DateTimePicker';
-// import FloatingButton from 'react-native-ui-lib/FloatingButton'
-import Chip from 'react-native-ui-lib/Chip';
-import Badge from 'react-native-ui-lib/Badge';
-import ProgressBar from 'react-native-ui-lib/ProgressBar';
-import AnimatedImage from 'react-native-ui-lib/AnimatedImage';
-import Avatar from 'react-native-ui-lib/Avatar';
-import Drawer from 'react-native-ui-lib/Drawer';
-
-import {Colors, Spacings, Typography, Assets, Text, Incubator, SegmentedControl} from 'react-native-ui-lib';
-
-import Picker from './examples/Picker';
-import RadioGroup from './examples/RadioButtonGroup';
-import Timeline from './examples/Timeline';
-import StackAggregator from './examples/StackAggregator';
-import {Image, ProgressiveImage} from './examples/Image';
-import List from './examples/List';
-import CarouselWrapper from './examples/Carousel';
-interface ItemToRender {
- title: string,
- FC: React.FC
-}
-const svgData = '\n \n \n \n \n';
-
-const itemsToRender: ItemToRender[] = [
- {
- title: 'IconButton SVG Resize',
- FC: () => {
- const [size, setSize] = useState(Spacings.s4);
-
- console.log('$$ IconButton SVG Resize', {size});
-
- return (
- {
- const newSize = size === Spacings.s4 ? Spacings.s6 : Spacings.s4;
- setSize(newSize);
- }}
- />
- );
- }
- },
- {
- title: 'Carousel',
- FC: CarouselWrapper
-
- },
- {
- title: 'Text',
- FC: () => {
- const [toggle, setToggle] = useState(false);
- const animatedValue = useRef(new Animated.Value(0)).current;
-
- const animate = () => {
- setToggle(!toggle);
- Animated.timing(animatedValue, {
- toValue: Number(toggle),
- duration: 300,
- useNativeDriver: true
- }).start();
- };
-
- return (
-
- This is mobile UI-lib text
-
- );
- }
- },
- {
- title: 'Button',
- FC: () => (
- {
- console.log('button pressed');
- }}
- />
- )
- },
- {
- title: 'Button with Svg as data tag',
- FC: () => (
-
- )
- },
- {
- title: 'Link Button',
- FC: () => (
- {
- console.log('link button pressed');
- }}
- />
- )
- },
- {
- title: 'Chip',
- FC: () => (
-
- alert('onDismiss')}
- dismissIconStyle={{width: 10, height: 10, marginRight: Spacings.s3}}
- dismissColor={Colors.red20}
- containerStyle={{
- borderColor: Colors.red20,
- borderBottomRightRadius: 0,
- marginLeft: Spacings.s3
- }}
- />
- )
- },
- {
- title: 'Badge',
- FC: () => (
-
- )
- },
- {
- title: 'ProgressBar',
- FC: () => {
- const [value, setProgressValue] = useState(0);
-
- const startProgress = () => {
- const newValue = Math.min(value + 5, 100);
- setProgressValue(newValue);
- };
-
- return (
-
-
-
-
- );
- }
- },
- {
- title: 'TextField',
- FC: () => {
- const [defaultValue, setDefaultValue] = useState('I am Default value');
- const updateDefaultValue = () => {
- setDefaultValue(`${defaultValue}1`);
- };
-
- return (
- <>
-
- {
- console.log(text);
- }}
- />
- >
- );
- }
- },
- {
- title: 'SegmentedControl',
- FC: () => {
- const segments = [
- {label: '1'},
- {label: '2'},
- {label: '3'},
- {label: '4', iconSource: Assets.icons.search, iconOnRight: true},
- {label: '5'}
- ];
-
- return ;
- }
- },
- {
- title: 'Switch',
- FC: () => {
- const [switchValue, setSwitchValue] = useState(true);
- return (
-
- );
- }
- },
- {
- title: 'RadioGroup',
- FC: RadioGroup
- },
- {
- title: 'Checkbox',
- FC: () => {
- const [isChecked, setIsChecked] = useState(true);
- return (
-
- );
- }
- },
- {
- title: 'Slider',
- FC: () => {
- const [sliderValue, setSliderValue] = useState(0);
- return (
-
- {
- console.log('setSliderValue: ', value);
- setSliderValue(value);
- }}
- migrate
- value={sliderValue}
- minimumValue={0}
- maximumValue={10}
- step={1}
- />
-
- );
- }
- },
- {
- title: 'Activity Indicator',
- FC: ActivityIndicator
- },
- {
- title: 'Image',
- FC: Image
- },
- {
- title: 'Progressive Image',
- FC: ProgressiveImage
- },
- {
- title: 'Animated Image',
- FC: () => (
- }
- key={'AnimatedImage'}
- animationDuration={800}
- />
- )
- },
- {
- title: 'Avatar',
- FC: () => (
-
- )
- },
- {
- title: 'Drawer',
- FC: () => (
- console.log('read pressed')}]}
- leftItem={{text: 'Delete', background: Colors.red30, onPress: () => console.log('delete pressed')}}
- >
-
- Slide left / right
-
-
- )
- },
- {
- title: 'Stepper',
- FC: Stepper
- },
- {
- title: 'Icon',
- FC: () => ()
- },
- {
- title: 'Picker',
- FC: Picker
- },
- {
- title: 'Date',
- FC: () => (
- )
- },
- {
- title: 'StackAggregator',
- FC: StackAggregator
- },
- {
- title: 'List',
- FC: List
- },
- {
- title: 'Timeline',
- FC: Timeline
- }
-];
-
-function App() {
- return (
-
-
-
- Welcome to react-native-ui-lib for Web
-
-
- {
- itemsToRender.map(({title, FC}: ItemToRender) =>
- (
-
- {title}
-
-
- ))
- }
-
-
- {/* console.log('approved') }}
- secondaryButton={{ label: 'Not now', color: Colors.$textDangerLight }}
- /> */}
-
- );
-}
-
-const styles = StyleSheet.create({
- header: {
- padding: 20
- },
- componentContainer: {
- width: '100%',
- borderColor: 'white',
- borderBottomWidth: 5
- },
- compTitle: {
- fontWeight: 'bold',
- fontSize: '1rem',
- marginVertical: 4,
- textAlign: 'center'
- },
- title: {
- fontWeight: 'bold',
- fontSize: '1.5rem',
- marginVertical: '1em',
- textAlign: 'center'
- }
-});
-
-export default App;
diff --git a/webDemo/src/examples/Carousel.tsx b/webDemo/src/examples/Carousel.tsx
deleted file mode 100644
index 445947922b..0000000000
--- a/webDemo/src/examples/Carousel.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import React, {useState} from 'react';
-import Carousel from 'react-native-ui-lib/Carousel';
-import Text from 'react-native-ui-lib/Text';
-import View from 'react-native-ui-lib/View';
-import {Spacings} from 'react-native-ui-lib/style';
-
-
-const INITIAL_PAGE = 2;
-const IMAGES = [
- 'https://images.pexels.com/photos/2529159/pexels-photo-2529159.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/2529146/pexels-photo-2529146.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500',
- 'https://images.pexels.com/photos/2529158/pexels-photo-2529158.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'
-];
-
-
-const CarouselWrapper = () => {
- const carousel = React.useRef();
-
- const [currentPage, setCurrentPage] = useState(INITIAL_PAGE);
-
- const onPagePress = (index: number) => {
- if (carousel && carousel.current) {
- carousel.current.goToPage(index, true);
- }
- };
-
- const onChangePage = (currentPage: number) => {
- setCurrentPage(currentPage);
- };
-
- // @ts-ignore
- const Page = ({children, style, ...others}) => {
- return (
-
- {children}
-
- );
- };
-
- return (
-
-
- {IMAGES.map((item, index) => (
-
- CARD {index}
-
- ))}
-
-
- );
-};
-
-export default CarouselWrapper;
diff --git a/webDemo/src/examples/Image.tsx b/webDemo/src/examples/Image.tsx
deleted file mode 100644
index 571ea9bb14..0000000000
--- a/webDemo/src/examples/Image.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import React from 'react';
-import {StyleSheet} from 'react-native-web';
-import MobileImage from 'react-native-ui-lib/Image';
-import MobileProgressiveImage from 'react-native-ui-lib/ProgressiveImage';
-
-const source = 'https://picsum.photos/200';
-const source2 = 'https://picsum.photos/300';
-
-export const Image = () => (
-
-);
-
-export const ProgressiveImage = () => (
-
-);
-
-const styles = StyleSheet.create({
- logo: {
- height: 100,
- width: 100
- }
-});
diff --git a/webDemo/src/examples/List.tsx b/webDemo/src/examples/List.tsx
deleted file mode 100644
index c4e076d167..0000000000
--- a/webDemo/src/examples/List.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-import React from 'react';
-import {FlatList, StyleSheet} from 'react-native-web';
-import Text from 'react-native-ui-lib/Text';
-import Card from 'react-native-ui-lib/Card';
-
-const DATA = [
- {
- id: 'bd7acbea-c1b1-46c2-aed5-3ad53abb28ba',
- title: 'JavaScript'
- },
- {
- id: '3ac68afc-c605-48d3-a4f8-fbd91aa97f63',
- title: 'Java'
- },
- {
- id: '58694a0f-3da1-471f-bd96-145571e29d72',
- title: 'Kotlin'
- }
-];
-
-const Item = ({title}: { title: string }) => (
-
- {title}
-
-);
-
-
-const renderItem = ({item}: { item: { title: string } }) => (
- -
-);
-
-const ListWrapper = () => {
- return (
-
item.id}
- />
- );
-};
-const styles = StyleSheet.create({
-
- title: {
- fontWeight: 'bold',
- fontSize: '1.5rem',
- marginVertical: '1em',
- textAlign: 'center'
- },
- text: {
- lineHeight: '1.5em',
- fontSize: '1.125rem',
- marginVertical: '1em',
- textAlign: 'center'
- },
-
- item: {
- backgroundColor: '#ffff2f',
- padding: 10,
- marginBottom: 8,
- marginHorizontal: 16
- }
-
-});
-
-export default ListWrapper;
diff --git a/webDemo/src/examples/Picker.tsx b/webDemo/src/examples/Picker.tsx
deleted file mode 100644
index ac3fba3838..0000000000
--- a/webDemo/src/examples/Picker.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import React, {useState} from 'react';
-import {ScrollView} from 'react-native-gesture-handler';
-import {
- Picker,
- Colors,
- View,
- Text,
- Incubator,
- PickerProps,
- RenderCustomModalProps,
- PanningProvider
-} from 'react-native-ui-lib';
-
-const options = [
- {label: 'JavaScript', value: 'js'},
- {label: 'Java', value: 'java'},
- {label: 'Python', value: 'python'},
- {label: 'C++', value: 'c++', disabled: true},
- {label: 'Perl', value: 'perl'}
-];
-
-const filters = [
- {value: 1, label: 'All'},
- {value: 2, label: 'Accessories'},
- {value: 3, label: 'Outwear'},
- {value: 4, label: 'Footwear'},
- {value: 5, label: 'Swimwear'},
- {value: 6, label: 'Tops'}
-];
-
-const schemes = [
- {label: 'Default', value: 1},
- {label: 'Light', value: 2},
- {label: 'Dark', value: 3}
-];
-
-const PickerWrapper = () => {
- const [language, setLanguage] = useState(undefined);
- const [filter, setFilter] = useState(undefined);
- const [customModalValues, setCustomModalValues] = useState(undefined);
- const renderDialog: PickerProps['renderCustomModal'] = (modalProps: RenderCustomModalProps) => {
- const {visible, children, toggleModal, onDone} = modalProps;
-
- return (
- {
- onDone();
- toggleModal();
- }}
- width="40%"
- height="45%"
- bottom
- useSafeArea
- containerStyle={{backgroundColor: Colors.$backgroundDefault}}
- direction={PanningProvider.Directions.DOWN}
- headerProps={{title: 'Custom modal'}}
- >
- {children}
-
- );
- };
-
- return (
-
-
- Single Value Picker
-
-
-
-
-
- Multi Value Picker
-
-
-
-
-
- Dialog Picker
-
-
- setCustomModalValues(items)}
- mode={Picker.modes.MULTI}
- renderCustomModal={renderDialog}
- items={schemes}
- />
-
-
- );
-};
-
-export default PickerWrapper;
diff --git a/webDemo/src/examples/RadioButtonGroup.tsx b/webDemo/src/examples/RadioButtonGroup.tsx
deleted file mode 100644
index dbc72675da..0000000000
--- a/webDemo/src/examples/RadioButtonGroup.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import React, {useState} from 'react';
-import RadioButton from 'react-native-ui-lib/RadioButton';
-import RadioGroup from 'react-native-ui-lib/RadioGroup';
-import View from 'react-native-ui-lib/View';
-import Text from 'react-native-ui-lib/Text';
-import {Colors} from 'react-native-ui-lib/style';
-
-
-const renderRadioButton = (value: any, text: any, props?: any) => {
- return (
-
-
-
- );
-};
-
-const renderRadioButtonForColorEnum = (color: any) => {
- return (
-
-
-
- );
-};
-
-const COLORS = {
- ORANGE: {name: 'Orange', color: Colors.orange20},
- PURPLE: {name: 'Purple', color: Colors.purple20},
- GREEN: {name: 'Green', color: Colors.green20}
-};
-
-
-const RadioButtonGroupWrapper = () => {
- const [color, setColor] = useState();
-
- return (
-
- {renderRadioButton(null, 'Default')}
- {renderRadioButtonForColorEnum(COLORS.ORANGE)}
- {renderRadioButtonForColorEnum(COLORS.PURPLE)}
- {renderRadioButtonForColorEnum(COLORS.GREEN)}
- You chose: {color ? color : 'Default'}
-
- );
-};
-
-export default RadioButtonGroupWrapper;
diff --git a/webDemo/src/examples/StackAggregator.tsx b/webDemo/src/examples/StackAggregator.tsx
deleted file mode 100644
index 58c9713ad2..0000000000
--- a/webDemo/src/examples/StackAggregator.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-
-import React from 'react';
-import StackAggregator from 'react-native-ui-lib/StackAggregator';
-import View from 'react-native-ui-lib/View';
-import Text from 'react-native-ui-lib/Text';
-
-const contents = [
- 'CURRENT (default) state with dashed line.\nAligned to title',
- 'SUCCESS state with label.',
- 'ERROR state with icon.',
- 'Custom color with icon and outline.\nAligned to title',
- 'NEXT state with outline.',
- 'NEXT state with circle point and entry point.'
-];
-
-const StackAggregatorWrapper = () => {
- const renderStackItem = (content: string, index: number) => {
- return (
- {
- console.log('onItemPress');
- }}
- >
- {content}
-
- );
- };
-
-
- return (
-
- {contents.slice(0, 3).map((item, index) => {
- return renderStackItem(item, index);
- })}
-
- );
-};
-
-export default StackAggregatorWrapper;
diff --git a/webDemo/src/examples/Timeline.tsx b/webDemo/src/examples/Timeline.tsx
deleted file mode 100644
index 20d4d2261d..0000000000
--- a/webDemo/src/examples/Timeline.tsx
+++ /dev/null
@@ -1,135 +0,0 @@
-
-import React, {useCallback, useRef, useState} from 'react';
-import Timeline from 'react-native-ui-lib/Timeline';
-import Card from 'react-native-ui-lib/Card';
-import View from 'react-native-ui-lib/View';
-import Text from 'react-native-ui-lib/Text';
-import Button from 'react-native-ui-lib/Button';
-import {Colors} from 'react-native-ui-lib/style';
-import {Assets} from 'react-native-ui-lib';
-
-const contents = [
- 'CURRENT (default) state with dashed line.\nAligned to title',
- 'SUCCESS state with label.',
- 'ERROR state with icon.',
- 'Custom color with icon and outline.\nAligned to title',
- 'NEXT state with outline.',
- 'NEXT state with circle point and entry point.'
-];
-
-const TimelineWrapper = () => {
- const [expand, setExpand] = useState(false);
- const anchor = useRef();
-
- const onPressExpand = useCallback(() => {
- setExpand(!expand);
- }, [expand]);
-
- const renderExtraContent = () => {
- return (
-
- Lorem Ipsum is simply dummy text of the printing and typesetting industry.
- Lorem Ipsum is simply dummy text of the printing and typesetting industry
-
- );
- };
-
- const renderContent = (index = 0, anchorRef?: any) => {
- return (
-
-
- Step {index + 1}
-
-
- {contents[index]}
-
-
-
- {expand && renderExtraContent()}
-
-
- );
- };
-
- return (
-
-
- {renderContent(0, anchor)}
-
-
- {renderContent(1, undefined)}
-
-
-
- {renderContent(2)}
-
-
- {renderContent(3)}
-
-
- {renderContent(4)}
-
-
-
- {renderContent(5)}
-
-
- );
-};
-
-export default TimelineWrapper;
diff --git a/webDemo/src/index.ts b/webDemo/src/index.ts
deleted file mode 100644
index ef866d743d..0000000000
--- a/webDemo/src/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { AppRegistry } from "react-native";
-import App from "./App";
-
-AppRegistry.registerComponent("App", () => App);
-AppRegistry.runApplication("App", {
- rootTag: document.getElementById("root")
-});
\ No newline at end of file
diff --git a/webDemo/tsconfig.json b/webDemo/tsconfig.json
deleted file mode 100644
index 9d4d24c074..0000000000
--- a/webDemo/tsconfig.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "lib": [
- "dom",
- "dom.iterable",
- "esnext"
- ],
- "allowJs": true,
- "skipLibCheck": true,
- "esModuleInterop": true,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "noFallthroughCasesInSwitch": true,
- "module": "commonjs",
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx",
- "paths": {
- "baseUrl": ".",
- "react-native": ["node_modules/react-native-web/dist/index.js"]
- }
- },
- "include": [
- "src"
- ],
-}
\ No newline at end of file
diff --git a/webDemo/webpack.config.js b/webDemo/webpack.config.js
deleted file mode 100644
index ca2d8657e0..0000000000
--- a/webDemo/webpack.config.js
+++ /dev/null
@@ -1,109 +0,0 @@
-const path = require('path');
-const webpack = require('webpack');
-const HtmlWebpackPlugin = require('html-webpack-plugin');
-const {CleanWebpackPlugin} = require('clean-webpack-plugin');
-
-const appDirectory = path.resolve(__dirname, '.');
-
-const baseProjectSource = [
- path.resolve(appDirectory, 'src'),
- path.resolve(appDirectory, 'node_modules/react-native-web'),
- // just for not getting warnings
- path.resolve(appDirectory, 'node_modules/react-native-shimmer-placeholder'),
- path.resolve(appDirectory, 'node_modules/react-native-linear-gradient'),
- // end just for not getting warnings
- path.resolve(appDirectory, 'node_modules/react-native-haptic-feedback'),
- path.resolve(appDirectory, 'node_modules/react-native-animatable'),
- path.resolve(appDirectory, 'node_modules/react-native-reanimated'),
- path.resolve(appDirectory, 'node_modules/react-native-svg'),
- path.resolve(appDirectory, 'node_modules/react-native-svg-transformer'),
- path.resolve(appDirectory, 'node_modules/@react-native-community/netinfo'),
- path.resolve(appDirectory, 'node_modules/@react-native-community/datetimepicker'),
- path.resolve(appDirectory, 'node_modules/react-native-color'),
- path.resolve(appDirectory, 'node_modules/react-native-ui-lib'),
- path.resolve(appDirectory, 'node_modules/postcss'),
- path.resolve(appDirectory, 'node_modules/postcss-js')
-];
-
-const useBabelForRN = {
- loader: 'babel-loader',
- options: {
- cacheDirectory: true,
- // The 'react-native' preset is recommended to match React Native's packager
- presets: ['module:metro-react-native-babel-preset'],
- // Re-write paths to import only the modules needed by the app
- plugins: ['react-native-web', 'react-native-reanimated/plugin']
- }
-};
-
-
-const imageLoaderConfiguration = {
- test: /\.(gif|jpe?g|png|svg)$/,
- use: {
- loader: 'url-loader',
- options: {
- name: '[name].[ext]',
- esModule: false
- }
- }
-};
-
-const babelLoaderAppConfiguration = {
- test: /\.(js|jsx|ts|tsx)$/,
- include: baseProjectSource,
- use: useBabelForRN
-};
-
-module.exports =
-{
- entry: {
- app: path.resolve(appDirectory, './src/index.ts')
- },
- output: {
- path: path.join(appDirectory, './dist'),
- filename: 'app.js'
- },
- mode: 'development',
- devtool: 'inline-source-map',
- module: {
- rules: [
- babelLoaderAppConfiguration,
- imageLoaderConfiguration
- ]
- },
- resolve: {
- // This will only alias the exact import "react-native"
- alias: {
- 'react-native$': 'react-native-web'
- },
- // If you're working on a multi-platform React Native app, web-specific
- // module implementations should be written in files using the extension
- // `.web.js`.
- extensions: ['.web.js', '.js', '.jsx', '.tsx', '.ts']
- },
- devServer: {
- contentBase: path.resolve(appDirectory, './dist'),
- compress: true,
- port: 9001
- },
- plugins: [
- new CleanWebpackPlugin({
- cleanOnceBeforeBuildPatterns: [
- '**/*'
- ]
- }),
- // `process.env.NODE_ENV === 'production'` must be `true` for production
- // builds to eliminate development checks and reduce build size. You may
- // wish to include additional optimizations.
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
- __DEV__: process.env.NODE_ENV === 'production' || true
- }),
- new webpack.ProvidePlugin({
- process: 'process/browser'
- }),
- new HtmlWebpackPlugin({
- template: path.resolve(appDirectory, './index.html')
- })
- ]
-};