diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 65365be6..00000000 --- a/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# editorconfig.org - -root = true - -[*] - -indent_style = space -indent_size = 2 - -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index f1cae9fa..00000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -src/temp -lib -example \ No newline at end of file diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 030ef144..00000000 --- a/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -*.pbxproj -text -# specific for windows script files -*.bat text eol=crlf \ No newline at end of file diff --git a/.watchmanconfig b/.watchmanconfig deleted file mode 100644 index 9e26dfee..00000000 --- a/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index fedc0f11..00000000 --- a/.yarnrc +++ /dev/null @@ -1,3 +0,0 @@ -# Override Yarn command so we can automatically setup the repo on running `yarn` - -yarn-path "scripts/bootstrap.js" diff --git a/Extensions+RNIDictionaryRepresentable/CGPoint+RNIDictionaryRepresentable.swift b/Extensions+RNIDictionaryRepresentable/CGPoint+RNIDictionaryRepresentable.swift deleted file mode 100644 index 9e2cf679..00000000 --- a/Extensions+RNIDictionaryRepresentable/CGPoint+RNIDictionaryRepresentable.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CGPoint+RNIDictionaryRepresentable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/3/23. -// - -import Foundation - -extension CGPoint: RNIDictionaryRepresentable { - public var asDictionary: [String: Any] { - var dict: [String: Any] = [:]; - dict["x"] = self.x; - dict["y"] = self.y; - - return dict; - }; -}; diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index fea54de2..00000000 --- a/android/build.gradle +++ /dev/null @@ -1,146 +0,0 @@ -buildscript { - // Buildscript is evaluated before everything else so we can't use getExtOrDefault - def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['IosModal_kotlinVersion'] - - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:3.5.3' - // noinspection DifferentKotlinGradleVersion - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -def isNewArchitectureEnabled() { - return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" -} - -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' - -if (isNewArchitectureEnabled()) { - apply plugin: 'com.facebook.react' -} - -def getExtOrDefault(name) { - return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['IosModal_' + name] -} - -def getExtOrIntegerDefault(name) { - return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['IosModal_' + name]).toInteger() -} - -android { - compileSdkVersion getExtOrIntegerDefault('compileSdkVersion') - - defaultConfig { - minSdkVersion getExtOrIntegerDefault('minSdkVersion') - targetSdkVersion getExtOrIntegerDefault('targetSdkVersion') - buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() - } - buildTypes { - release { - minifyEnabled false - } - } - - lintOptions { - disable 'GradleCompatible' - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - -} - -repositories { - mavenCentral() - google() - - def found = false - def defaultDir = null - def androidSourcesName = 'React Native sources' - - if (rootProject.ext.has('reactNativeAndroidRoot')) { - defaultDir = rootProject.ext.get('reactNativeAndroidRoot') - } else { - defaultDir = new File( - projectDir, - '/../../../node_modules/react-native/android' - ) - } - - if (defaultDir.exists()) { - maven { - url defaultDir.toString() - name androidSourcesName - } - - logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}") - found = true - } else { - def parentDir = rootProject.projectDir - - 1.upto(5, { - if (found) return true - parentDir = parentDir.parentFile - - def androidSourcesDir = new File( - parentDir, - 'node_modules/react-native' - ) - - def androidPrebuiltBinaryDir = new File( - parentDir, - 'node_modules/react-native/android' - ) - - if (androidPrebuiltBinaryDir.exists()) { - maven { - url androidPrebuiltBinaryDir.toString() - name androidSourcesName - } - - logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}") - found = true - } else if (androidSourcesDir.exists()) { - maven { - url androidSourcesDir.toString() - name androidSourcesName - } - - logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}") - found = true - } - }) - } - - if (!found) { - throw new GradleException( - "${project.name}: unable to locate React Native android sources. " + - "Ensure you have you installed React Native as a dependency in your project and try again." - ) - } -} - -def kotlin_version = getExtOrDefault('kotlinVersion') - -dependencies { - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" -// From node_modules -} - -if (isNewArchitectureEnabled()) { - react { - jsRootDir = file("../src/") - libraryName = "IosModal" - codegenJavaPackageName = "com.reactnativeiosmodal" - } -} diff --git a/android/gradle.properties b/android/gradle.properties deleted file mode 100644 index e6863378..00000000 --- a/android/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -IosModal_kotlinVersion=1.7.0 -IosModal_minSdkVersion=21 -IosModal_targetSdkVersion=31 -IosModal_compileSdkVersion=31 -IosModal_ndkversion=21.4.7075529 diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml deleted file mode 100644 index 6156bedc..00000000 --- a/android/src/main/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/android/src/main/java/com/reactnativeiosmodal/IosModalPackage.kt b/android/src/main/java/com/reactnativeiosmodal/IosModalPackage.kt deleted file mode 100644 index f85a0334..00000000 --- a/android/src/main/java/com/reactnativeiosmodal/IosModalPackage.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.reactnativeiosmodal -import com.facebook.react.ReactPackage -import com.facebook.react.bridge.NativeModule -import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.uimanager.ViewManager - - -class IosModalPackage : ReactPackage { - override fun createNativeModules(reactContext: ReactApplicationContext): List { - return emptyList() - } - - override fun createViewManagers(reactContext: ReactApplicationContext): List> { - return listOf(IosModalViewManager()) - } -} diff --git a/android/src/main/java/com/reactnativeiosmodal/IosModalViewManager.kt b/android/src/main/java/com/reactnativeiosmodal/IosModalViewManager.kt deleted file mode 100644 index a48ca87b..00000000 --- a/android/src/main/java/com/reactnativeiosmodal/IosModalViewManager.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.reactnativeiosmodal -import android.graphics.Color -import android.view.View -import com.facebook.react.uimanager.SimpleViewManager -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.annotations.ReactProp - -class IosModalViewManager : SimpleViewManager() { - override fun getName() = "IosModalView" - - override fun createViewInstance(reactContext: ThemedReactContext): View { - return View(reactContext) - } - - @ReactProp(name = "color") - fun setColor(view: View, color: String) { - view.setBackgroundColor(Color.parseColor(color)) - } -} diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index f842b77f..00000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: ['module:metro-react-native-babel-preset'], -}; diff --git a/example/.bundle/config b/example/.bundle/config deleted file mode 100644 index 848943bb..00000000 --- a/example/.bundle/config +++ /dev/null @@ -1,2 +0,0 @@ -BUNDLE_PATH: "vendor/bundle" -BUNDLE_FORCE_RUBY_PLATFORM: 1 diff --git a/example/.node-version b/example/.node-version deleted file mode 100644 index b6a7d89c..00000000 --- a/example/.node-version +++ /dev/null @@ -1 +0,0 @@ -16 diff --git a/example/.ruby-version b/example/.ruby-version deleted file mode 100644 index a603bb50..00000000 --- a/example/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.7.5 diff --git a/example/.watchmanconfig b/example/.watchmanconfig deleted file mode 100644 index 9e26dfee..00000000 --- a/example/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/example/Gemfile b/example/Gemfile deleted file mode 100644 index 5efda89f..00000000 --- a/example/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' - -# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby '2.7.5' - -gem 'cocoapods', '~> 1.11', '>= 1.11.2' diff --git a/example/android/app/_BUCK b/example/android/app/_BUCK deleted file mode 100644 index a0d56f98..00000000 --- a/example/android/app/_BUCK +++ /dev/null @@ -1,55 +0,0 @@ -# To learn about Buck see [Docs](https://buckbuild.com/). -# To run your application with Buck: -# - install Buck -# - `npm start` - to start the packager -# - `cd android` -# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` -# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck -# - `buck install -r android/app` - compile, install and run application -# - -load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") - -lib_deps = [] - -create_aar_targets(glob(["libs/*.aar"])) - -create_jar_targets(glob(["libs/*.jar"])) - -android_library( - name = "all-libs", - exported_deps = lib_deps, -) - -android_library( - name = "app-code", - srcs = glob([ - "src/main/java/**/*.java", - ]), - deps = [ - ":all-libs", - ":build_config", - ":res", - ], -) - -android_build_config( - name = "build_config", - package = "com.iosmodalexample", -) - -android_resource( - name = "res", - package = "com.iosmodalexample", - res = "src/main/res", -) - -android_binary( - name = "app", - keystore = "//android/keystores:debug", - manifest = "src/main/AndroidManifest.xml", - package_type = "debug", - deps = [ - ":app-code", - ], -) diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle deleted file mode 100644 index 283c65d2..00000000 --- a/example/android/app/build.gradle +++ /dev/null @@ -1,313 +0,0 @@ -apply plugin: "com.android.application" - -import com.android.build.OutputFile -import org.apache.tools.ant.taskdefs.condition.Os - -/** - * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets - * and bundleReleaseJsAndAssets). - * These basically call `react-native bundle` with the correct arguments during the Android build - * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the - * bundle directly from the development server. Below you can see all the possible configurations - * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "../../node_modules/react-native/react.gradle"` line. - * - * project.ext.react = [ - * // the name of the generated asset file containing your JS bundle - * bundleAssetName: "index.android.bundle", - * - * // the entry file for bundle generation. If none specified and - * // "index.android.js" exists, it will be used. Otherwise "index.js" is - * // default. Can be overridden with ENTRY_FILE environment variable. - * entryFile: "index.android.js", - * - * // https://reactnative.dev/docs/performance#enable-the-ram-format - * bundleCommand: "ram-bundle", - * - * // whether to bundle JS and assets in debug mode - * bundleInDebug: false, - * - * // whether to bundle JS and assets in release mode - * bundleInRelease: true, - * - * // whether to bundle JS and assets in another build variant (if configured). - * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property can be in the following formats - * // 'bundleIn${productFlavor}${buildType}' - * // 'bundleIn${buildType}' - * // bundleInFreeDebug: true, - * // bundleInPaidRelease: true, - * // bundleInBeta: true, - * - * // whether to disable dev mode in custom build variants (by default only disabled in release) - * // for example: to disable dev mode in the staging build type (if configured) - * devDisabledInStaging: true, - * // The configuration property can be in the following formats - * // 'devDisabledIn${productFlavor}${buildType}' - * // 'devDisabledIn${buildType}' - * - * // the root of your project, i.e. where "package.json" lives - * root: "../../", - * - * // where to put the JS bundle asset in debug mode - * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", - * - * // where to put the JS bundle asset in release mode - * jsBundleDirRelease: "$buildDir/intermediates/assets/release", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in debug mode - * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in release mode - * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", - * - * // by default the gradle tasks are skipped if none of the JS files or assets change; this means - * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to - * // date; if you have any other folders that you want to ignore for performance reasons (gradle - * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ - * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"], - * - * // override which node gets called and with what additional arguments - * nodeExecutableAndArgs: ["node"], - * - * // supply additional arguments to the packager - * extraPackagerArgs: [] - * ] - */ - -project.ext.react = [ - enableHermes: true, // clean and rebuild if changing -] - -apply from: "../../node_modules/react-native/react.gradle" - -/** - * Set this to true to create two separate APKs instead of one: - * - An APK that only works on ARM devices - * - An APK that only works on x86 devices - * The advantage is the size of the APK is reduced by about 4MB. - * Upload all the APKs to the Play Store and people will download - * the correct one based on the CPU architecture of their device. - */ -def enableSeparateBuildPerCPUArchitecture = false - -/** - * Run Proguard to shrink the Java bytecode in release builds. - */ -def enableProguardInReleaseBuilds = false - -/** - * The preferred build flavor of JavaScriptCore. - * - * For example, to use the international variant, you can use: - * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` - * - * The international variant includes ICU i18n library and necessary data - * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that - * this variant is about 6MiB larger per architecture than default. - */ -def jscFlavor = 'org.webkit:android-jsc:+' - -/** - * Whether to enable the Hermes VM. - * - * This should be set on project.ext.react and that value will be read here. If it is not set - * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode - * and the benefits of using Hermes will therefore be sharply reduced. - */ -def enableHermes = project.ext.react.get("enableHermes", false); - -/** - * Architectures to build native code for. - */ -def reactNativeArchitectures() { - def value = project.getProperties().get("reactNativeArchitectures") - return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] -} - -android { - ndkVersion rootProject.ext.ndkVersion - - compileSdkVersion rootProject.ext.compileSdkVersion - - defaultConfig { - applicationId "com.iosmodalexample" - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1 - versionName "1.0" - buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() - - if (isNewArchitectureEnabled()) { - // We configure the CMake build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - cmake { - arguments "-DPROJECT_BUILD_DIR=$buildDir", - "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", - "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build", - "-DNODE_MODULES_DIR=$rootDir/../node_modules", - "-DANDROID_STL=c++_shared" - } - } - if (!enableSeparateBuildPerCPUArchitecture) { - ndk { - abiFilters (*reactNativeArchitectures()) - } - } - } - } - - if (isNewArchitectureEnabled()) { - // We configure the NDK build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - cmake { - path "$projectDir/src/main/jni/CMakeLists.txt" - } - } - def reactAndroidProjectDir = project(':ReactAndroid').projectDir - def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { - dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") - from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") - into("$buildDir/react-ndk/exported") - } - def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { - dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") - from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") - into("$buildDir/react-ndk/exported") - } - afterEvaluate { - // If you wish to add a custom TurboModule or component locally, - // you should uncomment this line. - // preBuild.dependsOn("generateCodegenArtifactsFromSchema") - preDebugBuild.dependsOn(packageReactNdkDebugLibs) - preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) - - // Due to a bug inside AGP, we have to explicitly set a dependency - // between configureCMakeDebug* tasks and the preBuild tasks. - // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 - configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild) - configureCMakeDebug.dependsOn(preDebugBuild) - reactNativeArchitectures().each { architecture -> - tasks.findByName("configureCMakeDebug[${architecture}]")?.configure { - dependsOn("preDebugBuild") - } - tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure { - dependsOn("preReleaseBuild") - } - } - } - } - - 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 { - implementation fileTree(dir: "libs", include: ["*.jar"]) - - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" // From node_modules - - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' - } - - debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' - exclude group:'com.squareup.okhttp3', module:'okhttp' - } - - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' - } - - if (enableHermes) { - //noinspection GradleDynamicVersion - implementation("com.facebook.react:hermes-engine:+") { // From node_modules - exclude group:'com.facebook.fbjni' - } - } else { - implementation jscFlavor - } -} - -if (isNewArchitectureEnabled()) { - // If new architecture is enabled, we let you build RN from source - // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. - // This will be applied to all the imported transtitive dependency. - configurations.all { - resolutionStrategy.dependencySubstitution { - substitute(module("com.facebook.react:react-native")) - .using(project(":ReactAndroid")) - .because("On New Architecture we're building React Native from source") - substitute(module("com.facebook.react:hermes-engine")) - .using(project(":ReactAndroid:hermes-engine")) - .because("On New Architecture we're building Hermes from source") - } - } -} - -// Run this once to be able to run the application with BUCK -// puts all compile dependencies into folder libs for BUCK to use -task copyDownloadableDepsToLibs(type: Copy) { - from configurations.implementation - into 'libs' -} - -apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) - -def isNewArchitectureEnabled() { - // To opt-in for the New Architecture, you can either: - // - Set `newArchEnabled` to true inside the `gradle.properties` file - // - Invoke gradle with `-newArchEnabled=true` - // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` - return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" -} diff --git a/example/android/app/build_defs.bzl b/example/android/app/build_defs.bzl deleted file mode 100644 index fff270f8..00000000 --- a/example/android/app/build_defs.bzl +++ /dev/null @@ -1,19 +0,0 @@ -"""Helper definitions to glob .aar and .jar targets""" - -def create_aar_targets(aarfiles): - for aarfile in aarfiles: - name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] - lib_deps.append(":" + name) - android_prebuilt_aar( - name = name, - aar = aarfile, - ) - -def create_jar_targets(jarfiles): - for jarfile in jarfiles: - name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] - lib_deps.append(":" + name) - prebuilt_jar( - name = name, - binary_jar = jarfile, - ) diff --git a/example/android/app/debug.keystore b/example/android/app/debug.keystore deleted file mode 100644 index 364e105e..00000000 Binary files a/example/android/app/debug.keystore and /dev/null differ diff --git a/example/android/app/proguard-rules.pro b/example/android/app/proguard-rules.pro deleted file mode 100644 index 11b02572..00000000 --- a/example/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/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 4b185bc1..00000000 --- a/example/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/example/android/app/src/debug/java/com/iosmodalexample/ReactNativeFlipper.java b/example/android/app/src/debug/java/com/iosmodalexample/ReactNativeFlipper.java deleted file mode 100644 index cb09c69e..00000000 --- a/example/android/app/src/debug/java/com/iosmodalexample/ReactNativeFlipper.java +++ /dev/null @@ -1,73 +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.iosmodalexample; - -import android.content.Context; -import com.facebook.flipper.android.AndroidFlipperClient; -import com.facebook.flipper.android.utils.FlipperUtils; -import com.facebook.flipper.core.FlipperClient; -import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; -import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; -import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; -import com.facebook.flipper.plugins.inspector.DescriptorMapping; -import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; -import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; -import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.react.ReactFlipperPlugin; -import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; -import com.facebook.react.ReactInstanceEventListener; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.bridge.ReactContext; -import com.facebook.react.modules.network.NetworkingModule; -import okhttp3.OkHttpClient; - -public class ReactNativeFlipper { - public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - if (FlipperUtils.shouldEnableFlipper(context)) { - final FlipperClient client = AndroidFlipperClient.getInstance(context); - - client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new ReactFlipperPlugin()); - client.addPlugin(new DatabasesFlipperPlugin(context)); - client.addPlugin(new SharedPreferencesFlipperPlugin(context)); - client.addPlugin(CrashReporterPlugin.getInstance()); - - NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); - NetworkingModule.setCustomClientBuilder( - new NetworkingModule.CustomClientBuilder() { - @Override - public void apply(OkHttpClient.Builder builder) { - builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); - } - }); - client.addPlugin(networkFlipperPlugin); - client.start(); - - // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized - // Hence we run if after all native modules have been initialized - ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); - if (reactContext == null) { - reactInstanceManager.addReactInstanceEventListener( - new 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()); - } - } - } -} diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 5233ac66..00000000 --- a/example/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/example/android/app/src/main/java/com/iosmodalexample/MainActivity.java b/example/android/app/src/main/java/com/iosmodalexample/MainActivity.java deleted file mode 100644 index 86ac2f9e..00000000 --- a/example/android/app/src/main/java/com/iosmodalexample/MainActivity.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.iosmodalexample; - -import com.facebook.react.ReactActivity; -import com.facebook.react.ReactActivityDelegate; -import com.facebook.react.ReactRootView; - -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 "IosModalExample"; - } - - /** - * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and - * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer - * (Paper). - */ - @Override - protected ReactActivityDelegate createReactActivityDelegate() { - return new MainActivityDelegate(this, getMainComponentName()); - } - - public static class MainActivityDelegate extends ReactActivityDelegate { - public MainActivityDelegate(ReactActivity activity, String mainComponentName) { - super(activity, mainComponentName); - } - - @Override - protected ReactRootView createRootView() { - ReactRootView reactRootView = new ReactRootView(getContext()); - // If you opted-in for the New Architecture, we enable the Fabric Renderer. - reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); - return reactRootView; - } - - @Override - protected boolean isConcurrentRootEnabled() { - // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18). - // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html - return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - } - } -} diff --git a/example/android/app/src/main/java/com/iosmodalexample/MainApplication.java b/example/android/app/src/main/java/com/iosmodalexample/MainApplication.java deleted file mode 100644 index d6377de0..00000000 --- a/example/android/app/src/main/java/com/iosmodalexample/MainApplication.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.iosmodalexample; - -import android.app.Application; -import android.content.Context; -import com.facebook.react.PackageList; -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.config.ReactFeatureFlags; -import com.facebook.soloader.SoLoader; -import com.iosmodalexample.newarchitecture.MainApplicationReactNativeHost; -import java.lang.reflect.InvocationTargetException; -import java.util.List; - -public class MainApplication extends Application implements ReactApplication { - - private final ReactNativeHost mReactNativeHost = - new ReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - }; - - private final ReactNativeHost mNewArchitectureNativeHost = - new MainApplicationReactNativeHost(this); - - @Override - public ReactNativeHost getReactNativeHost() { - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - return mNewArchitectureNativeHost; - } else { - return mReactNativeHost; - } - } - - @Override - public void onCreate() { - super.onCreate(); - // If you opted-in for the New Architecture, we enable the TurboModule system - ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - SoLoader.init(this, /* native exopackage */ false); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - } - - /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper( - Context context, ReactInstanceManager reactInstanceManager) { - if (BuildConfig.DEBUG) { - try { - /* - We use reflection here to pick up the class that initializes Flipper, - since Flipper library is not available in release mode - */ - Class aClass = Class.forName("com.iosmodalexample.ReactNativeFlipper"); - aClass - .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) - .invoke(null, context, reactInstanceManager); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - } - } -} diff --git a/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/MainApplicationReactNativeHost.java b/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/MainApplicationReactNativeHost.java deleted file mode 100644 index f69c69f1..00000000 --- a/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/MainApplicationReactNativeHost.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.iosmodalexample.newarchitecture; - -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.FabricJSIModuleProvider; -import com.facebook.react.fabric.ReactNativeConfig; -import com.facebook.react.uimanager.ViewManagerRegistry; -import com.iosmodalexample.BuildConfig; -import com.iosmodalexample.newarchitecture.components.MainComponentsRegistry; -import com.iosmodalexample.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; -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, - ReactNativeConfig.DEFAULT_CONFIG, - viewManagerRegistry); - } - }); - return specs; - } - }; - } -} diff --git a/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/components/MainComponentsRegistry.java b/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/components/MainComponentsRegistry.java deleted file mode 100644 index f02eaa5e..00000000 --- a/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/components/MainComponentsRegistry.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.iosmodalexample.newarchitecture.components; - -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/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java deleted file mode 100644 index c82e5442..00000000 --- a/example/android/app/src/main/java/com/iosmodalexample/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.iosmodalexample.newarchitecture.modules; - -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("iosmodalexample_appmodules"); - sIsSoLibraryLoaded = true; - } - } -} diff --git a/example/android/app/src/main/jni/CMakeLists.txt b/example/android/app/src/main/jni/CMakeLists.txt deleted file mode 100644 index eb5dc079..00000000 --- a/example/android/app/src/main/jni/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.13) - -# Define the library name here. -project(iosmodalexample_appmodules) - -# This file includes all the necessary to let you build your application with the New Architecture. -include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake) diff --git a/example/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/example/android/app/src/main/jni/MainApplicationModuleProvider.cpp deleted file mode 100644 index 26162dd8..00000000 --- a/example/android/app/src/main/jni/MainApplicationModuleProvider.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "MainApplicationModuleProvider.h" - -#include -#include - -namespace facebook { -namespace react { - -std::shared_ptr MainApplicationModuleProvider( - const std::string &moduleName, - const JavaTurboModule::InitParams ¶ms) { - // Here you can provide your own module provider for TurboModules coming from - // either your application or from external libraries. The approach to follow - // is similar to the following (for a library called `samplelibrary`: - // - // auto module = samplelibrary_ModuleProvider(moduleName, params); - // if (module != nullptr) { - // return module; - // } - // return rncore_ModuleProvider(moduleName, params); - - // Module providers autolinked by RN CLI - auto rncli_module = rncli_ModuleProvider(moduleName, params); - if (rncli_module != nullptr) { - return rncli_module; - } - - return rncore_ModuleProvider(moduleName, params); -} - -} // namespace react -} // namespace facebook diff --git a/example/android/app/src/main/jni/MainApplicationModuleProvider.h b/example/android/app/src/main/jni/MainApplicationModuleProvider.h deleted file mode 100644 index b38ccf53..00000000 --- a/example/android/app/src/main/jni/MainApplicationModuleProvider.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include -#include - -#include - -namespace facebook { -namespace react { - -std::shared_ptr MainApplicationModuleProvider( - const std::string &moduleName, - const JavaTurboModule::InitParams ¶ms); - -} // namespace react -} // namespace facebook diff --git a/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp deleted file mode 100644 index 5fd688c5..00000000 --- a/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "MainApplicationTurboModuleManagerDelegate.h" -#include "MainApplicationModuleProvider.h" - -namespace facebook { -namespace react { - -jni::local_ref -MainApplicationTurboModuleManagerDelegate::initHybrid( - jni::alias_ref) { - return makeCxxInstance(); -} - -void MainApplicationTurboModuleManagerDelegate::registerNatives() { - registerHybrid({ - makeNativeMethod( - "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), - makeNativeMethod( - "canCreateTurboModule", - MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), - }); -} - -std::shared_ptr -MainApplicationTurboModuleManagerDelegate::getTurboModule( - const std::string &name, - const std::shared_ptr &jsInvoker) { - // Not implemented yet: provide pure-C++ NativeModules here. - return nullptr; -} - -std::shared_ptr -MainApplicationTurboModuleManagerDelegate::getTurboModule( - const std::string &name, - const JavaTurboModule::InitParams ¶ms) { - return MainApplicationModuleProvider(name, params); -} - -bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( - const std::string &name) { - return getTurboModule(name, nullptr) != nullptr || - getTurboModule(name, {.moduleName = name}) != nullptr; -} - -} // namespace react -} // namespace facebook diff --git a/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h deleted file mode 100644 index 4149e497..00000000 --- a/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -#include -#include - -namespace facebook { -namespace react { - -class MainApplicationTurboModuleManagerDelegate - : public jni::HybridClass< - MainApplicationTurboModuleManagerDelegate, - TurboModuleManagerDelegate> { - public: - // Adapt it to the package you used for your Java class. - static constexpr auto kJavaDescriptor = - "Lcom/iosmodalexample/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; - - static jni::local_ref initHybrid(jni::alias_ref); - - static void registerNatives(); - - std::shared_ptr getTurboModule( - const std::string &name, - const std::shared_ptr &jsInvoker) override; - std::shared_ptr getTurboModule( - const std::string &name, - const JavaTurboModule::InitParams ¶ms) override; - - /** - * Test-only method. Allows user to verify whether a TurboModule can be - * created by instances of this class. - */ - bool canCreateTurboModule(const std::string &name); -}; - -} // namespace react -} // namespace facebook diff --git a/example/android/app/src/main/jni/MainComponentsRegistry.cpp b/example/android/app/src/main/jni/MainComponentsRegistry.cpp deleted file mode 100644 index 54f598a4..00000000 --- a/example/android/app/src/main/jni/MainComponentsRegistry.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "MainComponentsRegistry.h" - -#include -#include -#include -#include -#include - -namespace facebook { -namespace react { - -MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} - -std::shared_ptr -MainComponentsRegistry::sharedProviderRegistry() { - auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); - - // Autolinked providers registered by RN CLI - rncli_registerProviders(providerRegistry); - - // Custom Fabric Components go here. You can register custom - // components coming from your App or from 3rd party libraries here. - // - // providerRegistry->add(concreteComponentDescriptorProvider< - // AocViewerComponentDescriptor>()); - return providerRegistry; -} - -jni::local_ref -MainComponentsRegistry::initHybrid( - jni::alias_ref, - ComponentFactory *delegate) { - auto instance = makeCxxInstance(delegate); - - auto buildRegistryFunction = - [](EventDispatcher::Weak const &eventDispatcher, - ContextContainer::Shared const &contextContainer) - -> ComponentDescriptorRegistry::Shared { - auto registry = MainComponentsRegistry::sharedProviderRegistry() - ->createComponentDescriptorRegistry( - {eventDispatcher, contextContainer}); - - auto mutableRegistry = - std::const_pointer_cast(registry); - - mutableRegistry->setFallbackComponentDescriptor( - std::make_shared( - ComponentDescriptorParameters{ - eventDispatcher, contextContainer, nullptr})); - - return registry; - }; - - delegate->buildRegistryFunction = buildRegistryFunction; - return instance; -} - -void MainComponentsRegistry::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), - }); -} - -} // namespace react -} // namespace facebook diff --git a/example/android/app/src/main/jni/MainComponentsRegistry.h b/example/android/app/src/main/jni/MainComponentsRegistry.h deleted file mode 100644 index 147ac160..00000000 --- a/example/android/app/src/main/jni/MainComponentsRegistry.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -namespace facebook { -namespace react { - -class MainComponentsRegistry - : public facebook::jni::HybridClass { - public: - // Adapt it to the package you used for your Java class. - constexpr static auto kJavaDescriptor = - "Lcom/iosmodalexample/newarchitecture/components/MainComponentsRegistry;"; - - static void registerNatives(); - - MainComponentsRegistry(ComponentFactory *delegate); - - private: - static std::shared_ptr - sharedProviderRegistry(); - - static jni::local_ref initHybrid( - jni::alias_ref, - ComponentFactory *delegate); -}; - -} // namespace react -} // namespace facebook diff --git a/example/android/app/src/main/jni/OnLoad.cpp b/example/android/app/src/main/jni/OnLoad.cpp deleted file mode 100644 index c569b6e8..00000000 --- a/example/android/app/src/main/jni/OnLoad.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "MainApplicationTurboModuleManagerDelegate.h" -#include "MainComponentsRegistry.h" - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { - return facebook::jni::initialize(vm, [] { - facebook::react::MainApplicationTurboModuleManagerDelegate:: - registerNatives(); - facebook::react::MainComponentsRegistry::registerNatives(); - }); -} diff --git a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml deleted file mode 100644 index f35d9962..00000000 --- a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a2f59082..00000000 Binary files a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 1b523998..00000000 Binary files a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index ff10afd6..00000000 Binary files a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index 115a4c76..00000000 Binary files a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index dcd3cd80..00000000 Binary files a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 459ca609..00000000 Binary files a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 8ca12fe0..00000000 Binary files a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 8e19b410..00000000 Binary files a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index b824ebdd..00000000 Binary files a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 4c19a13c..00000000 Binary files a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/example/android/app/src/main/res/values/strings.xml b/example/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 18b91dad..00000000 --- a/example/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - IosModalExample - diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml deleted file mode 100644 index 7ba83a2a..00000000 --- a/example/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/example/android/build.gradle b/example/android/build.gradle deleted file mode 100644 index 8569fee3..00000000 --- a/example/android/build.gradle +++ /dev/null @@ -1,51 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - ext { - buildToolsVersion = "31.0.0" - minSdkVersion = 21 - compileSdkVersion = 31 - targetSdkVersion = 31 - - if (System.properties['os.arch'] == "aarch64") { - // For M1 Users we need to use the NDK 24 which added support for aarch64 - ndkVersion = "24.0.8215888" - } else { - // Otherwise we default to the side-by-side NDK version from AGP. - ndkVersion = "21.4.7075529" - } - } - repositories { - google() - mavenCentral() - } - dependencies { - classpath("com.android.tools.build:gradle:7.2.1") - classpath("com.facebook.react:react-native-gradle-plugin") - classpath("de.undercouch:gradle-download-task:5.0.1") - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url("$rootDir/../node_modules/react-native/android") - } - maven { - // Android JSC is installed from npm - url("$rootDir/../node_modules/jsc-android/dist") - } - mavenCentral { - // We don't want to fetch react-native from Maven Central as there are - // older versions over there. - content { - excludeGroup "com.facebook.react" - } - } - google() - maven { url 'https://www.jitpack.io' } - } -} diff --git a/example/android/gradle.properties b/example/android/gradle.properties deleted file mode 100644 index fa4feae5..00000000 --- a/example/android/gradle.properties +++ /dev/null @@ -1,40 +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 - -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true - -# Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.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 diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 41d9927a..00000000 Binary files a/example/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 8fad3f5a..00000000 --- a/example/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/example/android/gradlew b/example/android/gradlew deleted file mode 100755 index 1b6c7873..00000000 --- a/example/android/gradlew +++ /dev/null @@ -1,234 +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/example/android/gradlew.bat b/example/android/gradlew.bat deleted file mode 100644 index 107acd32..00000000 --- a/example/android/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/example/android/settings.gradle b/example/android/settings.gradle deleted file mode 100644 index 64dad682..00000000 --- a/example/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -rootProject.name = 'IosModalExample' -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') - -if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { - include(":ReactAndroid") - project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') - include(":ReactAndroid:hermes-engine") - project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine') -} diff --git a/example/app.json b/example/app.json deleted file mode 100644 index f91df11a..00000000 --- a/example/app.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "IosModalExample", - "displayName": "IosModalExample" -} \ No newline at end of file diff --git a/example/babel.config.js b/example/babel.config.js deleted file mode 100644 index adea77bd..00000000 --- a/example/babel.config.js +++ /dev/null @@ -1,17 +0,0 @@ -const path = require('path'); -const pak = require('../package.json'); - -module.exports = { - presets: ['module:metro-react-native-babel-preset'], - plugins: [ - [ - 'module-resolver', - { - extensions: ['.tsx', '.ts', '.js', '.json'], - alias: { - [pak.name]: path.join(__dirname, '..', pak.source), - }, - }, - ], - ], -}; diff --git a/example/index.js b/example/index.js deleted file mode 100644 index 117ddcae..00000000 --- a/example/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import { AppRegistry } from 'react-native'; -import App from './src/App'; -import { name as appName } from './app.json'; - -AppRegistry.registerComponent(appName, () => App); diff --git a/example/ios/.xcode.env b/example/ios/.xcode.env deleted file mode 100644 index 3d5782c7..00000000 --- a/example/ios/.xcode.env +++ /dev/null @@ -1,11 +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) diff --git a/example/ios/File.swift b/example/ios/File.swift deleted file mode 100644 index 3d6d69c3..00000000 --- a/example/ios/File.swift +++ /dev/null @@ -1,6 +0,0 @@ -// -// File.swift -// IosModalExample -// - -import Foundation diff --git a/example/ios/IosModalExample-Bridging-Header.h b/example/ios/IosModalExample-Bridging-Header.h deleted file mode 100644 index e11d920b..00000000 --- a/example/ios/IosModalExample-Bridging-Header.h +++ /dev/null @@ -1,3 +0,0 @@ -// -// Use this file to import your target's public headers that you would like to expose to Swift. -// diff --git a/example/ios/IosModalExample.xcodeproj/project.pbxproj b/example/ios/IosModalExample.xcodeproj/project.pbxproj deleted file mode 100644 index e9d5f15c..00000000 --- a/example/ios/IosModalExample.xcodeproj/project.pbxproj +++ /dev/null @@ -1,712 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* IosModalExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* IosModalExampleTests.m */; }; - 0C80B921A6F3F58F76C31292 /* libPods-IosModalExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-IosModalExample.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 7699B88040F8A987B510C191 /* libPods-IosModalExample-IosModalExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-IosModalExample-IosModalExampleTests.a */; }; - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = IosModalExample; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* IosModalExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IosModalExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* IosModalExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IosModalExampleTests.m; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* IosModalExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IosModalExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = IosModalExample/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = IosModalExample/AppDelegate.mm; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = IosModalExample/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = IosModalExample/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = IosModalExample/main.m; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-IosModalExample-IosModalExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-IosModalExample-IosModalExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B4392A12AC88292D35C810B /* Pods-IosModalExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IosModalExample.debug.xcconfig"; path = "Target Support Files/Pods-IosModalExample/Pods-IosModalExample.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-IosModalExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IosModalExample.release.xcconfig"; path = "Target Support Files/Pods-IosModalExample/Pods-IosModalExample.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-IosModalExample-IosModalExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IosModalExample-IosModalExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-IosModalExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-IosModalExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = IosModalExample/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-IosModalExample-IosModalExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IosModalExample-IosModalExampleTests.release.xcconfig"; path = "Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests.release.xcconfig"; sourceTree = ""; }; - ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7699B88040F8A987B510C191 /* libPods-IosModalExample-IosModalExampleTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0C80B921A6F3F58F76C31292 /* libPods-IosModalExample.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* IosModalExampleTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* IosModalExampleTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = IosModalExampleTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* IosModalExample */ = { - isa = PBXGroup; - children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.mm */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = IosModalExample; - sourceTree = ""; - }; - 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { - isa = PBXGroup; - children = ( - ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-IosModalExample.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-IosModalExample-IosModalExampleTests.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - ); - name = Libraries; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* IosModalExample */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* IosModalExampleTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - 2D16E6871FA4F8E400B85C8A /* Frameworks */, - BBD78D7AC51CEA395F1C20DB /* Pods */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - usesTabs = 0; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* IosModalExample.app */, - 00E356EE1AD99517003FC87E /* IosModalExampleTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - BBD78D7AC51CEA395F1C20DB /* Pods */ = { - isa = PBXGroup; - children = ( - 3B4392A12AC88292D35C810B /* Pods-IosModalExample.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-IosModalExample.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-IosModalExample-IosModalExampleTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-IosModalExample-IosModalExampleTests.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* IosModalExampleTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "IosModalExampleTests" */; - buildPhases = ( - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = IosModalExampleTests; - productName = IosModalExampleTests; - productReference = 00E356EE1AD99517003FC87E /* IosModalExampleTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* IosModalExample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "IosModalExample" */; - buildPhases = ( - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, - FD10A7F022414F080027D42C /* Start Packager */, - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = IosModalExample; - productName = IosModalExample; - productReference = 13B07F961A680F5B00A75B9A /* IosModalExample.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1210; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - 13B07F861A680F5B00A75B9A = { - LastSwiftMigration = 1120; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "IosModalExample" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* IosModalExample */, - 00E356ED1AD99517003FC87E /* IosModalExampleTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* 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"; - }; - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample/Pods-IosModalExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample/Pods-IosModalExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-IosModalExample/Pods-IosModalExample-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - A55EABD7B0C7F3A422A6CC61 /* [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-IosModalExample-IosModalExampleTests-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; - }; - C38B50BA6285516D6DCD4F65 /* [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-IosModalExample-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; - }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample/Pods-IosModalExample-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample/Pods-IosModalExample-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-IosModalExample/Pods-IosModalExample-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-IosModalExample-IosModalExampleTests/Pods-IosModalExample-IosModalExampleTests-resources.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; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* IosModalExampleTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* IosModalExample */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-IosModalExample-IosModalExampleTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = IosModalExampleTests/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)/IosModalExample.app/IosModalExample"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-IosModalExample-IosModalExampleTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = IosModalExampleTests/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)/IosModalExample.app/IosModalExample"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-IosModalExample.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZC7A6XV8GR; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = IosModalExample/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = IosModalExample; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-IosModalExample.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZC7A6XV8GR; - INFOPLIST_FILE = IosModalExample/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = IosModalExample; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - 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; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - ); - 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - 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; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - ); - 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 "IosModalExampleTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "IosModalExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "IosModalExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/example/ios/IosModalExample.xcodeproj/xcshareddata/xcschemes/IosModalExample.xcscheme b/example/ios/IosModalExample.xcodeproj/xcshareddata/xcschemes/IosModalExample.xcscheme deleted file mode 100644 index be380ed0..00000000 --- a/example/ios/IosModalExample.xcodeproj/xcshareddata/xcschemes/IosModalExample.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/example/ios/IosModalExample.xcworkspace/contents.xcworkspacedata b/example/ios/IosModalExample.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 543366eb..00000000 --- a/example/ios/IosModalExample.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/example/ios/IosModalExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/IosModalExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/example/ios/IosModalExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/example/ios/IosModalExample/AppDelegate.h b/example/ios/IosModalExample/AppDelegate.h deleted file mode 100644 index ef1de86a..00000000 --- a/example/ios/IosModalExample/AppDelegate.h +++ /dev/null @@ -1,8 +0,0 @@ -#import -#import - -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; - -@end diff --git a/example/ios/IosModalExample/AppDelegate.mm b/example/ios/IosModalExample/AppDelegate.mm deleted file mode 100644 index 28cb04bd..00000000 --- a/example/ios/IosModalExample/AppDelegate.mm +++ /dev/null @@ -1,133 +0,0 @@ -#import "AppDelegate.h" - -#import -#import -#import - -#import - -#if RCT_NEW_ARCH_ENABLED -#import -#import -#import -#import -#import -#import - -#import - -static NSString *const kRNConcurrentRoot = @"concurrentRoot"; - -@interface AppDelegate () { - RCTTurboModuleManager *_turboModuleManager; - RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; - std::shared_ptr _reactNativeConfig; - facebook::react::ContextContainer::Shared _contextContainer; -} -@end -#endif - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - RCTAppSetupPrepareApp(application); - - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - -#if RCT_NEW_ARCH_ENABLED - _contextContainer = std::make_shared(); - _reactNativeConfig = std::make_shared(); - _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); - _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; - bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; -#endif - - NSDictionary *initProps = [self prepareInitialProps]; - UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"IosModalExample", initProps); - - if (@available(iOS 13.0, *)) { - rootView.backgroundColor = [UIColor systemBackgroundColor]; - } else { - rootView.backgroundColor = [UIColor whiteColor]; - } - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -/// 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` feture is enabled. Otherwise, it returns `false`. -- (BOOL)concurrentRootEnabled -{ - // Switch this bool to turn on and off the concurrent root - return true; -} - -- (NSDictionary *)prepareInitialProps -{ - NSMutableDictionary *initProps = [NSMutableDictionary new]; - -#ifdef RCT_NEW_ARCH_ENABLED - initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); -#endif - - return initProps; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -#if RCT_NEW_ARCH_ENABLED - -#pragma mark - RCTCxxBridgeDelegate - -- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge -{ - _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge - delegate:self - jsInvoker:bridge.jsCallInvoker]; - return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); -} - -#pragma mark RCTTurboModuleManagerDelegate - -- (Class)getModuleClassFromName:(const char *)name -{ - return RCTCoreModulesClassProvider(name); -} - -- (std::shared_ptr)getTurboModule:(const std::string &)name - jsInvoker:(std::shared_ptr)jsInvoker -{ - return nullptr; -} - -- (std::shared_ptr)getTurboModule:(const std::string &)name - initParams: - (const facebook::react::ObjCTurboModule::InitParams &)params -{ - return nullptr; -} - -- (id)getModuleInstanceFromClass:(Class)moduleClass -{ - return RCTAppSetupDefaultModuleFromClass(moduleClass); -} - -#endif - -@end diff --git a/example/ios/IosModalExample/Images.xcassets/AppIcon.appiconset/Contents.json b/example/ios/IosModalExample/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 81213230..00000000 --- a/example/ios/IosModalExample/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/example/ios/IosModalExample/Images.xcassets/Contents.json b/example/ios/IosModalExample/Images.xcassets/Contents.json deleted file mode 100644 index 2d92bd53..00000000 --- a/example/ios/IosModalExample/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/example/ios/IosModalExample/Info.plist b/example/ios/IosModalExample/Info.plist deleted file mode 100644 index 8c657821..00000000 --- a/example/ios/IosModalExample/Info.plist +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - IosModalExample - 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/example/ios/IosModalExample/LaunchScreen.storyboard b/example/ios/IosModalExample/LaunchScreen.storyboard deleted file mode 100644 index 1d41bb2a..00000000 --- a/example/ios/IosModalExample/LaunchScreen.storyboard +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/example/ios/IosModalExample/main.m b/example/ios/IosModalExample/main.m deleted file mode 100644 index d645c724..00000000 --- a/example/ios/IosModalExample/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/example/ios/IosModalExampleTests/Info.plist b/example/ios/IosModalExampleTests/Info.plist deleted file mode 100644 index ba72822e..00000000 --- a/example/ios/IosModalExampleTests/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/example/ios/IosModalExampleTests/IosModalExampleTests.m b/example/ios/IosModalExampleTests/IosModalExampleTests.m deleted file mode 100644 index 4760d721..00000000 --- a/example/ios/IosModalExampleTests/IosModalExampleTests.m +++ /dev/null @@ -1,66 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface IosModalExampleTests : XCTestCase - -@end - -@implementation IosModalExampleTests - -- (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/example/ios/Podfile b/example/ios/Podfile deleted file mode 100644 index 240f2f21..00000000 --- a/example/ios/Podfile +++ /dev/null @@ -1,45 +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, '12.4' -install! 'cocoapods', :deterministic_uuids => false - -target 'IosModalExample' do - 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 => FlipperConfiguration.enabled, - - # An absolute path to your application root. - :app_path => "#{Pod::Config.instance.installation_root}/.." - ) - - target 'IosModalExampleTests' do - inherit! :complete - # Pods for testing - 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/example/ios/Podfile.lock b/example/ios/Podfile.lock deleted file mode 100644 index d968f66f..00000000 --- a/example/ios/Podfile.lock +++ /dev/null @@ -1,486 +0,0 @@ -PODS: - - boost (1.76.0) - - DoubleConversion (1.1.6) - - FBLazyVector (0.70.4) - - FBReactNativeSpec (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.4) - - RCTTypeSafety (= 0.70.4) - - React-Core (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - fmt (6.2.1) - - glog (0.3.5) - - hermes-engine (0.70.4) - - libevent (2.1.12) - - RCT-Folly (2021.07.22.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - RCT-Folly/Default (= 2021.07.22.00) - - RCT-Folly/Default (2021.07.22.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - RCT-Folly/Futures (2021.07.22.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - libevent - - RCTRequired (0.70.4) - - RCTTypeSafety (0.70.4): - - FBLazyVector (= 0.70.4) - - RCTRequired (= 0.70.4) - - React-Core (= 0.70.4) - - React (0.70.4): - - React-Core (= 0.70.4) - - React-Core/DevSupport (= 0.70.4) - - React-Core/RCTWebSocket (= 0.70.4) - - React-RCTActionSheet (= 0.70.4) - - React-RCTAnimation (= 0.70.4) - - React-RCTBlob (= 0.70.4) - - React-RCTImage (= 0.70.4) - - React-RCTLinking (= 0.70.4) - - React-RCTNetwork (= 0.70.4) - - React-RCTSettings (= 0.70.4) - - React-RCTText (= 0.70.4) - - React-RCTVibration (= 0.70.4) - - React-bridging (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.4) - - React-callinvoker (0.70.4) - - React-Codegen (0.70.4): - - FBReactNativeSpec (= 0.70.4) - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.4) - - RCTTypeSafety (= 0.70.4) - - React-Core (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-Core (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/CoreModulesHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/Default (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/DevSupport (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.4) - - React-Core/RCTWebSocket (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-jsinspector (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTActionSheetHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTAnimationHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTBlobHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTImageHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTLinkingHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTNetworkHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTSettingsHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTTextHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTVibrationHeaders (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-Core/RCTWebSocket (0.70.4): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-perflogger (= 0.70.4) - - Yoga - - React-CoreModules (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/CoreModulesHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - React-RCTImage (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-cxxreact (0.70.4): - - boost (= 1.76.0) - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsinspector (= 0.70.4) - - React-logger (= 0.70.4) - - React-perflogger (= 0.70.4) - - React-runtimeexecutor (= 0.70.4) - - React-hermes (0.70.4): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-jsiexecutor (= 0.70.4) - - React-jsinspector (= 0.70.4) - - React-perflogger (= 0.70.4) - - React-jsi (0.70.4): - - boost (= 1.76.0) - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.4) - - React-jsi/Default (0.70.4): - - boost (= 1.76.0) - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.4): - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-perflogger (= 0.70.4) - - React-jsinspector (0.70.4) - - React-logger (0.70.4): - - glog - - react-native-ios-modal (2.0.0-1): - - React-Core - - react-native-safe-area-context (4.5.0): - - RCT-Folly - - RCTRequired - - RCTTypeSafety - - React-Core - - ReactCommon/turbomodule/core - - React-perflogger (0.70.4) - - React-RCTActionSheet (0.70.4): - - React-Core/RCTActionSheetHeaders (= 0.70.4) - - React-RCTAnimation (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTAnimationHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTBlob (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.4) - - React-Core/RCTBlobHeaders (= 0.70.4) - - React-Core/RCTWebSocket (= 0.70.4) - - React-jsi (= 0.70.4) - - React-RCTNetwork (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTImage (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTImageHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - React-RCTNetwork (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTLinking (0.70.4): - - React-Codegen (= 0.70.4) - - React-Core/RCTLinkingHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTNetwork (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTNetworkHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTSettings (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.4) - - React-Codegen (= 0.70.4) - - React-Core/RCTSettingsHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-RCTText (0.70.4): - - React-Core/RCTTextHeaders (= 0.70.4) - - React-RCTVibration (0.70.4): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.4) - - React-Core/RCTVibrationHeaders (= 0.70.4) - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (= 0.70.4) - - React-runtimeexecutor (0.70.4): - - React-jsi (= 0.70.4) - - ReactCommon/turbomodule/core (0.70.4): - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.4) - - React-callinvoker (= 0.70.4) - - React-Core (= 0.70.4) - - React-cxxreact (= 0.70.4) - - React-jsi (= 0.70.4) - - React-logger (= 0.70.4) - - React-perflogger (= 0.70.4) - - RNScreens (3.19.0): - - React-Core - - React-RCTImage - - Yoga (1.14.0) - -DEPENDENCIES: - - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - hermes-engine (from `../node_modules/react-native/sdks/hermes/hermes-engine.podspec`) - - libevent (~> 2.1.12) - - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - - React (from `../node_modules/react-native/`) - - React-bridging (from `../node_modules/react-native/ReactCommon`) - - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Codegen (from `build/generated/ios`) - - React-Core (from `../node_modules/react-native/`) - - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - - react-native-ios-modal (from `../..`) - - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - RNScreens (from `../node_modules/react-native-screens`) - - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) - -SPEC REPOS: - trunk: - - fmt - - libevent - -EXTERNAL SOURCES: - boost: - :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" - DoubleConversion: - :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" - FBLazyVector: - :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" - glog: - :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" - hermes-engine: - :podspec: "../node_modules/react-native/sdks/hermes/hermes-engine.podspec" - RCT-Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" - RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" - RCTTypeSafety: - :path: "../node_modules/react-native/Libraries/TypeSafety" - React: - :path: "../node_modules/react-native/" - React-bridging: - :path: "../node_modules/react-native/ReactCommon" - React-callinvoker: - :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Codegen: - :path: build/generated/ios - React-Core: - :path: "../node_modules/react-native/" - React-CoreModules: - :path: "../node_modules/react-native/React/CoreModules" - React-cxxreact: - :path: "../node_modules/react-native/ReactCommon/cxxreact" - React-hermes: - :path: "../node_modules/react-native/ReactCommon/hermes" - React-jsi: - :path: "../node_modules/react-native/ReactCommon/jsi" - React-jsiexecutor: - :path: "../node_modules/react-native/ReactCommon/jsiexecutor" - React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" - React-logger: - :path: "../node_modules/react-native/ReactCommon/logger" - react-native-ios-modal: - :path: "../.." - react-native-safe-area-context: - :path: "../node_modules/react-native-safe-area-context" - React-perflogger: - :path: "../node_modules/react-native/ReactCommon/reactperflogger" - React-RCTActionSheet: - :path: "../node_modules/react-native/Libraries/ActionSheetIOS" - React-RCTAnimation: - :path: "../node_modules/react-native/Libraries/NativeAnimation" - React-RCTBlob: - :path: "../node_modules/react-native/Libraries/Blob" - React-RCTImage: - :path: "../node_modules/react-native/Libraries/Image" - React-RCTLinking: - :path: "../node_modules/react-native/Libraries/LinkingIOS" - React-RCTNetwork: - :path: "../node_modules/react-native/Libraries/Network" - React-RCTSettings: - :path: "../node_modules/react-native/Libraries/Settings" - React-RCTText: - :path: "../node_modules/react-native/Libraries/Text" - React-RCTVibration: - :path: "../node_modules/react-native/Libraries/Vibration" - React-runtimeexecutor: - :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" - ReactCommon: - :path: "../node_modules/react-native/ReactCommon" - RNScreens: - :path: "../node_modules/react-native-screens" - Yoga: - :path: "../node_modules/react-native/ReactCommon/yoga" - -SPEC CHECKSUMS: - boost: a7c83b31436843459a1961bfd74b96033dc77234 - DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 8a28262f61fbe40c04ce8677b8d835d97c18f1b3 - FBReactNativeSpec: b475991eb2d8da6a4ec32d09a8df31b0247fa87d - fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: 3623325e0d0676a45fbc544d72c57dd79fce7446 - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: 49a2c4d4215580d8b24ed538ae01b6de20b43a76 - RCTTypeSafety: 55d538399fe8b51e5cd862e2ec2f9b135b07e783 - React: 413fd7d791365c2c5742b60493d3ab450ca1a210 - React-bridging: 8e577e404677d57daa0310db63e6a27328a57207 - React-callinvoker: d0ae2f0ea66bcf29a3e42a895428d2f01473d2ea - React-Codegen: 273200ed3b02d35fd1755aebe0eb3319b037d950 - React-Core: f42a10403076c1114f8c50f063ddafc9eea92fff - React-CoreModules: 1ed78c63dad96f40b123d4d4ca455e09ccd8aaed - React-cxxreact: 7d30af80adb5fe6a97646a06540c19e61736aa15 - React-hermes: 185ce251487bcb812c34ce33b1ab6412419b43a3 - React-jsi: 9b2b4ac1642b72bffcd74550f0caa0926b3f8a4d - React-jsiexecutor: 4a893fc8f683b91befcaf56c44ad8be4506b6828 - React-jsinspector: 1d5a9e84e419a57cabc23249aec3d837d1b03a80 - React-logger: f8071ad48248781d5afdb8a07f778758529d3019 - react-native-ios-modal: 15476ab2f25b25fdd9918a6c162949dbbaa5b483 - react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc - React-perflogger: 5e41b01b35d97cc1b0ea177181eb33b5c77623b6 - React-RCTActionSheet: 48949f30b24200c82f3dd27847513be34e06a3ae - React-RCTAnimation: 96af42c97966fcd53ed9c31bee6f969c770312b6 - React-RCTBlob: 22aa326a2b34eea3299a2274ce93e102f8383ed9 - React-RCTImage: 1df0dbdb53609778f68830ccdd07ff3b40812837 - React-RCTLinking: eef4732d9102a10174115a727588d199711e376c - React-RCTNetwork: 18716f00568ec203df2192d35f4a74d1d9b00675 - React-RCTSettings: 1dc8a5e5272cea1bad2f8d9b4e6bac91b846749b - React-RCTText: 17652c6294903677fb3d754b5955ac293347782c - React-RCTVibration: 0e247407238d3bd6b29d922d7b5de0404359431b - React-runtimeexecutor: 5407e26b5aaafa9b01a08e33653255f8247e7c31 - ReactCommon: abf3605a56f98b91671d0d1327addc4ffb87af77 - RNScreens: ea4cd3a853063cda19a4e3c28d2e52180c80f4eb - Yoga: 1f02ef4ce4469aefc36167138441b27d988282b1 - -PODFILE CHECKSUM: 743b98a2f4844604f7964fdef75d215b5b160332 - -COCOAPODS: 1.12.0 diff --git a/example/metro.config.js b/example/metro.config.js deleted file mode 100644 index b5c0064b..00000000 --- a/example/metro.config.js +++ /dev/null @@ -1,40 +0,0 @@ -const path = require('path'); -const escape = require('escape-string-regexp'); -const exclusionList = require('metro-config/src/defaults/exclusionList'); -const pak = require('../package.json'); - -const root = path.resolve(__dirname, '..'); - -const modules = Object.keys({ - ...pak.peerDependencies, -}); - -module.exports = { - projectRoot: __dirname, - watchFolders: [root], - - // We need to make sure that only one version is loaded for peerDependencies - // So we block them at the root, and alias them to the versions in example's node_modules - resolver: { - blacklistRE: exclusionList( - modules.map( - (m) => - new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`) - ) - ), - - extraNodeModules: modules.reduce((acc, name) => { - acc[name] = path.join(__dirname, 'node_modules', name); - return acc; - }, {}), - }, - - transformer: { - getTransformOptions: async () => ({ - transform: { - experimentalImportSupport: false, - inlineRequires: true, - }, - }), - }, -}; diff --git a/example/package.json b/example/package.json deleted file mode 100644 index 5c441e98..00000000 --- a/example/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "IosModalExample", - "version": "0.0.1", - "private": true, - "scripts": { - "android": "react-native run-android", - "ios": "react-native run-ios", - "start": "react-native start", - "pods": "pod-install --quiet" - }, - "dependencies": { - "@react-navigation/bottom-tabs": "^6.5.3", - "@react-navigation/native": "^6.1.2", - "@react-navigation/native-stack": "^6.9.8", - "react": "18.1.0", - "react-native": "0.70.4", - "react-native-safe-area-context": "^4.5.0", - "react-native-screens": "^3.19.0" - }, - "devDependencies": { - "@babel/core": "^7.12.9", - "@babel/runtime": "^7.12.5", - "babel-plugin-module-resolver": "^4.1.0", - "metro-react-native-babel-preset": "0.72.3" - } -} diff --git a/example/react-native.config.js b/example/react-native.config.js deleted file mode 100644 index 63c70c5f..00000000 --- a/example/react-native.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const path = require('path'); - -module.exports = { - dependencies: { - 'react-native-ios-modal': { - root: path.join(__dirname, '..'), - }, - }, -}; diff --git a/example/src/App.tsx b/example/src/App.tsx deleted file mode 100644 index d0f9b92a..00000000 --- a/example/src/App.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import * as React from 'react'; - -import { NavigationContainer } from '@react-navigation/native'; -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; - -import { HomeScreen } from './screens/HomeScreen'; -import { Test01Screen } from './screens/Test01Screen'; - -import { SHARED_ENV } from './constants/SharedEnv'; - -const shouldEnableTabs = - SHARED_ENV.enableReactNavigation && - SHARED_ENV.enableTabNavigation; - -function Tab1StackScreen() { - if (shouldEnableTabs) { - const Tab1Stack = createNativeStackNavigator(); - - return ( - - - - - ); - } else { - return null; - } -} - -export default function App() { - if (shouldEnableTabs) { - const TabNavigator = createBottomTabNavigator(); - - return ( - - - - - - - ); - } else if (SHARED_ENV.enableReactNavigation) { - const Stack = createNativeStackNavigator(); - - return ( - - - - - - - ); - } - - return null; -} diff --git a/example/src/components/Card/CardBody.tsx b/example/src/components/Card/CardBody.tsx deleted file mode 100644 index 8552ce74..00000000 --- a/example/src/components/Card/CardBody.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, ViewStyle } from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -export const CardBody: React.FC<{ - style?: ViewStyle; -}> = (props) => { - return ( - - {props.children} - - ); -}; - -const styles = StyleSheet.create({ - cardBodyContainer: { - paddingHorizontal: 12, - paddingVertical: 15, - marginHorizontal: 10, - marginVertical: 10, - backgroundColor: Colors.PURPLE[50], - borderRadius: 10, - }, -}); diff --git a/example/src/components/Card/CardButton.tsx b/example/src/components/Card/CardButton.tsx deleted file mode 100644 index 7b1086e7..00000000 --- a/example/src/components/Card/CardButton.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import * as React from 'react'; -import { - StyleSheet, - Text, - TouchableOpacity, - GestureResponderEvent, - ViewStyle, -} from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -/** - * ``` - * ┌─────────────────────────────┐ - * │ Title │ - * │ Subtitle │ - * └─────────────────────────────┘ - * ``` - */ -export function CardButton(props: { - title: string; - subtitle?: string; - onPress: (event: GestureResponderEvent) => void; - style?: ViewStyle; -}) { - // prettier-ignore - const hasSubtitle = ( - props.subtitle != null || - props.subtitle === '' - ); - - const buttonContainer: ViewStyle = { - alignItems: hasSubtitle ? 'flex-start' : 'center', - }; - - return ( - - - - {/* Button Title */ props.title} - - {hasSubtitle && ( - - {/* Button Subtitle */ props.subtitle} - - )} - - - ); -} - -const styles = StyleSheet.create({ - cardButtonContainer: { - paddingHorizontal: 12, - paddingVertical: 8, - backgroundColor: Colors.PURPLE.A200, - borderRadius: 10, - marginTop: 12, - }, - cardButtonTitleText: { - color: 'white', - fontSize: 15, - fontWeight: '700', - }, - cardButtonSubtitleText: { - color: 'white', - fontWeight: '400', - }, -}); diff --git a/example/src/components/Card/CardLogDisplay/CardLogDisplay.tsx b/example/src/components/Card/CardLogDisplay/CardLogDisplay.tsx deleted file mode 100644 index 9f9a3040..00000000 --- a/example/src/components/Card/CardLogDisplay/CardLogDisplay.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, Text, ScrollView, ViewStyle } from 'react-native'; - -import type { - CardLogDisplayItem, - CardLogDisplayProps, - CardLogDisplayHandle, - InternalListMode, -} from './CardLogDisplayTypes'; - -import { CardLogDisplayListRow } from './CardLogDisplayListRow'; - -import * as HelpersInternal from './CardLogDisplayHelpers'; - -export const CardLogDisplay = React.forwardRef< - CardLogDisplayHandle, - CardLogDisplayProps ->((props, ref) => { - const [logList, setLogList] = React.useState( - props.initialLogItems - ); - - // callable functions... - React.useImperativeHandle(ref, () => ({ - log: (title) => { - setLogList((prevItems) => [ - ...prevItems, - { - title, - timestamp: Date.now(), - index: prevItems.length, - }, - ]); - }, - clearLogs: () => { - setLogList([]); - }, - setLogs: (nextLogs) => { - setLogList(nextLogs); - }, - })); - - const listMode: InternalListMode = - logList.length === 0 - ? /* true */ 'EMPTY' - : /* false */ props.listDisplayMode; - - // prettier-ignore - const listMaxItems = - props.listDisplayMode === 'FIXED' ? (props.listMaxItemsToShow ?? 10) : - props.listDisplayMode === 'SCROLL_ENABLED' ? props.listMaxItems : - /* default */ 20; - - const logListTruncated = logList - .slice() // make a copy - .reverse() - .slice(-listMaxItems); - - switch (listMode) { - case 'EMPTY': - const listEmptyMessage = props.listEmptyMessage ?? 'No Items To Show...'; - return ( - - {listEmptyMessage} - - ); - - case 'FIXED': - // guard - if (!HelpersInternal.isDisplayListModePropFixed(props)) { - break; - } - - return ( - - {logListTruncated.map((item) => ( - - ))} - - ); - - case 'SCROLL_ENABLED': /* fallthrough */ - case 'SCROLL_FIXED': - const isScrollEnabled = listMode === 'SCROLL_ENABLED'; - - // guard - if (!HelpersInternal.isDisplayListModePropScroll(props)) { - break; - } - - const scrollViewHeight = props.listMinHeight ?? 150; - - const logRootContainerStyle: ViewStyle = { - height: scrollViewHeight, - }; - - return ( - - {logListTruncated.map((item) => ( - - ))} - - ); - } - - return null; -}); - -// Section - Styles -// ---------------- - -const styles = StyleSheet.create({ - logRootContainer: { - marginTop: 15, - height: 150, - backgroundColor: 'rgba(0,0,0,0.04)', - borderRadius: 10, - paddingHorizontal: 12, - paddingVertical: 7, - }, - logContainerEmpty: { - alignItems: 'center', - justifyContent: 'center', - }, - logEmptyText: { - fontWeight: '600', - fontSize: 16, - color: 'rgba(0,0,0,0.35)', - }, -}); diff --git a/example/src/components/Card/CardLogDisplay/CardLogDisplayHelpers.ts b/example/src/components/Card/CardLogDisplay/CardLogDisplayHelpers.ts deleted file mode 100644 index aaf4b5dd..00000000 --- a/example/src/components/Card/CardLogDisplay/CardLogDisplayHelpers.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { - CardLogDisplayProps, - DisplayListModePropScroll, - DisplayListModePropFixed, -} from './CardLogDisplayTypes'; - -export function isDisplayListModePropScroll( - props: CardLogDisplayProps -): props is CardLogDisplayProps & DisplayListModePropScroll { - return ( - /* 1 */ props.listDisplayMode === 'SCROLL_ENABLED' || - /* 2 */ props.listDisplayMode === 'SCROLL_FIXED' - ); -} - -export function isDisplayListModePropFixed( - props: CardLogDisplayProps -): props is CardLogDisplayProps & DisplayListModePropFixed { - return props.listDisplayMode === 'FIXED'; -} diff --git a/example/src/components/Card/CardLogDisplay/CardLogDisplayListRow.tsx b/example/src/components/Card/CardLogDisplay/CardLogDisplayListRow.tsx deleted file mode 100644 index abbcd577..00000000 --- a/example/src/components/Card/CardLogDisplay/CardLogDisplayListRow.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import * as React from 'react'; -import { View, Text, StyleSheet } from 'react-native'; - -import type { CardLogDisplayItem } from './CardLogDisplayTypes'; - -import * as Helpers from '../../../functions/Helpers'; - -export function CardLogDisplayListRow(props: { - item: CardLogDisplayItem; - shouldShowTimestamp: boolean; -}) { - const { item } = props; - const date = new Date(item.timestamp); - - const h = Helpers.pad(date.getHours()); - const m = Helpers.pad(date.getMinutes()); - const s = Helpers.pad(date.getSeconds()); - const ms = Helpers.pad(date.getMilliseconds(), 3); - - const timeString = `${h}:${m}:${s}.${ms}`; - - return ( - - - {/* Col - Index */} - {`${Helpers.pad(item.index, 3)}`} - - {props.shouldShowTimestamp && ( - - {/* Col - Timestamp */} - {timeString} - - )} - - {/* Col - Title */} - {item.title} - - - ); -} - -// Section - Styles -// ---------------- - -const styles = StyleSheet.create({ - logListItemContainer: { - flexDirection: 'row', - }, - logItemIndexText: { - fontVariant: ['tabular-nums'], - fontWeight: 'bold', - opacity: 0.4, - }, - logItemTimestampText: { - fontVariant: ['tabular-nums'], - fontWeight: '700', - marginLeft: 10, - opacity: 0.4, - textDecorationLine: 'underline', - textDecorationColor: 'rgba(0,0,0,0.4)', - }, - logItemTypeText: { - marginLeft: 10, - opacity: 0.9, - }, -}); diff --git a/example/src/components/Card/CardLogDisplay/CardLogDisplayTypes.ts b/example/src/components/Card/CardLogDisplay/CardLogDisplayTypes.ts deleted file mode 100644 index 8a8c8736..00000000 --- a/example/src/components/Card/CardLogDisplay/CardLogDisplayTypes.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { ViewStyle } from 'react-native'; - -// Section - Types - Internal -// -------------------------- - -export type DisplayListModePropFixed = { - listDisplayMode: 'FIXED'; - listMaxItemsToShow?: number; -}; - -export type DisplayListModePropScroll = { - listDisplayMode: 'SCROLL_ENABLED' | 'SCROLL_FIXED'; - listMaxItems?: number; - listMinHeight?: number; - scrollViewStyle?: ViewStyle; - contentContainerStyle?: ViewStyle; -}; - -export type DisplayListModeProp = - | DisplayListModePropFixed - | DisplayListModePropScroll; - -export type CardLogDisplayBaseProps = { - style?: ViewStyle; - initialLogItems?: Array; - listEmptyMessage?: string; - shouldShowTimestamp?: boolean; -}; - -export type CardLogDisplayProps = CardLogDisplayBaseProps & DisplayListModeProp; - -export type InternalListMode = CardLogDisplayListMode | 'EMPTY'; - -// Section - Types - Public -// ------------------------ - -export type CardLogDisplayItem = { - timestamp: number; - title: string; - index: number; -}; - -export type CardLogDisplayListMode = DisplayListModeProp['listDisplayMode']; - -export type CardLogDisplayHandle = { - log: (title: string) => void; - clearLogs: () => void; - setLogs: (nextLogs: CardLogDisplayItem[]) => void; -}; diff --git a/example/src/components/Card/CardLogDisplay/index.ts b/example/src/components/Card/CardLogDisplay/index.ts deleted file mode 100644 index edd1ad7f..00000000 --- a/example/src/components/Card/CardLogDisplay/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './CardLogDisplay'; - -export { - CardLogDisplayItem, - CardLogDisplayListMode, - CardLogDisplayHandle, -} from './CardLogDisplayTypes'; diff --git a/example/src/components/Card/CardRowColorPicker.tsx b/example/src/components/Card/CardRowColorPicker.tsx deleted file mode 100644 index 4e3c1e83..00000000 --- a/example/src/components/Card/CardRowColorPicker.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import * as React from 'react'; -import { - StyleSheet, - View, - Text, - TouchableOpacity, - FlatList, - ListRenderItem, -} from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -type CardRowColorPickerState = { - selectedItem?: string; -}; - -type CardRowColorPickerProps = { - initialSelectedColor?: string; - colors?: string; - onSelectItem?: (color?: string) => void; -}; - -const PALLETES = [ - Colors.PINK, - Colors.RED, - Colors.ORANGE, - Colors.AMBER, - Colors.YELLOW, - Colors.LIGHT_GREEN, - Colors.GREEN, - Colors.BLUE, - Colors.INDIGO, - Colors.VIOLET, - Colors.PURPLE, - Colors.BLUE_GREY, - Colors.GREY, -]; - -const BASE_COLORS = PALLETES.reduce( - (acc: string[][], curr) => { - if ('A700' in curr) { - acc[0].push(curr.A700); - } - - acc[1].push(curr['900']); - acc[2].push(curr['600']); - acc[3].push(curr['300']); - - return acc; - }, - [[], [], [], []] -); - -const DEFAULT_COLORS = [ - 'black', - 'white', - ...BASE_COLORS.flat(), -]; - -export class CardRowColorPicker extends React.Component< - CardRowColorPickerProps, - CardRowColorPickerState -> { - constructor(props) { - super(props); - - this.state = { - selectedItem: undefined, - }; - } - - _listRenderItem: ListRenderItem = ({ item }) => { - const props = this.props; - const state = this.state; - - const isSelected = item === state.selectedItem; - - return ( - { - // clear if already selected - const selectedItem = isSelected - ? undefined - : item; - - this.setState({ selectedItem }); - props.onSelectItem?.(selectedItem); - }} - /> - ); - }; - - render() { - const state = this.state; - - const hasSelection = state.selectedItem != null; - - return ( - - - - {'Selected Color:'} - - {hasSelection ? ( - - ) : ( - - {'N/A'} - - )} - - item} - horizontal={true} - /> - - ); - } -} - -const styles = StyleSheet.create({ - rootContainer: { - marginTop: 12, - }, - selectedColorContainer: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - minHeight: 25, - }, - selectedColorLabel: { - fontSize: 16, - }, - selectedColorValue: { - fontSize: 16, - color: 'rgba(0,0,0,0.3)', - }, - list: { - marginTop: 10, - backgroundColor: Colors.INDIGO[100], - borderRadius: 10, - paddingHorizontal: 10, - paddingVertical: 10, - }, - listItem: { - height: 25, - minWidth: 25, - backgroundColor: 'white', - borderRadius: 25 / 2, - marginRight: 10, - }, - listItemSelected: { - width: 50, - }, - selectedColorValueContainer: { - borderWidth: 3, - borderColor: 'rgba(255,255,255,0.75)', - }, -}); diff --git a/example/src/components/Card/CardRowLabelDisplay.tsx b/example/src/components/Card/CardRowLabelDisplay.tsx deleted file mode 100644 index 0b77d15a..00000000 --- a/example/src/components/Card/CardRowLabelDisplay.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, Text } from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -/** - * ``` - * ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ - * Label Value │ - * └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ - * ``` - */ -export function CardRowLabelDisplay(props: { - label?: string; - value?: string | number; -}) { - return ( - - - {props.label ?? 'Current Value'} - - - {props.value ?? 'N/A'} - - - ); -} - -const styles = StyleSheet.create({ - cardRowLabelDisplayContainer: { - flexDirection: 'row', - marginTop: 12, - paddingHorizontal: 12, - paddingVertical: 5, - backgroundColor: Colors.INDIGO[100], - borderRadius: 10, - alignItems: 'center', - justifyContent: 'space-between', - }, - cardRowLabelDisplayLabelText: { - fontSize: 16, - fontWeight: '500', - color: Colors.PURPLE[1100], - opacity: 0.75, - }, - cardRowLabelDisplayValueText: { - fontSize: 16, - fontWeight: '500', - color: Colors.PURPLE[1100], - opacity: 0.4, - }, -}); diff --git a/example/src/components/Card/CardRowStepper.tsx b/example/src/components/Card/CardRowStepper.tsx deleted file mode 100644 index 68db5d3b..00000000 --- a/example/src/components/Card/CardRowStepper.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import * as React from 'react'; -import { - StyleSheet, - View, - Text, - TouchableOpacity, -} from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -export function CardRowStepper(props: { - title: string; - subtitle?: string; - value: number; - stepperAmount: number; - onValueChange: (value: number) => void; -}) { - return ( - - - - {props.title ?? 'Title'} - - - {props.subtitle ?? - `Current value: ${props.value ?? 0}`} - - - - { - props.onValueChange( - props.value - props.stepperAmount - ); - }} - > - - {'–'} - - - { - props.onValueChange( - props.value + props.stepperAmount - ); - }} - > - - {'+'} - - - - - ); -} - -const styles = StyleSheet.create({ - cardRowStepperContainer: { - flexDirection: 'row', - alignItems: 'center', - marginTop: 12, - }, - cardRowStepperLabelContainer: { - flex: 1, - }, - cardRowStepperLabelText: { - fontSize: 16, - fontWeight: '500', - color: Colors.PURPLE[1200], - }, - cardRowStepperSubtitleText: { - flex: 1, - fontSize: 16, - opacity: 0.5, - color: Colors.PURPLE[1100], - }, - cardRowStepperButtonsContainer: { - flexDirection: 'row', - overflow: 'hidden', - borderRadius: 10, - }, - cardRowStepperButton: { - padding: 10, - backgroundColor: Colors.PURPLE.A200, - width: 45, - alignItems: 'center', - justifyContent: 'center', - }, - cardRowStepperButtonLeft: { - marginRight: 0.5, - }, - cardRowStepperButtonRight: { - marginLeft: 0.5, - }, - cardRowStepperButtonLabel: { - fontWeight: '500', - color: 'white', - opacity: 0.9, - fontSize: 18, - }, -}); diff --git a/example/src/components/Card/CardRowSwitch.tsx b/example/src/components/Card/CardRowSwitch.tsx deleted file mode 100644 index 2eba17f5..00000000 --- a/example/src/components/Card/CardRowSwitch.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import * as React from 'react'; -import { - StyleSheet, - View, - Text, - Switch, -} from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -/** - * ``` - * ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ - * Title ┌──┬─┐ - * │ Subtitle └──┴─┘ │ - * ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ - * ``` - */ -export function CardRowSwitch(props: { - title: string; - subtitle?: string; - value: boolean; - onValueChange: (value: boolean) => void; -}) { - return ( - - - - {props.title ?? 'title'} - - - {props.subtitle ?? 'Toggle the value'} - - - - - ); -} - -const styles = StyleSheet.create({ - cardRowSwitchContainer: { - flexDirection: 'row', - alignItems: 'center', - marginTop: 12, - }, - cardRowSwitchLabelContainer: { - flex: 1, - marginRight: 10, - }, - cardRowSwitchLabelText: { - fontSize: 16, - fontWeight: '500', - color: Colors.PURPLE[1200], - }, - cardRowSwitchSubtitleText: { - fontSize: 16, - opacity: 0.5, - color: Colors.PURPLE[1100], - }, -}); diff --git a/example/src/components/Card/CardRowTextInput.tsx b/example/src/components/Card/CardRowTextInput.tsx deleted file mode 100644 index 843777c4..00000000 --- a/example/src/components/Card/CardRowTextInput.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, TextInput } from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -export class CardRowTextInput extends React.PureComponent<{ - placeholder?: string; -}> { - state = { - textInput: '', - }; - - getText = () => { - return this.state.textInput; - }; - - _handleOnChangeText = (text: string) => { - this.setState({ textInput: text }); - }; - - render() { - const props = this.props; - - return ( - - ); - } -} - -const styles = StyleSheet.create({ - cardRowTextInput: { - backgroundColor: Colors.INDIGO[100], - fontSize: 16, - color: Colors.INDIGO[900], - paddingHorizontal: 12, - paddingVertical: 7, - borderRadius: 10, - marginTop: 12, - }, -}); diff --git a/example/src/components/Card/CardTitle.tsx b/example/src/components/Card/CardTitle.tsx deleted file mode 100644 index b855fa86..00000000 --- a/example/src/components/Card/CardTitle.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, Text } from 'react-native'; - -import * as Colors from '../../constants/Colors'; - -// prettier-ignore -/** - * ``` - * ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ - * │ .─────────────. │ - * │ Title ( Pill Title ) │ - * │ `─────────────' │ - * │ Subtitle... │ - * └─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘ - * ``` - */ -export function CardTitle(props: { - extraMarginTop?: number; - // - title?: string; - pillTitle?: string; - subtitle?: string; -}){ - - const hasTitle = (props.title != null); - - const cardPillWrapper = { - marginLeft: (hasTitle ? 10 : 0), - }; - - return ( - - - - {props.title ?? ''} - - {props.pillTitle && ( - - - - {props.pillTitle} - - - - )} - - {props.subtitle && ( - - {props.subtitle ?? 'subtitle'} - - )} - - ); -} - -const styles = StyleSheet.create({ - cardTitleContainer: { - flexDirection: 'row', - alignItems: 'center', - }, - cardTitle: { - fontSize: 18, - fontWeight: '600', - }, - cardPillWrapper: { - flex: 1, - alignItems: 'flex-start', - }, - cardPillContainer: { - backgroundColor: Colors.BLUE.A400, - paddingHorizontal: 10, - paddingVertical: 5, - borderRadius: 10, - }, - cardPillTitleText: { - color: 'white', - fontWeight: '600', - fontSize: 15, - }, - cardSubtitleText: { - marginTop: 7, - fontWeight: '300', - fontSize: 14, - color: 'rgba(0,0,0,0.5)', - }, -}); diff --git a/example/src/components/Card/CardToggleButton.tsx b/example/src/components/Card/CardToggleButton.tsx deleted file mode 100644 index ee757443..00000000 --- a/example/src/components/Card/CardToggleButton.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import * as React from 'react'; - -import { CardButton } from './CardButton'; - -export function CardToggleButton(props: { - title: string; - subtitle?: string; - value: boolean; - indicatorOn?: string; - indicatorOff?: string; - onPress: (value: boolean) => void; -}) { - const prefix = props.value - ? props.indicatorOn ?? '☀️' - : props.indicatorOff ?? '🌙'; - - return ( - { - props.onPress(!props.value); - }} - /> - ); -} diff --git a/example/src/components/Card/index.ts b/example/src/components/Card/index.ts deleted file mode 100644 index 96d4cf57..00000000 --- a/example/src/components/Card/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './CardBody'; -export * from './CardTitle'; -export * from './CardButton'; -export * from './CardRowLabelDisplay'; -export * from './CardRowSwitch'; -export * from './CardRowStepper'; -export * from './CardRowTextInput'; -export * from './CardRowColorPicker'; -export * from './CardToggleButton'; diff --git a/example/src/components/ExampleCard.tsx b/example/src/components/ExampleCard.tsx deleted file mode 100644 index 74606a3e..00000000 --- a/example/src/components/ExampleCard.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, Text, ViewStyle } from 'react-native'; - -import * as Colors from '../constants/Colors'; - -export type ColorConfig = { - headerBGColorActive: string; - headerBGColorInactive: string; - - bodyBGColorActive: string; - bodyBGColorInactive: string; - - bodyDescriptionLabelColor: string; -}; - -export type ExampleCardProps = { - index?: number; - title?: string; - subtitle?: string; - description?: string[]; - colorConfig?: ColorConfig; - - style?: ViewStyle; - extraContentContainerStyle?: ViewStyle; - children?: JSX.Element | JSX.Element[]; -}; - -const defaultColorConfig: ColorConfig = { - headerBGColorActive: Colors.PURPLE.A700, - headerBGColorInactive: Colors.BLUE.A700, - - bodyBGColorActive: Colors.PURPLE[100], - bodyBGColorInactive: Colors.BLUE[100], - - bodyDescriptionLabelColor: Colors.BLUE[1100], -}; - -export function ExampleCard(props: ExampleCardProps) { - const colorConfig = props.colorConfig ?? defaultColorConfig; - - const titleContainerStyle = { - backgroundColor: colorConfig.headerBGColorInactive, - }; - - const bodyContainerStyle = { - backgroundColor: colorConfig.bodyBGColorInactive, - }; - - const bodyDescriptionLabelTextStyle = { - color: colorConfig.bodyDescriptionLabelColor, - }; - - const descriptionMain = props.description?.[0]; - const descriptionSub = props.description?.slice(1); - - return ( - - - - {`${props.index ?? 0}. `} - - - {props.title ?? 'N/A'} - {props.subtitle && ( - {props.subtitle} - )} - - - - {descriptionMain && ( - - - {'Description: '} - - {descriptionMain} - - )} - {descriptionSub?.map((description, index) => ( - - {description} - - ))} - {React.Children.count(props.children) > 0 && ( - {props.children} - )} - - - ); -} - -const styles = StyleSheet.create({ - rootContainer: { - borderRadius: 10, - overflow: 'hidden', - }, - headerContainer: { - flexDirection: 'row', - alignItems: 'center', - paddingHorizontal: 15, - paddingVertical: 8, - }, - headerTitleContainer: { - marginLeft: 5, - }, - headerTitleText: { - flex: 1, - fontSize: 16, - fontWeight: '700', - color: 'white', - }, - headerTitleIndexText: { - fontSize: 16, - fontWeight: '800', - color: 'rgba(255,255,255,0.75)', - }, - headerSubtitleText: { - fontSize: 14, - color: 'rgba(255,255,255,0.75)', - fontWeight: '600', - }, - bodyContainer: { - paddingHorizontal: 12, - paddingTop: 7, - paddingBottom: 10, - }, - bodyDescriptionText: { - fontWeight: '300', - color: 'rgba(0,0,0,0.75)', - }, - bodyDescriptionLabelText: { - fontWeight: 'bold', - }, - bodyDescriptionSubText: { - marginTop: 10, - }, -}); diff --git a/example/src/components/ObjectPropertyDisplay.tsx b/example/src/components/ObjectPropertyDisplay.tsx deleted file mode 100644 index 5fad323c..00000000 --- a/example/src/components/ObjectPropertyDisplay.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import * as React from 'react'; -import { - StyleSheet, - View, - Text, - ViewStyle, -} from 'react-native'; - -import * as Colors from '../constants/Colors'; - -/** - * ``` - * ┌─────────────────────────────┐ - * │ Property 'Value' │ - * │ Object │ - * │ Property 'Value' │ - * │ Property 'Value' │ - * └─────────────────────────────┘ - * ``` - */ -export function ObjectPropertyDisplay< - T extends Object ->(props: { object?: T; style?: ViewStyle }) { - const hasObject = props.object != null; - - const objectKeys = ( - hasObject ? Object.keys(props.object) : [] - ) as Array; - - return hasObject ? ( - - {objectKeys.map((objKey, index) => { - const value = props.object[objKey]; - const isValueObj = - typeof value === 'object' && value !== null; - - return isValueObj ? ( - - - {`${objKey}: `} - - - - ) : ( - - - {`${objKey}: `} - - - {isValueObj - ? '...' - : `'${props.object[objKey]}'`} - - - ); - })} - - ) : ( - - - {'Nothing to show'} - - - ); -} - -const styles = StyleSheet.create({ - rootContainerBase: { - marginTop: 12, - paddingHorizontal: 12, - paddingVertical: 10, - backgroundColor: Colors.INDIGO[100], - borderRadius: 10, - }, - rootContainerWhenEmptyObject: { - alignItems: 'center', - justifyContent: 'center', - }, - rootContainerWhenHasObject: { - flexDirection: 'column', - paddingVertical: 5, - }, - propertyLabelText: { - flex: 1, - fontSize: 16, - fontWeight: '500', - color: Colors.PURPLE[1100], - opacity: 0.75, - marginRight: 10, - }, - propertyLabelObjectText: { - flex: 0, - }, - propertyValueText: { - flex: 1, - textAlign: 'right', - fontSize: 16, - fontWeight: '500', - color: Colors.PURPLE[1100], - opacity: 0.4, - }, - objectPropertyDisplay: { - marginTop: 0, - paddingHorizontal: 7, - paddingVertical: 5, - }, - propertyRowContainer: { - flexDirection: 'row', - alignItems: 'center', - }, - emptyObjectText: { - opacity: 0.75, - }, -}); diff --git a/example/src/components/Spacer.tsx b/example/src/components/Spacer.tsx deleted file mode 100644 index a70c5bbd..00000000 --- a/example/src/components/Spacer.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from 'react'; - -import { View } from 'react-native'; - -export function Spacer(props: { space?: number }) { - return ; -} - -export function SpacerLine(props: { - space?: number; - lineThickness?: number; -}) { - const spacerLineStyle = { - paddingTop: props.space ?? 12, - borderBottomWidth: props.lineThickness ?? 1, - borderBottomColor: 'rgba(0,0,0,0.15)', - }; - - return ; -} diff --git a/example/src/components/ViewShapes.tsx b/example/src/components/ViewShapes.tsx deleted file mode 100644 index 61f78154..00000000 --- a/example/src/components/ViewShapes.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, ViewStyle } from 'react-native'; - -export function TriangleView(props: { - style?: ViewStyle; - width?: number; - height?: number; - color?: string; - children?: JSX.Element | JSX.Element[]; -}) { - const { width, height, color } = props; - - const shapeWidth = width ?? (height == null ? width : 30); - - const shapeHeight = - height ?? (width == null ? height : 30); - - const containerStyle = { - borderLeftWidth: shapeHeight, - borderRightWidth: shapeHeight, - borderBottomWidth: shapeWidth, - borderBottomColor: color ?? 'red', - }; - - return ( - - {props.children} - - ); -} - -export function CircleView(props: { - style?: ViewStyle; - size?: number; - color?: string; - children?: JSX.Element | JSX.Element[]; -}) { - const size = props.size ?? 30; - - const containerStyle = { - height: size, - aspectRatio: 1, - borderRadius: size / 2, - backgroundColor: props.color ?? 'white', - }; - - return ( - - {props.children} - - ); -} - -const styles = StyleSheet.create({ - triangleContainer: { - width: 0, - height: 0, - backgroundColor: 'transparent', - borderStyle: 'solid', - borderLeftColor: 'transparent', - borderRightColor: 'transparent', - }, -}); diff --git a/example/src/constants/Colors.ts b/example/src/constants/Colors.ts deleted file mode 100644 index d75975f0..00000000 --- a/example/src/constants/Colors.ts +++ /dev/null @@ -1,234 +0,0 @@ -/* eslint-disable prettier/prettier */ - -export const BLACK = { - 100: '#F5F5F5', - 200: '#EEEEEE', - 300: '#E0E0E0', - 400: '#BDBDBD', - 500: '#9E9E9E', - 600: '#757575', - 700: '#616161', - 800: '#424242', - 900: '#212121', -}; - -export const GREY = { - 50 : '#FAFAFA', - 100: '#F5F5F5', - 200: '#EEEEEE', - 300: '#E0E0E0', - 400: '#BDBDBD', - 500: '#9E9E9E', - 600: '#757575', - 700: '#616161', - 800: '#424242', - 900: '#212121', -}; - -export const BLUE_GREY = { - 50 : '#ECEFF1', - 100: '#CFD8DC', - 200: '#B0BEC5', - 300: '#90A4AE', - 400: '#78909C', - 500: '#607D8B', - 600: '#546E7A', - 700: '#455A64', - 800: '#37474F', - 900: '#263238', -}; - -export const RED = { - 50 : '#FFEBEE', - 100 : '#FFCDD2', - 200 : '#EF9A9A', - 300 : '#E57373', - 400 : '#EF5350', - 500 : '#F44336', - 600 : '#E53935', - 700 : '#D32F2F', - 800 : '#C62828', - 900 : '#B71C1C', - A100: '#FF8A80', - A200: '#FF5252', - A400: '#FF1744', - A700: '#D50000', -}; - -export const PINK = { - '50' : '#FCE4EC', - '100' : '#F8BBD0', - '200' : '#F48FB1', - '300' : '#F06292', - '400' : '#EC407A', - '500' : '#E91E63', - '600' : '#D81B60', - '700' : '#C2185B', - '800' : '#AD1457', - '900' : '#880E4F', - 'A100': '#FF80AB', - 'A200': '#FF4081', - 'A400': '#F50057', - 'A700': '#C51162', -}; - -export const VIOLET = { - '100' :'#E1BEE7', - '200' :'#CE93D8', - '300' :'#BA68C8', - '400' :'#AB47BC', - '500' :'#9C27B0', - '600' :'#8E24AA', - '700' :'#7B1FA2', - '800' :'#6A1B9A', - '900' :'#4A148C', - 'A700' :'#AA00FF', -}; - -export const PURPLE = { - '25' :'#f1edf7', - '50' :'#EDE7F6', - '100' :'#D1C4E9', - '200' :'#B39DDB', - '300' :'#9575CD', - '400' :'#7E57C2', - '500' :'#673AB7', - '600' :'#5E35B1', - '700' :'#512DA8', - '800' :'#4527A0', - '900' :'#311B92', - '1000' :'#190b5b', - '1100' :'#0f0442', - '1200' :'#0e0333', - '1300' :'#090126', - 'A100' :'#B388FF', - 'A200' :'#7C4DFF', - 'A400' :'#651FFF', - 'A700' :'#6200EA', -}; - -export const INDIGO = { - '50' : '#E8EAF6', - '100' : '#C5CAE9', - '200' : '#9FA8DA', - '300' : '#7986CB', - '400' : '#5C6BC0', - '500' : '#3F51B5', - '600' : '#3949AB', - '700' : '#303F9F', - '800' : '#283593', - '900' : '#1A237E', - '1000': '#11165e', - '2000': '#0b0f47', - '3000': '#070b36', - 'A100': '#8C9EFF', - 'A200': '#536DFE', - 'A400': '#3D5AFE', - 'A700': '#304FFE', -}; - -export const BLUE = { - '50' : '#E3F2FD', - '100' : '#BBDEFB', - '200' : '#90CAF9', - '300' : '#64B5F6', - '400' : '#42A5F5', - '500' : '#2196F3', - '600' : '#1E88E5', - '700' : '#1976D2', - '800' : '#1565C0', - '900' : '#0D47A1', - '1000': '#093270', - '1100': '#031f4a', - '1200': '#001029', - 'A100': '#82B1FF', - 'A200': '#448AFF', - 'A400': '#2979FF', - 'A700': '#2962FF', -}; - -export const GREEN = { - 50 : '#E8F5E9', - 100 : '#C8E6C9', - 200 : '#A5D6A7', - 300 : '#81C784', - 400 : '#66BB6A', - 500 : '#4CAF50', - 600 : '#43A047', - 700 : '#388E3C', - 800 : '#2E7D32', - 900 : '#1B5E20', - A100: '#B9F6CA', - A200: '#69F0AE', - A400: '#00E676', - A700: '#00C853', -}; - -export const LIGHT_GREEN = { - '50' : '#F1F8E9', - '100' : '#DCEDC8', - '200' : '#C5E1A5', - '300' : '#AED581', - '400' : '#9CCC65', - '500' : '#8BC34A', - '600' : '#7CB342', - '700' : '#689F38', - '800' : '#558B2F', - '900' : '#33691E', - 'A100': '#CCFF90', - 'A200': '#B2FF59', - 'A400': '#76FF03', - 'A700': '#64DD17', -}; - -export const YELLOW = { - '50' : '#FFFDE7', - '100' : '#FFF9C4', - '200' : '#FFF59D', - '300' : '#FFF176', - '400' : '#FFEE58', - '500' : '#FFEB3B', - '600' : '#FDD835', - '700' : '#FBC02D', - '800' : '#F9A825', - '900' : '#F57F17', - 'A100': '#FFFF8D', - 'A200': '#FFFF00', - 'A400': '#FFEA00', - 'A700': '#FFD600', -}; - -export const AMBER = { - '50' : '#FFF8E1', - '100' : '#FFECB3', - '200' : '#FFE082', - '300' : '#FFD54F', - '400' : '#FFCA28', - '500' : '#FFC107', - '600' : '#FFB300', - '700' : '#FFA000', - '800' : '#FF8F00', - '900' : '#FF6F00', - 'A100': '#FFE57F', - 'A200': '#FFD740', - 'A400': '#FFC400', - 'A700': '#FFAB00', -}; - -export const ORANGE = { - '50' : '#FFF3E0', - '100' : '#FFE0B2', - '200' : '#FFCC80', - '300' : '#FFB74D', - '400' : '#FFA726', - '500' : '#FF9800', - '600' : '#FB8C00', - '700' : '#F57C00', - '800' : '#EF6C00', - '900' : '#E65100', - '1000': '#a63a00', - 'A100': '#FFD180', - 'A200': '#FFAB40', - 'A400': '#FF9100', - 'A700': '#FF6D00', -}; diff --git a/example/src/constants/SharedEnv.ts b/example/src/constants/SharedEnv.ts deleted file mode 100644 index 9b7f5624..00000000 --- a/example/src/constants/SharedEnv.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const SHARED_ENV = { - enableReactNavigation: true, - enableTabNavigation: false, -}; diff --git a/example/src/examples/DebugControls.tsx b/example/src/examples/DebugControls.tsx deleted file mode 100644 index face071f..00000000 --- a/example/src/examples/DebugControls.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from 'react'; - -import { useNavigation } from '@react-navigation/native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; -import { CardButton } from '../components/Card/CardButton'; -import { SHARED_ENV } from '../constants/SharedEnv'; - -export function DebugControls(props: ExampleProps) { - const navigation = - // eslint-disable-next-line react-hooks/rules-of-hooks - SHARED_ENV.enableReactNavigation && useNavigation(); - - return ( - - { - // @ts-ignore - navigation.push('Home'); - }} - /> - { - // @ts-ignore - navigation.push('Test01'); - }} - /> - - ); -} diff --git a/example/src/examples/Example01.tsx b/example/src/examples/Example01.tsx deleted file mode 100644 index 45961af5..00000000 --- a/example/src/examples/Example01.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; -import { CardButton } from '../components/Card'; - -export function Example01(props: ExampleProps) { - return ( - - { - // TBA - }} - /> - - ); -} diff --git a/example/src/examples/SharedExampleTypes.ts b/example/src/examples/SharedExampleTypes.ts deleted file mode 100644 index c68e0d0f..00000000 --- a/example/src/examples/SharedExampleTypes.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { ViewStyle } from 'react-native'; - -export type ExampleProps = { - index: number; - style?: ViewStyle; -}; diff --git a/example/src/examples/TemplateTest.tsx b/example/src/examples/TemplateTest.tsx deleted file mode 100644 index b61a0fec..00000000 --- a/example/src/examples/TemplateTest.tsx +++ /dev/null @@ -1,63 +0,0 @@ -// @ts-nocheck -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { CardBody, CardButton, CardTitle } from '../components/Card'; - -import { ModalView } from 'react-native-ios-modal'; - -export function TestXX(props: ExampleProps) { - const modalRef = React.useRef(null); - - const [counter, setCounter] = React.useState(0); - - return ( - - - - - - - { - // TBA - }} - /> - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, -}); diff --git a/example/src/examples/Test00.tsx b/example/src/examples/Test00.tsx deleted file mode 100644 index 967b0514..00000000 --- a/example/src/examples/Test00.tsx +++ /dev/null @@ -1,120 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest0.js` - -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { - CardBody, - CardButton, - CardTitle, - CardToggleButton, -} from '../components/Card'; - -import { - ModalView, - UIBlurEffectStyles, - AvailableBlurEffectStyles, -} from 'react-native-ios-modal'; - -import { ObjectPropertyDisplay } from '../components/ObjectPropertyDisplay'; - -const totalBlurStylesCount = Object.keys(UIBlurEffectStyles).length ?? 0; - -const availableBlurStylesCount = AvailableBlurEffectStyles?.length ?? 0; - -export function Test00(props: ExampleProps) { - const modalRef = React.useRef(null); - - const [counter, setCounter] = React.useState(0); - - const [isModalBGTransparent, setIsModalBGTransparent] = React.useState(true); - const [isModalBGBlurred, setIsModalBGBlurred] = React.useState(true); - - const currentIndex = counter % availableBlurStylesCount; - const currentBlurEffectStyle = AvailableBlurEffectStyles[currentIndex]; - - const debugObject = { - isModalBGTransparent, - isModalBGBlurred, - availableBlurStylesCount, - totalBlurStylesCount, - counter, - currentIndex, - currentBlurEffectStyle: { - _: currentBlurEffectStyle, - }, - }; - - return ( - - - - - - - - { - setCounter((prevCount) => prevCount + 1); - }} - /> - { - setIsModalBGTransparent(value); - }} - /> - { - setIsModalBGBlurred(value); - }} - /> - { - modalRef.current.setVisibility(false); - }} - /> - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, -}); diff --git a/example/src/examples/Test01.tsx b/example/src/examples/Test01.tsx deleted file mode 100644 index f8c2d400..00000000 --- a/example/src/examples/Test01.tsx +++ /dev/null @@ -1,99 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest1.js` - -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { CardBody, CardButton, CardTitle } from '../components/Card'; - -import { - ModalView, - UIModalPresentationStyle, - UIModalPresentationStyles, -} from 'react-native-ios-modal'; - -import { ObjectPropertyDisplay } from '../components/ObjectPropertyDisplay'; - -const availablePresentationStyles = Object.keys( - UIModalPresentationStyles -) as Array; - -const totalPresentationStylesCount = availablePresentationStyles.length ?? 0; - -export function Test01(props: ExampleProps) { - const modalRef = React.useRef(null); - - const [counter, setCounter] = React.useState(0); - - const currentIndex = counter % totalPresentationStylesCount; - const currentPresentationStyle = availablePresentationStyles[currentIndex]; - - const debugObject = { - currentIndex, - totalPresentationStylesCount, - currentPresentationStyle: { - _: currentPresentationStyle, - }, - }; - - return ( - - - - - - - - { - setCounter((prevCount) => prevCount + 1); - }} - /> - { - modalRef.current.setVisibility(false); - }} - /> - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, -}); diff --git a/example/src/examples/Test02.tsx b/example/src/examples/Test02.tsx deleted file mode 100644 index f960c9c5..00000000 --- a/example/src/examples/Test02.tsx +++ /dev/null @@ -1,285 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest2.js` - -import * as React from 'react'; -import { StyleSheet, Text } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; -import { CardBody, CardButton } from '../components/Card'; - -import * as Helpers from '../functions/Helpers'; - -import { - ModalView, - ModalViewProps, - AvailableBlurEffectStyles, -} from 'react-native-ios-modal'; -import { ObjectPropertyDisplay } from '../components/ObjectPropertyDisplay'; - -// -const availableBlurStylesCount = AvailableBlurEffectStyles?.length ?? 0; - -function deriveBlurEffectStyleStringFromCounter(counter: number) { - const currentIndex = counter % availableBlurStylesCount; - return AvailableBlurEffectStyles[currentIndex]; -} - -const TestModal = React.forwardRef< - ModalView, - { - counter: number; - modalProps: ModalViewProps; - emoji?: string; - title?: string; - } ->((props, ref) => ( - - - - {props.emoji ?? '😊'} - {props.title ?? 'Hello'} - - - - -)); - -type Test02State = { - counter: number; -}; - -export class Test02 extends React.PureComponent { - // Properties - // ---------- - - modalRef01: ModalView; - modalRef02: ModalView; - modalRef03: ModalView; - modalRef04: ModalView; - modalRef05: ModalView; - modalRef06: ModalView; - modalRef07: ModalView; - modalRef08: ModalView; - modalRef09: ModalView; - - // Lifecycle - // --------- - - constructor(props) { - super(props); - - this.state = { - counter: 0, - }; - } - - // Methods - // ------- - - getModalRefForIndex = (index: number): ModalView | undefined => { - const modalRefsMap = { - modalRef01: this.modalRef01, - modalRef02: this.modalRef02, - modalRef03: this.modalRef03, - modalRef04: this.modalRef04, - modalRef05: this.modalRef05, - modalRef06: this.modalRef06, - modalRef07: this.modalRef07, - modalRef08: this.modalRef08, - modalRef09: this.modalRef09, - }; - - const indexPrefix = index < 10 ? '0' : ''; - return modalRefsMap[`modalRef${indexPrefix + index}`]; - }; - - beginCyclingBlurEffectStyles = async () => { - for (let index = 0; index < availableBlurStylesCount; index++) { - await Promise.all([ - Helpers.setStateAsync(this, (prevState: Test02State) => ({ - counter: prevState.counter + 1, - })), - Helpers.timeout(250), - ]); - } - }; - - beginShowingModals = async () => { - await this.modalRef01.setVisibility(true); - await this.beginCyclingBlurEffectStyles(); - - for (let index = 2; index < 10; index++) { - const modalRef = this.getModalRefForIndex(index); - await modalRef?.setVisibility(true); - } - - await this.beginCyclingBlurEffectStyles(); - - for (let index = 9; index > 0; index--) { - const modalRef = this.getModalRefForIndex(index); - await modalRef?.setVisibility(false); - } - }; - - // Render - // ----- - - render() { - const props = this.props; - const state = this.state; - - const currentBlurEffectStyle = deriveBlurEffectStyleStringFromCounter( - state.counter - ); - - const sharedModalProps = { - containerStyle: styles.modalContainer, - modalBGBlurEffectStyle: currentBlurEffectStyle, - isModalInPresentation: true, - enableSwipeGesture: false, - }; - - let modalCount = 0; - - return ( - - - { - this.modalRef01 = ref; - }} - emoji={'😊'} - title={'Hello #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef02 = ref; - }} - emoji={'😄'} - title={'Hello There #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef03 = ref; - }} - emoji={'💖'} - title={'ModalView Test #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef04 = ref; - }} - emoji={'🥺'} - title={'PageSheet Modal #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef05 = ref; - }} - emoji={'🥰'} - title={'Hello World Modal #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef06 = ref; - }} - emoji={'😙'} - title={'Hello World #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef07 = ref; - }} - emoji={'🤩'} - title={'Heyyy There #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef08 = ref; - }} - emoji={'😃'} - title={'Another Modal #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - { - this.modalRef09 = ref; - }} - emoji={'🏳️‍🌈'} - title={'And Another Modal #' + ++modalCount} - counter={state.counter} - modalProps={sharedModalProps} - /> - - { - this.beginShowingModals(); - }} - /> - - ); - } -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - testModalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, - testLabelEmoji: { - fontSize: 36, - alignSelf: 'center', - }, - testLabelTitle: { - fontSize: 18, - fontWeight: '600', - marginTop: 3, - alignSelf: 'center', - }, -}); diff --git a/example/src/examples/Test03.tsx b/example/src/examples/Test03.tsx deleted file mode 100644 index 3d7abe16..00000000 --- a/example/src/examples/Test03.tsx +++ /dev/null @@ -1,174 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest3.js` - -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { - CardBody, - CardButton, - CardTitle, - CardToggleButton, -} from '../components/Card'; - -import { - ModalView, - ModalViewEmitterEventsDeprecated, -} from 'react-native-ios-modal'; - -import { - CardLogDisplay, - CardLogDisplayHandle, -} from '../components/Card/CardLogDisplay'; - -// @ts-ignore -function getEventMessageForEventKey(event: ModalViewEmitterEventsDeprecated) { - switch (event) { - case 'onModalBlur': - return 'The modal is in focus'; - case 'onModalFocus': - return 'The modal is blurred'; - case 'onModalShow': - return 'The modal is visible'; - case 'onModalDismiss': - return 'The modal is dismissed'; - case '_onModalDidDismiss': - return 'The modal is dismissed via swipe'; - case '_onModalWillDismiss': - return 'The modal is being swiped down'; - case 'onModalAttemptDismiss': - return 'User attempted to swipe down while isModalInPresentation'; - } -} - -export function Test03(props: ExampleProps) { - const modalRef = React.useRef(null); - const logDisplayRef = React.useRef(null); - - const [isModalInPresentation, setIsModalInPresentation] = - React.useState(false); - - const [isSwipeGestureEnabled, setIsSwipeGestureEnabled] = - React.useState(true); - - const logEvent = (eventString: string) => { - logDisplayRef.current?.log(eventString); - }; - - return ( - - { - logEvent('onModalBlur'); - }} - onModalFocus={() => { - logEvent('onModalFocus'); - }} - onModalShow={() => { - logEvent('onModalShow'); - }} - onModalDismiss={() => { - logEvent('onModalDismiss'); - }} - _onModalDidDismiss={() => { - logEvent('_onModalDidDismiss'); - }} - _onModalWillDismiss={() => { - logEvent('_onModalWillDismiss'); - }} - onModalAttemptDismiss={() => { - logEvent('onModalAttemptDismiss'); - }} - > - - - - - - - - { - setIsModalInPresentation((prev) => !prev); - }} - /> - { - setIsSwipeGestureEnabled((prev) => !prev); - }} - /> - { - modalRef.current.setVisibility(false); - }} - /> - - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard1: { - alignSelf: 'stretch', - backgroundColor: 'rgba(255,255,255,0.8)', - }, - modalCard2: { - alignSelf: 'stretch', - backgroundColor: 'rgba(255,255,255,0.8)', - }, -}); diff --git a/example/src/examples/Test04.tsx b/example/src/examples/Test04.tsx deleted file mode 100644 index 3ff6dfdc..00000000 --- a/example/src/examples/Test04.tsx +++ /dev/null @@ -1,153 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest4.js` - -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { - CardBody, - CardButton, - CardTitle, - CardToggleButton, -} from '../components/Card'; - -import { ModalContext, ModalView } from 'react-native-ios-modal'; - -import { - CardLogDisplay, - CardLogDisplayHandle, -} from '../components/Card/CardLogDisplay'; - -function ModalEventLogger() { - const modalContext = React.useContext(ModalContext); - const logDisplayRef = React.useRef(null); - - React.useEffect(() => { - // componentDidMount - const modalEmitter = modalContext.getEmitterRef(); - - modalEmitter.addListener('onModalBlur', () => - logDisplayRef.current?.log('onModalBlur') - ); - modalEmitter.addListener('onModalFocus', () => - logDisplayRef.current?.log('onModalFocus') - ); - modalEmitter.addListener('onModalShow', () => - logDisplayRef.current?.log('onModalShow') - ); - modalEmitter.addListener('onModalDismiss', () => - logDisplayRef.current?.log('onModalDismiss') - ); - modalEmitter.addListener('onModalDidDismiss', () => - logDisplayRef.current?.log('onModalDidDismiss') - ); - modalEmitter.addListener('onModalWillDismiss', () => - logDisplayRef.current?.log('onModalWillDismiss') - ); - modalEmitter.addListener('onModalAttemptDismiss', () => - logDisplayRef.current?.log('onModalAttemptDismiss') - ); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return ( - - ); -} - -export function Test04(props: ExampleProps) { - const modalRef = React.useRef(null); - - const [isModalInPresentation, setIsModalInPresentation] = - React.useState(false); - - const [isSwipeGestureEnabled, setIsSwipeGestureEnabled] = - React.useState(true); - - return ( - - - - - - - - - - { - setIsModalInPresentation((prev) => !prev); - }} - /> - { - setIsSwipeGestureEnabled((prev) => !prev); - }} - /> - { - modalRef.current.setVisibility(false); - }} - /> - - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard1: { - alignSelf: 'stretch', - backgroundColor: 'rgba(255,255,255,0.8)', - }, - modalCard2: { - alignSelf: 'stretch', - backgroundColor: 'rgba(255,255,255,0.8)', - }, -}); diff --git a/example/src/examples/Test05.tsx b/example/src/examples/Test05.tsx deleted file mode 100644 index 33e44d2a..00000000 --- a/example/src/examples/Test05.tsx +++ /dev/null @@ -1,137 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest6.js` - -import * as React from 'react'; -import { ScrollView, StyleSheet, View, Text } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { CardBody, CardButton, CardTitle } from '../components/Card'; - -import { ModalView } from 'react-native-ios-modal'; - -import * as Colors from '../constants/Colors'; - -function DummyItems() { - let items: JSX.Element[] = []; - - for (let index = 0; index < 30; index++) { - // prettier-ignore - const backgroundColor = ( - (index % 4 === 0) ? Colors.RED [900] : - (index % 4 === 1) ? Colors.BLUE [900] : - (index % 4 === 2) ? Colors.YELLOW[900] : - (index % 4 === 3) ? Colors.PURPLE[900] : - /* default */ Colors.GREEN[900] - ); - - const dummyItemLeftSquareStyle = { - backgroundColor, - }; - - items.push( - - - - - {/* Label */ `Item #${index}`} - - - {/* Desc */ `Item Description - lorum ipsum sit #${index}`} - - - - ); - } - - return items; -} - -export function Test05(props: ExampleProps) { - const modalRef = React.useRef(null); - - return ( - - - - - - - {DummyItems()} - { - modalRef.current?.setVisibility(false); - }} - /> - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - scroll: { - flex: 1, - marginTop: 25, - }, - scrollContentContainer: { - paddingBottom: 15, - }, - modalContainer: {}, - modalCard: { - backgroundColor: 'white', - alignSelf: 'center', - marginBottom: 20, - }, - modalCloseButton: { - marginVertical: 20, - marginHorizontal: 12, - }, - - dummyItemContainer: { - flexDirection: 'row', - }, - dummyItemLeftSquare: { - aspectRatio: 1, - width: 75, - }, - dummyItemRightContainer: { - marginLeft: 10, - flex: 1, - justifyContent: 'center', - }, - dummyItemLabel: { - fontWeight: '600', - fontSize: 20, - }, - dummyItemDesc: { - color: Colors.GREY[800], - marginTop: 2, - }, -}); diff --git a/example/src/examples/Test06/ModalFocusIndicatorPill.tsx b/example/src/examples/Test06/ModalFocusIndicatorPill.tsx deleted file mode 100644 index 035ad43f..00000000 --- a/example/src/examples/Test06/ModalFocusIndicatorPill.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import * as React from 'react'; -import { StyleSheet, View, Text, ViewStyle } from 'react-native'; - -import { ModalContext } from 'react-native-ios-modal'; - -import * as Colors from '../../constants/Colors'; - -export function ModalFocusIndicatorPill() { - const { focusState } = React.useContext(ModalContext); - - const pillContainerStyle: ViewStyle = { - // prettier-ignore - backgroundColor: ( - focusState === 'INITIAL' ? Colors.GREY[900] : - focusState === 'FOCUSING' ? Colors.BLUE.A700 : - focusState === 'FOCUSED' ? Colors.PURPLE.A700 : - focusState === 'BLURRING' ? Colors.PINK.A700 : - focusState === 'BLURRED' ? Colors.RED.A700 - // default - : '' - ), - }; - - return ( - - - {/* Focus Pill Label: Focus/Blur */} - {focusState} - - - ); -} - -const styles = StyleSheet.create({ - modalFocusIndicatorPillContainer: { - alignSelf: 'center', - alignItems: 'center', - width: 200, - paddingVertical: 12, - borderRadius: 15, - marginBottom: 7, - }, - modalFocusIndicatorPillText: { - fontSize: 24, - fontWeight: '900', - color: 'white', - }, -}); diff --git a/example/src/examples/Test06/ModalGroup.tsx b/example/src/examples/Test06/ModalGroup.tsx deleted file mode 100644 index 93dda30f..00000000 --- a/example/src/examples/Test06/ModalGroup.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import { ModalView } from 'react-native-ios-modal'; -import { ModalGroupItemContent } from './ModalGroupItemContent'; - -export type ModalGroupHandle = { - showModal: () => void; -}; - -export type ModalGroupProps = {}; - -export const ModalGroup = React.forwardRef( - (_, ref) => { - const [currentModalIndex, setCurrentModalIndex] = React.useState(0); - - const modalRefs = React.useRef>({}); - - const modalGroupItems: JSX.Element[] = []; - - // callable functions... - React.useImperativeHandle(ref, () => ({ - showModal: () => { - const targetModalIndex = 0; - - const modalRef = modalRefs.current[`${targetModalIndex}`]; - - // guard - if (modalRef == null) { - return; - } - - // open first modal - modalRef.setVisibility(true); - setCurrentModalIndex(targetModalIndex + 1); - }, - })); - - // render next modal in advance - const modalsToMountCount = currentModalIndex + 1; - - for (let index = 0; index <= modalsToMountCount; index++) { - modalGroupItems.push( - { - modalRefs.current[`${index}`] = _ref; - }} - > - { - const nextModalIndex = modalIndex + 1; - - const modalRef = modalRefs.current[`${nextModalIndex}`]; - - // guard - if (modalRef == null) { - return; - } - - // open next modal - setCurrentModalIndex(nextModalIndex); - modalRef.setVisibility(true); - }} - onPressCloseModal={async (modalIndex) => { - const modalRef = modalRefs.current[`${modalIndex}`]; - - // guard - if (modalRef == null) { - return; - } - - await modalRef.setVisibility(false); - setCurrentModalIndex(modalIndex - 1); - }} - onPressClosePrevModal={(modalIndex) => { - const prevModalIndex = modalIndex - 1; - - const prevModalRef = modalRefs.current[`${prevModalIndex}`]; - - // guard - if (prevModalRef == null) { - return; - } - - prevModalRef.setVisibility(false); - }} - /> - - ); - } - - return {modalGroupItems}; - } -); - -export const styles = StyleSheet.create({ - modalGroupModal: { - justifyContent: 'center', - }, -}); diff --git a/example/src/examples/Test06/ModalGroupItemContent.tsx b/example/src/examples/Test06/ModalGroupItemContent.tsx deleted file mode 100644 index f6aa5d49..00000000 --- a/example/src/examples/Test06/ModalGroupItemContent.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import { CardBody, CardButton, CardTitle } from '../../components/Card'; - -import { ModalContext } from 'react-native-ios-modal'; - -import { - CardLogDisplay, - CardLogDisplayHandle, -} from '../../components/Card/CardLogDisplay'; - -import { ModalFocusIndicatorPill } from './ModalFocusIndicatorPill'; - -export function ModalGroupItemContent(props: { - modalIndex: number; - onPressOpenNextModal: (modalIndex: number) => void; - onPressClosePrevModal: (modalIndex: number) => void; - onPressCloseModal: (modalIndex: number) => void; -}) { - const logDisplayRef = React.useRef(null); - - const modalContext = React.useContext(ModalContext); - - // Lifecycle: componentDidMount - React.useEffect(() => { - const modalEmitter = modalContext.getEmitterRef(); - - const listenerOnModalWillFocus = modalEmitter.addListener( - 'onModalWillFocus', - () => { - logDisplayRef.current?.log('onModalWillFocus'); - } - ); - - const listenerOnModalDidFocus = modalEmitter.addListener( - 'onModalDidFocus', - () => { - logDisplayRef.current?.log('onModalDidFocus'); - } - ); - - const listenerOnModalWillBlur = modalEmitter.addListener( - 'onModalWillBlur', - () => { - logDisplayRef.current?.log('onModalWillBlur'); - } - ); - - const listenerOnModalDidBlur = modalEmitter.addListener( - 'onModalDidBlur', - () => { - logDisplayRef.current?.log('onModalDidBlur'); - } - ); - - return () => { - // Lifecycle: componentWillUnmount - listenerOnModalWillFocus.unsubscribe(); - listenerOnModalDidFocus.unsubscribe(); - listenerOnModalWillBlur.unsubscribe(); - listenerOnModalDidBlur.unsubscribe(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return ( - - - - - - { - props.onPressOpenNextModal(props.modalIndex); - }} - /> - { - props.onPressCloseModal(props.modalIndex); - }} - /> - {props.modalIndex > 0 && ( - { - // TODO: See TODO:2023-03-09-17-36-51 - props.onPressClosePrevModal(props.modalIndex); - }} - /> - )} - - - ); -} - -const styles = StyleSheet.create({ - modalGroupModal: { - justifyContent: 'center', - }, - modalGroupItemCard: { - backgroundColor: 'white', - }, -}); diff --git a/example/src/examples/Test06/Test06.tsx b/example/src/examples/Test06/Test06.tsx deleted file mode 100644 index 03af0f05..00000000 --- a/example/src/examples/Test06/Test06.tsx +++ /dev/null @@ -1,42 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest7.js` - -// TODO - See TODO:2023-03-08-03-48-33 -// * Enable `ModalView.isModalContentLazy` prop - -import * as React from 'react'; - -import type { ExampleProps } from '../SharedExampleTypes'; - -import { ExampleCard } from '../../components/ExampleCard'; - -import { CardButton } from '../../components/Card'; - -import { ModalGroup, ModalGroupHandle } from './ModalGroup'; - -// Section: Test06 -// -------------- - -export function Test06(props: ExampleProps) { - const modalGroupRef = React.useRef(null); - - return ( - - - { - modalGroupRef.current?.showModal(); - }} - /> - - ); -} diff --git a/example/src/examples/Test06/index.ts b/example/src/examples/Test06/index.ts deleted file mode 100644 index bab01e57..00000000 --- a/example/src/examples/Test06/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Test06'; diff --git a/example/src/examples/Test07.tsx b/example/src/examples/Test07.tsx deleted file mode 100644 index a5a762a6..00000000 --- a/example/src/examples/Test07.tsx +++ /dev/null @@ -1,144 +0,0 @@ -// Note: Created based on `example/src_old/ModalViewTest8.js` - -import * as React from 'react'; -import { StyleSheet, View, ScrollView } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { CardBody, CardButton, CardTitle } from '../components/Card'; - -import { ModalView } from 'react-native-ios-modal'; -import { ObjectPropertyDisplay } from '../components/ObjectPropertyDisplay'; - -type ModalWrapperHandle = { - showModal: () => void; -}; - -type ModalWrapperProps = { - index: number; - onPressOpenModal?: () => void; -}; - -const ModalWrapper = React.forwardRef( - (props, ref) => { - const modalRef = React.useRef(null); - const [modalInfo, setModalInfo] = React.useState(null); - - // callable functions... - React.useImperativeHandle(ref, () => ({ - showModal: () => { - modalRef.current?.setVisibility(true); - }, - })); - - const ModalContents = ( - - - - - - { - const results = await modalRef.current.getModalInfo(); - setModalInfo(results); - }} - /> - {props.onPressOpenModal && ( - { - props.onPressOpenModal?.(); - }} - /> - )} - - ); - - return ( - { - setModalInfo(null); - }} - > - - {modalInfo == null ? ( - {ModalContents} - ) : ( - - {ModalContents} - - )} - - - ); - } -); - -export function Test07(props: ExampleProps) { - const modalWrapperRef1 = React.useRef(null); - const modalWrapperRef2 = React.useRef(null); - const modalWrapperRef3 = React.useRef(null); - - return ( - - { - modalWrapperRef2.current?.showModal(); - }} - /> - { - modalWrapperRef3.current?.showModal(); - }} - /> - - { - modalWrapperRef1.current?.showModal(); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - }, - modalWrapper: { - flex: 1, - }, - modalWrapperEmpty: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalScrollView: { - alignItems: 'center', - marginTop: 20, - paddingBottom: 100, - }, - modalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, -}); diff --git a/example/src/examples/Test08.tsx b/example/src/examples/Test08.tsx deleted file mode 100644 index 475ef05e..00000000 --- a/example/src/examples/Test08.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import { CardBody, CardButton, CardTitle } from '../components/Card'; - -import { ModalView } from 'react-native-ios-modal'; -import { ObjectPropertyDisplay } from '../components/ObjectPropertyDisplay'; - -export function Test08(props: ExampleProps) { - const modalRef = React.useRef(null); - - const [shouldUseMediumDetent, setShouldUseMediumDetent] = - React.useState(true); - - const [debugObject, setDebugObject] = React.useState({ - detentCurrent: null, - detentPrev: null, - }); - - return ( - - { - setDebugObject((prev) => ({ - ...prev, - detentCurrent: nativeEvent.sheetDetentStringCurrent, - detentPrev: nativeEvent.sheetDetentStringPrevious, - })); - }} - > - - - - - - { - setShouldUseMediumDetent((prevValue) => !prevValue); - }} - /> - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, -}); diff --git a/example/src/examples/Test09.tsx b/example/src/examples/Test09.tsx deleted file mode 100644 index 29442cc5..00000000 --- a/example/src/examples/Test09.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import * as React from 'react'; -import { StyleSheet } from 'react-native'; - -import type { ExampleProps } from './SharedExampleTypes'; - -import { ExampleCard } from '../components/ExampleCard'; - -import * as Helpers from '../functions/Helpers'; - -import { CardBody, CardButton, CardTitle } from '../components/Card'; - -import { ModalView, RNIModalCustomSheetDetent } from 'react-native-ios-modal'; -import { ObjectPropertyDisplay } from '../components/ObjectPropertyDisplay'; - -const CUSTOM_DETENTS: RNIModalCustomSheetDetent[] = [ - { - key: 'custom_small', - mode: 'constant', - sizeConstant: 375, - }, - { - key: 'custom_75%', - mode: 'relative', - sizeMultiplier: 0.75, - offset: 20, - }, - { - key: 'custom_100%', - mode: 'relative', - sizeMultiplier: 1, - }, -]; - -export function Test09(props: ExampleProps) { - const modalRef = React.useRef(null); - - const [counter, setCounter] = React.useState(0); - const [eventData, setEventData] = React.useState(null); - - const currentDetent = Helpers.getNextItemInCyclicArray( - counter, - CUSTOM_DETENTS - ); - - const objectToDisplay = { - counter, - currentDetent, - eventData, - }; - - return ( - - { - setEventData((prev) => ({ - ...prev, - detentCurrent: nativeEvent.sheetDetentStringCurrent, - detentPrev: nativeEvent.sheetDetentStringPrevious, - })); - }} - onModalDetentDidCompute={({ nativeEvent }) => { - console.log( - "onModalDetentDidCompute" - + ` - key: ${nativeEvent.key}` - + ` - maximumDetentValue: ${nativeEvent.maximumDetentValue}` - + ` - computedDetentValue: ${nativeEvent.computedDetentValue}` - ); - }} - onModalSwipeGestureStart={({ nativeEvent }) => { - console.log( - "onModalSwipeGestureStart" - + ` - position: ${JSON.stringify(nativeEvent.position)}` - ); - }} - onModalSwipeGestureDidEnd={({ nativeEvent }) => { - console.log( - "onModalSwipeGestureDidEnd" - + ` - position: ${JSON.stringify(nativeEvent.position)}` - ); - }} - onModalDidSnap={({ nativeEvent }) => { - console.log( - "onModalDidSnap" - + ` - modalContentSize: ${JSON.stringify(nativeEvent.modalContentSize)}` - + ` - selectedDetentIdentifier: ${nativeEvent.selectedDetentIdentifier}` - ); - }} - onModalDismissWillCancel={({nativeEvent}) => { - console.log('onModalDismissWillCancel - ', nativeEvent); - }} - onModalDismissDidCancel={({nativeEvent}) => { - console.log('onModalDismissDidCancel - ', nativeEvent); - }} - > - - - - - - { - setCounter((prevCount) => prevCount + 1); - }} - /> - - - { - modalRef.current.setVisibility(true); - }} - /> - - ); -} - -export const styles = StyleSheet.create({ - modalContainer: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - }, - modalCard: { - alignSelf: 'stretch', - backgroundColor: 'white', - }, -}); diff --git a/example/src/functions/Helpers.ts b/example/src/functions/Helpers.ts deleted file mode 100644 index 4c294bbb..00000000 --- a/example/src/functions/Helpers.ts +++ /dev/null @@ -1,98 +0,0 @@ -// @ts-nocheck - -import * as React from 'react'; - -/** wrapper func for setState that returns a promise */ -// eslint-disable-next-line consistent-this -export function setStateAsync( - that: React.Component, - newState: T | ((prevState: T) => T) -) { - return new Promise((resolve) => { - that.setState(newState, () => { - resolve(); - }); - }); -} - -export function useStateCallback( - initialState: T -): [T, (state: T, callback?: (nextState: T) => void) => void] { - const [state, setState] = React.useState(initialState); - - // init mutable ref container for callbacks - const cbRef = React.useRef<((state: T) => void) | undefined>(undefined); - - const setStateCallback = React.useCallback( - (nextState: T, cb?: (state: T) => void) => { - // store current, passed callback in ref - cbRef.current = cb; - - // keep object reference stable, exactly like `useState` - setState(nextState); - }, - [] - ); - - React.useEffect(() => { - // cb.current is `undefined` on initial render, - // so we only invoke callback on state *updates* - if (cbRef.current) { - cbRef.current(state); - - // reset callback after execution - cbRef.current = undefined; - } - }, [state]); - - return [state, setStateCallback]; -} - -export function useStateAsync( - initialState: T -): [T, (nextState: T) => Promise] { - const [state, setState] = useStateCallback(initialState); - - return [ - state, - (nextState) => { - return new Promise((resolve) => { - setState(nextState, () => { - resolve(); - }); - }); - }, - ]; -} - -/** wrapper for timeout that returns a promise */ -export function timeout(ms: number) { - return new Promise((resolve) => { - const timeoutID = setTimeout(() => { - clearTimeout(timeoutID); - resolve(); - }, ms); - }); -} - -/** Wraps a promise that will reject if not not resolved in milliseconds */ -export function promiseWithTimeout(ms: number, promise: Promise) { - // Create a promise that rejects in milliseconds - const timeoutPromise = new Promise((_, reject) => { - const timeoutID = setTimeout(() => { - clearTimeout(timeoutID); - reject(`Promise timed out in ${ms} ms.`); - }, ms); - }); - - // Returns a race between our timeout and the passed in promise - return Promise.race([promise, timeoutPromise]); -} - -export function pad(num: number | string, places = 2) { - return String(num).padStart(places, '0'); -} - -export function getNextItemInCyclicArray(index: number, array: Array): T { - return array[index % array.length]; -} \ No newline at end of file diff --git a/example/src/screens/HomeScreen.tsx b/example/src/screens/HomeScreen.tsx deleted file mode 100644 index 549c3749..00000000 --- a/example/src/screens/HomeScreen.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import * as React from 'react'; -import { - StyleSheet, - SafeAreaView, - FlatList, - ListRenderItem, -} from 'react-native'; - -import type { ExampleProps } from '../examples/SharedExampleTypes'; - -import { Test00 } from '../examples/Test00'; -import { Test01 } from '../examples/Test01'; -import { Test02 } from '../examples/Test02'; -import { Test03 } from '../examples/Test03'; -import { Test04 } from '../examples/Test04'; -import { Test05 } from '../examples/Test05'; -import { Test06 } from '../examples/Test06'; -import { Test07 } from '../examples/Test07'; -import { Test08 } from '../examples/Test08'; -import { Test09 } from '../examples/Test09'; - -import { Example01 } from '../examples/Example01'; - -import { DebugControls } from '../examples/DebugControls'; -import { SHARED_ENV } from '../constants/SharedEnv'; - -type ExampleListItem = { - id: number; - component: React.FC; -}; - -type ExampleFunctionalComponentItem = (props: ExampleProps) => JSX.Element; - -type ExampleClassComponentItem = - | typeof React.PureComponent - | typeof React.Component; - -type ExampleComponentItem = - | ExampleFunctionalComponentItem - | ExampleClassComponentItem - | false; - -const EXAMPLE_COMPONENTS: Array = [ - Test00, - Test01, - Test02, - Test03, - Test04, - Test05, - Test06, - Test07, - Test08, - Test09, - Example01, - SHARED_ENV.enableReactNavigation && DebugControls, -]; - -const EXAMPLE_ITEMS = EXAMPLE_COMPONENTS.filter( - (item): item is ExampleFunctionalComponentItem => item != null -).map((item, index) => ({ - id: index + 1, - component: item, -})); - -export function HomeScreen() { - const renderItem: ListRenderItem = ({ item }) => - React.createElement(item.component, { - index: item.id, - style: styles.exampleListItem, - }); - - return ( - - `item-${item.id}`} - /> - - ); -} - -const styles = StyleSheet.create({ - scrollContentContainer: { - paddingHorizontal: 10, - paddingBottom: 100, - paddingTop: 20, - }, - exampleListItem: { - marginBottom: 15, - }, -}); diff --git a/example/src/screens/Test01Screen.tsx b/example/src/screens/Test01Screen.tsx deleted file mode 100644 index c2155619..00000000 --- a/example/src/screens/Test01Screen.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import * as React from 'react'; -import { - View, - Text, - TouchableOpacity, - StyleSheet, - Alert, -} from 'react-native'; - -import { SHARED_ENV } from '../constants/SharedEnv'; - -export const Test01Screen = (props) => { - return ( - - { - if (SHARED_ENV.enableReactNavigation) { - props.navigation.push('Home'); - } else { - Alert.alert('react-navigation is disabled.'); - } - }} - > - {'Test Screen'} - - - ); -}; - -const styles = StyleSheet.create({ - rootContainer: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - }, -}); diff --git a/example/tsconfig.json b/example/tsconfig.json deleted file mode 100644 index 0b98ace6..00000000 --- a/example/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": [ - "./src", - ], - "exclude": [ - "./node_modules", - "../src", - ], - "compilerOptions": { - "strict": false, - "strictNullChecks": false, - "noImplicitAny": false, - "skipLibCheck": true, - } -} \ No newline at end of file diff --git a/example/yarn.lock b/example/yarn.lock deleted file mode 100644 index 0a6f9f73..00000000 --- a/example/yarn.lock +++ /dev/null @@ -1,4342 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.4", "@babel/compat-data@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.0.tgz#9b61938c5f688212c7b9ae363a819df7d29d4093" - integrity sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w== - -"@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" - integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.6" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helpers" "^7.19.4" - "@babel/parser" "^7.19.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.14.0", "@babel/generator@^7.19.6", "@babel/generator@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.0.tgz#0bfc5379e0efb05ca6092091261fcdf7ec36249d" - integrity sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w== - dependencies: - "@babel/types" "^7.20.0" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" - integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" - integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" - integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.19.4" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" - integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" - integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== - dependencies: - "@babel/types" "^7.19.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helper-wrap-function@^7.18.9": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" - integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.19.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.0.tgz#27c8ffa8cc32a2ed3762fba48886e7654dbcf77f" - integrity sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.18.10", "@babel/parser@^7.19.6", "@babel/parser@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046" - integrity sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg== - -"@babel/plugin-proposal-async-generator-functions@^7.0.0": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" - integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" - integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-default-from" "^7.18.6" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz#a8fc86e8180ff57290c91a75d83fe658189b642d" - integrity sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q== - dependencies: - "@babel/compat-data" "^7.19.4" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-dynamic-import@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc" - integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.2.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-typescript@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-arrow-functions@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.0.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz#91fe5e6ffc9ba13cb6c95ed7f0b1204f68c988c5" - integrity sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-classes@^7.0.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" - integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz#712829ef4825d9cc04bb379de316f981e9a6f648" - integrity sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-exponentiation-operator@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f" - integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.0.0": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.0.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.0.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" - integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-object-super@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" - integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" - -"@babel/plugin-transform-runtime@^7.0.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.0.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.5.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz#2c7ec62b8bfc21482f3748789ba294a46a375169" - integrity sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-typescript" "^7.20.0" - -"@babel/plugin-transform-unicode-regex@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-flow@^7.13.13": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" - integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-flow-strip-types" "^7.18.6" - -"@babel/preset-typescript@^7.13.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/register@^7.13.16": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" - integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a" - integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== - dependencies: - regenerator-runtime "^0.13.10" - -"@babel/template@^7.0.0", "@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.14.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.0.tgz#538c4c6ce6255f5666eba02252a7b59fc2d5ed98" - integrity sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.0.tgz#52c94cf8a7e24e89d2a194c25c35b17a64871479" - integrity sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@jest/create-cache-key-function@^29.0.3": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.2.1.tgz#5f168051001ffea318b720cd6062daaf0b074913" - integrity sha512-///wxGQUyP0GCr3L1OcqIzhsKvN2gOyqWsRxs56XGCdD8EEuoKg857G9nC+zcWIpIsG+3J5UnEbhe3LJw8CNmQ== - dependencies: - "@jest/types" "^29.2.1" - -"@jest/schemas@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" - integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" - integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@react-native-community/cli-clean@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz#198c5dd39c432efb5374582073065ff75d67d018" - integrity sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - prompts "^2.4.0" - -"@react-native-community/cli-config@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-9.2.1.tgz#54eb026d53621ccf3a9df8b189ac24f6e56b8750" - integrity sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - cosmiconfig "^5.1.0" - deepmerge "^3.2.0" - glob "^7.1.3" - joi "^17.2.1" - -"@react-native-community/cli-debugger-ui@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz#ea5c5dad6008bccd840d858e160d42bb2ced8793" - integrity sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-doctor@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-9.2.1.tgz#04859a93f0ea87d78cc7050362b6ce2b1c54fd36" - integrity sha512-RpUax0pkKumXJ5hcRG0Qd+oYWsA2RFeMWKY+Npg8q05Cwd1rqDQfWGprkHC576vz26+FPuvwEagoAf6fR2bvJA== - dependencies: - "@react-native-community/cli-config" "^9.2.1" - "@react-native-community/cli-platform-ios" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - command-exists "^1.2.8" - envinfo "^7.7.2" - execa "^1.0.0" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - node-stream-zip "^1.9.1" - ora "^5.4.1" - prompts "^2.4.0" - semver "^6.3.0" - strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" - wcwidth "^1.0.1" - -"@react-native-community/cli-hermes@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-9.2.1.tgz#c4aeadc4aa2b55cd0dd931a1a1c1909fd426f31a" - integrity sha512-723/NMb7egXzJrbWT1uEkN2hOpw+OOtWTG2zKJ3j7KKgUd8u/pP+/z5jO8xVrq+eYJEMjDK0FBEo1Xj7maR4Sw== - dependencies: - "@react-native-community/cli-platform-android" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - -"@react-native-community/cli-platform-android@9.2.1", "@react-native-community/cli-platform-android@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz#cd73cb6bbaeb478cafbed10bd12dfc01b484d488" - integrity sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - fs-extra "^8.1.0" - glob "^7.1.3" - logkitty "^0.7.1" - slash "^3.0.0" - -"@react-native-community/cli-platform-ios@9.2.1", "@react-native-community/cli-platform-ios@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz#d90740472216ffae5527dfc5f49063ede18a621f" - integrity sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - glob "^7.1.3" - ora "^5.4.1" - -"@react-native-community/cli-plugin-metro@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz#0ec207e78338e0cc0a3cbe1b43059c24afc66158" - integrity sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ== - dependencies: - "@react-native-community/cli-server-api" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - metro "0.72.3" - metro-config "0.72.3" - metro-core "0.72.3" - metro-react-native-babel-transformer "0.72.3" - metro-resolver "0.72.3" - metro-runtime "0.72.3" - readline "^1.3.0" - -"@react-native-community/cli-server-api@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz#41ac5916b21d324bccef447f75600c03b2f54fbe" - integrity sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw== - dependencies: - "@react-native-community/cli-debugger-ui" "^9.0.0" - "@react-native-community/cli-tools" "^9.2.1" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.0" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^7.5.1" - -"@react-native-community/cli-tools@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz#c332324b1ea99f9efdc3643649bce968aa98191c" - integrity sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^6.3.0" - shell-quote "^1.7.3" - -"@react-native-community/cli-types@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-9.1.0.tgz#dcd6a0022f62790fe1f67417f4690db938746aab" - integrity sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli@9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-9.2.1.tgz#15cc32531fc323d4232d57b1f2d7c571816305ac" - integrity sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ== - dependencies: - "@react-native-community/cli-clean" "^9.2.1" - "@react-native-community/cli-config" "^9.2.1" - "@react-native-community/cli-debugger-ui" "^9.0.0" - "@react-native-community/cli-doctor" "^9.2.1" - "@react-native-community/cli-hermes" "^9.2.1" - "@react-native-community/cli-plugin-metro" "^9.2.1" - "@react-native-community/cli-server-api" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - "@react-native-community/cli-types" "^9.1.0" - chalk "^4.1.2" - commander "^9.4.0" - execa "^1.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.0" - semver "^6.3.0" - -"@react-native/assets@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" - integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== - -"@react-native/normalize-color@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" - integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== - -"@react-native/polyfills@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa" - integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== - -"@react-navigation/bottom-tabs@^6.5.3": - version "6.5.3" - resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.3.tgz#76bb793b42326544997d438c5202b59913d0d656" - integrity sha512-ZA2Ko9fNwNaaSNn7738KpEk8Doi+yjRfTg8Wb/WvduIaK/28qNLAYWBCUEVjBC55y/9zJOzwc4R8Av2J2MG/4g== - dependencies: - "@react-navigation/elements" "^1.3.13" - color "^4.2.3" - warn-once "^0.1.0" - -"@react-navigation/core@^6.4.6": - version "6.4.6" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.6.tgz#b0738667dec5927b01c4c496c2f4c73ef8a5e4dd" - integrity sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w== - dependencies: - "@react-navigation/routers" "^6.1.6" - escape-string-regexp "^4.0.0" - nanoid "^3.1.23" - query-string "^7.1.3" - react-is "^16.13.0" - use-latest-callback "^0.1.5" - -"@react-navigation/elements@^1.3.13": - version "1.3.13" - resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.13.tgz#5105fa26df8d32810cd9f14d6ec5a3d2c2bb26d2" - integrity sha512-LqqK5s2ZfYHn2cQ376jC5V9dQztLH5ixkkJj9WR7JY2g4SghDd39WJhL3Jillw1Mu3F3b9sZwvAK+QkXhnDeAA== - -"@react-navigation/native-stack@^6.9.8": - version "6.9.8" - resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.8.tgz#c953a169918a4bdde56f7d2dc1073da4726b4cb7" - integrity sha512-74dje939lflsTXJQwCAdznbJ4B6V8sA5CSzuHwbiogL8B6EVXNa/qliXtB7DBAvzeyWDWT3u+gM2vOYJOeXYhA== - dependencies: - "@react-navigation/elements" "^1.3.13" - warn-once "^0.1.0" - -"@react-navigation/native@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.2.tgz#6fffbf4787c233687fff8fe9ce7364ffce696d38" - integrity sha512-qLUe0asHofr5EhxKjvUBJ9DrPPmR4535IEwmW3oU4DRb3cLbNysjajJKHL8kcYtqPvn9Bx9QZG2x0PMb2vN23A== - dependencies: - "@react-navigation/core" "^6.4.6" - escape-string-regexp "^4.0.0" - fast-deep-equal "^3.1.3" - nanoid "^3.1.23" - -"@react-navigation/routers@^6.1.6": - version "6.1.6" - resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.6.tgz#f57f2a73855d329255aa225fdad75ae8e7700c6d" - integrity sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ== - dependencies: - nanoid "^3.1.23" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/node@*": - version "18.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.7.tgz#8ccef136f240770c1379d50100796a6952f01f94" - integrity sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ== - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.8": - version "17.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" - integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== - dependencies: - "@types/yargs-parser" "*" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -absolute-path@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" - integrity sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA== - -accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -anser@^1.4.9: - version "1.4.10" - resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" - integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== - -ansi-fragments@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" - integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== - dependencies: - colorette "^1.0.7" - slice-ansi "^2.0.0" - strip-ansi "^5.0.0" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -appdirsjs@^1.2.4: - version "1.2.7" - resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" - integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" - integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== - dependencies: - tslib "^2.0.1" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-plugin-module-resolver@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2" - integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== - dependencies: - find-babel-config "^1.2.0" - glob "^7.1.6" - pkg-up "^3.1.0" - reselect "^4.0.0" - resolve "^1.13.1" - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: - version "7.0.0-beta.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== - -babel-preset-fbjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" - integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-member-expression-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-property-literals" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.1.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001400: - version "1.0.30001426" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz#58da20446ccd0cb1dfebd11d2350c907ee7c2eaa" - integrity sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f" - integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - -colorette@^1.0.7: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.1: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -connect@^3.6.5: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -core-js-compat@^3.25.1: - version "3.26.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.0.tgz#94e2cf8ba3e63800c4956ea298a6473bc9d62b44" - integrity sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A== - dependencies: - browserslist "^4.21.4" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -dayjs@^1.8.15: - version "1.11.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.6.tgz#2e79a226314ec3ec904e3ee1dd5a4f5e5b1c7afb" - integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -deepmerge@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" - integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -envinfo@^7.7.2: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -errorhandler@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" - integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== - dependencies: - accepts "~1.3.7" - escape-html "~1.0.3" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -esprima@^4.0.0, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-target-shim@^5.0.0, event-target-shim@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-babel-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flow-parser@0.*: - version "0.191.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.191.0.tgz#0fe7eb4be505f443c067c47f795153bf3b87c7d7" - integrity sha512-/5Gv9zY+Mg58ubzzwNz4I29uYHDpBFR5F5ohyVsb+SxW2R8S4s1qCBRtgiTAsujsC6qmQlrsOn2DBlK4m7SQTQ== - -flow-parser@^0.121.0: - version "0.121.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" - integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.1.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -glob@^7.1.3, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hermes-estree@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.8.0.tgz#530be27243ca49f008381c1f3e8b18fb26bf9ec0" - integrity sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q== - -hermes-parser@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.8.0.tgz#116dceaba32e45b16d6aefb5c4c830eaeba2d257" - integrity sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA== - dependencies: - hermes-estree "0.8.0" - -hermes-profile-transformer@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" - integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== - dependencies: - source-map "^0.7.3" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -image-size@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" - integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-regex-util@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-serializer@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-util@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^26.5.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-worker@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -joi@^17.2.1: - version "17.6.4" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.4.tgz#4d9536a059ef0762c718ae98673016b3ec151abd" - integrity sha512-tPzkTJHZQjSFCc842QpdVpOZ9LI2txApboNUbW70qgnRB14Lzl+oWQOPdF2N4yqyiY14wBGe8lc7f/2hZxbGmw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsc-android@^250230.2.1: - version "250230.2.1" - resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83" - integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q== - -jscodeshift@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" - integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^3.1.10" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.20.4" - temp "^0.8.4" - write-file-atomic "^2.3.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== - -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -logkitty@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" - integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== - dependencies: - ansi-fragments "^0.2.1" - dayjs "^1.8.15" - yargs "^15.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -metro-babel-transformer@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz#2c60493a4eb7a8d20cc059f05e0e505dc1684d01" - integrity sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw== - dependencies: - "@babel/core" "^7.14.0" - hermes-parser "0.8.0" - metro-source-map "0.72.3" - nullthrows "^1.1.1" - -metro-cache-key@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.72.3.tgz#dcc3055b6cb7e35b84b4fe736a148affb4ecc718" - integrity sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg== - -metro-cache@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.72.3.tgz#fd079f90b12a81dd5f1567c607c13b14ae282690" - integrity sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A== - dependencies: - metro-core "0.72.3" - rimraf "^2.5.4" - -metro-config@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.72.3.tgz#c2f1a89537c79cec516b1229aa0550dfa769e2ee" - integrity sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw== - dependencies: - cosmiconfig "^5.0.5" - jest-validate "^26.5.2" - metro "0.72.3" - metro-cache "0.72.3" - metro-core "0.72.3" - metro-runtime "0.72.3" - -metro-core@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.72.3.tgz#e3a276d54ecc8fe667127347a1bfd3f8c0009ccb" - integrity sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.72.3" - -metro-file-map@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.72.3.tgz#94f6d4969480aa7f47cfe2c5f365ad4e85051f12" - integrity sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA== - dependencies: - abort-controller "^3.0.0" - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -metro-hermes-compiler@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz#e9ab4d25419eedcc72c73842c8da681a4a7e691e" - integrity sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg== - -metro-inspector-proxy@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz#8d7ff4240fc414af5b72d86dac2485647fc3cf09" - integrity sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - ws "^7.5.1" - yargs "^15.3.1" - -metro-minify-uglify@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz#a9d4cd27933b29cfe95d8406b40d185567a93d39" - integrity sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA== - dependencies: - uglify-es "^3.1.9" - -metro-react-native-babel-preset@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz#e549199fa310fef34364fdf19bd210afd0c89432" - integrity sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw== - dependencies: - "@babel/core" "^7.14.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz#f8eda8c07c0082cbdbef47a3293edc41587c6b5a" - integrity sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA== - dependencies: - "@babel/core" "^7.14.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.8.0" - metro-babel-transformer "0.72.3" - metro-react-native-babel-preset "0.72.3" - metro-source-map "0.72.3" - nullthrows "^1.1.1" - -metro-resolver@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.72.3.tgz#c64ce160454ac850a15431509f54a587cb006540" - integrity sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w== - dependencies: - absolute-path "^0.0.0" - -metro-runtime@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.72.3.tgz#1485ed7b5f06d09ebb40c83efcf8accc8d30b8b9" - integrity sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA== - dependencies: - "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" - -metro-source-map@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.72.3.tgz#5efcf354413804a62ff97864e797f60ef3cc689e" - integrity sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ== - dependencies: - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - invariant "^2.2.4" - metro-symbolicate "0.72.3" - nullthrows "^1.1.1" - ob1 "0.72.3" - source-map "^0.5.6" - vlq "^1.0.0" - -metro-symbolicate@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz#093d4f8c7957bcad9ca2ab2047caa90b1ee1b0c1" - integrity sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw== - dependencies: - invariant "^2.2.4" - metro-source-map "0.72.3" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-transform-plugins@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz#b00e5a9f24bff7434ea7a8e9108eebc8386b9ee4" - integrity sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg== - dependencies: - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.14.0" - nullthrows "^1.1.1" - -metro-transform-worker@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz#bdc6cc708ea114bc085e11d675b8ff626d7e6db7" - integrity sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ== - dependencies: - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/types" "^7.0.0" - babel-preset-fbjs "^3.4.0" - metro "0.72.3" - metro-babel-transformer "0.72.3" - metro-cache "0.72.3" - metro-cache-key "0.72.3" - metro-hermes-compiler "0.72.3" - metro-source-map "0.72.3" - metro-transform-plugins "0.72.3" - nullthrows "^1.1.1" - -metro@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.72.3.tgz#eb587037d62f48a0c33c8d88f26666b4083bb61e" - integrity sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - absolute-path "^0.0.0" - accepts "^1.3.7" - async "^3.2.2" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - fs-extra "^1.0.0" - graceful-fs "^4.2.4" - hermes-parser "0.8.0" - image-size "^0.6.0" - invariant "^2.2.4" - jest-worker "^27.2.0" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.72.3" - metro-cache "0.72.3" - metro-cache-key "0.72.3" - metro-config "0.72.3" - metro-core "0.72.3" - metro-file-map "0.72.3" - metro-hermes-compiler "0.72.3" - metro-inspector-proxy "0.72.3" - metro-minify-uglify "0.72.3" - metro-react-native-babel-preset "0.72.3" - metro-resolver "0.72.3" - metro-runtime "0.72.3" - metro-source-map "0.72.3" - metro-symbolicate "0.72.3" - metro-transform-plugins "0.72.3" - metro-transform-worker "0.72.3" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^2.5.4" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - temp "0.8.3" - throat "^5.0.0" - ws "^7.5.1" - yargs "^15.3.1" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.27, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.2, minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.1.23: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nocache@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" - integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch@^2.2.0, node-fetch@^2.6.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -node-stream-zip@^1.9.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -ob1@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.72.3.tgz#fc1efcfe156f12ed23615f2465a796faad8b91e4" - integrity sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^6.2.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -pretty-format@^26.5.2, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -promise@^8.0.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" - integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== - dependencies: - asap "~2.0.6" - -prompts@^2.4.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -query-string@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -react-devtools-core@4.24.0: - version "4.24.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.0.tgz#7daa196bdc64f3626b3f54f2ff2b96f7c4fdf017" - integrity sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -react-freeze@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.3.tgz#5e3ca90e682fed1d73a7cb50c2c7402b3e85618d" - integrity sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g== - -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0": - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-is@^16.13.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-native-codegen@^0.70.6: - version "0.70.6" - resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.70.6.tgz#2ce17d1faad02ad4562345f8ee7cbe6397eda5cb" - integrity sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw== - dependencies: - "@babel/parser" "^7.14.0" - flow-parser "^0.121.0" - jscodeshift "^0.13.1" - nullthrows "^1.1.1" - -react-native-gradle-plugin@^0.70.3: - version "0.70.3" - resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz#cbcf0619cbfbddaa9128701aa2d7b4145f9c4fc8" - integrity sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A== - -react-native-safe-area-context@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.5.0.tgz#9208313236e8f49e1920ac1e2a2c975f03aed284" - integrity sha512-0WORnk9SkREGUg2V7jHZbuN5x4vcxj/1B0QOcXJjdYWrzZHgLcUzYWWIUecUPJh747Mwjt/42RZDOaFn3L8kPQ== - -react-native-screens@^3.19.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.19.0.tgz#ec68685e04b074ebce4641b3a0ae7e2571629b75" - integrity sha512-Ehsmy7jr3H3j5pmN+/FqsAaIAD+k+xkcdePfLcg4rYRbN5X7fJPgaqhcmiCcZ0YxsU8ttsstP9IvRLNQuIkRRA== - dependencies: - react-freeze "^1.0.0" - warn-once "^0.1.0" - -react-native@0.70.4: - version "0.70.4" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.70.4.tgz#f2a3a7996431a47a45ce1f5097352c5721417516" - integrity sha512-1e4jWotS20AJ/4lGVkZQs2wE0PvCpIRmPQEQ1FyH7wdyuewFFIxbUHqy6vAj1JWVFfAzbDakOQofrIkkHWLqNA== - dependencies: - "@jest/create-cache-key-function" "^29.0.3" - "@react-native-community/cli" "9.2.1" - "@react-native-community/cli-platform-android" "9.2.1" - "@react-native-community/cli-platform-ios" "9.2.1" - "@react-native/assets" "1.0.0" - "@react-native/normalize-color" "2.0.0" - "@react-native/polyfills" "2.0.0" - abort-controller "^3.0.0" - anser "^1.4.9" - base64-js "^1.1.2" - event-target-shim "^5.0.1" - invariant "^2.2.4" - jsc-android "^250230.2.1" - memoize-one "^5.0.0" - metro-react-native-babel-transformer "0.72.3" - metro-runtime "0.72.3" - metro-source-map "0.72.3" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.0.3" - react-devtools-core "4.24.0" - react-native-codegen "^0.70.6" - react-native-gradle-plugin "^0.70.3" - react-refresh "^0.4.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "^0.22.0" - stacktrace-parser "^0.1.3" - use-sync-external-store "^1.0.0" - whatwg-fetch "^3.0.0" - ws "^6.1.4" - -react-refresh@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" - integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== - -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - -react@18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" - integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== - dependencies: - loose-envify "^1.1.0" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" - integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== - -recast@^0.20.4: - version "0.20.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" - integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== - dependencies: - ast-types "0.14.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.2: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpu-core@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.1.tgz#a69c26f324c1e962e9ffd0b88b055caba8089139" - integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsgen "^0.7.1" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -reselect@^4.0.0: - version "4.1.6" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" - integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@^1.13.1, resolve@^1.14.2: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rimraf@^2.5.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg== - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -scheduler@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" - integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== - dependencies: - loose-envify "^1.1.0" - -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-error@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" - integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== - -serve-static@^1.13.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shell-quote@^1.6.1, shell-quote@^1.7.3: - version "1.7.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.16: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -stacktrace-parser@^0.1.3: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -sudo-prompt@^9.0.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -temp@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - integrity sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw== - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tslib@^2.0.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -uglify-es@^3.1.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -use-latest-callback@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.5.tgz#a4a836c08fa72f6608730b5b8f4bbd9c57c04f51" - integrity sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ== - -use-sync-external-store@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vlq@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" - integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -warn-once@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43" - integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-fetch@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -ws@^6.1.4: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7, ws@^7.5.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.1.0, yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalAnimationConfig.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalAnimationConfig.swift deleted file mode 100644 index 56d629b6..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalAnimationConfig.swift +++ /dev/null @@ -1,105 +0,0 @@ -// -// AdaptiveModalAnimationConfig.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/23/23. -// - -import UIKit - -public struct AdaptiveModalAnimationConfig { - public var modalRotation: CGFloat?; - - public var modalScaleX: CGFloat?; - public var modalScaleY: CGFloat?; - - public var modalTranslateX: CGFloat?; - public var modalTranslateY: CGFloat?; - - public var modalBorderWidth: CGFloat?; - public var modalBorderColor: UIColor?; - - public var modalShadowColor: UIColor?; - public var modalShadowOffset: CGSize?; - public var modalShadowOpacity: CGFloat?; - public var modalShadowRadius: CGFloat?; - - public var modalCornerRadius: CGFloat?; - public var modalMaskedCorners: CACornerMask?; - - public var modalOpacity: CGFloat?; - public var modalBackgroundColor: UIColor?; - public var modalBackgroundOpacity: CGFloat?; - - public var modalBackgroundVisualEffect: UIVisualEffect?; - public var modalBackgroundVisualEffectOpacity: CGFloat?; - public var modalBackgroundVisualEffectIntensity: CGFloat?; - - public var backgroundColor: UIColor?; - public var backgroundOpacity: CGFloat?; - - public var backgroundVisualEffect: UIVisualEffect?; - public var backgroundVisualEffectOpacity: CGFloat?; - public var backgroundVisualEffectIntensity: CGFloat?; - - public init( - modalRotation: CGFloat? = nil, - modalScaleX: CGFloat? = nil, - modalScaleY: CGFloat? = nil, - modalTranslateX: CGFloat? = nil, - modalTranslateY: CGFloat? = nil, - modalBorderWidth: CGFloat? = nil, - modalBorderColor: UIColor? = nil, - modalShadowColor: UIColor? = nil, - modalShadowOffset: CGSize? = nil, - modalShadowOpacity: CGFloat? = nil, - modalShadowRadius: CGFloat? = nil, - modalCornerRadius: CGFloat? = nil, - modalMaskedCorners: CACornerMask? = nil, - modalOpacity: CGFloat? = nil, - modalBackgroundColor: UIColor? = nil, - modalBackgroundOpacity: CGFloat? = nil, - modalBackgroundVisualEffect: UIVisualEffect? = nil, - modalBackgroundVisualEffectOpacity: CGFloat? = nil, - modalBackgroundVisualEffectIntensity: CGFloat? = nil, - backgroundColor: UIColor? = nil, - backgroundOpacity: CGFloat? = nil, - backgroundVisualEffect: UIVisualEffect? = nil, - backgroundVisualEffectOpacity: CGFloat? = nil, - backgroundVisualEffectIntensity: CGFloat? = nil - ) { - self.modalRotation = modalRotation; - - self.modalScaleX = modalScaleX; - self.modalScaleY = modalScaleY; - - self.modalTranslateX = modalTranslateX; - self.modalTranslateY = modalTranslateY; - - self.modalBorderWidth = modalBorderWidth; - self.modalBorderColor = modalBorderColor; - - self.modalShadowColor = modalShadowColor; - self.modalShadowOffset = modalShadowOffset; - self.modalShadowOpacity = modalShadowOpacity; - self.modalShadowRadius = modalShadowRadius; - - self.modalCornerRadius = modalCornerRadius; - self.modalMaskedCorners = modalMaskedCorners; - - self.modalOpacity = modalOpacity; - self.modalBackgroundColor = modalBackgroundColor; - self.modalBackgroundOpacity = modalBackgroundOpacity; - - self.modalBackgroundVisualEffect = modalBackgroundVisualEffect; - self.modalBackgroundVisualEffectOpacity = modalBackgroundVisualEffectOpacity; - self.modalBackgroundVisualEffectIntensity = modalBackgroundVisualEffectIntensity; - - self.backgroundColor = backgroundColor; - self.backgroundOpacity = backgroundOpacity; - - self.backgroundVisualEffect = backgroundVisualEffect; - self.backgroundVisualEffectOpacity = backgroundVisualEffectOpacity; - self.backgroundVisualEffectIntensity = backgroundVisualEffectIntensity; - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalClampingConfig.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalClampingConfig.swift deleted file mode 100644 index f7bfdda1..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalClampingConfig.swift +++ /dev/null @@ -1,87 +0,0 @@ -// -// AdaptiveModalClampingConfig.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/28/23. -// - -import Foundation - -public struct AdaptiveModalClampingConfig { - public static let `default`: Self = .init(); - - public let shouldClampModalInitHeight: Bool; - public let shouldClampModalLastHeight: Bool; - - public let shouldClampModalInitWidth: Bool; - public let shouldClampModalLastWidth: Bool; - - public let shouldClampModalInitX: Bool; - public let shouldClampModalLastX: Bool; - - public let shouldClampModalInitY: Bool; - public let shouldClampModalLastY: Bool; - - public let shouldClampModalInitRotation: Bool; - public let shouldClampModalLastRotation: Bool; - - public let shouldClampModalInitScaleX: Bool; - public let shouldClampModalLastScaleX: Bool; - - public let shouldClampModalInitScaleY: Bool; - public let shouldClampModalLastScaleY: Bool; - - public let shouldClampModalInitTranslateX: Bool; - public let shouldClampModalLastTranslateX: Bool; - - public let shouldClampModalInitTranslateY: Bool; - public let shouldClampModalLastTranslateY: Bool; - - public init( - shouldClampModalInitHeight: Bool = false, - shouldClampModalLastHeight: Bool = false, - shouldClampModalInitWidth: Bool = false, - shouldClampModalLastWidth: Bool = false, - shouldClampModalInitX: Bool = false, - shouldClampModalLastX: Bool = false, - shouldClampModalInitY: Bool = false, - shouldClampModalLastY: Bool = false, - shouldClampModalInitRotation: Bool = true, - shouldClampModalLastRotation: Bool = true, - shouldClampModalInitScaleX: Bool = true, - shouldClampModalLastScaleX: Bool = true, - shouldClampModalInitScaleY: Bool = true, - shouldClampModalLastScaleY: Bool = true, - shouldClampModalInitTranslateX: Bool = true, - shouldClampModalLastTranslateX: Bool = true, - shouldClampModalInitTranslateY: Bool = true, - shouldClampModalLastTranslateY: Bool = true - ) { - self.shouldClampModalInitHeight = shouldClampModalInitHeight; - self.shouldClampModalLastHeight = shouldClampModalLastHeight; - - self.shouldClampModalInitWidth = shouldClampModalInitWidth; - self.shouldClampModalLastWidth = shouldClampModalLastWidth; - - self.shouldClampModalInitX = shouldClampModalInitX; - self.shouldClampModalLastX = shouldClampModalLastX; - - self.shouldClampModalInitY = shouldClampModalInitY; - self.shouldClampModalLastY = shouldClampModalLastY; - - self.shouldClampModalInitRotation = shouldClampModalInitRotation; - self.shouldClampModalLastRotation = shouldClampModalLastRotation; - - self.shouldClampModalInitScaleX = shouldClampModalInitScaleX; - self.shouldClampModalLastScaleX = shouldClampModalLastScaleX; - - self.shouldClampModalInitScaleY = shouldClampModalInitScaleY; - self.shouldClampModalLastScaleY = shouldClampModalLastScaleY; - - self.shouldClampModalInitTranslateX = shouldClampModalInitTranslateX; - self.shouldClampModalLastTranslateX = shouldClampModalLastTranslateX; - - self.shouldClampModalInitTranslateY = shouldClampModalInitTranslateY; - self.shouldClampModalLastTranslateY = shouldClampModalLastTranslateY; - } -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalConfig.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalConfig.swift deleted file mode 100644 index c8d3251d..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalConfig.swift +++ /dev/null @@ -1,137 +0,0 @@ -// -// AdaptiveModalConfig.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/23/23. -// - -import UIKit - -public struct AdaptiveModalConfig { - - // MARK: - Types - // ------------- - - public enum Direction { - case bottomToTop; - case topToBottom; - case leftToRight; - case rightToLeft; - }; - - public enum SnapPercentStrategy { - case index; - case position; - }; - - // MARK: - Properties - // ------------------ - - public let baseSnapPoints: [AdaptiveModalSnapPointConfig]; - public let snapDirection: Direction; - - public let snapPercentStrategy: SnapPercentStrategy; - - public let snapAnimationConfig: AdaptiveModalSnapAnimationConfig; - public let interpolationClampingConfig: AdaptiveModalClampingConfig; - - public let undershootSnapPoint: AdaptiveModalSnapPointPreset; - public let overshootSnapPoint: AdaptiveModalSnapPointPreset; - - // the first snap point to snap to when the modal is first shown - public let initialSnapPointIndex: Int; - - // let entranceConfig: AdaptiveModalEntranceConfig; - // let snapSwipeVelocityThreshold: CGFloat = 0; - - // MARK: - Computed Properties - // --------------------------- - - public var snapPoints: [AdaptiveModalSnapPointConfig] { - .Element.deriveSnapPoints( - undershootSnapPoint: self.undershootSnapPoint, - inBetweenSnapPoints: self.baseSnapPoints, - overshootSnapPoint: self.overshootSnapPoint - ); - }; - - public var overshootSnapPointIndex: Int { - self.snapPoints.count - 1; - }; - - /// Defines which axis of the gesture point to use to drive the interpolation - /// of the modal snap points - /// - public var inputValueKeyForPoint: KeyPath { - switch self.snapDirection { - case .topToBottom, .bottomToTop: return \.y; - case .leftToRight, .rightToLeft: return \.x; - }; - }; - - public var inputValueKeyForRect: KeyPath { - switch self.snapDirection { - case .bottomToTop: return \.minY; - case .topToBottom: return \.maxY; - case .leftToRight: return \.maxX; - case .rightToLeft: return \.minX; - }; - }; - - public var maxInputRangeKeyForRect: KeyPath { - switch self.snapDirection { - case .bottomToTop, .topToBottom: return \.height; - case .leftToRight, .rightToLeft: return \.width; - }; - }; - - public var shouldInvertPercent: Bool { - switch self.snapDirection { - case .bottomToTop, .rightToLeft: return true; - default: return false; - }; - }; - - // MARK: - Init - // ------------ - - public init( - snapPoints: [AdaptiveModalSnapPointConfig], - snapDirection: Direction, - snapPercentStrategy: SnapPercentStrategy = .position, - snapAnimationConfig: AdaptiveModalSnapAnimationConfig = .default, - interpolationClampingConfig: AdaptiveModalClampingConfig = .default, - initialSnapPointIndex: Int = 1, - undershootSnapPoint: AdaptiveModalSnapPointPreset? = nil, - overshootSnapPoint: AdaptiveModalSnapPointPreset? = nil - ) { - self.baseSnapPoints = snapPoints; - - self.snapDirection = snapDirection; - self.snapPercentStrategy = snapPercentStrategy; - - self.snapAnimationConfig = snapAnimationConfig; - self.interpolationClampingConfig = interpolationClampingConfig; - - self.initialSnapPointIndex = initialSnapPointIndex; - - self.undershootSnapPoint = undershootSnapPoint - ?? .getDefaultUnderShootSnapPoint(forDirection: snapDirection); - - self.overshootSnapPoint = overshootSnapPoint - ?? .getDefaultOvershootSnapPoint(forDirection: snapDirection); - }; - - // MARK: - Functions - // ----------------- - - public func sortInterpolationSteps(_ array: [T]) -> [T] { - switch self.snapDirection { - case .bottomToTop, .leftToRight: - return array; - - case .topToBottom, .rightToLeft: - return array.reversed(); - }; - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalEventNotifiable.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalEventNotifiable.swift deleted file mode 100644 index 296275ea..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalEventNotifiable.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// AdaptiveModalEventNotifiable.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/4/23. -// - -import Foundation - - -public protocol AdaptiveModalEventNotifiable: AnyObject { - - func notifyOnModalWillSnap( - prevSnapPointIndex: Int?, - nextSnapPointIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint - ); - - func notifyOnModalDidSnap( - prevSnapPointIndex: Int?, - currentSnapPointIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint - ); -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalInterpolationPoint.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalInterpolationPoint.swift deleted file mode 100644 index 55ede9fc..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalInterpolationPoint.swift +++ /dev/null @@ -1,357 +0,0 @@ -// -// AdaptiveModalInterpolationPoint.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/29/23. -// - -import UIKit - -public struct AdaptiveModalInterpolationPoint: Equatable { - - // MARK: - Properties - // ------------------ - - public var percent: CGFloat; - public var snapPointIndex: Int; - - /// The computed frames of the modal based on the snap points - public var computedRect: CGRect; - - // MARK: - Properties - Keyframes - // ------------------------------ - - public var modalRotation: CGFloat; - - public var modalScaleX: CGFloat; - public var modalScaleY: CGFloat; - - public var modalTranslateX: CGFloat; - public var modalTranslateY: CGFloat; - - public var modalBorderWidth: CGFloat; - public var modalBorderColor: UIColor; - - public var modalShadowColor: UIColor; - public var modalShadowOffset: CGSize; - public var modalShadowOpacity: CGFloat; - public var modalShadowRadius: CGFloat; - - public var modalCornerRadius: CGFloat; - public var modalMaskedCorners: CACornerMask; - - public var modalOpacity: CGFloat; - public var modalBackgroundColor: UIColor; - public var modalBackgroundOpacity: CGFloat; - - public var modalBackgroundVisualEffect: UIVisualEffect?; - public var modalBackgroundVisualEffectOpacity: CGFloat; - public var modalBackgroundVisualEffectIntensity: CGFloat; - - public var backgroundColor: UIColor; - public var backgroundOpacity: CGFloat; - - public var backgroundVisualEffect: UIVisualEffect?; - public var backgroundVisualEffectOpacity: CGFloat; - public var backgroundVisualEffectIntensity: CGFloat; - - // MARK: - Computed Properties - // --------------------------- - - public var modalTransforms: [CGAffineTransform] { - var transforms: [CGAffineTransform] = []; - - transforms.append( - .init(rotationAngle: self.modalRotation) - ); - - transforms.append( - .init(scaleX: self.modalScaleX, y: self.modalScaleY) - ); - - transforms.append( - .init(translationX: self.modalTranslateX, y: modalTranslateY) - ); - - return transforms; - }; - - public var modalTransform: CGAffineTransform { - self.modalTransforms.reduce(.identity){ - $0.concatenating($1); - }; - }; - - // MARK: - Functions - // ----------------- - - func getModalTransform( - shouldApplyRotation: Bool = true, - shouldApplyScale: Bool = true, - shouldApplyTranslate: Bool = true - ) -> CGAffineTransform { - - var transforms: [CGAffineTransform] = []; - - if shouldApplyRotation, - self.modalRotation != 0 { - - transforms.append( - .init(rotationAngle: self.modalRotation) - ); - }; - - if shouldApplyScale, - self.modalScaleX != 1 && self.modalScaleY != 1 { - - transforms.append( - .init(scaleX: self.modalScaleX, y: self.modalScaleY) - ); - }; - - if shouldApplyTranslate, - self.modalTranslateX != 0 && self.modalTranslateY != 0 { - - transforms.append( - .init(translationX: self.modalTranslateX, y: self.modalTranslateY) - ); - }; - - if transforms.isEmpty { - return .identity; - }; - - return transforms.reduce(.identity){ - $0.concatenating($1); - }; - }; - - func apply( - toModalView modalView: UIView, - toModalWrapperView modalWrapperView: UIView, - toModalWrapperTransformView modalWrapperTransformView: UIView?, - toModalWrapperShadowView modalWrapperShadowView: UIView?, - toDummyModalView dummyModalView: UIView, - toModalBackgroundView modalBgView: UIView?, - toBackgroundView bgView: UIView?, - toModalBackgroundEffectView modalBgEffectView: UIVisualEffectView?, - toBackgroundVisualEffectView bgVisualEffectView: UIVisualEffectView? - ){ - modalView.alpha = self.modalOpacity; - - modalView.layer.cornerRadius = self.modalCornerRadius; - modalView.layer.maskedCorners = self.modalMaskedCorners; - - modalWrapperView.frame = self.computedRect; - - if let view = modalWrapperTransformView { - view.transform = self.modalTransform; - }; - - if let view = modalWrapperShadowView { - // border - view.layer.borderWidth = self.modalBorderWidth; - view.layer.borderColor = self.modalBorderColor.cgColor; - - // shadow - view.layer.shadowColor = self.modalShadowColor.cgColor; - view.layer.shadowOffset = self.modalShadowOffset; - view.layer.shadowOpacity = Float(self.modalShadowOpacity); - view.layer.shadowRadius = self.modalShadowRadius; - }; - - dummyModalView.frame = self.computedRect; - - if let view = modalBgView { - view.alpha = self.modalBackgroundOpacity; - view.backgroundColor = self.modalBackgroundColor; - }; - - if let bgView = bgView { - bgView.alpha = self.backgroundOpacity; - bgView.backgroundColor = self.backgroundColor; - }; - - if let effectView = modalBgEffectView { - effectView.alpha = self.modalBackgroundVisualEffectOpacity; - }; - - if let effectView = bgVisualEffectView { - effectView.alpha = self.backgroundVisualEffectOpacity; - }; - }; -}; - -// MARK: - Init -// ------------ - -public extension AdaptiveModalInterpolationPoint { - - init( - usingModalConfig modalConfig: AdaptiveModalConfig, - snapPointIndex: Int, - percent: CGFloat? = nil, - layoutValueContext context: RNILayoutValueContext, - snapPointConfig: AdaptiveModalSnapPointConfig, - prevInterpolationPoint keyframePrev: Self? = nil - ) { - self.snapPointIndex = snapPointIndex; - - let computedRect = snapPointConfig.snapPoint.computeRect( - usingLayoutValueContext: context - ); - - self.computedRect = computedRect; - - self.percent = percent ?? { - switch modalConfig.snapPercentStrategy { - case .position: - let maxRangeInput = - context.targetRect[keyPath: modalConfig.maxInputRangeKeyForRect]; - - let inputValue = - computedRect[keyPath: modalConfig.inputValueKeyForRect]; - - let percent = inputValue / maxRangeInput; - - return modalConfig.shouldInvertPercent - ? AdaptiveModalUtilities.invertPercent(percent) - : percent; - - case .index: - let current = CGFloat(snapPointIndex + 1); - let max = CGFloat(modalConfig.snapPoints.count); - - return current / max; - }; - }(); - - let isFirstSnapPoint = snapPointIndex == 0; - let keyframeCurrent = snapPointConfig.animationKeyframe; - - self.modalRotation = keyframeCurrent?.modalRotation - ?? keyframePrev?.modalRotation - ?? 0; - - self.modalScaleX = keyframeCurrent?.modalScaleX - ?? keyframePrev?.modalScaleX - ?? 1; - - self.modalScaleY = keyframeCurrent?.modalScaleY - ?? keyframePrev?.modalScaleY - ?? 1; - - self.modalTranslateX = keyframeCurrent?.modalTranslateX - ?? keyframePrev?.modalTranslateX - ?? 0; - - self.modalTranslateY = keyframeCurrent?.modalTranslateY - ?? keyframePrev?.modalTranslateY - ?? 0; - - self.modalBorderWidth = keyframeCurrent?.modalBorderWidth - ?? keyframePrev?.modalBorderWidth - ?? 0; - - self.modalBorderColor = keyframeCurrent?.modalBorderColor - ?? keyframePrev?.modalBorderColor - ?? .black; - - self.modalShadowColor = keyframeCurrent?.modalShadowColor - ?? keyframePrev?.modalShadowColor - ?? .black; - - self.modalShadowOffset = keyframeCurrent?.modalShadowOffset - ?? keyframePrev?.modalShadowOffset - ?? .zero; - - self.modalShadowOpacity = keyframeCurrent?.modalShadowOpacity - ?? keyframePrev?.modalShadowOpacity - ?? 0; - - self.modalShadowRadius = keyframeCurrent?.modalShadowRadius - ?? keyframePrev?.modalShadowRadius - ?? 0; - - self.modalCornerRadius = keyframeCurrent?.modalCornerRadius - ?? keyframePrev?.modalCornerRadius - ?? 0; - - self.modalMaskedCorners = keyframeCurrent?.modalMaskedCorners - ?? keyframePrev?.modalMaskedCorners - ?? .allCorners; - - self.modalOpacity = keyframeCurrent?.modalOpacity - ?? keyframePrev?.modalOpacity - ?? 1; - - self.modalBackgroundColor = keyframeCurrent?.modalBackgroundColor - ?? keyframePrev?.modalBackgroundColor - ?? .systemBackground; - - self.modalBackgroundOpacity = keyframeCurrent?.modalBackgroundOpacity - ?? keyframePrev?.modalBackgroundOpacity - ?? 1; - - self.modalBackgroundVisualEffect = keyframeCurrent?.modalBackgroundVisualEffect - ?? keyframePrev?.modalBackgroundVisualEffect; - - self.modalBackgroundVisualEffectOpacity = keyframeCurrent?.modalBackgroundVisualEffectOpacity - ?? keyframePrev?.modalBackgroundVisualEffectOpacity - ?? 1; - - self.modalBackgroundVisualEffectIntensity = keyframeCurrent?.modalBackgroundVisualEffectIntensity - ?? keyframePrev?.modalBackgroundVisualEffectIntensity - ?? (isFirstSnapPoint ? 0 : 1); - - self.backgroundColor = keyframeCurrent?.backgroundColor - ?? keyframePrev?.backgroundColor - ?? .black; - - self.backgroundOpacity = keyframeCurrent?.backgroundOpacity - ?? keyframePrev?.backgroundOpacity - ?? 0; - - self.backgroundVisualEffect = keyframeCurrent?.backgroundVisualEffect - ?? keyframePrev?.backgroundVisualEffect; - - self.backgroundVisualEffectOpacity = keyframeCurrent?.backgroundVisualEffectOpacity - ?? keyframePrev?.backgroundVisualEffectOpacity - ?? 1; - - self.backgroundVisualEffectIntensity = keyframeCurrent?.backgroundVisualEffectIntensity - ?? keyframePrev?.backgroundVisualEffectIntensity - ?? (isFirstSnapPoint ? 0 : 1); - }; -}; - -// MARK: - Helpers -// --------------- - -public extension AdaptiveModalInterpolationPoint { - - static func compute( - usingModalConfig modalConfig: AdaptiveModalConfig, - snapPoints: [AdaptiveModalSnapPointConfig]? = nil, - layoutValueContext context: RNILayoutValueContext - ) -> [Self] { - - let snapPoints = snapPoints ?? modalConfig.snapPoints; - var items: [AdaptiveModalInterpolationPoint] = []; - - for (index, snapConfig) in snapPoints.enumerated() { - items.append( - AdaptiveModalInterpolationPoint( - usingModalConfig: modalConfig, - snapPointIndex: index, - layoutValueContext: context, - snapPointConfig: snapConfig, - prevInterpolationPoint: items.last - ) - ); - }; - - return items; - }; -}; - diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalKeyframePropertyAnimator.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalKeyframePropertyAnimator.swift deleted file mode 100644 index d4e003a8..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalKeyframePropertyAnimator.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// AdaptiveModalPropertyAnimator.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/5/23. -// - -import UIKit - - -public struct AdaptiveModalKeyframePropertyAnimator { - - public var animator: UIViewPropertyAnimator; - - private weak var component: UIView?; - - public init( - interpolationPoints: [AdaptiveModalInterpolationPoint], - forComponent component: T, - animation: @escaping ( - _ component: T, - _ interpolationPoint: AdaptiveModalInterpolationPoint - ) -> Void - ){ - let animator = UIViewPropertyAnimator(duration: 1, curve: .linear); - - self.animator = animator; - self.component = component; - - animator.addAnimations { - UIView.addKeyframe( - withRelativeStartTime: 0, - relativeDuration: 1 - ){ - component.transform = .identity; - }; - - for interpolationPoint in interpolationPoints { - UIView.addKeyframe( - withRelativeStartTime: interpolationPoint.percent, - relativeDuration: 0 - ){ - animation(component, interpolationPoint); - }; - }; - }; - }; - - public func setFractionComplete(forPercent percent: CGFloat) { - self.animator.fractionComplete = 0; - }; - - public func clear(){ - self.animator.stopAnimation(true); - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift deleted file mode 100644 index 6605daa2..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/8/23. -// - -import UIKit - -extension AdaptiveModalManager: UIViewControllerAnimatedTransitioning { - - public func transitionDuration( - using transitionContext: UIViewControllerContextTransitioning? - ) -> TimeInterval { - - return self.modalConfig.snapAnimationConfig.springAnimationSettlingTime; - }; - - public func animateTransition( - using transitionContext: UIViewControllerContextTransitioning - ) { - guard let fromVC = transitionContext.viewController(forKey: .from) - else { return }; - - switch self.presentationState { - case .presenting: - self.targetView = transitionContext.containerView; - self.targetViewController = fromVC; - - self.prepareForPresentation(); - - self.showModal() { - transitionContext.completeTransition(true); - }; - - case .dismissing: - self.hideModal(){ - transitionContext.completeTransition(true); - }; - - case .none: - break; - }; - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift deleted file mode 100644 index 5d9cb65a..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/8/23. -// - -import UIKit - -extension AdaptiveModalManager: UIAdaptivePresentationControllerDelegate { - - public func adaptivePresentationStyle( - for controller: UIPresentationController, - traitCollection: UITraitCollection - ) -> UIModalPresentationStyle { - - return .custom; - }; -}; - - -extension AdaptiveModalManager: UIViewControllerTransitioningDelegate { - - public func presentationController( - forPresented presented: UIViewController, - presenting: UIViewController?, - source: UIViewController - ) -> UIPresentationController? { - - let presentationController = AdaptiveModalPresentationController( - presentedViewController: presented, - presenting: presenting, - modalManager: self - ); - - presentationController.delegate = self; - return presentationController; - }; - - public func animationController( - forPresented presented: UIViewController, - presenting: UIViewController, - source: UIViewController - ) -> UIViewControllerAnimatedTransitioning? { - - self.presentationState = .presenting; - return self; - }; - - public func animationController( - forDismissed dismissed: UIViewController - ) -> UIViewControllerAnimatedTransitioning? { - - self.presentationState = .dismissing; - return self; - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager.swift deleted file mode 100644 index ffdcb67d..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalManager.swift +++ /dev/null @@ -1,2118 +0,0 @@ -// -// AdaptiveModalManager.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/24/23. -// - -import UIKit - -public class AdaptiveModalManager: NSObject { - - public enum PresentationState { - case presenting, dismissing, none; - }; - - // MARK: - Properties - Config-Related - // ------------------------------------ - - public var modalConfig: AdaptiveModalConfig; - - public var enableSnapping = true; - public var enableOverShooting = true; - - public var shouldSnapToUnderShootSnapPoint = true; - public var shouldSnapToOvershootSnapPoint = false; - - public var shouldDismissModalOnSnapToUnderShootSnapPoint = true; - public var shouldDismissModalOnSnapToOverShootSnapPoint = false; - - // MARK: - Properties - Layout-Related - // ------------------------------------ - - public weak var modalViewController: UIViewController?; - public weak var targetViewController: UIViewController?; - - public weak var targetView: UIView?; - public weak var modalView: UIView?; - - public lazy var dummyModalView = UIView(); - public lazy var modalWrapperView = UIView(); - public lazy var modalWrapperTransformView = UIView(); - public lazy var modalWrapperShadowView = UIView(); - - public private(set) var prevModalFrame: CGRect = .zero; - - public private(set) var modalBackgroundView: UIView?; - public private(set) var modalBackgroundVisualEffectView: UIVisualEffectView?; - - public private(set) var backgroundDimmingView: UIView?; - public private(set) var backgroundVisualEffectView: UIVisualEffectView?; - - public private(set) var modalFrame: CGRect! { - set { - guard let newValue = newValue else { return }; - self.prevModalFrame = dummyModalView.frame; - - self.modalWrapperView.frame = newValue; - self.dummyModalView.frame = newValue; - } - get { - self.dummyModalView.frame; - } - }; - - private var layoutKeyboardValues: RNILayoutKeyboardValues?; - - private var layoutValueContext: RNILayoutValueContext { - let context: RNILayoutValueContext? = { - if let targetVC = self.targetViewController { - return .init( - fromTargetViewController: targetVC, - keyboardValues: self.layoutKeyboardValues - ); - }; - - if let targetView = self.targetView { - return .init( - fromTargetView: targetView, - keyboardValues: self.layoutKeyboardValues - ); - }; - - return nil; - }(); - - return context ?? .default; - }; - - // MARK: - Properties - Config Interpolation Points - // ------------------------------------------------- - - /// The computed frames of the modal based on the snap points - private(set) var configInterpolationSteps: [AdaptiveModalInterpolationPoint]!; - - var currentConfigInterpolationStep: AdaptiveModalInterpolationPoint { - self.interpolationSteps[self.currentInterpolationIndex]; - }; - - private var configInterpolationRangeInput: [CGFloat]! { - self.interpolationSteps.map { $0.percent }; - }; - - var prevConfigInterpolationIndex = 0; - var nextConfigInterpolationIndex: Int?; - - var currentConfigInterpolationIndex = 0 { - didSet { - self.prevConfigInterpolationIndex = oldValue; - } - }; - - // MARK: - Properties - Override Interpolation Points - // --------------------------------------------------- - - private(set) var isOverridingSnapPoints = false; - - var prevOverrideInterpolationIndex = 0; - var nextOverrideInterpolationIndex: Int?; - - var currentOverrideInterpolationIndex = 0 { - didSet { - self.prevOverrideInterpolationIndex = oldValue; - } - }; - - var overrideSnapPoints: [AdaptiveModalSnapPointConfig]?; - var overrideInterpolationPoints: [AdaptiveModalInterpolationPoint]?; - - var currentOverrideInterpolationStep: AdaptiveModalInterpolationPoint? { - self.overrideInterpolationPoints?[self.currentOverrideInterpolationIndex]; - }; - - private var shouldUseOverrideSnapPoints: Bool { - self.isOverridingSnapPoints - && self.overrideSnapPoints != nil - && self.overrideInterpolationPoints != nil - }; - - private var shouldClearOverrideSnapPoints: Bool { - self.shouldUseOverrideSnapPoints - && self.currentOverrideInterpolationIndex < overrideInterpolationPoints!.count - 2 - && self.presentationState != .dismissing - }; - - // MARK: - Properties - Interpolation Points - // ------------------------------------------ - - public private(set) var prevInterpolationIndex: Int { - get { - self.shouldSnapToOvershootSnapPoint - ? self.prevOverrideInterpolationIndex - : self.prevConfigInterpolationIndex; - } - set { - if self.shouldSnapToOvershootSnapPoint { - self.prevOverrideInterpolationIndex = newValue; - - } else { - self.prevConfigInterpolationIndex = newValue; - }; - } - }; - - public private(set) var nextInterpolationIndex: Int? { - get { - self.shouldSnapToOvershootSnapPoint - ? self.nextOverrideInterpolationIndex - : self.nextConfigInterpolationIndex; - } - set { - if self.shouldSnapToOvershootSnapPoint { - self.nextOverrideInterpolationIndex = newValue; - - } else { - self.nextConfigInterpolationIndex = newValue; - }; - } - }; - - public private(set) var currentInterpolationIndex: Int { - get { - self.shouldUseOverrideSnapPoints - ? self.currentOverrideInterpolationIndex - : self.currentConfigInterpolationIndex; - } - set { - if self.shouldUseOverrideSnapPoints { - self.currentOverrideInterpolationIndex = newValue; - - } else { - self.currentConfigInterpolationIndex = newValue; - }; - } - }; - - public private(set) var interpolationSteps: [AdaptiveModalInterpolationPoint]! { - get { - self.shouldUseOverrideSnapPoints - ? self.overrideInterpolationPoints - : self.configInterpolationSteps - } - set { - if self.shouldSnapToOvershootSnapPoint { - self.overrideInterpolationPoints = newValue; - - } else { - self.configInterpolationSteps = newValue; - }; - } - }; - - public var currentInterpolationStep: AdaptiveModalInterpolationPoint { - self.interpolationSteps[self.currentInterpolationIndex]; - }; - - public var interpolationRangeInput: [CGFloat]! { - self.interpolationSteps.map { $0.percent }; - }; - - public var interpolationRangeMaxInput: CGFloat? { - guard let targetView = self.targetView else { return nil }; - return targetView.frame[keyPath: self.modalConfig.maxInputRangeKeyForRect]; - }; - - public var currentSnapPointConfig: AdaptiveModalSnapPointConfig { - self.modalConfig.snapPoints[ - self.currentInterpolationStep.snapPointIndex - ]; - }; - - // MARK: - Properties - Animation-Related - // --------------------------------------- - - private var modalAnimator: UIViewPropertyAnimator?; - - private var backgroundVisualEffectAnimator: AdaptiveModalRangePropertyAnimator?; - private var modalBackgroundVisualEffectAnimator: AdaptiveModalRangePropertyAnimator?; - - private var displayLink: CADisplayLink?; - private var displayLinkStartTimestamp: CFTimeInterval?; - - private var displayLinkEndTimestamp: CFTimeInterval? { - guard let animator = self.modalAnimator, - let displayLinkStartTimestamp = self.displayLinkStartTimestamp - else { return nil }; - - return displayLinkStartTimestamp + animator.duration; - }; - - private var rangeAnimators: [AdaptiveModalRangePropertyAnimator?] {[ - self.backgroundVisualEffectAnimator, - self.modalBackgroundVisualEffectAnimator - ]}; - - // MARK: - Properties - Gesture-Related - // ------------------------------------- - - private var gestureOffset: CGPoint?; - private var gestureVelocity: CGPoint?; - private var gestureInitialPoint: CGPoint?; - private var gesturePoint: CGPoint?; - - private var gestureInitialVelocity: CGVector { - guard let gestureInitialPoint = self.gestureInitialPoint, - let gestureFinalPoint = self.gesturePoint, - let gestureVelocity = self.gestureVelocity - else { - return .zero; - }; - - let gestureInitialCoord = - gestureInitialPoint[keyPath: self.modalConfig.inputValueKeyForPoint]; - - let gestureFinalCoord = - gestureFinalPoint[keyPath: self.modalConfig.inputValueKeyForPoint]; - - let gestureVelocityCoord = - gestureVelocity[keyPath: self.modalConfig.inputValueKeyForPoint]; - - var velocity: CGFloat = 0; - let distance = gestureFinalCoord - gestureInitialCoord; - - if distance != 0 { - velocity = gestureVelocityCoord / distance; - }; - - let snapAnimationConfig = self.modalConfig.snapAnimationConfig; - - velocity = velocity.clamped( - min: -snapAnimationConfig.maxGestureVelocity, - max: snapAnimationConfig.maxGestureVelocity - ); - - return CGVector(dx: velocity, dy: velocity); - }; - - /// Based on the gesture's velocity and it's current position, estimate - /// where would it eventually "stop" (i.e. it's final position) if it were to - /// decelerate over time - /// - private var gestureFinalPoint: CGPoint? { - guard let gesturePoint = self.gesturePoint, - let gestureVelocity = self.gestureVelocity - else { return nil }; - - let maxVelocity: CGFloat = 300; - - let gestureVelocityClamped = CGPoint( - x: (gestureVelocity.x / 2).clamped(minMax: maxVelocity), - y: (gestureVelocity.y / 2).clamped(minMax: maxVelocity) - ); - - let nextX = AdaptiveModalUtilities.computeFinalPosition( - position: gesturePoint.x, - initialVelocity: gestureVelocityClamped.x - ); - - let nextY = AdaptiveModalUtilities.computeFinalPosition( - position: gesturePoint.y, - initialVelocity: gestureVelocityClamped.y - ); - - return CGPoint(x: nextX, y: nextY); - }; - - private var computedGestureOffset: CGPoint? { - guard let gestureInitialPoint = self.gestureInitialPoint, - let modalRect = self.modalFrame - else { return nil }; - - if let gestureOffset = self.gestureOffset { - return gestureOffset; - }; - - let xOffset: CGFloat = { - switch self.modalConfig.snapDirection { - case .bottomToTop, .rightToLeft: - return gestureInitialPoint.x - modalRect.minX; - - case .topToBottom, .leftToRight: - return modalRect.maxX - gestureInitialPoint.x; - }; - }(); - - let yOffset: CGFloat = { - switch self.modalConfig.snapDirection { - case .bottomToTop, .rightToLeft: - return gestureInitialPoint.y - modalRect.minY; - - case .topToBottom, .leftToRight: - return modalRect.maxY - gestureInitialPoint.y; - }; - }(); - - let offset = CGPoint(x: xOffset, y: yOffset); - self.gestureOffset = offset; - - return offset; - }; - - // MARK: - Properties - // ------------------- - - private var didTriggerSetup = false; - var presentationState: PresentationState = .none; - - weak var eventDelegate: AdaptiveModalEventNotifiable?; - - // MARK: - Computed Properties - // --------------------------- - - public var isSwiping: Bool { - self.gestureInitialPoint != nil - }; - - public var isAnimating: Bool { - self.modalAnimator != nil || (self.modalAnimator?.isRunning ?? false); - }; - - public var currentSnapPointIndex: Int { - self.currentInterpolationStep.snapPointIndex - }; - - // MARK: - Init - // ------------ - - public init(modalConfig: AdaptiveModalConfig) { - self.modalConfig = modalConfig; - - super.init(); - self.computeSnapPoints(); - }; - - deinit { - self.clearAnimators(); - self.removeObservers(); - }; - - // MARK: - Functions - Setup - // ------------------------- - - private func setupObservers(){ - NotificationCenter.default.addObserver(self, - selector: #selector(self.onKeyboardWillShow(notification:)), - name: UIResponder.keyboardWillShowNotification, - object: nil - ); - - NotificationCenter.default.addObserver(self, - selector: #selector(self.onKeyboardDidShow(notification:)), - name: UIResponder.keyboardDidShowNotification, - object: nil - ); - - NotificationCenter.default.addObserver(self, - selector: #selector(self.onKeyboardWillHide(notification:)), - name: UIResponder.keyboardWillHideNotification, - object: nil - ); - - NotificationCenter.default.addObserver(self, - selector: #selector(self.onKeyboardDidHide(notification:)), - name: UIResponder.keyboardDidHideNotification, - object: nil - ); - - NotificationCenter.default.addObserver(self, - selector: #selector(self.onKeyboardWillChange(notification:)), - name: UIResponder.keyboardWillChangeFrameNotification, - object: nil - ); - - NotificationCenter.default.addObserver(self, - selector: #selector(self.onKeyboardDidChange(notification:)), - name: UIResponder.keyboardDidChangeFrameNotification, - object: nil - ); - }; - - func setupViewControllers() { - guard let modalVC = self.modalViewController else { return }; - - modalVC.modalPresentationStyle = .overCurrentContext; - modalVC.transitioningDelegate = self; - }; - - func setupInitViews() { - self.modalBackgroundView = UIView(); - self.modalBackgroundVisualEffectView = UIVisualEffectView(); - - self.backgroundDimmingView = UIView(); - self.backgroundVisualEffectView = UIVisualEffectView(); - }; - - func setupGestureHandler() { - guard let modalView = self.modalView else { return }; - - modalView.gestureRecognizers?.removeAll(); - - modalView.addGestureRecognizer( - UIPanGestureRecognizer( - target: self, - action: #selector(self.onDragPanGesture(_:)) - ) - ); - }; - - func setupDummyModalView() { - guard let targetView = self.targetView else { return }; - let dummyModalView = self.dummyModalView; - - dummyModalView.backgroundColor = .clear; - dummyModalView.alpha = 0.1; - dummyModalView.isUserInteractionEnabled = false; - - targetView.addSubview(dummyModalView); - }; - - func setupAddViews() { - guard let modalView = self.modalView, - let targetView = self.targetView - else { return }; - - if let bgVisualEffectView = self.backgroundVisualEffectView { - targetView.addSubview(bgVisualEffectView); - - bgVisualEffectView.clipsToBounds = true; - bgVisualEffectView.backgroundColor = .clear; - bgVisualEffectView.isUserInteractionEnabled = false; - }; - - if let bgDimmingView = self.backgroundDimmingView { - targetView.addSubview(bgDimmingView); - - bgDimmingView.clipsToBounds = true; - bgDimmingView.backgroundColor = .black; - bgDimmingView.alpha = 0; - }; - - let wrapperViews = [ - self.modalWrapperView, - self.modalWrapperTransformView, - self.modalWrapperShadowView, - modalView, - ]; - - wrapperViews.enumerated().forEach { - guard let prev = wrapperViews[safeIndex: $0.offset - 1] else { - targetView.addSubview($0.element); - return; - }; - - prev.addSubview($0.element); - }; - - modalView.clipsToBounds = true; - modalView.backgroundColor = .clear; - - if let modalBackgroundView = self.modalBackgroundView { - modalView.addSubview(modalBackgroundView); - modalView.sendSubviewToBack(modalBackgroundView); - - modalBackgroundView.backgroundColor = .systemBackground; - modalBackgroundView.isUserInteractionEnabled = false; - }; - - if let modalBGVisualEffectView = self.modalBackgroundVisualEffectView { - modalView.addSubview(modalBGVisualEffectView); - modalView.sendSubviewToBack(modalBGVisualEffectView); - - modalBGVisualEffectView.clipsToBounds = true; - modalBGVisualEffectView.backgroundColor = .clear; - modalBGVisualEffectView.isUserInteractionEnabled = false; - }; - }; - - func setupViewConstraints() { - guard let modalView = self.modalView, - let targetView = self.targetView - else { return }; - - if let bgVisualEffectView = self.backgroundVisualEffectView { - bgVisualEffectView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - bgVisualEffectView.topAnchor .constraint(equalTo: targetView.topAnchor ), - bgVisualEffectView.bottomAnchor .constraint(equalTo: targetView.bottomAnchor ), - bgVisualEffectView.leadingAnchor .constraint(equalTo: targetView.leadingAnchor ), - bgVisualEffectView.trailingAnchor.constraint(equalTo: targetView.trailingAnchor), - ]); - }; - - let wrapperViews = [ - self.modalWrapperTransformView, - self.modalWrapperShadowView, - modalView, - ]; - - wrapperViews.forEach { - guard let parentView = $0.superview else { return }; - $0.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - $0.centerXAnchor.constraint(equalTo: parentView.centerXAnchor), - $0.centerYAnchor.constraint(equalTo: parentView.centerYAnchor), - $0.widthAnchor .constraint(equalTo: parentView.widthAnchor ), - $0.heightAnchor .constraint(equalTo: parentView.heightAnchor ), - ]); - }; - - if let bgDimmingView = self.backgroundDimmingView { - bgDimmingView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - bgDimmingView.topAnchor .constraint(equalTo: targetView.topAnchor ), - bgDimmingView.bottomAnchor .constraint(equalTo: targetView.bottomAnchor ), - bgDimmingView.leadingAnchor .constraint(equalTo: targetView.leadingAnchor ), - bgDimmingView.trailingAnchor.constraint(equalTo: targetView.trailingAnchor), - ]); - }; - - if let modalBGView = self.modalBackgroundView { - modalBGView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - modalBGView.centerXAnchor.constraint(equalTo: modalView.centerXAnchor), - modalBGView.centerYAnchor.constraint(equalTo: modalView.centerYAnchor), - modalBGView.widthAnchor .constraint(equalTo: modalView.widthAnchor ), - modalBGView.heightAnchor .constraint(equalTo: modalView.heightAnchor ), - ]); - }; - - if let modalBGVisualEffectView = self.modalBackgroundVisualEffectView { - modalBGVisualEffectView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - modalBGVisualEffectView.centerXAnchor.constraint(equalTo: modalView.centerXAnchor), - modalBGVisualEffectView.centerYAnchor.constraint(equalTo: modalView.centerYAnchor), - modalBGVisualEffectView.widthAnchor .constraint(equalTo: modalView.widthAnchor ), - modalBGVisualEffectView.heightAnchor .constraint(equalTo: modalView.heightAnchor ), - ]); - }; - }; - - // MARK: - Functions - Cleanup-Related - // ----------------------------------- - - private func clearGestureValues() { - self.gestureOffset = nil; - self.gestureInitialPoint = nil; - self.gestureVelocity = nil; - self.gesturePoint = nil; - }; - - private func clearAnimators() { - self.backgroundVisualEffectAnimator?.clear(); - self.backgroundVisualEffectAnimator = nil; - - self.modalBackgroundVisualEffectAnimator?.clear(); - self.modalBackgroundVisualEffectAnimator = nil; - - self.modalAnimator?.stopAnimation(true); - self.modalAnimator = nil; - }; - - private func clearLayoutKeyboardValues(){ - self.layoutKeyboardValues = nil; - }; - - private func removeObservers(){ - let notificationNames = [ - UIResponder.keyboardWillShowNotification, - UIResponder.keyboardDidShowNotification, - UIResponder.keyboardWillHideNotification, - UIResponder.keyboardDidHideNotification, - UIResponder.keyboardWillChangeFrameNotification, - UIResponder.keyboardDidChangeFrameNotification, - ]; - - notificationNames.forEach { - NotificationCenter.default.removeObserver(self, name: $0, object: nil); - }; - - NotificationCenter.default.removeObserver(self); - }; - - private func cleanupViews() { - let viewsToCleanup: [UIView?] = [ - self.dummyModalView, - self.modalWrapperView, - // self.modalWrapperTransformView, - // self.nodalView, - self.modalWrapperShadowView, - self.modalBackgroundView, - self.modalBackgroundVisualEffectView, - self.backgroundDimmingView, - self.backgroundVisualEffectView - ]; - - viewsToCleanup.forEach { - guard let view = $0 else { return }; - - view.removeAllAncestorConstraints(); - view.removeFromSuperview(); - }; - - self.modalView = nil; - self.targetView = nil; - - self.modalBackgroundView = nil; - self.modalBackgroundVisualEffectView = nil; - self.backgroundDimmingView = nil; - self.backgroundVisualEffectView = nil; - - self.didTriggerSetup = false; - }; - - private func cleanupSnapPointOverride(){ - self.isOverridingSnapPoints = false; - self.overrideSnapPoints = nil; - self.overrideInterpolationPoints = nil; - - self.prevOverrideInterpolationIndex = 0; - self.nextOverrideInterpolationIndex = nil; - self.currentOverrideInterpolationIndex = 0; - }; - - private func cleanup() { - self.clearGestureValues(); - self.clearAnimators(); - self.clearLayoutKeyboardValues(); - - self.cleanupViews(); - self.cleanupSnapPointOverride(); - self.removeObservers(); - - self.currentInterpolationIndex = 0; - }; - - // MARK: - Functions - Interpolation-Related Helpers - // ------------------------------------------------- - - private func interpolate( - inputValue: CGFloat, - rangeInput: [CGFloat]? = nil, - rangeOutput: [AdaptiveModalInterpolationPoint]? = nil, - rangeOutputKey: KeyPath, - shouldClampMin: Bool = false, - shouldClampMax: Bool = false - ) -> CGFloat? { - - guard let interpolationSteps = rangeOutput ?? self.interpolationSteps, - let interpolationRangeInput = rangeInput ?? self.interpolationRangeInput - else { return nil }; - - return AdaptiveModalUtilities.interpolate( - inputValue: inputValue, - rangeInput: interpolationRangeInput, - rangeOutput: interpolationSteps.map { - $0[keyPath: rangeOutputKey]; - }, - shouldClampMin: shouldClampMin, - shouldClampMax: shouldClampMax - ); - }; - - private func interpolateColor( - inputValue: CGFloat, - rangeInput: [CGFloat]? = nil, - rangeOutput: [AdaptiveModalInterpolationPoint]? = nil, - rangeOutputKey: KeyPath, - shouldClampMin: Bool = false, - shouldClampMax: Bool = false - ) -> UIColor? { - - guard let interpolationSteps = rangeOutput ?? self.interpolationSteps, - let interpolationRangeInput = rangeInput ?? self.interpolationRangeInput - else { return nil }; - - return AdaptiveModalUtilities.interpolateColor( - inputValue: inputValue, - rangeInput: interpolationRangeInput, - rangeOutput: interpolationSteps.map { - $0[keyPath: rangeOutputKey]; - }, - shouldClampMin: shouldClampMin, - shouldClampMax: shouldClampMax - ); - }; - - private func getInterpolationStepRange( - forInputPercentValue inputPercentValue: CGFloat - ) -> ( - rangeStart: AdaptiveModalInterpolationPoint, - rangeEnd: AdaptiveModalInterpolationPoint - )? { - guard let interpolationSteps = self.interpolationSteps, - let minStep = interpolationSteps.first, - let maxStep = interpolationSteps.last - else { return nil }; - - let lastIndex = interpolationSteps.count - 1; - - let minStepValue = minStep.percent; - let maxStepValue = maxStep.percent; - - if inputPercentValue <= minStepValue { - return ( - rangeStart: minStep, - rangeEnd: interpolationSteps[1] - ); - }; - - if inputPercentValue >= maxStepValue { - return ( - rangeStart: interpolationSteps[lastIndex - 1], - rangeEnd: maxStep - ); - }; - - let firstMatch = interpolationSteps.enumerated().first { - guard let nextItem = interpolationSteps[safeIndex: $0.offset + 1] - else { return false }; - - let percentCurrent = $0.element.percent; - let percentNext = nextItem.percent; - - /// `inputPercentValue` is between the range of `percentCurrent` - /// and `percentNext` - /// - return inputPercentValue >= percentCurrent && - inputPercentValue <= percentNext; - }; - - guard let rangeStart = firstMatch?.element, - let rangeStartIndex = firstMatch?.offset, - let rangeEnd = interpolationSteps[safeIndex: rangeStartIndex + 1] - else { return nil }; - - return (rangeStart, rangeEnd); - }; - - // MARK: - Functions - Value Interpolators - // --------------------------------------- - - private func interpolateModalRect( - forInputPercentValue inputPercentValue: CGFloat - ) -> CGRect? { - - let clampConfig = modalConfig.interpolationClampingConfig; - - let nextHeight = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.computedRect.height, - shouldClampMin: clampConfig.shouldClampModalLastHeight, - shouldClampMax: clampConfig.shouldClampModalInitHeight - ); - - let nextWidth = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.computedRect.width, - shouldClampMin: clampConfig.shouldClampModalLastWidth, - shouldClampMax: clampConfig.shouldClampModalInitWidth - ); - - let nextX = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.computedRect.origin.x, - shouldClampMin: clampConfig.shouldClampModalLastX, - shouldClampMax: clampConfig.shouldClampModalInitX - ); - - let nextY = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.computedRect.origin.y, - shouldClampMin: clampConfig.shouldClampModalLastY, - shouldClampMax: clampConfig.shouldClampModalInitY - ); - - guard let nextX = nextX, - let nextY = nextY, - let nextWidth = nextWidth, - let nextHeight = nextHeight - else { return nil }; - - return CGRect( - x: nextX, - y: nextY, - width: nextWidth, - height: nextHeight - ); - }; - - private func interpolateModalTransform( - forInputPercentValue inputPercentValue: CGFloat - ) -> CGAffineTransform? { - - let clampConfig = modalConfig.interpolationClampingConfig; - - let nextModalRotation = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalRotation, - shouldClampMin: clampConfig.shouldClampModalInitRotation, - shouldClampMax: clampConfig.shouldClampModalLastRotation - ); - - let nextScaleX = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalScaleX, - shouldClampMin: clampConfig.shouldClampModalLastScaleX, - shouldClampMax: clampConfig.shouldClampModalLastScaleX - ); - - let nextScaleY = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalScaleY, - shouldClampMin: clampConfig.shouldClampModalLastScaleY, - shouldClampMax: clampConfig.shouldClampModalLastScaleY - ); - - let nextTranslateX = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalTranslateX, - shouldClampMin: clampConfig.shouldClampModalInitTranslateX, - shouldClampMax: clampConfig.shouldClampModalLastTranslateX - ); - - let nextTranslateY = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalTranslateY, - shouldClampMin: clampConfig.shouldClampModalInitTranslateY, - shouldClampMax: clampConfig.shouldClampModalLastTranslateY - ); - - let nextTransform: CGAffineTransform = { - var transforms: [CGAffineTransform] = []; - - if let rotation = nextModalRotation { - transforms.append( - .init(rotationAngle: rotation) - ); - }; - - if let nextScaleX = nextScaleX, - let nextScaleY = nextScaleY { - - transforms.append( - .init(scaleX: nextScaleX, y: nextScaleY) - ); - }; - - if let nextTranslateX = nextTranslateX, - let nextTranslateY = nextTranslateY { - - transforms.append( - .init(translationX: nextTranslateX, y: nextTranslateY) - ); - }; - - return transforms.reduce(.identity) { - $0.concatenating($1); - }; - }(); - - return nextTransform; - }; - - private func interpolateModalShadowOffset( - forInputPercentValue inputPercentValue: CGFloat - ) -> CGSize? { - - let nextWidth = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalShadowOffset.width - ); - - let nextHeight = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalShadowOffset.height - ); - - guard let nextWidth = nextWidth, - let nextHeight = nextHeight - else { return nil }; - - return CGSize(width: nextWidth, height: nextHeight); - }; - - private func interpolateModalBorderRadius( - forInputPercentValue inputPercentValue: CGFloat - ) -> CGFloat? { - - return self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalCornerRadius - ); - }; - - // MARK: - Functions - Property Interpolators - // ------------------------------------------ - - private func applyInterpolationToModalBackgroundVisualEffect( - forInputPercentValue inputPercentValue: CGFloat - ) { - - let animator: AdaptiveModalRangePropertyAnimator? = { - let interpolationRange = self.getInterpolationStepRange( - forInputPercentValue: inputPercentValue - ); - - guard let interpolationRange = interpolationRange else { return nil }; - let animator = self.modalBackgroundVisualEffectAnimator; - - let animatorRangeDidChange = animator?.didRangeChange( - interpolationRangeStart: interpolationRange.rangeStart, - interpolationRangeEnd: interpolationRange.rangeEnd - ); - - if let animator = animator, !animatorRangeDidChange! { - return animator; - }; - - animator?.clear(); - - guard let visualEffectView = self.modalBackgroundVisualEffectView - else { return nil }; - - visualEffectView.effect = nil; - - return AdaptiveModalRangePropertyAnimator( - interpolationRangeStart: interpolationRange.rangeStart, - interpolationRangeEnd: interpolationRange.rangeEnd, - forComponent: visualEffectView, - interpolationOutputKey: \.modalBackgroundVisualEffectIntensity - ) { - $0.effect = $1.modalBackgroundVisualEffect; - }; - }(); - - guard let animator = animator else { return }; - self.modalBackgroundVisualEffectAnimator = animator; - - animator.setFractionComplete( - forInputPercentValue: inputPercentValue.clamped(min: 0, max: 1) - ); - }; - - private func applyInterpolationToBackgroundVisualEffect( - forInputPercentValue inputPercentValue: CGFloat - ) { - - let animator: AdaptiveModalRangePropertyAnimator? = { - let interpolationRange = self.getInterpolationStepRange( - forInputPercentValue: inputPercentValue - ); - - guard let interpolationRange = interpolationRange else { return nil }; - let animator = self.backgroundVisualEffectAnimator; - - let animatorDidRangeChange = animator?.didRangeChange( - interpolationRangeStart: interpolationRange.rangeStart, - interpolationRangeEnd: interpolationRange.rangeEnd - ); - - if let animator = animator, !animatorDidRangeChange! { - return animator; - }; - - animator?.clear(); - - guard let visualEffectView = self.backgroundVisualEffectView - else { return nil }; - - visualEffectView.effect = nil; - - return AdaptiveModalRangePropertyAnimator( - interpolationRangeStart: interpolationRange.rangeStart, - interpolationRangeEnd: interpolationRange.rangeEnd, - forComponent: visualEffectView, - interpolationOutputKey: \.backgroundVisualEffectIntensity - ) { - $0.effect = $1.backgroundVisualEffect; - }; - }(); - - guard let animator = animator else { return }; - self.backgroundVisualEffectAnimator = animator; - - animator.setFractionComplete( - forInputPercentValue: inputPercentValue.clamped(min: 0, max: 1) - ); - }; - - // MARK: - Functions - Apply Interpolators - // ---------------------------------------- - - private func applyInterpolationToModal( - forInputPercentValue inputPercentValue: CGFloat - ) { - guard let modalView = self.modalView else { return }; - - self.modalFrame = self.interpolateModalRect( - forInputPercentValue: inputPercentValue - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperTransformView, - forPropertyKey: \.transform, - withValue: self.interpolateModalTransform( - forInputPercentValue: inputPercentValue - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: modalView, - forPropertyKey: \.alpha, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalOpacity - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperShadowView, - forPropertyKey: \.layer.borderWidth, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalBorderWidth - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperShadowView, - forPropertyKey: \.layer.borderColor, - withValue: { - let color = self.interpolateColor( - inputValue: inputPercentValue, - rangeOutputKey: \.modalBorderColor - ); - - return color?.cgColor; - }() - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperShadowView, - forPropertyKey: \.layer.shadowColor, - withValue: { - let color = self.interpolateColor( - inputValue: inputPercentValue, - rangeOutputKey: \.modalShadowColor - ); - - return color?.cgColor; - }() - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperShadowView, - forPropertyKey: \.layer.shadowOffset, - withValue: self.interpolateModalShadowOffset( - forInputPercentValue: inputPercentValue - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperShadowView, - forPropertyKey: \.layer.shadowOpacity, - withValue: { - let value = self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalShadowOpacity - ); - - guard let value = value else { return nil }; - return Float(value); - }() - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalWrapperShadowView, - forPropertyKey: \.layer.shadowRadius, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalShadowRadius - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: modalView, - forPropertyKey: \.layer.cornerRadius, - withValue: self.interpolateModalBorderRadius( - forInputPercentValue: inputPercentValue - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalBackgroundView, - forPropertyKey: \.backgroundColor, - withValue: self.interpolateColor( - inputValue: inputPercentValue, - rangeOutputKey: \.modalBackgroundColor - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalBackgroundView, - forPropertyKey: \.alpha, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalBackgroundOpacity - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.modalBackgroundVisualEffectView, - forPropertyKey: \.alpha, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.modalBackgroundVisualEffectOpacity - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.backgroundDimmingView, - forPropertyKey: \.backgroundColor, - withValue: self.interpolateColor( - inputValue: inputPercentValue, - rangeOutputKey: \.backgroundColor - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.backgroundDimmingView, - forPropertyKey: \.alpha, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.backgroundOpacity - ) - ); - - AdaptiveModalUtilities.unwrapAndSetProperty( - forObject: self.backgroundVisualEffectView, - forPropertyKey: \.alpha, - withValue: self.interpolate( - inputValue: inputPercentValue, - rangeOutputKey: \.backgroundVisualEffectOpacity - ) - ); - - self.applyInterpolationToBackgroundVisualEffect( - forInputPercentValue: inputPercentValue - ); - - self.applyInterpolationToModalBackgroundVisualEffect( - forInputPercentValue: inputPercentValue - ); - }; - - private func applyInterpolationToModal(forPoint point: CGPoint) { - guard let interpolationRangeMaxInput = self.interpolationRangeMaxInput - else { return }; - - let inputValue = point[keyPath: self.modalConfig.inputValueKeyForPoint]; - - let shouldInvertPercent: Bool = { - switch modalConfig.snapDirection { - case .bottomToTop, .rightToLeft: return true; - default: return false; - }; - }(); - - let percent = inputValue / interpolationRangeMaxInput; - - let percentClamped: CGFloat = { - guard !self.enableOverShooting else { return percent }; - - let secondToLastIndex = self.modalConfig.overshootSnapPointIndex - 1; - let maxPercent = self.interpolationRangeInput[secondToLastIndex]; - - return percent.clamped(max: maxPercent); - }(); - - let percentAdj = shouldInvertPercent - ? AdaptiveModalUtilities.invertPercent(percentClamped) - : percentClamped; - - self.applyInterpolationToModal(forInputPercentValue: percentAdj); - }; - - private func applyInterpolationToModal(forGesturePoint gesturePoint: CGPoint) { - let gesturePointWithOffset = - self.applyGestureOffsets(forGesturePoint: gesturePoint); - - self.applyInterpolationToModal(forPoint: gesturePointWithOffset); - }; - - // MARK: - Functions - Helpers/Utilities - // ------------------------------------- - - private func adjustInterpolationIndex(for nextIndex: Int) -> Int { - if nextIndex == 0 { - return self.shouldSnapToUnderShootSnapPoint - ? nextIndex - : 1; - }; - - let lastIndex = self.interpolationSteps.count - 1; - - if nextIndex == lastIndex { - return self.shouldSnapToOvershootSnapPoint - ? nextIndex - : lastIndex - 1; - }; - - return nextIndex; - }; - - private func applyGestureOffsets( - forGesturePoint gesturePoint: CGPoint - ) -> CGPoint { - - guard let computedGestureOffset = self.computedGestureOffset - else { return gesturePoint }; - - switch self.modalConfig.snapDirection { - case .bottomToTop, .rightToLeft: return CGPoint( - x: gesturePoint.x - computedGestureOffset.x, - y: gesturePoint.y - computedGestureOffset.y - ); - - case .topToBottom, .leftToRight: return CGPoint( - x: gesturePoint.x + computedGestureOffset.x, - y: gesturePoint.y + computedGestureOffset.y - ); - }; - }; - - func debug(prefix: String? = ""){ - print( - "\n - AdaptiveModalManager.debug - \(prefix ?? "N/A")" - + "\n - modalView: \(self.modalView?.debugDescription ?? "N/A")" - + "\n - modalView frame: \(self.modalView?.frame.debugDescription ?? "N/A")" - + "\n - modalView superview: \(self.modalView?.superview.debugDescription ?? "N/A")" - + "\n - targetView: \(self.targetView?.debugDescription ?? "N/A")" - + "\n - targetView frame: \(self.targetView?.frame.debugDescription ?? "N/A")" - + "\n - targetView superview: \(self.targetView?.superview.debugDescription ?? "N/A")" - + "\n - modalViewController: \(self.modalViewController?.debugDescription ?? "N/A")" - + "\n - targetViewController: \(self.targetViewController?.debugDescription ?? "N/A")" - + "\n - currentInterpolationIndex: \(self.currentInterpolationIndex)" - + "\n - currentOverrideInterpolationIndex: \(self.currentOverrideInterpolationIndex)" - + "\n - currentConfigInterpolationIndex: \(self.currentConfigInterpolationIndex)" - + "\n - currentInterpolationStep: computedRect \(self.currentInterpolationStep.computedRect)" - + "\n - currentConfigInterpolationStep computedRect: \(self.currentConfigInterpolationStep.computedRect)" - + "\n - currentOverrideInterpolationStep computedRect: \(self.currentOverrideInterpolationStep?.computedRect.debugDescription ?? "N/A")" - + "\n - modalView gestureRecognizers: \(self.modalView?.gestureRecognizers.debugDescription ?? "N/A")" - + "\n - isOverridingSnapPoints: \(self.isOverridingSnapPoints)" - + "\n - shouldUseOverrideSnapPoints: \(self.shouldUseOverrideSnapPoints)" - + "\n - shouldClearOverrideSnapPoints: \(self.shouldClearOverrideSnapPoints)" - + "\n - layoutKeyboardValues: \(self.layoutKeyboardValues.debugDescription )" - + "\n - presentationState: \(self.presentationState )" - + "\n - interpolationSteps.computedRect: \(self.interpolationSteps.map({ $0.computedRect }))" - + "\n - configInterpolationSteps.computedRect: \(self.configInterpolationSteps.map({ $0.computedRect }))" - + "\n - overrideInterpolationPoints.computedRect: \((self.overrideInterpolationPoints ?? []).map({ $0.computedRect }))" - + "\n - interpolationSteps.percent: \(self.interpolationSteps.map({ $0.percent }))" - + "\n - interpolationSteps.backgroundVisualEffectIntensity: \(self.interpolationSteps.map({ $0.backgroundVisualEffectIntensity }))" - + "\n - interpolationSteps.backgroundVisualEffect: \(self.interpolationSteps.map({ $0.backgroundVisualEffect }))" - + "\n" - ); - }; - - // MARK: - Functions - // ----------------- - - private func computeSnapPoints( - usingLayoutValueContext context: RNILayoutValueContext? = nil - ) { - let context = context ?? self.layoutValueContext; - - self.configInterpolationSteps = .Element.compute( - usingModalConfig: self.modalConfig, - layoutValueContext: context - ); - }; - - private func updateModal() { - guard !self.isAnimating else { return }; - - if let gesturePoint = self.gesturePoint { - self.applyInterpolationToModal(forGesturePoint: gesturePoint); - - } else if self.currentInterpolationStep.computedRect != self.modalFrame { - self.applyInterpolationToModal( - forInputPercentValue: currentInterpolationStep.percent - ); - }; - }; - - private func getClosestSnapPoint(forCoord coord: CGFloat? = nil) -> ( - interpolationIndex: Int, - interpolationPoint: AdaptiveModalInterpolationPoint, - snapDistance: CGFloat - ) { - let inputRect = self.modalFrame!; - - let inputCoord = coord ?? - inputRect[keyPath: self.modalConfig.inputValueKeyForRect]; - - let delta = self.interpolationSteps.map { - let coord = - $0.computedRect[keyPath: self.modalConfig.inputValueKeyForRect]; - - return abs(inputCoord - coord); - }; - - let deltaSorted = delta.enumerated().sorted { - $0.element < $1.element - }; - - let closestSnapPoint = deltaSorted.first!; - let closestInterpolationIndex = closestSnapPoint.offset; - - let interpolationPoint = interpolationSteps[closestInterpolationIndex]; - - return ( - interpolationIndex: closestInterpolationIndex, - interpolationPoint: interpolationPoint, - snapDistance: closestSnapPoint.element - ); - }; - - private func getClosestSnapPoint( - forRect currentRect: CGRect - ) -> ( - interpolationIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint, - snapDistance: CGFloat - ) { - let delta = interpolationSteps.map { - CGRect( - x: abs($0.computedRect.origin.x - currentRect.origin.x), - y: abs($0.computedRect.origin.y - currentRect.origin.y), - width : abs($0.computedRect.size.height - currentRect.size.height), - height: abs($0.computedRect.size.height - currentRect.size.height) - ); - }; - - let deltaAvg = delta.map { - ($0.origin.x + $0.origin.y + $0.width + $0.height) / 4; - }; - - let deltaAvgSorted = deltaAvg.enumerated().sorted { - $0.element < $1.element; - }; - - let closestInterpolationPointIndex = deltaAvgSorted.first!.offset; - - let closestInterpolationPoint = - interpolationSteps[closestInterpolationPointIndex]; - - return ( - interpolationIndex: closestInterpolationPointIndex, - snapPointConfig: self.modalConfig.snapPoints[closestInterpolationPointIndex], - interpolationPoint: closestInterpolationPoint, - snapDistance: deltaAvg[closestInterpolationPointIndex] - ); - }; - - private func animateModal( - to interpolationPoint: AdaptiveModalInterpolationPoint, - animator: UIViewPropertyAnimator? = nil, - extraAnimation: (() -> Void)? = nil, - completion: ((UIViewAnimatingPosition) -> Void)? = nil - ) { - guard let modalView = self.modalView else { return }; - - let animator: UIViewPropertyAnimator = animator ?? { - let gestureInitialVelocity = self.gestureInitialVelocity; - let snapAnimationConfig = self.modalConfig.snapAnimationConfig; - - let springTiming = UISpringTimingParameters( - dampingRatio: snapAnimationConfig.springDampingRatio, - initialVelocity: gestureInitialVelocity - ); - - return UIViewPropertyAnimator( - duration: snapAnimationConfig.springAnimationSettlingTime, - timingParameters: springTiming - ); - }(); - - self.modalAnimator?.stopAnimation(true); - self.modalAnimator = animator; - - animator.addAnimations { - extraAnimation?(); - - interpolationPoint.apply( - toModalView: modalView, - toModalWrapperView: self.modalWrapperView, - toModalWrapperTransformView: self.modalWrapperTransformView, - toModalWrapperShadowView: self.modalWrapperShadowView, - toDummyModalView: self.dummyModalView, - toModalBackgroundView: self.modalBackgroundView, - toBackgroundView: self.backgroundDimmingView, - toModalBackgroundEffectView: self.modalBackgroundVisualEffectView, - toBackgroundVisualEffectView: self.backgroundVisualEffectView - ); - }; - - if let completion = completion { - animator.addCompletion(completion); - }; - - animator.addCompletion { _ in - self.endDisplayLink(); - self.modalAnimator = nil; - }; - - animator.startAnimation(); - self.startDisplayLink(); - }; - - // MARK: - Functions - Handlers - // ---------------------------- - - @objc private func onDragPanGesture(_ sender: UIPanGestureRecognizer) { - let gesturePoint = sender.location(in: self.targetView); - self.gesturePoint = gesturePoint; - - let gestureVelocity = sender.velocity(in: self.targetView); - self.gestureVelocity = gestureVelocity; - - switch sender.state { - case .began: - self.gestureInitialPoint = gesturePoint; - - case .changed: - self.modalAnimator?.stopAnimation(true); - self.applyInterpolationToModal(forGesturePoint: gesturePoint); - self.notifyOnModalWillSnap(); - - case .cancelled, .ended: - guard self.enableSnapping else { - self.clearGestureValues(); - return; - }; - - let gestureFinalPointRaw = self.gestureFinalPoint ?? gesturePoint; - - let gestureFinalPoint = - self.applyGestureOffsets(forGesturePoint: gestureFinalPointRaw); - - self.snapToClosestSnapPoint(forPoint: gestureFinalPoint) { - self.notifyOnModalDidSnap(); - }; - - self.clearGestureValues(); - - default: - break; - }; - }; - - @objc private func onKeyboardWillShow(notification: NSNotification) { - guard let keyboardValues = RNILayoutKeyboardValues(fromNotification: notification) - else { return }; - - if self.presentationState != .dismissing { - self.layoutKeyboardValues = keyboardValues; - self.computeSnapPoints(); - }; - - - - self.animateModal( - to: self.currentInterpolationStep, - animator: keyboardValues.keyboardAnimator - ); - - print( - "onKeyboardWillShow", - "\n - frameBegin:", keyboardValues.frameBegin, - "\n - frameEnd:", keyboardValues.frameEnd, - "\n - animationDuration:", keyboardValues.animationDuration, - "\n - animationCurve:", keyboardValues.animationCurve, - "\n - notification:", notification, - "\n" - ); - }; - - @objc private func onKeyboardDidShow(notification: NSNotification) { - guard let keyboardValues = RNILayoutKeyboardValues(fromNotification: notification) - else { return }; - - self.layoutKeyboardValues = keyboardValues; - - print( - "onKeyboardDidShow", - "\n - frameBegin:", keyboardValues.frameBegin, - "\n - frameEnd:", keyboardValues.frameEnd, - "\n - animationDuration:", keyboardValues.animationDuration, - "\n - animationCurve:", keyboardValues.animationCurve, - "\n - notification:", notification, - "\n" - ); - }; - - @objc private func onKeyboardWillHide(notification: NSNotification) { - guard let keyboardValues = RNILayoutKeyboardValues(fromNotification: notification) - else { return }; - - self.debug(prefix: "onKeyboardWillHide - pre"); - - self.clearLayoutKeyboardValues(); - self.computeSnapPoints(); - - - - self.animateModal( - to: self.currentInterpolationStep, - animator: keyboardValues.keyboardAnimator - ); - - print( - "onKeyboardWillHide", - "\n - frameBegin:", keyboardValues.frameBegin, - "\n - frameEnd:", keyboardValues.frameEnd, - "\n - animationDuration:", keyboardValues.animationDuration, - "\n - animationCurve:", keyboardValues.animationCurve, - "\n - notification:", notification, - "\n" - ); - }; - - @objc private func onKeyboardDidHide(notification: NSNotification) { - guard let keyboardValues = RNILayoutKeyboardValues(fromNotification: notification) - else { return }; - - self.layoutKeyboardValues = keyboardValues; - - print( - "onKeyboardDidHide", - "\n - frameBegin:", keyboardValues.frameBegin, - "\n - frameEnd:", keyboardValues.frameEnd, - "\n - animationDuration:", keyboardValues.animationDuration, - "\n - animationCurve:", keyboardValues.animationCurve, - "\n - notification:", notification, - "\n" - ); - }; - - @objc private func onKeyboardWillChange(notification: NSNotification) { - guard let keyboardValues = RNILayoutKeyboardValues(fromNotification: notification) - else { return }; - - if self.presentationState == .dismissing { - self.layoutKeyboardValues = keyboardValues; - self.computeSnapPoints(); - }; - - print( - "onKeyboardWillChange", - "\n - frameBegin:", keyboardValues.frameBegin, - "\n - frameEnd:", keyboardValues.frameEnd, - "\n - animationDuration:", keyboardValues.animationDuration, - "\n - animationCurve:", keyboardValues.animationCurve, - "\n - notification:", notification, - "\n" - ); - }; - - @objc private func onKeyboardDidChange(notification: NSNotification) { - guard let keyboardValues = RNILayoutKeyboardValues(fromNotification: notification) - else { return }; - - self.layoutKeyboardValues = keyboardValues; - self.computeSnapPoints(); - - print( - "onKeyboardDidChange", - "\n - frameBegin:", keyboardValues.frameBegin, - "\n - frameEnd:", keyboardValues.frameEnd, - "\n - animationDuration:", keyboardValues.animationDuration, - "\n - animationCurve:", keyboardValues.animationCurve, - "\n - notification:", notification, - "\n" - ); - }; - - // MARK: - Functions - DisplayLink-Related - // --------------------------------------- - - private func startDisplayLink() { - let displayLink = CADisplayLink( - target: self, - selector: #selector(self.onDisplayLinkTick(displayLink:)) - ); - - self.displayLink = displayLink; - - displayLink.preferredFrameRateRange = - CAFrameRateRange(minimum: 60, maximum: 120); - - displayLink.add(to: .current, forMode: .common); - }; - - private func endDisplayLink() { - self.displayLink?.invalidate(); - }; - - @objc private func onDisplayLinkTick(displayLink: CADisplayLink) { - guard let dummyModalViewPresentationLayer = - self.dummyModalView.layer.presentation(), - let interpolationRangeMaxInput = self.interpolationRangeMaxInput - else { return }; - - if self.isSwiping { - self.endDisplayLink(); - }; - - if self.displayLinkStartTimestamp == nil { - self.displayLinkStartTimestamp = displayLink.timestamp; - }; - - let prevModalFrame = self.prevModalFrame; - let nextModalFrame = dummyModalViewPresentationLayer.frame; - - guard prevModalFrame != nextModalFrame else { return }; - - let inputCoord = - nextModalFrame[keyPath: self.modalConfig.inputValueKeyForRect]; - - let percent = inputCoord / interpolationRangeMaxInput; - - let percentAdj = self.modalConfig.shouldInvertPercent - ? AdaptiveModalUtilities.invertPercent(percent) - : percent; - - self.applyInterpolationToBackgroundVisualEffect( - forInputPercentValue: percentAdj - ); - - self.applyInterpolationToModalBackgroundVisualEffect( - forInputPercentValue: percentAdj - ); - - self.prevModalFrame = nextModalFrame; - }; - - // MARK: - Event Functions - // ----------------------- - - private func notifyOnModalWillSnap() { - let interpolationSteps = self.interpolationSteps!; - let prevIndex = self.currentInterpolationIndex; - - self.debug(prefix: "notifyOnModalWillSnap"); - - let nextIndexRaw: Int = { - guard let nextIndex = self.nextInterpolationIndex else { - let closestSnapPoint = self.getClosestSnapPoint(); - return closestSnapPoint.interpolationPoint.snapPointIndex; - }; - - return nextIndex; - }(); - - let nextIndex = self.adjustInterpolationIndex(for: nextIndexRaw); - let nextPoint = self.interpolationSteps[nextIndex]; - - guard prevIndex != nextIndex else { return }; - - self.eventDelegate?.notifyOnModalWillSnap( - prevSnapPointIndex: interpolationSteps[prevIndex].snapPointIndex, - nextSnapPointIndex: interpolationSteps[nextIndex].snapPointIndex, - snapPointConfig: self.modalConfig.snapPoints[nextPoint.snapPointIndex], - interpolationPoint: nextPoint - ); - - let shouldDismissOnSnapToUnderShootSnapPoint = - nextIndex == 0 && self.shouldDismissModalOnSnapToUnderShootSnapPoint; - - let shouldDismissOnSnapToOverShootSnapPoint = - nextIndex == self.modalConfig.overshootSnapPointIndex && - self.shouldDismissModalOnSnapToOverShootSnapPoint; - - let shouldDismiss = - shouldDismissOnSnapToUnderShootSnapPoint || - shouldDismissOnSnapToOverShootSnapPoint; - - let isPresenting = self.currentInterpolationIndex == 0 && nextIndex == 1; - - if shouldDismiss { - self.notifyOnModalWillHide(); - - } else if isPresenting { - self.notifyOnModalWillShow(); - }; - }; - - private func notifyOnModalDidSnap() { - if self.shouldClearOverrideSnapPoints { - self.cleanupSnapPointOverride(); - }; - - //self.debug(prefix: "notifyOnModalDidSnap") - - self.eventDelegate?.notifyOnModalDidSnap( - prevSnapPointIndex: - self.interpolationSteps[self.prevInterpolationIndex].snapPointIndex, - - currentSnapPointIndex: - self.interpolationSteps[self.currentInterpolationIndex].snapPointIndex, - - snapPointConfig: self.currentSnapPointConfig, - interpolationPoint: self.currentInterpolationStep - ); - - let shouldDismissOnSnapToUnderShootSnapPoint = - self.currentInterpolationIndex == 0 && - self.shouldDismissModalOnSnapToUnderShootSnapPoint; - - let shouldDismissOnSnapToOverShootSnapPoint = - self.currentInterpolationIndex == self.modalConfig.overshootSnapPointIndex && - self.shouldDismissModalOnSnapToOverShootSnapPoint; - - let shouldDismiss = - shouldDismissOnSnapToUnderShootSnapPoint || - shouldDismissOnSnapToOverShootSnapPoint; - - let wasPresented = - self.currentInterpolationIndex == 1 && - self.prevInterpolationIndex == 0; - - if shouldDismiss { - self.notifyOnModalDidHide(); - - } else if wasPresented { - self.notifyOnModalDidShow(); - }; - }; - - private func notifyOnModalWillShow(){ - // wip - }; - - private func notifyOnModalDidShow(){ - // wip - //UIView.animate(withDuration: 1){ - // self.targetViewController?.view.transform = .init(scaleX: 0.5, y: 0.5); - //}; - }; - - private func notifyOnModalWillHide(){ - // wip - //UIView.animate(withDuration: 1){ - // self.targetViewController?.view.transform = .identity; - //}; - }; - - private func notifyOnModalDidHide(){ - self.cleanup(); - self.modalViewController?.dismiss(animated: false); - }; - - // MARK: - Functions - // ----------------- - - func snapTo( - interpolationIndex nextIndex: Int, - interpolationPoint: AdaptiveModalInterpolationPoint? = nil, - completion: (() -> Void)? = nil - ) { - self.nextInterpolationIndex = nextIndex; - - let nextInterpolationPoint = interpolationPoint - ?? self.interpolationSteps[nextIndex]; - - self.notifyOnModalWillSnap(); - - self.animateModal(to: nextInterpolationPoint, completion: { _ in - self.currentInterpolationIndex = nextIndex; - self.nextInterpolationIndex = nil; - - self.notifyOnModalDidSnap(); - completion?(); - }); - }; - - func snapToClosestSnapPoint( - forPoint point: CGPoint, - completion: (() -> Void)? = nil - ) { - let coord = point[keyPath: self.modalConfig.inputValueKeyForPoint]; - let closestSnapPoint = self.getClosestSnapPoint(forCoord: coord); - - let nextInterpolationIndex = - self.adjustInterpolationIndex(for: closestSnapPoint.interpolationIndex); - - let nextInterpolationPoint = - self.interpolationSteps[nextInterpolationIndex]; - - let prevFrame = self.modalFrame; - let nextFrame = nextInterpolationPoint.computedRect; - - guard prevFrame != nextFrame else { return }; - - self.snapTo( - interpolationIndex: nextInterpolationIndex, - completion: completion - ); - }; - - func showModal(completion: (() -> Void)? = nil) { - let nextIndex = self.modalConfig.initialSnapPointIndex; - self.snapTo(interpolationIndex: nextIndex, completion: completion); - }; - - func hideModal( - useInBetweenSnapPoints: Bool = false, - completion: (() -> Void)? = nil - ){ - - let nextIndex = 0; - - self.debug(prefix: "hideModal"); - - if useInBetweenSnapPoints { - self.snapTo(interpolationIndex: nextIndex, completion: completion); - - } else { - self.computeSnapPoints(); - - let currentSnapPointConfig = self.currentSnapPointConfig; - let currentInterpolationStep = self.currentInterpolationStep; - - let undershootSnapPointConfig = AdaptiveModalSnapPointConfig( - fromSnapPointPreset: self.modalConfig.undershootSnapPoint, - fromBaseLayoutConfig: currentSnapPointConfig.snapPoint - ); - - var undershootInterpolationPoint = AdaptiveModalInterpolationPoint( - usingModalConfig: self.modalConfig, - snapPointIndex: nextIndex, - layoutValueContext: self.layoutValueContext, - snapPointConfig: undershootSnapPointConfig - ); - - undershootInterpolationPoint.modalCornerRadius = - currentInterpolationStep.modalCornerRadius; - - self.snapTo( - interpolationIndex: nextIndex, - interpolationPoint: undershootInterpolationPoint, - completion: completion - ); - }; - }; - - // MARK: - User-Invoked Functions - // ------------------------------ - - public func prepareForPresentation( - modalView: UIView? = nil, - targetView: UIView? = nil, - shouldForceReset: Bool = false - ) { - guard let modalView = modalView ?? self.modalView, - let targetView = targetView ?? self.targetView - else { return }; - - let didViewsChange = - modalView !== self.modalView || targetView !== self.targetView; - - let shouldReset = - !self.didTriggerSetup || didViewsChange || shouldForceReset; - - if shouldReset { - self.cleanup(); - }; - - self.modalView = modalView; - self.targetView = targetView; - - self.computeSnapPoints(); - - if shouldReset { - self.setupInitViews(); - self.setupDummyModalView(); - self.setupGestureHandler(); - - self.setupAddViews(); - self.setupViewConstraints(); - self.setupObservers(); - }; - - self.updateModal(); - self.didTriggerSetup = true; - }; - - public func prepareForPresentation( - viewControllerToPresent presentingVC: UIViewController, - presentingViewController presentedVC: UIViewController - ) { - self.modalViewController = presentingVC; - self.modalView = presentingVC.view; - - self.setupViewControllers(); - }; - - public func notifyDidLayoutSubviews() { - self.computeSnapPoints(); - self.updateModal(); - }; - - public func snapToClosestSnapPoint(completion: (() -> Void)? = nil) { - let closestSnapPoint = self.getClosestSnapPoint(forRect: self.modalFrame); - - let nextInterpolationIndex = - self.adjustInterpolationIndex(for: closestSnapPoint.interpolationIndex); - - let nextInterpolationPoint = - self.interpolationSteps[nextInterpolationIndex]; - - let prevFrame = self.modalFrame; - let nextFrame = nextInterpolationPoint.computedRect; - - guard nextInterpolationIndex != self.currentInterpolationIndex, - prevFrame != nextFrame - else { return }; - - self.snapTo(interpolationIndex: nextInterpolationIndex) { - completion?(); - }; - }; - - public func snapToCurrentIndex(completion: (() -> Void)? = nil) { - self.snapTo( - interpolationIndex: self.currentInterpolationIndex, - completion: completion - ); - }; - - public func presentModal( - viewControllerToPresent modalVC: UIViewController, - presentingViewController targetVC: UIViewController, - animated: Bool = true, - completion: (() -> Void)? = nil - ) { - self.prepareForPresentation( - viewControllerToPresent: modalVC, - presentingViewController: targetVC - ); - - targetVC.present( - modalVC, - animated: animated, - completion: completion - ); - }; - - public func snapTo( - snapPointConfig overrideSnapPointConfig: AdaptiveModalSnapPointConfig, - overshootSnapPointPreset: AdaptiveModalSnapPointPreset? = nil, - fallbackSnapPointKey: AdaptiveModalSnapPointConfig.SnapPointKey? = nil, - animated: Bool = true, - completion: (() -> Void)? = nil - ) { - self.cleanupSnapPointOverride(); - - let prevInterpolationPoints: [AdaptiveModalInterpolationPoint] = { - let overrideInterpolationPoint = AdaptiveModalInterpolationPoint( - usingModalConfig: self.modalConfig, - snapPointIndex: 1, - layoutValueContext: self.layoutValueContext, - snapPointConfig: overrideSnapPointConfig - ); - - let items = self.configInterpolationSteps.filter { - $0.percent < overrideInterpolationPoint.percent; - }; - - guard items.count > 0 else { - return [self.configInterpolationSteps.first!]; - }; - - return items; - }(); - - let prevSnapPointConfigs = prevInterpolationPoints.map { - self.modalConfig.snapPoints[$0.snapPointIndex]; - }; - - let overshootSnapPointPreset = overshootSnapPointPreset - ?? .getDefaultOvershootSnapPoint(forDirection: modalConfig.snapDirection); - - let overshootSnapPointConfig = AdaptiveModalSnapPointConfig( - fromSnapPointPreset: overshootSnapPointPreset, - fromBaseLayoutConfig: overrideSnapPointConfig.snapPoint - ); - - let snapPoints = prevSnapPointConfigs + [ - overrideSnapPointConfig, - overshootSnapPointConfig, - ]; - - var interpolationPoints = prevInterpolationPoints.enumerated().map { - var copy = $0.element; - copy.snapPointIndex = $0.offset; - - return copy; - }; - - let nextInterpolationPoint = AdaptiveModalInterpolationPoint( - usingModalConfig: self.modalConfig, - snapPointIndex: interpolationPoints.count, - layoutValueContext: self.layoutValueContext, - snapPointConfig: overrideSnapPointConfig, - prevInterpolationPoint: self.currentInterpolationStep - ); - - interpolationPoints.append(nextInterpolationPoint); - - let nextInterpolationPointIndex = interpolationPoints.count - 1; - - let overshootSnapPoint = AdaptiveModalInterpolationPoint( - usingModalConfig: self.modalConfig, - snapPointIndex: interpolationPoints.count, - layoutValueContext: self.layoutValueContext, - snapPointConfig: overshootSnapPointConfig, - prevInterpolationPoint: self.currentInterpolationStep - ); - - interpolationPoints.append(overshootSnapPoint); - - self.isOverridingSnapPoints = true; - self.overrideSnapPoints = snapPoints; - self.overrideInterpolationPoints = interpolationPoints; - self.currentOverrideInterpolationIndex = nextInterpolationPointIndex; - - print( - "snapTo", - "\n - prevInterpolationPoints:", prevInterpolationPoints.count, - "\n - interpolationPoints:", interpolationPoints.count, - "\n - nextInterpolationPointIndex:", nextInterpolationPointIndex - ); - - self.debug(prefix: "snapTo"); - - - self.animateModal(to: nextInterpolationPoint, completion: { _ in - self.debug(prefix: "snapTo - completion"); - completion?(); - }); - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalPresentationController.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalPresentationController.swift deleted file mode 100644 index 35ec57f2..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalPresentationController.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// AdaptiveModalPresentationController.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/8/23. -// - -import UIKit - -class AdaptiveModalPresentationController: UIPresentationController { - - weak var modalManager: AdaptiveModalManager!; - - init( - presentedViewController: UIViewController, - presenting presentingViewController: UIViewController?, - modalManager: AdaptiveModalManager - ) { - super.init( - presentedViewController: presentedViewController, - presenting: presentingViewController - ); - - self.modalManager = modalManager; - }; - - override func presentationTransitionWillBegin() { - }; - - override func presentationTransitionDidEnd(_ completed: Bool) { - }; - - override func viewWillTransition( - to size: CGSize, - with coordinator: UIViewControllerTransitionCoordinator - ) { - } -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalRangePropertyAnimator.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalRangePropertyAnimator.swift deleted file mode 100644 index b7bca622..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalRangePropertyAnimator.swift +++ /dev/null @@ -1,123 +0,0 @@ -// -// AdaptiveModalPropertyAnimator.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/31/23. -// - -import UIKit - - -public struct AdaptiveModalRangePropertyAnimator { - - // MARK: - Properties - // ------------------ - - public var interpolationRangeStart: AdaptiveModalInterpolationPoint; - public var interpolationRangeEnd: AdaptiveModalInterpolationPoint; - - public let interpolationOutputKey: - KeyPath?; - - public var animator: UIViewPropertyAnimator; - - private weak var component: AnyObject?; - - private var range: [AdaptiveModalInterpolationPoint] {[ - self.interpolationRangeStart, - self.interpolationRangeEnd - ]}; - - // MARK: - Init - // ------------ - - public init( - interpolationRangeStart: AdaptiveModalInterpolationPoint, - interpolationRangeEnd: AdaptiveModalInterpolationPoint, - forComponent component: T, - interpolationOutputKey: - KeyPath? = nil, - animation: @escaping ( - _ component: T, - _ interpolationPoint: AdaptiveModalInterpolationPoint - ) -> Void - ) { - self.interpolationRangeStart = interpolationRangeStart; - self.interpolationRangeEnd = interpolationRangeEnd; - - self.interpolationOutputKey = interpolationOutputKey; - self.component = component; - - let animator = UIViewPropertyAnimator( - duration: 0, - curve: .linear - ); - - animator.addAnimations { - animation(component, interpolationRangeEnd); - }; - - self.animator = animator; - }; - - // MARK: - Functions - // ----------------- - - public func didRangeChange( - interpolationRangeStart: AdaptiveModalInterpolationPoint, - interpolationRangeEnd: AdaptiveModalInterpolationPoint - ) -> Bool { - let didChange = - interpolationRangeStart != self.interpolationRangeStart || - interpolationRangeEnd != self.interpolationRangeEnd; - - return didChange; - }; - - public mutating func update( - interpolationRangeStart: AdaptiveModalInterpolationPoint, - interpolationRangeEnd: AdaptiveModalInterpolationPoint - ){ - let didChange = - interpolationRangeStart != self.interpolationRangeStart || - interpolationRangeEnd != self.interpolationRangeEnd; - - guard didChange else { return }; - - self.interpolationRangeStart = interpolationRangeStart; - self.interpolationRangeEnd = interpolationRangeEnd; - }; - - public func setFractionComplete(forPercent percent: CGFloat) { - self.animator.fractionComplete = percent; - }; - - public func setFractionComplete( - forInputPercentValue inputPercentValue: CGFloat - ) { - let rangeOutput: [CGFloat] = { - if let interpolationOutputKey = self.interpolationOutputKey { - return range.map { - $0[keyPath: interpolationOutputKey] - } - }; - - return [0, 1]; - }(); - - let percent = AdaptiveModalUtilities.interpolate( - inputValue: inputPercentValue, - rangeInput: range.map { - $0.percent - }, - rangeOutput: rangeOutput - ); - - guard let percent = percent else { return }; - self.setFractionComplete(forPercent: percent); - }; - - public func clear(){ - self.animator.stopAnimation(true); - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapAnimationConfig.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapAnimationConfig.swift deleted file mode 100644 index fcb983c6..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapAnimationConfig.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// AdaptiveModalSnapAnimationConfig.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/27/23. -// - -import UIKit - -public struct AdaptiveModalSnapAnimationConfig { - public static let `default`: Self = .init( - springDampingRatio: 0.9, - springAnimationSettlingTime: 0.4, - maxGestureVelocity: 15 - ); - - public let springDampingRatio: CGFloat; - public let springAnimationSettlingTime: CGFloat; - public let maxGestureVelocity: CGFloat; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapPoint.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapPoint.swift deleted file mode 100644 index 711dbb8a..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapPoint.swift +++ /dev/null @@ -1,112 +0,0 @@ -// -// AdaptiveModalSnapPoint.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/23/23. -// - -import UIKit - -public struct AdaptiveModalSnapPointConfig { - - // MARK: Types - // ----------- - - public enum SnapPointKey: Equatable { - case undershootPoint, overshootPoint, unspecified; - case string(_ stringKey: String); - case index(_ indexKey: Int); - }; - - // MARK: Properties - // ---------------- - - public let key: SnapPointKey; - - public let snapPoint: RNILayout; - public let animationKeyframe: AdaptiveModalAnimationConfig?; - - // MARK: Init - // ---------- - - public init( - key: SnapPointKey = .unspecified, - snapPoint: RNILayout, - animationKeyframe: AdaptiveModalAnimationConfig? = nil - ) { - self.key = key; - self.snapPoint = snapPoint; - self.animationKeyframe = animationKeyframe; - }; - - public init( - key: SnapPointKey = .unspecified, - fromSnapPointPreset snapPointPreset: AdaptiveModalSnapPointPreset, - fromBaseLayoutConfig baseLayoutConfig: RNILayout - ) { - let snapPointLayoutPreset = snapPointPreset.layoutPreset; - - let snapPointLayout = snapPointLayoutPreset.getLayoutConfig( - fromBaseLayoutConfig: baseLayoutConfig - ); - - self.key = key; - self.snapPoint = snapPointLayout; - self.animationKeyframe = snapPointPreset.animationKeyframe; - }; - - public init( - fromBase base: Self, - newKey: SnapPointKey, - newSnapPoint: RNILayout? = nil, - newAnimationKeyframe: AdaptiveModalAnimationConfig? = nil - ){ - self.snapPoint = newSnapPoint ?? base.snapPoint; - self.animationKeyframe = newAnimationKeyframe ?? base.animationKeyframe; - - self.key = base.key == .unspecified - ? newKey - : base.key; - }; -}; - -// MARK: Helpers -// ------------- - -extension AdaptiveModalSnapPointConfig { - - static func deriveSnapPoints( - undershootSnapPoint: AdaptiveModalSnapPointPreset, - inBetweenSnapPoints: [AdaptiveModalSnapPointConfig], - overshootSnapPoint: AdaptiveModalSnapPointPreset - ) -> [AdaptiveModalSnapPointConfig] { - - var items: [AdaptiveModalSnapPointConfig] = []; - - if let snapPointFirst = inBetweenSnapPoints.first { - let initialSnapPointConfig = AdaptiveModalSnapPointConfig( - key: .undershootPoint, - fromSnapPointPreset: undershootSnapPoint, - fromBaseLayoutConfig: snapPointFirst.snapPoint - ); - - items.append(initialSnapPointConfig); - }; - - items += inBetweenSnapPoints.map { - .init(fromBase: $0, newKey: .index(items.count)); - }; - - if let snapPointLast = inBetweenSnapPoints.last { - let overshootSnapPointConfig = AdaptiveModalSnapPointConfig( - key: .overshootPoint, - fromSnapPointPreset: overshootSnapPoint, - fromBaseLayoutConfig: snapPointLast.snapPoint - ); - - items.append(overshootSnapPointConfig); - }; - - return items; - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapPointPreset.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapPointPreset.swift deleted file mode 100644 index a93b9d6c..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalSnapPointPreset.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// AdaptiveModalSnapPointPreset.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/31/23. -// - -import Foundation - -public struct AdaptiveModalSnapPointPreset { - - public let layoutPreset: RNILayoutPreset; - public let animationKeyframe: AdaptiveModalAnimationConfig?; - - init( - layoutPreset: RNILayoutPreset, - animationKeyframe: AdaptiveModalAnimationConfig? = nil - ) { - self.layoutPreset = layoutPreset; - self.animationKeyframe = animationKeyframe; - }; -}; - -extension AdaptiveModalSnapPointPreset { - static func getDefaultOvershootSnapPoint( - forDirection direction: AdaptiveModalConfig.Direction - ) -> Self { - - let layoutPreset: RNILayoutPreset = { - switch direction { - case .bottomToTop: return .edgeTop; - case .topToBottom: return .edgeBottom; - case .leftToRight: return .edgeLeft; - case .rightToLeft: return .edgeRight; - }; - }(); - - return self.init(layoutPreset: layoutPreset); - }; - - static func getDefaultUnderShootSnapPoint( - forDirection direction: AdaptiveModalConfig.Direction - ) -> Self { - - let layoutPreset: RNILayoutPreset = { - switch direction { - case .bottomToTop: return .offscreenBottom; - case .topToBottom: return .offscreenTop; - case .leftToRight: return .offscreenLeft; - case .rightToLeft: return .offscreenRight; - }; - }(); - - return self.init(layoutPreset: layoutPreset); - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalUtilities.swift b/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalUtilities.swift deleted file mode 100644 index 9b37bbe5..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/AdaptiveModalUtilities.swift +++ /dev/null @@ -1,214 +0,0 @@ -// -// AdaptiveModalManager+Helpers.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/27/23. -// - -import UIKit - -class AdaptiveModalUtilities { - - static func interpolate( - inputValue : CGFloat, - rangeInput : [CGFloat], - rangeOutput : [CGFloat], - shouldClampMin: Bool = false, - shouldClampMax: Bool = false - ) -> CGFloat? { - - guard rangeInput.count == rangeOutput.count, - rangeInput.count >= 2 - else { return nil }; - - if shouldClampMin, inputValue < rangeInput.first! { - return rangeOutput.first!; - }; - - if shouldClampMax, inputValue > rangeInput.last! { - return rangeOutput.last!; - }; - - // A - Extrapolate Left - if inputValue < rangeInput.first! { - - let rangeInputStart = rangeInput.first!; - let rangeOutputStart = rangeOutput.first!; - - let delta1 = rangeInputStart - inputValue; - let percent = delta1 / rangeInputStart; - - // extrapolated "range output end" - let rangeOutputEnd = rangeOutputStart - (rangeOutput[1] - rangeOutputStart); - - let interpolatedValue = RNIAnimator.EasingFunctions.lerp( - valueStart: rangeOutputEnd, - valueEnd : rangeOutputStart, - percent : percent - ); - - let delta2 = interpolatedValue - rangeOutputEnd; - return rangeOutputStart - delta2; - }; - - let (rangeStartIndex, rangeEndIndex): (Int, Int) = { - let rangeInputEnumerated = rangeInput.enumerated(); - - let match = rangeInputEnumerated.first { - guard let nextValue = rangeInput[safeIndex: $0.offset + 1] - else { return false }; - - return inputValue >= $0.element && inputValue < nextValue; - }; - - // B - Interpolate Between - if let match = match { - let rangeStartIndex = match.offset; - return (rangeStartIndex, rangeStartIndex + 1); - }; - - let lastIndex = rangeInput.count - 1; - let secondToLastIndex = rangeInput.count - 2; - - // C - Extrapolate Right - return (secondToLastIndex, lastIndex); - }(); - - guard let rangeInputStart = rangeInput [safeIndex: rangeStartIndex], - let rangeInputEnd = rangeInput [safeIndex: rangeEndIndex ], - let rangeOutputStart = rangeOutput[safeIndex: rangeStartIndex], - let rangeOutputEnd = rangeOutput[safeIndex: rangeEndIndex ] - else { return nil }; - - let inputValueAdj = inputValue - rangeInputStart; - let rangeInputEndAdj = rangeInputEnd - rangeInputStart; - - let progress = inputValueAdj / rangeInputEndAdj; - - return RNIAnimator.EasingFunctions.lerp( - valueStart: rangeOutputStart, - valueEnd : rangeOutputEnd, - percent : progress - ); - }; - - static func interpolateColor( - inputValue : CGFloat, - rangeInput : [CGFloat], - rangeOutput : [UIColor], - shouldClampMin: Bool = false, - shouldClampMax: Bool = false - ) -> UIColor? { - var rangeR: [CGFloat] = []; - var rangeG: [CGFloat] = []; - var rangeB: [CGFloat] = []; - var rangeA: [CGFloat] = []; - - for color in rangeOutput { - let rgba = color.rgba; - - rangeR.append(rgba.r); - rangeG.append(rgba.g); - rangeB.append(rgba.b); - rangeA.append(rgba.a); - }; - - - let nextR = Self.interpolate( - inputValue: inputValue, - rangeInput: rangeInput, - rangeOutput: rangeR, - shouldClampMin: shouldClampMin, - shouldClampMax: shouldClampMax - ); - - let nextG = Self.interpolate( - inputValue: inputValue, - rangeInput: rangeInput, - rangeOutput: rangeG, - shouldClampMin: shouldClampMin, - shouldClampMax: shouldClampMax - ); - - let nextB = Self.interpolate( - inputValue: inputValue, - rangeInput: rangeInput, - rangeOutput: rangeB, - shouldClampMin: shouldClampMin, - shouldClampMax: shouldClampMax - ); - - let nextA = Self.interpolate( - inputValue: inputValue, - rangeInput: rangeInput, - rangeOutput: rangeA, - shouldClampMin: shouldClampMin, - shouldClampMax: shouldClampMax - ); - - guard let nextR = nextR, - let nextG = nextG, - let nextB = nextB, - let nextA = nextA - else { return nil }; - - return UIColor( - red : nextR, - green: nextG, - blue : nextB, - alpha: nextA - ); - }; - - static func computeFinalPosition( - position: CGFloat, - initialVelocity: CGFloat, - decelerationRate: CGFloat = UIScrollView.DecelerationRate.normal.rawValue - ) -> CGFloat { - let pointPerSecond = abs(initialVelocity) / 1000.0; - let accelerationRate = 1 - decelerationRate; - - let displacement = (pointPerSecond * decelerationRate) / accelerationRate; - - return initialVelocity > 0 - ? position + displacement - : position - displacement; - }; - - static func invertPercent(_ percent: CGFloat) -> CGFloat { - if percent >= 0 && percent <= 1 { - return 1 - percent; - }; - - if percent < 0 { - return abs(percent) + 1; - }; - - // percent > 1 - return -(percent - 1); - }; - - static func unwrapAndSetProperty( - forObject object: O?, - forPropertyKey propertyKey: WritableKeyPath, - withValue value: T? - ) { - guard var object = object, - let value = value - else { return }; - - object[keyPath: propertyKey] = value; - }; - - static func unwrapAndSetProperty( - for valueType: inout O?, - forPropertyKey propertyKey: WritableKeyPath, - withValue newValue: T? - ) { - guard var valueType = valueType, - let newValue = newValue - else { return }; - - valueType[keyPath: propertyKey] = newValue; - }; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/CACornerMask+StaticAlias.swift b/experiments/swift-programmatic-modal/AdaptiveModal/CACornerMask+StaticAlias.swift deleted file mode 100644 index 628f90da..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/CACornerMask+StaticAlias.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// StaticAlias.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/21/23. -// - -import UIKit - -extension CACornerMask { - - public static let allCorners: Self = [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner, - .layerMinXMaxYCorner, - .layerMaxXMaxYCorner, - ]; - - public static let topCorners: Self = [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner, - ]; - - public static let bottomCorners: Self = [ - .layerMinXMaxYCorner, - .layerMaxXMaxYCorner, - ]; - - public static let leftCorners: Self = [ - .layerMinXMinYCorner, - .layerMinXMaxYCorner, - ]; - - public static let rightCorners: Self = [ - .layerMaxXMinYCorner, - .layerMaxXMaxYCorner, - ]; -}; diff --git a/experiments/swift-programmatic-modal/AdaptiveModal/UIBezierPath+VariadicCornerRadius.swift b/experiments/swift-programmatic-modal/AdaptiveModal/UIBezierPath+VariadicCornerRadius.swift deleted file mode 100644 index 2db4b826..00000000 --- a/experiments/swift-programmatic-modal/AdaptiveModal/UIBezierPath+VariadicCornerRadius.swift +++ /dev/null @@ -1,118 +0,0 @@ -// -// UIBezierPath+VariadicCornerRadius.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/28/23. -// - -import UIKit - -public extension UIBezierPath { - - convenience init( - shouldRoundRect rect: CGRect, - topLeftRadius: CGFloat, - topRightRadius: CGFloat, - bottomLeftRadius: CGFloat, - bottomRightRadius: CGFloat - ) { - self.init(); - - let path = CGMutablePath() - - let topLeft = rect.origin - let topRight = CGPoint(x: rect.maxX, y: rect.minY) - let bottomRight = CGPoint(x: rect.maxX, y: rect.maxY) - let bottomLeft = CGPoint(x: rect.minX, y: rect.maxY) - - if topLeftRadius != 0 { - path.move(to: CGPoint( - x: topLeft.x + topLeftRadius, - y: topLeft.y - )); - - } else { - path.move(to: topLeft); - } - - if topRightRadius != 0 { - path.addLine(to: CGPoint( - x: topRight.x - topRightRadius, - y: topRight.y - )); - - path.addArc( - tangent1End: topRight, - tangent2End: CGPoint( - x: topRight.x, - y: topRight.y + topRightRadius - ), - radius: topRightRadius - ); - - } else { - path.addLine(to: topRight); - }; - - if bottomRightRadius != 0 { - path.addLine(to: CGPoint( - x: bottomRight.x, - y: bottomRight.y - bottomRightRadius - )); - - path.addArc( - tangent1End: bottomRight, - tangent2End: CGPoint( - x: bottomRight.x - bottomRightRadius, - y: bottomRight.y - ), - radius: bottomRightRadius - ); - - } else { - path.addLine(to: bottomRight); - }; - - if bottomLeftRadius != 0 { - path.addLine(to: CGPoint( - x: bottomLeft.x + bottomLeftRadius, - y: bottomLeft.y - )); - - path.addArc( - tangent1End: bottomLeft, - tangent2End: CGPoint( - x: bottomLeft.x, - y: bottomLeft.y - bottomLeftRadius - ), - radius: bottomLeftRadius - ); - - } else { - path.addLine(to: bottomLeft); - }; - - if topLeftRadius != 0 { - path.addLine(to: CGPoint( - x: topLeft.x, - y: topLeft.y + topLeftRadius - )); - - path.addArc( - tangent1End: topLeft, - tangent2End: CGPoint( - x: topLeft.x + topLeftRadius, - y: topLeft.y - ), - radius: topLeftRadius - ); - - } else { - path.addLine(to: topLeft); - }; - - path.closeSubpath(); - cgPath = path; - }; -}; - diff --git a/experiments/swift-programmatic-modal/RNIDynamicModal/RNIDynamicModal.swift b/experiments/swift-programmatic-modal/RNIDynamicModal/RNIDynamicModal.swift deleted file mode 100644 index 8051366c..00000000 --- a/experiments/swift-programmatic-modal/RNIDynamicModal/RNIDynamicModal.swift +++ /dev/null @@ -1,114 +0,0 @@ -// -// RNIDynamicModal.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/15/23. -// - -import UIKit - -class RNIDynamicModalAnimator: NSObject, UIViewControllerTransitioningDelegate { - - enum Direction { - case left, right, top, bottom; - }; - - let direction: Direction; - let isPresentation: Bool; - - init( - direction: Direction, - isPresentation: Bool - ) { - self.direction = direction; - self.isPresentation = isPresentation; - - super.init(); - }; - - // MARK: - UIViewControllerTransitioningDelegate - // --------------------------------------------- - - func transitionDuration( - using transitionContext: UIViewControllerContextTransitioning? - ) -> TimeInterval { - return 0.3 - } - - func animateTransition( - using transitionContext: UIViewControllerContextTransitioning - ) { - - // 1 - let key: UITransitionContextViewControllerKey = isPresentation ? .to : .from - - guard let controller = transitionContext.viewController(forKey: key) - else { return } - - // 2 - if isPresentation { - transitionContext.containerView.addSubview(controller.view) - } - - // 3 - let presentedFrame = transitionContext.finalFrame(for: controller) - var dismissedFrame = presentedFrame; - - switch direction { - case .left: - dismissedFrame.origin.x = -presentedFrame.width - - case .right: - dismissedFrame.origin.x = transitionContext.containerView.frame.size.width - - case .top: - dismissedFrame.origin.y = -presentedFrame.height - - case .bottom: - dismissedFrame.origin.y = transitionContext.containerView.frame.size.height - } - - // 4 - let initialFrame = isPresentation ? dismissedFrame : presentedFrame - let finalFrame = isPresentation ? presentedFrame : dismissedFrame - - // 5 - let animationDuration = transitionDuration(using: transitionContext) - controller.view.frame = initialFrame - UIView.animate( - withDuration: animationDuration, - animations: { - controller.view.frame = finalFrame - }, completion: { finished in - if !self.isPresentation { - controller.view.removeFromSuperview() - } - transitionContext.completeTransition(finished) - }) - } -}; - - - -class RNIDynamicModalViewController: UIViewController { - - override func loadView() { - let rootView = UIView(); - rootView.backgroundColor = .white; - - self.view = rootView; - - let label = UILabel(); - label.text = "Hello World!"; - label.textColor = .black; - - - rootView.addSubview(label); - label.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - label.centerXAnchor.constraint(equalTo: view.centerXAnchor), - label.centerYAnchor.constraint(equalTo: view.centerYAnchor) - ]); - }; -}; diff --git a/experiments/swift-programmatic-modal/RNIDynamicModal/RootViewController.swift b/experiments/swift-programmatic-modal/RNIDynamicModal/RootViewController.swift deleted file mode 100644 index e160fe9f..00000000 --- a/experiments/swift-programmatic-modal/RNIDynamicModal/RootViewController.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// RootViewController.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/17/23. -// - -import UIKit - -class RootViewController : UIViewController { - override func loadView() { - let view = UIView() - view.backgroundColor = .white; - - let label = UILabel(); - label.text = "Show Modal!"; - label.textColor = .black; - label.isUserInteractionEnabled = true; - - label.addGestureRecognizer( - UITapGestureRecognizer( - target: self, - action: #selector(self.onPressButton(_:)) - ) - ); - - view.addSubview(label); - - view.translatesAutoresizingMaskIntoConstraints = false; - label.translatesAutoresizingMaskIntoConstraints = false; - - - NSLayoutConstraint.activate([ - label.centerXAnchor.constraint(equalTo: view.centerXAnchor), - label.centerYAnchor.constraint(equalTo: view.centerYAnchor) - ]); - - self.view = view - }; - - @objc func onPressButton(_ sender: UITapGestureRecognizer){ - - let modalVC = RNIDynamicModalViewController(); - - // let transitionController = RNIDynamicModalTransitionController( - // presentedViewController: modalVC, - // presenting: self - // ); - // - // modalVC.modalPresentationStyle = .custom; - // modalVC.transitioningDelegate = transitionController; - - self.present(modalVC, animated: true); - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayout.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayout.swift deleted file mode 100644 index e112ea70..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayout.swift +++ /dev/null @@ -1,369 +0,0 @@ -// -// RNILayout.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/19/23. -// - -import UIKit - -public struct RNILayout { - - // MARK: - Public Types - // -------------------- - - public enum HorizontalAlignment: String { - case left, right, center; - }; - - public enum VerticalAlignment: String { - case top, bottom, center; - }; - - // MARK: - Properties - // ------------------ - - public let horizontalAlignment: HorizontalAlignment; - public let verticalAlignment : VerticalAlignment; - - public let width : RNILayoutValue; - public let height: RNILayoutValue; - - public let marginLeft : RNILayoutValue?; - public let marginRight : RNILayoutValue?; - public let marginTop : RNILayoutValue?; - public let marginBottom: RNILayoutValue?; - - // MARK: - Init - // ------------ - - init( - horizontalAlignment: HorizontalAlignment, - verticalAlignment : VerticalAlignment, - - width : RNILayoutValue, - height: RNILayoutValue, - - marginLeft : RNILayoutValue? = nil, - marginRight : RNILayoutValue? = nil, - marginTop : RNILayoutValue? = nil, - marginBottom: RNILayoutValue? = nil - ) { - self.horizontalAlignment = horizontalAlignment; - self.verticalAlignment = verticalAlignment; - - self.width = width; - self.height = height; - - self.marginLeft = marginLeft; - self.marginRight = marginRight; - self.marginTop = marginTop; - self.marginBottom = marginBottom; - }; - - init( - derivedFrom prev: Self, - horizontalAlignment: HorizontalAlignment? = nil, - verticalAlignment : VerticalAlignment? = nil, - - width : RNILayoutValue? = nil, - height: RNILayoutValue? = nil, - - marginLeft : RNILayoutValue? = nil, - marginRight : RNILayoutValue? = nil, - marginTop : RNILayoutValue? = nil, - marginBottom: RNILayoutValue? = nil - ) { - self.horizontalAlignment = horizontalAlignment ?? prev.horizontalAlignment; - self.verticalAlignment = verticalAlignment ?? prev.verticalAlignment; - - self.width = width ?? prev.width; - self.height = height ?? prev.height; - - self.marginLeft = marginLeft ?? prev.marginLeft; - self.marginRight = marginRight ?? prev.marginRight; - self.marginTop = marginTop ?? prev.marginTop; - self.marginBottom = marginBottom ?? prev.marginBottom; - }; - - // MARK: - Intermediate Functions - // ------------------------------ - - /// Compute Rect - Step 1 - /// * Rect with the computed size based on `size` config. - /// - public func computeRawRectSize( - usingLayoutValueContext context: RNILayoutValueContext - ) -> CGSize { - - let computedWidth = self.width.computeValue( - usingLayoutValueContext: context, - preferredSizeKey: \.width - ); - - let computedHeight = self.height.computeValue( - usingLayoutValueContext: context, - preferredSizeKey: \.height - ); - - return CGSize( - width : computedWidth ?? 0, - height: computedHeight ?? 0 - ); - }; - - /// Compute Rect - Step 2 - /// * Rect with the origin based on `horizontalAlignment`, and - /// `verticalAlignment` config. - /// - public func computeRawRectOrigin( - usingLayoutValueContext context: RNILayoutValueContext, - forRect rect: CGRect? = nil, - ignoreXAxis: Bool = false, - ignoreYAxis: Bool = false - ) -> CGRect { - - let origin = rect?.origin ?? .zero; - let size = rect?.size ?? context.currentSize ?? .zero; - - var rect = CGRect(origin: origin, size: size); - - if !ignoreXAxis { - // Compute Origin - X - switch self.horizontalAlignment { - case .center: - rect.setPoint(midX: context.targetRect.midX); - - case .left: - rect.setPoint(minX: context.targetRect.minX); - - case .right: - rect.setPoint(maxX: context.targetRect.maxX); - }; - }; - - if !ignoreYAxis { - // Compute Origin - Y - switch self.verticalAlignment { - case .center: - rect.setPoint(midY: context.targetRect.midY); - - case .top: - rect.setPoint(minY: context.targetRect.minY); - - case .bottom: - rect.origin.y = context.targetRect.height - rect.height; - }; - }; - - return rect; - }; - - // MARK: - Functions - // ----------------- - - /// Compute Rect - Step 3 - /// * Rect with the computed size based on `size` config. - /// - /// * Rect with the origin based on `horizontalAlignment`, and - /// `verticalAlignment` config. - /// - /// * Rect with margins applied to it based on the margin-related properties - /// - public func computeRect( - usingLayoutValueContext baseContext: RNILayoutValueContext - ) -> CGRect { - - let computedSize = self.computeRawRectSize( - usingLayoutValueContext: baseContext - ); - - let context = RNILayoutValueContext( - derivedFrom: baseContext, - currentSize: computedSize - ); - - var rect = self.computeRawRectOrigin(usingLayoutValueContext: context); - - let computedMargins = RNILayoutMargins( - usingLayoutConfig: self, - usingLayoutValueContext: context - ); - - let marginRects = RNILayoutMarginRects( - margins: computedMargins, - viewRect: rect, - targetRect: context.targetRect - ); - - let shouldResizeWidth: Bool = { - if computedMargins.horizontal == 0 { - return false; - }; - - if self.width.mode == .stretch && - !computedMargins.hasNegativeHorizontalMargins { - - return true; - }; - - return ( - computedMargins.left > 0 - && computedMargins.right > 0 - && computedMargins.horizontal > rect.width - ); - }(); - - let shouldResizeHeight: Bool = { - if computedMargins.vertical == 0 { - return false; - }; - - if self.height.mode == .stretch && - !computedMargins.hasNegativeVerticalMargins { - - return true; - }; - - return ( - computedMargins.top > 0 - && computedMargins.bottom > 0 - && computedMargins.vertical > rect.height - ); - }(); - - if shouldResizeWidth { - let offsetWidth = self.width.mode == .stretch - ? computedMargins.horizontal - : computedMargins.horizontal - rect.width; - - rect.size.width -= offsetWidth; - }; - - if shouldResizeHeight { - let offsetHeight = self.height.mode == .stretch - ? computedMargins.vertical - : computedMargins.vertical - rect.height; - - rect.size.height -= offsetHeight; - }; - - let shouldOffsetX: Bool = { - switch self.horizontalAlignment { - case .left, .right: - return true; - - case .center: - return - marginRects.left.maxX > rect.minX || - marginRects.right.minX < rect.maxX; - }; - }(); - - let shouldOffsetY: Bool = { - switch self.verticalAlignment { - case .top, .bottom: - return true; - - case .center: - return - marginRects.top.maxY > rect.minY || - marginRects.bottom.minY < rect.maxY; - }; - }(); - - if shouldOffsetX { - let offsetLeft = computedMargins.left - rect.minX; - - let shouldApplyNegativeLeftMargin = - self.horizontalAlignment == .left && - computedMargins.left < 0; - - if offsetLeft > 0 { - rect.origin.x += offsetLeft; - - } else if shouldApplyNegativeLeftMargin { - rect.origin.x -= abs(computedMargins.left); - }; - - let offsetRight: CGFloat = { - let marginRightX = context.targetRect.maxX - computedMargins.right; - return rect.maxX - marginRightX; - }(); - - let shouldApplyNegativeRightMargin = - self.horizontalAlignment == .right && - computedMargins.right < 0; - - if offsetRight > 0 { - rect.origin.x -= offsetRight; - - } else if shouldApplyNegativeRightMargin { - rect.origin.x += abs(computedMargins.right); - }; - }; - - if shouldOffsetY { - let offsetTop = computedMargins.top - rect.minY; - - let shouldApplyNegativeTopMargin = - self.verticalAlignment == .top && - computedMargins.top < 0; - - if offsetTop > 0 { - rect.origin.y += offsetTop; - - } else if shouldApplyNegativeTopMargin { - rect.origin.y -= abs(computedMargins.top); - }; - - let offsetBottom: CGFloat = { - let marginBottomY = context.targetRect.maxY - computedMargins.bottom; - return rect.maxY - marginBottomY; - }(); - - let shouldApplyNegativeBottomMargin = - self.verticalAlignment == .bottom && - computedMargins.bottom < 0; - - if offsetBottom > 0 { - rect.origin.y -= offsetBottom; - - } else if shouldApplyNegativeBottomMargin { - rect.origin.y += abs(computedMargins.bottom); - }; - }; - - let shouldRecomputeXAxis: Bool = { - switch self.horizontalAlignment { - case .center: - return !shouldOffsetX && shouldResizeWidth - - default: - return false; - }; - }(); - - let shouldRecomputeYAxis: Bool = { - switch self.verticalAlignment { - case .center: - return !shouldOffsetY && shouldResizeHeight - - default: - return false; - }; - }(); - - if shouldRecomputeXAxis || shouldRecomputeYAxis { - // re-compute origin - rect = self.computeRawRectOrigin( - usingLayoutValueContext: context, - forRect: rect, - ignoreXAxis: !shouldRecomputeXAxis, - ignoreYAxis: !shouldRecomputeYAxis - ); - }; - - return rect; - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutKeyboardValues.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutKeyboardValues.swift deleted file mode 100644 index 11d79c31..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutKeyboardValues.swift +++ /dev/null @@ -1,111 +0,0 @@ -// -// RNILayoutKeyboardValues.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/21/23. -// - -import UIKit - -public struct RNILayoutKeyboardValues { - - // MARK: - Properties - // ------------------ - - public var frameBegin: CGRect; - public var frameEnd: CGRect; - - public var animationDuration: CGFloat; - public var animationCurve: UIView.AnimationCurve; - - // MARK: - Computed Properties - // --------------------------- - - var keyboardAnimator: UIViewPropertyAnimator { - UIViewPropertyAnimator( - duration: self.animationDuration, - curve: self.animationCurve - ); - }; - - // MARK: - Functions - // ------------------ - - public func computeKeyboardSize( - relativeToView targetView: UIView - ) -> CGSize? { - - guard let window = targetView.window else { return nil }; - - // Get keyboard height. - let keyboardFrameInView = targetView.convert( - self.frameEnd, - from: window - ); - - let intersection = targetView.bounds.intersection(keyboardFrameInView); - - guard !intersection.isNull else { return nil }; - return intersection.size; - }; -}; - -// MARK: - Init -// ------------ - -public extension RNILayoutKeyboardValues { - - init?(fromNotification notification: NSNotification) { - guard let userInfo = notification.userInfo else { return nil }; - - func extract(key: String) throws -> T { - guard let rawValue = userInfo[key], - let value = rawValue as? T - else { throw NSError() }; - - return value; - }; - - func extractValue( - userInfoKey: String, - valueKey: KeyPath - ) throws -> T { - - guard let rawValue: NSValue = try? extract(key: userInfoKey) - else { throw NSError() }; - - return rawValue[keyPath: valueKey]; - }; - - do { - self.frameBegin = try extractValue( - userInfoKey: UIResponder.keyboardFrameBeginUserInfoKey, - valueKey: \.cgRectValue - ); - - self.frameEnd = try extractValue( - userInfoKey: UIResponder.keyboardFrameEndUserInfoKey, - valueKey: \.cgRectValue - ); - - self.animationDuration = try extract( - key: UIResponder.keyboardAnimationDurationUserInfoKey - ); - - self.animationCurve = try { - let curveValue: Int = try extract( - key: UIResponder.keyboardAnimationCurveUserInfoKey - ); - - guard let curve = UIView.AnimationCurve(rawValue: curveValue) else { - throw NSError(); - }; - - return curve; - }(); - - } catch { - return nil; - }; - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutMarginRects.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutMarginRects.swift deleted file mode 100644 index 2b93060c..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutMarginRects.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// RNILayoutMarginRects.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/22/23. -// - -import Foundation - -public struct RNILayoutMarginRects { - - var left : CGRect; - var right : CGRect; - var top : CGRect; - var bottom: CGRect; - - init( - margins: RNILayoutMargins, - viewRect: CGRect, - targetRect: CGRect - ) { - self.left = CGRect( - origin: .zero, - size: CGSize( - width: margins.left, - height: targetRect.height - ) - ); - - self.right = CGRect( - x: targetRect.maxX - margins.right, - y: 0, - width: margins.right, - height: targetRect.height - ); - - self.top = CGRect( - origin: .zero, - size: CGSize( - width: targetRect.width, - height: margins.top - ) - ); - - self.bottom = CGRect( - x: 0, - y: targetRect.maxY - margins.bottom, - width: targetRect.width, - height: margins.bottom - ); - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutMargins.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutMargins.swift deleted file mode 100644 index a8b62ad9..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutMargins.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// RNILayoutMargin.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/22/23. -// - -import Foundation - -public struct RNILayoutMargins { - public var left : CGFloat; - public var right : CGFloat; - public var top : CGFloat; - public var bottom: CGFloat; - - public var horizontal: CGFloat { - self.left + self.right; - }; - - public var vertical: CGFloat { - self.top + self.bottom; - }; - - public var hasNegativeHorizontalMargins: Bool { - self.left < 0 || self.right < 0; - }; - - public var hasNegativeVerticalMargins: Bool { - self.top < 0 || self.bottom < 0; - }; - - init( - left: CGFloat? = nil, - right: CGFloat? = nil, - top: CGFloat? = nil, - bottom: CGFloat? = nil - ) { - self.left = left ?? 0; - self.right = right ?? 0; - self.top = top ?? 0; - self.bottom = bottom ?? 0; - } -}; - -public extension RNILayoutMargins { - - init( - usingLayoutConfig layoutConfig: RNILayout, - usingLayoutValueContext context: RNILayoutValueContext - ) { - self.left = layoutConfig.marginLeft?.computeValue( - usingLayoutValueContext: context, - preferredSizeKey: \.width - ) ?? 0; - - self.right = layoutConfig.marginRight?.computeValue( - usingLayoutValueContext: context, - preferredSizeKey: \.width - ) ?? 0; - - self.top = layoutConfig.marginTop?.computeValue( - usingLayoutValueContext: context, - preferredSizeKey: \.height - ) ?? 0; - - self.bottom = layoutConfig.marginBottom?.computeValue( - usingLayoutValueContext: context, - preferredSizeKey: \.height - ) ?? 0; - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutPreset.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutPreset.swift deleted file mode 100644 index 82b97ba6..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutPreset.swift +++ /dev/null @@ -1,205 +0,0 @@ -// -// RNILayoutPreset.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/23/23. -// - -import UIKit - -public enum RNILayoutPreset { - case offscreenBottom, - offscreenTop, - offscreenLeft, - offscreenRight; - - case halfOffscreenBottom, - halfOffscreenTop, - halfOffscreenLeft, - halfOffscreenRight; - - case edgeBottom, - edgeTop, - edgeLeft, - edgeRight; - - case fitScreen, - fitScreenHorizontally, - fitScreenVertically; - - case center; - - case layoutConfig(_ config: RNILayout); - - // MARK: Functions - // --------------- - - public func getLayoutConfig( - fromBaseLayoutConfig baseLayoutConfig: RNILayout - ) -> RNILayout { - - switch self { - case .offscreenBottom: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .bottom, - marginTop: .constant(0), - marginBottom: .percent( - relativeTo: .currentHeight, - percentValue: -1 - ) - ); - - case .offscreenTop: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .top, - marginTop: .percent( - relativeTo: .currentHeight, - percentValue: -1 - ), - marginBottom: .constant(0) - ); - - case .offscreenLeft: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .left, - marginLeft: .percent( - relativeTo: .currentWidth, - percentValue: -1 - ), - marginRight: .constant(0) - ); - - case .offscreenRight: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .right, - marginLeft: .constant(0), - marginRight: .percent( - relativeTo: .currentWidth, - percentValue: -1 - ) - ); - - case .edgeBottom: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .bottom - ); - - case .halfOffscreenBottom: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .top, - marginTop: .constant(0), - marginBottom: .percent( - relativeTo: .currentHeight, - percentValue: 0.5 - ) - ); - - case .halfOffscreenTop: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .top, - marginTop: .percent( - relativeTo: .currentHeight, - percentValue: -0.5 - ), - marginBottom: .constant(0) - ); - - case .halfOffscreenLeft: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .left, - marginLeft: .percent( - relativeTo: .currentWidth, - percentValue: -0.5 - ), - marginRight: .constant(0) - ); - - case .halfOffscreenRight: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .right, - marginLeft: .constant(0), - marginRight: .percent( - relativeTo: .currentWidth, - percentValue: 0.5 - ) - ); - - case .edgeTop: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .top, - marginTop: .constant(0) - ); - - case .edgeLeft: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .left, - marginLeft: .constant(0) - ); - - case .edgeRight: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .right, - marginRight: .constant(0) - ); - - case .center: - return .init( - derivedFrom: baseLayoutConfig, - verticalAlignment: .center - ); - - case .fitScreen: - return .init( - derivedFrom: baseLayoutConfig, - horizontalAlignment: .center, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .stretch - ), - marginLeft: .constant(0), - marginRight: .constant(0), - marginTop: .constant(0), - marginBottom: .constant(0) - ); - - case .fitScreenHorizontally: - return .init( - derivedFrom: baseLayoutConfig, - width: RNILayoutValue( - mode: .stretch - ), - marginLeft: .constant(0), - marginRight: .constant(0) - ); - - case .fitScreenVertically: - return .init( - derivedFrom: baseLayoutConfig, - height: RNILayoutValue( - mode: .stretch - ), - marginTop: .constant(0) - ); - - case let .layoutConfig(config): - return config; - }; - }; -}; - - diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValue+StaticAlias.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutValue+StaticAlias.swift deleted file mode 100644 index 778065e5..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValue+StaticAlias.swift +++ /dev/null @@ -1,122 +0,0 @@ -// -// RNILayoutValue+StaticInit.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/19/23. -// - -import UIKit - -public extension RNILayoutValue { - - static let stretch: Self = .init(mode: .stretch); - - static func stretch( - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) -> Self { - - return .init( - mode:. stretch, - offsetValue: offsetValue, - offsetOperation: offsetOperation, - minValue: minValue, - maxValue: maxValue - ); - }; - - static func constant(_ constantValue: CGFloat) -> Self { - return .init(mode: .constant(constantValue)) - }; - - static func percent( - relativeTo: RNILayoutValuePercentTarget = .targetSize, - percentValue: Double, - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) -> Self { - - return .init( - mode: .percent( - relativeTo: relativeTo, - percentValue: percentValue - ), - offsetValue: offsetValue, - offsetOperation: offsetOperation, - minValue: minValue, - maxValue: maxValue - ); - }; - - static func safeAreaInsets( - insetKey: KeyPath, - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) -> Self { - - return .init( - mode: .safeAreaInsets(insetKey: insetKey), - offsetValue: offsetValue, - offsetOperation: offsetOperation, - minValue: minValue, - maxValue: maxValue - ); - }; - - static func keyboardScreenRect( - rectKey: KeyPath, - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) -> Self { - - return .init( - mode: .keyboardScreenRect(rectKey: rectKey), - offsetValue: offsetValue, - offsetOperation: offsetOperation, - minValue: minValue, - maxValue: maxValue - ); - }; - - static func keyboardRelativeSize( - sizeKey: KeyPath, - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) -> Self { - - return .init( - mode: .keyboardRelativeSize(sizeKey: sizeKey), - offsetValue: offsetValue, - offsetOperation: offsetOperation, - minValue: minValue, - maxValue: maxValue - ); - }; - - static func multipleValues( - _ values: [RNILayoutValueMode], - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) -> Self { - - return .init( - mode: .multipleValues(values), - offsetValue: offsetValue, - offsetOperation: offsetOperation, - minValue: minValue, - maxValue: maxValue - ); - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValue.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutValue.swift deleted file mode 100644 index 0a50bf33..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValue.swift +++ /dev/null @@ -1,124 +0,0 @@ -// -// RNILayoutValue.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/8/23. -// - -import UIKit - -public struct RNILayoutValue { - - // MARK: - Types - // ------------- - - public enum Axis { - case horizontal, vertical; - }; - - // MARK: - Properties - // ------------------ - - public let mode: RNILayoutValueMode; - - public let offsetValue: RNILayoutValueMode?; - public let offsetOperation: RNIComputableOffset.OffsetOperation?; - - public let minValue: RNILayoutValueMode?; - public let maxValue: RNILayoutValueMode?; - - // MARK: - Init - // ------------ - - public init( - mode: RNILayoutValueMode, - offsetValue: RNILayoutValueMode? = nil, - offsetOperation: RNIComputableOffset.OffsetOperation? = nil, - minValue: RNILayoutValueMode? = nil, - maxValue: RNILayoutValueMode? = nil - ) { - self.mode = mode; - - self.offsetValue = offsetValue; - self.offsetOperation = offsetOperation; - self.minValue = minValue; - self.maxValue = maxValue; - }; - - // MARK: - Intermediate Functions - // ------------------------------ - - public func applyOffsets( - usingLayoutValueContext context: RNILayoutValueContext, - toValue value: CGFloat - ) -> CGFloat? { - guard let offsetValue = self.offsetValue else { return value }; - - let computedOffsetValue = offsetValue.compute( - usingLayoutValueContext: context, - preferredSizeKey: nil - ); - - guard let computedOffsetValue = computedOffsetValue else { return value }; - - let computableOffset = RNIComputableOffset( - offset: computedOffsetValue, - offsetOperation: self.offsetOperation ?? .add - ); - - return computableOffset.compute(withValue: value, isValueOnRHS: true); - }; - - public func clampValue( - usingLayoutValueContext context: RNILayoutValueContext, - forValue value: CGFloat - ) -> CGFloat? { - let computedMinValue = self.minValue?.compute( - usingLayoutValueContext: context, - preferredSizeKey: nil - ); - - let computedMaxValue = self.maxValue?.compute( - usingLayoutValueContext: context, - preferredSizeKey: nil - ); - - let clamped = value.clamped(min: computedMinValue, max: computedMaxValue); - - return clamped; - }; - - public func computeRawValue( - usingLayoutValueContext context: RNILayoutValueContext, - preferredSizeKey: KeyPath? - ) -> CGFloat? { - return self.mode.compute( - usingLayoutValueContext: context, - preferredSizeKey: preferredSizeKey - ); - }; - - // MARK: - User-Invoked Functions - // ------------------------------ - - public func computeValue( - usingLayoutValueContext context: RNILayoutValueContext, - preferredSizeKey: KeyPath? - ) -> CGFloat? { - - let computedValueRaw = self.computeRawValue( - usingLayoutValueContext: context, - preferredSizeKey: preferredSizeKey - ); - - let computedValueWithOffsets = self.applyOffsets( - usingLayoutValueContext: context, - toValue: computedValueRaw ?? 0 - ); - - return self.clampValue( - usingLayoutValueContext: context, - forValue: computedValueWithOffsets ?? 0 - ); - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValueContext.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutValueContext.swift deleted file mode 100644 index 460b2905..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValueContext.swift +++ /dev/null @@ -1,112 +0,0 @@ -// -// RNILayoutValueContext.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/9/23. -// - -import UIKit - -public struct RNILayoutValueContext { - - public static let `default`: Self = .init( - targetRect: .zero, - windowSize: nil, - currentSize: nil, - safeAreaInsets: nil, - keyboardScreenRect: nil, - keyboardRelativeSize: nil - ); - - public let targetRect: CGRect; - - public let windowSize: CGSize?; - public let currentSize: CGSize?; - - public let safeAreaInsets: UIEdgeInsets?; - - public let keyboardScreenRect: CGRect?; - public let keyboardRelativeSize: CGSize?; - - public var targetSize: CGSize { - self.targetRect.size; - }; - - public var screenSize: CGSize { - UIScreen.main.bounds.size; - }; -}; - -// MARK: - Init -// ------------ - -public extension RNILayoutValueContext { - - init( - derivedFrom prev: Self, - targetView: UIView? = nil, - targetRect: CGRect? = nil, - windowSize: CGSize? = nil, - currentSize: CGSize? = nil, - safeAreaInsets: UIEdgeInsets? = nil, - keyboardValues: RNILayoutKeyboardValues? = nil - ) { - - self.targetRect = targetRect ?? prev.targetRect; - self.windowSize = windowSize ?? prev.windowSize; - self.currentSize = currentSize ?? prev.currentSize; - - self.safeAreaInsets = safeAreaInsets ?? prev.safeAreaInsets; - self.keyboardScreenRect = keyboardValues?.frameEnd ?? prev.keyboardScreenRect; - - self.keyboardRelativeSize = { - guard let targetView = targetView, - let keyboardValues = keyboardValues - else { - return prev.keyboardRelativeSize; - }; - - let keyboardSize = keyboardValues.computeKeyboardSize( - relativeToView: targetView - ); - - return keyboardSize ?? prev.keyboardRelativeSize; - }(); - }; - - init?( - fromTargetViewController targetVC: UIViewController, - keyboardValues: RNILayoutKeyboardValues? = nil, - currentSize: CGSize? = nil - ) { - guard let targetView = targetVC.view else { return nil }; - - self.targetRect = targetView.frame; - self.windowSize = targetView.window?.bounds.size; - - self.safeAreaInsets = targetView.window?.safeAreaInsets; - self.currentSize = currentSize; - - self.keyboardScreenRect = keyboardValues?.frameEnd; - - self.keyboardRelativeSize = - keyboardValues?.computeKeyboardSize(relativeToView: targetView); - }; - - init?( - fromTargetView targetView: UIView, - keyboardValues: RNILayoutKeyboardValues? = nil, - currentSize: CGSize? = nil - ) { - self.targetRect = targetView.frame; - self.windowSize = targetView.window?.bounds.size; - - self.safeAreaInsets = targetView.window?.safeAreaInsets; - self.currentSize = currentSize; - - self.keyboardScreenRect = keyboardValues?.frameEnd; - - self.keyboardRelativeSize = - keyboardValues?.computeKeyboardSize(relativeToView: targetView); - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValueMode.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutValueMode.swift deleted file mode 100644 index 5d0af3fb..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValueMode.swift +++ /dev/null @@ -1,82 +0,0 @@ -// -// RNILayoutValueMode.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/8/23. -// - -import UIKit - -public enum RNILayoutValueMode: Equatable { - - case stretch; - - case constant(_: CGFloat); - - case percent( - relativeTo: RNILayoutValuePercentTarget = .targetSize, - percentValue: Double - ); - - case safeAreaInsets( - insetKey: KeyPath - ); - - case keyboardScreenRect( - rectKey: KeyPath - ); - - case keyboardRelativeSize( - sizeKey: KeyPath - ); - - case multipleValues(_ values: [Self]); - - // MARK: Functions - // --------------- - - public func compute( - usingLayoutValueContext context: RNILayoutValueContext, - preferredSizeKey: KeyPath? - ) -> CGFloat? { - - switch self { - case .stretch: - guard let preferredSizeKey = preferredSizeKey else { return nil }; - return context.targetSize[keyPath: preferredSizeKey]; - - case let .constant(constantValue): - return constantValue; - - case let .percent(relativeToValue, percentValue): - guard let preferredSizeKey = preferredSizeKey else { return nil }; - - let targetValue = relativeToValue.getValue( - layoutValueContext: context, - preferredSizeKey: preferredSizeKey - ); - - guard let targetValue = targetValue else { return nil }; - return targetValue * percentValue; - - case let .safeAreaInsets(insetKey): - return context.safeAreaInsets?[keyPath: insetKey]; - - case let .keyboardScreenRect(rectKey): - return context.keyboardScreenRect?[keyPath: rectKey]; - - case let .keyboardRelativeSize(sizeKey): - return context.keyboardRelativeSize?[keyPath: sizeKey]; - - case let .multipleValues(computableValues): - return computableValues.reduce(0) { - let computedValue = $1.compute( - usingLayoutValueContext: context, - preferredSizeKey: preferredSizeKey - ); - - return $0 + (computedValue ?? 0); - }; - }; - }; -}; diff --git a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValuePercentTarget.swift b/experiments/swift-programmatic-modal/RNILayout/RNILayoutValuePercentTarget.swift deleted file mode 100644 index c0637399..00000000 --- a/experiments/swift-programmatic-modal/RNILayout/RNILayoutValuePercentTarget.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// RNILayoutValuePercentTarget.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/8/23. -// - -import UIKit - -public enum RNILayoutValuePercentTarget { - - case screenSize , screenWidth , screenHeight; - case windowSize , windowWidth , windowHeight; - case targetSize , targetWidth , targetHeight; - case currentSize, currentWidth, currentHeight; - - public func getValue( - layoutValueContext context: RNILayoutValueContext, - preferredSizeKey: KeyPath - ) -> CGFloat? { - - switch self { - case .screenSize: - return context.screenSize[keyPath: preferredSizeKey]; - - case .screenWidth: - return context.screenSize.width; - - case .screenHeight: - return context.screenSize.height; - - case .windowSize: - return context.windowSize?[keyPath: preferredSizeKey]; - - case .windowWidth: - return context.windowSize?.width; - - case .windowHeight: - return context.windowSize?.height; - - case .targetSize: - return context.targetSize[keyPath: preferredSizeKey]; - - case .targetWidth: - return context.targetSize.width; - - case .targetHeight: - return context.targetSize.height; - - case .currentSize: - return context.currentSize?[keyPath: preferredSizeKey]; - - case .currentWidth: - return context.currentSize?.width; - - case .currentHeight: - return context.currentSize?.height; - }; - }; -}; diff --git a/experiments/swift-programmatic-modal/Test/AdaptiveModalConfigTestPresets.swift b/experiments/swift-programmatic-modal/Test/AdaptiveModalConfigTestPresets.swift deleted file mode 100644 index 62fe69b8..00000000 --- a/experiments/swift-programmatic-modal/Test/AdaptiveModalConfigTestPresets.swift +++ /dev/null @@ -1,1108 +0,0 @@ -// -// AdaptiveModalConfigTestPresets.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/15/23. -// - -import UIKit - -enum AdaptiveModalConfigTestPresets: CaseIterable { - - static let `default`: Self = .testTopToBottom; - - case testModalTransform01; - case testModalTransformScale; - case testModalBorderAndShadow01; - case testLeftToRight; - case testTopToBottom; - - case test01; - case test02; - - case demo01; - case demo02; - case demo03; - case demo04; - case demo05; - case demo06; - case demo07; - case demo08; - case demo09; - case demo10; - - var config: AdaptiveModalConfig { - switch self { - - // MARK: - Tests - // ------------- - - case .testModalTransform01: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 0 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.2) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalRotation: 0.2, - modalScaleX: 0.5, - modalScaleY: 0.5, - modalTranslateX: -100, - modalTranslateY: 20 - ) - ), - - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalRotation: -0.2, - modalScaleX: 0.5, - modalScaleY: 1, - modalTranslateX: 0, - modalTranslateY: 0 - ) - ), - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.6) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - //modalRotation: 1, - modalScaleX: 1, - modalScaleY: 1 - //modalTranslateX: 0, - //modalTranslateY: 0 - ) - ), - ], - snapDirection: .bottomToTop, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreenVertically - ) - ); - - case .testModalTransformScale: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 0 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.2) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalScaleX: 1, - modalScaleY: 1 - ) - ), - - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalScaleX: 0.5, - modalScaleY: 1 - ) - ), - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.6) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalScaleX: 1.5, - modalScaleY: 1.5 - ) - ), - ], - snapDirection: .bottomToTop, - undershootSnapPoint: .init( - layoutPreset: .offscreenBottom, - animationKeyframe: .init( - modalScaleX: 0.25, - modalScaleY: 0.25 - ) - ), - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreenVertically - ) - ); - - case .testModalBorderAndShadow01: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 0 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .percent(percentValue: 0.8), - height: .percent(percentValue: 0.2) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalBorderWidth: 2, - modalBorderColor: .blue, - modalShadowColor: .blue, - modalShadowOffset: .init(width: 3, height: 3), - modalShadowOpacity: 0.4, - modalShadowRadius: 4.0 - ) - ), - - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .percent(percentValue: 0.8), - height: .percent(percentValue: 0.4) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalBorderWidth: 4, - modalBorderColor: .cyan, - modalShadowColor: .green, - modalShadowOffset: .init(width: 6, height: 6), - modalShadowOpacity: 0.5, - modalShadowRadius: 5 - ) - ), - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .percent(percentValue: 0.9), - height: .percent(percentValue: 0.7) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalBorderWidth: 8, - modalBorderColor: .green, - modalShadowColor: .purple, - modalShadowOffset: .init(width: 9, height: 9), - modalShadowOpacity: 0.9, - modalShadowRadius: 7 - ) - ), - ], - snapDirection: .bottomToTop, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreenVertically - ) - ); - - case .testLeftToRight: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .percent(percentValue: 0.65), - marginLeft: .constant(15) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - ) - ), - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .stretch, - height: .percent(percentValue: 0.85), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - ) - ), - ], - snapDirection: .leftToRight, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .edgeRight - ) - ); - - case .testTopToBottom: return AdaptiveModalConfig( - snapPoints: [ - .init( - snapPoint: .init( - horizontalAlignment: .center, - verticalAlignment: .top, - width: .stretch, - height: .percent(percentValue: 0.2) - ) - ) - ], - snapDirection: .topToBottom, - overshootSnapPoint: .init( - layoutPreset: .fitScreenVertically - ) - ); - - case .test01: return AdaptiveModalConfig( - snapPoints: [ - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.1) - ) - ), - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.3) - ) - ), - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.7) - ) - ), - ], - snapDirection: .bottomToTop - ); - - case .test02: return AdaptiveModalConfig( - snapPoints: [ - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.3) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalCornerRadius: 15, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ], - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0 - ) - ), - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.7), - maxValue: .constant(ScreenSize.iPhone8.size.width) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.7), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalCornerRadius: 20, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMinXMaxYCorner, - .layerMaxXMinYCorner, - .layerMaxXMaxYCorner - ], - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0.5 - ) - ), - ], - snapDirection: .bottomToTop, - interpolationClampingConfig: .init( - shouldClampModalLastHeight: true, - shouldClampModalLastWidth: true, - shouldClampModalLastX: true - ) - ); - - // MARK: - Demos - // ------------- - - case .demo01: return AdaptiveModalConfig( - snapPoints: [ - // Snap Point 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.3) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - //modalOpacity: 1, - modalShadowOffset: .init(width: 0, height: -2), - modalShadowOpacity: 0.2, - modalShadowRadius: 7, - modalCornerRadius: 25, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ], - modalBackgroundOpacity: 0.9, - modalBackgroundVisualEffect: UIBlurEffect(style: .systemUltraThinMaterial), - modalBackgroundVisualEffectIntensity: 1, - backgroundOpacity: 0, - backgroundVisualEffect: UIBlurEffect(style: .systemUltraThinMaterialDark), - backgroundVisualEffectIntensity: 0 - ) - ), - - // Snap Point 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.5), - marginLeft: .constant(15), - marginRight: .constant(15), - marginBottom: .init( - mode: .safeAreaInsets(insetKey: \.bottom), - minValue: .constant(15) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.2, - modalShadowRadius: 15, - modalCornerRadius: 10, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner, - .layerMinXMaxYCorner, - .layerMaxXMaxYCorner - ], - modalBackgroundOpacity: 0.85, - modalBackgroundVisualEffectIntensity: 0.6, - backgroundOpacity: 0.1, - backgroundVisualEffectIntensity: 0.075 - ) - ), - - // Snap Point 3 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.85), - maxValue: .constant(ScreenSize.iPhone8.size.width) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.75), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.3, - modalShadowRadius: 10, - modalCornerRadius: 20, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMinXMaxYCorner, - .layerMaxXMinYCorner, - .layerMaxXMaxYCorner - ], - modalBackgroundOpacity: 0.8, - modalBackgroundVisualEffectIntensity: 1, - backgroundOpacity: 0, - //backgroundVisualEffectOpacity: 0.5, - backgroundVisualEffectIntensity: 0.5 - ) - ), - - // Snap Point 4 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .stretch - ), - marginTop: .safeAreaInsets(insetKey: \.top) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 0, height: -1), - modalShadowOpacity: 0.4, - modalShadowRadius: 10, - modalCornerRadius: 25, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner, - ], - modalBackgroundOpacity: 0.83, - modalBackgroundVisualEffectIntensity: 1, - backgroundVisualEffectIntensity: 1 - ) - ), - ], - snapDirection: .bottomToTop, - interpolationClampingConfig: .init( - shouldClampModalLastHeight: true, - shouldClampModalLastWidth: true, - shouldClampModalLastX: true - ), - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreen - ) - ); - - case .demo02: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.2) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 0, height: -2), - modalShadowOpacity: 0.3, - modalShadowRadius: 7, - modalCornerRadius: 10, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ], - backgroundOpacity: 0, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0 - ) - ), - - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.8) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 1, height: 1), - modalShadowOpacity: 0.4, - modalShadowRadius: 7, - modalCornerRadius: 15, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ], - backgroundOpacity: 0.1 - ) - ), - // snap point - 3 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.9) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.7) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.3, - modalShadowRadius: 8, - backgroundOpacity: 0.3, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0.3 - ) - ), - ], - snapDirection: .bottomToTop, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreenVertically - ) - ); - - case .demo03: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.65) - ), - marginLeft: .constant(15) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalScaleX: 1, - modalScaleY: 1, - modalShadowOffset: .init(width: 1, height: 1), - modalShadowOpacity: 0.3, - modalShadowRadius: 8, - modalCornerRadius: 10, - modalBackgroundOpacity: 0.87, - modalBackgroundVisualEffect: UIBlurEffect(style: .regular), - modalBackgroundVisualEffectIntensity: 1, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0.04 - ) - ), - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.85) - ), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.2, - modalShadowRadius: 15, - modalCornerRadius: 15, - modalBackgroundOpacity: 0.9, - modalBackgroundVisualEffectIntensity: 0.5, - backgroundVisualEffectIntensity: 0.5 - ) - ), - ], - snapDirection: .leftToRight, - undershootSnapPoint: .init( - layoutPreset: .offscreenLeft, - animationKeyframe: .init( - modalScaleX: 0.5, - modalScaleY: 0.5, - modalCornerRadius: 5, - backgroundVisualEffectIntensity: 0 - ) - ), - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .offscreenRight - ) - ); - - case .demo04: return AdaptiveModalConfig( - snapPoints: [ - // 1 - .init( - snapPoint: .init( - horizontalAlignment: .center, - verticalAlignment: .top, - width: .stretch, - height: .percent(percentValue: 0.2), - marginLeft: .constant(10), - marginRight: .constant(10), - marginTop: .multipleValues([ - .safeAreaInsets(insetKey: \.top), - .constant(10) - ]) - ), - animationKeyframe: .init( - modalScaleX: 1, - modalScaleY: 1, - modalShadowOpacity: 0.3, - modalShadowRadius: 10, - modalCornerRadius: 10 - ) - ), - - // 2 - .init( - snapPoint: .init( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .stretch, - height: .percent(percentValue: 0.5), - marginLeft: .constant(15), - marginRight: .constant(15) - ), - animationKeyframe: .init( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.2, - modalShadowRadius: 5, - modalCornerRadius: 15, - backgroundOpacity: 0.25 - ) - ) - ], - snapDirection: .topToBottom, - undershootSnapPoint: .init( - layoutPreset: .offscreenTop, - animationKeyframe: .init( - modalScaleX: 0.75, - modalScaleY: 0.75 - ) - ), - overshootSnapPoint: .init( - layoutPreset: .offscreenBottom, - animationKeyframe: .init( - modalScaleX: 0.9, - modalScaleY: 0.9, - modalOpacity: 0.8, - backgroundOpacity: 0 - ) - ) - ); - - case .demo05: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.7), - height: .stretch - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 1, height: 0), - modalShadowOpacity: 0.3, - modalShadowRadius: 8, - modalBackgroundOpacity: 0.87, - modalBackgroundVisualEffect: UIBlurEffect(style: .regular), - modalBackgroundVisualEffectIntensity: 1, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0.04 - ) - ), - - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .stretch, - height: .stretch( - offsetValue: .multipleValues([ - .safeAreaInsets(insetKey: \.top), - .safeAreaInsets(insetKey: \.bottom), - .constant(40), - ]), - offsetOperation: .subtract - ), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.2, - modalShadowRadius: 15, - modalCornerRadius: 15, - modalBackgroundOpacity: 0.9, - modalBackgroundVisualEffectIntensity: 0.5, - backgroundVisualEffectIntensity: 0.5 - ) - ), - ], - snapDirection: .leftToRight, - undershootSnapPoint: .init( - layoutPreset: .offscreenLeft, - animationKeyframe: .init( - backgroundVisualEffectIntensity: 0 - ) - ), - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .edgeRight - ) - ); - - case .demo06: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .percent(percentValue: 0.8), - height: .percent(percentValue: 0.2), - marginBottom: .init( - mode: .safeAreaInsets(insetKey: \.bottom), - minValue: .constant(15) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 0, height: -2), - modalShadowOpacity: 0.3, - modalShadowRadius: 7, - modalCornerRadius: 10, - backgroundOpacity: 0, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0 - ) - ), - - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .percent(percentValue: 0.85), - height: .percent(percentValue: 0.5), - marginBottom: .init( - mode: .safeAreaInsets(insetKey: \.bottom), - minValue: .constant(15) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 1, height: 1), - modalShadowOpacity: 0.4, - modalShadowRadius: 7, - modalCornerRadius: 15, - backgroundOpacity: 0.1 - ) - ), - - // snap point - 3 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .percent(percentValue: 0.87), - height: .percent(percentValue: 0.7), - marginBottom: .init( - mode: .safeAreaInsets(insetKey: \.bottom), - minValue: .constant(15) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.3, - modalShadowRadius: 8, - backgroundOpacity: 0.3, - backgroundVisualEffectIntensity: 0.3 - ) - ), - ], - snapDirection: .bottomToTop, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .layoutConfig( - .init( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .percent(percentValue: 0.87), - height: .stretch, - marginTop: .init( - mode: .safeAreaInsets(insetKey: \.top), - minValue: .constant(15) - ), - marginBottom: .init( - mode: .safeAreaInsets(insetKey: \.bottom), - minValue: .constant(15) - ) - ) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 3, height: 3), - modalShadowOpacity: 0.35, - modalShadowRadius: 15 - ) - ) - ); - - case .demo07: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.7), - height: .percent(percentValue: 0.65), - marginLeft: .constant(15) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalScaleX: 1, - modalScaleY: 1, - modalShadowOffset: .init(width: 1, height: 1), - modalShadowOpacity: 0.3, - modalShadowRadius: 10, - modalCornerRadius: 15, - modalBackgroundOpacity: 0.85, - modalBackgroundVisualEffectIntensity: 0.9, - backgroundColor: .white, - backgroundOpacity: 0.15, - backgroundVisualEffectIntensity: 0.05 - ) - ), - - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .stretch, - height: .stretch - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .zero, - modalShadowOpacity: 0, - modalShadowRadius: 0, - modalBackgroundOpacity: 0, - modalBackgroundVisualEffectOpacity: 0, - modalBackgroundVisualEffectIntensity: 0, - backgroundColor: .white, - backgroundOpacity: 0.75, - backgroundVisualEffectIntensity: 1 - ) - ), - ], - snapDirection: .leftToRight, - undershootSnapPoint: .init( - layoutPreset: .offscreenLeft, - animationKeyframe: .init( - modalScaleX: 0.5, - modalScaleY: 0.5, - modalCornerRadius: 10, - modalBackgroundOpacity: 1, - modalBackgroundVisualEffect: UIBlurEffect(style: .regular), - modalBackgroundVisualEffectIntensity: 0, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0 - ) - ), - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .offscreenRight - ) - ); - - case .demo08: return AdaptiveModalConfig( - snapPoints: [ - // Snap Point 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.3) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 0, height: -2), - modalShadowOpacity: 0.2, - modalShadowRadius: 7, - modalCornerRadius: 0, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ], - modalBackgroundOpacity: 0.9, - modalBackgroundVisualEffect: UIBlurEffect(style: .systemUltraThinMaterial), - modalBackgroundVisualEffectIntensity: 1, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0 - ) - ), - - // Snap Point 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.75) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 0, height: -2), - modalShadowOpacity: 0.2, - modalShadowRadius: 7, - modalCornerRadius: 15, - modalMaskedCorners: [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ], - modalBackgroundOpacity: 0.85, - modalBackgroundVisualEffectIntensity: 0.25, - backgroundVisualEffectIntensity: 0.75 - ) - ) - ], - snapDirection: .bottomToTop, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreen - ) - ); - - case .demo09: return AdaptiveModalConfig( - snapPoints: [ - // Snap Point 1 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.3), - marginLeft: .multipleValues([ - .safeAreaInsets(insetKey: \.left), - .constant(15), - ]), - marginRight: .multipleValues([ - .safeAreaInsets(insetKey: \.right), - .constant(15) - ]), - marginBottom: .multipleValues([ - .safeAreaInsets(insetKey: \.bottom), - .keyboardRelativeSize(sizeKey: \.height), - .constant(15) - ]) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 0, height: -2), - modalShadowOpacity: 0.2, - modalShadowRadius: 7, - modalCornerRadius: 12, - modalMaskedCorners: .allCorners, - modalBackgroundOpacity: 0.9, - modalBackgroundVisualEffect: UIBlurEffect(style: .systemUltraThinMaterial), - modalBackgroundVisualEffectIntensity: 1, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0 - ) - ), - ], - snapDirection: .bottomToTop, - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .fitScreenVertically - ) - ); - - case .demo10: return AdaptiveModalConfig( - snapPoints: [ - // snap point - 1 - AdaptiveModalSnapPointConfig( - snapPoint: .init( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .percent(percentValue: 0.5) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalScaleX: 1, - modalScaleY: 1, - modalShadowOffset: .init(width: 1, height: 1), - modalShadowOpacity: 0.3, - modalShadowRadius: 8, - modalCornerRadius: 10, - modalMaskedCorners: .rightCorners, - modalBackgroundOpacity: 0.87, - modalBackgroundVisualEffect: UIBlurEffect(style: .regular), - modalBackgroundVisualEffectIntensity: 1, - backgroundVisualEffect: UIBlurEffect(style: .regular), - backgroundVisualEffectIntensity: 0.04 - ) - ), - // snap point - 2 - AdaptiveModalSnapPointConfig( - snapPoint: RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.85) - ), - marginRight: .constant(25) - ), - animationKeyframe: AdaptiveModalAnimationConfig( - modalShadowOffset: .init(width: 2, height: 2), - modalShadowOpacity: 0.2, - modalShadowRadius: 15, - modalCornerRadius: 15, - modalBackgroundOpacity: 0.9, - modalBackgroundVisualEffectIntensity: 0.5, - backgroundVisualEffectIntensity: 0.5 - ) - ), - ], - snapDirection: .leftToRight, - undershootSnapPoint: .init( - layoutPreset: .offscreenLeft, - animationKeyframe: .init( - modalScaleX: 0.5, - modalScaleY: 0.5, - modalCornerRadius: 5, - backgroundVisualEffectIntensity: 0 - ) - ), - overshootSnapPoint: AdaptiveModalSnapPointPreset( - layoutPreset: .edgeRight - ) - ); - }; - }; -}; - diff --git a/experiments/swift-programmatic-modal/Test/AdaptiveModalPresentationTestViewController.swift b/experiments/swift-programmatic-modal/Test/AdaptiveModalPresentationTestViewController.swift deleted file mode 100644 index 9019ad9b..00000000 --- a/experiments/swift-programmatic-modal/Test/AdaptiveModalPresentationTestViewController.swift +++ /dev/null @@ -1,352 +0,0 @@ -// -// AdaptiveModalPresentationTest.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/7/23. -// - -import UIKit - -fileprivate class TestModalViewController: UIViewController, AdaptiveModalEventNotifiable { - - weak var modalManager: AdaptiveModalManager?; - - var showDismissButton = true; - var showCustomSnapPointButton = false; - var showTextInputField = false; - - lazy var floatingViewLabel: UILabel = { - let label = UILabel(); - - label.text = "\(self.modalManager?.currentInterpolationIndex ?? -1)"; - label.textColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.5); - label.font = .boldSystemFont(ofSize: 22); - - return label; - }(); - - override func viewDidLoad() { - self.view.backgroundColor = .white; - - let dismissButton: UIButton = { - let button = UIButton(); - - button.setTitle("Dismiss Modal", for: .normal); - button.configuration = .filled(); - - button.addTarget( - self, - action: #selector(self.onPressButtonDismiss(_:)), - for: .touchUpInside - ); - - return button; - }(); - - let customSnapPointButton: UIButton = { - let button = UIButton(); - - button.setTitle("Custom Snap Point", for: .normal); - button.configuration = .filled(); - - button.addTarget( - self, - action: #selector(self.onPressButtonCustomSnapPoint(_:)), - for: .touchUpInside - ); - - return button; - }(); - - let textInputField: UITextField = { - let textField = UITextField(); - - textField.placeholder = "Enter text here"; - textField.font = UIFont.systemFont(ofSize: 15); - textField.borderStyle = UITextField.BorderStyle.roundedRect; - textField.autocorrectionType = UITextAutocorrectionType.no; - textField.keyboardType = UIKeyboardType.default; - textField.returnKeyType = UIReturnKeyType.done; - textField.clearButtonMode = UITextField.ViewMode.whileEditing; - textField.contentVerticalAlignment = UIControl.ContentVerticalAlignment.center; - - return textField; - }(); - - let stackView: UIStackView = { - let stack = UIStackView(); - - stack.axis = .vertical; - stack.distribution = .equalSpacing; - stack.alignment = .center; - stack.spacing = 10; - - stack.addArrangedSubview(self.floatingViewLabel); - - if self.showTextInputField { - stack.addArrangedSubview(textInputField); - }; - - if self.showDismissButton { - stack.addArrangedSubview(dismissButton); - }; - - if self.showCustomSnapPointButton { - stack.addArrangedSubview(customSnapPointButton); - }; - - return stack; - }(); - - stackView.translatesAutoresizingMaskIntoConstraints = false; - self.view.addSubview(stackView); - - NSLayoutConstraint.activate([ - stackView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), - stackView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor), - ]); - }; - - @objc func onPressButtonDismiss(_ sender: UIButton){ - self.dismiss(animated: true); - }; - - @objc func onPressButtonCustomSnapPoint(_ sender: UIButton){ - let snapPoint = AdaptiveModalSnapPointConfig( - key: .string("custom"), - snapPoint: .init( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .stretch, - height: .stretch, - marginLeft: .constant(15), - marginRight: .constant(15), - marginTop: .multipleValues([ - .safeAreaInsets(insetKey: \.top), - .constant(15), - ]), - marginBottom: .multipleValues([ - .safeAreaInsets(insetKey: \.bottom), - .keyboardRelativeSize(sizeKey: \.height), - .constant(15), - ]) - ), - animationKeyframe: .init( - modalCornerRadius: 15, - modalMaskedCorners: [ - .layerMaxXMaxYCorner, - .layerMaxXMinYCorner, - .layerMinXMaxYCorner, - .layerMinXMinYCorner, - ], - modalBackgroundOpacity: 0.9, - backgroundOpacity: 0 - ) - ); - - //self.dismiss(animated: true); - self.modalManager?.snapTo( - snapPointConfig: snapPoint - ); - }; - - func notifyOnModalWillSnap( - prevSnapPointIndex: Int?, - nextSnapPointIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint - ) { - self.floatingViewLabel.text = "\(nextSnapPointIndex)"; - }; - - func notifyOnModalDidSnap( - prevSnapPointIndex: Int?, - currentSnapPointIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint - ) { - self.floatingViewLabel.text = "\(currentSnapPointIndex)"; - }; -}; - -class AdaptiveModalPresentationTestViewController : UIViewController { - - lazy var adaptiveModalManager = AdaptiveModalManager( - modalConfig: self.currentModalConfigPreset.config - ); - - let modalConfigs: [AdaptiveModalConfigTestPresets] = [ - .demo01, - .demo02, - .demo03, - .demo04, - .demo05, - .demo06, - .demo07, - .demo08, - .demo09, - .demo10, - ]; - - var currentModalConfigPresetCounter = 0; - - var currentModalConfigPresetIndex: Int { - self.currentModalConfigPresetCounter % self.modalConfigs.count - }; - - var currentModalConfigPreset: AdaptiveModalConfigTestPresets { - self.modalConfigs[self.currentModalConfigPresetIndex]; - //AdaptiveModalConfigTestPresets.default; - }; - - var currentModalManagerAdjustmentBlock: () -> Void { - let defaultBlock = { - self.adaptiveModalManager.enableOverShooting = true; - - self.adaptiveModalManager.shouldSnapToUnderShootSnapPoint = true; - self.adaptiveModalManager.shouldSnapToOvershootSnapPoint = false; - - self.adaptiveModalManager.shouldDismissModalOnSnapToUnderShootSnapPoint = true; - self.adaptiveModalManager.shouldDismissModalOnSnapToOverShootSnapPoint = false; - }; - - switch self.currentModalConfigPreset { - case .demo04: return { - self.adaptiveModalManager.shouldSnapToOvershootSnapPoint = true; - self.adaptiveModalManager.shouldDismissModalOnSnapToOverShootSnapPoint = true; - }; - - case .demo07: return { - self.adaptiveModalManager.enableOverShooting = false; - }; - - default: return defaultBlock; - }; - }; - - var counterLabel: UILabel?; - - override func viewDidLoad() { - self.view.backgroundColor = .white; - - let dummyBackgroundView: UIView = { - let imageView = UIImageView( - image: UIImage(named: "DummyBackgroundImage2") - ); - - imageView.contentMode = .scaleAspectFill; - return imageView; - }(); - - self.view.addSubview(dummyBackgroundView); - dummyBackgroundView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - dummyBackgroundView.topAnchor .constraint(equalTo: self.view.topAnchor ), - dummyBackgroundView.bottomAnchor .constraint(equalTo: self.view.bottomAnchor ), - dummyBackgroundView.leadingAnchor .constraint(equalTo: self.view.leadingAnchor ), - dummyBackgroundView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), - ]); - - let counterLabel: UILabel = { - let label = UILabel(); - - label.text = "\(self.currentModalConfigPresetIndex)"; - label.font = .systemFont(ofSize: 24, weight: .bold); - label.textColor = .white; - - self.counterLabel = label; - - return label; - }(); - - let presentButton: UIButton = { - let button = UIButton(); - button.setTitle("Present View Controller", for: .normal); - - button.addTarget( - self, - action: #selector(self.onPressButtonPresentViewController(_:)), - for: .touchUpInside - ); - - return button; - }(); - - let nextConfigButton: UIButton = { - let button = UIButton(); - button.setTitle("Next Modal Config", for: .normal); - - button.addTarget( - self, - action: #selector(self.onPressButtonNextConfig(_:)), - for: .touchUpInside - ); - - return button; - }(); - - - let stackView: UIStackView = { - let stack = UIStackView(); - - stack.axis = .vertical; - stack.distribution = .equalSpacing; - stack.alignment = .center; - stack.spacing = 7; - - stack.addArrangedSubview(counterLabel); - stack.addArrangedSubview(presentButton); - stack.addArrangedSubview(nextConfigButton); - - return stack; - }(); - - stackView.translatesAutoresizingMaskIntoConstraints = false; - self.view.addSubview(stackView); - - NSLayoutConstraint.activate([ - stackView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), - stackView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor), - ]); - }; - - override func viewDidLayoutSubviews() { - - }; - - @objc func onPressButtonPresentViewController(_ sender: UIButton) { - let testVC = TestModalViewController(); - - switch self.currentModalConfigPreset { - case .demo07, .demo08: - testVC.showCustomSnapPointButton = true; - - case .demo09: - testVC.showCustomSnapPointButton = true; - testVC.showTextInputField = true; - - case .demo10: - testVC.showCustomSnapPointButton = true; - - default: break; - }; - - self.adaptiveModalManager.eventDelegate = testVC; - testVC.modalManager = self.adaptiveModalManager; - - - self.adaptiveModalManager.presentModal( - viewControllerToPresent: testVC, - presentingViewController: self - ); - }; - - @objc func onPressButtonNextConfig(_ sender: UIButton) { - self.currentModalConfigPresetCounter += 1; - self.counterLabel!.text = "\(self.currentModalConfigPresetIndex)"; - - self.adaptiveModalManager.modalConfig = self.currentModalConfigPreset.config; - self.currentModalManagerAdjustmentBlock(); - }; -}; diff --git a/experiments/swift-programmatic-modal/Test/BlurEffectTestViewController.swift b/experiments/swift-programmatic-modal/Test/BlurEffectTestViewController.swift deleted file mode 100644 index fbaa29ce..00000000 --- a/experiments/swift-programmatic-modal/Test/BlurEffectTestViewController.swift +++ /dev/null @@ -1,188 +0,0 @@ -// -// BlurEffectTestViewController.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/22/23. -// - -import UIKit - - -class BlurEffectView: UIVisualEffectView { - - var animator = UIViewPropertyAnimator(duration: 1, curve: .linear); - - func setBlur(intensity: CGFloat){ - self.animator.fractionComplete = intensity; - }; - - override func didMoveToSuperview() { - guard let superview = superview else { return } - backgroundColor = .clear - frame = superview.bounds //Or setup constraints instead - setupBlur() - } - - private func setupBlur() { - animator.stopAnimation(true) - effect = nil - - animator.addAnimations { [weak self] in - self?.effect = UIBlurEffect(style: .dark) - } - animator.fractionComplete = 0.1; //This is your blur intensity in range 0 - 1 - } - - deinit { - animator.stopAnimation(true) - } -} - - -class BlurEffectIntensityManager { - - var animator: UIViewPropertyAnimator?; - var onDisplayLinkUpdateBlock: (() -> Void)? = nil; - - func setBlur( - forBlurEffectView blurEffectView: UIVisualEffectView, - intensity: CGFloat = 1, - blurEffectStyle: UIBlurEffect.Style = .systemMaterial, - duration: CGFloat = 0, - curve: UIView.AnimationCurve = .easeIn - ) { - let animator = UIViewPropertyAnimator(duration: duration, curve: curve); - self.animator = animator; - - blurEffectView.effect = nil; - - animator.addAnimations { - blurEffectView.effect = UIBlurEffect(style: blurEffectStyle); - // blurEffectView.alpha = intensity; - }; - - if duration == 0 { - animator.fractionComplete = intensity; - animator.stopAnimation(true); - self.animator = nil; - - } else { - animator.startAnimation(); - return; - - let displayLink = CADisplayLink( - target: self, - selector: #selector(self.onDisplayLinkUpdate) - ); - - displayLink.add(to: .current, forMode: .common) - - self.onDisplayLinkUpdateBlock = { - guard animator.fractionComplete >= intensity else { return }; - animator.stopAnimation(true); - - self.animator = nil; - self.onDisplayLinkUpdateBlock = nil; - }; - }; - }; - - @objc func onDisplayLinkUpdate() { - return; - self.onDisplayLinkUpdateBlock?(); - }; -}; - - -class BlurEffectTestViewController: UIViewController { - - lazy var blurEffectView = BlurEffectView(); - - let blurManager = BlurEffectIntensityManager(); - var isBlurred = false; - - var boxView: UIView { - let view = UIView(); - - view.backgroundColor = UIColor( - hue: CGFloat(Int.random(in: 0...360)) / 360, - saturation: 50 / 100, - brightness: 100 / 100, - alpha: 1.0 - ); - - view.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - view.heightAnchor.constraint(equalToConstant: 100), - view.widthAnchor.constraint(equalToConstant: 100), - ]); - - - return view; - }; - - override func loadView() { - let view = UIView(); - view.backgroundColor = .white; - - self.view = view; - - let blurEffectView = self.blurEffectView; - blurEffectView.effect = UIBlurEffect(style: .prominent); - - blurEffectView.addGestureRecognizer( - UITapGestureRecognizer( - target: self, - action: #selector(self.onPressBlurView(_:)) - ) - ); - - let stackView = UIStackView(arrangedSubviews: [ - self.boxView, - self.boxView, - self.boxView, - self.boxView - ]); - - stackView.alignment = .center; - - view.addSubview(stackView); - stackView.translatesAutoresizingMaskIntoConstraints = false; - - view.addSubview(blurEffectView); - blurEffectView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: view.topAnchor), - stackView.leftAnchor.constraint(equalTo: view.leftAnchor), - stackView.rightAnchor.constraint(equalTo: view.rightAnchor), - stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - - blurEffectView.widthAnchor.constraint(equalTo: view.widthAnchor), - blurEffectView.heightAnchor.constraint(equalTo: view.heightAnchor), - blurEffectView.centerYAnchor.constraint(equalTo: view.centerYAnchor), - blurEffectView.centerXAnchor.constraint(equalTo: view.centerXAnchor), - ]) - }; - - override func viewDidLoad() { - return; - self.blurManager.setBlur( - forBlurEffectView: self.blurEffectView, - intensity: 1 - ); - }; - - @objc func onPressBlurView(_ sender: UITapGestureRecognizer){ - - if isBlurred { - self.blurEffectView.setBlur(intensity: 0); - - } else { - self.blurEffectView.setBlur(intensity: 1); - }; - - self.isBlurred.toggle(); - }; -}; diff --git a/experiments/swift-programmatic-modal/Test/RNIDraggableTestViewController.swift b/experiments/swift-programmatic-modal/Test/RNIDraggableTestViewController.swift deleted file mode 100644 index 5eca8488..00000000 --- a/experiments/swift-programmatic-modal/Test/RNIDraggableTestViewController.swift +++ /dev/null @@ -1,144 +0,0 @@ -// -// RNIDraggableTestViewController.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/22/23. -// - - -import UIKit - - -class RNIDraggableTestViewController : UIViewController { - - lazy var modalManager: AdaptiveModalManager = { - let manager = AdaptiveModalManager( - modalConfig: AdaptiveModalConfigTestPresets.default.config - ); - - manager.eventDelegate = self; - return manager; - }(); - - private var initialGesturePoint: CGPoint = .zero; - private var floatingViewInitialCenter: CGPoint = .zero - - lazy var floatingViewLabel: UILabel = { - let label = UILabel(); - - label.text = "\(self.modalManager.currentSnapPointIndex)"; - label.textColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.5); - label.font = .boldSystemFont(ofSize: 22); - - return label; - }(); - - lazy var floatingView: UIView = { - let view = UIView(); - - // view.backgroundColor = UIColor( - // hue: 0/360, - // saturation: 0/100, - // brightness: 100/100, - // alpha: 0 - // ); - - // view.addGestureRecognizer( - // UIPanGestureRecognizer( - // target: self, - // action: #selector(self.onDragPanGestureView(_:)) - // ) - // ); - - let floatingViewLabel = self.floatingViewLabel; - view.addSubview(floatingViewLabel); - - floatingViewLabel.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - floatingViewLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), - floatingViewLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor), - ]); - - return view; - }(); - - override func viewDidLoad() { - self.view.backgroundColor = .white; - - let dummyBackgroundView: UIView = { - let imageView = UIImageView( - image: UIImage(named: "DummyBackgroundImage3") - ); - - imageView.contentMode = .scaleAspectFill; - return imageView; - }(); - - self.view.addSubview(dummyBackgroundView); - dummyBackgroundView.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - dummyBackgroundView.topAnchor .constraint(equalTo: self.view.topAnchor ), - dummyBackgroundView.bottomAnchor .constraint(equalTo: self.view.bottomAnchor ), - dummyBackgroundView.leadingAnchor .constraint(equalTo: self.view.leadingAnchor ), - dummyBackgroundView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), - ]); - - let presentButton: UIButton = { - let button = UIButton(); - - button.setTitle("Show Modal", for: .normal); - button.configuration = .filled(); - - button.addTarget( - self, - action: #selector(self.onPressButtonPresentViewController(_:)), - for: .touchUpInside - ); - - return button; - }(); - - self.view.addSubview(presentButton); - presentButton.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - presentButton.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), - presentButton.centerYAnchor.constraint(equalTo: self.view.centerYAnchor) - ]); - }; - - override func viewDidLayoutSubviews() { - self.modalManager.notifyDidLayoutSubviews(); - }; - - @objc func onPressButtonPresentViewController(_ sender: UIButton){ - self.modalManager.prepareForPresentation( - modalView: self.floatingView, - targetView: self.view - ); - - self.modalManager.showModal(); - }; -}; - -extension RNIDraggableTestViewController: AdaptiveModalEventNotifiable { - func notifyOnModalWillSnap( - prevSnapPointIndex: Int?, - nextSnapPointIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint - ) { - self.floatingViewLabel.text = "\(nextSnapPointIndex)"; - } - - func notifyOnModalDidSnap( - prevSnapPointIndex: Int?, - currentSnapPointIndex: Int, - snapPointConfig: AdaptiveModalSnapPointConfig, - interpolationPoint: AdaptiveModalInterpolationPoint - ) { - self.floatingViewLabel.text = "\(currentSnapPointIndex)"; - }; -}; diff --git a/experiments/swift-programmatic-modal/Test/RNILayoutTestViewController.swift b/experiments/swift-programmatic-modal/Test/RNILayoutTestViewController.swift deleted file mode 100644 index 2bd84af4..00000000 --- a/experiments/swift-programmatic-modal/Test/RNILayoutTestViewController.swift +++ /dev/null @@ -1,923 +0,0 @@ -// -// RNILayoutTestViewController.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/19/23. -// - -import UIKit - -enum ScreenSize { - - case iPhone8; - - var size: CGSize { - switch self { - case .iPhone8: - return CGSize(width: 375, height: 667); - }; - }; -}; - -let oldLayoutConfigs: [RNILayout] = [ - // 0 A - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .constant(100) - ), - height: RNILayoutValue( - mode: .constant(100) - ), - marginLeft: .safeAreaInsets(insetKey: \.left), - marginTop: .safeAreaInsets(insetKey: \.top) - ), - // 1 B - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .constant(100) - ), - height: RNILayoutValue( - mode: .constant(100) - ), - marginRight: .safeAreaInsets(insetKey: \.right), - marginTop: .safeAreaInsets(insetKey: \.top) - ), - // 2 C - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .constant(100) - ), - height: RNILayoutValue( - mode: .constant(100) - ) - ), - // 3 D - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .constant(100) - ), - height: RNILayoutValue( - mode: .constant(100) - ) - ), - // 4 E - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .stretch - ) - ), - // 5 F - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .stretch - ) - ), - // 6 G - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ) - ), - // 7 H - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ) - ), - // 8 I - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.7), - maxValue: .constant(ScreenSize.iPhone8.size.width) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.7), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - // 9 J - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - // 10 K - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - // 11 L - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.6), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - // 12 M - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.6), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - // N - // O = 13 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - height: RNILayoutValue( - mode: .stretch, - maxValue: .constant(ScreenSize.iPhone8.size.height) - ), - marginLeft: .constant(20), - marginTop: .constant(20), - marginBottom: .constant(20) - ), - // P - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - height: RNILayoutValue( - mode: .stretch, - maxValue: .constant(ScreenSize.iPhone8.size.height) - ), - marginRight: .constant(20), - marginTop: .constant(20), - marginBottom: .constant(20) - ), - // Q = 15 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - marginLeft: .constant(20), - marginRight: .constant(20), - marginBottom: .constant(15) - ), - // R - 16 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - marginLeft: .constant(20), - marginRight: .constant(20), - marginTop: .constant(20) - ), - // S - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .constant(100) - ), - height: RNILayoutValue( - mode: .constant(100) - ), - marginLeft: .constant(20), - marginTop: .constant(20) - ), - // T - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .percent(percentValue: 0.35), - maxValue: .constant(ScreenSize.iPhone8.size.width * 0.6) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.25), - maxValue: .constant(ScreenSize.iPhone8.size.height * 0.5) - ), - marginRight: .constant(20), - marginTop: .constant(20) - ), - // U - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.4), - maxValue: .constant(ScreenSize.iPhone8.size.width * 0.7) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4), - maxValue: .constant(ScreenSize.iPhone8.size.height * 0.7) - ), - marginLeft: .constant(20), - marginBottom: .constant(20) - ), - // V - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .percent(percentValue: 0.4), - maxValue: .constant(ScreenSize.iPhone8.size.width * 0.7) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4), - maxValue: .constant(ScreenSize.iPhone8.size.height * 0.7) - ), - marginRight: .constant(20), - marginBottom: .constant(20) - ), - RNILayoutPreset.halfOffscreenTop.getLayoutConfig( - fromBaseLayoutConfig: RNILayout( - horizontalAlignment: .left, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .constant(100) - ), - height: RNILayoutValue( - mode: .constant(100) - ) - ) - ), - ]; - -let boxSizeSmall: CGFloat = 125; - - -class RNILayoutTestViewController : UIViewController { - - lazy var layoutConfigs: [RNILayout] = [ - - // MARK: Corners Test - // ------------------ - - // 0 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .top, - width: .constant(125), - height: .constant(125) - ), - - // 1 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: .constant(125), - height: .constant(125) - ), - - // 2 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .top, - width: .constant(125), - height: .constant(125) - ), - - // 3 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: .constant(125), - height: .constant(125) - ), - - // 4 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .bottom, - width: .constant(125), - height: .constant(125) - ), - - // 5 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .constant(125), - height: .constant(125) - ), - - // 6 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .bottom, - width: .constant(125), - height: .constant(125) - ), - - // 7 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .constant(125), - height: .constant(125) - ), - - // MARK: Corners + Safe Area Margin Test - // ------------------------------------- - - // 8 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .top, - width: .constant(125), - height: .constant(125), - marginLeft: .safeAreaInsets( - insetKey: \.left, - minValue: .constant(10) - ), - marginTop: .safeAreaInsets( - insetKey: \.top, - minValue: .constant(10) - ) - ), - - // 9 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: .constant(125), - height: .constant(125), - marginTop: .safeAreaInsets( - insetKey: \.top, - minValue: .constant(10) - ) - ), - - // 10 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .top, - width: .constant(125), - height: .constant(125), - marginRight: .safeAreaInsets( - insetKey: \.right, - minValue: .constant(10) - ), - marginTop: .safeAreaInsets( - insetKey: \.top, - minValue: .constant(10) - ) - ), - - // 11 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: .constant(125), - height: .constant(125), - marginRight: .safeAreaInsets( - insetKey: \.right, - minValue: .constant(10) - ) - ), - - // 12 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .bottom, - width: .constant(125), - height: .constant(125), - marginRight: .safeAreaInsets( - insetKey: \.right, - minValue: .constant(10) - ), - marginBottom: .safeAreaInsets( - insetKey: \.bottom, - minValue: .constant(10) - ) - ), - - // 13 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .constant(125), - height: .constant(125), - marginBottom: .safeAreaInsets( - insetKey: \.bottom, - minValue: .constant(10) - ) - ), - - // 14 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .bottom, - width: .constant(125), - height: .constant(125), - marginLeft: .safeAreaInsets( - insetKey: \.left, - minValue: .constant(10) - ), - marginBottom: .safeAreaInsets( - insetKey: \.bottom, - minValue: .constant(10) - ) - ), - - // 15 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .constant(125), - height: .constant(125), - marginLeft: .safeAreaInsets( - insetKey: \.left, - minValue: .constant(10) - ) - ), - - // MARK: Vertical Stretch Test - // --------------------------- - - // 16 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch, - marginLeft: .percent( - relativeTo: .currentWidth, - percentValue: -0.5 - ) - ), - - // 17 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch - ), - - // 18 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch - ), - - // 19 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch - ), - - // 20 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch, - marginRight: .percent( - relativeTo: .currentWidth, - percentValue: -0.5 - ) - ), - - // MARK: Vertical Stretch Test + Margin `multipleValues` - // ---------------------------------------------------- - - // 21 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch, - marginLeft: .multipleValues([ - .safeAreaInsets(insetKey: \.left), - .constant(15), - ]), - marginTop: .multipleValues([ - .safeAreaInsets(insetKey: \.top), - .constant(15), - ]), - marginBottom: .multipleValues([ - .safeAreaInsets(insetKey: \.bottom), - .constant(15), - ]) - ), - - // 22 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch, - marginTop: .multipleValues([ - .safeAreaInsets(insetKey: \.top), - .constant(15), - ]), - marginBottom: .multipleValues([ - .safeAreaInsets(insetKey: \.bottom), - .constant(15), - ]) - ), - - // 23 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: .percent(percentValue: 0.5), - height: .stretch, - marginRight: .multipleValues([ - .safeAreaInsets(insetKey: \.right), - .constant(15), - ]), - marginTop: .multipleValues([ - .safeAreaInsets(insetKey: \.top), - .constant(15), - ]), - marginBottom: .multipleValues([ - .safeAreaInsets(insetKey: \.bottom), - .constant(15), - ]) - ), - - // MARK: Horizontal Stretch Test - // ----------------------------- - - // 24 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.4), - marginBottom: .percent( - relativeTo: .currentHeight, - percentValue: -0.5 - ) - ), - - // 25 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: .stretch, - height: .percent(percentValue: 0.4) - ), - - // 26 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .stretch, - height: .percent(percentValue: 0.4) - ), - - // 27 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .top, - width: .stretch, - height: .percent(percentValue: 0.4) - ), - - // 28 - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .top, - width: .stretch, - height: .percent(percentValue: 0.4), - marginTop: .percent( - relativeTo: .currentHeight, - percentValue: -0.5 - ) - ), - - // MARK: Horizontal/Vertical Center Test - // ------------------------------------- - - // 29 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: .constant(150), - height: .constant(150), - marginBottom: .constant(100) - ), - - // MARK: Misc - // ---------- - - // 6 G - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ) - ), - // 7 H - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ) - ), - // 8 I - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.7), - maxValue: .constant(ScreenSize.iPhone8.size.width) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.7), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - // 9 J - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - // 10 K - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.3) - ), - marginLeft: .constant(20), - marginRight: .constant(20) - ), - // 11 L - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.6), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - // 12 M - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.5) - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.6), - maxValue: .constant(ScreenSize.iPhone8.size.height) - ) - ), - // N - // O = 13 - RNILayout( - horizontalAlignment: .left, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - height: RNILayoutValue( - mode: .stretch, - maxValue: .constant(ScreenSize.iPhone8.size.height) - ), - marginLeft: .constant(20), - marginTop: .constant(20), - marginBottom: .constant(20) - ), - // P - RNILayout( - horizontalAlignment: .right, - verticalAlignment: .center, - width: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - height: RNILayoutValue( - mode: .stretch, - maxValue: .constant(ScreenSize.iPhone8.size.height) - ), - marginRight: .constant(20), - marginTop: .constant(20), - marginBottom: .constant(20) - ), - // Q = 15 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .bottom, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - marginLeft: .constant(20), - marginRight: .constant(20), - marginBottom: .constant(15) - ), - // R - 16 - RNILayout( - horizontalAlignment: .center, - verticalAlignment: .top, - width: RNILayoutValue( - mode: .stretch - ), - height: RNILayoutValue( - mode: .percent(percentValue: 0.4) - ), - marginLeft: .constant(20), - marginRight: .constant(20), - marginTop: .constant(20) - ) - ]; - - var layoutConfigCount = 0; - - var layoutConfigIndex: Int { - self.layoutConfigCount % layoutConfigs.count; - }; - - var layoutConfig: RNILayout { - return self.layoutConfigs[self.layoutConfigIndex]; - }; - - var layoutValueContext: RNILayoutValueContext? { - .init(fromTargetViewController: self) - }; - - lazy var floatingViewLabel: UILabel = { - let label = UILabel(); - - label.text = "\(self.layoutConfigIndex)"; - label.textColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.5); - label.font = .boldSystemFont(ofSize: 22); - - return label; - }(); - - lazy var floatingView: UIView = { - let view = UIView(); - - view.backgroundColor = UIColor( - hue: 0/360, - saturation: 50/100, - brightness: 100/100, - alpha: 1.0 - ); - - view.addGestureRecognizer( - UITapGestureRecognizer( - target: self, - action: #selector(self.onPressFloatingView(_:)) - ) - ); - - let floatingViewLabel = self.floatingViewLabel; - view.addSubview(floatingViewLabel); - - floatingViewLabel.translatesAutoresizingMaskIntoConstraints = false; - - NSLayoutConstraint.activate([ - floatingViewLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), - floatingViewLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor), - ]); - - return view; - }(); - - override func viewDidLoad() { - self.view.backgroundColor = .white; - - let floatingView = self.floatingView; - self.view.addSubview(floatingView); - - self.view = view; - }; - - override func viewDidLayoutSubviews() { - self.updateFloatingView(); - // self.applyRadiusMaskFor(); - }; - - func updateFloatingView(){ - guard let layoutValueContext = self.layoutValueContext else { return }; - - let layoutConfig = self.layoutConfig; - - let computedRect = layoutConfig.computeRect( - usingLayoutValueContext: layoutValueContext - ); - - let floatingView = self.floatingView; - floatingView.frame = computedRect; - - self.floatingViewLabel.text = "\(self.layoutConfigIndex)"; - //self.applyRadiusMaskFor(); - }; - - @objc func onPressFloatingView(_ sender: UITapGestureRecognizer){ - self.layoutConfigCount += 1; - self.updateFloatingView(); - }; - - func applyRadiusMaskFor() { - let path = UIBezierPath( - shouldRoundRect : self.floatingView.bounds, - topLeftRadius : 20, - topRightRadius : 20, - bottomLeftRadius : 20, - bottomRightRadius: 20 - ); - - let shape = CAShapeLayer(); - shape.path = path.cgPath; - - self.floatingView.layer.mask = shape; - }; -}; diff --git a/experiments/swift-programmatic-modal/Test/RoundedViewTestViewController.swift b/experiments/swift-programmatic-modal/Test/RoundedViewTestViewController.swift deleted file mode 100644 index 5c5f3108..00000000 --- a/experiments/swift-programmatic-modal/Test/RoundedViewTestViewController.swift +++ /dev/null @@ -1,316 +0,0 @@ -// -// RoundedViewTestViewController.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 6/4/23. -// - -import UIKit - -class RoundedView: UIView { - override init(frame: CGRect) { - super.init(frame: frame); - - let bounds = CGRect( - origin: .zero, - size: frame.size - ); - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - }; - - override func layoutSubviews() { - super.layoutSubviews(); - }; -}; - -class CornerRadiusLayer: CAShapeLayer { - - override var bounds: CGRect { - didSet { - if !CGRectIsEmpty(bounds) { - self.path = UIBezierPath( - roundedRect: CGRectInset(bounds, 10, 10), - cornerRadius: 5 - ).cgPath; - }; - } - }; - - override func action(forKey event: String) -> CAAction? { - print( - "animation forKey:", - self.animation(forKey: event) - ); - - print( - "self.animationKeys(): ", - self.animationKeys() - ); - - print("event: \(event)") - - print(self); - - if event == "path" { - if let action = super.action(forKey: "path") as? CABasicAnimation { - let animation = CABasicAnimation(keyPath: event); - animation.fromValue = path; - - // Copy values from existing action - animation.autoreverses = action.autoreverses; - animation.beginTime = action.beginTime; - animation.delegate = action.delegate; - animation.duration = action.duration; - animation.fillMode = action.fillMode; - animation.repeatCount = action.repeatCount; - animation.repeatDuration = action.repeatDuration; - animation.speed = action.speed; - animation.timingFunction = action.timingFunction; - animation.timeOffset = action.timeOffset; - - return animation; - }; - }; - - return super.action(forKey: event); - }; -}; - -class RoundedViewTestViewController: UIViewController { - - lazy var roundedView: RoundedView = { - let view = RoundedView(frame: CGRect( - origin: .zero, - size: CGSize(width: 150, height: 150) - ) - ); - - view.backgroundColor = .red; - - return view; - }(); - -// func _viewDidLoad() { -// self.view.backgroundColor = .systemBackground; -// -// let roundedView = self.roundedView; -// roundedView.center = self.view.center; -// roundedView.frame = roundedView.frame.offsetBy(dx: 0, dy: -200) -// -// self.view.addSubview(roundedView); -// -// let prevFrame = roundedView.frame; -// let prevBounds = roundedView.bounds; -// -// var nextFrame = roundedView.frame.offsetBy(dx: 0, dy: 300); -// nextFrame.size = CGSize( -// width: nextFrame.width + 100, -// height: nextFrame.height + 100 -// ); -// -// let nextBounds = CGRect( -// origin: .zero, -// size: nextFrame.size -// ); -// -// let prevMask: CAShapeLayer = { -// let path = UIBezierPath( -// shouldRoundRect: prevBounds, -// topLeftRadius: 10, -// topRightRadius: 10, -// bottomLeftRadius: 10, -// bottomRightRadius: 10 -// ); -// -// let shape = CAShapeLayer(); -// shape.path = path.cgPath; -// -// return shape; -// }(); -// -// let nextMask: CAShapeLayer = { -// let path = UIBezierPath( -// shouldRoundRect: nextBounds, -// topLeftRadius: 30, -// topRightRadius: 30, -// bottomLeftRadius: 30, -// bottomRightRadius: 30 -// ); -// -// let shape = CAShapeLayer(); -// shape.path = path.cgPath; -// -// return shape; -// }(); -// -// let viewAnimator = UIViewPropertyAnimator( -// duration: 4, -// curve: .easeInOut -// ); -// -// roundedView.translatesAutoresizingMaskIntoConstraints = false; -// -// viewAnimator.addAnimations { -// UIView.addKeyframe( -// withRelativeStartTime: 0, -// relativeDuration: 0 -// ) { -// roundedView.frame = prevFrame; -// //roundedView.layer.frame = prevFrame; -// //roundedView.layer.mask = prevMask; -// }; -// -// UIView.addKeyframe( -// withRelativeStartTime: 1, -// relativeDuration: 0 -// ) { -// roundedView.frame = nextFrame; -// //roundedView.layer.frame = nextFrame; -// //roundedView.layer.mask = nextMask; -// }; -// }; -// -// -// // define your new path to animate the mask layer to -// //let path = UIBezierPath(roundedRect: CGRectInset(view.bounds, 100, 100), cornerRadius: 20.0) -// //path.appendPath(UIBezierPath(rect: view.bounds)) -// -// // create new animation -// let pathAnimator = CABasicAnimation(keyPath: "path"); -// -// let shapeMask = CAShapeLayer(); -// -// let prevPath = UIBezierPath( -// shouldRoundRect: prevBounds, -// topLeftRadius: 10, -// topRightRadius: 10, -// bottomLeftRadius: 10, -// bottomRightRadius: 10 -// ); -// -// // from value is the current mask path -// pathAnimator.fromValue = prevPath.cgPath; -// -// let nextPath = UIBezierPath( -// shouldRoundRect: nextBounds, -// topLeftRadius: 25, -// topRightRadius: 25, -// bottomLeftRadius: 25, -// bottomRightRadius: 25 -// ); -// -// // to value is the new path -// pathAnimator.toValue = nextPath.cgPath; -// -// // duration of your animation -// pathAnimator.duration = viewAnimator.duration; -// -// // custom timing function to make it look smooth -// pathAnimator.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut); -// -// pathAnimator.isRemovedOnCompletion = false; -// pathAnimator.fillMode = .both; -// -// // add animation -// shapeMask.add(pathAnimator, forKey: nil); -// -// // update the path property on the mask layer, using a CATransaction to prevent an implicit animation -// CATransaction.begin(); -// -// roundedView.layer.mask = shapeMask; -// CATransaction.commit(); -// -// -// -// -// -// viewAnimator.startAnimation(); -// }; - - override func viewDidLoad() { - self.view.backgroundColor = .systemBackground; - - let roundedView = self.roundedView; - roundedView.center = self.view.center; - roundedView.frame = roundedView.frame.offsetBy(dx: 0, dy: -200) - - self.view.addSubview(roundedView); - - let prevFrame = roundedView.frame; - let prevBounds = roundedView.bounds; - - var nextFrame = roundedView.frame.offsetBy(dx: 0, dy: 300); - nextFrame.size = CGSize( - width: nextFrame.width + 100, - height: nextFrame.height + 100 - ); - - let nextBounds = CGRect( - origin: .zero, - size: nextFrame.size - ); - - let prevMask: CAShapeLayer = { - let path = UIBezierPath( - shouldRoundRect: prevBounds, - topLeftRadius: 10, - topRightRadius: 10, - bottomLeftRadius: 10, - bottomRightRadius: 10 - ); - - let shape = CornerRadiusLayer(); - shape.path = path.cgPath; - - return shape; - }(); - - let nextMask: CAShapeLayer = { - let path = UIBezierPath( - shouldRoundRect: nextBounds, - topLeftRadius: 30, - topRightRadius: 30, - bottomLeftRadius: 30, - bottomRightRadius: 30 - ); - - let shape = CornerRadiusLayer(); - shape.path = path.cgPath; - - return shape; - }(); - - let viewAnimator = UIViewPropertyAnimator( - duration: 4, - curve: .easeInOut - ); - - roundedView.translatesAutoresizingMaskIntoConstraints = false; - - viewAnimator.addAnimations { - UIView.addKeyframe( - withRelativeStartTime: 0, - relativeDuration: 0 - ) { - roundedView.frame = prevFrame; - roundedView.layer.frame = prevFrame; - roundedView.layer.mask = prevMask; - }; - - UIView.addKeyframe( - withRelativeStartTime: 1, - relativeDuration: 0 - ) { - roundedView.frame = nextFrame; - roundedView.layer.frame = nextFrame; - roundedView.layer.mask = nextMask; - }; - }; - - viewAnimator.startAnimation(); - }; -}; - diff --git a/experiments/swift-programmatic-modal/Test/TestRoutes.swift b/experiments/swift-programmatic-modal/Test/TestRoutes.swift deleted file mode 100644 index f6ae2d41..00000000 --- a/experiments/swift-programmatic-modal/Test/TestRoutes.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// TestRoutes.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/22/23. -// - -import UIKit - -enum TestRoutes { - static let rootRouteKey: Self = .AdaptiveModalPresentationTest; - - case RNILayoutTest; - case RNIDraggableTest; - case BlurEffectTest; - case RoundedViewTest; - case AdaptiveModalPresentationTest; - - var viewController: UIViewController { - switch self { - case .RNILayoutTest: - return RNILayoutTestViewController(); - - case .RNIDraggableTest: - return RNIDraggableTestViewController(); - - case .BlurEffectTest: - return BlurEffectTestViewController(); - - case .RoundedViewTest: - return RoundedViewTestViewController(); - - case .AdaptiveModalPresentationTest: - return AdaptiveModalPresentationTestViewController(); - }; - }; -}; diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal.xcodeproj/project.pbxproj b/experiments/swift-programmatic-modal/swift-programmatic-modal.xcodeproj/project.pbxproj deleted file mode 100644 index 670b2a98..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal.xcodeproj/project.pbxproj +++ /dev/null @@ -1,956 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 880492582A23F89000D74E9F /* AdaptiveModalInterpolationPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880492572A23F89000D74E9F /* AdaptiveModalInterpolationPoint.swift */; }; - 88075E272A2121FE00B78388 /* AdaptiveModalUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88075E262A2121FE00B78388 /* AdaptiveModalUtilities.swift */; }; - 88203DC12A122AC20088C8E2 /* RNIDynamicModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88203DC02A122AC20088C8E2 /* RNIDynamicModal.swift */; }; - 8849B6A72A3F7A7700A5F412 /* RNILayoutValue+StaticAlias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8849B6A62A3F7A7700A5F412 /* RNILayoutValue+StaticAlias.swift */; }; - 884A18F82A30516B0044AA66 /* AdaptiveModalPresentationTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884A18F72A30516B0044AA66 /* AdaptiveModalPresentationTestViewController.swift */; }; - 884A18FA2A3146CA0044AA66 /* AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884A18F92A3146CA0044AA66 /* AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift */; }; - 884A18FC2A3146FC0044AA66 /* AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884A18FB2A3146FC0044AA66 /* AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift */; }; - 884A18FE2A31472E0044AA66 /* AdaptiveModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884A18FD2A31472E0044AA66 /* AdaptiveModalPresentationController.swift */; }; - 886AFCAB2A31FF40004AC9FB /* RNILayoutValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 886AFCAA2A31FF40004AC9FB /* RNILayoutValue.swift */; }; - 886AFCAD2A3209D5004AC9FB /* RNILayoutValueMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 886AFCAC2A3209D5004AC9FB /* RNILayoutValueMode.swift */; }; - 886AFCAF2A320DED004AC9FB /* RNILayoutValuePercentTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 886AFCAE2A320DED004AC9FB /* RNILayoutValuePercentTarget.swift */; }; - 886AFCB12A325B6F004AC9FB /* RNILayoutValueContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 886AFCB02A325B6F004AC9FB /* RNILayoutValueContext.swift */; }; - 887AA0572A4253050089F517 /* RNILayoutKeyboardValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887AA0562A4253050089F517 /* RNILayoutKeyboardValues.swift */; }; - 887C3BE22A42F9E00026B57C /* CACornerMask+StaticAlias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887C3BE12A42F9E00026B57C /* CACornerMask+StaticAlias.swift */; }; - 887C3BE42A43C4FF0026B57C /* RNILayoutMargins.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887C3BE32A43C4FF0026B57C /* RNILayoutMargins.swift */; }; - 887C3BE62A43C5460026B57C /* RNILayoutMarginRects.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887C3BE52A43C5460026B57C /* RNILayoutMarginRects.swift */; }; - 88A2EF742A3A98F6006B5235 /* AdaptiveModalConfigTestPresets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A2EF732A3A98F6006B5235 /* AdaptiveModalConfigTestPresets.swift */; }; - 88B7D0EF29C593F400490628 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B7D0EE29C593F400490628 /* AppDelegate.swift */; }; - 88B7D0F129C593F400490628 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B7D0F029C593F400490628 /* SceneDelegate.swift */; }; - 88B7D0F829C593F600490628 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 88B7D0F729C593F600490628 /* Assets.xcassets */; }; - 88B7D0FB29C593F600490628 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 88B7D0F929C593F600490628 /* LaunchScreen.storyboard */; }; - 88C2F45C2A275B2800DA7450 /* AdaptiveModalSnapPointPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C2F45B2A275B2800DA7450 /* AdaptiveModalSnapPointPreset.swift */; }; - 88C2F45E2A278A9200DA7450 /* AdaptiveModalRangePropertyAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C2F45D2A278A9200DA7450 /* AdaptiveModalRangePropertyAnimator.swift */; }; - 88C2F4602A2CA8CF00DA7450 /* RoundedViewTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C2F45F2A2CA8CF00DA7450 /* RoundedViewTestViewController.swift */; }; - 88C2F4622A2CD81F00DA7450 /* AdaptiveModalEventNotifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C2F4612A2CD81F00DA7450 /* AdaptiveModalEventNotifiable.swift */; }; - 88C2F4642A2D8D3400DA7450 /* AdaptiveModalKeyframePropertyAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C2F4632A2D8D3400DA7450 /* AdaptiveModalKeyframePropertyAnimator.swift */; }; - 88D016602A14C86B004664D2 /* RootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0165F2A14C86B004664D2 /* RootViewController.swift */; }; - 88D0168D2A1730B1004664D2 /* RNILayoutTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0168C2A1730B1004664D2 /* RNILayoutTestViewController.swift */; }; - 88D0169E2A1B0DD3004664D2 /* RNIDraggableTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0169D2A1B0DD3004664D2 /* RNIDraggableTestViewController.swift */; }; - 88D018152A1B302F004664D2 /* WeakElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017902A1B302F004664D2 /* WeakElement.swift */; }; - 88D018162A1B3030004664D2 /* CGSize+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017912A1B302F004664D2 /* CGSize+Helpers.swift */; }; - 88D018212A1B3030004664D2 /* CAGradientLayerType+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0179F2A1B302F004664D2 /* CAGradientLayerType+Init.swift */; }; - 88D018222A1B3030004664D2 /* UIImage+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017A02A1B302F004664D2 /* UIImage+Init.swift */; }; - 88D018232A1B3030004664D2 /* RNINavigationEventsReportingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017A32A1B302F004664D2 /* RNINavigationEventsReportingViewController.swift */; }; - 88D018242A1B3030004664D2 /* RNINavigationEventsNotifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017A42A1B302F004664D2 /* RNINavigationEventsNotifiable.swift */; }; - 88D018252A1B3030004664D2 /* UIViewController+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017A62A1B302F004664D2 /* UIViewController+Helpers.swift */; }; - 88D018262A1B3030004664D2 /* UIColor+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017A72A1B302F004664D2 /* UIColor+Helpers.swift */; }; - 88D018272A1B3030004664D2 /* RNIInternalCleanupMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017A92A1B302F004664D2 /* RNIInternalCleanupMode.swift */; }; - 88D018282A1B3030004664D2 /* RNICleanable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017AA2A1B302F004664D2 /* RNICleanable.swift */; }; - 88D018292A1B3030004664D2 /* RNICleanupMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017AB2A1B302F004664D2 /* RNICleanupMode.swift */; }; - 88D018332A1B3030004664D2 /* RNIJSComponentWillUnmountNotifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017B92A1B302F004664D2 /* RNIJSComponentWillUnmountNotifiable.swift */; }; - 88D018342A1B3030004664D2 /* UIModalPresentationStyle+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017BC2A1B302F004664D2 /* UIModalPresentationStyle+Init.swift */; }; - 88D018352A1B3030004664D2 /* UIBlurEffect+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017BD2A1B302F004664D2 /* UIBlurEffect+Init.swift */; }; - 88D018362A1B3030004664D2 /* CGSize+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017BE2A1B302F004664D2 /* CGSize+Init.swift */; }; - 88D018372A1B3030004664D2 /* UISheetPresentationController+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017BF2A1B302F004664D2 /* UISheetPresentationController+Init.swift */; }; - 88D018382A1B3030004664D2 /* UIModalTransitionStyle+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C12A1B302F004664D2 /* UIModalTransitionStyle+Helpers.swift */; }; - 88D018392A1B3030004664D2 /* FloatingPoint+Clamping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C22A1B302F004664D2 /* FloatingPoint+Clamping.swift */; }; - 88D0183A2A1B3030004664D2 /* CAAnimation+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C32A1B302F004664D2 /* CAAnimation+Helpers.swift */; }; - 88D0183B2A1B3030004664D2 /* Collection+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C42A1B302F004664D2 /* Collection+Helpers.swift */; }; - 88D0183C2A1B3030004664D2 /* UIWindow+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C52A1B302F004664D2 /* UIWindow+Helpers.swift */; }; - 88D0183D2A1B3030004664D2 /* UIView+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C62A1B302F004664D2 /* UIView+Helpers.swift */; }; - 88D0183E2A1B3030004664D2 /* CAAnimation+Block.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C72A1B302F004664D2 /* CAAnimation+Block.swift */; }; - 88D0183F2A1B3030004664D2 /* CGRect+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C82A1B302F004664D2 /* CGRect+Helpers.swift */; }; - 88D018402A1B3030004664D2 /* Encodable+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017C92A1B302F004664D2 /* Encodable+Helpers.swift */; }; - 88D018412A1B3030004664D2 /* KeyWindow+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017CA2A1B302F004664D2 /* KeyWindow+Helpers.swift */; }; - 88D018432A1B3030004664D2 /* UIGestureRecognizer+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017CC2A1B302F004664D2 /* UIGestureRecognizer+Helpers.swift */; }; - 88D018452A1B3030004664D2 /* RNIDictionarySynthesizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017D02A1B302F004664D2 /* RNIDictionarySynthesizable.swift */; }; - 88D018462A1B3030004664D2 /* RNIDictionaryRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017D12A1B302F004664D2 /* RNIDictionaryRepresentable.swift */; }; - 88D018472A1B3030004664D2 /* RNIDictionarySynthesizable+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017D22A1B302F004664D2 /* RNIDictionarySynthesizable+Default.swift */; }; - 88D0184A2A1B3030004664D2 /* RNILayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017D72A1B302F004664D2 /* RNILayout.swift */; }; - 88D0184B2A1B3030004664D2 /* RNIAnimatorSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017D92A1B302F004664D2 /* RNIAnimatorSize.swift */; }; - 88D0184C2A1B3030004664D2 /* RNIAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017DA2A1B302F004664D2 /* RNIAnimator.swift */; }; - 88D018522A1B3030004664D2 /* CAAnimationMulticastDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017E22A1B302F004664D2 /* CAAnimationMulticastDelegate.swift */; }; - 88D018532A1B3030004664D2 /* RNIMulticastDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017E32A1B302F004664D2 /* RNIMulticastDelegate.swift */; }; - 88D018542A1B3030004664D2 /* RNIWeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017E52A1B302F004664D2 /* RNIWeakArray.swift */; }; - 88D018552A1B3030004664D2 /* RNIWeakRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017E62A1B302F004664D2 /* RNIWeakRef.swift */; }; - 88D018562A1B3030004664D2 /* RNIWeakDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017E72A1B302F004664D2 /* RNIWeakDictionary.swift */; }; - 88D018572A1B3030004664D2 /* RNIObjectMetadata+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017E92A1B302F004664D2 /* RNIObjectMetadata+Default.swift */; }; - 88D018582A1B3030004664D2 /* RNIObjectMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017EA2A1B302F004664D2 /* RNIObjectMetadata.swift */; }; - 88D0185B2A1B3030004664D2 /* RNIIdentifiable+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017EF2A1B302F004664D2 /* RNIIdentifiable+Default.swift */; }; - 88D0185C2A1B3030004664D2 /* RNIObjectIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017F02A1B302F004664D2 /* RNIObjectIdentifier.swift */; }; - 88D0185D2A1B3030004664D2 /* RNIIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017F12A1B302F004664D2 /* RNIIdentifiable.swift */; }; - 88D018642A1B3030004664D2 /* RNIViewControllerLifeCycleNotifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017FA2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable.swift */; }; - 88D018652A1B3030004664D2 /* RNIViewControllerLifeCycleNotifiable+Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017FC2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable+Default.swift */; }; - 88D018672A1B3030004664D2 /* RNIModalEventData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D017FF2A1B302F004664D2 /* RNIModalEventData.swift */; }; - 88D018682A1B3030004664D2 /* RNIModalPresentationTrigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018002A1B302F004664D2 /* RNIModalPresentationTrigger.swift */; }; - 88D0186A2A1B3030004664D2 /* RNIModalData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018022A1B302F004664D2 /* RNIModalData.swift */; }; - 88D0186B2A1B3030004664D2 /* RNIModalPresentationNotifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018032A1B302F004664D2 /* RNIModalPresentationNotifiable.swift */; }; - 88D0186C2A1B3030004664D2 /* RNIModal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018042A1B302F004664D2 /* RNIModal.swift */; }; - 88D018702A1B3030004664D2 /* RNIModalFlags.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018082A1B302F004664D2 /* RNIModalFlags.swift */; }; - 88D018712A1B3030004664D2 /* RNIModalPresentationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018092A1B302F004664D2 /* RNIModalPresentationState.swift */; }; - 88D018732A1B3030004664D2 /* RNIModalCustomSheetDetent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0180B2A1B302F004664D2 /* RNIModalCustomSheetDetent.swift */; }; - 88D018742A1B3030004664D2 /* RNIModalFocusState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0180C2A1B302F004664D2 /* RNIModalFocusState.swift */; }; - 88D018762A1B3030004664D2 /* RNIComputableSizeMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0180F2A1B302F004664D2 /* RNIComputableSizeMode.swift */; }; - 88D018772A1B3030004664D2 /* RNIComputableValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018102A1B302F004664D2 /* RNIComputableValue.swift */; }; - 88D018782A1B3030004664D2 /* RNIComputableSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018112A1B302F004664D2 /* RNIComputableSize.swift */; }; - 88D018792A1B3030004664D2 /* RNIComputableValueMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018122A1B302F004664D2 /* RNIComputableValueMode.swift */; }; - 88D0187A2A1B3030004664D2 /* RNIComputableOffset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018132A1B302F004664D2 /* RNIComputableOffset.swift */; }; - 88D0187C2A1B32E6004664D2 /* TestRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0187B2A1B32E6004664D2 /* TestRoutes.swift */; }; - 88D0187E2A1B6CB3004664D2 /* BlurEffectTestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0187D2A1B6CB3004664D2 /* BlurEffectTestViewController.swift */; }; - 88D018822A1D09DD004664D2 /* AdaptiveModalAnimationConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018812A1D09DD004664D2 /* AdaptiveModalAnimationConfig.swift */; }; - 88D018862A1D0A1D004664D2 /* AdaptiveModalSnapPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018852A1D0A1D004664D2 /* AdaptiveModalSnapPoint.swift */; }; - 88D018882A1D0A36004664D2 /* AdaptiveModalConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D018872A1D0A36004664D2 /* AdaptiveModalConfig.swift */; }; - 88D0188E2A1DCA61004664D2 /* AdaptiveModalManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D0188D2A1DCA61004664D2 /* AdaptiveModalManager.swift */; }; - 88E8C0182A224A8D008C2FF8 /* AdaptiveModalSnapAnimationConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C0172A224A8D008C2FF8 /* AdaptiveModalSnapAnimationConfig.swift */; }; - 88E8C01A2A228289008C2FF8 /* AdaptiveModalClampingConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C0192A228289008C2FF8 /* AdaptiveModalClampingConfig.swift */; }; - 88E8C01C2A23203E008C2FF8 /* RNILayoutPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C01B2A23203E008C2FF8 /* RNILayoutPreset.swift */; }; - 88E8C01E2A234B0A008C2FF8 /* UIBezierPath+VariadicCornerRadius.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C01D2A234B0A008C2FF8 /* UIBezierPath+VariadicCornerRadius.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 880492572A23F89000D74E9F /* AdaptiveModalInterpolationPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalInterpolationPoint.swift; sourceTree = ""; }; - 88075E262A2121FE00B78388 /* AdaptiveModalUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalUtilities.swift; sourceTree = ""; }; - 88203DC02A122AC20088C8E2 /* RNIDynamicModal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNIDynamicModal.swift; sourceTree = ""; }; - 8849B6A62A3F7A7700A5F412 /* RNILayoutValue+StaticAlias.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RNILayoutValue+StaticAlias.swift"; sourceTree = ""; }; - 884A18F72A30516B0044AA66 /* AdaptiveModalPresentationTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalPresentationTestViewController.swift; sourceTree = ""; }; - 884A18F92A3146CA0044AA66 /* AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift"; sourceTree = ""; }; - 884A18FB2A3146FC0044AA66 /* AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift"; sourceTree = ""; }; - 884A18FD2A31472E0044AA66 /* AdaptiveModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalPresentationController.swift; sourceTree = ""; }; - 886AFCAA2A31FF40004AC9FB /* RNILayoutValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutValue.swift; sourceTree = ""; }; - 886AFCAC2A3209D5004AC9FB /* RNILayoutValueMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutValueMode.swift; sourceTree = ""; }; - 886AFCAE2A320DED004AC9FB /* RNILayoutValuePercentTarget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutValuePercentTarget.swift; sourceTree = ""; }; - 886AFCB02A325B6F004AC9FB /* RNILayoutValueContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutValueContext.swift; sourceTree = ""; }; - 887AA0562A4253050089F517 /* RNILayoutKeyboardValues.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutKeyboardValues.swift; sourceTree = ""; }; - 887C3BE12A42F9E00026B57C /* CACornerMask+StaticAlias.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CACornerMask+StaticAlias.swift"; sourceTree = ""; }; - 887C3BE32A43C4FF0026B57C /* RNILayoutMargins.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutMargins.swift; sourceTree = ""; }; - 887C3BE52A43C5460026B57C /* RNILayoutMarginRects.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutMarginRects.swift; sourceTree = ""; }; - 88A2EF732A3A98F6006B5235 /* AdaptiveModalConfigTestPresets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalConfigTestPresets.swift; sourceTree = ""; }; - 88B7D0EB29C593F400490628 /* swift-programmatic-modal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "swift-programmatic-modal.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 88B7D0EE29C593F400490628 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 88B7D0F029C593F400490628 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 88B7D0F729C593F600490628 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 88B7D0FA29C593F600490628 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 88B7D0FC29C593F600490628 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 88C2F45B2A275B2800DA7450 /* AdaptiveModalSnapPointPreset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalSnapPointPreset.swift; sourceTree = ""; }; - 88C2F45D2A278A9200DA7450 /* AdaptiveModalRangePropertyAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalRangePropertyAnimator.swift; sourceTree = ""; }; - 88C2F45F2A2CA8CF00DA7450 /* RoundedViewTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundedViewTestViewController.swift; sourceTree = ""; }; - 88C2F4612A2CD81F00DA7450 /* AdaptiveModalEventNotifiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalEventNotifiable.swift; sourceTree = ""; }; - 88C2F4632A2D8D3400DA7450 /* AdaptiveModalKeyframePropertyAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalKeyframePropertyAnimator.swift; sourceTree = ""; }; - 88D0165F2A14C86B004664D2 /* RootViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewController.swift; sourceTree = ""; }; - 88D0168C2A1730B1004664D2 /* RNILayoutTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNILayoutTestViewController.swift; sourceTree = ""; }; - 88D0169D2A1B0DD3004664D2 /* RNIDraggableTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNIDraggableTestViewController.swift; sourceTree = ""; }; - 88D017902A1B302F004664D2 /* WeakElement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakElement.swift; sourceTree = ""; }; - 88D017912A1B302F004664D2 /* CGSize+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGSize+Helpers.swift"; sourceTree = ""; }; - 88D0179F2A1B302F004664D2 /* CAGradientLayerType+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CAGradientLayerType+Init.swift"; sourceTree = ""; }; - 88D017A02A1B302F004664D2 /* UIImage+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Init.swift"; sourceTree = ""; }; - 88D017A12A1B302F004664D2 /* IosUtilities-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IosUtilities-Bridging-Header.h"; sourceTree = ""; }; - 88D017A32A1B302F004664D2 /* RNINavigationEventsReportingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNINavigationEventsReportingViewController.swift; sourceTree = ""; }; - 88D017A42A1B302F004664D2 /* RNINavigationEventsNotifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNINavigationEventsNotifiable.swift; sourceTree = ""; }; - 88D017A62A1B302F004664D2 /* UIViewController+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Helpers.swift"; sourceTree = ""; }; - 88D017A72A1B302F004664D2 /* UIColor+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Helpers.swift"; sourceTree = ""; }; - 88D017A92A1B302F004664D2 /* RNIInternalCleanupMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIInternalCleanupMode.swift; sourceTree = ""; }; - 88D017AA2A1B302F004664D2 /* RNICleanable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNICleanable.swift; sourceTree = ""; }; - 88D017AB2A1B302F004664D2 /* RNICleanupMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNICleanupMode.swift; sourceTree = ""; }; - 88D017B92A1B302F004664D2 /* RNIJSComponentWillUnmountNotifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIJSComponentWillUnmountNotifiable.swift; sourceTree = ""; }; - 88D017BA2A1B302F004664D2 /* IosModal-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IosModal-Bridging-Header.h"; sourceTree = ""; }; - 88D017BC2A1B302F004664D2 /* UIModalPresentationStyle+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIModalPresentationStyle+Init.swift"; sourceTree = ""; }; - 88D017BD2A1B302F004664D2 /* UIBlurEffect+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBlurEffect+Init.swift"; sourceTree = ""; }; - 88D017BE2A1B302F004664D2 /* CGSize+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGSize+Init.swift"; sourceTree = ""; }; - 88D017BF2A1B302F004664D2 /* UISheetPresentationController+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISheetPresentationController+Init.swift"; sourceTree = ""; }; - 88D017C12A1B302F004664D2 /* UIModalTransitionStyle+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIModalTransitionStyle+Helpers.swift"; sourceTree = ""; }; - 88D017C22A1B302F004664D2 /* FloatingPoint+Clamping.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FloatingPoint+Clamping.swift"; sourceTree = ""; }; - 88D017C32A1B302F004664D2 /* CAAnimation+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CAAnimation+Helpers.swift"; sourceTree = ""; }; - 88D017C42A1B302F004664D2 /* Collection+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Collection+Helpers.swift"; sourceTree = ""; }; - 88D017C52A1B302F004664D2 /* UIWindow+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIWindow+Helpers.swift"; sourceTree = ""; }; - 88D017C62A1B302F004664D2 /* UIView+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Helpers.swift"; sourceTree = ""; }; - 88D017C72A1B302F004664D2 /* CAAnimation+Block.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CAAnimation+Block.swift"; sourceTree = ""; }; - 88D017C82A1B302F004664D2 /* CGRect+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGRect+Helpers.swift"; sourceTree = ""; }; - 88D017C92A1B302F004664D2 /* Encodable+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Encodable+Helpers.swift"; sourceTree = ""; }; - 88D017CA2A1B302F004664D2 /* KeyWindow+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "KeyWindow+Helpers.swift"; sourceTree = ""; }; - 88D017CC2A1B302F004664D2 /* UIGestureRecognizer+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIGestureRecognizer+Helpers.swift"; sourceTree = ""; }; - 88D017D02A1B302F004664D2 /* RNIDictionarySynthesizable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIDictionarySynthesizable.swift; sourceTree = ""; }; - 88D017D12A1B302F004664D2 /* RNIDictionaryRepresentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIDictionaryRepresentable.swift; sourceTree = ""; }; - 88D017D22A1B302F004664D2 /* RNIDictionarySynthesizable+Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "RNIDictionarySynthesizable+Default.swift"; sourceTree = ""; }; - 88D017D72A1B302F004664D2 /* RNILayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNILayout.swift; sourceTree = ""; }; - 88D017D92A1B302F004664D2 /* RNIAnimatorSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIAnimatorSize.swift; sourceTree = ""; }; - 88D017DA2A1B302F004664D2 /* RNIAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIAnimator.swift; sourceTree = ""; }; - 88D017E22A1B302F004664D2 /* CAAnimationMulticastDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CAAnimationMulticastDelegate.swift; sourceTree = ""; }; - 88D017E32A1B302F004664D2 /* RNIMulticastDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIMulticastDelegate.swift; sourceTree = ""; }; - 88D017E52A1B302F004664D2 /* RNIWeakArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIWeakArray.swift; sourceTree = ""; }; - 88D017E62A1B302F004664D2 /* RNIWeakRef.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIWeakRef.swift; sourceTree = ""; }; - 88D017E72A1B302F004664D2 /* RNIWeakDictionary.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIWeakDictionary.swift; sourceTree = ""; }; - 88D017E92A1B302F004664D2 /* RNIObjectMetadata+Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "RNIObjectMetadata+Default.swift"; sourceTree = ""; }; - 88D017EA2A1B302F004664D2 /* RNIObjectMetadata.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIObjectMetadata.swift; sourceTree = ""; }; - 88D017EF2A1B302F004664D2 /* RNIIdentifiable+Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "RNIIdentifiable+Default.swift"; sourceTree = ""; }; - 88D017F02A1B302F004664D2 /* RNIObjectIdentifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIObjectIdentifier.swift; sourceTree = ""; }; - 88D017F12A1B302F004664D2 /* RNIIdentifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIIdentifiable.swift; sourceTree = ""; }; - 88D017FA2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIViewControllerLifeCycleNotifiable.swift; sourceTree = ""; }; - 88D017FC2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable+Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "RNIViewControllerLifeCycleNotifiable+Default.swift"; sourceTree = ""; }; - 88D017FF2A1B302F004664D2 /* RNIModalEventData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalEventData.swift; sourceTree = ""; }; - 88D018002A1B302F004664D2 /* RNIModalPresentationTrigger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalPresentationTrigger.swift; sourceTree = ""; }; - 88D018022A1B302F004664D2 /* RNIModalData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalData.swift; sourceTree = ""; }; - 88D018032A1B302F004664D2 /* RNIModalPresentationNotifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalPresentationNotifiable.swift; sourceTree = ""; }; - 88D018042A1B302F004664D2 /* RNIModal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModal.swift; sourceTree = ""; }; - 88D018082A1B302F004664D2 /* RNIModalFlags.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalFlags.swift; sourceTree = ""; }; - 88D018092A1B302F004664D2 /* RNIModalPresentationState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalPresentationState.swift; sourceTree = ""; }; - 88D0180B2A1B302F004664D2 /* RNIModalCustomSheetDetent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalCustomSheetDetent.swift; sourceTree = ""; }; - 88D0180C2A1B302F004664D2 /* RNIModalFocusState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIModalFocusState.swift; sourceTree = ""; }; - 88D0180F2A1B302F004664D2 /* RNIComputableSizeMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIComputableSizeMode.swift; sourceTree = ""; }; - 88D018102A1B302F004664D2 /* RNIComputableValue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIComputableValue.swift; sourceTree = ""; }; - 88D018112A1B302F004664D2 /* RNIComputableSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIComputableSize.swift; sourceTree = ""; }; - 88D018122A1B302F004664D2 /* RNIComputableValueMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIComputableValueMode.swift; sourceTree = ""; }; - 88D018132A1B302F004664D2 /* RNIComputableOffset.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNIComputableOffset.swift; sourceTree = ""; }; - 88D0187B2A1B32E6004664D2 /* TestRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestRoutes.swift; sourceTree = ""; }; - 88D0187D2A1B6CB3004664D2 /* BlurEffectTestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurEffectTestViewController.swift; sourceTree = ""; }; - 88D018812A1D09DD004664D2 /* AdaptiveModalAnimationConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalAnimationConfig.swift; sourceTree = ""; }; - 88D018852A1D0A1D004664D2 /* AdaptiveModalSnapPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalSnapPoint.swift; sourceTree = ""; }; - 88D018872A1D0A36004664D2 /* AdaptiveModalConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalConfig.swift; sourceTree = ""; }; - 88D0188D2A1DCA61004664D2 /* AdaptiveModalManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalManager.swift; sourceTree = ""; }; - 88E8C0172A224A8D008C2FF8 /* AdaptiveModalSnapAnimationConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalSnapAnimationConfig.swift; sourceTree = ""; }; - 88E8C0192A228289008C2FF8 /* AdaptiveModalClampingConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveModalClampingConfig.swift; sourceTree = ""; }; - 88E8C01B2A23203E008C2FF8 /* RNILayoutPreset.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RNILayoutPreset.swift; sourceTree = ""; }; - 88E8C01D2A234B0A008C2FF8 /* UIBezierPath+VariadicCornerRadius.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIBezierPath+VariadicCornerRadius.swift"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 88B7D0E829C593F400490628 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 88203DBF2A122AA10088C8E2 /* RNIDynamicModal */ = { - isa = PBXGroup; - children = ( - 88203DC02A122AC20088C8E2 /* RNIDynamicModal.swift */, - 88D0165F2A14C86B004664D2 /* RootViewController.swift */, - ); - path = RNIDynamicModal; - sourceTree = ""; - }; - 88B7D0E229C593F400490628 = { - isa = PBXGroup; - children = ( - 88D017D62A1B302F004664D2 /* RNILayout */, - 88D018802A1D06EA004664D2 /* AdaptiveModal */, - 88D0178D2A1B302F004664D2 /* src_library */, - 88D0168B2A173093004664D2 /* Test */, - 88203DBF2A122AA10088C8E2 /* RNIDynamicModal */, - 88B7D0ED29C593F400490628 /* swift-programmatic-modal */, - 88B7D0EC29C593F400490628 /* Products */, - ); - sourceTree = ""; - }; - 88B7D0EC29C593F400490628 /* Products */ = { - isa = PBXGroup; - children = ( - 88B7D0EB29C593F400490628 /* swift-programmatic-modal.app */, - ); - name = Products; - sourceTree = ""; - }; - 88B7D0ED29C593F400490628 /* swift-programmatic-modal */ = { - isa = PBXGroup; - children = ( - 88B7D0EE29C593F400490628 /* AppDelegate.swift */, - 88B7D0F029C593F400490628 /* SceneDelegate.swift */, - 88B7D0F729C593F600490628 /* Assets.xcassets */, - 88B7D0F929C593F600490628 /* LaunchScreen.storyboard */, - 88B7D0FC29C593F600490628 /* Info.plist */, - ); - path = "swift-programmatic-modal"; - sourceTree = ""; - }; - 88D0168B2A173093004664D2 /* Test */ = { - isa = PBXGroup; - children = ( - 88A2EF732A3A98F6006B5235 /* AdaptiveModalConfigTestPresets.swift */, - 88D0168C2A1730B1004664D2 /* RNILayoutTestViewController.swift */, - 88D0169D2A1B0DD3004664D2 /* RNIDraggableTestViewController.swift */, - 88D0187B2A1B32E6004664D2 /* TestRoutes.swift */, - 88D0187D2A1B6CB3004664D2 /* BlurEffectTestViewController.swift */, - 88C2F45F2A2CA8CF00DA7450 /* RoundedViewTestViewController.swift */, - 884A18F72A30516B0044AA66 /* AdaptiveModalPresentationTestViewController.swift */, - ); - path = Test; - sourceTree = ""; - }; - 88D0178D2A1B302F004664D2 /* src_library */ = { - isa = PBXGroup; - children = ( - 88D0178E2A1B302F004664D2 /* Helpers+Utilities */, - 88D017922A1B302F004664D2 /* Temp */, - 88D017BA2A1B302F004664D2 /* IosModal-Bridging-Header.h */, - 88D017BB2A1B302F004664D2 /* Extensions+Init */, - 88D017C02A1B302F004664D2 /* Extensions */, - 88D017CE2A1B302F004664D2 /* React Native */, - 88D018142A1B302F004664D2 /* RNIUtilities */, - ); - name = src_library; - path = ../../ios/src_library; - sourceTree = ""; - }; - 88D0178E2A1B302F004664D2 /* Helpers+Utilities */ = { - isa = PBXGroup; - children = ( - 88D0178F2A1B302F004664D2 /* RNIDictionarySynthesizable */, - 88D017902A1B302F004664D2 /* WeakElement.swift */, - 88D017912A1B302F004664D2 /* CGSize+Helpers.swift */, - ); - path = "Helpers+Utilities"; - sourceTree = ""; - }; - 88D0178F2A1B302F004664D2 /* RNIDictionarySynthesizable */ = { - isa = PBXGroup; - children = ( - ); - path = RNIDictionarySynthesizable; - sourceTree = ""; - }; - 88D017922A1B302F004664D2 /* Temp */ = { - isa = PBXGroup; - children = ( - 88D0179E2A1B302F004664D2 /* Extensions+Init */, - 88D017A12A1B302F004664D2 /* IosUtilities-Bridging-Header.h */, - 88D017A22A1B302F004664D2 /* RNINavigationEventsReporting */, - 88D017A52A1B302F004664D2 /* Extensions */, - 88D017A82A1B302F004664D2 /* RNICleanup */, - 88D017B72A1B302F004664D2 /* RNILog */, - 88D017B82A1B302F004664D2 /* Protocols */, - ); - path = Temp; - sourceTree = ""; - }; - 88D0179E2A1B302F004664D2 /* Extensions+Init */ = { - isa = PBXGroup; - children = ( - 88D0179F2A1B302F004664D2 /* CAGradientLayerType+Init.swift */, - 88D017A02A1B302F004664D2 /* UIImage+Init.swift */, - ); - path = "Extensions+Init"; - sourceTree = ""; - }; - 88D017A22A1B302F004664D2 /* RNINavigationEventsReporting */ = { - isa = PBXGroup; - children = ( - 88D017A32A1B302F004664D2 /* RNINavigationEventsReportingViewController.swift */, - 88D017A42A1B302F004664D2 /* RNINavigationEventsNotifiable.swift */, - ); - path = RNINavigationEventsReporting; - sourceTree = ""; - }; - 88D017A52A1B302F004664D2 /* Extensions */ = { - isa = PBXGroup; - children = ( - 88D017A62A1B302F004664D2 /* UIViewController+Helpers.swift */, - 88D017A72A1B302F004664D2 /* UIColor+Helpers.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 88D017A82A1B302F004664D2 /* RNICleanup */ = { - isa = PBXGroup; - children = ( - 88D017A92A1B302F004664D2 /* RNIInternalCleanupMode.swift */, - 88D017AA2A1B302F004664D2 /* RNICleanable.swift */, - 88D017AB2A1B302F004664D2 /* RNICleanupMode.swift */, - ); - path = RNICleanup; - sourceTree = ""; - }; - 88D017B72A1B302F004664D2 /* RNILog */ = { - isa = PBXGroup; - children = ( - ); - path = RNILog; - sourceTree = ""; - }; - 88D017B82A1B302F004664D2 /* Protocols */ = { - isa = PBXGroup; - children = ( - 88D017B92A1B302F004664D2 /* RNIJSComponentWillUnmountNotifiable.swift */, - ); - path = Protocols; - sourceTree = ""; - }; - 88D017BB2A1B302F004664D2 /* Extensions+Init */ = { - isa = PBXGroup; - children = ( - 88D017BC2A1B302F004664D2 /* UIModalPresentationStyle+Init.swift */, - 88D017BD2A1B302F004664D2 /* UIBlurEffect+Init.swift */, - 88D017BE2A1B302F004664D2 /* CGSize+Init.swift */, - 88D017BF2A1B302F004664D2 /* UISheetPresentationController+Init.swift */, - ); - path = "Extensions+Init"; - sourceTree = ""; - }; - 88D017C02A1B302F004664D2 /* Extensions */ = { - isa = PBXGroup; - children = ( - 88D017C12A1B302F004664D2 /* UIModalTransitionStyle+Helpers.swift */, - 88D017C22A1B302F004664D2 /* FloatingPoint+Clamping.swift */, - 88D017C32A1B302F004664D2 /* CAAnimation+Helpers.swift */, - 88D017C42A1B302F004664D2 /* Collection+Helpers.swift */, - 88D017C52A1B302F004664D2 /* UIWindow+Helpers.swift */, - 88D017C62A1B302F004664D2 /* UIView+Helpers.swift */, - 88D017C72A1B302F004664D2 /* CAAnimation+Block.swift */, - 88D017C82A1B302F004664D2 /* CGRect+Helpers.swift */, - 88D017C92A1B302F004664D2 /* Encodable+Helpers.swift */, - 88D017CA2A1B302F004664D2 /* KeyWindow+Helpers.swift */, - 88D017CC2A1B302F004664D2 /* UIGestureRecognizer+Helpers.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 88D017CE2A1B302F004664D2 /* React Native */ = { - isa = PBXGroup; - children = ( - 88D017CF2A1B302F004664D2 /* RNIDictionarySynthesizable */, - 88D017D82A1B302F004664D2 /* RNIAnimator */, - 88D017E12A1B302F004664D2 /* RNIMulticastDelegate */, - 88D017E42A1B302F004664D2 /* RNIWeak */, - 88D017E82A1B302F004664D2 /* RNIObjectMetadata */, - 88D017EE2A1B302F004664D2 /* RNIIdentifiable */, - 88D017F92A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable */, - 88D017FD2A1B302F004664D2 /* RNIModal */, - 88D0180D2A1B302F004664D2 /* RNIComputable */, - ); - path = "React Native"; - sourceTree = ""; - }; - 88D017CF2A1B302F004664D2 /* RNIDictionarySynthesizable */ = { - isa = PBXGroup; - children = ( - 88D017D02A1B302F004664D2 /* RNIDictionarySynthesizable.swift */, - 88D017D12A1B302F004664D2 /* RNIDictionaryRepresentable.swift */, - 88D017D22A1B302F004664D2 /* RNIDictionarySynthesizable+Default.swift */, - ); - path = RNIDictionarySynthesizable; - sourceTree = ""; - }; - 88D017D62A1B302F004664D2 /* RNILayout */ = { - isa = PBXGroup; - children = ( - 88D017D72A1B302F004664D2 /* RNILayout.swift */, - 88E8C01B2A23203E008C2FF8 /* RNILayoutPreset.swift */, - 887C3BE32A43C4FF0026B57C /* RNILayoutMargins.swift */, - 887C3BE52A43C5460026B57C /* RNILayoutMarginRects.swift */, - 886AFCAA2A31FF40004AC9FB /* RNILayoutValue.swift */, - 887AA0562A4253050089F517 /* RNILayoutKeyboardValues.swift */, - 886AFCB02A325B6F004AC9FB /* RNILayoutValueContext.swift */, - 886AFCAC2A3209D5004AC9FB /* RNILayoutValueMode.swift */, - 886AFCAE2A320DED004AC9FB /* RNILayoutValuePercentTarget.swift */, - 8849B6A62A3F7A7700A5F412 /* RNILayoutValue+StaticAlias.swift */, - ); - path = RNILayout; - sourceTree = ""; - }; - 88D017D82A1B302F004664D2 /* RNIAnimator */ = { - isa = PBXGroup; - children = ( - 88D017D92A1B302F004664D2 /* RNIAnimatorSize.swift */, - 88D017DA2A1B302F004664D2 /* RNIAnimator.swift */, - ); - path = RNIAnimator; - sourceTree = ""; - }; - 88D017E12A1B302F004664D2 /* RNIMulticastDelegate */ = { - isa = PBXGroup; - children = ( - 88D017E22A1B302F004664D2 /* CAAnimationMulticastDelegate.swift */, - 88D017E32A1B302F004664D2 /* RNIMulticastDelegate.swift */, - ); - path = RNIMulticastDelegate; - sourceTree = ""; - }; - 88D017E42A1B302F004664D2 /* RNIWeak */ = { - isa = PBXGroup; - children = ( - 88D017E52A1B302F004664D2 /* RNIWeakArray.swift */, - 88D017E62A1B302F004664D2 /* RNIWeakRef.swift */, - 88D017E72A1B302F004664D2 /* RNIWeakDictionary.swift */, - ); - path = RNIWeak; - sourceTree = ""; - }; - 88D017E82A1B302F004664D2 /* RNIObjectMetadata */ = { - isa = PBXGroup; - children = ( - 88D017E92A1B302F004664D2 /* RNIObjectMetadata+Default.swift */, - 88D017EA2A1B302F004664D2 /* RNIObjectMetadata.swift */, - ); - path = RNIObjectMetadata; - sourceTree = ""; - }; - 88D017EE2A1B302F004664D2 /* RNIIdentifiable */ = { - isa = PBXGroup; - children = ( - 88D017EF2A1B302F004664D2 /* RNIIdentifiable+Default.swift */, - 88D017F02A1B302F004664D2 /* RNIObjectIdentifier.swift */, - 88D017F12A1B302F004664D2 /* RNIIdentifiable.swift */, - ); - path = RNIIdentifiable; - sourceTree = ""; - }; - 88D017F92A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable */ = { - isa = PBXGroup; - children = ( - 88D017FA2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable.swift */, - 88D017FB2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable */, - 88D017FC2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable+Default.swift */, - ); - path = RNIViewControllerLifeCycleNotifiable; - sourceTree = ""; - }; - 88D017FB2A1B302F004664D2 /* RNIViewControllerLifeCycleNotifiable */ = { - isa = PBXGroup; - children = ( - ); - path = RNIViewControllerLifeCycleNotifiable; - sourceTree = ""; - }; - 88D017FD2A1B302F004664D2 /* RNIModal */ = { - isa = PBXGroup; - children = ( - 88D017FF2A1B302F004664D2 /* RNIModalEventData.swift */, - 88D018002A1B302F004664D2 /* RNIModalPresentationTrigger.swift */, - 88D018022A1B302F004664D2 /* RNIModalData.swift */, - 88D018032A1B302F004664D2 /* RNIModalPresentationNotifiable.swift */, - 88D018042A1B302F004664D2 /* RNIModal.swift */, - 88D018082A1B302F004664D2 /* RNIModalFlags.swift */, - 88D018092A1B302F004664D2 /* RNIModalPresentationState.swift */, - 88D0180B2A1B302F004664D2 /* RNIModalCustomSheetDetent.swift */, - 88D0180C2A1B302F004664D2 /* RNIModalFocusState.swift */, - ); - path = RNIModal; - sourceTree = ""; - }; - 88D0180D2A1B302F004664D2 /* RNIComputable */ = { - isa = PBXGroup; - children = ( - 88D0180F2A1B302F004664D2 /* RNIComputableSizeMode.swift */, - 88D018102A1B302F004664D2 /* RNIComputableValue.swift */, - 88D018112A1B302F004664D2 /* RNIComputableSize.swift */, - 88D018122A1B302F004664D2 /* RNIComputableValueMode.swift */, - 88D018132A1B302F004664D2 /* RNIComputableOffset.swift */, - ); - path = RNIComputable; - sourceTree = ""; - }; - 88D018142A1B302F004664D2 /* RNIUtilities */ = { - isa = PBXGroup; - children = ( - ); - path = RNIUtilities; - sourceTree = ""; - }; - 88D018802A1D06EA004664D2 /* AdaptiveModal */ = { - isa = PBXGroup; - children = ( - 88E8C01D2A234B0A008C2FF8 /* UIBezierPath+VariadicCornerRadius.swift */, - 887C3BE12A42F9E00026B57C /* CACornerMask+StaticAlias.swift */, - 88D018812A1D09DD004664D2 /* AdaptiveModalAnimationConfig.swift */, - 88D018852A1D0A1D004664D2 /* AdaptiveModalSnapPoint.swift */, - 88C2F45B2A275B2800DA7450 /* AdaptiveModalSnapPointPreset.swift */, - 88E8C0172A224A8D008C2FF8 /* AdaptiveModalSnapAnimationConfig.swift */, - 88E8C0192A228289008C2FF8 /* AdaptiveModalClampingConfig.swift */, - 88D018872A1D0A36004664D2 /* AdaptiveModalConfig.swift */, - 880492572A23F89000D74E9F /* AdaptiveModalInterpolationPoint.swift */, - 88C2F45D2A278A9200DA7450 /* AdaptiveModalRangePropertyAnimator.swift */, - 88D0188D2A1DCA61004664D2 /* AdaptiveModalManager.swift */, - 884A18F92A3146CA0044AA66 /* AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift */, - 884A18FB2A3146FC0044AA66 /* AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift */, - 884A18FD2A31472E0044AA66 /* AdaptiveModalPresentationController.swift */, - 88075E262A2121FE00B78388 /* AdaptiveModalUtilities.swift */, - 88C2F4612A2CD81F00DA7450 /* AdaptiveModalEventNotifiable.swift */, - 88C2F4632A2D8D3400DA7450 /* AdaptiveModalKeyframePropertyAnimator.swift */, - ); - path = AdaptiveModal; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 88B7D0EA29C593F400490628 /* swift-programmatic-modal */ = { - isa = PBXNativeTarget; - buildConfigurationList = 88B7D0FF29C593F600490628 /* Build configuration list for PBXNativeTarget "swift-programmatic-modal" */; - buildPhases = ( - 88B7D0E729C593F400490628 /* Sources */, - 88B7D0E829C593F400490628 /* Frameworks */, - 88B7D0E929C593F400490628 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "swift-programmatic-modal"; - productName = "swift-programmatic-modal"; - productReference = 88B7D0EB29C593F400490628 /* swift-programmatic-modal.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 88B7D0E329C593F400490628 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1420; - LastUpgradeCheck = 1420; - TargetAttributes = { - 88B7D0EA29C593F400490628 = { - CreatedOnToolsVersion = 14.2; - }; - }; - }; - buildConfigurationList = 88B7D0E629C593F400490628 /* Build configuration list for PBXProject "swift-programmatic-modal" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 88B7D0E229C593F400490628; - productRefGroup = 88B7D0EC29C593F400490628 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 88B7D0EA29C593F400490628 /* swift-programmatic-modal */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 88B7D0E929C593F400490628 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 88B7D0FB29C593F600490628 /* LaunchScreen.storyboard in Resources */, - 88B7D0F829C593F600490628 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 88B7D0E729C593F400490628 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 88D018742A1B3030004664D2 /* RNIModalFocusState.swift in Sources */, - 88D0186A2A1B3030004664D2 /* RNIModalData.swift in Sources */, - 887AA0572A4253050089F517 /* RNILayoutKeyboardValues.swift in Sources */, - 88D0185D2A1B3030004664D2 /* RNIIdentifiable.swift in Sources */, - 88D0169E2A1B0DD3004664D2 /* RNIDraggableTestViewController.swift in Sources */, - 88C2F4642A2D8D3400DA7450 /* AdaptiveModalKeyframePropertyAnimator.swift in Sources */, - 88D018452A1B3030004664D2 /* RNIDictionarySynthesizable.swift in Sources */, - 88D018232A1B3030004664D2 /* RNINavigationEventsReportingViewController.swift in Sources */, - 88D018822A1D09DD004664D2 /* AdaptiveModalAnimationConfig.swift in Sources */, - 88D018342A1B3030004664D2 /* UIModalPresentationStyle+Init.swift in Sources */, - 887C3BE22A42F9E00026B57C /* CACornerMask+StaticAlias.swift in Sources */, - 884A18F82A30516B0044AA66 /* AdaptiveModalPresentationTestViewController.swift in Sources */, - 88D0186B2A1B3030004664D2 /* RNIModalPresentationNotifiable.swift in Sources */, - 886AFCAB2A31FF40004AC9FB /* RNILayoutValue.swift in Sources */, - 88D018552A1B3030004664D2 /* RNIWeakRef.swift in Sources */, - 88D018652A1B3030004664D2 /* RNIViewControllerLifeCycleNotifiable+Default.swift in Sources */, - 88D0168D2A1730B1004664D2 /* RNILayoutTestViewController.swift in Sources */, - 88D018162A1B3030004664D2 /* CGSize+Helpers.swift in Sources */, - 88D018242A1B3030004664D2 /* RNINavigationEventsNotifiable.swift in Sources */, - 88D018372A1B3030004664D2 /* UISheetPresentationController+Init.swift in Sources */, - 88D018572A1B3030004664D2 /* RNIObjectMetadata+Default.swift in Sources */, - 88E8C01A2A228289008C2FF8 /* AdaptiveModalClampingConfig.swift in Sources */, - 88D018522A1B3030004664D2 /* CAAnimationMulticastDelegate.swift in Sources */, - 88D018352A1B3030004664D2 /* UIBlurEffect+Init.swift in Sources */, - 88D0186C2A1B3030004664D2 /* RNIModal.swift in Sources */, - 88D018682A1B3030004664D2 /* RNIModalPresentationTrigger.swift in Sources */, - 880492582A23F89000D74E9F /* AdaptiveModalInterpolationPoint.swift in Sources */, - 88D018282A1B3030004664D2 /* RNICleanable.swift in Sources */, - 88D018462A1B3030004664D2 /* RNIDictionaryRepresentable.swift in Sources */, - 88D018712A1B3030004664D2 /* RNIModalPresentationState.swift in Sources */, - 88D0183A2A1B3030004664D2 /* CAAnimation+Helpers.swift in Sources */, - 88D018582A1B3030004664D2 /* RNIObjectMetadata.swift in Sources */, - 88D0187A2A1B3030004664D2 /* RNIComputableOffset.swift in Sources */, - 886AFCAD2A3209D5004AC9FB /* RNILayoutValueMode.swift in Sources */, - 88D018382A1B3030004664D2 /* UIModalTransitionStyle+Helpers.swift in Sources */, - 88D0184A2A1B3030004664D2 /* RNILayout.swift in Sources */, - 88D018472A1B3030004664D2 /* RNIDictionarySynthesizable+Default.swift in Sources */, - 88D0184B2A1B3030004664D2 /* RNIAnimatorSize.swift in Sources */, - 88D0183B2A1B3030004664D2 /* Collection+Helpers.swift in Sources */, - 88D0188E2A1DCA61004664D2 /* AdaptiveModalManager.swift in Sources */, - 88D018772A1B3030004664D2 /* RNIComputableValue.swift in Sources */, - 884A18FA2A3146CA0044AA66 /* AdaptiveModalManager+UIViewControllerTransitioningDelegate.swift in Sources */, - 88C2F45C2A275B2800DA7450 /* AdaptiveModalSnapPointPreset.swift in Sources */, - 88A2EF742A3A98F6006B5235 /* AdaptiveModalConfigTestPresets.swift in Sources */, - 88E8C01C2A23203E008C2FF8 /* RNILayoutPreset.swift in Sources */, - 88C2F4602A2CA8CF00DA7450 /* RoundedViewTestViewController.swift in Sources */, - 88D018292A1B3030004664D2 /* RNICleanupMode.swift in Sources */, - 88D018532A1B3030004664D2 /* RNIMulticastDelegate.swift in Sources */, - 88D018642A1B3030004664D2 /* RNIViewControllerLifeCycleNotifiable.swift in Sources */, - 88D0185C2A1B3030004664D2 /* RNIObjectIdentifier.swift in Sources */, - 88D016602A14C86B004664D2 /* RootViewController.swift in Sources */, - 88D0183E2A1B3030004664D2 /* CAAnimation+Block.swift in Sources */, - 88D0184C2A1B3030004664D2 /* RNIAnimator.swift in Sources */, - 887C3BE42A43C4FF0026B57C /* RNILayoutMargins.swift in Sources */, - 88D018362A1B3030004664D2 /* CGSize+Init.swift in Sources */, - 886AFCB12A325B6F004AC9FB /* RNILayoutValueContext.swift in Sources */, - 88B7D0EF29C593F400490628 /* AppDelegate.swift in Sources */, - 88D018222A1B3030004664D2 /* UIImage+Init.swift in Sources */, - 88D018702A1B3030004664D2 /* RNIModalFlags.swift in Sources */, - 887C3BE62A43C5460026B57C /* RNILayoutMarginRects.swift in Sources */, - 88E8C01E2A234B0A008C2FF8 /* UIBezierPath+VariadicCornerRadius.swift in Sources */, - 88B7D0F129C593F400490628 /* SceneDelegate.swift in Sources */, - 88D0187E2A1B6CB3004664D2 /* BlurEffectTestViewController.swift in Sources */, - 88D018272A1B3030004664D2 /* RNIInternalCleanupMode.swift in Sources */, - 88D018782A1B3030004664D2 /* RNIComputableSize.swift in Sources */, - 8849B6A72A3F7A7700A5F412 /* RNILayoutValue+StaticAlias.swift in Sources */, - 88D018732A1B3030004664D2 /* RNIModalCustomSheetDetent.swift in Sources */, - 88075E272A2121FE00B78388 /* AdaptiveModalUtilities.swift in Sources */, - 88D018252A1B3030004664D2 /* UIViewController+Helpers.swift in Sources */, - 88D018882A1D0A36004664D2 /* AdaptiveModalConfig.swift in Sources */, - 88D018432A1B3030004664D2 /* UIGestureRecognizer+Helpers.swift in Sources */, - 88D0185B2A1B3030004664D2 /* RNIIdentifiable+Default.swift in Sources */, - 88C2F4622A2CD81F00DA7450 /* AdaptiveModalEventNotifiable.swift in Sources */, - 88D018762A1B3030004664D2 /* RNIComputableSizeMode.swift in Sources */, - 886AFCAF2A320DED004AC9FB /* RNILayoutValuePercentTarget.swift in Sources */, - 88D018262A1B3030004664D2 /* UIColor+Helpers.swift in Sources */, - 88E8C0182A224A8D008C2FF8 /* AdaptiveModalSnapAnimationConfig.swift in Sources */, - 88D018562A1B3030004664D2 /* RNIWeakDictionary.swift in Sources */, - 88203DC12A122AC20088C8E2 /* RNIDynamicModal.swift in Sources */, - 88C2F45E2A278A9200DA7450 /* AdaptiveModalRangePropertyAnimator.swift in Sources */, - 88D018542A1B3030004664D2 /* RNIWeakArray.swift in Sources */, - 88D018792A1B3030004664D2 /* RNIComputableValueMode.swift in Sources */, - 88D018212A1B3030004664D2 /* CAGradientLayerType+Init.swift in Sources */, - 88D0183C2A1B3030004664D2 /* UIWindow+Helpers.swift in Sources */, - 88D018862A1D0A1D004664D2 /* AdaptiveModalSnapPoint.swift in Sources */, - 88D018412A1B3030004664D2 /* KeyWindow+Helpers.swift in Sources */, - 88D018672A1B3030004664D2 /* RNIModalEventData.swift in Sources */, - 88D0183D2A1B3030004664D2 /* UIView+Helpers.swift in Sources */, - 88D018332A1B3030004664D2 /* RNIJSComponentWillUnmountNotifiable.swift in Sources */, - 88D0183F2A1B3030004664D2 /* CGRect+Helpers.swift in Sources */, - 88D018402A1B3030004664D2 /* Encodable+Helpers.swift in Sources */, - 88D018392A1B3030004664D2 /* FloatingPoint+Clamping.swift in Sources */, - 88D018152A1B302F004664D2 /* WeakElement.swift in Sources */, - 884A18FE2A31472E0044AA66 /* AdaptiveModalPresentationController.swift in Sources */, - 884A18FC2A3146FC0044AA66 /* AdaptiveModalManager+UIViewControllerAnimatedTransitioning.swift in Sources */, - 88D0187C2A1B32E6004664D2 /* TestRoutes.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 88B7D0F929C593F600490628 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 88B7D0FA29C593F600490628 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 88B7D0FD29C593F600490628 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES; - 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - 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 = 16.2; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 88B7D0FE29C593F600490628 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = 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_DOCUMENTATION_COMMENTS = YES; - 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - 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 = 16.2; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 88B7D10029C593F600490628 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZC7A6XV8GR; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "swift-programmatic-modal/Info.plist"; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "dominicgo.swift-programmatic-modal"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 88B7D10129C593F600490628 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZC7A6XV8GR; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "swift-programmatic-modal/Info.plist"; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "dominicgo.swift-programmatic-modal"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 88B7D0E629C593F400490628 /* Build configuration list for PBXProject "swift-programmatic-modal" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 88B7D0FD29C593F600490628 /* Debug */, - 88B7D0FE29C593F600490628 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 88B7D0FF29C593F600490628 /* Build configuration list for PBXNativeTarget "swift-programmatic-modal" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 88B7D10029C593F600490628 /* Debug */, - 88B7D10129C593F600490628 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 88B7D0E329C593F400490628 /* Project object */; -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/AppDelegate.swift b/experiments/swift-programmatic-modal/swift-programmatic-modal/AppDelegate.swift deleted file mode 100644 index a6faf81f..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/AppDelegate.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// AppDelegate.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 3/18/23. -// - -import UIKit - -@main class AppDelegate: UIResponder, UIApplicationDelegate { - - func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [ - UIApplication.LaunchOptionsKey: Any - ]? - ) -> Bool { - - // Override point for customization after application launch. - return true - }; - - // MARK: - UISceneSession Lifecycle - // -------------------------------- - - func application( - _ application: UIApplication, - configurationForConnecting connectingSceneSession: UISceneSession, - options: UIScene.ConnectionOptions - ) -> UISceneConfiguration { - - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration( - name: "Default Configuration", - sessionRole: connectingSceneSession.role - ); - }; - - func application( - _ application: UIApplication, - didDiscardSceneSessions sceneSessions: Set - ) { - // Called when the user discards a scene session. - // - // If any sessions were discarded while the application was not running, - // this will be called shortly after - // application:didFinishLaunchingWithOptions. - // - // Use this method to release any resources that were specific to the - // discarded scenes, as they will not return. - }; -}; - diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/AccentColor.colorset/Contents.json b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb878970..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/AppIcon.appiconset/Contents.json b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3e..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/Contents.json b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage.imageset/Contents.json b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage.imageset/Contents.json deleted file mode 100644 index 1bdb1f53..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "iphone.jpg", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage.imageset/iphone.jpg b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage.imageset/iphone.jpg deleted file mode 100644 index 349a3834..00000000 Binary files a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage.imageset/iphone.jpg and /dev/null differ diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage2.imageset/Contents.json b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage2.imageset/Contents.json deleted file mode 100644 index 8c7bc4af..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage2.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "macos-big-sur-apple-layers-fluidic-colorful-wwdc-stock-4096x2304-1455.jpg", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage2.imageset/macos-big-sur-apple-layers-fluidic-colorful-wwdc-stock-4096x2304-1455.jpg b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage2.imageset/macos-big-sur-apple-layers-fluidic-colorful-wwdc-stock-4096x2304-1455.jpg deleted file mode 100644 index 73d60c55..00000000 Binary files a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage2.imageset/macos-big-sur-apple-layers-fluidic-colorful-wwdc-stock-4096x2304-1455.jpg and /dev/null differ diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage3.imageset/Contents.json b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage3.imageset/Contents.json deleted file mode 100644 index 0aea5ae1..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage3.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "DummyBackgroundImage3 1.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage3.imageset/DummyBackgroundImage3 1.png b/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage3.imageset/DummyBackgroundImage3 1.png deleted file mode 100644 index 9e293afe..00000000 Binary files a/experiments/swift-programmatic-modal/swift-programmatic-modal/Assets.xcassets/DummyBackgroundImage3.imageset/DummyBackgroundImage3 1.png and /dev/null differ diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Base.lproj/LaunchScreen.storyboard b/experiments/swift-programmatic-modal/swift-programmatic-modal/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 865e9329..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/Info.plist b/experiments/swift-programmatic-modal/swift-programmatic-modal/Info.plist deleted file mode 100644 index 0eb786dc..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/Info.plist +++ /dev/null @@ -1,23 +0,0 @@ - - - - - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - - - - - - diff --git a/experiments/swift-programmatic-modal/swift-programmatic-modal/SceneDelegate.swift b/experiments/swift-programmatic-modal/swift-programmatic-modal/SceneDelegate.swift deleted file mode 100644 index be70e6fe..00000000 --- a/experiments/swift-programmatic-modal/swift-programmatic-modal/SceneDelegate.swift +++ /dev/null @@ -1,195 +0,0 @@ -// -// SceneDelegate.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 3/18/23. -// - -import UIKit - -class Helpers { - - static func getRootViewController( - for window: UIWindow? = nil - ) -> UIViewController? { - - if let window = window { - return window.rootViewController; - }; - - #if swift(>=5.5) - // Version: Swift 5.5 and newer - iOS 15 and newer - let scenes = UIApplication.shared.connectedScenes; - - guard let windowScene = scenes.first as? UIWindowScene, - let window = windowScene.windows.first - else { return nil }; - - return window.rootViewController; - - #elseif swift(>=5) - // Version: Swift 5.4 and below - iOS 14.5 and below - // Note: 'windows' was deprecated in iOS 15.0+ - guard let window = UIApplication.shared.windows.first else { return nil }; - return window.rootViewController; - - #elseif swift(>=4) - // Version: Swift 4 and below - iOS 12.4 and below - // Note: `keyWindow` was deprecated in iOS 13.0+ - guard let window = UIApplication.shared.keyWindow else { return nil }; - return window.rootViewController; - - #else - // Version: Swift 3.1 and below - iOS 10.3 and below - // Note: 'sharedApplication' has been renamed to 'shared' - guard let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate, - let window = appDelegate.window - else { return nil }; - - return window.rootViewController; - #endif - }; - - static func getPresentedViewControllers() -> [UIViewController] { - guard let rootVC = Self.getRootViewController() else { - #if DEBUG - print( - "Helpers - getTopMostPresentedVC - Error: Could not get root " - + "view controller" - ); - #endif - return []; - }; - - var presentedVCList: [UIViewController] = [rootVC]; - - // climb the vc hierarchy to find the topmost presented vc - while presentedVCList.last!.presentedViewController != nil { - if let presentedVC = presentedVCList.last!.presentedViewController { - presentedVCList.append(presentedVC); - }; - }; - - return presentedVCList; - }; - - static func getTopmostPresentedViewController() -> UIViewController? { - return Self.getPresentedViewControllers().last; - }; -}; - - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow?; - - func scene( - _ scene: UIScene, - willConnectTo session: UISceneSession, - options connectionOptions: UIScene.ConnectionOptions - ) { - // Use this method to optionally configure and attach the UIWindow `window` - // to the provided UIWindowScene `scene`. - // - // If using a storyboard, the `window` property will automatically be - // initialized and attached to the scene. - // - // This delegate does not imply the connecting scene or session are new - // (see `application:configurationForConnectingSceneSession` instead). - guard let windowScene = (scene as? UIWindowScene) else { return }; - - let window = UIWindow(windowScene: windowScene); - self.window = window; - - let rootVC = TestRoutes.rootRouteKey.viewController; - window.rootViewController = rootVC; - window.makeKeyAndVisible(); - - return; - - var delay = 1.0; - - DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay){ - let modalVC = UIViewController(); - modalVC.view = { - let view = UIView(); - view.backgroundColor = .blue; - - return view; - }(); - - rootVC.present(modalVC, animated: true); - }; - - delay += 1; - - DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay){ - guard let topmostVC = Helpers.getTopmostPresentedViewController() - else { return }; - - let modalVC = UIViewController(); - modalVC.view = { - let view = UIView(); - view.backgroundColor = .green; - - return view; - }(); - - // * once a modal has presented a vc - topmostVC.present(modalVC, animated: true); - }; - - delay += 1; - - DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay){ - let listPresentedVC = Helpers.getPresentedViewControllers(); - - // * 3 modals have been dismissed - // * dismiss the first modal - // * all the modals have been dismissed - listPresentedVC[0].dismiss(animated: true); - }; - }; - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its - // session is discarded. - // - // Release any resources associated with this scene that can be re-created - // the next time the scene connects. - // - // The scene may re-connect later, as its session was not necessarily - // discarded (see `application:didDiscardSceneSessions` instead). - }; - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active - // state. - // - // Use this method to restart any tasks that were paused (or not yet - // started) when the scene was inactive. - }; - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive - // state. - // - // This may occur due to temporary interruptions (ex. an incoming phone - // call). - }; - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - }; - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // - // Use this method to save data, release shared resources, and store enough - // scene-specific state information to restore the scene back to its - // current state. - }; -}; - diff --git a/ios/Extensions+Init/CGSize+Init.swift b/ios/Extensions+Init/CGSize+Init.swift deleted file mode 100644 index 8b5b33b2..00000000 --- a/ios/Extensions+Init/CGSize+Init.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// CGSize+Init.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/28/23. -// - -import UIKit - -public extension CGSize { - init?(fromDict dict: NSDictionary){ - guard let width = dict["width"] as? NSNumber, - let height = dict["height"] as? NSNumber - else { return nil }; - - self.init( - width: width.doubleValue, - height: height.doubleValue - ); - }; -}; diff --git a/ios/Extensions+Init/UIBlurEffect+Init.swift b/ios/Extensions+Init/UIBlurEffect+Init.swift deleted file mode 100644 index 54f78cb3..00000000 --- a/ios/Extensions+Init/UIBlurEffect+Init.swift +++ /dev/null @@ -1,132 +0,0 @@ -// -// UIBlurEffect+Init.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/23/23. -// - -import UIKit - -extension UIBlurEffect.Style: CaseIterable, CustomStringConvertible { - - /// The available `UIBlurEffect.Style` that can be used based on the current - /// platform version - /// - public static var availableStyles: [UIBlurEffect.Style] { - var styles: [UIBlurEffect.Style] = [ - .light, - .extraLight, - .dark, - ]; - - if #available(iOS 10.0, *) { - styles.append(contentsOf: [ - .regular, - .prominent, - ]); - }; - - if #available(iOS 13.0, *) { - styles.append(contentsOf: [ - .systemUltraThinMaterial, - .systemThinMaterial, - .systemMaterial, - .systemThickMaterial, - .systemChromeMaterial, - .systemMaterialLight, - .systemThinMaterialLight, - .systemUltraThinMaterialLight, - .systemThickMaterialLight, - .systemChromeMaterialLight, - .systemChromeMaterialDark, - .systemMaterialDark, - .systemThickMaterialDark, - .systemThinMaterialDark, - .systemUltraThinMaterialDark, - ]); - }; - - return styles; - }; - - // MARK: - CaseIterable - // -------------------- - - public static var allCases: [UIBlurEffect.Style] { - return self.availableStyles; - }; - - // MARK: - CustomStringConvertible - // ------------------------------- - - /// Note:2023-03-23-23-14-57 - /// - /// * `UIBlurEffect.Style` is an objc enum, and as such, it's actually raw - /// value internally is `Int`. - /// - /// * As such, `String(describing:)` a ` UIBlurEffect.Style` enum value - /// outputs an `Int`. - /// - /// * Because of this, we have to manually map out the enum values to a string - /// representation. - /// - public var description: String { - switch self { - // Adaptable Styles - case .systemUltraThinMaterial: return "systemUltraThinMaterial"; - case .systemThinMaterial : return "systemThinMaterial"; - case .systemMaterial : return "systemMaterial"; - case .systemThickMaterial : return "systemThickMaterial"; - case .systemChromeMaterial : return "systemChromeMaterial"; - - // Light Styles - case .systemMaterialLight : return "systemMaterialLight"; - case .systemThinMaterialLight : return "systemThinMaterialLight"; - case .systemUltraThinMaterialLight: return "systemUltraThinMaterialLight"; - case .systemThickMaterialLight : return "systemThickMaterialLight"; - case .systemChromeMaterialLight : return "systemChromeMaterialLight"; - - // Dark Styles - case .systemChromeMaterialDark : return "systemChromeMaterialDark"; - case .systemMaterialDark : return "systemMaterialDark"; - case .systemThickMaterialDark : return "systemThickMaterialDark"; - case .systemThinMaterialDark : return "systemThinMaterialDark"; - case .systemUltraThinMaterialDark: return "systemUltraThinMaterialDark"; - - // Additional Styles - case .regular : return "regular"; - case .prominent : return "prominent"; - case .light : return "light"; - case .extraLight: return "extraLight"; - case .dark : return "dark"; - - @unknown default: return ""; - }; - }; - - // MARK: - Init - // ------------ - - init?(string: String){ - - /// Note:2023-03-23-23-21-21 - /// - /// * Normally, a simple `switch` + `case "foo": self = foo` would suffice, - /// (especially since it's O(1) access), but the usable enum values depend - /// on the platform version. - /// - /// * The useable enums are stored in `availableStyles`, and is used to - /// communicate to JS the available enum values. - /// - /// * As such, we might as well re-use `availableStyles` for the parsing - /// logic (even if it's less efficient). - /// - let style = Self.allCases.first{ - $0.description == string - }; - - guard let style = style else { return nil }; - self = style; - }; -}; - diff --git a/ios/Extensions+Init/UIModalPresentationStyle+Init.swift b/ios/Extensions+Init/UIModalPresentationStyle+Init.swift deleted file mode 100644 index d27c1c81..00000000 --- a/ios/Extensions+Init/UIModalPresentationStyle+Init.swift +++ /dev/null @@ -1,81 +0,0 @@ -// -// UIModalPresentationStyle+Init.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/24/23. -// - -import UIKit - -extension UIModalPresentationStyle: CaseIterable, CustomStringConvertible { - - /// The available `UIModalPresentationStyle` that can be used based on the - /// current platform version - /// - public static var availableStyles: [UIModalPresentationStyle] { - var styles: [UIModalPresentationStyle] = [ - .fullScreen, - .pageSheet, - .formSheet, - .currentContext, - .custom, - .overFullScreen, - .overCurrentContext, - .popover, - ]; - - if #available(iOS 13.0, *) { - styles.append(.automatic); - }; - - #if !os(iOS) - styles.append(.blurOverFullScreen); - #endif - - return styles; - }; - - - public static var allCases: [UIModalPresentationStyle] { - return self.availableStyles; - }; - - // MARK: - CustomStringConvertible - // ------------------------------- - - /// See: Note:2023-03-23-23-14-57 - public var description: String { - switch self { - case .automatic : return "automatic"; - case .none : return "none"; - case .fullScreen : return "fullScreen"; - case .pageSheet : return "pageSheet"; - case .formSheet : return "formSheet"; - case .currentContext : return "currentContext"; - case .custom : return "custom"; - case .overFullScreen : return "overFullScreen"; - case .overCurrentContext: return "overCurrentContext"; - case .popover : return "popover"; - - #if !os(iOS) - case .blurOverFullScreen: return "blurOverFullScreen"; - #endif - - @unknown default: return ""; - }; - }; - - - // MARK: - Init - // ------------ - - init?(string: String){ - /// See: Note:2023-03-23-23-21-21 - let style = Self.allCases.first{ - $0.description == string - }; - - guard let style = style else { return nil }; - self = style; - }; -}; diff --git a/ios/Extensions+Init/UISheetPresentationController+Init.swift b/ios/Extensions+Init/UISheetPresentationController+Init.swift deleted file mode 100644 index a24a3383..00000000 --- a/ios/Extensions+Init/UISheetPresentationController+Init.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// UISheetPresentationController+Init.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/21/23. -// - -import UIKit - - -@available(iOS 15.0, *) -extension UISheetPresentationController.Detent { - - // 2, - // _identifier=com.apple.UIKit.medium - // > - // - // 1, - // _identifier=com.apple.UIKit.large - // > - - static func fromString( - _ string: String - ) -> UISheetPresentationController.Detent? { - - switch string { - case "medium": return .medium(); - case "large" : return .large(); - - default: return nil; - }; - }; -}; - -@available(iOS 15.0, *) -extension UISheetPresentationController.Detent.Identifier: - CustomStringConvertible { - - public var description: String { - switch self { - case .medium: return "medium"; - case .large : return "large"; - - default: return self.rawValue; - }; - }; - - init?(fromSystemIdentifierString string: String) { - switch string { - case "medium": self = .medium; - case "large" : self = .large; - - default: return nil; - }; - }; - - init(fromString string: String) { - if let systemIdentifier = Self.init(fromSystemIdentifierString: string) { - self = systemIdentifier; - - } else { - self.init(string); - }; - }; -}; diff --git a/ios/Extensions+RNIDictionaryRepresentable/CGPoint+RNIDictionaryRepresentable.swift b/ios/Extensions+RNIDictionaryRepresentable/CGPoint+RNIDictionaryRepresentable.swift deleted file mode 100644 index 9e2cf679..00000000 --- a/ios/Extensions+RNIDictionaryRepresentable/CGPoint+RNIDictionaryRepresentable.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CGPoint+RNIDictionaryRepresentable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/3/23. -// - -import Foundation - -extension CGPoint: RNIDictionaryRepresentable { - public var asDictionary: [String: Any] { - var dict: [String: Any] = [:]; - dict["x"] = self.x; - dict["y"] = self.y; - - return dict; - }; -}; diff --git a/ios/Extensions+RNIDictionaryRepresentable/CGSize+RNIDictionaryRepresentable.swift b/ios/Extensions+RNIDictionaryRepresentable/CGSize+RNIDictionaryRepresentable.swift deleted file mode 100644 index a84a7056..00000000 --- a/ios/Extensions+RNIDictionaryRepresentable/CGSize+RNIDictionaryRepresentable.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// CGSize+RNIDictionaryRepresentable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/3/23. -// - -import Foundation - -extension CGSize: RNIDictionaryRepresentable { - public var asDictionary: [String: Any] { - var dict: [String: Any] = [:]; - dict["width"] = self.width; - dict["height"] = self.height; - - return dict; - }; -}; diff --git a/ios/Extensions/CAAnimation+Block.swift b/ios/Extensions/CAAnimation+Block.swift deleted file mode 100644 index 49cfbf2a..00000000 --- a/ios/Extensions/CAAnimation+Block.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// CAAnimation+Block.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/1/23. -// - -import UIKit - - -public class CAAnimationBlockDelegate: NSObject, CAAnimationDelegate { - - public typealias StartBlock = (CAAnimation) -> (); - public typealias EndBlock = (CAAnimation, Bool) -> (); - - var onStartBlock: StartBlock? - var onEndBlock: EndBlock? - - public func animationDidStart(_ anim: CAAnimation) { - self.onStartBlock?(anim); - }; - - public func animationDidStop(_ anim: CAAnimation, finished flag: Bool) { - self.onEndBlock?(anim, flag); - }; -}; - -public extension CAAnimation { - - private var multicastDelegate: CAAnimationMulticastDelegate { - guard let delegate = self.delegate else { - return CAAnimationMulticastDelegate(); - }; - - guard let multicastDelegate = delegate as? CAAnimationMulticastDelegate else { - let multicastDelegate = CAAnimationMulticastDelegate(); - multicastDelegate.emitter.add(delegate); - - self.speed = 0; - - self.delegate = multicastDelegate; - return multicastDelegate; - }; - - return multicastDelegate; - }; - - func startBlock(_ callback: @escaping CAAnimationBlockDelegate.StartBlock) { - let blockDelegate = CAAnimationBlockDelegate(); - self.multicastDelegate.emitter.add(blockDelegate); - - blockDelegate.onStartBlock = callback; - }; - - func endBlock(_ callback: @escaping CAAnimationBlockDelegate.EndBlock) { - let blockDelegate = CAAnimationBlockDelegate(); - self.multicastDelegate.emitter.add(blockDelegate); - - blockDelegate.onEndBlock = callback; - }; -}; diff --git a/ios/Extensions/CAAnimation+Helpers.swift b/ios/Extensions/CAAnimation+Helpers.swift deleted file mode 100644 index cc91ee1d..00000000 --- a/ios/Extensions/CAAnimation+Helpers.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// CAAnimation+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/1/23. -// - -import UIKit - -public extension CAAnimation { - func waitUntiEnd(_ block: @escaping () -> Void){ - DispatchQueue.main.asyncAfter( - deadline: .now() + self.duration, - execute: block - ); - }; -}; diff --git a/ios/Extensions/CGRect+Helpers.swift b/ios/Extensions/CGRect+Helpers.swift deleted file mode 100644 index ed067e30..00000000 --- a/ios/Extensions/CGRect+Helpers.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// CGSize+Helpers.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/19/23. -// - -import UIKit - -extension CGRect { - mutating func setPoint( - minX: CGFloat? = nil, - minY: CGFloat? = nil - ){ - self.origin = CGPoint( - x: minX ?? self.minX, - y: minY ?? self.minY - ); - }; - - mutating func setPoint( - midX: CGFloat? = nil, - midY: CGFloat? = nil - ){ - let newX: CGFloat = { - guard let midX = midX else { return self.minX }; - return midX - (self.width / 2); - }(); - - let newY: CGFloat = { - guard let midY = midY else { return self.minY }; - return midY - (self.height / 2); - }(); - - self.origin = CGPoint(x: newX, y: newY); - }; - - mutating func setPoint( - maxX: CGFloat? = nil, - maxY: CGFloat? = nil - ){ - let newX: CGFloat = { - guard let maxX = maxX else { return self.minX }; - return maxX - self.width; - }(); - - let newY: CGFloat = { - guard let maxY = maxY else { return self.minY }; - return maxY - self.height; - }(); - - self.origin = CGPoint(x: newX, y: newY); - }; -}; diff --git a/ios/Extensions/Collection+Helpers.swift b/ios/Extensions/Collection+Helpers.swift deleted file mode 100644 index 177868c2..00000000 --- a/ios/Extensions/Collection+Helpers.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// Collection+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/10/23. -// - -import UIKit - -extension Collection { - - public var secondToLast: Element? { - self[safeIndex: self.index(self.indices.endIndex, offsetBy: -2)]; - }; - - public func isOutOfBounds(forIndex index: Index) -> Bool { - return index < self.indices.startIndex || index >= self.indices.endIndex; - }; - - /// Returns the element at the specified index if it is within bounds, - /// otherwise nil. - public subscript(safeIndex index: Index) -> Element? { - return self.isOutOfBounds(forIndex: index) ? nil : self[index]; - }; -}; - -extension MutableCollection { - subscript(safeIndex index: Index) -> Element? { - get { - return self.isOutOfBounds(forIndex: index) ? nil : self[index]; - } - - set { - guard let newValue = newValue, - !self.isOutOfBounds(forIndex: index) - else { return }; - - self[index] = newValue; - } - }; -}; diff --git a/ios/Extensions/Encodable+Helpers.swift b/ios/Extensions/Encodable+Helpers.swift deleted file mode 100644 index b4490c5a..00000000 --- a/ios/Extensions/Encodable+Helpers.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// Encodable+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/2/23. -// - -import UIKit - - -public extension Encodable { - - var asJsonData: Data? { - let encoder = JSONEncoder(); - encoder.outputFormatting = .prettyPrinted; - encoder.dateEncodingStrategy = .iso8601; - - return try? encoder.encode(self); - }; - - var asDictionary : [String: Any]? { - guard let jsonData = self.asJsonData, - let json = try? JSONSerialization.jsonObject( - with: jsonData, - options: [] - ) - else { return nil }; - - return json as? [String: Any]; - }; -}; diff --git a/ios/Extensions/FloatingPoint+Clamping.swift b/ios/Extensions/FloatingPoint+Clamping.swift deleted file mode 100644 index c685ba9b..00000000 --- a/ios/Extensions/FloatingPoint+Clamping.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// FloatingPoint+Helpers.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/19/23. -// - -import UIKit - -extension FloatingPoint { - public func clamped( - min lowerBound: Self? = nil, - max upperBound: Self? = nil - ) -> Self { - var clampedValue = self; - - if let upperBound = upperBound { - clampedValue = min(clampedValue, upperBound); - }; - - if let lowerBound = lowerBound { - clampedValue = max(clampedValue, lowerBound); - }; - - return clampedValue; - }; - - public func clamped(minMax: Self) -> Self { - self.clamped(min: -minMax, max: minMax); - }; -}; diff --git a/ios/Extensions/KeyWindow+Helpers.swift b/ios/Extensions/KeyWindow+Helpers.swift deleted file mode 100644 index 72933909..00000000 --- a/ios/Extensions/KeyWindow+Helpers.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// KeyWindow+Helpers.swift -// nativeUIModulesTest -// -// Created by Dominic Go on 6/26/20. -// - -import UIKit - -extension UIWindow { - - /// TODO:2023-03-24-01-14-26 - Remove/Replace `UIWindow.key` - static var key: UIWindow? { - if #available(iOS 13, *) { - return UIApplication.shared.windows.first { $0.isKeyWindow }; - - } else { - return UIApplication.shared.keyWindow; - }; - }; -}; diff --git a/ios/Extensions/RNIUtilities+Helpers.swift b/ios/Extensions/RNIUtilities+Helpers.swift deleted file mode 100644 index 1fb0f17a..00000000 --- a/ios/Extensions/RNIUtilities+Helpers.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// RNIUtilities+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -/// TODO:2023-03-20-21-29-36 - Move to `RNIUtilities` -extension RNIUtilities { - - static func swizzleExchangeMethods( - defaultSelector: Selector, - newSelector: Selector, - forClass class: AnyClass - ) { - let defaultInstace = - class_getInstanceMethod(`class`.self, defaultSelector); - - let newInstance = - class_getInstanceMethod(`class`.self, newSelector); - - guard let defaultInstance = defaultInstace, - let newInstance = newInstance - else { return }; - - method_exchangeImplementations(defaultInstance, newInstance); - }; - - static func getFirstMatchingView( - forNativeID targetNativeID: String, - startingView rootView: UIView - ) -> UIView? { - - for view in rootView.subviews { - if let viewNativeID = view.nativeID, - viewNativeID == targetNativeID { - - return view; - }; - - let matchingView = Self.getFirstMatchingView( - forNativeID: targetNativeID, - startingView: view - ); - - guard let matchingView = matchingView else { continue }; - return matchingView; - }; - - return nil; - }; - - public static func getWindows() -> [UIWindow] { - var windows: [UIWindow] = []; - - #if swift(>=5.5) - // Version: Swift 5.5 and newer - iOS 15 and newer - guard #available(iOS 13.0, *) else { return [] }; - - for scene in UIApplication.shared.connectedScenes { - guard let windowScene = scene as? UIWindowScene else { continue }; - windows += windowScene.windows; - }; - - #elseif swift(>=5) - // Version: Swift 5.4 and below - iOS 14.5 and below - // Note: 'windows' was deprecated in iOS 15.0+ - - // first element is the "key window" - if let keyWindow = - UIApplication.shared.windows.first(where: { $0.isKeyWindow }) { - - windows.append(keyWindow); - }; - - UIApplication.shared.windows.forEach { - // skip if already added - guard !windows.contains($0) else { return }; - windows.append($0); - }; - - #elseif swift(>=4) - // Version: Swift 4 and below - iOS 12.4 and below - // Note: `keyWindow` was deprecated in iOS 13.0+ - - // first element is the "key window" - if let keyWindow = UIApplication.shared.keyWindow { - windows.append(keyWindow); - }; - - UIApplication.shared.windows.forEach { - // skip if already added - guard !windows.contains($0) else { return }; - windows.append($0); - }; - - #else - // Version: Swift 3.1 and below - iOS 10.3 and below - // Note: 'sharedApplication' has been renamed to 'shared' - guard let appDelegate = - UIApplication.sharedApplication().delegate as? AppDelegate, - - let window = appDelegate.window - else { return [] }; - - return windows.append(window); - #endif - - return windows; - }; - - public static func getRootViewController( - for window: UIWindow? = nil - ) -> UIViewController? { - - if let window = window { - return window.rootViewController; - }; - - return Self.getWindows().first?.rootViewController; - }; - - public static func getPresentedViewControllers( - for window: UIWindow? = nil - ) -> [UIViewController] { - guard let rootVC = Self.getRootViewController(for: window) else { - #if DEBUG - print( - "Error - RNIModalManager.getTopMostPresentedVC" - + " - arg window isNil: '\(window == nil)'" - + " - Could not get root view controller" - ); - #endif - return []; - }; - - var presentedVCList: [UIViewController] = [rootVC]; - - // climb the vc hierarchy to find the topmost presented vc - while true { - guard let topVC = presentedVCList.last, - let presentedVC = topVC.presentedViewController - else { break }; - - presentedVCList.append(presentedVC); - }; - - return presentedVCList; - }; - - public static func getTopmostPresentedViewController( - for window: UIWindow? = nil - ) -> UIViewController? { - return Self.getPresentedViewControllers(for: window).last; - }; -}; diff --git a/ios/Extensions/UIGestureRecognizer+Helpers.swift b/ios/Extensions/UIGestureRecognizer+Helpers.swift deleted file mode 100644 index 2615c673..00000000 --- a/ios/Extensions/UIGestureRecognizer+Helpers.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// UIGestureRecognizer+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/22/23. -// - -import UIKit - -extension UIGestureRecognizer.State: CustomStringConvertible { - public var description: String { - switch self { - case .possible : return "possible"; - case .began : return "began"; - case .changed : return "changed"; - case .ended : return "ended"; - case .cancelled: return "cancelled"; - case .failed : return "failed"; - - @unknown default: return ""; - }; - }; -}; diff --git a/ios/Extensions/UIModalTransitionStyle+Helpers.swift b/ios/Extensions/UIModalTransitionStyle+Helpers.swift deleted file mode 100644 index 9799d40d..00000000 --- a/ios/Extensions/UIModalTransitionStyle+Helpers.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// UIModalTransitionStyle+Helpers.swift -// nativeUIModulesTest -// -// Created by Dominic Go on 6/29/20. -// - -import UIKit - -extension UIModalTransitionStyle: CaseIterable { - public static var allCases: [UIModalTransitionStyle] { - return [ - .coverVertical, - .crossDissolve, - .flipHorizontal, - .partialCurl, - ]; - }; - - public func stringDescription() -> String { - switch self { - case .coverVertical : return "coverVertical"; - case .flipHorizontal: return "flipHorizontal"; - case .crossDissolve : return "crossDissolve"; - case .partialCurl : return "partialCurl"; - - @unknown default: return ""; - }; - }; - - public static func fromString(_ string: String) -> UIModalTransitionStyle? { - return self.allCases.first{ $0.stringDescription() == string }; - }; -}; diff --git a/ios/Extensions/UIView+Helpers.swift b/ios/Extensions/UIView+Helpers.swift deleted file mode 100644 index 139cb5e2..00000000 --- a/ios/Extensions/UIView+Helpers.swift +++ /dev/null @@ -1,60 +0,0 @@ -import UIKit - -/// TODO:2023-03-24-01-14-26 - Move `UIView+Helpers` extension to -/// `react-native-utilities` -/// -extension UIView { - public var parentViewController: UIViewController? { - var parentResponder: UIResponder? = self; - - while parentResponder != nil { - parentResponder = parentResponder!.next - if let viewController = parentResponder as? UIViewController { - return viewController; - }; - }; - - return nil; - }; - - /// Remove all ancestor constraints that are affecting this view instance - /// - /// Note: 2023-03-24-00-39-51 - /// - /// * From: https://stackoverflow.com/questions/24418884/remove-all-constraints-affecting-a-uiview - /// - /// * After it's done executing, your view remains where it was because it - /// creates autoresizing constraints. - /// - /// * When I don't do this the view usually disappears. - /// - /// * Additionally, it doesn't just remove constraints from it's superview, - /// but in addition, it also climbs the view hierarchy, and removes all the - /// constraints affecting the current view instance that came from an - /// ancestor view. - /// - public func removeAllAncestorConstraints() { - var ancestorView = self.superview; - - // Climb the view hierarchy until there are no more parent views... - while ancestorView != nil { - for ancestorConstraint in ancestorView!.constraints { - - let constraintItems = [ - ancestorConstraint.firstItem, - ancestorConstraint.secondItem - ]; - - constraintItems.forEach { - guard ($0 as? UIView) === self else { return }; - ancestorView?.removeConstraint(ancestorConstraint); - }; - - ancestorView = ancestorView?.superview; - }; - }; - - self.removeConstraints(self.constraints); - self.translatesAutoresizingMaskIntoConstraints = true - }; -}; diff --git a/ios/Extensions/UIViewController+Swizzling.swift b/ios/Extensions/UIViewController+Swizzling.swift deleted file mode 100644 index 22457f33..00000000 --- a/ios/Extensions/UIViewController+Swizzling.swift +++ /dev/null @@ -1,235 +0,0 @@ -// -// RNIModalSwizzledViewController.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/11/23. -// - -import UIKit - -extension UIViewController { - - // MARK: - Static - Swizzling-Related - // ---------------------------------- - - static var isSwizzled = false; - - internal static func swizzleMethods() { - guard RNIModalFlagsShared.shouldSwizzleViewControllers else { return }; - - #if DEBUG - print( - "Log - UIViewController+Swizzling" - + " - UIViewController.swizzleMethods invoked" - ); - #endif - - RNIUtilities.swizzleExchangeMethods( - defaultSelector: #selector(Self.present(_:animated:completion:)), - newSelector: #selector(Self._swizzled_present(_:animated:completion:)), - forClass: UIViewController.self - ); - - RNIUtilities.swizzleExchangeMethods( - defaultSelector: #selector(Self.dismiss(animated:completion:)), - newSelector: #selector(Self._swizzled_dismiss(animated:completion:)), - forClass: UIViewController.self - ); - - self.isSwizzled.toggle(); - }; - - // MARK: - Helpers - Static - // ------------------------ - - @discardableResult - static private func registerIfNeeded( - forViewController vc: UIViewController - ) -> RNIModalViewControllerWrapper? { - - let shouldWrapVC = vc is RNIModalViewController - ? RNIModalFlagsShared.shouldWrapAllViewControllers - : true; - - /// If the arg `vc` is a `RNIModalViewController` instance, then we don't - /// need to wrap the current instance inside a - /// `RNIModalViewControllerWrapper` since it will already notify - /// `RNIModalManager` of modal-related events... - /// - guard shouldWrapVC else { return nil }; - - let modalWrapper: RNIModalViewControllerWrapper = { - /// A - Wrapper already exists for arg `vc`, so return the matching - /// wrapper instance. - /// - if let modalWrapper = RNIModalViewControllerWrapperRegistry.get( - forViewController: vc - ) { - return modalWrapper; - }; - - /// B - Wrapper does not exists for arg `vc`, so create a new wrapper - /// instance. - /// - let newModalWrapper = RNIModalViewControllerWrapper(viewController: vc); - - RNIModalViewControllerWrapperRegistry.set( - forViewController: vc, - newModalWrapper - ); - return newModalWrapper; - }(); - - return modalWrapper; - }; - - // MARK: - Helpers - Computed Properties - // ------------------------------------- - - /// Get the associated `RNIModalViewControllerWrapper` instance for the - /// current view controller - /// - var modalWrapper: RNIModalViewControllerWrapper? { - RNIModalViewControllerWrapperRegistry.get(forViewController: self); - }; - - // MARK: - Helpers - Functions - // --------------------------- - - private func getPresentedModalToNotify( - _ presentedVC: UIViewController? = nil - ) -> (any RNIModal)? { - - let presentedModal = RNIModalUtilities.getPresentedModal( - forPresentingViewController: self, - presentedViewController: presentedVC - ); - - return RNIModalFlagsShared.shouldSwizzledViewControllerNotifyAll - ? presentedModal - : presentedModal as? RNIModalViewControllerWrapper; - }; - - private func registerOrInitialize( - _ viewControllerToPresent: UIViewController - ){ - let presentingWrapper = Self.registerIfNeeded(forViewController: self); - - presentingWrapper?.modalViewController = viewControllerToPresent; - presentingWrapper?.presentingViewController = self; - - let presentedWrapper = - Self.registerIfNeeded(forViewController: viewControllerToPresent); - - presentedWrapper?.presentingViewController = self; - }; - - - private func notifyOnModalWillDismiss() -> (() -> Void)? { - guard let presentedModal = self.getPresentedModalToNotify() - else { return nil }; - - presentedModal.notifyWillDismiss(); - - return { - if presentedModal.computedIsModalInFocus { - presentedModal.notifyDidPresent(); - - } else { - presentedModal.notifyDidDismiss(); - }; - }; - }; - - // MARK: - Swizzled Functions - // -------------------------- - - @objc fileprivate func _swizzled_present( - _ viewControllerToPresent: UIViewController, - animated flag: Bool, - completion: (() -> Void)? = nil - ) { - #if DEBUG - print( - "Log - UIViewController+Swizzling" - + " - UIViewController._swizzled_present invoked" - + " - arg viewControllerToPresent: \(viewControllerToPresent)" - + " - arg animated: \(flag)" - ); - #endif - - self.registerOrInitialize(viewControllerToPresent); - - let presentedModal = self.getPresentedModalToNotify(viewControllerToPresent); - presentedModal?.notifyWillPresent(); - - // call original impl. - self._swizzled_present(viewControllerToPresent, animated: flag) { - #if DEBUG - print( - "Log - UIViewController+Swizzling" - + " - UIViewController._swizzled_present" - + " - completion invoked" - ); - #endif - - presentedModal?.notifyDidPresent(); - completion?(); - }; - }; - - @objc fileprivate func _swizzled_dismiss( - animated flag: Bool, - completion: (() -> Void)? = nil - ) { - #if DEBUG - print( - "Log - UIViewController+Swizzling" - + " - UIViewController._swizzled_dismiss invoked" - + " - arg animated: \(flag)" - + " - self.presentedViewController: \(String(describing: presentedViewController))" - ); - #endif - - let notifyOnModalDidDismiss = self.notifyOnModalWillDismiss(); - - // call original impl. - self._swizzled_dismiss(animated: flag) { - #if DEBUG - print( - "Log - UIViewController+Swizzling" - + " - UIViewController._swizzled_dismiss" - + " - completion invoked" - ); - #endif - - notifyOnModalDidDismiss?(); - completion?(); - }; - }; -}; - -// MARK: - Extensions - Helpers -// ---------------------------- - -fileprivate extension RNIModalPresentationNotifying where Self: RNIModal { - func notifyWillPresent() { - guard let delegate = modalPresentationNotificationDelegate else { return }; - delegate.notifyOnModalWillShow(sender: self); - }; - - func notifyDidPresent(){ - guard let delegate = modalPresentationNotificationDelegate else { return }; - delegate.notifyOnModalDidShow(sender: self); - }; - - func notifyWillDismiss(){ - guard let delegate = modalPresentationNotificationDelegate else { return }; - delegate.notifyOnModalWillHide(sender: self); - }; - - func notifyDidDismiss(){ - guard let delegate = modalPresentationNotificationDelegate else { return }; - delegate.notifyOnModalDidHide(sender: self); - }; -}; diff --git a/ios/Extensions/UIWindow+Helpers.swift b/ios/Extensions/UIWindow+Helpers.swift deleted file mode 100644 index fa261a7f..00000000 --- a/ios/Extensions/UIWindow+Helpers.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// UIWindow+WindowMetadata.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/30/23. -// - -import UIKit - -extension UIWindow: RNIObjectMetadata, RNIIdentifiable { - public static var synthesizedIdPrefix = "window-id-"; -}; diff --git a/ios/Helpers+Utilities/CGSize+Helpers.swift b/ios/Helpers+Utilities/CGSize+Helpers.swift deleted file mode 100644 index 389a0c4d..00000000 --- a/ios/Helpers+Utilities/CGSize+Helpers.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// CGSize+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/29/23. -// - -import UIKit - -public extension CGSize { - var isZero: Bool { - self == .zero || (self.width == 0 && self.height == 0); - }; -}; diff --git a/ios/Helpers+Utilities/WeakElement.swift b/ios/Helpers+Utilities/WeakElement.swift deleted file mode 100644 index d480d4f6..00000000 --- a/ios/Helpers+Utilities/WeakElement.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// WeakElement.swift -// RNSwiftReviewer -// -// Created by Dominic Go on 8/15/20. -// - -import UIKit - - -public class WeakElement { - private(set) weak var value: Element?; -}; diff --git a/ios/IosModal-Bridging-Header.h b/ios/IosModal-Bridging-Header.h deleted file mode 100644 index 17321af1..00000000 --- a/ios/IosModal-Bridging-Header.h +++ /dev/null @@ -1,35 +0,0 @@ - - -// #if DEBUG -// #import -// #endif -// -// #import -#import "React/RCTEventEmitter.h" -// -// #import -// #import -// -// #import -// #import - - -/// `TODO:2023-03-28-18-58-47` - Remove `/Temp` file and update usage. - -#if DEBUG -#import -#endif - -#import -#import - -#import -#import - -#import -#import - -#import -#import -#import - diff --git a/ios/IosModal.xcodeproj/project.pbxproj b/ios/IosModal.xcodeproj/project.pbxproj deleted file mode 100644 index 8205f86f..00000000 --- a/ios/IosModal.xcodeproj/project.pbxproj +++ /dev/null @@ -1,393 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 889C760829151A4D00EA68E6 /* WeakElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F129151A4D00EA68E6 /* WeakElement.swift */; }; - 889C760929151A4D00EA68E6 /* MulticastDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F229151A4D00EA68E6 /* MulticastDelegate.swift */; }; - 889C760A29151A4D00EA68E6 /* UIModalTransitionStyle+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F529151A4D00EA68E6 /* UIModalTransitionStyle+Helpers.swift */; }; - 889C760B29151A4D00EA68E6 /* UIBlurEffect+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F629151A4D00EA68E6 /* UIBlurEffect+Helpers.swift */; }; - 889C760C29151A4D00EA68E6 /* UIView+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F729151A4D00EA68E6 /* UIView+Helpers.swift */; }; - 889C760D29151A4D00EA68E6 /* UIModalPresentationStyle+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F829151A4D00EA68E6 /* UIModalPresentationStyle+Helpers.swift */; }; - 889C760E29151A4D00EA68E6 /* KeyWindow+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75F929151A4D00EA68E6 /* KeyWindow+Helpers.swift */; }; - 889C760F29151A4D00EA68E6 /* RCTSwiftLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 889C75FC29151A4D00EA68E6 /* RCTSwiftLog.m */; }; - 889C761029151A4D00EA68E6 /* RCTLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C75FD29151A4D00EA68E6 /* RCTLog.swift */; }; - 889C761129151A4D00EA68E6 /* RCTModalViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C760029151A4D00EA68E6 /* RCTModalViewModule.swift */; }; - 889C761229151A4D00EA68E6 /* RCTModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C760129151A4D00EA68E6 /* RCTModalView.swift */; }; - 889C761329151A4D00EA68E6 /* RCTModalViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C760229151A4D00EA68E6 /* RCTModalViewDelegate.swift */; }; - 889C761429151A4D00EA68E6 /* RCTModalViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C760329151A4D00EA68E6 /* RCTModalViewManager.swift */; }; - 889C761529151A4D00EA68E6 /* RCTModalViewModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 889C760429151A4D00EA68E6 /* RCTModalViewModule.m */; }; - 889C761629151A4D00EA68E6 /* RCTModalViewError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C760529151A4D00EA68E6 /* RCTModalViewError.swift */; }; - 889C761729151A4D00EA68E6 /* RCTModalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889C760629151A4D00EA68E6 /* RCTModalViewController.swift */; }; - 889C761829151A4D00EA68E6 /* RCTModalViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 889C760729151A4D00EA68E6 /* RCTModalViewManager.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 58B511D91A9E6C8500147676 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 134814201AA4EA6300B7C361 /* libIosModal.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libIosModal.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 889C75F129151A4D00EA68E6 /* WeakElement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakElement.swift; sourceTree = ""; }; - 889C75F229151A4D00EA68E6 /* MulticastDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MulticastDelegate.swift; sourceTree = ""; }; - 889C75F329151A4D00EA68E6 /* IosModal-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IosModal-Bridging-Header.h"; sourceTree = ""; }; - 889C75F529151A4D00EA68E6 /* UIModalTransitionStyle+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIModalTransitionStyle+Helpers.swift"; sourceTree = ""; }; - 889C75F629151A4D00EA68E6 /* UIBlurEffect+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBlurEffect+Helpers.swift"; sourceTree = ""; }; - 889C75F729151A4D00EA68E6 /* UIView+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Helpers.swift"; sourceTree = ""; }; - 889C75F829151A4D00EA68E6 /* UIModalPresentationStyle+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIModalPresentationStyle+Helpers.swift"; sourceTree = ""; }; - 889C75F929151A4D00EA68E6 /* KeyWindow+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "KeyWindow+Helpers.swift"; sourceTree = ""; }; - 889C75FC29151A4D00EA68E6 /* RCTSwiftLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTSwiftLog.m; sourceTree = ""; }; - 889C75FD29151A4D00EA68E6 /* RCTLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTLog.swift; sourceTree = ""; }; - 889C75FE29151A4D00EA68E6 /* RCTSwiftLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTSwiftLog.h; sourceTree = ""; }; - 889C760029151A4D00EA68E6 /* RCTModalViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTModalViewModule.swift; sourceTree = ""; }; - 889C760129151A4D00EA68E6 /* RCTModalView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTModalView.swift; sourceTree = ""; }; - 889C760229151A4D00EA68E6 /* RCTModalViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTModalViewDelegate.swift; sourceTree = ""; }; - 889C760329151A4D00EA68E6 /* RCTModalViewManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTModalViewManager.swift; sourceTree = ""; }; - 889C760429151A4D00EA68E6 /* RCTModalViewModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModalViewModule.m; sourceTree = ""; }; - 889C760529151A4D00EA68E6 /* RCTModalViewError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTModalViewError.swift; sourceTree = ""; }; - 889C760629151A4D00EA68E6 /* RCTModalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RCTModalViewController.swift; sourceTree = ""; }; - 889C760729151A4D00EA68E6 /* RCTModalViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTModalViewManager.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 58B511D81A9E6C8500147676 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 134814211AA4EA7D00B7C361 /* Products */ = { - isa = PBXGroup; - children = ( - 134814201AA4EA6300B7C361 /* libIosModal.a */, - ); - name = Products; - sourceTree = ""; - }; - 58B511D21A9E6C8500147676 = { - isa = PBXGroup; - children = ( - 889C75EF29151A4D00EA68E6 /* src_library */, - 134814211AA4EA7D00B7C361 /* Products */, - ); - sourceTree = ""; - }; - 889C75EF29151A4D00EA68E6 /* src_library */ = { - isa = PBXGroup; - children = ( - 889C75F029151A4D00EA68E6 /* Helpers+Utilities */, - 889C75F329151A4D00EA68E6 /* IosModal-Bridging-Header.h */, - 889C75F429151A4D00EA68E6 /* Extensions */, - 889C75FA29151A4D00EA68E6 /* React Native */, - ); - path = src_library; - sourceTree = ""; - }; - 889C75F029151A4D00EA68E6 /* Helpers+Utilities */ = { - isa = PBXGroup; - children = ( - 889C75F129151A4D00EA68E6 /* WeakElement.swift */, - 889C75F229151A4D00EA68E6 /* MulticastDelegate.swift */, - ); - path = "Helpers+Utilities"; - sourceTree = ""; - }; - 889C75F429151A4D00EA68E6 /* Extensions */ = { - isa = PBXGroup; - children = ( - 889C75F529151A4D00EA68E6 /* UIModalTransitionStyle+Helpers.swift */, - 889C75F629151A4D00EA68E6 /* UIBlurEffect+Helpers.swift */, - 889C75F729151A4D00EA68E6 /* UIView+Helpers.swift */, - 889C75F829151A4D00EA68E6 /* UIModalPresentationStyle+Helpers.swift */, - 889C75F929151A4D00EA68E6 /* KeyWindow+Helpers.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 889C75FA29151A4D00EA68E6 /* React Native */ = { - isa = PBXGroup; - children = ( - 889C75FB29151A4D00EA68E6 /* RCTSwiftLog */, - 889C75FF29151A4D00EA68E6 /* RCTModalView */, - ); - path = "React Native"; - sourceTree = ""; - }; - 889C75FB29151A4D00EA68E6 /* RCTSwiftLog */ = { - isa = PBXGroup; - children = ( - 889C75FC29151A4D00EA68E6 /* RCTSwiftLog.m */, - 889C75FD29151A4D00EA68E6 /* RCTLog.swift */, - 889C75FE29151A4D00EA68E6 /* RCTSwiftLog.h */, - ); - path = RCTSwiftLog; - sourceTree = ""; - }; - 889C75FF29151A4D00EA68E6 /* RCTModalView */ = { - isa = PBXGroup; - children = ( - 889C760029151A4D00EA68E6 /* RCTModalViewModule.swift */, - 889C760129151A4D00EA68E6 /* RCTModalView.swift */, - 889C760229151A4D00EA68E6 /* RCTModalViewDelegate.swift */, - 889C760329151A4D00EA68E6 /* RCTModalViewManager.swift */, - 889C760429151A4D00EA68E6 /* RCTModalViewModule.m */, - 889C760529151A4D00EA68E6 /* RCTModalViewError.swift */, - 889C760629151A4D00EA68E6 /* RCTModalViewController.swift */, - 889C760729151A4D00EA68E6 /* RCTModalViewManager.m */, - ); - path = RCTModalView; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 58B511DA1A9E6C8500147676 /* IosModal */ = { - isa = PBXNativeTarget; - buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "IosModal" */; - buildPhases = ( - 58B511D71A9E6C8500147676 /* Sources */, - 58B511D81A9E6C8500147676 /* Frameworks */, - 58B511D91A9E6C8500147676 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = IosModal; - productName = RCTDataManager; - productReference = 134814201AA4EA6300B7C361 /* libIosModal.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 58B511D31A9E6C8500147676 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0920; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 58B511DA1A9E6C8500147676 = { - CreatedOnToolsVersion = 6.1.1; - }; - }; - }; - buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "IosModal" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - en, - ); - mainGroup = 58B511D21A9E6C8500147676; - productRefGroup = 58B511D21A9E6C8500147676; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 58B511DA1A9E6C8500147676 /* IosModal */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 58B511D71A9E6C8500147676 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 889C760F29151A4D00EA68E6 /* RCTSwiftLog.m in Sources */, - 889C761429151A4D00EA68E6 /* RCTModalViewManager.swift in Sources */, - 889C760C29151A4D00EA68E6 /* UIView+Helpers.swift in Sources */, - 889C761829151A4D00EA68E6 /* RCTModalViewManager.m in Sources */, - 889C761229151A4D00EA68E6 /* RCTModalView.swift in Sources */, - 889C761129151A4D00EA68E6 /* RCTModalViewModule.swift in Sources */, - 889C760D29151A4D00EA68E6 /* UIModalPresentationStyle+Helpers.swift in Sources */, - 889C760A29151A4D00EA68E6 /* UIModalTransitionStyle+Helpers.swift in Sources */, - 889C761029151A4D00EA68E6 /* RCTLog.swift in Sources */, - 889C760E29151A4D00EA68E6 /* KeyWindow+Helpers.swift in Sources */, - 889C760829151A4D00EA68E6 /* WeakElement.swift in Sources */, - 889C761329151A4D00EA68E6 /* RCTModalViewDelegate.swift in Sources */, - 889C760929151A4D00EA68E6 /* MulticastDelegate.swift in Sources */, - 889C761729151A4D00EA68E6 /* RCTModalViewController.swift in Sources */, - 889C761629151A4D00EA68E6 /* RCTModalViewError.swift in Sources */, - 889C761529151A4D00EA68E6 /* RCTModalViewModule.m in Sources */, - 889C760B29151A4D00EA68E6 /* UIBlurEffect+Helpers.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 58B511ED1A9E6C8500147676 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_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_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; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=*]" = arm64; - 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 = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 58B511EE1A9E6C8500147676 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_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_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; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=*]" = arm64; - 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 = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 58B511F01A9E6C8500147676 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../../React/**", - "$(SRCROOT)/../../react-native/React/**", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = IosModal; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "src_library/IosModal-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 58B511F11A9E6C8500147676 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../../React/**", - "$(SRCROOT)/../../react-native/React/**", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = IosModal; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "src_library/IosModal-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "IosModal" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 58B511ED1A9E6C8500147676 /* Debug */, - 58B511EE1A9E6C8500147676 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "IosModal" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 58B511F01A9E6C8500147676 /* Debug */, - 58B511F11A9E6C8500147676 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 58B511D31A9E6C8500147676 /* Project object */; -} diff --git a/ios/React Native/RNIAnimator/RNIAnimator.swift b/ios/React Native/RNIAnimator/RNIAnimator.swift deleted file mode 100644 index 599b8a93..00000000 --- a/ios/React Native/RNIAnimator/RNIAnimator.swift +++ /dev/null @@ -1,243 +0,0 @@ -// -// RNIAnimator.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/19/23. -// - -import UIKit - - -public class RNIAnimator { - - // MARK: - Embedded Types - // ---------------------- - - typealias EasingFunction = (_ timing: CGFloat) -> CGFloat; - - public class EasingFunctions { - - static func lerp( - valueStart: CGFloat, - valueEnd: CGFloat, - percent: CGFloat - ) -> CGFloat { - let valueDelta = valueEnd - valueStart; - let valueProgress = valueDelta * percent - return valueStart + valueProgress; - }; - - static func linear(_ time: CGFloat) -> CGFloat { - return time; - }; - - static func easeIn(_ time: CGFloat) -> CGFloat { - return time * time; - }; - }; - - public enum Easing: String { - case linear; - case easeIn; - - var easingFunction: EasingFunction { - switch self { - case .linear: return EasingFunctions.linear; - case .easeIn: return EasingFunctions.easeIn; - }; - }; - }; - - // MARK: - Properties - // ------------------ - - private var displayLink: CADisplayLink?; - - public var easing: Easing = .linear; - - private(set) public var timeStart: CFTimeInterval = 0; - private(set) public var timeEnd: CFTimeInterval = 0; - - private(set) public var timeCurrent: CFTimeInterval = 0; - private(set) public var timeElapsed: CFTimeInterval = 0; - - private(set) public var progress: CGFloat = 0; - private(set) public var duration: CFTimeInterval; - - public let animatedValuesSize: Int; - - private(set) public var animatedValuesStart: [CGFloat]; - private(set) public var animatedValuesEnd: [CGFloat]; - - private(set) public var animatedValuesPrev: [CGFloat] = []; - private(set) public var animatedValuesCurrent: [CGFloat] = []; - - public var allowAnimatedValueToRegress = true; - - // MARK: - Properties - Stored Functions - // ------------------------------------- - - private var applyPendingUpdates: (() -> Void)? = nil; - - public var onAnimatedValueChange: ((_ animatedValues: [CGFloat]) -> Void)?; - public var onAnimationCompletion: (() -> Void)?; - - // MARK: - Properties - Computed - // ----------------------------- - - public var isFinished: Bool { - self.animatedValuesCurrent.enumerated().allSatisfy { - self.animatedValuesStart[$0.offset] < self.animatedValuesEnd[$0.offset] - ? $0.element >= self.animatedValuesEnd[$0.offset] - : $0.element <= self.animatedValuesEnd[$0.offset] - }; - }; - - public var isAnimating: Bool { - self.displayLink != nil - }; - - // MARK: - Init - // ------------ - - public init?( - durationSeconds: CFTimeInterval, - animatedValuesStart: [CGFloat], - animatedValuesEnd: [CGFloat], - onAnimatedValueChange: ((_ animatedValues: [CGFloat]) -> Void)? = nil, - onAnimationCompletion: (() -> Void)? = nil - ) { - guard animatedValuesStart.count == animatedValuesEnd.count else { - return nil; - }; - - self.duration = durationSeconds; - - self.animatedValuesStart = animatedValuesStart; - self.animatedValuesEnd = animatedValuesEnd; - - let arraySize = animatedValuesStart.count; - self.animatedValuesSize = arraySize; - - self.animatedValuesCurrent = [CGFloat](repeating: 0, count: arraySize); - self.animatedValuesPrev = [CGFloat](repeating: 0, count: arraySize); - - self.onAnimatedValueChange = onAnimatedValueChange; - self.onAnimationCompletion = onAnimationCompletion; - }; - - // MARK: - Functions - // ----------------- - - @objc private func onDisplayLinkDidFire(_ displayLink: CADisplayLink){ - - self.timeCurrent = CACurrentMediaTime(); - self.timeElapsed = self.timeCurrent - self.timeStart; - - self.progress = self.timeElapsed / self.duration; - - var didChange = false; - - for index in 0 ..< self.animatedValuesSize { - - let animatedValueNextRaw = Self.EasingFunctions.lerp( - valueStart: self.animatedValuesStart[index], - valueEnd: self.animatedValuesEnd[index], - percent: self.easing.easingFunction(self.progress) - ); - - let animatedValuesStart = self.animatedValuesStart[index]; - let animatedValueEnd = self.animatedValuesEnd[index]; - - // clamp - let animatedValueNext: CGFloat = { - // E.g. 50 -> 100 - if animatedValuesStart <= animatedValueEnd { - return animatedValueNextRaw > animatedValueEnd - ? animatedValueEnd - : animatedValueNextRaw; - - } else { - // E.g. 100 -> 50 - return animatedValueNextRaw < animatedValueEnd - ? animatedValueEnd - : animatedValueNextRaw; - }; - }(); - - let animatedValuePrev = self.animatedValuesPrev[index]; - let animatedValueCurrent = self.animatedValuesCurrent[index]; - - let shouldUpdate = self.allowAnimatedValueToRegress - ? true - : animatedValueNext > animatedValueCurrent; - - guard shouldUpdate else { continue }; - - self.animatedValuesPrev[index] = self.animatedValuesCurrent[index]; - self.animatedValuesCurrent[index] = animatedValueNext; - - if !didChange { - didChange = animatedValuePrev != animatedValueNext; - }; - }; - - if didChange { - self.onAnimatedValueChange?(self.animatedValuesCurrent); - }; - - if self.isFinished { - self.stop(); - self.onAnimationCompletion?(); - }; - - self.applyPendingUpdates?(); - }; - - // MARK: - Functions - Public - // -------------------------- - - public func start(){ - self.stop(); - - self.timeCurrent = CACurrentMediaTime(); - self.timeStart = self.timeCurrent; - self.timeEnd = self.timeCurrent + self.duration; - - let displayLink = CADisplayLink( - target: self, - selector: #selector(Self.onDisplayLinkDidFire(_:)) - ); - - displayLink.add(to: .current, forMode:.default); - self.displayLink = displayLink; - }; - - public func stop() { - self.displayLink?.invalidate(); - self.displayLink = nil; - }; - - public func update( - animatedValuesEnd: [CGFloat], - duration: CGFloat? = nil - ){ - self.applyPendingUpdates = { [unowned self] in - self.animatedValuesStart = self.animatedValuesCurrent; - self.animatedValuesEnd = animatedValuesEnd; - - self.timeCurrent = CACurrentMediaTime(); - - if let newDuration = duration { - self.duration = newDuration; - - } else { - let timeRemaining = self.duration - self.timeElapsed; - self.duration = timeRemaining; - }; - - self.timeStart = self.timeCurrent; - self.timeEnd = self.timeCurrent + self.duration; - }; - }; -}; diff --git a/ios/React Native/RNIAnimator/RNIAnimatorSize.swift b/ios/React Native/RNIAnimator/RNIAnimatorSize.swift deleted file mode 100644 index bcef9d9c..00000000 --- a/ios/React Native/RNIAnimator/RNIAnimatorSize.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// RNIAnimatorSize.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/19/23. -// - -import UIKit - -fileprivate extension CGSize { - init(array: [CGFloat]) { - self = CGSize(width: array[0], height: array[1]); - }; - - var array: [CGFloat] { - return [ - self.width, - self.height - ]; - }; -}; - -public class RNIAnimatorSize: RNIAnimator { - - public init?( - durationSeconds: CFTimeInterval, - sizeStart: CGSize, - sizeEnd: CGSize, - onSizeDidChange: ((_ newSize: CGSize) -> Void)? = nil, - onAnimationCompletion: (() -> Void)? = nil - ) { - super.init( - durationSeconds: durationSeconds, - animatedValuesStart: sizeStart.array, - animatedValuesEnd: sizeEnd.array - ) { - onSizeDidChange?( - CGSize(array: $0) - ); - } onAnimationCompletion: { - onAnimationCompletion?(); - }; - }; - - public func update( - sizeEnd: CGSize, - duration: CGFloat? = nil - ){ - super.update( - animatedValuesEnd: sizeEnd.array, - duration: duration - ); - }; -}; diff --git a/ios/React Native/RNIComputable/RNIComputableOffset.swift b/ios/React Native/RNIComputable/RNIComputableOffset.swift deleted file mode 100644 index 04ab8f72..00000000 --- a/ios/React Native/RNIComputable/RNIComputableOffset.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// RNIComputableOffset.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/28/23. -// - -import UIKit - -public struct RNIComputableOffset { - - public enum OffsetOperation: String { - case multiply, divide, add, subtract; - - func compute(a: Double, b: Double) -> Double { - switch self { - case .add: - return a + b; - - case .divide: - return a / b; - - case .multiply: - return a * b; - - case .subtract: - return a - b; - }; - }; - }; - - public var offset: Double; - public var offsetOperation: OffsetOperation; - - public func compute( - withValue value: Double, - isValueOnRHS: Bool = false - ) -> Double { - if isValueOnRHS { - return self.offsetOperation.compute(a: value, b: self.offset); - }; - - return self.offsetOperation.compute(a: self.offset, b: value); - }; -}; - -extension RNIComputableOffset { - - public init?(fromDict dict: NSDictionary){ - guard let offset = dict["offset"] as? NSNumber else { return nil }; - self.offset = offset.doubleValue; - - self.offsetOperation = { - guard let offsetOperationRaw = dict["offsetOperation"] as? String, - let offsetOperation = OffsetOperation(rawValue: offsetOperationRaw) - else { return .add }; - - return offsetOperation; - }(); - }; -}; diff --git a/ios/React Native/RNIComputable/RNIComputableSize.swift b/ios/React Native/RNIComputable/RNIComputableSize.swift deleted file mode 100644 index 5209adcf..00000000 --- a/ios/React Native/RNIComputable/RNIComputableSize.swift +++ /dev/null @@ -1,148 +0,0 @@ -// -// RNIComputableValue.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/26/23. -// - -import UIKit - -public struct RNIComputableSize { - - // MARK: - Properties - // ------------------ - - public let mode: RNIComputableSizeMode; - - public let offsetWidth: RNIComputableOffset?; - public let offsetHeight: RNIComputableOffset?; - - public let minWidth: CGFloat?; - public let minHeight: CGFloat?; - - public let maxWidth: CGFloat?; - public let maxHeight: CGFloat?; - - // MARK: - Internal Functions - // -------------------------- - - func sizeWithOffsets(forSize size: CGSize) -> CGSize { - let offsetWidth = - self.offsetWidth?.compute(withValue: size.width); - - let offsetHeight = - self.offsetHeight?.compute(withValue: size.height); - - return CGSize( - width: offsetWidth ?? size.width, - height: offsetHeight ?? size.height - ); - }; - - func sizeWithClamp(forSize size: CGSize) -> CGSize { - return CGSize( - width: size.width.clamped( - min: self.minWidth, - max: self.maxWidth - ), - height: size.height.clamped( - min: self.minHeight, - max: self.maxHeight - ) - ); - }; - - // MARK: - Functions - // ----------------- - - public func computeRaw( - withTargetSize targetSize: CGSize, - currentSize: CGSize - ) -> CGSize { - switch self.mode { - case .current: - return currentSize; - - case .stretch: - return targetSize; - - case let .constant(constantWidth, constantHeight): - return CGSize(width: constantWidth, height: constantHeight); - - case let .percent(percentWidth, percentHeight): - return CGSize( - width: percentWidth * targetSize.width, - height: percentHeight * targetSize.height - ); - }; - }; - - public func compute( - withTargetSize targetSize: CGSize, - currentSize: CGSize - ) -> CGSize { - let rawSize = self.computeRaw( - withTargetSize: targetSize, - currentSize: currentSize - ); - - let clampedSize = self.sizeWithClamp(forSize: rawSize); - return self.sizeWithOffsets(forSize: clampedSize); - }; -}; - -extension RNIComputableSize { - public init?(fromDict dict: NSDictionary){ - guard let mode = RNIComputableSizeMode(fromDict: dict) - else { return nil }; - - self.mode = mode; - - self.offsetWidth = { - guard let offsetRaw = dict["offsetWidth"] as? NSDictionary, - let offset = RNIComputableOffset(fromDict: offsetRaw) - else { return nil }; - - return offset; - }(); - - self.offsetHeight = { - guard let offsetRaw = dict["offsetHeight"] as? NSDictionary, - let offset = RNIComputableOffset(fromDict: offsetRaw) - else { return nil }; - - return offset; - }(); - - self.minWidth = - Self.getDoubleValue(forDict: dict, withKey: "minWidth"); - - self.minHeight = - Self.getDoubleValue(forDict: dict, withKey: "minHeight"); - - self.maxWidth = - Self.getDoubleValue(forDict: dict, withKey: "maxWidth"); - - self.maxHeight = - Self.getDoubleValue(forDict: dict, withKey: "maxHeight"); - }; - - public init(mode: RNIComputableSizeMode){ - self.mode = mode; - - self.offsetWidth = nil; - self.offsetHeight = nil; - self.minWidth = nil; - self.minHeight = nil; - self.maxWidth = nil; - self.maxHeight = nil; - }; - - static private func getDoubleValue( - forDict dict: NSDictionary, - withKey key: String - ) -> CGFloat? { - guard let number = dict[key] as? NSNumber else { return nil }; - return number.doubleValue; - }; -}; diff --git a/ios/React Native/RNIComputable/RNIComputableSizeMode.swift b/ios/React Native/RNIComputable/RNIComputableSizeMode.swift deleted file mode 100644 index d2c751fb..00000000 --- a/ios/React Native/RNIComputable/RNIComputableSizeMode.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// RNIComputableSizeOffset.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/28/23. -// - -import UIKit - -public enum RNIComputableSizeMode { - case current; - case stretch; - - case constant( - constantWidth: Double, - constantHeight: Double - ); - - case percent( - percentWidth: Double, - percentHeight: Double - ); -}; - -extension RNIComputableSizeMode { - public init?(fromDict dict: NSDictionary){ - guard let mode = dict["mode"] as? String else { return nil }; - - switch mode { - case "current": - self = .current; - - case "stretch": - self = .stretch; - - case "constant": - guard let width = dict["constantWidth"] as? NSNumber, - let height = dict["constantHeight"] as? NSNumber - else { return nil }; - - self = .constant( - constantWidth: width.doubleValue, - constantHeight: height.doubleValue - ); - - case "percent": - guard let width = dict["percentWidth"] as? NSNumber, - let height = dict["percentHeight"] as? NSNumber - else { return nil }; - - self = .percent( - percentWidth: width.doubleValue, - percentHeight: height.doubleValue - ); - - default: - return nil; - }; - }; -}; diff --git a/ios/React Native/RNIComputable/RNIComputableValue.swift b/ios/React Native/RNIComputable/RNIComputableValue.swift deleted file mode 100644 index 9672b19d..00000000 --- a/ios/React Native/RNIComputable/RNIComputableValue.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// RNIComputableValue.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/19/23. -// - -import UIKit - -public struct RNIComputableValue { - - // MARK: - Properties - // ------------------ - - public let mode: RNIComputableValueMode; - - public let offset: RNIComputableOffset?; - - public let minValue: CGFloat?; - public let maxValue: CGFloat?; - - - // MARK: - Internal Functions - // -------------------------- - - func valueWithOffsets(forValue value: CGFloat) -> CGFloat { - return self.offset?.compute(withValue: value) ?? value; - }; - - func valueWithClamp(forValue value: CGFloat) -> CGFloat { - return value.clamped( - min: self.minValue, - max: self.maxValue - ); - }; - - // MARK: - Functions - // ----------------- - - public func computeRaw( - withTargetValue targetValue: CGFloat, - currentValue: CGFloat - ) -> CGFloat { - switch self.mode { - case .current: - return currentValue; - - case .stretch: - return targetValue; - - case let .constant(constantValue): - return constantValue; - - case let .percent(percentValue): - return percentValue * targetValue; - }; - }; - - public func compute( - withTargetValue targetValue: CGFloat, - currentValue: CGFloat - ) -> CGFloat { - let rawValue = self.computeRaw( - withTargetValue: targetValue, - currentValue: currentValue - ); - - let clampedValue = self.valueWithClamp(forValue: rawValue); - return self.valueWithOffsets(forValue: clampedValue); - }; - - public init( - mode: RNIComputableValueMode, - offset: RNIComputableOffset? = nil, - minValue: CGFloat? = nil, - maxValue: CGFloat? = nil - ) { - self.mode = mode; - self.offset = offset; - self.minValue = minValue; - self.maxValue = maxValue; - }; -}; - -extension RNIComputableValue { - public init?(fromDict dict: NSDictionary){ - guard let mode = RNIComputableValueMode(fromDict: dict) - else { return nil }; - - self.mode = mode; - - self.offset = { - guard let offsetRaw = dict["offset"] as? NSDictionary, - let offset = RNIComputableOffset(fromDict: offsetRaw) - else { return nil }; - - return offset; - }(); - - self.minValue = - Self.getDoubleValue(forDict: dict, withKey: "minValue"); - - self.maxValue = - Self.getDoubleValue(forDict: dict, withKey: "maxValue"); - }; - - - - static private func getDoubleValue( - forDict dict: NSDictionary, - withKey key: String - ) -> CGFloat? { - guard let number = dict[key] as? NSNumber else { return nil }; - return number.doubleValue; - }; -}; diff --git a/ios/React Native/RNIComputable/RNIComputableValueMode.swift b/ios/React Native/RNIComputable/RNIComputableValueMode.swift deleted file mode 100644 index 3e75f8e6..00000000 --- a/ios/React Native/RNIComputable/RNIComputableValueMode.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// RNIComputableValueMode.swift -// swift-programmatic-modal -// -// Created by Dominic Go on 5/19/23. -// - -import UIKit - - -public enum RNIComputableValueMode { - case current; - case stretch; - case constant(constantValue: Double); - case percent(percentValue: Double); -}; - -extension RNIComputableValueMode { - public init?(fromDict dict: NSDictionary){ - guard let mode = dict["mode"] as? String else { return nil }; - - switch mode { - case "current": - self = .current; - - case "stretch": - self = .stretch; - - case "constant": - guard let value = dict["constantValue"] as? NSNumber - else { return nil }; - - self = .constant( - constantValue: value.doubleValue - ); - - case "percent": - guard let value = dict["percentValue"] as? NSNumber - else { return nil }; - - self = .percent(percentValue: value.doubleValue); - - default: - return nil; - }; - }; -}; - diff --git a/ios/React Native/RNIComputable/RNIViewMetadata.swift b/ios/React Native/RNIComputable/RNIViewMetadata.swift deleted file mode 100644 index a8851122..00000000 --- a/ios/React Native/RNIComputable/RNIViewMetadata.swift +++ /dev/null @@ -1,62 +0,0 @@ -// -// RNIViewMetadata.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - - -public final class RNIViewMetadata: RNIDictionarySynthesizable { - - public let tag: Int; - - public let reactTag: NSNumber?; - public let nativeID: String?; - - public let parentView: RNIViewMetadata?; - public let subviews: [RNIViewMetadata]?; - - public required init( - fromView view: UIView, - setParentView: Bool = true, - setSubViews: Bool = true - ){ - self.tag = view.tag; - - self.reactTag = { - guard let reactTag = view.reactTag else { return nil }; - return reactTag; - }(); - - self.nativeID = { - guard let nativeID = view.nativeID else { return nil }; - return nativeID; - }(); - - self.parentView = { - guard setParentView, - let parentView = view.superview - else { return nil }; - - return Self.init( - fromView: parentView, - setParentView: false, - setSubViews: false - ); - }(); - - self.subviews = { - guard setSubViews else { return nil }; - - return view.subviews.map { - return Self.init( - fromView: $0, - setParentView: false, - setSubViews: false - ); - }; - }(); - }; -}; diff --git a/ios/React Native/RNIDictionarySynthesizable/RNIDictionaryRepresentable.swift b/ios/React Native/RNIDictionarySynthesizable/RNIDictionaryRepresentable.swift deleted file mode 100644 index 0bb912a4..00000000 --- a/ios/React Native/RNIDictionarySynthesizable/RNIDictionaryRepresentable.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// RNIDictionaryRepresentable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/3/23. -// - -import UIKit - -public protocol RNIDictionaryRepresentable { - var asDictionary: [String: Any] { get }; -}; diff --git a/ios/React Native/RNIDictionarySynthesizable/RNIDictionarySynthesizable+Default.swift b/ios/React Native/RNIDictionarySynthesizable/RNIDictionarySynthesizable+Default.swift deleted file mode 100644 index acaec5dd..00000000 --- a/ios/React Native/RNIDictionarySynthesizable/RNIDictionarySynthesizable+Default.swift +++ /dev/null @@ -1,140 +0,0 @@ -// -// RNIDictionarySynthesizable+Default.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -extension RNIDictionarySynthesizable { - - // MARK: - Static Properties - // ------------------------- - - public static var synthesizedDictionaryIgnore: [String] { - []; - }; - - public static var synthesizedDictionaryInlinedProperties: [PartialKeyPath] { - []; - }; - - // MARK: - Static Functions - // ------------------------ - - fileprivate static func recursivelyParseValue( - _ value: Any, - isJSDict: Bool - ) -> Any { - - if let synthesizableDict = value as? (any RNIDictionarySynthesizable) { - return synthesizableDict.synthesizedDictionary(isJSDict: isJSDict); - }; - - if isJSDict, let rawValue = value as? any RawRepresentable { - return rawValue.rawValue; - }; - - if isJSDict, let array = value as? Array { - return array.map { - return Self.recursivelyParseValue($0, isJSDict: isJSDict); - }; - }; - - if isJSDict, let dict = value as? Dictionary { - return dict.mapValues { - return Self.recursivelyParseValue($0, isJSDict: isJSDict); - }; - }; - - if let dictRepresentable = value as? RNIDictionaryRepresentable { - let dict = dictRepresentable.asDictionary; - - guard isJSDict else { return dict }; - return Self.recursivelyParseValue(dict, isJSDict: isJSDict); - }; - - if let encodable = value as? Encodable, - let dict = encodable.asDictionary { - - return dict; - }; - - return value; - }; - - private func mergeInlinedProperties( - withDict baseDict: Dictionary, - isJSDict: Bool - ) -> Dictionary { - - var baseDict = baseDict; - - Self.synthesizedDictionaryInlinedProperties.forEach { - guard let value = self[keyPath: $0] as? (any RNIDictionarySynthesizable) - else { return }; - - let inlinedDict = value.synthesizedDictionary(isJSDict: isJSDict); - baseDict = baseDict.merging(inlinedDict){ old, _ in old }; - }; - - return baseDict; - }; - - private func synthesizedDictionaryUsingDictIgnore( - isJSDict: Bool - ) -> Dictionary { - - let mirror = Mirror(reflecting: self); - let properties = mirror.children; - - #if DEBUG - /// Runtime Check - Verify if `synthesizedDictionaryIgnore` is valid - for propertyKeyToIgnore in Self.synthesizedDictionaryIgnore { - if !properties.contains(where: { $0.label == propertyKeyToIgnore }) { - fatalError( - "Invalid value of '\(propertyKeyToIgnore)' in " - + "'synthesizedDictionaryIgnore' for '\(Self.self)' - " - + "No property named '\(propertyKeyToIgnore)' in '\(Self.self)'" - ); - }; - }; - #endif - - let propertyValueMap = properties.lazy.map { ( - propertyKey: String?, value: Any) -> (String, Any)? in - - guard let propertyKey = propertyKey, - !Self.synthesizedDictionaryIgnore.contains(propertyKey) - else { return nil }; - - let parsedValue = Self.recursivelyParseValue(value, isJSDict: isJSDict); - return (propertyKey, parsedValue); - }; - - let baseDict = Dictionary( - uniqueKeysWithValues: propertyValueMap.compactMap { $0 } - ); - - return self.mergeInlinedProperties( - withDict: baseDict, - isJSDict: isJSDict - ); - }; - - // MARK: - Public Functions - // ------------------------ - - public func synthesizedDictionary( - isJSDict: Bool - ) -> Dictionary { - - return self.synthesizedDictionaryUsingDictIgnore(isJSDict: isJSDict); - }; - - - public var synthesizedJSDictionary: Dictionary { - self.synthesizedDictionary(isJSDict: true); - }; -}; diff --git a/ios/React Native/RNIDictionarySynthesizable/RNIDictionarySynthesizable.swift b/ios/React Native/RNIDictionarySynthesizable/RNIDictionarySynthesizable.swift deleted file mode 100644 index 3deda88e..00000000 --- a/ios/React Native/RNIDictionarySynthesizable/RNIDictionarySynthesizable.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// RNIDictionarySynthesizable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/26/23. -// - -import UIKit - -/// Any type that conforms to this protocol will be able to create a dictionary -/// representing the keys and values inside that type -/// -public protocol RNIDictionarySynthesizable { - - /// The names/identifiers of the property to be ignored when - /// `synthesizedDictionary` is created. - /// - static var synthesizedDictionaryIgnore: [String] { get }; - - /// The key path to the property that will be inlined/"squashed together" - /// into `synthesizedDictionary`. - /// - static var synthesizedDictionaryInlinedProperties: - [PartialKeyPath] { get }; - - /// A map of the property names and their respective values - func synthesizedDictionary(isJSDict: Bool) -> Dictionary; -}; - diff --git a/ios/React Native/RNIError/RNIBaseError+Helpers.swift b/ios/React Native/RNIError/RNIBaseError+Helpers.swift deleted file mode 100644 index e9cb4eef..00000000 --- a/ios/React Native/RNIError/RNIBaseError+Helpers.swift +++ /dev/null @@ -1,119 +0,0 @@ -// -// RNIBaseError+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/12/23. -// - -import UIKit - -extension RNIBaseError { - - public var errorMessage: String { - var message = "message: \(self.message ?? "N/A")"; - - #if DEBUG - message += " - debugMessage: \(self.debugMessage ?? "N/A")"; - #endif - - if let fileID = self.fileID { - message += "- fileID: \(fileID)"; - }; - - if let functionName = self.functionName { - message += "- functionName: \(functionName)"; - }; - - if let lineNumber = self.lineNumber { - message += "- lineNumber: \(lineNumber)"; - }; - - return message; - }; - - public init( - code: ErrorCode, - message: String? = nil, - debugMessage: String? = nil, - debugData: Dictionary? = nil, - fileID: String? = #fileID, - functionName: String? = #function, - lineNumber: Int? = #line - ) { - self.init( - code: code, - message: message, - debugMessage: debugMessage - ); - - self.fileID = fileID; - self.functionName = functionName; - self.lineNumber = lineNumber; - }; - - public init( - code: ErrorCode, - error: Error, - debugMessage: String? = nil, - debugData: Dictionary? = nil, - fileID: String? = #fileID, - functionName: String? = #function, - lineNumber: Int? = #line - ) { - self.init( - code: code, - message: error.localizedDescription, - debugMessage: debugMessage - ); - - self.fileID = fileID; - self.functionName = functionName; - self.lineNumber = lineNumber; - }; - - public mutating func setDebugValues( - fileID: String = #fileID, - functionName: String = #function, - lineNumber: Int = #line - ) { - self.fileID = fileID; - self.functionName = functionName; - self.lineNumber = lineNumber; - }; - - public mutating func addDebugData(_ nextDebugData: Dictionary){ - guard let prevDebugData = self.debugData else { - self.debugData = nextDebugData; - return; - }; - - self.debugData = prevDebugData.merging(nextDebugData) { (_, new) in new }; - }; -}; - -extension RNIBaseError where Self: RNIDictionarySynthesizable { - - public var asNSError: NSError? { - - let errorCode = self.code.errorCode ?? - RNIGenericErrorCode.unspecified.errorCode; - - guard let errorCode = errorCode else { return nil }; - - return NSError( - domain: Self.domain, - code: errorCode, - userInfo: self.synthesizedJSDictionary - ); - }; - - public func invokePromiseRejectBlock( - _ block: @escaping RCTPromiseRejectBlock - ) { - block( - /* code */ self.code.description, - /* message */ self.errorMessage, - /* error */ self.asNSError - ); - }; -}; diff --git a/ios/React Native/RNIError/RNIBaseError.swift b/ios/React Native/RNIError/RNIBaseError.swift deleted file mode 100644 index b19a9770..00000000 --- a/ios/React Native/RNIError/RNIBaseError.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// RNINavigatorError.swift -// react-native-ios-navigator -// -// Created by Dominic Go on 9/11/21. -// - -import UIKit - -/// TODO - Move to `react-native-ios-utilities` -/// * Replace older impl. of `RNIError` with this version - -public protocol RNIBaseError: Error { - - associatedtype ErrorCode: RNIErrorCode; - - static var domain: String { get }; - - var code: ErrorCode { get }; - var message: String? { get }; - - var debugMessage: String? { get }; - var debugData: Dictionary? { get set } - - var fileID : String? { get set }; - var functionName: String? { get set }; - var lineNumber : Int? { get set }; - - init( - code: ErrorCode, - message: String?, - debugMessage: String? - ); -}; diff --git a/ios/React Native/RNIError/RNIError.swift b/ios/React Native/RNIError/RNIError.swift deleted file mode 100644 index 0d96e5d1..00000000 --- a/ios/React Native/RNIError/RNIError.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// RNIError.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/12/23. -// - -import UIKit - -public typealias RNIError = - RNIBaseError & RNIDictionarySynthesizable; - -public typealias RNIErrorCode = - CustomStringConvertible - & CaseIterable - & Equatable - & RNIErrorCodeDefaultable - & RNIErrorCodeSynthesizable; diff --git a/ios/React Native/RNIError/RNIErrorCodeDefaultable.swift b/ios/React Native/RNIError/RNIErrorCodeDefaultable.swift deleted file mode 100644 index 9d5a0310..00000000 --- a/ios/React Native/RNIError/RNIErrorCodeDefaultable.swift +++ /dev/null @@ -1,70 +0,0 @@ -// -// RNIGenericErrorDefaultable.swift -// react-native-ios-utilities -// -// Created by Dominic Go on 8/28/22. -// - -import UIKit - -public protocol RNIErrorCodeDefaultable { - - static var runtimeError : Self { get }; - static var libraryError : Self { get }; - static var reactError : Self { get }; - static var unknownError : Self { get }; - static var invalidArgument: Self { get }; - static var outOfBounds : Self { get }; - static var invalidReactTag: Self { get }; - static var nilValue : Self { get }; -}; - -// MARK: - Default -// --------------- - -public extension RNIErrorCodeDefaultable { - - static var runtimeError: Self { - Self.runtimeError - }; - - static var libraryError: Self { - Self.libraryError - }; - - static var reactError: Self { - Self.reactError - }; - - static var unknownError: Self { - Self.unknownError - }; - - static var invalidArgument: Self { - Self.invalidArgument - }; - - static var outOfBounds: Self { - Self.outOfBounds - }; - - static var invalidReactTag: Self { - Self.invalidReactTag - }; - - static var nilValue: Self { - Self.nilValue - }; -}; - -// MARK: - Helpers -// --------------- - -extension RNIErrorCodeDefaultable where Self: RawRepresentable { - - public var description: String { - self.rawValue; - }; -}; - - diff --git a/ios/React Native/RNIError/RNIErrorCodeSynthesizable.swift b/ios/React Native/RNIError/RNIErrorCodeSynthesizable.swift deleted file mode 100644 index c71efffb..00000000 --- a/ios/React Native/RNIError/RNIErrorCodeSynthesizable.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// RNIErrorCodeSynthesizable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/12/23. -// - -import UIKit - -public protocol RNIErrorCodeSynthesizable { - var errorCode: Int? { get }; -} - -extension RNIErrorCodeSynthesizable where Self: CaseIterable & Equatable { - - public var errorCode: Int? { - let match = Self.allCases.enumerated().first { _, value in - value == self - } - - guard let offset = match?.offset else { return nil }; - return offset * -1; - }; -}; diff --git a/ios/React Native/RNIError/RNIGenericErrorCode.swift b/ios/React Native/RNIError/RNIGenericErrorCode.swift deleted file mode 100644 index 9689fe14..00000000 --- a/ios/React Native/RNIError/RNIGenericErrorCode.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// RNIGenericErrorCode.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/12/23. -// - -import UIKit - - -enum RNIGenericErrorCode: - String, CaseIterable, RNIErrorCodeDefaultable, RNIErrorCodeSynthesizable { - - case unspecified; -}; diff --git a/ios/React Native/RNIIdentifiable/RNIIdentifiable+Default.swift b/ios/React Native/RNIIdentifiable/RNIIdentifiable+Default.swift deleted file mode 100644 index 6b25ec6d..00000000 --- a/ios/React Native/RNIIdentifiable/RNIIdentifiable+Default.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// RNIIdentifiable+Default.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -extension RNIIdentifiable { - public static var synthesizedIdPrefix: String { - String(describing: Self.self) + "-"; - }; - - public var synthesizedIdentifier: RNIObjectIdentifier { - if let identifier = self.metadata { - return identifier; - }; - - let identifier = RNIObjectIdentifier(type: Self.self); - self.metadata = identifier; - - return identifier; - }; - - public var synthesizedID: Int { - self.synthesizedIdentifier.id; - }; - - public var synthesizedStringID: String { - Self.synthesizedIdPrefix + "\(self.synthesizedID)"; - }; - - public var synthesizedUUID: UUID { - self.synthesizedIdentifier.uuid; - }; -}; diff --git a/ios/React Native/RNIIdentifiable/RNIIdentifiable.swift b/ios/React Native/RNIIdentifiable/RNIIdentifiable.swift deleted file mode 100644 index e70d473d..00000000 --- a/ios/React Native/RNIIdentifiable/RNIIdentifiable.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// RNIIdentifiable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/31/23. -// - -import UIKit - -public protocol RNIIdentifiable: - AnyObject, RNIObjectMetadata where T == RNIObjectIdentifier { - - static var synthesizedIdPrefix: String { get }; - - var synthesizedID: Int { get }; - - var synthesizedUUID: UUID { get }; - -}; - diff --git a/ios/React Native/RNIIdentifiable/RNIObjectIdentifier.swift b/ios/React Native/RNIIdentifiable/RNIObjectIdentifier.swift deleted file mode 100644 index ed9c839a..00000000 --- a/ios/React Native/RNIIdentifiable/RNIObjectIdentifier.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// RNIObjectIdentifier.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -fileprivate class Counter { - static var typeToCounterMap: Dictionary = [:]; - - static func getTypeString(ofType _type: Any) -> String { - return String(describing: type(of: _type)); - }; - - static func set(forType type: Any, counter: Int) { - let typeString = Self.getTypeString(ofType: type); - Self.typeToCounterMap[typeString] = counter; - }; - - static func set(forType typeString: String, counter: Int) { - Self.typeToCounterMap[typeString] = counter; - }; - - static func get(forType type: Any) -> Int { - let typeString = Self.getTypeString(ofType: type); - - guard let counter = Self.typeToCounterMap[typeString] else { - Self.set(forType: typeString, counter: -1); - return -1; - }; - - return counter; - }; - - static func getAndIncrement(forType type: Any) -> Int { - let prevCount = Self.get(forType: type); - let nextCount = prevCount + 1; - - Self.set(forType: type, counter: nextCount); - return nextCount; - }; -}; - -public final class RNIObjectIdentifier { - - public let id: Int; - public let uuid = UUID(); - - public init(type: Any) { - self.id = Counter.getAndIncrement(forType: type); - }; -}; diff --git a/ios/React Native/RNIModal/RNIModal+Helpers.swift b/ios/React Native/RNIModal/RNIModal+Helpers.swift deleted file mode 100644 index 621a8979..00000000 --- a/ios/React Native/RNIModal/RNIModal+Helpers.swift +++ /dev/null @@ -1,122 +0,0 @@ -// -// RNIModal+Helpers.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/18/23. -// - -import UIKit - -extension RNIModalIdentifiable where Self: RNIIdentifiable { - public var modalNativeID: String { - self.synthesizedStringID - }; -}; - -extension RNIModalIdentifiable { - public var modalUserID: String? { - nil - }; -}; - -extension RNIModalState where Self: RNIModalPresentation { - - internal var synthesizedWindowMapData: RNIWindowMapData? { - guard let window = self.window else { return nil }; - return RNIModalWindowMapShared.get(forWindow: window); - }; - - /// Programmatically check if this instance is presented - public var computedIsModalPresented: Bool { - let listPresentedVC = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - return listPresentedVC.contains { - $0 === self.modalViewController; - }; - }; - - /// Programmatically check if this instance is in focus - public var computedIsModalInFocus: Bool { - let listPresentedVC = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - guard let topmostVC = listPresentedVC.last - else { return self.synthesizedIsModalInFocus }; - - return topmostVC === self.modalViewController; - }; - - /// Note:2023-03-31-15-41-04 - /// - /// * This is based on the view controller hierarchy - /// * So parent/child view controller that aren't modals are also counted - /// - public var computedViewControllerIndex: Int { - let listPresentedVC = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - for (index, vc) in listPresentedVC.enumerated() { - guard vc === self.modalViewController else { continue }; - return index; - }; - - return -1; - }; - - /// Programmatically get the "modal index" - public var computedModalIndex: Int { - guard let window = self.window, - let modalVC = self.modalViewController - else { return -1 }; - - return RNIModalUtilities.computeModalIndex( - forWindow: window, - forViewController: modalVC - ); - }; - - public var currentModalIndex: Int { - self.synthesizedWindowMapData?.modalIndexCurrent ?? -1; - }; - - public var computedCurrentModalIndex: Int { - RNIModalUtilities.computeModalIndex(forWindow: self.window); - }; - - public var synthesizedIsModalInFocus: Bool { - self.modalPresentationState.isPresented && - self.modalFocusState.state.isFocused; - }; -}; - -extension RNIModalState where Self: RNIModal { - - public var synthesizedModalData: RNIModalData { - let purgeCache = - RNIPresentedVCListCache.beginCaching(forWindow: self.window); - - let modalData = RNIModalData( - modalNativeID: self.modalNativeID, - - modalIndex: self.modalIndex, - modalIndexPrev: self.modalIndexPrev, - currentModalIndex: self.currentModalIndex, - - modalFocusState: self.modalFocusState, - modalPresentationState: self.modalPresentationState, - - computedIsModalInFocus: self.computedIsModalInFocus, - computedIsModalPresented: self.computedIsModalPresented, - - computedModalIndex: self.computedModalIndex, - computedViewControllerIndex: self.computedViewControllerIndex, - computedCurrentModalIndex: self.computedCurrentModalIndex, - - synthesizedWindowID: self.window?.synthesizedStringID - ); - - purgeCache(); - return modalData; - }; -}; diff --git a/ios/React Native/RNIModal/RNIModal.swift b/ios/React Native/RNIModal/RNIModal.swift deleted file mode 100644 index 495034aa..00000000 --- a/ios/React Native/RNIModal/RNIModal.swift +++ /dev/null @@ -1,125 +0,0 @@ -// -// RNIModal.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/16/23. -// - -import UIKit - -/// A collection of protocols that the "adoptee" needs to implement in order to -/// be considered a "modal". -/// -public typealias RNIModal = - RNIIdentifiable - & RNIModalIdentifiable - & RNIModalState - & RNIModalRequestable - & RNIModalFocusNotifiable - & RNIModalPresentationNotifying - & RNIModalPresentation; - - -/// Contains modal-related properties for identifying a specific modal instance -/// -/// Specifies that the "adoptee/delegate" that conforms to this protocol must -/// have the specified modal-related properties so that it can be uniquely -/// identified amongst different modal instances. -/// -public protocol RNIModalIdentifiable: AnyObject { - - var modalNativeID: String { get }; - - var modalUserID: String? { get }; -}; - -/// Contains modal-related properties for keeping track of the state of the -/// modal. -/// -/// Specifies that the "adoptee/delegate" that conforms to this protocol must -/// have the specified modal-related properties for keeping track of state -/// -/// The "implementor/delegator" updates these properties; The delegate -/// should treat the properties declared in this protocol as read-only. -/// -public protocol RNIModalState: AnyObject { - - var modalIndexPrev: Int! { set get }; - - var modalIndex: Int! { set get }; - - var modalPresentationState: RNIModalPresentationStateMachine { set get }; - - var modalFocusState: RNIModalFocusStateMachine { set get }; -}; - -/// Contains functions that are invoked to request modal-related actions. -/// -/// The "implementer/delegator" notifies the "adoptee/delegate" of this protocol -/// of requests to perform "modal-related" actions. -/// -public protocol RNIModalRequestable: AnyObject { - - func requestModalToShow( - sender: Any, - animated: Bool, - completion: @escaping () -> Void - ) throws; - - func requestModalToHide( - sender: Any, - animated: Bool, - completion: @escaping () -> Void - ) throws; -}; - -/// Contains functions that get called whenever a modal-related event occurs. -/// -/// The "implementer/delegator" notifies the "adoptee/delegate" of this protocol -/// of modal focus/blur related events. -/// -/// An interface for the "adoptee/delegate" to receive and handle incoming -/// modal "focus/blur"-related notifications. -/// -public protocol RNIModalFocusNotifiable: AnyObject { - func onModalWillFocusNotification(sender: any RNIModal); - - func onModalDidFocusNotification(sender: any RNIModal); - - func onModalWillBlurNotification(sender: any RNIModal); - - func onModalDidBlurNotification(sender: any RNIModal); -}; - -/// Specifies that the "adoptee/delegate" that conforms to this protocol must -/// notify a delegate of modal presentation-related events -/// -public protocol RNIModalPresentationNotifying: AnyObject { - - /// Notify the "shared modal manager" if the current modal instance is going - /// to be shown or hidden. - /// - /// That focus notification will then be relayed to the other modal instances. - /// - var modalPresentationNotificationDelegate: - RNIModalPresentationNotifiable! { get set }; -}; - -/// Properties related to modal presentation. -/// -/// Specifies that the "adoptee/delegate" that conforms to this protocol must -/// implement this so that the "delegator" understands how the delegate presents -/// the modal. -/// -public protocol RNIModalPresentation: AnyObject { - - /// Returns the modal view controller that is to be presented - var modalViewController: UIViewController? { get }; - - /// Returns the view controller that presented the `modalViewController` - /// instance. - var presentingViewController: UIViewController? { get }; - - /// The "main" window for this instance - var window: UIWindow? { get }; -}; diff --git a/ios/React Native/RNIModal/RNIModalCustomSheetDetent.swift b/ios/React Native/RNIModal/RNIModalCustomSheetDetent.swift deleted file mode 100644 index be772298..00000000 --- a/ios/React Native/RNIModal/RNIModalCustomSheetDetent.swift +++ /dev/null @@ -1,111 +0,0 @@ -// -// RNIModalCustomSheetDetent.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/21/23. -// - -import UIKit - -enum RNIModalCustomSheetDetentMode { - - case relative(value: Double); - case constant(value: Double); - - var rawValueString: String { - switch self { - case .constant: return "constant"; - case .relative: return "relative"; - }; - }; -}; - -struct RNIModalCustomSheetDetent { - - typealias OnDetentDidCreate = ( - _ containerTraitCollection: UITraitCollection, - _ maximumDetentValue: CGFloat, - _ computedDetentValue: CGFloat, - _ sender: RNIModalCustomSheetDetent - ) -> Void; - - let mode: RNIModalCustomSheetDetentMode; - let key: String; - - let offset: RNIComputableOffset?; - - let onDetentDidCreate: OnDetentDidCreate?; - - init?( - forDict dict: Dictionary, - onDetentDidCreate: OnDetentDidCreate? = nil - ) { - guard let rawMode = dict["mode"] as? String, - let rawKey = dict["key"] as? String - else { return nil }; - - self.key = rawKey; - self.onDetentDidCreate = onDetentDidCreate; - - let mode: RNIModalCustomSheetDetentMode? = { - switch rawMode { - case "relative": - guard let rawValue = dict["sizeMultiplier"] as? NSNumber - else { return nil }; - - return .relative(value: rawValue.doubleValue); - - case "constant": - guard let rawValue = dict["sizeConstant"] as? NSNumber - else { return nil }; - - return .constant(value: rawValue.doubleValue); - - default: - return nil; - }; - }(); - - guard let mode = mode else { return nil }; - self.mode = mode; - - self.offset = RNIComputableOffset(fromDict: dict as NSDictionary); - }; - - @available(iOS 15.0, *) - var synthesizedDetentIdentifier: - UISheetPresentationController.Detent.Identifier { - - UISheetPresentationController.Detent.Identifier(self.key); - }; - - @available(iOS 16.0, *) - var synthesizedDetent: UISheetPresentationController.Detent { - return .custom(identifier: self.synthesizedDetentIdentifier) { context in - - let computedValueBase: Double = { - switch self.mode { - case let .relative(value): - return value * context.maximumDetentValue; - - case let .constant(value): - return value; - }; - }(); - - let computedValueWithOffset = - self.offset?.compute(withValue: computedValueBase); - - let computedValue = computedValueWithOffset ?? computedValueBase; - - self.onDetentDidCreate?( - context.containerTraitCollection, - context.maximumDetentValue, - computedValue, - self - ); - - return computedValue; - }; - }; -}; diff --git a/ios/React Native/RNIModal/RNIModalData.swift b/ios/React Native/RNIModal/RNIModalData.swift deleted file mode 100644 index d8ec76ae..00000000 --- a/ios/React Native/RNIModal/RNIModalData.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// RNIModalData.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/26/23. -// - -import UIKit - -public struct RNIModalData: RNIDictionarySynthesizable { - public let modalNativeID: String; - - public let modalIndex: Int; - public let modalIndexPrev: Int; - public let currentModalIndex: Int; - - public let modalFocusState: RNIModalFocusStateMachine; - public let modalPresentationState: RNIModalPresentationStateMachine; - - public let computedIsModalInFocus: Bool; - public let computedIsModalPresented: Bool; - - public let computedModalIndex: Int; - public let computedViewControllerIndex: Int; - public let computedCurrentModalIndex: Int; - - public let synthesizedWindowID: String?; -}; diff --git a/ios/React Native/RNIModal/RNIModalError.swift b/ios/React Native/RNIModal/RNIModalError.swift deleted file mode 100644 index 3f5e2a85..00000000 --- a/ios/React Native/RNIModal/RNIModalError.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// RNIModalError.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/10/23. -// - -import UIKit - -public enum RNIModalErrorCode: String, RNIErrorCode { - case modalAlreadyVisible, - modalAlreadyHidden, - dismissRejected; -}; - -public struct RNIModalError: RNIError { - - public typealias ErrorCode = RNIModalErrorCode; - - public static var domain = "react-native-ios-modal"; - - public var code: RNIModalErrorCode; - public var message: String?; - - public var debugMessage: String?; - public var debugData: Dictionary?; - - public var fileID: String?; - public var functionName: String?; - public var lineNumber: Int?; - - public init( - code: ErrorCode, - message: String?, - debugMessage: String? - ) { - self.code = code; - self.message = message; - self.debugMessage = debugMessage; - }; -}; diff --git a/ios/React Native/RNIModal/RNIModalEventData.swift b/ios/React Native/RNIModal/RNIModalEventData.swift deleted file mode 100644 index 2d2b5189..00000000 --- a/ios/React Native/RNIModal/RNIModalEventData.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// RNIModalEvents.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/26/23. -// - -import UIKit - -public struct RNIModalBaseEventData: RNIDictionarySynthesizable { - - public static var synthesizedDictionaryIgnore: [String] { - ["modalData"] - }; - - public static var synthesizedDictionaryInlinedProperties: [ - PartialKeyPath - ] { - [\.modalData]; - }; - - public let reactTag: Int; - public let modalID: String?; - - public let modalData: RNIModalData; -}; - -public struct RNIOnModalFocusEventData: RNIDictionarySynthesizable { - - public static var synthesizedDictionaryIgnore: [String] { - ["modalData"] - }; - - public static var synthesizedDictionaryInlinedProperties: [ - PartialKeyPath - ] { - [\.modalData]; - }; - - public let modalData: RNIModalBaseEventData; - public let senderInfo: RNIModalData; - - public let isInitial: Bool; -}; - -public struct RNIModalDidChangeSelectedDetentIdentifierEventData: RNIDictionarySynthesizable { - public let sheetDetentStringPrevious: String?; - public let sheetDetentStringCurrent: String?; -}; - -public struct RNIModalDetentDidComputeEventData: RNIDictionarySynthesizable { - public let maximumDetentValue: CGFloat; - public let computedDetentValue: CGFloat; - public let key: String; -}; - -public struct RNIModalSwipeGestureEventData: RNIDictionarySynthesizable { - public let position: CGPoint; -}; - -public struct RNIModalDidSnapEventData: RNIDictionarySynthesizable { - public let selectedDetentIdentifier: String?; - public let modalContentSize: CGSize; -}; diff --git a/ios/React Native/RNIModal/RNIModalFlags.swift b/ios/React Native/RNIModal/RNIModalFlags.swift deleted file mode 100644 index 80491857..00000000 --- a/ios/React Native/RNIModal/RNIModalFlags.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// RNIModalFlags.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -public var RNIModalFlagsShared = RNIModalFlags.sharedInstance; - -public class RNIModalFlags { - static let sharedInstance = RNIModalFlags(); - - var isModalViewPresentationNotificationEnabled = true; - - var shouldSwizzleViewControllers = true; - var shouldSwizzledViewControllerNotifyAll = false; - var shouldWrapAllViewControllers = false; - -}; diff --git a/ios/React Native/RNIModal/RNIModalFocusState.swift b/ios/React Native/RNIModal/RNIModalFocusState.swift deleted file mode 100644 index 003df259..00000000 --- a/ios/React Native/RNIModal/RNIModalFocusState.swift +++ /dev/null @@ -1,142 +0,0 @@ -// -// RNIModalFocusState.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/8/23. -// - -import UIKit - - -public enum RNIModalFocusState: String { - case INITIAL; - - case FOCUSING - case FOCUSED; - - case BLURRING; - case BLURRED; - - // MARK: - Properties - Computed - // ----------------------------- - - public var isInitialized: Bool { - self != .INITIAL - }; - - public var isFocused: Bool { - self == .FOCUSED; - }; - - public var isBlurred: Bool { - self == .BLURRED || self == .INITIAL; - }; - - public var isFocusing: Bool { - self == .FOCUSING; - }; - - public var isBlurring: Bool { - self == .BLURRING; - }; - - public var isTransitioning: Bool { - self.isBlurring || self.isFocusing; - }; - - public var isBlurredOrBlurring: Bool { - self.isBlurred || self.isBlurring; - }; - - public var isFocusedOrFocusing: Bool { - self.isFocused || self.isFocusing; - }; -}; - -public struct RNIModalFocusStateMachine: RNIDictionaryRepresentable { - - // MARK: - Properties - // ------------------ - - private(set) public var state: RNIModalFocusState = .INITIAL; - private(set) public var statePrev: RNIModalFocusState = .INITIAL; - - public var wasBlurCancelled: Bool = false; - public var wasFocusCancelled: Bool = false; - - public var didChange: Bool { - self.statePrev != self.state; - }; - - // MARK: - RNIDictionaryRepresentable - // ---------------------------------- - - public var asDictionary: [String : Any] {[ - "state": self.state, - "statePrev": self.statePrev, - "isFocused": self.state.isFocused, - "isBlurred": self.state.isBlurred, - "isTransitioning": self.state.isTransitioning, - "wasBlurCancelled": self.wasBlurCancelled, - "wasFocusCancelled": self.wasFocusCancelled, - ]}; - - // MARK: - Functions - // ------------------ - - public mutating func set(state nextState: RNIModalFocusState){ - let prevState = self.state; - - // early exit if no change - guard prevState != nextState else { - #if DEBUG - print( - "Error - RNIModalFocusStateMachine.set" - + " - arg nextState: \(nextState)" - + " - prevState: \(prevState)" - + " - No changes, ignoring..." - ); - #endif - return; - }; - - if prevState.isInitialized && !nextState.isInitialized { - /// Going from "initialized state" (e.g. `FOCUSED`, `FOCUSING`, etc), to - /// an "uninitialized state" (i.e. `INITIAL`) is not allowed - return; - - } else { - self.state = nextState; - self.statePrev = prevState; - }; - - if prevState.isBlurring && nextState.isFocusing { - self.wasBlurCancelled = true; - - } else if prevState.isFocusing && nextState.isBlurring { - self.wasFocusCancelled = true; - }; - - #if DEBUG - print( - "Log - RNIModalFocusState.set" - + " - prevState: \(prevState)" - + " - nextState: \(nextState)" - + " - self.wasBlurCancelled: \(self.wasBlurCancelled)" - + " - self.wasFocusCancelled: \(self.wasFocusCancelled)" - ); - #endif - - self.resetIfNeeded(); - }; - - mutating func resetIfNeeded(){ - if self.state.isBlurred { - self.wasBlurCancelled = false; - }; - - if self.state.isFocused { - self.wasFocusCancelled = false; - }; - }; -}; diff --git a/ios/React Native/RNIModal/RNIModalManager.swift b/ios/React Native/RNIModal/RNIModalManager.swift deleted file mode 100644 index 9adfe8b7..00000000 --- a/ios/React Native/RNIModal/RNIModalManager.swift +++ /dev/null @@ -1,448 +0,0 @@ -// -// RNIModalManager.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/9/23. -// - -import UIKit - -public let RNIModalManagerShared = RNIModalManager.sharedInstance; - - -/// Archived/Old Notes -/// * `Note:2023-04-07-03-22-48` -/// * `Note:2023-03-30-19-36-33` -/// -public class RNIModalManager { - - // MARK: - Static Properties - // ------------------------- - - public static let sharedInstance = RNIModalManager(); - - // MARK: - Properties - // ------------------ - - private(set) public var modalInstanceDict = - RNIWeakDictionary(); - - private(set) public var windowToCurrentModalIndexMap: - Dictionary = [:]; - - // MARK: - Properties - Computed - // ----------------------------- - - public var modalInstances: [any RNIModal] { - self.modalInstanceDict.dict.compactMap { - $0.value.synthesizedRef; - }; - }; - - public var presentedModals: [any RNIModal] { - self.modalInstances.compactMap { - $0.modalPresentationState.isPresented ? $0 : nil; - }; - }; - - // MARK: - Methods - // --------------- - - public func register(modal: any RNIModal) { - modal.modalIndex = -1; - modal.modalIndexPrev = -1; - - modal.modalPresentationNotificationDelegate = self; - - self.modalInstanceDict[modal.modalNativeID] = modal; - }; - - public func isRegistered(modal: any RNIModal) -> Bool { - self.modalInstances.contains { - $0.modalNativeID == modal.modalNativeID; - }; - }; - - public func isRegistered(viewController: UIViewController) -> Bool { - self.modalInstances.contains { - $0.presentingViewController === viewController - }; - }; - - public func getModalInstance( - forPresentingViewController viewController: UIViewController - ) -> (any RNIModal)? { - self.modalInstances.first { - $0.presentingViewController === viewController; - }; - }; - - public func getModalInstance( - forPresentedViewController viewController: UIViewController - ) -> (any RNIModal)? { - let presentingModal = self.modalInstances.first { - $0.modalViewController === viewController; - }; - - guard let presentingVC = presentingModal?.modalViewController - else { return nil }; - - return self.getModalInstance(forPresentingViewController: presentingVC); - }; - - public func getModalInstances( - forWindow window: UIWindow - ) -> [any RNIModal] { - - return self.modalInstances.filter { - $0.window === window - }; - }; -}; - -// MARK: RNIModalPresentationNotifiable -// ------------------------------------ - -/// The modal instances will notify the manager when they're about to show/hide -/// a modal. -/// -extension RNIModalManager: RNIModalPresentationNotifiable { - - public func notifyOnModalWillShow(sender: any RNIModal) { - guard let senderWindow = sender.window else { - #if DEBUG - print( - "Error - RNIModalManager.notifyOnModalWillShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - Unable to send event because sender.window is nil" - ); - #endif - return; - }; - - let windowData = RNIModalWindowMapShared.get(forWindow: senderWindow); - guard windowData.nextModalToFocus !== sender else { - #if DEBUG - let nextModalToFocus = windowData.nextModalToFocus!; - print( - "Error - RNIModalManager.notifyOnModalWillShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToFocus.modalNativeID: \(nextModalToFocus.modalNativeID)" - + " - possible multiple invokation" - + " - sender is already about to be in focus" - ); - #endif - return; - }; - - let purgeCache = - RNIPresentedVCListCache.beginCaching(forWindow: senderWindow); - - /// `Note:2023-04-10-20-47-52` - /// * The sender will already be in `presentedModalList` despite it being - /// not fully presented yet. - /// - let presentedModalList = - RNIModalUtilities.getPresentedModals(forWindow: senderWindow); - - #if DEBUG - if windowData.nextModalToFocus != nil { - print( - "Warning - RNIModalManager.notifyOnModalWillShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToFocus is not nil" - + " - a different modal is about to be focused" - ); - }; - #endif - - windowData.set(nextModalToFocus: sender); - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalWillShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - prevModalIndex: \(windowData.modalIndexPrev)" - + " - windowData.modalIndexNext: \(windowData.modalIndexNext_)" - + " - sender.modalIndexPrev: \(sender.modalIndexPrev!)" - + " - sender.modalIndex: \(sender.modalIndex!)" - + " - presentedModalList.count: \(presentedModalList.count)" - ); - #endif - - sender.modalFocusState.set(state: .FOCUSING); - sender.modalPresentationState.set(state: .PRESENTING_UNKNOWN); - - sender.onModalWillFocusNotification(sender: sender); - - presentedModalList.forEach { - guard $0 !== sender, - $0.modalFocusState.state.isFocusedOrFocusing || - $0.modalFocusState.state.isBlurring - else { return }; - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalWillShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - notify BLURRING" - + " - for modal.modalNativeID:\($0.modalNativeID)" - + " - for modal.modalIndex:\($0.modalIndex ?? -1)" - ); - #endif - - $0.modalFocusState.set(state: .BLURRING); - $0.onModalWillBlurNotification(sender: sender); - }; - - if let modalToBlur = presentedModalList.secondToLast { - windowData.nextModalToBlur = modalToBlur; - }; - - purgeCache(); - }; - - public func notifyOnModalDidShow(sender: any RNIModal) { - guard let senderWindow = sender.window else { - #if DEBUG - print( - "Error - RNIModalManager.notifyOnModalDidShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - Unable to send event because sender.window is nil" - ); - #endif - return; - }; - - let windowData = RNIModalWindowMapShared.get(forWindow: senderWindow); - let nextModalToFocus = windowData.nextModalToFocus - - if nextModalToFocus == nil { - #if DEBUG - print( - "Error - RNIModalManager.notifyOnModalDidShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToFocus: nil" - + " - possible notifyOnModalWillShow not invoked for sender" - ); - #endif - }; - - #if DEBUG - if nextModalToFocus !== sender { - print( - "Warning - RNIModalManager.notifyOnModalDidShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToFocus.modalNativeID: \(nextModalToFocus?.modalNativeID ?? "N/A")" - + " - nextModalToFocus !== sender" - + " - a different modal is about to focused" - ); - }; - #endif - - let purgeCache = - RNIPresentedVCListCache.beginCaching(forWindow: senderWindow); - - let presentedModalList = - RNIModalUtilities.getPresentedModals(forWindow: senderWindow); - - windowData.apply(forFocusedModal: sender); - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalDidShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - sender.modalIndexPrev: \(sender.modalIndexPrev!)" - + " - sender.modalIndex: \(sender.modalIndex!)" - ); - #endif - - sender.modalFocusState.set(state: .FOCUSED); - sender.modalPresentationState.set(state: .PRESENTED_UNKNOWN); - - sender.onModalDidFocusNotification(sender: sender); - - presentedModalList.forEach { - guard $0 !== sender, - $0.modalFocusState.state.isBlurring - else { return }; - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalDidShow" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - notify BLURRED" - + " - for modal.modalNativeID:\($0.modalNativeID)" - + " - for modal.modalIndex:\($0.modalIndex ?? -1)" - ); - #endif - - $0.modalFocusState.set(state: .BLURRED); - $0.onModalDidBlurNotification(sender: sender); - }; - - // Reset - windowData.nextModalToBlur = nil; - purgeCache(); - }; - - public func notifyOnModalWillHide(sender: any RNIModal) { - guard let senderWindow = sender.window else { - #if DEBUG - print( - "Error - RNIModalManager.notifyOnModalWillHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - Unable to send event because sender.window is nil" - ); - #endif - return; - }; - - let windowData = RNIModalWindowMapShared.get(forWindow: senderWindow); - guard windowData.nextModalToBlur !== sender else { - #if DEBUG - let nextModalToBlur = windowData.nextModalToBlur!; - print( - "Error - RNIModalManager.notifyOnModalWillHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToBlur.modalNativeID: \(nextModalToBlur.modalNativeID)" - + " - possible multiple invokation" - + " - sender is already about to be blurred" - ); - #endif - return; - }; - - #if DEBUG - if windowData.nextModalToBlur != nil { - print( - "Warning - RNIModalManager.notifyOnModalWillHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToBlur is not nil" - + " - a different modal is about to blur" - ); - }; - #endif - - let purgeCache = - RNIPresentedVCListCache.beginCaching(forWindow: senderWindow); - - let presentedModalList = - RNIModalUtilities.getPresentedModals(forWindow: senderWindow); - - windowData.set(nextModalToBlur: sender); - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalWillHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - prevModalIndex: \(windowData.modalIndexPrev)" - + " - windowData.modalIndexNext: \(windowData.modalIndexNext_)" - + " - sender.modalIndexPrev: \(sender.modalIndexPrev!)" - + " - sender.modalIndex: \(sender.modalIndex!)" - ); - #endif - - sender.modalFocusState.set(state: .BLURRING); - sender.modalPresentationState.set(state: .DISMISSING_UNKNOWN); - - sender.onModalWillBlurNotification(sender: sender); - - guard let modalToFocus = presentedModalList.secondToLast else { - purgeCache(); - return; - }; - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalWillHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - notify FOCUSING" - + " - for modalToFocus.modalNativeID:\(modalToFocus.modalNativeID)" - + " - for modalToFocus.modalIndex:\(modalToFocus.modalIndex ?? -1)" - ); - #endif - - modalToFocus.modalFocusState.set(state: .FOCUSING); - modalToFocus.onModalWillFocusNotification(sender: sender); - - windowData.nextModalToFocus = modalToFocus; - purgeCache(); - }; - - public func notifyOnModalDidHide(sender: any RNIModal) { - guard let senderWindow = sender.window else { - #if DEBUG - print( - "Error - RNIModalManager.notifyOnModalDidHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - Unable to send event because sender.window is nil" - ); - #endif - return; - }; - - let windowData = RNIModalWindowMapShared.get(forWindow: senderWindow); - guard let nextModalToBlur = windowData.nextModalToBlur else { - #if DEBUG - print( - "Error - RNIModalManager.notifyOnModalDidHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToBlur: nil" - + " - possible notifyOnModalWillHide not invoked for sender" - ); - #endif - return; - }; - - #if DEBUG - if nextModalToBlur !== sender { - print( - "Warning - RNIModalManager.notifyOnModalDidHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - nextModalToBlur.modalNativeID: \(nextModalToBlur.modalNativeID)" - + " - nextModalToBlur !== sender" - + " - a different modal is about to be blurred" - ); - }; - #endif - - let purgeCache = - RNIPresentedVCListCache.beginCaching(forWindow: senderWindow); - - windowData.apply(forBlurredModal: sender); - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalDidHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - sender.modalIndexPrev: \(sender.modalIndexPrev!)" - + " - sender.modalIndex: \(sender.modalIndex!)" - ); - #endif - - sender.modalFocusState.set(state: .BLURRED); - sender.modalPresentationState.set(state: .DISMISSED); - - sender.onModalDidBlurNotification(sender: sender); - - guard let modalToFocus = windowData.nextModalToFocus else { return }; - - #if DEBUG - print( - "Log - RNIModalManager.notifyOnModalDidHide" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - notify FOCUSED" - + " - for modal.modalNativeID:\(modalToFocus.modalNativeID)" - + " - for modal.modalIndex:\(modalToFocus.modalIndex ?? -1)" - ); - #endif - - modalToFocus.modalFocusState.set(state: .FOCUSED); - modalToFocus.onModalDidFocusNotification(sender: sender); - - // reset - windowData.nextModalToFocus = nil; - purgeCache(); - }; -}; diff --git a/ios/React Native/RNIModal/RNIModalPresentationNotifiable.swift b/ios/React Native/RNIModal/RNIModalPresentationNotifiable.swift deleted file mode 100644 index 2287b353..00000000 --- a/ios/React Native/RNIModal/RNIModalPresentationNotifiable.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// RNIModalPresentationNotifiable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/10/23. -// - -import UIKit - -public protocol RNIModalPresentationNotifiable: AnyObject { - - func notifyOnModalWillShow(sender: any RNIModal); - - func notifyOnModalDidShow(sender: any RNIModal); - - func notifyOnModalWillHide(sender: any RNIModal); - - func notifyOnModalDidHide(sender: any RNIModal); -}; diff --git a/ios/React Native/RNIModal/RNIModalPresentationState.swift b/ios/React Native/RNIModal/RNIModalPresentationState.swift deleted file mode 100644 index 8217fe6c..00000000 --- a/ios/React Native/RNIModal/RNIModalPresentationState.swift +++ /dev/null @@ -1,303 +0,0 @@ -// -// RNIModalPresentationState.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/7/23. -// - -import UIKit - - -public enum RNIModalPresentationState: String, CaseIterable { - - // MARK: - Enum Cases - // ------------------ - - case INITIAL; - - case PRESENTING_PROGRAMMATIC; - case PRESENTING_UNKNOWN; - - case PRESENTED; - case PRESENTED_UNKNOWN; - - case DISMISSING_GESTURE; - case DISMISSING_PROGRAMMATIC; - case DISMISSING_UNKNOWN; - - case DISMISS_GESTURE_CANCELLING; - - case DISMISSED; - - // MARK: - Computed Properties - Private - // ------------------------------------- - - fileprivate var step: Int { - switch self { - case .INITIAL: - return 0; - - case .PRESENTING_PROGRAMMATIC: fallthrough; - case .PRESENTING_UNKNOWN : - return 1; - - case .PRESENTED : fallthrough - case .PRESENTED_UNKNOWN: - return 2; - - case .DISMISSING_GESTURE : fallthrough; - case .DISMISSING_PROGRAMMATIC: fallthrough; - case .DISMISSING_UNKNOWN : - return 3; - - case .DISMISS_GESTURE_CANCELLING: - return 4; - - case .DISMISSED: - return 5; - }; - }; - - // MARK: - Computed Properties - Public - // ------------------------------------ - - public var isDismissing: Bool { - switch self { - case .DISMISSING_UNKNOWN, - .DISMISSING_GESTURE, - .DISMISSING_PROGRAMMATIC: - return true; - - default: - return false; - }; - }; - - public var isDismissingKnown: Bool { - self.isDismissing && self != .DISMISSING_UNKNOWN; - }; - - public var isPresenting: Bool { - switch self { - case .PRESENTING_PROGRAMMATIC, - .PRESENTING_UNKNOWN, - .DISMISS_GESTURE_CANCELLING: - return true; - - default: - return false; - }; - }; - - public var isPresented: Bool { - switch self { - case .PRESENTED, - .PRESENTED_UNKNOWN: - return true; - - default: - return false; - }; - }; - - public var isNotSpecific: Bool { - switch self { - case .PRESENTED_UNKNOWN, - .PRESENTING_UNKNOWN, - .DISMISSING_UNKNOWN: - return true; - - default: - return false; - }; - }; - - // MARK: - Computed Properties - Alias - // ----------------------------------- - - public var isDismissViaGestureCancelling: Bool { - self == .DISMISS_GESTURE_CANCELLING; - }; - - public var isDismissingViaGesture: Bool { - self == .DISMISSING_GESTURE - }; - - public var isDismissed: Bool { - self == .DISMISSED || self == .INITIAL; - }; - - // MARK: - Computed Properties - Composite - // --------------------------------------- - - public var isDismissedOrDismissing: Bool { - self.isDismissed || self.isDismissing; - }; - - public var isPresentedOrPresenting: Bool { - self.isPresented || self.isPresenting; - }; -}; - -public struct RNIModalPresentationStateMachine: RNIDictionaryRepresentable { - - // MARK: - Properties - // ------------------ - - private(set) public var state: RNIModalPresentationState = .INITIAL; - private(set) public var statePrev: RNIModalPresentationState = .INITIAL; - - // MARK: - Properties - Completion Handlers - // ---------------------------------------- - - public var onDismissWillCancel: (() -> Void)?; - public var onDismissDidCancel: (() -> Void)?; - - // MARK: - Properties - // ------------------ - - private var _isInitialPresent: Bool? = nil; - private var _wasCancelledDismiss: Bool = false; - - public var wasCancelledPresent: Bool = false; - public var wasCancelledDismissViaGesture: Bool = false; - - // MARK: - Computed Properties - // --------------------------- - - public var isInitialPresent: Bool { - self._isInitialPresent ?? true; - }; - - public var isPresented: Bool { - self.state.isPresented - }; - - public var wasCancelledDismiss: Bool { - self._wasCancelledDismiss || self.wasCancelledDismissViaGesture; - }; - - public var didChange: Bool { - self.statePrev != self.state; - }; - - // MARK: RNIDictionaryRepresentable - // -------------------------------- - - public var asDictionary: [String : Any] {[ - "state": self.state, - "statePrev": self.statePrev, - "isInitialPresent": self.isInitialPresent, - "isPresented": self.isPresented, - "isDismissed": self.state.isDismissed, - "wasCancelledDismiss": self.wasCancelledDismiss, - "wasCancelledPresent": self.wasCancelledPresent, - "wasCancelledDismissViaGesture": self.wasCancelledDismissViaGesture, - ]}; - - // MARK: - Functions - // ----------------- - - init( - onDismissWillCancel: ( () -> Void)? = nil, - onDismissDidCancel: ( () -> Void)? = nil - ) { - self.onDismissWillCancel = onDismissWillCancel; - self.onDismissDidCancel = onDismissDidCancel; - } - - public mutating func set(state nextState: RNIModalPresentationState){ - let prevState = self.state; - - guard prevState != nextState else { - // early exit if no change - return - }; - - let isBecomingUnknown = !prevState.isNotSpecific && nextState.isNotSpecific; - let isSameStep = prevState.step == nextState.step; - - /// Do not over-write specific/"known state", with non-specific/"unknown - /// state", e.g. - /// - /// * ✅: `PRESENTING_UNKNOWN` -> `PRESENTING_PROGRAMMATIC` - /// * ❌: `DISMISSING_GESTURE` -> `DISMISSING_UNKNOWN` - /// - if isSameStep { - if !isBecomingUnknown { - self.state = nextState; - }; - - #if DEBUG - print( - "Warning - RNIModalPresentationStateMachine.set" - + " - prevState: \(prevState)" - + " - nextState: \(nextState)" - ); - #endif - return; - }; - - self.statePrev = prevState; - - if prevState.isDismissingViaGesture && nextState.isPresenting { - self.wasCancelledDismissViaGesture = true; - self.state = .DISMISS_GESTURE_CANCELLING; - self.onDismissWillCancel?(); - - } else if prevState.isDismissViaGestureCancelling && nextState.isPresented { - self.state = nextState; - self.onDismissDidCancel?(); - - } else { - self.state = nextState; - }; - - self.updateProperties(); - self.resetIfNeeded(); - - #if DEBUG - print( - "Log - RNIModalPresentationStateMachine.set" - + " - statePrev: \(self.statePrev)" - + " - nextState: \(self.state)" - + " - isInitialPresent: \(self.isInitialPresent)" - + " - wasCancelledPresent: \(self.wasCancelledPresent)" - + " - wasCancelledDismiss: \(self.wasCancelledDismiss)" - + " - wasCancelledDismissViaGesture: \(self.wasCancelledDismissViaGesture)" - ); - #endif - }; - - private mutating func updateProperties(){ - let nextState = self.state; - let prevState = self.statePrev; - - if nextState.isPresenting && self._isInitialPresent == nil { - self._isInitialPresent = true; - - } else if nextState.isPresenting && self._isInitialPresent == true { - self._isInitialPresent = false; - }; - - if prevState.isPresenting && nextState.isDismissedOrDismissing { - self.wasCancelledPresent = true; - - } else if prevState.isDismissing && nextState.isPresentedOrPresenting { - self._wasCancelledDismiss = true; - }; - }; - - private mutating func resetIfNeeded(){ - if self.state.isPresented { - self.wasCancelledPresent = false; - - } else if self.state == .DISMISSED { - // reset - self.wasCancelledDismissViaGesture = false; - self.wasCancelledPresent = false; - self._isInitialPresent = nil; - self._wasCancelledDismiss = false; - }; - }; -}; diff --git a/ios/React Native/RNIModal/RNIModalPresentationTrigger.swift b/ios/React Native/RNIModal/RNIModalPresentationTrigger.swift deleted file mode 100644 index c66c3b3d..00000000 --- a/ios/React Native/RNIModal/RNIModalPresentationTrigger.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// RNIModalPresentationTrigger.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/7/23. -// - -import UIKit - -public enum RNIModalPresentationTrigger: String { - case programmatic; - case gesture; - case request; - case reordering; - case unknown; -}; diff --git a/ios/React Native/RNIModal/RNIModalUtilities.swift b/ios/React Native/RNIModal/RNIModalUtilities.swift deleted file mode 100644 index 79335fb8..00000000 --- a/ios/React Native/RNIModal/RNIModalUtilities.swift +++ /dev/null @@ -1,121 +0,0 @@ -// -// RNIModalUtilities.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/1/23. -// - -import UIKit - -public class RNIModalUtilities { - - static func getPresentedModals( - forWindow window: UIWindow - ) -> [any RNIModal] { - - let vcItems = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - return vcItems.compactMap { - guard let modalVC = $0 as? RNIModalViewController else { return nil }; - return modalVC.modalViewRef; - }; - }; - - static func computeModalIndex( - forWindow window: UIWindow, - forViewController viewController: UIViewController? = nil - ) -> Int { - - let listPresentedVC = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - var index = -1; - - for vc in listPresentedVC { - if vc.presentingViewController != nil { - index += 1; - }; - - /// A - no `viewController` arg., keep counting until all items in - /// `listPresentedVC` have been exhausted. - guard viewController == nil else { continue }; - - /// B - `viewController` arg. specified, stop counting if found matching - /// instance of `viewController` in `listPresentedVC`. - guard viewController !== vc - else { break }; - }; - - return index; - }; - - static func computeModalIndex( - forWindow window: UIWindow?, - forViewController viewController: UIViewController? = nil - ) -> Int { - guard let window = window else { return -1 }; - - return Self.computeModalIndex( - forWindow: window, - forViewController: viewController - ); - }; - - static func getPresentedModal( - forPresentingViewController presentingVC: UIViewController, - presentedViewController presentedVC: UIViewController? = nil - ) -> (any RNIModal)? { - - let presentedVC = presentedVC ?? presentingVC.presentedViewController; - - /// A - `presentedVC` is a `RNIModalViewController`. - if let presentedModalVC = presentedVC as? RNIModalViewController { - return presentedModalVC.modalViewRef; - }; - - /// B - `presentingVC` is a `RNIModalViewController`. - if let presentingModalVC = presentingVC as? RNIModalViewController, - let presentingModal = presentingModalVC.modalViewRef, - let presentedModalVC = presentingModal.modalVC, - let presentedModal = presentedModalVC.modalViewRef { - - return presentedModal; - }; - - /// C - `presentedVC` has a corresponding `RNIModalViewControllerWrapper` - /// instance associated to it. - if let presentedVC = presentedVC, - let presentedModalWrapper = RNIModalViewControllerWrapperRegistry.get( - forViewController: presentedVC - ) { - - return presentedModalWrapper; - }; - - /// D - `presentingVC` has a `RNIModalViewControllerWrapper` instance - /// associated to it. - if let presentingModalWrapper = RNIModalViewControllerWrapperRegistry.get( - forViewController: presentingVC - ), - let presentedVC = presentingModalWrapper.modalViewController, - let presentedModalWrapper = RNIModalViewControllerWrapperRegistry.get( - forViewController: presentedVC - ) { - - return presentedModalWrapper; - }; - - let topmostVC = RNIUtilities.getTopmostPresentedViewController( - for: presentingVC.view.window - ); - - if let topmostModalVC = topmostVC as? RNIModalViewController, - let topmostModal = topmostModalVC.modalViewRef { - - return topmostModal; - }; - - return nil; - }; -}; diff --git a/ios/React Native/RNIModal/RNIModalWindowMap.swift b/ios/React Native/RNIModal/RNIModalWindowMap.swift deleted file mode 100644 index 437c4ed4..00000000 --- a/ios/React Native/RNIModal/RNIModalWindowMap.swift +++ /dev/null @@ -1,140 +0,0 @@ -// -// RNIModalWindowMap.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/8/23. -// - -import UIKit - - -internal class RNIWindowMapData { - - // MARK: - Properties - // ------------------ - - weak var window: UIWindow?; - - private(set) var modalIndexCurrent: Int = -1; - private(set) var modalIndexPrev: Int = -1; - private(set) var modalIndexNext: Int?; - - weak var nextModalToFocus: (any RNIModal)?; - weak var nextModalToBlur: (any RNIModal)?; - - #if DEBUG - var modalIndexNext_: String { - self.modalIndexNext == nil ? "N/A" : "\(self.modalIndexNext!)" - }; - #endif - - // MARK: - Functions - // ----------------- - - init(window: UIWindow){ - self.window = window; - }; - - func set(nextModalToFocus modalToFocus: any RNIModal) { - self.nextModalToFocus = modalToFocus; - - let modalIndexCurrent = - RNIModalUtilities.computeModalIndex(forWindow: modalToFocus.window); - - let modalIndexPrev = self.modalIndexCurrent; - - self.modalIndexCurrent = modalIndexCurrent; - self.modalIndexNext = modalIndexCurrent + 1; - self.modalIndexPrev = modalIndexPrev; - }; - - func apply(forFocusedModal focusedModal: any RNIModal) { - self.nextModalToFocus = nil; - - let modalIndexCurrent = - RNIModalUtilities.computeModalIndex(forWindow: focusedModal.window); - - let modalIndexPrev = self.modalIndexCurrent; - - self.modalIndexCurrent = modalIndexCurrent; - self.modalIndexNext = nil; - self.modalIndexPrev = modalIndexPrev; - - focusedModal.modalIndexPrev = modalIndexPrev; - focusedModal.modalIndex = modalIndexCurrent; - }; - - func set(nextModalToBlur modalToBlur: any RNIModal) { - self.nextModalToBlur = modalToBlur; - - let modalIndexCurrent = - RNIModalUtilities.computeModalIndex(forWindow: modalToBlur.window); - - let modalIndexPrev = self.modalIndexCurrent; - - self.modalIndexCurrent = modalIndexCurrent; - self.modalIndexNext = modalIndexCurrent - 1; - self.modalIndexPrev = modalIndexPrev; - }; - - func apply(forBlurredModal blurredModal: any RNIModal) { - self.nextModalToBlur = nil; - - let modalIndexCurrent = - RNIModalUtilities.computeModalIndex(forWindow: blurredModal.window); - - let modalIndexPrev = self.modalIndexCurrent; - - self.modalIndexCurrent = modalIndexCurrent; - self.modalIndexNext = nil; - self.modalIndexPrev = modalIndexPrev; - - blurredModal.modalIndexPrev = modalIndexPrev; - blurredModal.modalIndex = modalIndexCurrent; - }; - - // MARK: - Properties - Computed - // ----------------------------- - - var windowID: String? { - self.window?.synthesizedStringID; - }; -}; - -// MARK: - RNIModalWindowMap -// ------------------------- - -internal let RNIModalWindowMapShared = RNIModalWindowMap.sharedInstance; - -internal class RNIModalWindowMap { - - // MARK: - Properties - Static - // --------------------------- - - static var sharedInstance = RNIModalWindowMap(); - - // MARK: - Properties - // ------------------ - - private(set) var windowDataMap: Dictionary = [:]; - - // MARK: - Functions - // ----------------- - - func set(forWindow window: UIWindow, data: RNIWindowMapData){ - self.windowDataMap[window.synthesizedStringID] = data; - }; - - func get(forWindow window: UIWindow) -> RNIWindowMapData { - guard let windowData = self.windowDataMap[window.synthesizedStringID] else { - // No corresponding "modal index" for window yet, so initialize - // with value - let windowDataNew = RNIWindowMapData(window: window); - self.set(forWindow: window, data: windowDataNew); - - return windowDataNew; - }; - - return windowData; - }; -}; diff --git a/ios/React Native/RNIModal/RNIPresentedViewControllerCache.swift b/ios/React Native/RNIModal/RNIPresentedViewControllerCache.swift deleted file mode 100644 index 915190b2..00000000 --- a/ios/React Native/RNIModal/RNIPresentedViewControllerCache.swift +++ /dev/null @@ -1,72 +0,0 @@ -// -// RNIPresentedViewControllerCache.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/1/23. -// - -import UIKit - -let RNIPresentedVCListCache = RNIPresentedViewControllerCache.shared; - -class RNIPresentedViewControllerCache { - class Cache { - weak var targetWindow: UIWindow? = nil; - - var cacheRequestCount = 0; - - // note: this retains the vc instances... - var cache: [UIViewController]?; - - func clear(){ - self.targetWindow = nil; - self.cache = nil; - }; - }; - - static let shared = RNIPresentedViewControllerCache(); - - var map: Dictionary = [:]; - - func beginCaching(forWindow window: UIWindow?) -> () -> Void { - guard let window = window else { return {} }; - let windowID = window.synthesizedStringID; - - let cache: Cache = { - if let cache = self.map[windowID] { - return cache; - }; - - let newCache = Cache(); - newCache.targetWindow = window; - newCache.cache = RNIUtilities.getPresentedViewControllers(for: window); - - self.map[windowID] = newCache; - return newCache; - }(); - - cache.cacheRequestCount += 1; - - return { - cache.cacheRequestCount -= 1; - - guard cache.cacheRequestCount <= 0 else { return }; - - cache.clear(); - self.map.removeValue(forKey: windowID); - }; - }; - - func getPresentedViewControllers( - forWindow window: UIWindow? - ) -> [UIViewController] { - guard let windowID = window?.synthesizedStringID, - let cacheContainer = self.map[windowID], - let vcItemsCached = cacheContainer.cache - else { - return RNIUtilities.getPresentedViewControllers(for: window); - }; - - return vcItemsCached; - }; -}; diff --git a/ios/React Native/RNIModalView/RNIModalView.swift b/ios/React Native/RNIModalView/RNIModalView.swift deleted file mode 100644 index 46302371..00000000 --- a/ios/React Native/RNIModalView/RNIModalView.swift +++ /dev/null @@ -1,1284 +0,0 @@ -// -// RNIModalView.swift -// nativeUIModulesTest -// -// Created by Dominic Go on 6/9/20. -// Copyright © 2020 Facebook. All rights reserved. -// - -import Foundation - -public class RNIModalView: - UIView, RNIIdentifiable, RNIModalIdentifiable, RNIModalPresentationNotifying, - RNIModalState, RNIModalPresentation { - - public typealias CompletionHandler = () -> Void; - - enum NativeIDKey: String { - case modalViewContent; - }; - - // MARK: - Properties - RNIIdentifiable - // ------------------------------------ - - public static var synthesizedIdPrefix: String = "modal-id-"; - - // MARK: - Properties - // ------------------ - - weak var bridge: RCTBridge?; - - var modalContentWrapper: RNIWrapperView?; - public var modalVC: RNIModalViewController?; - - public var sheetDetentStringCurrent: String?; - public var sheetDetentStringPrevious: String?; - - // MARK: - Properties - RNIModalPresentationNotifying - // -------------------------------------------------- - - public weak var modalPresentationNotificationDelegate: - RNIModalPresentationNotifiable!; - - // MARK: - Properties - RNIModalIdentifiable - // ----------------------------------------- - - public var modalUserID: String? { - self.modalID as? String - }; - - // MARK: - Properties - RNIModalState - // ---------------------------------- - - public var modalIndex: Int!; - public var modalIndexPrev: Int!; - - public lazy var modalPresentationState = RNIModalPresentationStateMachine( - onDismissWillCancel: { [unowned self] in - let eventData = self.synthesizedBaseEventData; - self.onModalDismissWillCancel?( - eventData.synthesizedJSDictionary - ); - }, - - onDismissDidCancel: { [unowned self] in - let eventData = self.synthesizedBaseEventData; - self.onModalDismissDidCancel?( - eventData.synthesizedJSDictionary - ); - } - ); - - public var modalFocusState = RNIModalFocusStateMachine(); - - // MARK: - Properties - RNIModalPresentation - // ----------------------------------------- - - public var modalViewController: UIViewController? { - self.modalVC; - }; - - public weak var presentingViewController: UIViewController?; - - // MARK: - Properties: React Props - Events - // ---------------------------------------- - - @objc var onModalWillPresent: RCTBubblingEventBlock?; - @objc var onModalDidPresent: RCTBubblingEventBlock?; - - @objc var onModalWillDismiss: RCTBubblingEventBlock?; - @objc var onModalDidDismiss: RCTBubblingEventBlock?; - - @objc var onModalWillShow: RCTBubblingEventBlock?; - @objc var onModalDidShow: RCTBubblingEventBlock?; - - @objc var onModalWillHide: RCTBubblingEventBlock?; - @objc var onModalDidHide: RCTBubblingEventBlock?; - - @objc var onModalWillFocus: RCTBubblingEventBlock?; - @objc var onModalDidFocus: RCTBubblingEventBlock?; - - @objc var onModalWillBlur: RCTBubblingEventBlock?; - @objc var onModalDidBlur: RCTBubblingEventBlock?; - - @objc var onPresentationControllerWillDismiss: RCTBubblingEventBlock?; - @objc var onPresentationControllerDidDismiss: RCTBubblingEventBlock?; - @objc var onPresentationControllerDidAttemptToDismiss: RCTBubblingEventBlock?; - - @objc var onModalDetentDidCompute: RCTBubblingEventBlock?; - @objc var onModalDidChangeSelectedDetentIdentifier: RCTBubblingEventBlock?; - - @objc var onModalDidSnap: RCTBubblingEventBlock?; - - @objc var onModalSwipeGestureStart: RCTBubblingEventBlock?; - @objc var onModalSwipeGestureDidEnd: RCTBubblingEventBlock?; - - @objc var onModalDismissWillCancel: RCTBubblingEventBlock?; - @objc var onModalDismissDidCancel: RCTBubblingEventBlock?; - - // MARK: - Properties: React Props - General - // ----------------------------------------- - - /// user-provided identifier for this modal - @objc var modalID: NSString? = nil; - - @objc var modalContentPreferredContentSize: NSDictionary? { - didSet { - self.modalVC?.setPreferredContentSize(withWindow: self.window); - } - }; - - // MARK: - Properties: React Props - BG-Related - // -------------------------------------------- - - @objc var isModalBGBlurred: Bool = true { - didSet { - guard oldValue != self.isModalBGBlurred else { return }; - self.modalVC?.isBGBlurred = self.isModalBGBlurred; - } - }; - - @objc var isModalBGTransparent: Bool = true { - didSet { - guard oldValue != self.isModalBGTransparent else { return }; - self.modalVC?.isBGTransparent = self.isModalBGTransparent; - } - }; - - @objc var modalBGBlurEffectStyle: NSString = "" { - didSet { - guard oldValue != self.modalBGBlurEffectStyle - else { return }; - - self.modalVC?.blurEffectStyle = self.synthesizedModalBGBlurEffectStyle; - } - }; - - // MARK: - Properties: React Props - Presentation/Transition - // --------------------------------------------------------- - - @objc var modalPresentationStyle: NSString = ""; - - @objc var modalTransitionStyle: NSString = ""; - - @objc var hideNonVisibleModals: Bool = false; - - /// control modal present/dismiss by mounting/un-mounting the react subview - /// * `true`: the modal is presented/dismissed when the view is mounted - /// or unmounted - /// - /// * `false`: the modal is presented/dismissed by calling the functions from - /// js/react - /// - @objc var presentViaMount: Bool = false; - - /// disable swipe gesture recognizer for this modal - @objc var enableSwipeGesture: Bool = true { - didSet { - let newValue = self.enableSwipeGesture; - guard newValue != oldValue else { return }; - - self.modalGestureRecognizer?.isEnabled = newValue; - } - }; - - /// allow modal to be programmatically closed even when not current focused - /// * `true`: the modal can be dismissed even when it's not the topmost - /// presented modal. - /// - /// * `false`: the modal can only be dismissed if it's in focus, otherwise - /// error. - /// - @objc var allowModalForceDismiss: Bool = true; - - @objc var isModalInPresentation: Bool = false { - willSet { - guard #available(iOS 13.0, *), - let vc = self.modalVC - else { return }; - - vc.isModalInPresentation = newValue - } - }; - - // MARK: - Properties: React Props - Sheet-Related - // ----------------------------------------------- - - @objc var modalSheetDetents: NSArray?; - - @objc var sheetPrefersScrollingExpandsWhenScrolledToEdge: Bool = true { - willSet { - guard #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController - else { return }; - - sheetController.prefersScrollingExpandsWhenScrolledToEdge = newValue; - } - }; - - @objc var sheetPrefersEdgeAttachedInCompactHeight: Bool = false { - willSet { - guard #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController - else { return }; - - self.sheetAnimateChangesIfNeeded { - sheetController.prefersEdgeAttachedInCompactHeight = newValue; - }; - } - }; - - @objc var sheetWidthFollowsPreferredContentSizeWhenEdgeAttached: Bool = false { - willSet { - guard #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController - else { return }; - - sheetController - .widthFollowsPreferredContentSizeWhenEdgeAttached = newValue; - } - }; - - @objc var sheetPrefersGrabberVisible: Bool = false { - willSet { - guard #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController - else { return }; - - self.sheetAnimateChangesIfNeeded { - sheetController.prefersGrabberVisible = newValue; - }; - } - }; - - @objc var sheetShouldAnimateChanges: Bool = true; - - @objc var sheetLargestUndimmedDetentIdentifier: String? { - didSet { - guard #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController - else { return }; - - self.sheetAnimateChangesIfNeeded { - sheetController.largestUndimmedDetentIdentifier = - self.synthesizedSheetLargestUndimmedDetentIdentifier; - }; - } - }; - - @objc var sheetPreferredCornerRadius: NSNumber? { - didSet { - let newValue = self.sheetPreferredCornerRadius; - - guard #available(iOS 15.0, *), - oldValue != newValue, - let sheetController = self.sheetPresentationController, - let cornerRadius = newValue?.doubleValue - else { return }; - - self.sheetAnimateChangesIfNeeded { - sheetController.preferredCornerRadius = cornerRadius; - }; - } - }; - - @objc var sheetSelectedDetentIdentifier: String? { - didSet { - let newValue = self.sheetSelectedDetentIdentifier; - - guard oldValue != newValue, - #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController - else { return }; - - let nextDetentID = self.synthesizedSheetSelectedDetentIdentifier; - - self.sheetAnimateChangesIfNeeded { - sheetController.selectedDetentIdentifier = nextDetentID; - }; - - /// Delegate function does not get called when detent is changed via - /// setting `selectedDetentIdentifier`, so invoke manually... - /// - self.sheetPresentationControllerDidChangeSelectedDetentIdentifier( - sheetController - ); - } - }; - - // MARK: - Properties: Synthesized From Props - // ------------------------------------------ - - public var synthesizedModalContentPreferredContentSize: RNIComputableSize? { - guard let dict = self.modalContentPreferredContentSize, - let computableSize = RNIComputableSize(fromDict: dict) - else { return nil }; - - return computableSize; - }; - - public var synthesizedModalPresentationStyle: UIModalPresentationStyle { - let defaultStyle: UIModalPresentationStyle = { - guard #available(iOS 13.0, *) else { return .overFullScreen }; - return .automatic; - }(); - - guard let style = UIModalPresentationStyle( - string: self.modalPresentationStyle as String - ) else { - #if DEBUG - print( - "Error - RNIModalView.synthesizedModalPresentationStyle" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - Unable to parse presentation style string" - + " - modalPresentationStyle: '\(self.modalPresentationStyle)'" - + " - using default style: '\(defaultStyle)'" - ); - #endif - return defaultStyle; - }; - - switch style { - case .automatic, - .pageSheet, - .formSheet, - .fullScreen, - .overFullScreen: - - return style; - - default: - #if DEBUG - print( - "Error - RNIModalView.synthesizedModalPresentationStyle" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - Unsupported presentation style string value" - + " - modalPresentationStyle: '\(self.modalPresentationStyle)'" - + " - Using default style: '\(defaultStyle)'" - ); - #endif - return defaultStyle; - }; - }; - - public var synthesizedModalTransitionStyle: UIModalTransitionStyle { - let defaultStyle: UIModalTransitionStyle = .coverVertical ; - - // TODO:2023-03-22-13-18-14 - Refactor: Move `fromString` to enum init - guard let style = - UIModalTransitionStyle.fromString(self.modalTransitionStyle as String) - else { - #if DEBUG - print( - "Error - RNIModalView.synthesizedModalTransitionStyle " - + " - self.modalNativeID: \(self.modalNativeID)" - + " - Unable to parse string value" - + " - modalPresentationStyle: '\(self.modalPresentationStyle)'" - + " - Using default style: '\(defaultStyle)'" - ); - #endif - return defaultStyle; - }; - - return style; - }; - - public var synthesizedModalBGBlurEffectStyle: UIBlurEffect.Style { - // Provide default value - let defaultStyle: UIBlurEffect.Style = { - guard #available(iOS 13.0, *) else { return .light }; - return .systemThinMaterial; - }(); - - guard let blurStyle = UIBlurEffect.Style( - string: self.modalBGBlurEffectStyle as String - ) else { - #if DEBUG - print( - "Error - RNIModalView.synthesizedModalBGBlurEffectStyle" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - Unable to parse string value" - + " - modalPresentationStyle: '\(self.modalPresentationStyle)'" - + " - Using default style: '\(defaultStyle)'" - ); - #endif - return defaultStyle; - }; - - return blurStyle; - }; - - @available(iOS 15.0, *) - public var synthesizedModalSheetDetents: [UISheetPresentationController.Detent]? { - self.modalSheetDetents?.compactMap { - if let string = $0 as? String, - let detent = UISheetPresentationController.Detent.fromString(string) { - - return detent; - - } else if #available(iOS 16.0, *), - let dict = $0 as? Dictionary { - - let customDetent = RNIModalCustomSheetDetent(forDict: dict) { - _, maximumDetentValue, computedDetentValue, sender in - - let eventData = RNIModalDetentDidComputeEventData( - maximumDetentValue: maximumDetentValue, - computedDetentValue: computedDetentValue, - key: sender.key - ); - - self.onModalDetentDidCompute?( - eventData.synthesizedJSDictionary - ); - }; - - return customDetent?.synthesizedDetent; - }; - - return nil; - }; - }; - - @available(iOS 15.0, *) - public var synthesizedSheetLargestUndimmedDetentIdentifier: - UISheetPresentationController.Detent.Identifier? { - - guard let identifierString = self.sheetLargestUndimmedDetentIdentifier - else { return nil }; - - return UISheetPresentationController.Detent.Identifier( - fromString: identifierString - ); - }; - - @available(iOS 15.0, *) - public var synthesizedSheetSelectedDetentIdentifier: - UISheetPresentationController.Detent.Identifier? { - - guard let identifierString = self.sheetSelectedDetentIdentifier - else { return nil }; - - return UISheetPresentationController.Detent.Identifier( - fromString: identifierString - ); - }; - - // MARK: - Properties: Synthesized - // ------------------------------- - - public var synthesizedBaseEventData: RNIModalBaseEventData { - RNIModalBaseEventData( - reactTag: self.reactTag.intValue, - modalID: self.modalID as? String, - modalData: self.synthesizedModalData - ); - }; - - // MARK: - Properties: Computed - // ---------------------------- - - // TODO: Move to `RNIModal+Helpers` - @available(iOS 15.0, *) - var sheetPresentationController: UISheetPresentationController? { - guard let presentedVC = self.modalViewController else { return nil }; - - switch presentedVC.modalPresentationStyle { - case .popover: - return presentedVC.popoverPresentationController? - .adaptiveSheetPresentationController; - - case .automatic, - .formSheet, - .pageSheet: - return presentedVC.sheetPresentationController; - - default: - return nil; - }; - }; - - @available(iOS 15.0, *) - var currentSheetDetentID: UISheetPresentationController.Detent.Identifier? { - guard let sheetController = self.sheetPresentationController - else { return nil }; - - let detents = sheetController.detents; - - if let selectedDetent = sheetController.selectedDetentIdentifier { - return selectedDetent; - - } else if #available(iOS 16.0, *), - let firstDetent = detents.first { - - /// The default value of `selectedDetentIdentifier` is nil, which means - /// the sheet displays at the smallest detent you specify in detents. - return firstDetent.identifier; - }; - - return nil; - }; - - var currentSheetDetentString: String? { - guard #available(iOS 15.0, *) else { return nil }; - return currentSheetDetentID?.rawValue; - }; - - var isModalViewPresentationNotificationEnabled: Bool { - RNIModalFlagsShared.isModalViewPresentationNotificationEnabled - }; - - var modalGestureRecognizer: UIGestureRecognizer? { - guard let modalVC = self.modalVC, - let controller = modalVC.presentationController, - let gestureRecognizers = controller.presentedView?.gestureRecognizers - else { return nil }; - - return gestureRecognizers.first; - }; - - var debugData: Dictionary { - self.synthesizedModalData.synthesizedJSDictionary - }; - - // MARK: - Init - // ------------ - - init(bridge: RCTBridge) { - super.init(frame: CGRect()); - - self.bridge = bridge; - RNIModalManagerShared.register(modal: self); - }; - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder); - fatalError("Not implemented"); - }; - - // MARK: - UIKit Lifecycle - // ----------------------- - - public override func didMoveToWindow() { - super.didMoveToWindow(); - - if self.presentViaMount { - try? self.dismissModal(); - }; - }; - - public override func didMoveToSuperview() { - super.didMoveToSuperview(); - - if self.presentViaMount { - try? self.presentModal(); - }; - }; - - // MARK: - React-Native Lifecycle - // ------------------------------ - - public override func insertReactSubview(_ subview: UIView!, at atIndex: Int) { - super.insertReactSubview(subview, at: atIndex); - - guard let wrapperView = subview as? RNIWrapperView, - let nativeID = subview.nativeID, - let nativeIDKey = NativeIDKey(rawValue: nativeID) - else { return }; - - self.initControllers(); - wrapperView.isMovingToParent = true; - - switch nativeIDKey { - case .modalViewContent: - guard self.modalContentWrapper !== wrapperView, - self.modalContentWrapper?.reactTag != wrapperView.reactTag - else { return }; - - if let oldModalContentWrapper = self.modalContentWrapper { - - oldModalContentWrapper.cleanup(); - self.modalContentWrapper = nil; - self.deinitControllers(); - }; - - self.modalContentWrapper = wrapperView; - self.initControllers(); - }; - - wrapperView.removeFromSuperview(); - wrapperView.isMovingToParent = false; - }; - - public override func removeReactSubview(_ subview: UIView!) { - super.removeReactSubview(subview); - }; - - // MARK: - Functions - Private - // ---------------------------- - - private func initControllers(){ - #if DEBUG - print( - "Log - RNIModalView.initControllers" - + " - self.modalNativeID: '\(self.modalNativeID)'" - ); - #endif - - self.modalVC = { - let vc = RNIModalViewController(); - - vc.modalViewRef = self; - vc.lifecycleDelegate = self; - - vc.isBGBlurred = self.isModalBGBlurred; - vc.isBGTransparent = self.isModalBGTransparent; - - vc.blurEffectStyle = self.synthesizedModalBGBlurEffectStyle; - - return vc; - }(); - }; - - private func deinitControllers(){ - #if DEBUG - print( - "Log - RNIModalView.deinitControllers" - + " - self.modalNativeID: '\(self.modalNativeID)'" - ); - #endif - - self.modalVC = nil; - self.presentingViewController = nil; - }; - - private func setupOnModalInitialPresent(){ - guard let panGesture = self.modalGestureRecognizer else { return }; - - panGesture.addTarget(self, - action: #selector(Self.handleGestureRecognizer(_:)) - ); - }; - - private func notifyIfModalDismissCancelled(){ - guard let modalVC = self.modalVC, - let transitionCoordinator = modalVC.transitionCoordinator - else { return }; - - transitionCoordinator.notifyWhenInteractionChanges { - guard $0.isCancelled else { return }; - - self.modalPresentationState.set(state: .DISMISS_GESTURE_CANCELLING); - self.modalPresentationState.wasCancelledDismissViaGesture = true; - - self.modalPresentationNotificationDelegate - .notifyOnModalWillShow(sender: self); - }; - - self.modalVC?.transitionCoordinator?.animate(alongsideTransition: nil) { - guard $0.isCancelled else { return }; - - self.modalPresentationNotificationDelegate - .notifyOnModalDidShow(sender: self); - }; - }; - - @objc private func handleGestureRecognizer(_ sender: UIGestureRecognizer) { - guard let window = self.window else { return }; - - switch sender.state { - case .began: - let gestureEventData = RNIModalSwipeGestureEventData( - position: sender.location(in: window) - ); - - self.onModalSwipeGestureStart?( - gestureEventData.synthesizedJSDictionary - ); - - case .ended: - let gestureEventData = RNIModalSwipeGestureEventData( - position: sender.location(in: window) - ); - - self.onModalSwipeGestureDidEnd?( - gestureEventData.synthesizedJSDictionary - ); - - guard let presentationController = self.modalVC?.presentationController, - let presentedView = presentationController.presentedView, - let positionAnimation = - presentedView.layer.animation(forKey: "position") - else { break }; - - positionAnimation.waitUntiEnd { - let eventData = RNIModalDidSnapEventData( - selectedDetentIdentifier: self.currentSheetDetentString, - modalContentSize: presentedView.bounds.size - ); - - self.onModalDidSnap?( - eventData.synthesizedJSDictionary - ); - }; - - default: break; - }; - }; - - /// `TODO:2023-03-22-12-07-54` - /// * Refactor: Move to `RNIModalManager` - /// - /// helper func to hide/show the other modals that are below level - private func setIsHiddenForViewBelowLevel(_ level: Int, isHidden: Bool){ - let presentedVCList = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - for (index, vc) in presentedVCList.enumerated() { - if index < level { - vc.view.isHidden = isHidden; - }; - }; - }; - - @available(iOS 15.0, *) - private func sheetAnimateChangesIfNeeded(_ block: () -> Void){ - guard let sheetController = self.sheetPresentationController - else { return }; - - if self.sheetShouldAnimateChanges { - sheetController.animateChanges { - block(); - }; - - } else { - block(); - }; - }; - - @available(iOS 15.0, *) - private func applyModalSheetProps( - to sheetController: UISheetPresentationController - ){ - - if let detents = self.synthesizedModalSheetDetents, detents.count >= 1 { - sheetController.detents = detents; - }; - - sheetController.prefersScrollingExpandsWhenScrolledToEdge = - self.sheetPrefersScrollingExpandsWhenScrolledToEdge; - - sheetController.prefersEdgeAttachedInCompactHeight = - self.sheetPrefersEdgeAttachedInCompactHeight; - - sheetController.widthFollowsPreferredContentSizeWhenEdgeAttached = - self.sheetWidthFollowsPreferredContentSizeWhenEdgeAttached; - - sheetController.prefersGrabberVisible = self.sheetPrefersGrabberVisible; - - sheetController.largestUndimmedDetentIdentifier = - self.synthesizedSheetLargestUndimmedDetentIdentifier; - - if let cornerRadius = self.sheetPreferredCornerRadius?.doubleValue { - sheetController.preferredCornerRadius = cornerRadius; - }; - - sheetController.selectedDetentIdentifier = - self.synthesizedSheetSelectedDetentIdentifier; - }; - - // MARK: - Functions - Public - // -------------------------- - - public func presentModal( - animated: Bool = true, - completion: CompletionHandler? = nil - ) throws { - guard self.window != nil else { - throw RNIModalError( - code: .runtimeError, - message: "Guard check failed, window is nil", - debugData: self.debugData - ); - }; - - guard !self.computedIsModalPresented else { - throw RNIModalError( - code: .modalAlreadyVisible, - message: "Guard check failed, modal already presented", - debugData: self.debugData - ); - }; - - let presentedViewControllers = - RNIPresentedVCListCache.getPresentedViewControllers(forWindow: window); - - guard let topMostPresentedVC = presentedViewControllers.last else { - throw RNIModalError( - code: .runtimeError, - message: "Guard check failed, could not get topMostPresentedVC", - debugData: self.debugData - ); - }; - - guard let modalVC = self.modalVC else { - throw RNIModalError( - code: .runtimeError, - message: "Guard check failed, could not get modalVC", - debugData: self.debugData - ); - }; - - modalVC.modalTransitionStyle = self.synthesizedModalTransitionStyle; - modalVC.modalPresentationStyle = self.synthesizedModalPresentationStyle; - - if #available(iOS 15.0, *), - let sheetController = self.sheetPresentationController { - - sheetController.delegate = self; - self.applyModalSheetProps(to: sheetController); - }; - - #if DEBUG - print( - "Log - RNIModalView.presentModal - Start presenting" - + " - self.reactTag: \(self.reactTag ?? -1)" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - self.modalIndex: \(self.modalIndex!)" - + " - self.modalID: \(self.modalID ?? "N/A")" - + " - self.presentationStyle: \(self.synthesizedModalPresentationStyle)" - + " - self.transitionStyle: \(self.synthesizedModalTransitionStyle)" - ); - #endif - - // Temporarily disable swipe gesture while it's being presented - self.modalGestureRecognizer?.isEnabled = false; - - self.presentingViewController = topMostPresentedVC; - - /// set specific "presenting" state - self.modalPresentationState.set(state: .PRESENTING_PROGRAMMATIC); - - self.onModalWillPresent?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - - topMostPresentedVC.present(modalVC, animated: animated) { [unowned self] in - - // Become the modal's presentation delegate after it has been presented - // in order to not override system-defined default modal behavior - modalVC.presentationController?.delegate = self; - - // Reset swipe gesture before it was temporarily disabled - self.modalGestureRecognizer?.isEnabled = self.enableSwipeGesture; - - self.modalPresentationState.set(state: .PRESENTED); - - self.onModalDidPresent?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - - completion?(); - - #if DEBUG - print( - "Log - RNIModalView.presentModal - Present modal finished" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - self.modalIndex: \(self.modalIndex!)" - + " - self.modalID: \(self.modalID ?? "N/A")" - ); - #endif - }; - }; - - public func dismissModal( - animated: Bool = true, - completion: CompletionHandler? = nil - ) throws { - guard self.computedIsModalPresented else { - throw RNIModalError( - code: .modalAlreadyHidden, - message: "Guard check failed, modal already dismissed", - debugData: self.debugData - ); - }; - - guard let modalVC = self.modalVC else { - throw RNIModalError( - code: .runtimeError, - message: "Guard check failed, Unable to get modalVC", - debugData: self.debugData - ); - }; - - let isModalInFocus = self.computedIsModalInFocus; - - let shouldDismiss = isModalInFocus - ? true - : self.allowModalForceDismiss; - - guard shouldDismiss else { - throw RNIModalError( - code: .dismissRejected, - message: "Guard check failed, shouldDismiss prop is false", - debugData: self.debugData - ); - }; - - /// TODO:2023-03-22-12-12-05 - Remove? - let presentedVC: UIViewController = isModalInFocus - ? modalVC - : modalVC.presentingViewController! - - - #if DEBUG - print( - "Log - RNIModalView.dismissModal" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - Start dismissing modal" - ); - #endif - - self.modalGestureRecognizer?.isEnabled = false; - - /// set specific "dismissing" state - self.modalPresentationState.set(state: .DISMISSING_PROGRAMMATIC); - - self.onModalWillDismiss?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - - presentedVC.dismiss(animated: animated){ - self.modalPresentationState.set(state: .DISMISSED); - - self.onModalDidDismiss?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - - completion?(); - - #if DEBUG - print( - "Log - RNIModalView.dismissModal" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - Dismiss modal finished" - ); - #endif - }; - }; -}; - -// MARK: - UIAdaptivePresentationControllerDelegate -// ------------------------------------------------ - -/// `Note:2023-03-31-16-48-10` -/// -/// * The "blur/focus"-related events in -/// `UIAdaptivePresentationControllerDelegate` only fire in response to user -/// gestures (i.e. if the user swiped the modal away). -/// -/// * In other words, if the modal was closed programmatically, the -/// `UIAdaptivePresentationControllerDelegate`-related events will not get -/// invoked. -/// -extension RNIModalView: UIAdaptivePresentationControllerDelegate { - - /// `Note:2023-03-31-17-01-57` - /// - /// * This gets called whenever the user starts swiping the modal down, - /// regardless of whether or not the swipe action was cancelled half-way - /// through. - /// - /// * Only called when the sheet is dismissed by DRAGGING. - /// - /// - /// `Note:2023-04-01-14-52-05` - /// - /// * Invocation history when a modal is dismissed via a swipe gesture, but - /// was cancelled half-way - /// - /// * A - Swipe dismiss gesture begin... - /// * 1 - `presentationControllerWillDismiss - /// * 2 - `viewWillDisappear` - /// * B - Swipe dismiss gesture cancelled... - /// * 3 - `viewWillAppear` - /// * 4 - `viewDidAppear` - /// - public func presentationControllerWillDismiss( - _ presentationController: UIPresentationController - ) { - self.modalPresentationState.set(state: .DISMISSING_GESTURE); - - #if DEBUG - print( - "Log - RNIModalView+UIAdaptivePresentationControllerDelegate" - + " - RNIModalView.presentationControllerWillDismiss" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - self.modalIndex: \(self.modalIndex!)" - ); - #endif - }; - - public func presentationControllerDidDismiss( - _ presentationController: UIPresentationController - ) { - self.modalPresentationNotificationDelegate - .notifyOnModalDidHide(sender: self); - - #if DEBUG - print( - "Log - RNIModalView+UIAdaptivePresentationControllerDelegate" - + " - RNIModalView.presentationControllerDidDismiss" - + " - self.modalNativeID: \(self.modalNativeID)" - ); - #endif - }; - - /// `Note:2023-04-07-01-28-57` - /// No other "view controller"-related lifecycle method was trigger in - /// response to this event being invoked. - /// - public func presentationControllerDidAttemptToDismiss( - _ presentationController: UIPresentationController - ) { - - #if DEBUG - print( - "Log - RNIModalView+UIAdaptivePresentationControllerDelegate" - + " - RNIModalView.presentationControllerDidAttemptToDismiss" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - self.modalIndex: \(self.modalIndex!)" - ); - #endif - }; -}; - -// MARK: - UISheetPresentationControllerDelegate -// --------------------------------------------- - -@available(iOS 15.0, *) -extension RNIModalView: UISheetPresentationControllerDelegate { - - /// `Note:2023-04-22-03-50-59` - /// - /// * This function gets invoked when the sheet has snapped into a detent - /// - /// * However, we don't get notified whenever the user is currently dragging - /// the sheet. - /// - /// * The `presentedViewController.transitionCoordinator` is only available - /// during modal presentation and dismissal. - /// - /// - public func sheetPresentationControllerDidChangeSelectedDetentIdentifier( - _ sheetPresentationController: UISheetPresentationController - ) { - let currentDetentID = self.currentSheetDetentID; - - self.sheetDetentStringPrevious = self.sheetDetentStringCurrent; - self.sheetDetentStringCurrent = currentDetentID?.description; - - #if DEBUG - print( - "Log - RNIModalView+UISheetPresentationControllerDelegate" - + " - sheetPresentationControllerDidChangeSelectedDetentIdentifier" - + " - sheetDetentStringPrevious: \(self.sheetDetentStringPrevious ?? "N/A")" - + " - sheetDetentStringCurrent: \(self.sheetDetentStringCurrent ?? "N/A")" - ); - #endif - - let eventData = RNIModalDidChangeSelectedDetentIdentifierEventData( - sheetDetentStringPrevious: self.sheetDetentStringPrevious, - sheetDetentStringCurrent: self.sheetDetentStringCurrent - ); - - self.onModalDidChangeSelectedDetentIdentifier?( - eventData.synthesizedJSDictionary - ); - }; -}; - -// MARK: Extension: RNIModalRequestable -// ------------------------------------ - -extension RNIModalView: RNIModalRequestable { - - public func requestModalToShow( - sender: Any, - animated: Bool, - completion: @escaping () -> Void - ) throws { - try self.presentModal(animated: animated, completion: completion); - }; - - public func requestModalToHide( - sender: Any, - animated: Bool, - completion: @escaping () -> Void - ) throws { - try self.dismissModal(animated: animated, completion: completion); - }; -}; - -// MARK: - RNIViewControllerLifeCycleNotifiable -// -------------------------------------------- - -extension RNIModalView: RNIViewControllerLifeCycleNotifiable { - - public func viewWillAppear(sender: UIViewController, animated: Bool) { - guard sender.isBeingPresented else { return }; - self.modalPresentationState.set(state: .PRESENTING_UNKNOWN); - - if self.modalPresentationState.didChange { - self.onModalWillShow?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - }; - - if self.isModalViewPresentationNotificationEnabled { - self.modalPresentationNotificationDelegate - .notifyOnModalWillShow(sender: self); - }; - - if self.modalPresentationState.isInitialPresent { - self.setupOnModalInitialPresent(); - }; - }; - - public func viewDidAppear(sender: UIViewController, animated: Bool) { - guard sender.isBeingPresented else { return }; - self.modalPresentationState.set(state: .PRESENTED_UNKNOWN); - - if self.modalPresentationState.didChange { - self.onModalDidShow?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - }; - - if self.isModalViewPresentationNotificationEnabled { - self.modalPresentationNotificationDelegate - .notifyOnModalDidShow(sender: self); - }; - }; - - public func viewWillDisappear(sender: UIViewController, animated: Bool) { - guard sender.isBeingDismissed else { return }; - self.modalPresentationState.set(state: .DISMISSING_UNKNOWN); - - if self.modalPresentationState.didChange { - self.onModalWillHide?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - }; - - if self.isModalViewPresentationNotificationEnabled { - self.modalPresentationNotificationDelegate - .notifyOnModalWillHide(sender: self); - }; - - self.notifyIfModalDismissCancelled(); - }; - - public func viewDidDisappear(sender: UIViewController, animated: Bool) { - guard sender.isBeingDismissed else { return }; - self.modalPresentationState.set(state: .DISMISSED); - - if self.modalPresentationState.didChange { - self.onModalDidHide?( - self.synthesizedBaseEventData.synthesizedJSDictionary - ); - }; - - if self.isModalViewPresentationNotificationEnabled { - self.modalPresentationNotificationDelegate - .notifyOnModalDidHide(sender: self); - }; - - self.deinitControllers(); - }; -}; - - -// MARK: Extension: RNIModalFocusNotifiable -// ---------------------------------------- - -/// `Note:2023-03-31-17-51-56` -extension RNIModalView: RNIModalFocusNotifiable { - - public func onModalWillFocusNotification(sender: any RNIModal) { - guard self.modalFocusState.didChange else { return }; - - let eventData = RNIOnModalFocusEventData( - modalData: self.synthesizedBaseEventData, - senderInfo: sender.synthesizedModalData, - isInitial: sender === self - ); - - self.onModalWillFocus?( - eventData.synthesizedJSDictionary - ); - }; - - public func onModalDidFocusNotification(sender: any RNIModal) { - guard self.modalFocusState.didChange else { return }; - - let eventData = RNIOnModalFocusEventData( - modalData: self.synthesizedBaseEventData, - senderInfo: sender.synthesizedModalData, - isInitial: sender === self - ); - - self.onModalDidFocus?( - eventData.synthesizedJSDictionary - ); - - #if DEBUG - print( - "Log - RNIModalView.onModalDidFocusNotification" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - self.modalIndex: \(self.modalIndex!)" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - arg sender.modalIndex: \(sender.modalIndex!)" - ); - #endif - - }; - - public func onModalWillBlurNotification(sender: any RNIModal) { - guard self.modalFocusState.didChange else { return }; - - let eventData = RNIOnModalFocusEventData( - modalData: self.synthesizedBaseEventData, - senderInfo: sender.synthesizedModalData, - isInitial: sender === self - ); - - self.onModalWillBlur?( - eventData.synthesizedJSDictionary - ); - }; - - public func onModalDidBlurNotification(sender: any RNIModal) { - guard self.modalFocusState.didChange else { return }; - - let eventData = RNIOnModalFocusEventData( - modalData: self.synthesizedBaseEventData, - senderInfo: sender.synthesizedModalData, - isInitial: sender === self - ); - - self.onModalDidBlur?( - eventData.synthesizedJSDictionary - ); - - #if DEBUG - print( - "Log - RNIModalView.onModalDidBlurNotification" - + " - self.modalNativeID: \(self.modalNativeID)" - + " - self.modalIndex: \(self.modalIndex!)" - + " - arg sender.modalNativeID: \(sender.modalNativeID)" - + " - arg sender.modalIndex: \(sender.modalIndex!)" - ); - #endif - }; -}; diff --git a/ios/React Native/RNIModalView/RNIModalViewController.swift b/ios/React Native/RNIModalView/RNIModalViewController.swift deleted file mode 100644 index 941f1640..00000000 --- a/ios/React Native/RNIModalView/RNIModalViewController.swift +++ /dev/null @@ -1,369 +0,0 @@ -// -// RNIModalViewController.swift -// nativeUIModulesTest -// -// Created by Dominic Go on 6/9/20. -// Copyright © 2020 Facebook. All rights reserved. -// - -import Foundation - -public class RNIModalViewController: UIViewController { - - // MARK: - Properties - // ------------------ - - weak var modalViewRef: RNIModalView?; - weak var lifecycleDelegate: RNIViewControllerLifeCycleNotifiable?; - - var isBGTransparent: Bool = true { - didSet { - guard oldValue != self.isBGTransparent else { return }; - self.updateBackgroundTransparency(); - self.updateBackgroundBlur(); - } - }; - var isBGBlurred: Bool = true { - didSet { - guard oldValue != self.isBGBlurred else { return }; - self.updateBackgroundBlur(); - } - }; - - private(set) public var prevBounds: CGRect?; - - private var initialSize: CGSize?; - - // MARK: - Properties - Computed - // ----------------------------- - - var modalID: String? { - self.modalViewRef?.modalID as? String - }; - - var modalContentWrapper: RNIWrapperView? { - self.modalViewRef?.modalContentWrapper; - }; - - var computablePreferredContentSize: RNIComputableSize? { - self.modalViewRef?.synthesizedModalContentPreferredContentSize; - }; - - var shouldUpdateContentSize: Bool { - guard let computableSize = self.computablePreferredContentSize, - case .current = computableSize.mode - else { return true }; - - return false; - }; - - // MARK: - Properties - // ------------------ - - var blurEffectView: UIVisualEffectView? = nil; - - var blurEffectStyle: UIBlurEffect.Style? { - didSet { - let didChange = oldValue != blurEffectStyle; - let isPresented = self.presentingViewController != nil; - - guard didChange && isPresented, - let blurEffectStyle = self.blurEffectStyle else { return }; - - #if DEBUG - print( - "Log - RNIModalViewController.blurEffectStyle - didSet" - + " - modalNativeID: '\(self.modalViewRef?.modalNativeID ?? "N/A")'" - + " - oldValue: '\(oldValue!.description)'" - + " - newValue: '\(blurEffectStyle.description)'" - ); - #endif - - self.updateBackgroundBlur(); - } - }; - - // MARK: - View Controller Lifecycle - // --------------------------------- - - public override func viewDidLoad() { - super.viewDidLoad(); - - self.view = { - let view = UIView(); - view.autoresizingMask = [.flexibleHeight, .flexibleWidth]; - - return view; - }(); - - if let modalContentWrapper = self.modalContentWrapper { - self.view.addSubview(modalContentWrapper); - modalContentWrapper.notifyForBoundsChange(size: self.view.bounds.size); - }; - - self.updateBackgroundTransparency(); - self.updateBackgroundBlur(); - - self.lifecycleDelegate?.viewDidLoad(sender: self); - }; - - public override func viewDidLayoutSubviews(){ - super.viewDidLayoutSubviews(); - - let didChangeBounds: Bool = { - guard let prevBounds = self.prevBounds else { return true }; - return !prevBounds.equalTo(self.view.bounds); - }(); - - guard didChangeBounds, - let modalContentWrapper = self.modalContentWrapper - else { return }; - - let nextBounds = self.view.bounds; - - let prevBounds = self.prevBounds; - self.prevBounds = nextBounds; - - #if DEBUG - print( - "Log - RNIModalViewController.viewDidLayoutSubviews" - + " - modalNativeID: '\(self.modalViewRef?.modalNativeID ?? "N/A")'" - + " - self.prevBounds: \(String(describing: prevBounds))" - + " - nextBounds: \(nextBounds)" - ); - #endif - - if self.shouldUpdateContentSize { - modalContentWrapper.notifyForBoundsChange(size: nextBounds.size); - modalContentWrapper.center = self.view.center; - }; - - self.lifecycleDelegate?.viewDidLayoutSubviews(sender: self); - }; - - public override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated); - - self.lifecycleDelegate? - .viewWillAppear(sender: self, animated: animated); - - self.setPreferredContentSize(); - - #if DEBUG - print( - "Log - RNIModalViewController.viewWillAppear" - + " - arg animated: \(animated)" - + " - self.modalNativeID: \(self.modalViewRef?.modalNativeID ?? "N/A")" - + " - self.isBeingPresented: \(self.isBeingPresented)" - ); - #endif - }; - - public override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated); - - self.lifecycleDelegate? - .viewDidAppear(sender: self, animated: animated); - - #if DEBUG - print( - "Log - RNIModalViewController.viewDidAppear" - + " - arg animated: \(animated)" - + " - self.modalNativeID: \(self.modalViewRef?.modalNativeID ?? "N/A")" - + " - self.isBeingPresented: \(self.isBeingPresented)" - ); - #endif - }; - - public override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated); - - self.lifecycleDelegate? - .viewWillDisappear(sender: self, animated: animated); - - #if DEBUG - print( - "Log - RNIModalViewController.viewWillDisappear" - + " - arg animated: \(animated)" - + " - self.modalNativeID: \(self.modalViewRef?.modalNativeID ?? "N/A")" - + " - self.isBeingDismissed: \(self.isBeingDismissed)" - + " - self.transitionCoordinator: \(String(describing: self.transitionCoordinator))" - + " - self.transitioningDelegate: \(String(describing: self.transitioningDelegate))" - ); - #endif - }; - - public override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated); - - self.lifecycleDelegate? - .viewDidDisappear(sender: self, animated: animated); - - #if DEBUG - print( - "Log - RNIModalViewController.viewDidDisappear" - + " - arg animated: \(animated)" - + " - self.modalNativeID: \(self.modalViewRef?.modalNativeID ?? "N/A")" - + " - self.isBeingDismissed: \(self.isBeingDismissed)" - ); - #endif - }; - - public override func willMove(toParent parent: UIViewController?) { - super.willMove(toParent: parent); - - self.lifecycleDelegate?.willMove(sender: self, toParent: parent); - - #if DEBUG - print( - "Log - RNIModalViewController.willMove" - + " - arg parent == nil: \(parent == nil)" - + " - self.modalNativeID: \(self.modalViewRef?.modalNativeID ?? "N/A")" - + " - self.isMovingFromParent: \(self.isMovingFromParent)" - + " - self.isMovingToParent: \(self.isMovingToParent)" - ); - #endif - }; - - public override func didMove(toParent parent: UIViewController?) { - super.didMove(toParent: parent); - - self.lifecycleDelegate?.didMove(sender: self, toParent: parent); - - #if DEBUG - print( - "Log - RNIModalViewController.willMove" - + " - arg parent == nil: \(parent == nil)" - + " - self.modalNativeID: \(self.modalViewRef?.modalNativeID ?? "N/A")" - + " - self.isMovingFromParent: \(self.isMovingFromParent)" - + " - self.isMovingToParent: \(self.isMovingToParent)" - ); - #endif - }; - - // MARK: - Functions - // ----------------- - - func setPreferredContentSize(withWindow window: UIWindow? = nil){ - guard let computableSize = self.computablePreferredContentSize - else { return }; - - if self.initialSize == nil || self.initialSize!.isZero { - self.initialSize = self.view.bounds.size; - }; - - let targetSize: CGSize = { - let viewSize = self.initialSize!; - let screenSize = window?.bounds.size; - - let size = viewSize.isZero ? screenSize : viewSize; - return size ?? viewSize; - }(); - - switch computableSize.mode { - case .current: - guard let modalContentWrapper = self.modalContentWrapper - else { return }; - - self.preferredContentSize = self.view.systemLayoutSizeFitting( - modalContentWrapper.bounds.size - ); - - default: - self.preferredContentSize = computableSize.compute( - withTargetSize: targetSize, currentSize: .zero - ); - }; - }; - - // MARK: - Private Functions - // ------------------------- - - private func updateBackgroundTransparency(){ - self.view.backgroundColor = { - if self.isBGTransparent { - return .none; - }; - - guard #available(iOS 13, *) else { return .white }; - return .systemBackground; - }(); - - #if DEBUG - print( - "Log - RNIModalViewController.updateBackgroundTransparency" - + " - modalNativeID: '\(self.modalViewRef?.modalNativeID ?? "N/A")'" - + " - self.isBGTransparent: \(self.isBGTransparent)" - ); - #endif - }; - - private func initBackgroundBlur(){ - guard let blurEffectStyle = self.blurEffectStyle else { return }; - - let blurEffect = UIBlurEffect(style: blurEffectStyle); - - let blurEffectView = UIVisualEffectView(effect: blurEffect); - self.blurEffectView = blurEffectView; - - blurEffectView.frame = self.view.bounds; - blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]; - - self.view.insertSubview(blurEffectView, at: 0); - - #if DEBUG - print( - "Log - RNIModalViewController.initBackgroundBlur" - + " - modalNativeID: '\(self.modalViewRef?.modalNativeID ?? "N/A")'" - + " - self.blurEffectStyle: \(blurEffect)" - ); - #endif - }; - - private func removeBackgroundBlur(){ - self.blurEffectView?.removeFromSuperview(); - self.blurEffectView = nil; - }; - - private func updateBackgroundBlur(){ - guard self.isViewLoaded, - let blurEffectStyle = self.blurEffectStyle - else { return }; - - /// bg is transparent, and blur is enabled - let shouldUpdateBackgroundBlur = - self.isBGTransparent && self.isBGBlurred ; - - /// bg is not transparent or blurred - let shouldRemoveBackgroundBlur = - !self.isBGTransparent || !self.isBGBlurred; - - let shouldInitBackgroundBlur = - self.blurEffectView == nil && shouldUpdateBackgroundBlur; - - // 01 - Init background blur first if needed - if shouldInitBackgroundBlur { - self.initBackgroundBlur(); - }; - - if shouldUpdateBackgroundBlur, - let blurEffectView = self.blurEffectView { - - // 02-A - Update background blur - blurEffectView.effect = UIBlurEffect(style: blurEffectStyle); - - #if DEBUG - print( - "Log - RNIModalViewController.updateBackgroundBlur" - + " - modalNativeID: '\(self.modalViewRef?.modalNativeID ?? "N/A")'" - + " - blurEffectStyle: \(blurEffectStyle)" - ); - #endif - - } else if shouldRemoveBackgroundBlur { - // 02-B - background is not transparent or blurred so remove - // background blur - self.removeBackgroundBlur(); - }; - }; -}; diff --git a/ios/React Native/RNIModalView/RNIModalViewError.swift b/ios/React Native/RNIModalView/RNIModalViewError.swift deleted file mode 100644 index 0fedb90b..00000000 --- a/ios/React Native/RNIModalView/RNIModalViewError.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// RNIModalViewError.swift -// nativeUIModulesTest -// -// Created by Dominic Go on 6/26/20. -// - -import Foundation - -public enum RNIModalViewError: String, CaseIterable { - case modalAlreadyPresented; - case modalAlreadyDismissed; - case modalDismissFailedNotInFocus; - - var errorMessage: String { - RNIModalViewError.getErrorMessage(for: self); - }; - - static func withLabel(_ label: String) -> RNIModalViewError? { - return self.allCases.first{ $0.rawValue == label }; - }; - - static func getErrorMessage(for errorCase: RNIModalViewError) -> String { - switch errorCase { - case .modalAlreadyDismissed: - return "Cannot dismiss modal because it's currently not presented"; - - case .modalAlreadyPresented: - return "Cannot present modal because it's already presented"; - - case .modalDismissFailedNotInFocus: - return "Cannot dismiss modal because it's not in focus. Enable allowModalForceDismiss to dismiss."; - }; - }; -}; diff --git a/ios/React Native/RNIModalView/RNIModalViewManager.m b/ios/React Native/RNIModalView/RNIModalViewManager.m deleted file mode 100644 index c073147e..00000000 --- a/ios/React Native/RNIModalView/RNIModalViewManager.m +++ /dev/null @@ -1,83 +0,0 @@ - -#import - -@interface RCT_EXTERN_MODULE(RNIModalViewManager, RCTViewManager) - -// MARK: - Props - Callbacks/Events -// -------------------------------- - -RCT_EXPORT_VIEW_PROPERTY(onModalWillPresent, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalDidPresent, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalWillDismiss, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalDidDismiss, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalWillShow, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalDidShow, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalWillHide, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalDidHide, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalWillFocus, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalDidFocus, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalWillBlur, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onModalDidBlur, RCTBubblingEventBlock) - -RCT_EXPORT_VIEW_PROPERTY(onPresentationControllerWillDismiss, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onPresentationControllerDidDismiss, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onPresentationControllerDidAttemptToDismiss, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalDetentDidCompute, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onModalDidChangeSelectedDetentIdentifier, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalDidSnap, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalSwipeGestureStart, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalSwipeGestureDidEnd, RCTBubblingEventBlock); - -RCT_EXPORT_VIEW_PROPERTY(onModalDismissWillCancel, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onModalDismissDidCancel, RCTBubblingEventBlock); - -// MARK: - Value Props - General -// ----------------------------- - -RCT_EXPORT_VIEW_PROPERTY(modalID, NSString); -RCT_EXPORT_VIEW_PROPERTY(modalContentPreferredContentSize, NSDictionary); - -// MARK: - Value Props - BG-Related -// -------------------------------- - -RCT_EXPORT_VIEW_PROPERTY(isModalBGBlurred, BOOL); -RCT_EXPORT_VIEW_PROPERTY(isModalBGTransparent, BOOL); -RCT_EXPORT_VIEW_PROPERTY(modalBGBlurEffectStyle, NSString); - -// MARK: - Value Props - Presentation/Transition -// --------------------------------------------- - -RCT_EXPORT_VIEW_PROPERTY(modalPresentationStyle, NSString); -RCT_EXPORT_VIEW_PROPERTY(modalTransitionStyle, NSString); - -RCT_EXPORT_VIEW_PROPERTY(hideNonVisibleModals, BOOL); -RCT_EXPORT_VIEW_PROPERTY(presentViaMount, BOOL); -RCT_EXPORT_VIEW_PROPERTY(enableSwipeGesture, BOOL); -RCT_EXPORT_VIEW_PROPERTY(allowModalForceDismiss, BOOL); -RCT_EXPORT_VIEW_PROPERTY(isModalInPresentation, BOOL); - -// MARK: - Value Props - Sheet-Related -// ----------------------------------- - -RCT_EXPORT_VIEW_PROPERTY(modalSheetDetents, NSArray); - -RCT_EXPORT_VIEW_PROPERTY(sheetPrefersScrollingExpandsWhenScrolledToEdge, BOOL); -RCT_EXPORT_VIEW_PROPERTY(sheetPrefersEdgeAttachedInCompactHeight, BOOL); -RCT_EXPORT_VIEW_PROPERTY(sheetWidthFollowsPreferredContentSizeWhenEdgeAttached, BOOL); -RCT_EXPORT_VIEW_PROPERTY(sheetPrefersGrabberVisible, BOOL); -RCT_EXPORT_VIEW_PROPERTY(sheetShouldAnimateChanges, BOOL); - -RCT_EXPORT_VIEW_PROPERTY(sheetLargestUndimmedDetentIdentifier, NSString); -RCT_EXPORT_VIEW_PROPERTY(sheetSelectedDetentIdentifier, NSString); -RCT_EXPORT_VIEW_PROPERTY(sheetPreferredCornerRadius, NSNumber); - -@end - diff --git a/ios/React Native/RNIModalView/RNIModalViewManager.swift b/ios/React Native/RNIModalView/RNIModalViewManager.swift deleted file mode 100644 index 28ec01e8..00000000 --- a/ios/React Native/RNIModalView/RNIModalViewManager.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// RNIModalViewManager.swift -// nativeUIModulesTest -// -// Created by Dominic Go on 6/9/20. -// Copyright © 2020 Facebook. All rights reserved. -// - -import Foundation - - -@objc (RNIModalViewManager) -class RNIModalViewManager: RCTViewManager { - static var sharedInstance: RNIModalViewManager!; - - override static func requiresMainQueueSetup() -> Bool { - return true; - }; - - override func view() -> UIView! { - let view = RNIModalView(bridge: self.bridge); - return view; - }; - - override init() { - super.init(); - RNIModalViewManager.sharedInstance = self; - - if !UIViewController.isSwizzled { - UIViewController.swizzleMethods(); - }; - }; - - @objc override func constantsToExport() -> [AnyHashable : Any]! { - return [ - "availableBlurEffectStyles": UIBlurEffect.Style - .availableStyles.map { $0.description }, - - "availablePresentationStyles": UIModalPresentationStyle - .availableStyles.map { $0.description }, - ]; - }; -}; diff --git a/ios/React Native/RNIModalViewControllerWrapper/RNIModalViewControllerWrapper.swift b/ios/React Native/RNIModalViewControllerWrapper/RNIModalViewControllerWrapper.swift deleted file mode 100644 index 1bc9df37..00000000 --- a/ios/React Native/RNIModalViewControllerWrapper/RNIModalViewControllerWrapper.swift +++ /dev/null @@ -1,132 +0,0 @@ -// -// RNIModalViewControllerWrapper.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/13/23. -// - -import UIKit - -/// Wraps a `UIViewController` so it can be used w/ `RNIModalManager` -/// -public class RNIModalViewControllerWrapper: - RNIIdentifiable, RNIModalIdentifiable, RNIModalPresentationNotifying, - RNIModalState, RNIModalPresentation { - - // MARK: - Properties - RNIIdentifiable - // ------------------------------------ - - public static var synthesizedIdPrefix: String = "modal-wrapper-"; - - // MARK: - Properties - // ------------------ - - /// The view controller that this instance is wrapping/managing - public var viewController: UIViewController; - - // MARK: - Properties - RNIModalPresentationNotifying - // -------------------------------------------------- - - public var modalPresentationNotificationDelegate: RNIModalPresentationNotifiable! - - // MARK: - Properties - RNIModalState - // ---------------------------------- - - public var modalIndexPrev: Int! - public var modalIndex: Int! - - public lazy var modalPresentationState = RNIModalPresentationStateMachine(); - - public var modalFocusState = RNIModalFocusStateMachine(); - - // MARK: - Properties - RNIModalPresentation - // ----------------------------------------- - - /// The modal that is being presented, or to be presented (i.e. - /// `UIViewController.presentedViewController`). - /// - public weak var modalViewController: UIViewController?; - - /// The view controller that presented the modal (i.e. - /// `UIViewController.presentingViewController` - /// - public weak var presentingViewController: UIViewController?; - - public var window: UIWindow? { - self.viewController.view.window ?? - self.presentingViewController?.view.window - }; - - var focusDelegate: RNIModalFocusNotifiable? { - return self.viewController as? RNIModalFocusNotifiable - }; - - // MARK: - Functions - // ----------------- - - public init(viewController: UIViewController){ - self.viewController = viewController; - RNIModalManagerShared.register(modal: self); - }; -}; - -// MARK: - RNIModalRequestable -// --------------------------- - -extension RNIModalViewControllerWrapper: RNIModalRequestable { - - public func requestModalToShow( - sender: Any, - animated: Bool, - completion: @escaping () -> Void - ) throws { - throw RNIModalError( - code: .runtimeError, - message: "presenting is not supported" - ); - }; - - public func requestModalToHide( - sender: Any, - animated: Bool, - completion: @escaping () -> Void - ) throws { - guard let modalVC = self.modalViewController else { - throw RNIModalError( - code: .runtimeError, - message: "Guard check failed, modalViewController is nil" - ); - }; - - modalVC.dismiss(animated: animated) { - completion(); - }; - }; -}; - -// MARK: - RNIModalFocusNotifiable -// ------------------------------- - -extension RNIModalViewControllerWrapper: RNIModalFocusNotifiable { - public func onModalWillFocusNotification(sender: any RNIModal) { - guard let focusDelegate = self.focusDelegate else { return }; - focusDelegate.onModalWillFocusNotification(sender: sender); - }; - - public func onModalDidFocusNotification(sender: any RNIModal) { - guard let focusDelegate = self.focusDelegate else { return }; - focusDelegate.onModalDidFocusNotification(sender: sender); - }; - - public func onModalWillBlurNotification(sender: any RNIModal) { - guard let focusDelegate = self.focusDelegate else { return }; - focusDelegate.onModalWillBlurNotification(sender: sender); - }; - - public func onModalDidBlurNotification(sender: any RNIModal) { - guard let focusDelegate = self.focusDelegate else { return }; - focusDelegate.onModalDidBlurNotification(sender: sender); - }; -}; - - diff --git a/ios/React Native/RNIModalViewControllerWrapper/RNIModalViewControllerWrapperRegistry.swift b/ios/React Native/RNIModalViewControllerWrapper/RNIModalViewControllerWrapperRegistry.swift deleted file mode 100644 index cbbb9099..00000000 --- a/ios/React Native/RNIModalViewControllerWrapper/RNIModalViewControllerWrapperRegistry.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// RNIModalViewControllerWrapperRegistry.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -class RNIModalViewControllerWrapperRegistry { - static let instanceMap = NSMapTable< - UIViewController, - RNIModalViewControllerWrapper - >( - keyOptions: .weakMemory, - valueOptions: .weakMemory - ); - - static func get( - forViewController viewController: UIViewController - ) -> RNIModalViewControllerWrapper? { - - Self.instanceMap.object(forKey: viewController); - }; - - static func set( - forViewController viewController: UIViewController, - _ modalWrapper: RNIModalViewControllerWrapper - ){ - - Self.instanceMap.setObject(modalWrapper, forKey: viewController); - }; - - static func isRegistered( - forViewController viewController: UIViewController - ) -> Bool { - Self.get(forViewController: viewController) != nil; - }; -}; diff --git a/ios/React Native/RNIModalViewModule/RNIModalViewModule.m b/ios/React Native/RNIModalViewModule/RNIModalViewModule.m deleted file mode 100644 index e37b151d..00000000 --- a/ios/React Native/RNIModalViewModule/RNIModalViewModule.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// RNIModalViewModule.m -// RNSwiftReviewer -// -// Created by Dominic Go on 7/11/20. -// - -#import "React/RCTBridgeModule.h" -#import "React/RCTEventEmitter.h" - - -@interface RCT_EXTERN_MODULE(RNIModalViewModule, RCTEventEmitter) - -// MARK: - Standalone Functions -// ---------------------------- - -RCT_EXTERN_METHOD(setModalVisibilityByID: (NSString)modalID - visibility: (BOOL)visibility - animated: (BOOL)visibility - // promise blocks ----------------------- - resolve: (RCTPromiseResolveBlock *)resolve - reject : (RCTPromiseRejectBlock *)reject); - -RCT_EXTERN_METHOD(dismissAllModals: (BOOL)animated - // promise blocks ------------------------ - resolve: (RCTPromiseResolveBlock *)resolve - reject : (RCTPromiseRejectBlock *)reject); - -// MARK: - View-Related Functions -// ------------------------------ - -RCT_EXTERN_METHOD(setModalVisibility: (nonnull NSNumber)node - visibility: (BOOL)visibility - // promise blocks ----------------------- - resolve: (RCTPromiseResolveBlock *)resolve - reject : (RCTPromiseRejectBlock *)reject); - -RCT_EXTERN_METHOD(requestModalInfo: (nonnull NSNumber) node - // promise blocks ----------------------- - resolve: (RCTPromiseResolveBlock *)resolve - reject : (RCTPromiseRejectBlock *)reject); - -@end diff --git a/ios/React Native/RNIModalViewModule/RNIModalViewModule.swift b/ios/React Native/RNIModalViewModule/RNIModalViewModule.swift deleted file mode 100644 index 207f3fce..00000000 --- a/ios/React Native/RNIModalViewModule/RNIModalViewModule.swift +++ /dev/null @@ -1,223 +0,0 @@ -// -// RNIModalViewModule.swift -// RNSwiftReviewer -// -// Created by Dominic Go on 7/11/20. -// - -import Foundation - - -@objc(RNIModalViewModule) -class RNIModalViewModule: RCTEventEmitter { - - enum Events: String, CaseIterable { - case placeholderEvent; - }; - - @objc override static func requiresMainQueueSetup() -> Bool { - return false; - }; - - func getModalViewInstance(for node: NSNumber) -> RNIModalView? { - return RNIUtilities.getView( - forNode: node, - type : RNIModalView.self, - bridge : self.bridge - ); - }; - - // MARK: - Event-Related - // ---------------------- - - private var hasListeners = false; - - override func supportedEvents() -> [String]! { - return Self.Events.allCases.map { $0.rawValue }; - }; - - // called when first listener is added - override func startObserving() { - self.hasListeners = true; - }; - - // called when this module's last listener is removed, or dealloc - override func stopObserving() { - self.hasListeners = false; - }; - - func sendModalEvent(event: Events, params: Dictionary) { - guard self.hasListeners else { return }; - self.sendEvent(withName: event.rawValue, body: params); - }; - - // MARK: - Module Functions - // ------------------------ - - @objc func setModalVisibilityByID( - _ modalID: String, - visibility: Bool, - animated: Bool, - // promise blocks ------------------------ - resolve: @escaping RCTPromiseResolveBlock, - reject : @escaping RCTPromiseRejectBlock - ) { - DispatchQueue.main.async { - let modalInstances = RNIModalManagerShared.modalInstances; - - let debugData: Dictionary = [ - "modalID": modalID, - "visibility": visibility, - ]; - - do { - guard modalInstances.count > 0 else { - throw RNIModalError( - code: .runtimeError, - message: "The list of modalInstances is empty", - debugData: debugData - ); - }; - - let targetModal = modalInstances.first { - $0.modalUserID == modalID || $0.modalNativeID == modalID - }; - - guard let targetModal = targetModal else { - let errorMessage = - "Unable to get the matching RNIModalView instance for" - + " modalID: \(modalID)"; - - throw RNIModalError( - code: .runtimeError, - message: errorMessage, - debugData: debugData - ); - }; - - let modalAction = visibility - ? targetModal.requestModalToShow - : targetModal.requestModalToHide; - - try modalAction(animated, visibility) { - // modal dismissed - resolve([:]); - }; - - } catch let error as RNIModalError { - error.invokePromiseRejectBlock(reject); - - } catch { - var errorWrapper = RNIModalError( - code: .unknownError, - error: error - ); - - errorWrapper.addDebugData(debugData); - errorWrapper.invokePromiseRejectBlock(reject); - }; - }; - }; - - @objc func dismissAllModals( - _ animated: Bool, - // promise blocks ------------------------ - resolve: @escaping RCTPromiseResolveBlock, - reject : @escaping RCTPromiseRejectBlock - ) { - DispatchQueue.main.async { - let windows = RNIUtilities.getWindows(); - let rootViewControllers = windows.map { $0.rootViewController }; - - guard rootViewControllers.isEmpty else { - let error = RNIModalError( - code: .runtimeError, - message: "Could not get root view controllers" - ); - - error.invokePromiseRejectBlock(reject); - return; - }; - - rootViewControllers.enumerated().forEach { - let isLast = $0.offset == rootViewControllers.count - 1; - - $0.element?.dismiss(animated: animated) { - guard isLast else { return }; - resolve([:]); - }; - }; - }; - }; - - // MARK: - View-Related Functions - // ------------------------------ - - @objc func setModalVisibility( - _ node: NSNumber, - visibility: Bool, - // promise blocks ------------------------ - resolve: @escaping RCTPromiseResolveBlock, - reject : @escaping RCTPromiseRejectBlock - ){ - DispatchQueue.main.async { - guard let modalView = self.getModalViewInstance(for: node) else { - let error = RNIModalError( - code: .runtimeError, - message: "Unable to get the matching RNIModalView instance for node", - debugData: [ - "node": node, - "visibility": visibility - ] - ); - - error.invokePromiseRejectBlock(reject); - return; - }; - - let modalAction = visibility - ? modalView.presentModal - : modalView.dismissModal; - - do { - try modalAction(true) { - resolve([:]); - }; - - } catch let error as RNIModalError { - error.invokePromiseRejectBlock(reject) - - } catch { - let errorWrapper = RNIModalError( - code: .unknownError, - error: error - ); - - errorWrapper.invokePromiseRejectBlock(reject); - }; - }; - }; - - @objc func requestModalInfo( - _ node: NSNumber, - // promise blocks ------------------------ - resolve: @escaping RCTPromiseResolveBlock, - reject : @escaping RCTPromiseRejectBlock - ){ - DispatchQueue.main.async { - guard let modalView = self.getModalViewInstance(for: node) else { - let errorMessage = - "Unable to get the corresponding RNIModalView instance" - + " for node: \(node)" - - let error = RNIModalError(code: .runtimeError, message: errorMessage); - error.invokePromiseRejectBlock(reject); - return; - }; - - resolve( - modalView.synthesizedBaseEventData.synthesizedJSDictionary - ); - }; - }; -}; diff --git a/ios/React Native/RNIMulticastDelegate/CAAnimationMulticastDelegate.swift b/ios/React Native/RNIMulticastDelegate/CAAnimationMulticastDelegate.swift deleted file mode 100644 index a4993b9a..00000000 --- a/ios/React Native/RNIMulticastDelegate/CAAnimationMulticastDelegate.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// CAAnimationMulticastDelegate.swift -// react-native-ios-modal -// -// Created by Dominic Go on 5/1/23. -// - -import UIKit - - -public class CAAnimationMulticastDelegate: NSObject, CAAnimationDelegate { - - public var emitter: RNIMulticastDelegate = - RNIMulticastDelegate(); - - - public func animationDidStart(_ anim: CAAnimation) { - self.emitter.invoke { - $0.animationDidStart?(anim); - }; - }; - - public func animationDidStop(_ anim: CAAnimation, finished flag: Bool) { - self.emitter.invoke { - $0.animationDidStop?(anim, finished: flag); - }; - }; -}; diff --git a/ios/React Native/RNIMulticastDelegate/RNIMulticastDelegate.swift b/ios/React Native/RNIMulticastDelegate/RNIMulticastDelegate.swift deleted file mode 100644 index 05a4d1f6..00000000 --- a/ios/React Native/RNIMulticastDelegate/RNIMulticastDelegate.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// MulticastDelegate.swift -// RNSwiftReviewer -// -// Created by Dominic Go on 8/15/20. -// - -import UIKit - - -public class RNIMulticastDelegate { - private let delegates: NSHashTable = NSHashTable.weakObjects(); - - public func add(_ delegate: T) { - delegates.add(delegate); - }; - - public func remove(_ delegate: T) { - self.delegates.remove(delegate); - }; - - public func invoke (_ invocation: @escaping (T) -> Void) { - for delegate in delegates.allObjects { - invocation(delegate) - }; - }; -}; diff --git a/ios/React Native/RNIObjectMetadata/RNIObjectMetadata+Default.swift b/ios/React Native/RNIObjectMetadata/RNIObjectMetadata+Default.swift deleted file mode 100644 index ae8eb150..00000000 --- a/ios/React Native/RNIObjectMetadata/RNIObjectMetadata+Default.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// RNIObjectMetadata+Default.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -fileprivate let RNIObjectMetadataMap = NSMapTable( - keyOptions: .weakMemory, - valueOptions: .strongMemory -); - -public extension RNIObjectMetadata { - var metadata: T? { - set { - if let newValue = newValue { - RNIObjectMetadataMap.setObject(newValue, forKey: self); - - } else { - RNIObjectMetadataMap.removeObject(forKey: self); - }; - } - get { - RNIObjectMetadataMap.object(forKey: self) as? T - } - }; -}; diff --git a/ios/React Native/RNIObjectMetadata/RNIObjectMetadata.swift b/ios/React Native/RNIObjectMetadata/RNIObjectMetadata.swift deleted file mode 100644 index db5040aa..00000000 --- a/ios/React Native/RNIObjectMetadata/RNIObjectMetadata.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// RNIObjectMetadata.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/31/23. -// - -import UIKit - -public protocol RNIObjectMetadata: AnyObject { - associatedtype T: AnyObject; - - var metadata: T? { get set }; -}; diff --git a/ios/React Native/RNIViewControllerLifeCycleNotifiable/RNIViewControllerLifeCycleNotifiable+Default.swift b/ios/React Native/RNIViewControllerLifeCycleNotifiable/RNIViewControllerLifeCycleNotifiable+Default.swift deleted file mode 100644 index f7f8e79c..00000000 --- a/ios/React Native/RNIViewControllerLifeCycleNotifiable/RNIViewControllerLifeCycleNotifiable+Default.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// RNIViewControllerLifeCycleNotifiable+Default.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/27/23. -// - -import UIKit - -extension RNIViewControllerLifeCycleNotifiable { - public func viewDidLoad(sender: UIViewController) { - // no-op - }; - - public func viewDidLayoutSubviews(sender: UIViewController) { - // no-op - }; - - public func viewWillAppear(sender: UIViewController, animated: Bool) { - // no-op - }; - - public func viewDidAppear(sender: UIViewController, animated: Bool) { - // no-op - }; - - public func viewWillDisappear(sender: UIViewController, animated: Bool) { - // no-op - }; - - public func viewDidDisappear(sender: UIViewController, animated: Bool) { - // no-op - }; - - public func willMove(sender: UIViewController, toParent parent: UIViewController?) { - // no-op - }; - - public func didMove(sender: UIViewController, toParent parent: UIViewController?) { - // no-op - }; -}; diff --git a/ios/React Native/RNIViewControllerLifeCycleNotifiable/RNIViewControllerLifeCycleNotifiable.swift b/ios/React Native/RNIViewControllerLifeCycleNotifiable/RNIViewControllerLifeCycleNotifiable.swift deleted file mode 100644 index 17be9e41..00000000 --- a/ios/React Native/RNIViewControllerLifeCycleNotifiable/RNIViewControllerLifeCycleNotifiable.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// RNIViewControllerLifeCycleNotifiable.swift -// react-native-ios-modal -// -// Created by Dominic Go on 4/1/23. -// - -import UIKit - -public protocol RNIViewControllerLifeCycleNotifiable: AnyObject { - - func viewDidLoad(sender: UIViewController); - - func viewDidLayoutSubviews(sender: UIViewController); - - func viewWillAppear(sender: UIViewController, animated: Bool); - - func viewDidAppear(sender: UIViewController, animated: Bool); - - /// `Note:2023-04-01-14-39-23` - /// - /// * `UIViewController.isBeingDismissed` or - /// `UIViewController.isMovingFromParent` are `true` during - /// `viewWillDisappear`, whenever a modal is about to be dismissed. - /// - func viewWillDisappear(sender: UIViewController, animated: Bool); - - func viewDidDisappear(sender: UIViewController, animated: Bool); - - func willMove(sender: UIViewController, toParent parent: UIViewController?); - - func didMove(sender: UIViewController, toParent parent: UIViewController?); - -}; - diff --git a/ios/React Native/RNIWeak/RNIWeakArray.swift b/ios/React Native/RNIWeak/RNIWeakArray.swift deleted file mode 100644 index 9dd4dfe8..00000000 --- a/ios/React Native/RNIWeak/RNIWeakArray.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// RNIWeakArray.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/15/23. -// - -import UIKit - - -public class RNIWeakArray { - - public var rawArray: [RNIWeakRef] = []; - - public var purgedArray: [RNIWeakRef] { - self.rawArray.compactMap { - $0.synthesizedRef == nil ? nil : $0; - }; - }; - - public var array: [T] { - let purgedArray = self.purgedArray; - self.rawArray = purgedArray; - - return purgedArray.compactMap { - $0.synthesizedRef; - }; - }; - - public init(initialItems: [T] = []){ - self.rawArray = initialItems.compactMap { - RNIWeakRef(with: $0) - }; - }; - - public func get(index: Int) -> T? { - guard self.rawArray.count < index else { - return nil - }; - - guard let ref = self.rawArray[index].synthesizedRef else { - self.rawArray.remove(at: index); - return nil; - }; - - return ref; - }; - - public func set(index: Int, element: T) { - guard self.rawArray.count < index else { - return; - }; - - self.rawArray[index] = RNIWeakRef(with: element); - }; - - - public func append(element: T){ - self.rawArray.append( - RNIWeakRef(with: element) - ); - }; -}; - diff --git a/ios/React Native/RNIWeak/RNIWeakDictionary.swift b/ios/React Native/RNIWeak/RNIWeakDictionary.swift deleted file mode 100644 index a445684d..00000000 --- a/ios/React Native/RNIWeak/RNIWeakDictionary.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// RNIWeakDictionary.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/15/23. -// - -import UIKit - - -public class RNIWeakDictionary { - - public var rawDict: [K: RNIWeakRef] = [:]; - - public var purgedDict: [K: RNIWeakRef] { - get { - self.rawDict.compactMapValues { - $0.rawRef != nil ? $0 : nil; - } - } - }; - - public var dict: [K: RNIWeakRef] { - get { - let purgedDict = self.purgedDict; - self.rawDict = purgedDict; - - return purgedDict; - } - } - - public func set(for key: K, with value: T){ - self.rawDict[key] = RNIWeakRef(with: value); - }; - - public func get(for key: K) -> T? { - guard let ref = self.rawDict[key]?.synthesizedRef else { - self.rawDict.removeValue(forKey: key); - return nil; - }; - - return ref; - }; - - public subscript(key: K) -> T? { - get { - self.get(for: key); - } - set { - guard let ref = newValue else { return }; - self.set(for: key, with: ref); - } - } -}; - diff --git a/ios/React Native/RNIWeak/RNIWeakRef.swift b/ios/React Native/RNIWeak/RNIWeakRef.swift deleted file mode 100644 index e73462a8..00000000 --- a/ios/React Native/RNIWeak/RNIWeakRef.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// RNIWeakRef.swift -// react-native-ios-modal -// -// Created by Dominic Go on 3/11/23. -// - -import UIKit - - -public class RNIWeakRef { - public weak var rawRef: AnyObject?; - - public var synthesizedRef: T? { - self.rawRef as? T; - }; - - public init(with ref: T) { - self.rawRef = ref as AnyObject; - }; - - public init?(with ref: T?) { - guard let unwrappedRef = ref else { return nil }; - self.rawRef = unwrappedRef as AnyObject; - }; -}; diff --git a/package.json b/package.json deleted file mode 100644 index d22dd213..00000000 --- a/package.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "name": "react-native-ios-modal", - "version": "2.0.0-3", - "description": "A react-native component for displaying a modal on iOS by natively wrapping a react-native view inside a UIViewController and presenting it.", - "main": "lib/commonjs/index", - "module": "lib/module/index", - "types": "lib/typescript/index.d.ts", - "react-native": "src/index", - "source": "src/index", - "files": [ - "src", - "lib", - "android", - "ios", - "cpp", - "*.podspec", - "!lib/typescript/example", - "!ios/build", - "!android/build", - "!android/gradle", - "!android/gradlew", - "!android/gradlew.bat", - "!android/local.properties", - "!**/__tests__", - "!**/__fixtures__", - "!**/__mocks__", - "!**/.*" - ], - "scripts": { - "test": "jest", - "typescript": "tsc --noEmit --project tsconfig.build.json", - "typescript-example": "cd example && tsc --noEmit --project tsconfig.json", - "typescript-all": "yarn run typescript ; yarn run typescript-example", - "lint": "eslint \"**/*.{js,ts,tsx}\"", - "prepare": "bob build", - "release": "release-it", - "example": "yarn --cwd example", - "bootstrap": "yarn example && yarn install && yarn example pods", - "build": "yarn run lint ; yarn run typescript ; yarn run bob build && cd example/ios && pod install && xcodebuild -workspace IosModalExample.xcworkspace -scheme IosModalExample -destination 'generic/platform=iOS'", - "build-and-run": "yarn run build && yarn run run-debug && yarn run run-release", - "run-release": "cd example && npx react-native run-ios --simulator \"iPhone 8\" --configuration Release", - "run-debug": "cd example && npx react-native run-ios --simulator \"iPhone 8\" --configuration Debug" - }, - "keywords": [ - "react-native", - "ios", - "modal" - ], - "repository": "https://github.com/dominicstop/react-native-ios-modal", - "author": "Dominic Go <18517029+dominicstop@users.noreply.github.com> (https://github.com/dominicstop)", - "license": "MIT", - "bugs": { - "url": "https://github.com/dominicstop/react-native-ios-modal/issues" - }, - "homepage": "https://github.com/dominicstop/react-native-ios-modal#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org/" - }, - "devDependencies": { - "@react-native-community/cli-types": "^10.0.0", - "@react-native-community/eslint-config": "^3.0.2", - "@types/react": "~17.0.21", - "@types/react-native": "0.68.0", - "eslint": "^8.4.1", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.0.0", - "pod-install": "^0.1.0", - "prettier": "^2.0.5", - "react": "18.1.0", - "react-native": "0.70.4", - "react-native-builder-bob": "^0.20.0", - "release-it": "^15.0.0", - "typescript": "^4.5.2" - }, - "resolutions": { - "@types/react": "17.0.21" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - }, - "release-it": { - "git": { - "commitMessage": "⚙️ Chore: Release ${version}", - "tagName": "v${version}" - }, - "npm": { - "publish": true - }, - "github": { - "release": true - } - }, - "eslintConfig": { - "root": true, - "extends": [ - "@react-native-community" - ], - "rules": { - "prettier/prettier": [ - "warn", - { - "quoteProps": "consistent", - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "useTabs": false - } - ] - } - }, - "eslintIgnore": [ - "node_modules/", - "lib/" - ], - "prettier": { - "quoteProps": "consistent", - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "useTabs": false - }, - "react-native-builder-bob": { - "source": "src", - "output": "lib", - "targets": [ - "commonjs", - "module", - [ - "typescript", - { - "project": "tsconfig.build.json" - } - ] - ] - }, - "dependencies": { - "@dominicstop/ts-event-emitter": "^1.1.0" - } -} diff --git a/react-native-ios-modal.podspec b/react-native-ios-modal.podspec deleted file mode 100644 index af991bd8..00000000 --- a/react-native-ios-modal.podspec +++ /dev/null @@ -1,35 +0,0 @@ -require "json" - -package = JSON.parse(File.read(File.join(__dir__, "package.json"))) -folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32' - -Pod::Spec.new do |s| - s.name = "react-native-ios-modal" - s.version = package["version"] - s.summary = package["description"] - s.homepage = package["homepage"] - s.license = package["license"] - s.authors = package["author"] - - s.platforms = { :ios => "10.0" } - s.source = { :git => "https://github.com/dominicstop/react-native-ios-modal.git", :tag => "#{s.version}" } - - s.source_files = "ios/**/*.{h,m,mm,swift}" - - s.dependency "React-Core" - - # Don't install the dependencies when we run `pod install` in the old architecture. - if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then - s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1" - s.pod_target_xcconfig = { - "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"", - "CLANG_CXX_LANGUAGE_STANDARD" => "c++17" - } - - s.dependency "React-Codegen" - s.dependency "RCT-Folly" - s.dependency "RCTRequired" - s.dependency "RCTTypeSafety" - s.dependency "ReactCommon/turbomodule/core" - end -end diff --git a/react-native.config.js b/react-native.config.js deleted file mode 100644 index 619da1ac..00000000 --- a/react-native.config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - project: { - android: null, - ios: { - project: './ios/IosModal.xcodeproj', - }, - }, -}; diff --git a/scripts/bootstrap.js b/scripts/bootstrap.js deleted file mode 100644 index 17291894..00000000 --- a/scripts/bootstrap.js +++ /dev/null @@ -1,29 +0,0 @@ -const os = require('os'); -const path = require('path'); -const child_process = require('child_process'); - -const root = path.resolve(__dirname, '..'); -const args = process.argv.slice(2); -const options = { - cwd: process.cwd(), - env: process.env, - stdio: 'inherit', - encoding: 'utf-8', -}; - -if (os.type() === 'Windows_NT') { - options.shell = true; -} - -let result; - -if (process.cwd() !== root || args.length) { - // We're not in the root of the project, or additional arguments were passed - // In this case, forward the command to `yarn` - result = child_process.spawnSync('yarn', args, options); -} else { - // If `yarn` is run without arguments, perform bootstrap - result = child_process.spawnSync('yarn', ['bootstrap'], options); -} - -process.exitCode = result.status; diff --git a/src/components/ModalView/ModalView.tsx b/src/components/ModalView/ModalView.tsx deleted file mode 100644 index 84086aeb..00000000 --- a/src/components/ModalView/ModalView.tsx +++ /dev/null @@ -1,907 +0,0 @@ -import React from 'react'; - -import { - findNodeHandle, - StyleSheet, - View, - ScrollView, - Platform, - ViewProps, - NativeSyntheticEvent, -} from 'react-native'; - -import { RNIWrapperView } from '../../temp'; - -import { TSEventEmitter } from '@dominicstop/ts-event-emitter'; - -import * as Helpers from '../../functions/helpers'; - -import { ModalContext } from '../../context/ModalContext'; - -import { - OnModalWillPresentEvent, - OnModalDidPresentEvent, - OnModalWillDismissEvent, - OnModalDidDismissEvent, - OnModalWillShowEvent, - OnModalDidShowEvent, - OnModalWillHideEvent, - OnModalDidHideEvent, - OnModalWillFocusEvent, - OnModalDidFocusEvent, - OnModalWillBlurEvent, - OnModalDidBlurEvent, - OnPresentationControllerWillDismissEvent, - OnPresentationControllerDidDismissEvent, - OnPresentationControllerDidAttemptToDismissEvent, - RNIModalView, - RNIModalBaseEventData, - RNIModalDeprecatedBaseEvent, - OnModalDetentDidComputeEvent, - OnModalDidChangeSelectedDetentIdentifierEvent, - OnModalDidSnapEvent, - OnModalSwipeGestureStartEvent, - OnModalSwipeGestureDidEndEvent, - OnModalDismissWillCancelEvent, - OnModalDismissDidCancelEvent, -} from '../../native_components/RNIModalView'; - -import { RNIModalViewModule } from '../../native_modules/RNIModalViewModule'; - -import type { ModalViewProps } from './ModalViewProps'; -import type { ModalViewState } from './ModalViewState'; - -import { - ModalViewEmitterEvents, - ModalViewEventEmitter, -} from './ModalViewEmitter'; - -import { - hasScrollViewContext, - NATIVE_ID_KEYS, - VirtualizedListContext, -} from './ModalViewConstants'; - -import { ModalViewEmitterEventsDeprecated } from './ModalViewEmitterDeprecated'; - -// prettier-ignore -export class ModalView extends - React.PureComponent { - - private nativeRefModalView!: React.Component; - private emitter: ModalViewEventEmitter; - - constructor(props: ModalViewProps) { - super(props); - - const defaultProps = this.getProps(props); - - this.emitter = new TSEventEmitter(); - - this.state = { - isModalVisible: false, - childProps: null, - enableSwipeGesture: defaultProps.enableSwipeGesture, - isModalInPresentation: defaultProps.isModalInPresentation, - isModalInFocus: false, - focusState: 'INITIAL', - }; - } - - componentWillUnmount() { - const { autoCloseOnUnmount } = this.getProps(); - const { isModalVisible: visible } = this.state; - - if (autoCloseOnUnmount && visible) { - this.setVisibility(false); - } - } - - private getProps = (propOverride: ModalViewProps | null = null) => { - const { - // Native Props - General - modalID, - modalContentPreferredContentSize, - shouldEnableAggressiveCleanup, - - // Native Props - BG-Related - isModalBGBlurred, - isModalBGTransparent, - modalBGBlurEffectStyle, - - // Native Props - Presentation/Transition - modalPresentationStyle, - modalTransitionStyle, - hideNonVisibleModals, - presentViaMount, - enableSwipeGesture, - allowModalForceDismiss, - isModalInPresentation, - - // Native Props - Sheet-Related - modalSheetDetents, - sheetPrefersScrollingExpandsWhenScrolledToEdge, - sheetPrefersEdgeAttachedInCompactHeight, - sheetWidthFollowsPreferredContentSizeWhenEdgeAttached, - sheetPrefersGrabberVisible, - sheetShouldAnimateChanges, - sheetLargestUndimmedDetentIdentifier, - sheetPreferredCornerRadius, - sheetSelectedDetentIdentifier, - - // Native Props - Events - onModalWillPresent, - onModalDidPresent, - onModalWillDismiss, - onModalDidDismiss, - onModalWillShow, - onModalDidShow, - onModalWillHide, - onModalDidHide, - onModalWillFocus, - onModalDidFocus, - onModalWillBlur, - onModalDidBlur, - onPresentationControllerWillDismiss, - onPresentationControllerDidDismiss, - onPresentationControllerDidAttemptToDismiss, - onModalDetentDidCompute, - onModalDidChangeSelectedDetentIdentifier, - onModalDidSnap, - onModalSwipeGestureStart, - onModalSwipeGestureDidEnd, - - // Component Props - autoCloseOnUnmount, - setEnableSwipeGestureFromProps, - setModalInPresentationFromProps, - containerStyle, - isModalContentLazy, - - children, - ...viewProps - } = propOverride ?? this.props; - - return ({ - // A - Add Default Values - presentViaMount: ( - presentViaMount ?? false - ), - isModalBGBlurred: ( - isModalBGBlurred ?? true - ), - enableSwipeGesture: ( - enableSwipeGesture ?? true - ), - hideNonVisibleModals: ( - hideNonVisibleModals ?? false - ), - isModalBGTransparent: ( - isModalBGTransparent ?? true - ), - modalTransitionStyle: ( - modalTransitionStyle ?? 'coverVertical' - ), - modalPresentationStyle: ( - modalPresentationStyle ?? 'automatic' - ), - autoCloseOnUnmount: ( - autoCloseOnUnmount ?? true - ), - setEnableSwipeGestureFromProps: ( - setEnableSwipeGestureFromProps ?? false - ), - setModalInPresentationFromProps: ( - setModalInPresentationFromProps ?? false - ), - isModalInPresentation: ( - isModalInPresentation ?? false - ), - isModalContentLazy: ( - isModalContentLazy ?? true - ), - shouldEnableAggressiveCleanup: ( - shouldEnableAggressiveCleanup ?? true - ), - - // B - Pass down... - containerStyle, - modalID, - modalContentPreferredContentSize, - allowModalForceDismiss, - modalBGBlurEffectStyle, - modalSheetDetents, - sheetPrefersScrollingExpandsWhenScrolledToEdge, - sheetPrefersEdgeAttachedInCompactHeight, - sheetWidthFollowsPreferredContentSizeWhenEdgeAttached, - sheetPrefersGrabberVisible, - sheetShouldAnimateChanges, - sheetLargestUndimmedDetentIdentifier, - sheetPreferredCornerRadius, - sheetSelectedDetentIdentifier, - onModalWillPresent, - onModalDidPresent, - onModalWillDismiss, - onModalDidDismiss, - onModalWillShow, - onModalDidShow, - onModalWillHide, - onModalDidHide, - onModalWillFocus, - onModalDidFocus, - onModalWillBlur, - onModalDidBlur, - onPresentationControllerWillDismiss, - onPresentationControllerDidDismiss, - onPresentationControllerDidAttemptToDismiss, - onModalDetentDidCompute, - onModalDidChangeSelectedDetentIdentifier, - onModalDidSnap, - onModalSwipeGestureStart, - onModalSwipeGestureDidEnd, - - // C - View-Related Props - children, - viewProps, - }); - }; - - getEmitterRef = () => { - return this.emitter; - }; - - setVisibility = async ( - nextVisible: boolean, - childProps: object | null = null - ) => { - const props = this.getProps(); - const { isModalVisible: prevVisible } = this.state; - - const didChange = (prevVisible !== nextVisible); - - if (!didChange) { - return; - } - - if (nextVisible) { - // Show modal... - // When showing modal, mount children first, - await Helpers.setStateAsync(this, { - isModalVisible: nextVisible, - // pass down received props to childProps via state - childProps: Helpers.isObject(childProps) ? childProps : null, - }); - - // wait for view to mount - if (props.isModalContentLazy){ - await Helpers.promiseWithTimeout(500, new Promise((resolve) => { - this.emitter.once(ModalViewEmitterEvents.onLayoutModalContentContainer, () => { - resolve(); - }); - })); - } - } - - try { - // request modal to open/close - await RNIModalViewModule.setModalVisibility( - findNodeHandle(this.nativeRefModalView)!, - nextVisible - ); - - // Hide modal... - // When finish hiding modal, unmount children - if (!nextVisible) { - await Helpers.setStateAsync(this, { - isModalVisible: nextVisible, - childProps: null, - }); - } - } catch (error) { - console.log('ModalView, setVisibility failed:'); - console.log(error); - throw error; - } - }; - - getModalInfo = async () => { - try { - // request modal to send modal info - return await RNIModalViewModule.requestModalInfo( - findNodeHandle(this.nativeRefModalView)! - ); - } catch (error) { - console.log('ModalView, requestModalInfo failed:'); - console.log(error); - throw error; - } - }; - - setEnableSwipeGesture = async ( - enableSwipeGesture: boolean - ) => { - const { enableSwipeGesture: prevVal } = this.state; - if (prevVal !== enableSwipeGesture) { - await Helpers.setStateAsync(this, { enableSwipeGesture }); - } - }; - - setIsModalInPresentation = async ( - isModalInPresentation: boolean - ) => { - const { isModalInPresentation: prevVal } = this.state; - if (prevVal !== isModalInPresentation) { - await Helpers.setStateAsync(this, { isModalInPresentation }); - } - }; - - // Event Handlers - // -------------- - - // We don't want any responder events bubbling out of the modal. - private _shouldSetResponder() { - return true; - } - - private _handleOnLayoutModalContentContainer: ViewProps['onLayout'] = (event) => { - this.emitter.emit( - ModalViewEmitterEvents.onLayoutModalContentContainer, - event.nativeEvent - ); - - event.stopPropagation(); - }; - - // the child comp can call `props.getModalRef` to receive - // a ref to this modal comp - private _handleGetModalRef = () => { - return this; - }; - - // Native Event Handlers - // --------------------- - - private _handleOnModalWillPresent: OnModalWillPresentEvent = (event) => { - const props = this.props; - - props.onModalWillPresent?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalWillPresent, - event.nativeEvent - ); - }; - - private _handleOnModalDidPresent: OnModalDidPresentEvent = (event) => { - const props = this.props; - - props.onModalDidPresent?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidPresent, - event.nativeEvent - ); - }; - - private _handleOnModalWillDismiss: OnModalWillDismissEvent = (event) => { - const props = this.props; - - props.onModalWillDismiss?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalWillDismiss, - event.nativeEvent - ); - }; - - private _handleOnModalDidDismiss: OnModalDidDismissEvent = (event) => { - const props = this.props; - - props.onModalDidDismiss?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidDismiss, - event.nativeEvent - ); - }; - - private _handleOnModalWillShow: OnModalWillShowEvent = (event) => { - const props = this.props; - - props.onModalWillShow?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalWillShow, - event.nativeEvent - ); - }; - - private _handleOnModalDidShow: OnModalDidShowEvent = (event) => { - const props = this.props; - - props.onModalDidShow?.(event); - props.onModalShow?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidShow, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated.onModalShow, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - - this.setState({ - isModalVisible: true, - }); - }; - - private _handleOnModalWillHide: OnModalWillHideEvent = (event) => { - const props = this.props; - - props.onModalWillHide?.(event); - - this.emitter.emit( - ModalViewEmitterEvents.onModalWillHide, - event.nativeEvent - ); - - event.stopPropagation(); - }; - - private _handleOnModalDidHide: OnModalDidHideEvent = (event) => { - const props = this.props; - - props.onModalDidHide?.(event); - props.onModalDismiss?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidHide, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated.onModalDismiss, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - - this.setState({ - isModalVisible: false, - }); - }; - - private _handleOnModalWillFocus: OnModalWillFocusEvent = (event) => { - const props = this.props; - - props.onModalWillFocus?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalWillFocus, - event.nativeEvent - ); - - this.setState({ - focusState: event.nativeEvent.modalFocusState.state, - }); - }; - - private _handleOnModalDidFocus: OnModalDidFocusEvent = (event) => { - const props = this.props; - - props.onModalDidFocus?.(event); - props.onModalFocus?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidFocus, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated.onModalFocus, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - - this.setState({ - isModalInFocus: true, - focusState: event.nativeEvent.modalFocusState.state, - }); - }; - - private _handleOnModalWillBlur: OnModalWillBlurEvent = (event) => { - const props = this.props; - - props.onModalWillBlur?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalWillBlur, - event.nativeEvent - ); - - this.setState({ - focusState: event.nativeEvent.modalFocusState.state, - }); - }; - - private _handleOnModalDidBlur: OnModalDidBlurEvent = (event) => { - const props = this.props; - - props.onModalDidBlur?.(event); - props.onModalBlur?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidBlur, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated.onModalBlur, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - - this.setState({ - isModalInFocus: false, - focusState: event.nativeEvent.modalFocusState.state, - }); - }; - - private _handleOnPresentationControllerWillDismiss: OnPresentationControllerWillDismissEvent = (event) => { - const props = this.props; - - props.onPresentationControllerWillDismiss?.(event); - props._onModalWillDismiss?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onPresentationControllerWillDismiss, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated._onModalWillDismiss, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - }; - - private _handleOnPresentationControllerDidDismiss: OnPresentationControllerDidDismissEvent = (event) => { - const props = this.props; - - props.onPresentationControllerDidDismiss?.(event); - props._onModalDidDismiss?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onPresentationControllerDidDismiss, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated._onModalDidDismiss, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - }; - - private _handleOnPresentationControllerDidAttemptToDismiss: OnPresentationControllerDidAttemptToDismissEvent = (event) => { - const props = this.props; - - props.onPresentationControllerDidAttemptToDismiss?.(event); - props.onModalAttemptDismiss?.( - ModalViewHelpers.createDeprecatedBaseEventObject(event) - ); - - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onPresentationControllerDidAttemptToDismiss, - event.nativeEvent - ); - - this.emitter.emit( - ModalViewEmitterEventsDeprecated.onModalAttemptDismiss, - ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ) - ); - }; - - private _handleOnModalDetentDidCompute: - OnModalDetentDidComputeEvent = (event) => { - - const props = this.props; - - props.onModalDetentDidCompute?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDetentDidCompute, - event.nativeEvent - ); - }; - - private _handleOnModalDidChangeSelectedDetentIdentifier: - OnModalDidChangeSelectedDetentIdentifierEvent = (event) => { - - const props = this.props; - - props.onModalDidChangeSelectedDetentIdentifier?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidChangeSelectedDetentIdentifier, - event.nativeEvent - ); - }; - - private _handleOnModalDidSnap: OnModalDidSnapEvent = (event) => { - const props = this.props; - - props.onModalDidSnap?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDidSnap, - event.nativeEvent - ); - }; - - private _handleOnModalSwipeGestureStart: - OnModalSwipeGestureStartEvent = (event) => { - - const props = this.props; - - props.onModalSwipeGestureStart?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalSwipeGestureStart, - event.nativeEvent - ); - }; - - private _handleOnModalSwipeGestureDidEnd: - OnModalSwipeGestureDidEndEvent = (event) => { - - const props = this.props; - - props.onModalSwipeGestureDidEnd?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalSwipeGestureDidEnd, - event.nativeEvent - ); - }; - - private _handleOnModalDismissWillCancel: OnModalDismissWillCancelEvent = (event) => { - const props = this.props; - - props.onModalDismissWillCancel?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDismissWillCancel, - event.nativeEvent - ); - }; - - private _handleOnModalDismissDidCancel: OnModalDismissDidCancelEvent = (event) => { - const props = this.props; - - props.onModalDismissDidCancel?.(event); - event.stopPropagation(); - - this.emitter.emit( - ModalViewEmitterEvents.onModalDismissDidCancel, - event.nativeEvent - ); - }; - - private _renderModal() { - const { viewProps, ...props } = this.getProps(); - const state = this.state; - - const overrideProps = { - ...(props.setModalInPresentationFromProps && { - isModalInPresentation: state.isModalInPresentation, - }), - - ...(props.setEnableSwipeGestureFromProps && { - enableSwipeGesture: state.enableSwipeGesture, - }), - }; - - // TODO: See TODO:2023-03-04-12-50-04 - Fix: - // isModalContentLazy Prop - // - // * Error when opening modal once it's been closed - const shouldMountModalContent = - !props.isModalContentLazy || state.isModalVisible; - - return ( - { - this.nativeRefModalView = r!; - }} - style={styles.nativeModalView} - onStartShouldSetResponder={this._shouldSetResponder} - onModalWillPresent={this._handleOnModalWillPresent} - onModalDidPresent={this._handleOnModalDidPresent} - onModalWillDismiss={this._handleOnModalWillDismiss} - onModalDidDismiss={this._handleOnModalDidDismiss} - onModalWillShow={this._handleOnModalWillShow} - onModalDidShow={this._handleOnModalDidShow} - onModalWillHide={this._handleOnModalWillHide} - onModalDidHide={this._handleOnModalDidHide} - onModalWillFocus={this._handleOnModalWillFocus} - onModalDidFocus={this._handleOnModalDidFocus} - onModalWillBlur={this._handleOnModalWillBlur} - onModalDidBlur={this._handleOnModalDidBlur} - onPresentationControllerWillDismiss={this._handleOnPresentationControllerWillDismiss} - onPresentationControllerDidDismiss={this._handleOnPresentationControllerDidDismiss} - onPresentationControllerDidAttemptToDismiss={this._handleOnPresentationControllerDidAttemptToDismiss} - onModalDetentDidCompute={this._handleOnModalDetentDidCompute} - onModalDidChangeSelectedDetentIdentifier={this._handleOnModalDidChangeSelectedDetentIdentifier} - onModalDidSnap={this._handleOnModalDidSnap} - onModalSwipeGestureStart={this._handleOnModalSwipeGestureStart} - onModalSwipeGestureDidEnd={this._handleOnModalSwipeGestureDidEnd} - onModalDismissWillCancel={this._handleOnModalDismissWillCancel} - onModalDismissDidCancel={this._handleOnModalDismissDidCancel} - {...overrideProps} - {...viewProps} - > - {shouldMountModalContent && ( - - - {React.cloneElement(props.children as any, { - getModalRef: this._handleGetModalRef, - // pass down props received from setVisibility - ...(Helpers.isObject(state.childProps) && state.childProps), - // pass down modalID - modalID: props.modalID, - })} - - - )} - - ); - } - - render() { - const state = this.state; - - if (Platform.OS !== 'ios') { - return null; - } - - return ( - - - {hasScrollViewContext ? ( - // @ts-ignore - - {this._renderModal()} - {/* - // @ts-ignore */} - - ) : ( - this._renderModal() - )} - - - ); - } -} - -const styles = StyleSheet.create({ - nativeModalView: { - position: 'absolute', - width: 0, - height: 0, - overflow: 'hidden', - }, - modalContentWrapper: { - position: 'absolute', - overflow: 'visible', - top: 0, - bottom: 0, - left: 0, - right: 0, - }, - modalContentContainer: { - flex: 1, - }, -}); - -class ModalViewHelpers { - static createDeprecatedEventObject( - event: RNIModalBaseEventData - ): RNIModalDeprecatedBaseEvent { - return { - modalUUID: event.modalNativeID, - modalID: event.modalID, - reactTag: event.reactTag, - isInFocus: event.modalFocusState.isFocused, - modalLevel: event.modalIndex, - modalLevelPrev: event.modalIndexPrev, - isPresented: event.modalPresentationState.isPresented, - }; - } - - static createDeprecatedBaseEventObject( - event: NativeSyntheticEvent - ): NativeSyntheticEvent { - return { - ...event, - nativeEvent: ModalViewHelpers.createDeprecatedEventObject( - event.nativeEvent - ), - }; - } -} diff --git a/src/components/ModalView/ModalViewConstants.ts b/src/components/ModalView/ModalViewConstants.ts deleted file mode 100644 index 56aee519..00000000 --- a/src/components/ModalView/ModalViewConstants.ts +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import { ScrollView } from 'react-native'; - -export const NATIVE_ID_KEYS = { - modalViewContent: 'modalViewContent', -}; - -export const VirtualizedListContext = React.createContext(null); - -// fix for react-native 0.60 -export const hasScrollViewContext: boolean = - (ScrollView as any).Context?.Provider != null; diff --git a/src/components/ModalView/ModalViewEmitter.ts b/src/components/ModalView/ModalViewEmitter.ts deleted file mode 100644 index 6f0905e1..00000000 --- a/src/components/ModalView/ModalViewEmitter.ts +++ /dev/null @@ -1,101 +0,0 @@ -import type { LayoutChangeEvent } from 'react-native'; -import type { TSEventEmitter } from '@dominicstop/ts-event-emitter'; - -import type { - OnModalWillPresentEventObject, - OnModalDidPresentEventObject, - OnModalWillDismissEventObject, - OnModalDidDismissEventObject, - OnModalWillShowEventObject, - OnModalDidShowEventObject, - OnModalWillHideEventObject, - OnModalDidHideEventObject, - OnModalWillFocusEventObject, - OnModalDidFocusEventObject, - OnModalWillBlurEventObject, - OnModalDidBlurEventObject, - OnPresentationControllerWillDismissEventObject, - OnPresentationControllerDidDismissEventObject, - OnPresentationControllerDidAttemptToDismissEventObject, - OnModalDetentDidComputeEventObject, - OnModalDidChangeSelectedDetentIdentifierEventObject, - OnModalDidSnapEventObject, - OnModalSwipeGestureStartEventObject, - OnModalSwipeGestureDidEndEventObject, - OnModalDismissWillCancelEventObject, - OnModalDismissDidCancelEventObject, -} from 'src/native_components/RNIModalView'; - -import type { KeyMapType } from '../../types/UtilityTypes'; - -import type { - ModalViewEmitterEventMapDeprecated, - ModalViewEmitterEventsDeprecated, -} from './ModalViewEmitterDeprecated'; - -export enum ModalViewEmitterEvents { - // `RNIModalView` Events - onModalWillPresent = 'onModalWillPresent', - onModalDidPresent = 'onModalDidPresent', - onModalWillDismiss = 'onModalWillDismiss', - onModalDidDismiss = 'onModalDidDismiss', - onModalWillShow = 'onModalWillShow', - onModalDidShow = 'onModalDidShow', - onModalWillHide = 'onModalWillHide', - onModalDidHide = 'onModalDidHide', - onModalWillFocus = 'onModalWillFocus', - onModalDidFocus = 'onModalDidFocus', - onModalWillBlur = 'onModalWillBlur', - onModalDidBlur = 'onModalDidBlur', - onPresentationControllerWillDismiss = 'onPresentationControllerWillDismiss', - onPresentationControllerDidDismiss = 'onPresentationControllerDidDismiss', - onPresentationControllerDidAttemptToDismiss = 'onPresentationControllerDidAttemptToDismiss', - onModalDetentDidCompute = 'onModalDetentDidCompute', - onModalDidChangeSelectedDetentIdentifier = 'onModalDidChangeSelectedDetentIdentifier', - onModalDidSnap = 'onModalDidSnap', - onModalSwipeGestureStart = 'onModalSwipeGestureStart', - onModalSwipeGestureDidEnd = 'onModalSwipeGestureDidEnd', - onModalDismissWillCancel = 'onModalDismissWillCancel', - onModalDismissDidCancel = 'onModalDismissDidCancel', - - onLayoutModalContentContainer = 'onLayoutModalContentContainer', -} - -// TODO: See TODO:20230-03-04-12-58-40 - Refactor: Types - -// Remove KeyMapType Usage -// -export type ModalViewEmitterEventMap = - // prettier-ignore - KeyMapType; - -export type ModalViewEventEmitter = TSEventEmitter< - ModalViewEmitterEvents & ModalViewEmitterEventsDeprecated, - ModalViewEmitterEventMap & ModalViewEmitterEventMapDeprecated ->; diff --git a/src/components/ModalView/ModalViewEmitterDeprecated.ts b/src/components/ModalView/ModalViewEmitterDeprecated.ts deleted file mode 100644 index b0a14ee8..00000000 --- a/src/components/ModalView/ModalViewEmitterDeprecated.ts +++ /dev/null @@ -1,54 +0,0 @@ -import type { LayoutChangeEvent } from 'react-native'; -import type { TSEventEmitter } from '@dominicstop/ts-event-emitter'; - -import type { - OnModalBlurEventObject, - OnModalFocusEventObject, - OnModalShowEventObject, - OnModalDismissEventObject, - OnModalAttemptDismissEventObject, - DeprecatedOnModalWillDismissEventObject, - DeprecatedOnModalDidDismissEventObject, -} from 'src/native_components/RNIModalView'; - -import type { KeyMapType } from '../../types/UtilityTypes'; - -/** @deprecated */ -export enum ModalViewEmitterEventsDeprecated { - // `RNIModalView` Events - onModalBlur = 'onModalBlur', - onModalFocus = 'onModalFocus', - onModalShow = 'onModalShow', - onModalDismiss = 'onModalDismiss', - _onModalDidDismiss = '_onModalDidDismiss', - _onModalWillDismiss = '_onModalWillDismiss', - onModalAttemptDismiss = 'onModalAttemptDismiss', - - onLayoutModalContentContainer = 'onLayoutModalContentContainer', -} - -// TODO: See TODO:20230-03-04-12-58-40 - Refactor: Types - -// Remove KeyMapType Usage -// -/** @deprecated */ -export type ModalViewEmitterEventMapDeprecated = - // prettier-ignore - KeyMapType; - -/** @deprecated */ -export type ModalViewEventEmitterDeprecated = TSEventEmitter< - ModalViewEmitterEventsDeprecated, - ModalViewEmitterEventMapDeprecated ->; diff --git a/src/components/ModalView/ModalViewProps.ts b/src/components/ModalView/ModalViewProps.ts deleted file mode 100644 index 40f3c66b..00000000 --- a/src/components/ModalView/ModalViewProps.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { ViewProps, ViewStyle } from 'react-native'; - -import type { - RNIModalViewProps, - OnModalFocusEvent, - OnModalShowEvent, - OnModalAttemptDismissEvent, - OnModalDismissEvent, - OnModalBlurEvent, - DeprecatedOnModalWillDismissEvent, - DeprecatedOnModalDidDismissEvent, -} from 'src/native_components/RNIModalView'; - -import type { RNIComputableSize } from '../../types/RNIComputable'; - -export type ModalViewBaseProps = Partial< - Pick< - RNIModalViewProps, - // Props - General - | 'modalID' - - // Props - BG-Related - | 'isModalBGBlurred' - | 'isModalBGTransparent' - | 'modalBGBlurEffectStyle' - - // Props - Presentation/Transition - | 'modalPresentationStyle' - | 'modalTransitionStyle' - | 'hideNonVisibleModals' - | 'presentViaMount' - | 'enableSwipeGesture' - | 'allowModalForceDismiss' - | 'isModalInPresentation' - - // Props - Sheet-Related - | 'modalSheetDetents' - | 'sheetPrefersScrollingExpandsWhenScrolledToEdge' - | 'sheetPrefersEdgeAttachedInCompactHeight' - | 'sheetWidthFollowsPreferredContentSizeWhenEdgeAttached' - | 'sheetPrefersGrabberVisible' - | 'sheetShouldAnimateChanges' - | 'sheetLargestUndimmedDetentIdentifier' - | 'sheetPreferredCornerRadius' - | 'sheetSelectedDetentIdentifier' - - // props - events - | 'onModalWillPresent' - | 'onModalDidPresent' - | 'onModalWillDismiss' - | 'onModalDidDismiss' - | 'onModalWillShow' - | 'onModalDidShow' - | 'onModalWillHide' - | 'onModalDidHide' - | 'onModalWillFocus' - | 'onModalDidFocus' - | 'onModalWillBlur' - | 'onModalDidBlur' - | 'onPresentationControllerWillDismiss' - | 'onPresentationControllerDidDismiss' - | 'onPresentationControllerDidAttemptToDismiss' - | 'onModalDetentDidCompute' - | 'onModalDidChangeSelectedDetentIdentifier' - | 'onModalDidSnap' - | 'onModalSwipeGestureStart' - | 'onModalSwipeGestureDidEnd' - | 'onModalDismissWillCancel' - | 'onModalDismissDidCancel' - > -> & { - modalContentPreferredContentSize?: RNIComputableSize; - - // TODO: See TODO:2023-03-04-13-02-45 - Refactor: Rename to - // shouldAutoCloseOnUnmount - autoCloseOnUnmount?: boolean; - setEnableSwipeGestureFromProps?: boolean; - setModalInPresentationFromProps?: boolean; - isModalContentLazy?: boolean; - - shouldEnableAggressiveCleanup?: boolean; - - containerStyle: ViewStyle; - children?: React.ReactNode; -}; - -/** @deprecated */ -export type ModalViewDeprecatedProps = { - /** @deprecated */ onModalFocus?: OnModalFocusEvent; - /** @deprecated */ onModalShow?: OnModalShowEvent; - /** @deprecated */ onModalAttemptDismiss?: OnModalAttemptDismissEvent; - /** @deprecated */ onModalDismiss?: OnModalDismissEvent; - /** @deprecated */ onModalBlur?: OnModalBlurEvent; - /** @deprecated */ _onModalWillDismiss?: DeprecatedOnModalWillDismissEvent; - /** @deprecated */ _onModalDidDismiss?: DeprecatedOnModalDidDismissEvent; -}; - -// prettier-ignore -export type ModalViewProps = - ViewProps & ModalViewBaseProps & ModalViewDeprecatedProps; diff --git a/src/components/ModalView/ModalViewState.ts b/src/components/ModalView/ModalViewState.ts deleted file mode 100644 index cf8f44ea..00000000 --- a/src/components/ModalView/ModalViewState.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { ModalFocusState } from 'src/types/RNIModalTypes'; - -export type ModalViewState = { - isModalVisible: boolean; - childProps: unknown; - enableSwipeGesture: boolean; - isModalInPresentation: boolean; - isModalInFocus: boolean; - - focusState: ModalFocusState; -}; diff --git a/src/components/ModalView/index.ts b/src/components/ModalView/index.ts deleted file mode 100644 index a3952db5..00000000 --- a/src/components/ModalView/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './ModalView'; -export * from './ModalViewProps'; -export * from './ModalViewState'; -export * from './ModalViewEmitter'; -export * from './ModalViewEmitterDeprecated'; diff --git a/src/constants/Enums.ts b/src/constants/Enums.ts deleted file mode 100644 index d46306e2..00000000 --- a/src/constants/Enums.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { UIBlurEffectStyle } from 'src/types/NativeTypes'; - -import type { - UIModalPresentationStyle, - UIModalTransitionStyle, -} from 'src/types/NativeTypes'; - -export const UIBlurEffectStyles: { - [T in UIBlurEffectStyle]: T; -} = { - // Adaptable Styles - systemUltraThinMaterial: 'systemUltraThinMaterial', - systemThinMaterial: 'systemThinMaterial', - systemMaterial: 'systemMaterial', - systemThickMaterial: 'systemThickMaterial', - systemChromeMaterial: 'systemChromeMaterial', - - // Light Styles - systemMaterialLight: 'systemMaterialLight', - systemThinMaterialLight: 'systemThinMaterialLight', - systemUltraThinMaterialLight: 'systemUltraThinMaterialLight', - systemThickMaterialLight: 'systemThickMaterialLight', - systemChromeMaterialLight: 'systemChromeMaterialLight', - - // Dark Styles - systemChromeMaterialDark: 'systemChromeMaterialDark', - systemMaterialDark: 'systemMaterialDark', - systemThickMaterialDark: 'systemThickMaterialDark', - systemThinMaterialDark: 'systemThinMaterialDark', - systemUltraThinMaterialDark: 'systemUltraThinMaterialDark', - - // Additional Styles - regular: 'regular', - prominent: 'prominent', - light: 'light', - extraLight: 'extraLight', - dark: 'dark', - extraDark: 'extraDark', -}; - -export const UIModalPresentationStyles: { - [T in UIModalPresentationStyle]: T; -} = { - automatic: 'automatic', - fullScreen: 'fullScreen', - pageSheet: 'pageSheet', - formSheet: 'formSheet', - overFullScreen: 'overFullScreen', - - // NOT SUPPORTED - // ------------- - - none: 'none', - currentContext: 'currentContext', - custom: 'custom', - overCurrentContext: 'overCurrentContext', - popover: 'popover', - blurOverFullScreen: 'blurOverFullScreen', -}; - -export const UIModalTransitionStyles: { - [T in UIModalTransitionStyle]: T; -} = { - coverVertical: 'coverVertical', - crossDissolve: 'crossDissolve', - flipHorizontal: 'flipHorizontal', - - // NOT SUPPORTED - // ------------- - - partialCurl: 'partialCurl', -}; diff --git a/src/context/ModalContext.ts b/src/context/ModalContext.ts deleted file mode 100644 index 8a6f2d5a..00000000 --- a/src/context/ModalContext.ts +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import type { ModalView, ModalViewState } from 'src/components/ModalView'; - -// prettier-ignore -export type ModalContextType = Partial< - // `ModalView` Methods #1 - Pick< - ModalView, - | 'getEmitterRef' - | 'setVisibility' - | 'setEnableSwipeGesture' - | 'setIsModalInPresentation' - > - // `ModalView` State - & Pick< - ModalViewState, - | 'isModalInFocus' - | 'isModalVisible' - | 'focusState' - > - // `ModalView` Methods #2 - & { - getModalRef: ModalView['_handleGetModalRef']; - } ->; - -export const ModalContext = React.createContext({}); diff --git a/src/functions/helpers.ts b/src/functions/helpers.ts deleted file mode 100644 index 03790697..00000000 --- a/src/functions/helpers.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** wrapper func for setState that returns a promise */ -// eslint-disable-next-line consistent-this -export function setStateAsync( - that: React.Component, - newState: T | ((prevState: T) => T) -) { - return new Promise((resolve) => { - that.setState(newState, () => { - resolve(); - }); - }); -} - -/** wrapper for timeout that returns a promise */ -export function timeout(ms: number) { - return new Promise((resolve) => { - const timeoutID = setTimeout(() => { - clearTimeout(timeoutID); - resolve(); - }, ms); - }); -} - -/** Wraps a promise that will reject if not not resolved in milliseconds */ -export function promiseWithTimeout(ms: number, promise: Promise) { - // Create a promise that rejects in milliseconds - const timeoutPromise = new Promise((_, reject) => { - const timeoutID = setTimeout(() => { - clearTimeout(timeoutID); - reject(`Promise timed out in ${ms} ms.`); - }, ms); - }); - - // Returns a race between our timeout and the passed in promise - return Promise.race([promise, timeoutPromise]); -} - -export function isObject(value: unknown): value is object { - const type = typeof value; - return value != null && (type === 'object' || type === 'function'); -} diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 30912e0e..00000000 --- a/src/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -export * from './components/ModalView'; - -export * from './module/ModalViewModule'; - -export * from './constants/Enums'; -export * from './context/ModalContext'; - -export * from './native_components/RNIModalView'; -export * from './native_modules/RNIModalViewModule'; - -export * from './types/NativeTypes'; -export * from './types/RNIModalTypes'; -export * from './types/RNIComputable'; diff --git a/src/module/ModalViewModule.ts b/src/module/ModalViewModule.ts deleted file mode 100644 index 34f8ee5c..00000000 --- a/src/module/ModalViewModule.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { RNIModalViewModule } from '../native_modules/RNIModalViewModule'; - -export class ModalViewModule { - static async setModalVisibilityByID( - modalID: string, - visibility: boolean, - animated = true - ) { - await RNIModalViewModule.setModalVisibilityByID( - modalID, - visibility, - animated - ); - } - - static async dismissAllModals(animated = true) { - await RNIModalViewModule.dismissAllModals(animated); - } -} diff --git a/src/native_components/RNIModalView/RNIModalView.ts b/src/native_components/RNIModalView/RNIModalView.ts deleted file mode 100644 index db32e6a6..00000000 --- a/src/native_components/RNIModalView/RNIModalView.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { - View, - UIManager, - requireNativeComponent, - Platform, - HostComponent, -} from 'react-native'; - -import type { - RNIModalViewConstantMap, - RNIModalViewProps, -} from './RNIModalViewTypes'; - -const nativeViewName = 'RNIModalView'; - -/** - * Do not use `RNIModalView` if platform is not iOS. - */ -export const RNIModalView: HostComponent = Platform.select({ - ios: () => requireNativeComponent(nativeViewName) as any, - default: () => View, -})(); - -export const RNIModalViewConstants: Partial = - (UIManager as Record)[nativeViewName]?.Constants ?? {}; - -export const AvailableBlurEffectStyles = - RNIModalViewConstants?.availableBlurEffectStyles ?? []; - -export const AvailablePresentationStyles = - RNIModalViewConstants?.availablePresentationStyles ?? []; diff --git a/src/native_components/RNIModalView/RNIModalViewDeprecatedEvents.ts b/src/native_components/RNIModalView/RNIModalViewDeprecatedEvents.ts deleted file mode 100644 index b3b696b3..00000000 --- a/src/native_components/RNIModalView/RNIModalViewDeprecatedEvents.ts +++ /dev/null @@ -1,95 +0,0 @@ -import type { NativeSyntheticEvent } from 'react-native'; - -// Event Object Types -// ------------------ - -/** @deprecated */ -export type RNIModalDeprecatedBaseEvent = { - modalUUID: string; - isInFocus: boolean; - isPresented: boolean; - modalLevel: number; - modalLevelPrev: number; - reactTag?: number; - modalID?: string; -}; - -// Native Event Object -// ------------------- - -/** @deprecated */ -export type OnModalShowEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -/** @deprecated */ -export type OnModalDismissEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -/** @deprecated */ -export type OnModalBlurEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -/** @deprecated */ -export type OnModalFocusEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -/** @deprecated */ -export type OnModalAttemptDismissEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -/** @deprecated */ -export type DeprecatedOnModalWillDismissEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -/** @deprecated */ -export type DeprecatedOnModalDidDismissEventObject = NativeSyntheticEvent< - RNIModalDeprecatedBaseEvent & {} ->; - -// Event Handler Types -// ------------------- - -// prettier-ignore -/** @deprecated */ -export type OnModalShowEvent = ( - event: OnModalShowEventObject -) => void; - -// prettier-ignore -/** @deprecated */ -export type OnModalDismissEvent = ( - event: OnModalDismissEventObject -) => void; - -// prettier-ignore -/** @deprecated */ -export type OnModalBlurEvent = ( - event: OnModalBlurEventObject -) => void; - -// prettier-ignore -/** @deprecated */ -export type OnModalFocusEvent = ( - event: OnModalFocusEventObject -) => void; - -/** @deprecated */ -export type OnModalAttemptDismissEvent = ( - event: OnModalAttemptDismissEventObject -) => void; - -/** @deprecated */ -export type DeprecatedOnModalWillDismissEvent = ( - event: DeprecatedOnModalWillDismissEventObject -) => void; - -/** @deprecated */ -export type DeprecatedOnModalDidDismissEvent = ( - event: DeprecatedOnModalDidDismissEventObject -) => void; diff --git a/src/native_components/RNIModalView/RNIModalViewEventData.ts b/src/native_components/RNIModalView/RNIModalViewEventData.ts deleted file mode 100644 index 75e60b6c..00000000 --- a/src/native_components/RNIModalView/RNIModalViewEventData.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { CGPoint, CGSize } from 'src/types/NativeTypes'; -import type { RNIModalData } from 'src/types/RNIModalTypes'; - -// Event Object Types -// ------------------ - -/** Based on `RNIModalBaseEventData` */ -export type RNIModalBaseEventData = RNIModalData & { - reactTag: number; - modalID?: string; -}; - -/** Based on `RNIOnModalFocusEventData` */ -export type RNIOnModalFocusEventData = RNIModalBaseEventData & { - senderInfo: RNIModalData; - isInitial: boolean; -}; - -/** Based on `RNIModalSwipeGestureEventData` */ -export type RNIModalSwipeGestureEventData = { - position: CGPoint; -}; - -/** Based on `RNIModalDidSnapEventData` */ -export type RNIModalDidSnapEventData = { - selectedDetentIdentifier?: string; - modalContentSize: CGSize; -}; - -/** Based on RNIModalDidChangeSelectedDetentIdentifierEventData */ -export type RNIModalDidChangeSelectedDetentIdentifierEventData = { - sheetDetentStringPrevious?: string; - sheetDetentStringCurrent?: string; -}; - -/** Based on RNIModalDetentDidComputeEventData */ -export type RNIModalDetentDidComputeEventData = { - maximumDetentValue: number; - computedDetentValue: number; - key: string; -}; diff --git a/src/native_components/RNIModalView/RNIModalViewEventObjects.ts b/src/native_components/RNIModalView/RNIModalViewEventObjects.ts deleted file mode 100644 index 8dca71ba..00000000 --- a/src/native_components/RNIModalView/RNIModalViewEventObjects.ts +++ /dev/null @@ -1,79 +0,0 @@ -import type { NativeSyntheticEvent } from 'react-native'; - -import type { - RNIModalBaseEventData, - RNIModalDetentDidComputeEventData, - RNIModalDidChangeSelectedDetentIdentifierEventData, - RNIOnModalFocusEventData, - RNIModalDidSnapEventData, - RNIModalSwipeGestureEventData, -} from './RNIModalViewEventData'; - -// Native Event Object -// ------------------- - -export type OnModalWillPresentEventObject = - NativeSyntheticEvent; - -export type OnModalDidPresentEventObject = - NativeSyntheticEvent; - -export type OnModalWillDismissEventObject = - NativeSyntheticEvent; - -export type OnModalDidDismissEventObject = - NativeSyntheticEvent; - -export type OnModalWillShowEventObject = - NativeSyntheticEvent; - -export type OnModalDidShowEventObject = - NativeSyntheticEvent; - -export type OnModalWillHideEventObject = - NativeSyntheticEvent; - -export type OnModalDidHideEventObject = - NativeSyntheticEvent; - -export type OnPresentationControllerWillDismissEventObject = - NativeSyntheticEvent; - -export type OnPresentationControllerDidDismissEventObject = - NativeSyntheticEvent; - -export type OnPresentationControllerDidAttemptToDismissEventObject = - NativeSyntheticEvent; - -export type OnModalWillFocusEventObject = - NativeSyntheticEvent; - -export type OnModalDidFocusEventObject = - NativeSyntheticEvent; - -export type OnModalDetentDidComputeEventObject = - NativeSyntheticEvent; - -export type OnModalDidChangeSelectedDetentIdentifierEventObject = - NativeSyntheticEvent; - -export type OnModalWillBlurEventObject = - NativeSyntheticEvent; - -export type OnModalDidBlurEventObject = - NativeSyntheticEvent; - -export type OnModalDidSnapEventObject = - NativeSyntheticEvent; - -export type OnModalSwipeGestureStartEventObject = - NativeSyntheticEvent; - -export type OnModalSwipeGestureDidEndEventObject = - NativeSyntheticEvent; - -export type OnModalDismissWillCancelEventObject = - NativeSyntheticEvent; - -export type OnModalDismissDidCancelEventObject = - NativeSyntheticEvent; diff --git a/src/native_components/RNIModalView/RNIModalViewEvents.ts b/src/native_components/RNIModalView/RNIModalViewEvents.ts deleted file mode 100644 index 3f064e15..00000000 --- a/src/native_components/RNIModalView/RNIModalViewEvents.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* eslint-disable prettier/prettier */ - -import type { - OnModalWillPresentEventObject, - OnModalDidPresentEventObject, - OnModalWillDismissEventObject, - OnModalDidDismissEventObject, - OnModalWillShowEventObject, - OnModalDidShowEventObject, - OnModalWillHideEventObject, - OnModalDidHideEventObject, - OnPresentationControllerWillDismissEventObject, - OnPresentationControllerDidDismissEventObject, - OnPresentationControllerDidAttemptToDismissEventObject, - OnModalWillFocusEventObject, - OnModalDidFocusEventObject, - OnModalWillBlurEventObject, - OnModalDidBlurEventObject, - OnModalDetentDidComputeEventObject, - OnModalDidChangeSelectedDetentIdentifierEventObject, - OnModalDidSnapEventObject, - OnModalSwipeGestureStartEventObject, - OnModalSwipeGestureDidEndEventObject, - OnModalDismissWillCancelEventObject, - OnModalDismissDidCancelEventObject, -} from './RNIModalViewEventObjects'; - -// Event Handler Types -// ------------------- - -export type OnModalWillPresentEvent = ( - event: OnModalWillPresentEventObject -) => void; - -export type OnModalDidPresentEvent = ( - event: OnModalDidPresentEventObject -) => void; - -export type OnModalWillDismissEvent = ( - event: OnModalWillDismissEventObject -) => void; - -export type OnModalDidDismissEvent = ( - event: OnModalDidDismissEventObject -) => void; - -export type OnModalWillShowEvent = ( - event: OnModalWillShowEventObject -) => void; - -export type OnModalDidShowEvent = ( - event: OnModalDidShowEventObject -) => void; - -export type OnModalWillHideEvent = ( - event: OnModalWillHideEventObject -) => void; - -export type OnModalDidHideEvent = ( - event: OnModalDidHideEventObject -) => void; - -export type OnPresentationControllerWillDismissEvent = ( - event: OnPresentationControllerWillDismissEventObject -) => void; - -export type OnPresentationControllerDidDismissEvent = ( - event: OnPresentationControllerDidDismissEventObject -) => void; - -export type OnPresentationControllerDidAttemptToDismissEvent = ( - event: OnPresentationControllerDidAttemptToDismissEventObject -) => void; - -export type OnModalWillFocusEvent = ( - event: OnModalWillFocusEventObject -) => void; - -export type OnModalDidFocusEvent = ( - event: OnModalDidFocusEventObject -) => void; - -export type OnModalWillBlurEvent = ( - event: OnModalWillBlurEventObject -) => void; - -export type OnModalDidBlurEvent = ( - event: OnModalDidBlurEventObject -) => void; - -export type OnModalDetentDidComputeEvent = ( - event: OnModalDetentDidComputeEventObject -) => void; - -export type OnModalDidChangeSelectedDetentIdentifierEvent = ( - event: OnModalDidChangeSelectedDetentIdentifierEventObject -) => void; - -export type OnModalDidSnapEvent = ( - event: OnModalDidSnapEventObject -) => void; - -export type OnModalSwipeGestureStartEvent = ( - event: OnModalSwipeGestureStartEventObject -) => void; - -export type OnModalSwipeGestureDidEndEvent = ( - event: OnModalSwipeGestureDidEndEventObject -) => void; - -export type OnModalDismissWillCancelEvent = ( - event: OnModalDismissWillCancelEventObject -) => void; - -export type OnModalDismissDidCancelEvent = ( - event: OnModalDismissDidCancelEventObject -) => void; - diff --git a/src/native_components/RNIModalView/RNIModalViewTypes.ts b/src/native_components/RNIModalView/RNIModalViewTypes.ts deleted file mode 100644 index 5554c0cd..00000000 --- a/src/native_components/RNIModalView/RNIModalViewTypes.ts +++ /dev/null @@ -1,134 +0,0 @@ -import type { ViewProps } from 'react-native'; - -import type { - UIModalPresentationStyle, - UIModalTransitionStyle, - UISheetPresentationControllerDetents, - UIBlurEffectStyle, -} from 'src/types/NativeTypes'; - -import type { RNIModalCustomSheetDetent } from 'src/types/RNIModalTypes'; -import type { ViewManagerConstantMap } from 'src/types/ViewModuleRelatedTypes'; - -import type { - OnModalWillPresentEvent, - OnModalDidPresentEvent, - OnModalWillDismissEvent, - OnModalDidDismissEvent, - OnModalWillShowEvent, - OnModalDidShowEvent, - OnModalWillHideEvent, - OnModalDidHideEvent, - OnModalWillFocusEvent, - OnModalDidFocusEvent, - OnModalWillBlurEvent, - OnModalDidBlurEvent, - OnPresentationControllerWillDismissEvent, - OnPresentationControllerDidDismissEvent, - OnPresentationControllerDidAttemptToDismissEvent, - OnModalDetentDidComputeEvent, - OnModalDidChangeSelectedDetentIdentifierEvent, - OnModalDidSnapEvent, - OnModalSwipeGestureStartEvent, - OnModalSwipeGestureDidEndEvent, - OnModalDismissWillCancelEvent, - OnModalDismissDidCancelEvent, -} from './RNIModalViewEvents'; - -import type { UnionWithAutoComplete } from 'src/types/UtilityTypes'; -import type { RNIComputableSize } from 'src/types/RNIComputable'; - -export type RNIModalViewBaseProps = { - // Props - General - // --------------- - - modalID?: string; - modalContentPreferredContentSize?: RNIComputableSize; - - // Props - BG-Related - // ------------------ - - isModalBGBlurred?: boolean; - isModalBGTransparent?: boolean; - modalBGBlurEffectStyle?: UIBlurEffectStyle; - - // Props - Presentation/Transition - // ------------------------------- - - modalTransitionStyle?: UIModalTransitionStyle; - modalPresentationStyle?: UIModalPresentationStyle; - - hideNonVisibleModals?: boolean; - presentViaMount?: boolean; - enableSwipeGesture?: boolean; - allowModalForceDismiss?: boolean; - isModalInPresentation?: boolean; - - // Props - Sheet-Related - // --------------------- - - modalSheetDetents?: Array< - UISheetPresentationControllerDetents | RNIModalCustomSheetDetent - >; - - sheetPrefersScrollingExpandsWhenScrolledToEdge?: boolean; - sheetPrefersEdgeAttachedInCompactHeight?: boolean; - sheetWidthFollowsPreferredContentSizeWhenEdgeAttached?: boolean; - sheetPrefersGrabberVisible?: boolean; - sheetShouldAnimateChanges?: boolean; - - sheetPreferredCornerRadius?: number; - - sheetLargestUndimmedDetentIdentifier?: UnionWithAutoComplete< - UISheetPresentationControllerDetents, - string - >; - - sheetSelectedDetentIdentifier?: UnionWithAutoComplete< - UISheetPresentationControllerDetents, - string - >; - - // Props - Events - // -------------- - - onModalWillPresent: OnModalWillPresentEvent; - onModalDidPresent: OnModalDidPresentEvent; - - onModalWillDismiss: OnModalWillDismissEvent; - onModalDidDismiss: OnModalDidDismissEvent; - - onModalWillShow: OnModalWillShowEvent; - onModalDidShow: OnModalDidShowEvent; - - onModalWillHide: OnModalWillHideEvent; - onModalDidHide: OnModalDidHideEvent; - - onModalWillFocus: OnModalWillFocusEvent; - onModalDidFocus: OnModalDidFocusEvent; - - onModalWillBlur: OnModalWillBlurEvent; - onModalDidBlur: OnModalDidBlurEvent; - - onPresentationControllerWillDismiss: OnPresentationControllerWillDismissEvent; - onPresentationControllerDidDismiss: OnPresentationControllerDidDismissEvent; - onPresentationControllerDidAttemptToDismiss: OnPresentationControllerDidAttemptToDismissEvent; - - onModalDetentDidCompute: OnModalDetentDidComputeEvent; - onModalDidChangeSelectedDetentIdentifier: OnModalDidChangeSelectedDetentIdentifierEvent; - - onModalDidSnap: OnModalDidSnapEvent; - - onModalSwipeGestureStart: OnModalSwipeGestureStartEvent; - onModalSwipeGestureDidEnd: OnModalSwipeGestureDidEndEvent; - - onModalDismissWillCancel: OnModalDismissWillCancelEvent; - onModalDismissDidCancel: OnModalDismissDidCancelEvent; -}; - -export type RNIModalViewProps = Partial & RNIModalViewBaseProps; - -export type RNIModalViewConstantMap = ViewManagerConstantMap<{ - availableBlurEffectStyles: UIBlurEffectStyle[]; - availablePresentationStyles: UIModalPresentationStyle[]; -}>; diff --git a/src/native_components/RNIModalView/index.ts b/src/native_components/RNIModalView/index.ts deleted file mode 100644 index 6501c417..00000000 --- a/src/native_components/RNIModalView/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './RNIModalView'; -export * from './RNIModalViewEvents'; -export * from './RNIModalViewEventObjects'; -export * from './RNIModalViewEventData'; -export * from './RNIModalViewDeprecatedEvents'; -export * from './RNIModalViewTypes'; diff --git a/src/native_modules/RNIModalViewModule.ts b/src/native_modules/RNIModalViewModule.ts deleted file mode 100644 index 5f2db852..00000000 --- a/src/native_modules/RNIModalViewModule.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { NativeModules, NativeEventEmitter } from 'react-native'; -import type { RNIModalBaseEventData } from 'src/native_components/RNIModalView'; - -const MODULE_NAME = 'RNIModalViewModule'; - -interface RNIModalViewModule { - // Standalone Functions - // -------------------- - - // prettier-ignore - setModalVisibilityByID( - modalID: string, - visibility: boolean, - animated: boolean, - ): Promise; - - // prettier-ignore - dismissAllModals( - animated: boolean, - ): Promise; - - // View-Related Functions - // ---------------------- - - // prettier-ignore - setModalVisibility( - node: number, - visibility: boolean - ): Promise; - - // prettier-ignore - requestModalInfo( - node: number, - ): Promise; -} - -export const RNIModalViewModule: RNIModalViewModule = - NativeModules[MODULE_NAME]; - -// prettier-ignore -export const RNIModalViewFocusEvents = - new NativeEventEmitter(RNIModalViewModule as any); diff --git a/src/temp/constants/RNIBaseErrorCodes.ts b/src/temp/constants/RNIBaseErrorCodes.ts deleted file mode 100644 index 45771107..00000000 --- a/src/temp/constants/RNIBaseErrorCodes.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { RNIBaseErrorCode } from "../types/RNIError"; - - -export const RNIBaseErrorCodes: { - [key in RNIBaseErrorCode]: key; -} = { - runtimeError : 'runtimeError' , - libraryError : 'libraryError' , - reactError : 'reactError' , - unknownError : 'unknownError' , - invalidArgument: 'invalidArgument', - outOfBounds : 'outOfBounds' , - invalidReactTag: 'invalidReactTag', - nilValue : 'nilValue' , -}; \ No newline at end of file diff --git a/src/temp/functions/ErrorUtilities.ts b/src/temp/functions/ErrorUtilities.ts deleted file mode 100644 index af080ecf..00000000 --- a/src/temp/functions/ErrorUtilities.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { NativeError } from "../types/NativeError"; -import { TypeUtils } from "./TypeUtils"; - - -export class ErrorUtilities { - static isNativeError(error: unknown): error is NativeError { - if(error == null) return false; - if(typeof error !== 'object') return false; - - if(!TypeUtils.hasKey('code' , error)) return false; - if(!TypeUtils.hasKey('domain' , error)) return false; - if(!TypeUtils.hasKey('message', error)) return false; - - if(typeof error.code !== 'string') return false; - if(typeof error.domain !== 'string') return false; - if(typeof error.message !== 'string') return false; - - return true; - }; -}; \ No newline at end of file diff --git a/src/temp/functions/Helpers.ts b/src/temp/functions/Helpers.ts deleted file mode 100644 index 994744e0..00000000 --- a/src/temp/functions/Helpers.ts +++ /dev/null @@ -1,54 +0,0 @@ -// @ts-nocheck - -import { findNodeHandle } from 'react-native'; - -/** wrapper func for setState that returns a promise */ -// eslint-disable-next-line consistent-this -export function setStateAsync( - that: React.Component, - newState: T | ((prevState: T) => T) -) { - return new Promise((resolve) => { - that.setState(newState, () => { - resolve(); - }); - }); -}; - -/** wrapper for timeout that returns a promise */ -export function timeout(ms: Number) { - return new Promise((resolve) => { - const timeoutID = setTimeout(() => { - clearTimeout(timeoutID); - resolve(); - }, ms); - }); -}; - -/** Wraps a promise that will reject if not not resolved in milliseconds */ -export function promiseWithTimeout(ms: Number, promise: Promise) { - // Create a promise that rejects in milliseconds - const timeoutPromise = new Promise((_, reject) => { - const timeoutID = setTimeout(() => { - clearTimeout(timeoutID); - reject(`Promise timed out in ${ms} ms.`) - }, ms); - }); - - // Returns a race between our timeout and the passed in promise - return Promise.race([promise, timeoutPromise]); -}; - -export function pad(num: number | string, places = 2) { - return String(num).padStart(places, '0'); -}; - -export function getNativeNodeHandle(nativeRef: React.Component) { - const nodeHandle = findNodeHandle(nativeRef); - - if (nodeHandle === null) { - throw new Error('Unable to get the node handle for the native ref.'); - }; - - return nodeHandle; -}; diff --git a/src/temp/functions/TypeUtils.ts b/src/temp/functions/TypeUtils.ts deleted file mode 100644 index d1f23541..00000000 --- a/src/temp/functions/TypeUtils.ts +++ /dev/null @@ -1,11 +0,0 @@ - - -export class TypeUtils { - static hasKey( - key: K, object: T - ): object is T & Record { - return key in object; - }; -}; - - diff --git a/src/temp/index.tsx b/src/temp/index.tsx deleted file mode 100644 index ccbb746d..00000000 --- a/src/temp/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export * from './functions/Helpers'; -export * from './functions/ErrorUtilities'; -export * from './functions/TypeUtils'; - -export * from './types/RNIError'; -export * from './types/NativeError'; -export * from './types/MiscTypes'; -export * from './types/UtilityTypes'; -export * from './types/RNICleanupMode'; -export * from './types/RNIJSComponentWillUnmountNotifiable'; -export * from './types/ImageItemConfig'; - -export * from './constants/RNIBaseErrorCodes'; - -export * from './native_components/RNIWrapperView'; -export * from './native_modules/RNIWrapperViewModule'; - -export * from './native_modules/RNIUtilitiesModule'; diff --git a/src/temp/native_components/RNIWrapperView.ts b/src/temp/native_components/RNIWrapperView.ts deleted file mode 100644 index 02623c84..00000000 --- a/src/temp/native_components/RNIWrapperView.ts +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import { requireNativeComponent, ViewProps, ViewStyle } from 'react-native'; - -import { RNIWrapperViewModule } from '../native_modules/RNIWrapperViewModule'; - -import * as Helpers from '../functions/Helpers'; - - -export type RNIWrapperViewProps = ViewProps & { - style?: ViewStyle; - nativeID?: string; - children?: React.ReactElement; - - shouldNotifyComponentWillUnmount?: boolean; - shouldAutoCleanupOnJSUnmount?: boolean; - shouldAutoCleanupOnWindowNil?: boolean; - shouldAutoSetSizeOnLayout?: boolean; - - isDummyView?: boolean; - shouldAutoDetachSubviews?: boolean; - - shouldCreateTouchHandlerForParentView?: boolean; - shouldCreateTouchHandlerForSubviews?: boolean; -}; - - -const COMPONENT_NAME = 'RNIWrapperView'; - -const NativeComponent = - requireNativeComponent(COMPONENT_NAME); - - -export class RNIWrapperView extends React.PureComponent { - nativeRef!: React.Component; - - constructor(props: RNIWrapperViewProps){ - super(props); - }; - - private _handleNativeRef = (ref: React.Component) => { - this.nativeRef = ref; - }; - - componentWillUnmount(){ - const shouldNotifyComponentWillUnmount = - this.props.shouldNotifyComponentWillUnmount ?? false; - - if(shouldNotifyComponentWillUnmount){ - this.notifyComponentWillUnmount(false); - }; - }; - - notifyComponentWillUnmount = (isManuallyTriggered: boolean = true) => { - RNIWrapperViewModule.notifyComponentWillUnmount( - Helpers.getNativeNodeHandle(this.nativeRef), - { isManuallyTriggered } - ); - }; - - render(){ - const props = this.props; - - return React.createElement(NativeComponent, { - ...props, - ref: this._handleNativeRef, - - shouldNotifyComponentWillUnmount: - props.shouldNotifyComponentWillUnmount ?? false, - }); - }; -}; \ No newline at end of file diff --git a/src/temp/native_modules/RNIUtilitiesModule.ts b/src/temp/native_modules/RNIUtilitiesModule.ts deleted file mode 100644 index a809868a..00000000 --- a/src/temp/native_modules/RNIUtilitiesModule.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NativeModules } from 'react-native'; - - -interface RNIUtilitiesModule { - initialize(params: object): void; -}; - -const MODULE_NAME = "RNIUtilitiesModule"; - -export const RNIUtilitiesModule: RNIUtilitiesModule = - NativeModules[MODULE_NAME]; - -// Calling this will initialize `RNIUtilities.sharedBridge`. -// Note: This module must be imported for this function to be invoked. -RNIUtilitiesModule.initialize({}); diff --git a/src/temp/native_modules/RNIWrapperViewModule.ts b/src/temp/native_modules/RNIWrapperViewModule.ts deleted file mode 100644 index 66770f09..00000000 --- a/src/temp/native_modules/RNIWrapperViewModule.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NativeModules } from 'react-native'; - - -interface RNIWrapperViewModule { - notifyComponentWillUnmount( - node: number, - params: { - isManuallyTriggered: boolean; - } - ): void; -}; - -const MODULE_NAME = "RNIWrapperViewModule"; - -export const RNIWrapperViewModule: RNIWrapperViewModule = - NativeModules[MODULE_NAME]; \ No newline at end of file diff --git a/src/temp/types/ImageItemConfig/ImageGradientConfig.ts b/src/temp/types/ImageItemConfig/ImageGradientConfig.ts deleted file mode 100644 index d8857bdf..00000000 --- a/src/temp/types/ImageItemConfig/ImageGradientConfig.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PointPreset } from "../MiscTypes"; -import type { Point } from "../MiscTypes"; -import type { ImageRectConfig } from "./ImageRectConfig"; - - -export type ImageGradientConfig = Partial> & { - /* An array defining the color of each gradient stop. */ - colors: Array; - - /* Defines the location of each gradient stop. */ - locations?: Array; - - /* The start point of the gradient when drawn in the layer’s coordinate space. */ - startPoint?: Point | PointPreset; - - /* The end point of the gradient when drawn in the layer’s coordinate space. */ - endPoint?: Point | PointPreset; - - /* Style of gradient drawn by the layer. Defaults to axial. */ - type?: 'axial' | 'conic' | 'radial' -}; \ No newline at end of file diff --git a/src/temp/types/ImageItemConfig/ImageItemConfig.ts b/src/temp/types/ImageItemConfig/ImageItemConfig.ts deleted file mode 100644 index 8f2f4718..00000000 --- a/src/temp/types/ImageItemConfig/ImageItemConfig.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { ImageOptions } from './ImageOptions'; -import type { ImageLoadingConfig, ImageRemoteUrlConfig, ImageRemoteURLLoadingConfig } from './ImageLoadingConfig'; -import type { ImageSystemConfig } from './ImageSystemConfig'; -import type { ImageResolvedAssetSource } from './ImageMiscTypes'; -import type { ImageRectConfig } from './ImageRectConfig'; -import type { ImageGradientConfig } from './ImageGradientConfig'; - -/** - * A configuration object for images. - * - * This configuration object is used to either programmatically create images, - * (e.g. gradients, rects, SFSymbols icons, etc)., or refer to existing image assets - * in the project (e.g. js image assets, XCAssets). - */ -export type ImageItemConfig = { - type: 'IMAGE_ASSET'; - /** The corresponding key of asset item in the asset catalog */ - imageValue: string; - imageOptions?: ImageOptions; - -} | { - type: 'IMAGE_SYSTEM'; - /** The key/name of the SF Symbols system icon */ - imageValue: ImageSystemConfig; - imageOptions?: ImageOptions; - -} | { - type: 'IMAGE_REQUIRE'; - /** Object returned by `Image.resolveAssetSource()` */ - imageValue: ImageResolvedAssetSource; - imageOptions?: ImageOptions; - imageLoadingConfig?: ImageLoadingConfig; - -} | { - type: 'IMAGE_EMPTY'; - -} | { - type: 'IMAGE_RECT'; - imageValue: ImageRectConfig; - -} | { - type: 'IMAGE_GRADIENT'; - imageValue: ImageGradientConfig; - imageOptions?: ImageOptions; - -} | { - type: 'IMAGE_REMOTE_URL'; - imageValue: ImageRemoteUrlConfig; - imageLoadingConfig?: ImageRemoteURLLoadingConfig; - imageOptions?: ImageOptions; -}; - -export type ImageItemConfigType = ImageItemConfig['type']; diff --git a/src/temp/types/ImageItemConfig/ImageLoadingConfig.ts b/src/temp/types/ImageItemConfig/ImageLoadingConfig.ts deleted file mode 100644 index aefe9e6a..00000000 --- a/src/temp/types/ImageItemConfig/ImageLoadingConfig.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { ImageItemConfig } from "./ImageItemConfig"; - - -export type ImageLoadingConfig = { - shouldCache?: boolean; - shouldLazyLoad?: boolean; -}; - -export type ImageRemoteUrlConfig = { - url: string; - fallbackImage?: ImageItemConfig; -}; - -export type ImageRemoteURLFallbackBehavior = - | 'afterFinalAttempt' - | 'whileNotLoaded' - | 'onLoadError'; - -export type ImageRemoteURLLoadingConfig = ImageLoadingConfig & { - maxRetryAttempts?: number; - shouldImmediatelyRetryLoading?: boolean; - fallbackBehavior?: ImageRemoteURLFallbackBehavior -}; diff --git a/src/temp/types/ImageItemConfig/ImageMiscTypes.ts b/src/temp/types/ImageItemConfig/ImageMiscTypes.ts deleted file mode 100644 index 3d0ec331..00000000 --- a/src/temp/types/ImageItemConfig/ImageMiscTypes.ts +++ /dev/null @@ -1,17 +0,0 @@ - -/** Object returned by `Image.resolveAssetSource()` */ -export type ImageResolvedAssetSource = { - height: number; - width: number; - scale: number; - uri: string; -}; - -export enum ImageTypes { - IMAGE_ASSET = 'IMAGE_ASSET' , - IMAGE_SYSTEM = 'IMAGE_SYSTEM' , - IMAGE_REQUIRE = 'IMAGE_REQUIRE' , - IMAGE_EMPTY = 'IMAGE_EMPTY' , - IMAGE_RECT = 'IMAGE_RECT' , - IMAGE_GRADIENT = 'IMAGE_GRADIENT', -}; \ No newline at end of file diff --git a/src/temp/types/ImageItemConfig/ImageOptions.ts b/src/temp/types/ImageItemConfig/ImageOptions.ts deleted file mode 100644 index 632d8d3b..00000000 --- a/src/temp/types/ImageItemConfig/ImageOptions.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { DynamicColor } from "../MiscTypes"; - - -/** Maps to `UIImage.RenderingMode`*/ -export type ImageRenderingModes = - 'automatic' | 'alwaysOriginal' | 'alwaysTemplate'; - -/** `UIImage`-related */ -export type UIImageConfig = { - tint?: string | DynamicColor; - renderingMode?: ImageRenderingModes; -}; - -export type ImageOptions = UIImageConfig & { - cornerRadius?: number -}; \ No newline at end of file diff --git a/src/temp/types/ImageItemConfig/ImageRectConfig.ts b/src/temp/types/ImageItemConfig/ImageRectConfig.ts deleted file mode 100644 index dde99bad..00000000 --- a/src/temp/types/ImageItemConfig/ImageRectConfig.ts +++ /dev/null @@ -1,7 +0,0 @@ - -export type ImageRectConfig = { - width: number; - height: number; - fillColor: string; - borderRadius?: number; -}; \ No newline at end of file diff --git a/src/temp/types/ImageItemConfig/ImageSystemConfig.ts b/src/temp/types/ImageItemConfig/ImageSystemConfig.ts deleted file mode 100644 index 4a294b94..00000000 --- a/src/temp/types/ImageItemConfig/ImageSystemConfig.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { DynamicColor } from "../MiscTypes"; - -export type ImageSymbolWeight = - | 'unspecified' - | 'ultraLight' - | 'thin' - | 'light' - | 'regular' - | 'medium' - | 'semibold' - | 'bold' - | 'heavy' - | 'black'; - -export type ImageSymbolScale = - | 'default' - | 'unspecified' - | 'small' - | 'medium' - | 'large'; - -export type ImageSystemConfig = ImageSystemSymbolConfiguration & { - systemName: string; -}; - -/** Maps to `UIImage.SymbolConfiguration` */ -export type ImageSystemSymbolConfiguration = { - pointSize?: number; - weight?: ImageSymbolWeight; - scale?: ImageSymbolScale; -} & ({ - /** Requires iOS 15+ */ - hierarchicalColor?: string | DynamicColor; -} | { - /** Requires iOS 15+ */ - paletteColors?: Array; -}); diff --git a/src/temp/types/ImageItemConfig/index.ts b/src/temp/types/ImageItemConfig/index.ts deleted file mode 100644 index abf86a35..00000000 --- a/src/temp/types/ImageItemConfig/index.ts +++ /dev/null @@ -1,9 +0,0 @@ - - -export * from './ImageGradientConfig'; -export * from './ImageItemConfig'; -export * from './ImageLoadingConfig'; -export * from './ImageMiscTypes'; -export * from './ImageOptions'; -export * from './ImageRectConfig'; -export * from './ImageSystemConfig'; \ No newline at end of file diff --git a/src/temp/types/MiscTypes.ts b/src/temp/types/MiscTypes.ts deleted file mode 100644 index ddada074..00000000 --- a/src/temp/types/MiscTypes.ts +++ /dev/null @@ -1,23 +0,0 @@ - -export type PointPreset = - | 'top' - | 'bottom' - | 'left' - | 'right' - | 'bottomLeft' - | 'bottomRight' - | 'topLeft' - | 'topRight'; - -export type Point = { - x: number; - y: number; -}; - -/** Object return by `DynamicColorIOS` */ -export type DynamicColor = { - dynamic: { - dark: string; - light: string; - }; -}; \ No newline at end of file diff --git a/src/temp/types/NativeError.ts b/src/temp/types/NativeError.ts deleted file mode 100644 index 9cb71739..00000000 --- a/src/temp/types/NativeError.ts +++ /dev/null @@ -1,8 +0,0 @@ - - -export type NativeError = { - code: string; - domain: string; - message: string; - nativeStackIOS: string[]; -}; \ No newline at end of file diff --git a/src/temp/types/RNICleanupMode.ts b/src/temp/types/RNICleanupMode.ts deleted file mode 100644 index 45fea979..00000000 --- a/src/temp/types/RNICleanupMode.ts +++ /dev/null @@ -1,11 +0,0 @@ - - -export type RNICleanupMode = - | 'automatic' - | 'viewController' - | 'reactComponentWillUnmount' - | 'disabled'; - -export type RNIInternalCleanupModeProps = { - internalCleanupMode?: RNICleanupMode; -}; \ No newline at end of file diff --git a/src/temp/types/RNIError.ts b/src/temp/types/RNIError.ts deleted file mode 100644 index 60766d6a..00000000 --- a/src/temp/types/RNIError.ts +++ /dev/null @@ -1,22 +0,0 @@ - -/// Corresponds to `RNIGenericErrorDefaultable`, i.e. the default/base -/// error codes. -export type RNIBaseErrorCode = - | 'runtimeError' - | 'libraryError' - | 'reactError' - | 'unknownError' - | 'invalidArgument' - | 'outOfBounds' - | 'invalidReactTag' - | 'nilValue'; - - -export type RNIBaseError = { - code: T; - domain: string; - message?: string; - debug?: string; -}; - -export type RNIGenericError = RNIBaseError; \ No newline at end of file diff --git a/src/temp/types/RNIJSComponentWillUnmountNotifiable.ts b/src/temp/types/RNIJSComponentWillUnmountNotifiable.ts deleted file mode 100644 index 1ec42ca3..00000000 --- a/src/temp/types/RNIJSComponentWillUnmountNotifiable.ts +++ /dev/null @@ -1,7 +0,0 @@ - -export type RNIJSComponentWillUnmountNotifiable = { - notifyComponentWillUnmount( - node: number, - params: {} - ): void; -}; \ No newline at end of file diff --git a/src/temp/types/UtilityTypes.ts b/src/temp/types/UtilityTypes.ts deleted file mode 100644 index 7062c227..00000000 --- a/src/temp/types/UtilityTypes.ts +++ /dev/null @@ -1,5 +0,0 @@ - -export type KeyMapType - = K; - -export type FunctionVoid = () => void; \ No newline at end of file diff --git a/src/types/NativeTypes.ts b/src/types/NativeTypes.ts deleted file mode 100644 index 3cc99553..00000000 --- a/src/types/NativeTypes.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* eslint-disable prettier/prettier */ - -export type CGSize = { - width: number; - height: number; -}; - -export type CGPoint = { - x: number; - y: number; -}; - -export type UIModalTransitionStyle = - | 'coverVertical' - | 'flipHorizontal' - | 'crossDissolve' - | 'partialCurl'; - -export type UIModalPresentationStyle = - | 'automatic' - | 'none' - | 'fullScreen' - | 'pageSheet' - | 'formSheet' - | 'currentContext' - | 'custom' - | 'overFullScreen' - | 'overCurrentContext' - | 'popover' - | 'blurOverFullScreen'; - -/** Maps to `UISheetPresentationController.Detents` */ -export type UISheetPresentationControllerDetents = - | 'medium' - | 'large'; - -/** Maps to `UIBlurEffect.Style` */ -export type UIBlurEffectStyle = - | 'systemUltraThinMaterial' - | 'systemThinMaterial' - | 'systemMaterial' - | 'systemThickMaterial' - | 'systemChromeMaterial' - | 'systemUltraThinMaterialLight' - | 'systemThinMaterialLight' - | 'systemMaterialLight' - | 'systemThickMaterialLight' - | 'systemChromeMaterialLight' - | 'systemUltraThinMaterialDark' - | 'systemThinMaterialDark' - | 'systemMaterialDark' - | 'systemThickMaterialDark' - | 'systemChromeMaterialDark' - | 'extraLight' - | 'light' - | 'dark' - | 'extraDark' - | 'regular' - | 'prominent'; diff --git a/src/types/RNIComputable/RNIComputableOffset.ts b/src/types/RNIComputable/RNIComputableOffset.ts deleted file mode 100644 index aed09b37..00000000 --- a/src/types/RNIComputable/RNIComputableOffset.ts +++ /dev/null @@ -1,4 +0,0 @@ -export type RNIComputableOffset = { - offset: number; - offsetOperation?: 'multiply' | 'divide' | 'add' | 'subtract'; -}; diff --git a/src/types/RNIComputable/RNIComputableSize.ts b/src/types/RNIComputable/RNIComputableSize.ts deleted file mode 100644 index 52071f8d..00000000 --- a/src/types/RNIComputable/RNIComputableSize.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable prettier/prettier */ - -import type { RNIComputableOffset } from './RNIComputableOffset'; - - -type RNIComputableSizeShared = { - offsetWidth?: RNIComputableOffset; - offsetHeight?: RNIComputableOffset; - - minWidth?: number; - minHeight?: number; - - maxWidth?: number; - maxHeight?: number; -}; - -type RNIComputableSizeModeBase = { - mode: 'current'; -} | { - mode: 'stretch'; -} | { - mode: 'constant'; - constantWidth: number; - constantHeight: number; -} | { - mode: 'percent'; - percentWidth: number; - percentHeight: number; -}; - - -export type RNIComputableSize = - | RNIComputableSizeModeBase - & RNIComputableSizeShared; diff --git a/src/types/RNIComputable/RNIComputableValue.ts b/src/types/RNIComputable/RNIComputableValue.ts deleted file mode 100644 index 25e3e54d..00000000 --- a/src/types/RNIComputable/RNIComputableValue.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* eslint-disable prettier/prettier */ - -import type { RNIComputableOffset } from './RNIComputableOffset'; - - -type RNIComputableValueShared = { - offset?: RNIComputableOffset; - minValue?: number; - maxValue?: number; -}; - -type RNIComputableValueModeBase = { - mode: 'current'; -} | { - mode: 'stretch'; -} | { - mode: 'constant'; - constantValue: number; -} | { - mode: 'percent'; - percentValue: number; -}; - - -export type RNIComputableValue = - | RNIComputableValueModeBase - & RNIComputableValueShared; diff --git a/src/types/RNIComputable/index.ts b/src/types/RNIComputable/index.ts deleted file mode 100644 index 6432266b..00000000 --- a/src/types/RNIComputable/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './RNIComputableOffset'; -export * from './RNIComputableSize'; -export * from './RNIComputableValue'; diff --git a/src/types/RNIModalTypes.ts b/src/types/RNIModalTypes.ts deleted file mode 100644 index a613e0f0..00000000 --- a/src/types/RNIModalTypes.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable prettier/prettier */ - -import type { RNIComputableOffset } from './RNIComputable'; - -/** Maps to `RNIModalCustomSheetDetent` */ -export type RNIModalCustomSheetDetent = Partial & { - mode: 'relative'; - key: string; - sizeMultiplier: number; -} | { - mode: 'constant'; - key: string; - sizeConstant: number; -}; - -/** Maps to `RNIModalFocusState` */ -export type ModalFocusState = - | 'INITIAL' - | 'FOCUSING' - | 'FOCUSED' - | 'BLURRING' - | 'BLURRED'; - -/** Maps to `RNIModalPresentationState` */ -export type ModalPresentationState = - | 'INITIAL' - | 'PRESENTING_PROGRAMMATIC' - | 'PRESENTING_UNKNOWN' - | 'PRESENTED' - | 'PRESENTED_UNKNOWN' - | 'DISMISSING_GESTURE' - | 'DISMISSING_PROGRAMMATIC' - | 'DISMISSING_UNKNOWN' - | 'DISMISS_GESTURE_CANCELLING' - | 'DISMISSED'; - - -/** Based on `RNIModalFocusStateMachine.asDictionary` */ -export type RNIModalFocusStateMachine = { - state: ModalFocusState; - statePrev: ModalFocusState; - isFocused: boolean; - isBlurred: boolean; - isTransitioning: boolean; - wasBlurCancelled: boolean; - wasFocusCancelled: boolean; -}; - -/** Based on `RNIModalPresentationStateMachine.asDictionary` */ -export type RNIModalPresentationStateMachine = { - state: ModalPresentationState; - statePrev: ModalPresentationState; - isInitialPresent: boolean; - isPresented: boolean; - isDismissed: boolean; - wasCancelledDismiss: boolean; - wasCancelledPresent: boolean; - wasCancelledDismissViaGesture: boolean; -}; - -/** Based on `RNIModalData` */ -export type RNIModalData = { - modalNativeID: string; - - modalIndex: number; - modalIndexPrev: number; - currentModalIndex: number; - - modalFocusState: RNIModalFocusStateMachine; - modalPresentationState: RNIModalPresentationStateMachine; - - computedIsModalInFocus: boolean; - computedIsModalPresented: boolean; - computedModalIndex: number; - computedViewControllerIndex: number; - computedCurrentModalIndex: number; - - synthesizedWindowID?: string; -}; diff --git a/src/types/UtilityTypes.ts b/src/types/UtilityTypes.ts deleted file mode 100644 index c6e737b8..00000000 --- a/src/types/UtilityTypes.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type KeyMapType = K; - -export type FunctionVoid = () => void; - -export interface Nothing {} -export type UnionWithAutoComplete = T | (U & Nothing); diff --git a/src/types/ViewModuleRelatedTypes.ts b/src/types/ViewModuleRelatedTypes.ts deleted file mode 100644 index 95fa8082..00000000 --- a/src/types/ViewModuleRelatedTypes.ts +++ /dev/null @@ -1,15 +0,0 @@ -// TODO: TODO:2023-03-04-13-22-34 - Refactor: Remove -// `ViewModuleRelatedTypes` -// -// * Move this file (i.e. `ViewModuleRelatedTypes`) to -// `react-native-utilities` - -export type ViewManagerCommandID = string | number; - -export type ViewManagerCommandMap = { - [K in T]: ViewManagerCommandID; -}; - -export type ViewManagerConstantMap> = { - [K in keyof T]: T[K]; -}; diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index f86cfcb1..00000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,12 +0,0 @@ - -{ - "extends": "./tsconfig", - "exclude": [ - "example", - "node_modules", - "src/temp", - "src/temp/**", - "src/temp/**/*.ts", - "src/temp/**/*.tsx", - ] -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 5e6e199d..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "react-native-ios-modal": ["./src/index"] - }, - - "target": "esnext", - "module": "esnext", - "lib": ["esnext"], - "jsx": "react", - "moduleResolution": "node", - "esModuleInterop": true, - - // lint - style + dead code - "allowUnreachableCode": false, - "allowUnusedLabels": false, - "noUnusedLocals": true, - "noUnusedParameters": true, - "importsNotUsedAsValues": "error", - "forceConsistentCasingInFileNames": true, - - // lint - common mistakes - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noUncheckedIndexedAccess": true, - - "noStrictGenericChecks": false, - "resolveJsonModule": true, - "skipLibCheck": true, - - "strict": true, - - // temporarily disable strict - // temporary until migration is finished - "allowJs": false, - - // need while "allowJs" option is set to true - "outDir": "./lib/typescript", - }, -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index dd8826b1..00000000 --- a/yarn.lock +++ /dev/null @@ -1,7523 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.4", "@babel/compat-data@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.0.tgz#9b61938c5f688212c7b9ae363a819df7d29d4093" - integrity sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w== - -"@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.18.5": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" - integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.6" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helpers" "^7.19.4" - "@babel/parser" "^7.19.6" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/eslint-parser@^7.18.2": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" - integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" - -"@babel/generator@^7.14.0", "@babel/generator@^7.19.6", "@babel/generator@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.0.tgz#0bfc5379e0efb05ca6092091261fcdf7ec36249d" - integrity sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w== - dependencies: - "@babel/types" "^7.20.0" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" - integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" - integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b" - integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" - integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.19.4" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" - integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" - integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== - dependencies: - "@babel/types" "^7.19.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helper-wrap-function@^7.18.9": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" - integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.19.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.0.tgz#27c8ffa8cc32a2ed3762fba48886e7654dbcf77f" - integrity sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ== - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.18.10", "@babel/parser@^7.19.6", "@babel/parser@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046" - integrity sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.0.0", "@babel/plugin-proposal-async-generator-functions@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7" - integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" - integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-default-from" "^7.18.6" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz#a8fc86e8180ff57290c91a75d83fe658189b642d" - integrity sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q== - dependencies: - "@babel/compat-data" "^7.19.4" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc" - integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.2.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" - integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" - integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" - integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.19.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz#91fe5e6ffc9ba13cb6c95ed7f0b1204f68c988c5" - integrity sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20" - integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.19.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz#712829ef4825d9cc04bb379de316f981e9a6f648" - integrity sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f" - integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.18.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" - integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" - integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" - -"@babel/plugin-transform-modules-systemjs@^7.19.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" - integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.19.1" - -"@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" - integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" - integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.19.0" - -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" - integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-runtime@^7.0.0": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" - integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" - integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.5.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz#2c7ec62b8bfc21482f3748789ba294a46a375169" - integrity sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-typescript" "^7.20.0" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.18.2": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.4.tgz#4c91ce2e1f994f717efb4237891c3ad2d808c94b" - integrity sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg== - dependencies: - "@babel/compat-data" "^7.19.4" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.19.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.19.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.19.4" - "@babel/plugin-transform-classes" "^7.19.0" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.19.4" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.0" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.4" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-flow@^7.13.13", "@babel/preset-flow@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" - integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-flow-strip-types" "^7.18.6" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.17.12": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/register@^7.13.16": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" - integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a" - integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== - dependencies: - regenerator-runtime "^0.13.10" - -"@babel/template@^7.0.0", "@babel/template@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.14.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.0", "@babel/traverse@^7.7.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.0.tgz#538c4c6ce6255f5666eba02252a7b59fc2d5ed98" - integrity sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.20.0", "@babel/types@^7.4.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.0.tgz#52c94cf8a7e24e89d2a194c25c35b17a64871479" - integrity sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg== - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@dominicstop/ts-event-emitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@dominicstop/ts-event-emitter/-/ts-event-emitter-1.1.0.tgz#1f3d3fa878a1ccab686931280757954719cf88e4" - integrity sha512-CcxmJIvUb1vsFheuGGVSQf4KdPZC44XolpUT34+vlal+LyQoBUOn31pjFET5M9ctOxEpt8xa0M3/2M7uUiAoJw== - -"@eslint/eslintrc@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" - integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.11.6": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" - integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@iarna/toml@2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - -"@jest/create-cache-key-function@^29.0.3": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.2.1.tgz#5f168051001ffea318b720cd6062daaf0b074913" - integrity sha512-///wxGQUyP0GCr3L1OcqIzhsKvN2gOyqWsRxs56XGCdD8EEuoKg857G9nC+zcWIpIsG+3J5UnEbhe3LJw8CNmQ== - dependencies: - "@jest/types" "^29.2.1" - -"@jest/schemas@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" - integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" - integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@octokit/auth-token@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.2.tgz#a0fc8de149fd15876e1ac78f6525c1c5ab48435f" - integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== - dependencies: - "@octokit/types" "^8.0.0" - -"@octokit/core@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.1.0.tgz#b6b03a478f1716de92b3f4ec4fd64d05ba5a9251" - integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== - dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^8.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^7.0.0": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.3.tgz#0b96035673a9e3bedf8bab8f7335de424a2147ed" - integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== - dependencies: - "@octokit/types" "^8.0.0" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.4.tgz#519dd5c05123868276f3ae4e50ad565ed7dff8c8" - integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== - dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^8.0.0" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^13.11.0": - version "13.13.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-13.13.1.tgz#a783bacb1817c9f61a2a0c3f81ea22ad62340fdf" - integrity sha512-4EuKSk3N95UBWFau3Bz9b3pheQ8jQYbKmBL5+GSuY8YDPDwu03J4BjI+66yNi8aaX/3h1qDpb0mbBkLdr+cfGQ== - -"@octokit/openapi-types@^14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" - integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== - -"@octokit/plugin-paginate-rest@^4.0.0": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-4.3.1.tgz#553e653ee0318605acd23bf3a799c8bfafdedae3" - integrity sha512-h8KKxESmSFTcXX409CAxlaOYscEDvN2KGQRsLCGT1NSqRW+D6EXLVQ8vuHhFznS9MuH9QYw1GfsUN30bg8hjVA== - dependencies: - "@octokit/types" "^7.5.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-rest-endpoint-methods@^6.0.0": - version "6.7.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz#2f6f17f25b6babbc8b41d2bb0a95a8839672ce7c" - integrity sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw== - dependencies: - "@octokit/types" "^8.0.0" - deprecation "^2.3.1" - -"@octokit/request-error@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.2.tgz#f74c0f163d19463b87528efe877216c41d6deb0a" - integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== - dependencies: - "@octokit/types" "^8.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^6.0.0": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.2.tgz#a2ba5ac22bddd5dcb3f539b618faa05115c5a255" - integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== - dependencies: - "@octokit/endpoint" "^7.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^8.0.0" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/rest@19.0.4": - version "19.0.4" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.4.tgz#fd8bed1cefffa486e9ae46a9dc608ce81bcfcbdd" - integrity sha512-LwG668+6lE8zlSYOfwPj4FxWdv/qFXYBpv79TWIQEpBLKA9D/IMcWsF/U9RGpA3YqMVDiTxpgVpEW3zTFfPFTA== - dependencies: - "@octokit/core" "^4.0.0" - "@octokit/plugin-paginate-rest" "^4.0.0" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^6.0.0" - -"@octokit/types@^7.5.0": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-7.5.1.tgz#4e8b182933c17e1f41cc25d44757dbdb7bd76c1b" - integrity sha512-Zk4OUMLCSpXNI8KZZn47lVLJSsgMyCimsWWQI5hyjZg7hdYm0kjotaIkbG0Pp8SfU2CofMBzonboTqvzn3FrJA== - dependencies: - "@octokit/openapi-types" "^13.11.0" - -"@octokit/types@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.0.0.tgz#93f0b865786c4153f0f6924da067fe0bb7426a9f" - integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== - dependencies: - "@octokit/openapi-types" "^14.0.0" - -"@pnpm/network.ca-file@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz#16f88d057c68cd5419c1ef3dfa281296ea80b047" - integrity sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^1.0.4": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz#3475541fb71d7b6ce68acaaa3392eae9fedf3276" - integrity sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A== - dependencies: - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@react-native-community/cli-clean@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz#198c5dd39c432efb5374582073065ff75d67d018" - integrity sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - prompts "^2.4.0" - -"@react-native-community/cli-config@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-9.2.1.tgz#54eb026d53621ccf3a9df8b189ac24f6e56b8750" - integrity sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - cosmiconfig "^5.1.0" - deepmerge "^3.2.0" - glob "^7.1.3" - joi "^17.2.1" - -"@react-native-community/cli-debugger-ui@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz#ea5c5dad6008bccd840d858e160d42bb2ced8793" - integrity sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-doctor@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-9.2.1.tgz#04859a93f0ea87d78cc7050362b6ce2b1c54fd36" - integrity sha512-RpUax0pkKumXJ5hcRG0Qd+oYWsA2RFeMWKY+Npg8q05Cwd1rqDQfWGprkHC576vz26+FPuvwEagoAf6fR2bvJA== - dependencies: - "@react-native-community/cli-config" "^9.2.1" - "@react-native-community/cli-platform-ios" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - command-exists "^1.2.8" - envinfo "^7.7.2" - execa "^1.0.0" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - node-stream-zip "^1.9.1" - ora "^5.4.1" - prompts "^2.4.0" - semver "^6.3.0" - strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" - wcwidth "^1.0.1" - -"@react-native-community/cli-hermes@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-9.2.1.tgz#c4aeadc4aa2b55cd0dd931a1a1c1909fd426f31a" - integrity sha512-723/NMb7egXzJrbWT1uEkN2hOpw+OOtWTG2zKJ3j7KKgUd8u/pP+/z5jO8xVrq+eYJEMjDK0FBEo1Xj7maR4Sw== - dependencies: - "@react-native-community/cli-platform-android" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - -"@react-native-community/cli-platform-android@9.2.1", "@react-native-community/cli-platform-android@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz#cd73cb6bbaeb478cafbed10bd12dfc01b484d488" - integrity sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - fs-extra "^8.1.0" - glob "^7.1.3" - logkitty "^0.7.1" - slash "^3.0.0" - -"@react-native-community/cli-platform-ios@9.2.1", "@react-native-community/cli-platform-ios@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz#d90740472216ffae5527dfc5f49063ede18a621f" - integrity sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - glob "^7.1.3" - ora "^5.4.1" - -"@react-native-community/cli-plugin-metro@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz#0ec207e78338e0cc0a3cbe1b43059c24afc66158" - integrity sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ== - dependencies: - "@react-native-community/cli-server-api" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - metro "0.72.3" - metro-config "0.72.3" - metro-core "0.72.3" - metro-react-native-babel-transformer "0.72.3" - metro-resolver "0.72.3" - metro-runtime "0.72.3" - readline "^1.3.0" - -"@react-native-community/cli-server-api@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz#41ac5916b21d324bccef447f75600c03b2f54fbe" - integrity sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw== - dependencies: - "@react-native-community/cli-debugger-ui" "^9.0.0" - "@react-native-community/cli-tools" "^9.2.1" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.0" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^7.5.1" - -"@react-native-community/cli-tools@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz#c332324b1ea99f9efdc3643649bce968aa98191c" - integrity sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^6.3.0" - shell-quote "^1.7.3" - -"@react-native-community/cli-types@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-10.0.0.tgz#046470c75ec18f8b3bd906e54e43a6f678e01a45" - integrity sha512-31oUM6/rFBZQfSmDQsT1DX/5fjqfxg7sf2u8kTPJK7rXVya5SRpAMaCXsPAG0omsmJxXt+J9HxUi3Ic+5Ux5Iw== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli-types@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-9.1.0.tgz#dcd6a0022f62790fe1f67417f4690db938746aab" - integrity sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli@9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-9.2.1.tgz#15cc32531fc323d4232d57b1f2d7c571816305ac" - integrity sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ== - dependencies: - "@react-native-community/cli-clean" "^9.2.1" - "@react-native-community/cli-config" "^9.2.1" - "@react-native-community/cli-debugger-ui" "^9.0.0" - "@react-native-community/cli-doctor" "^9.2.1" - "@react-native-community/cli-hermes" "^9.2.1" - "@react-native-community/cli-plugin-metro" "^9.2.1" - "@react-native-community/cli-server-api" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - "@react-native-community/cli-types" "^9.1.0" - chalk "^4.1.2" - commander "^9.4.0" - execa "^1.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.0" - semver "^6.3.0" - -"@react-native-community/eslint-config@^3.0.2": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@react-native-community/eslint-config/-/eslint-config-3.1.0.tgz#80f9471bae00d0676b98436bbb3a596eca2d69ab" - integrity sha512-LCN0QkMNIHoXp2B/uedxQI2GMLbupkIDKSb/6Q7e+pHp4fHrGIkmixSDR5sbjzeqNIf7a1+VcRxRp9u6qv10Ng== - dependencies: - "@babel/core" "^7.14.0" - "@babel/eslint-parser" "^7.18.2" - "@react-native-community/eslint-plugin" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^5.30.5" - "@typescript-eslint/parser" "^5.30.5" - eslint-config-prettier "^8.5.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-ft-flow "^2.0.1" - eslint-plugin-jest "^26.5.3" - eslint-plugin-prettier "^4.2.1" - eslint-plugin-react "^7.30.1" - eslint-plugin-react-hooks "^4.6.0" - eslint-plugin-react-native "^4.0.0" - -"@react-native-community/eslint-plugin@^1.1.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@react-native-community/eslint-plugin/-/eslint-plugin-1.2.0.tgz#7d6d789ae8edf73dc9bed1246cd48277edea8066" - integrity sha512-o6aam+0Ug1xGK3ABYmBm0B1YuEKfM/5kaoZO0eHbZwSpw9UzDX4G5y4Nx/K20FHqUmJHkZmLvOUFYwN4N+HqKA== - -"@react-native/assets@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" - integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== - -"@react-native/normalize-color@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" - integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== - -"@react-native/polyfills@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa" - integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - -"@sindresorhus/is@^5.2.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" - integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== - -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/http-cache-semantics@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/node@*": - version "18.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.7.tgz#8ccef136f240770c1379d50100796a6952f01f94" - integrity sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/react-native@0.68.0": - version "0.68.0" - resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.68.0.tgz#d51c34057251302d2f2ba97de8ff8a840e0fddd8" - integrity sha512-E+m91xtoX+GRh2MpbIYOanbtXlX76woVgRs6zU7PsJ4ZPFzdsRkpKNTqMZyKgyt7eraZDnJvwFXGXDIW+8NRjA== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@17.0.21": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.21.tgz#069c43177cd419afaab5ce26bb4e9056549f7ea6" - integrity sha512-GzzXCpOthOjXvrAUFQwU/svyxu658cwu00Q9ugujS4qc1zXgLFaO0kS2SLOaMWLt2Jik781yuHCWB7UcYdGAeQ== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@~17.0.21": - version "17.0.52" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.52.tgz#10d8b907b5c563ac014a541f289ae8eaa9bf2e9b" - integrity sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.8": - version "17.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" - integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^5.30.5": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz#f8eeb1c6bb2549f795f3ba71aec3b38d1ab6b1e1" - integrity sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA== - dependencies: - "@typescript-eslint/scope-manager" "5.41.0" - "@typescript-eslint/type-utils" "5.41.0" - "@typescript-eslint/utils" "5.41.0" - debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.30.5": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.41.0.tgz#0414a6405007e463dc527b459af1f19430382d67" - integrity sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA== - dependencies: - "@typescript-eslint/scope-manager" "5.41.0" - "@typescript-eslint/types" "5.41.0" - "@typescript-eslint/typescript-estree" "5.41.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.41.0": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz#28e3a41d626288d0628be14cf9de8d49fc30fadf" - integrity sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ== - dependencies: - "@typescript-eslint/types" "5.41.0" - "@typescript-eslint/visitor-keys" "5.41.0" - -"@typescript-eslint/type-utils@5.41.0": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz#2371601171e9f26a4e6da918a7913f7266890cdf" - integrity sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA== - dependencies: - "@typescript-eslint/typescript-estree" "5.41.0" - "@typescript-eslint/utils" "5.41.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.41.0": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.41.0.tgz#6800abebc4e6abaf24cdf220fb4ce28f4ab09a85" - integrity sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA== - -"@typescript-eslint/typescript-estree@5.41.0": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz#bf5c6b3138adbdc73ba4871d060ae12c59366c61" - integrity sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg== - dependencies: - "@typescript-eslint/types" "5.41.0" - "@typescript-eslint/visitor-keys" "5.41.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.41.0", "@typescript-eslint/utils@^5.10.0": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.41.0.tgz#f41ae5883994a249d00b2ce69f4188f3a23fa0f9" - integrity sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.41.0" - "@typescript-eslint/types" "5.41.0" - "@typescript-eslint/typescript-estree" "5.41.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.41.0": - version "5.41.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz#d3510712bc07d5540160ed3c0f8f213b73e3bcd9" - integrity sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw== - dependencies: - "@typescript-eslint/types" "5.41.0" - eslint-visitor-keys "^3.3.0" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -absolute-path@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" - integrity sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA== - -accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.7.0, acorn@^8.8.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== - -agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -anser@^1.4.9: - version "1.4.10" - resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" - integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== - -ansi-align@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-escapes@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" - integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== - dependencies: - type-fest "^1.0.2" - -ansi-fragments@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" - integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== - dependencies: - colorette "^1.0.7" - slice-ansi "^2.0.0" - strip-ansi "^5.0.0" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -appdirsjs@^1.2.4: - version "1.2.7" - resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" - integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.map@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.4.tgz#0d97b640cfdd036c1b41cfe706a5e699aa0711f2" - integrity sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" - integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== - dependencies: - tslib "^2.0.1" - -ast-types@^0.13.2: - version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" - integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== - dependencies: - tslib "^2.0.1" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-retry@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: - version "7.0.0-beta.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== - -babel-preset-fbjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" - integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-member-expression-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-property-literals" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.1.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -boxen@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.0.0.tgz#9e5f8c26e716793fc96edcf7cf754cdf5e3fbf32" - integrity sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg== - dependencies: - ansi-align "^3.0.1" - camelcase "^7.0.0" - chalk "^5.0.1" - cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.0.1" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.20.4, browserslist@^4.21.3, browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" - integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== - -cacheable-request@^10.2.1: - version "10.2.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.2.tgz#07c3d5afcaa2de2e9f66959bacb3ff78da3735fd" - integrity sha512-KxjQZM3UIo7/J6W4sLpwFvu1GB3Whv8NtZ8ZrUL284eiQjiXeeqWTdhixNrp/NLZ/JNuFBo6BD4ZaO8ZJ5BN8Q== - dependencies: - "@types/http-cache-semantics" "^4.0.1" - get-stream "^6.0.1" - http-cache-semantics "^4.1.0" - keyv "^4.5.0" - mimic-response "^4.0.0" - normalize-url "^7.2.0" - responselike "^3.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.0.tgz#fd112621b212126741f998d614cbc2a8623fd174" - integrity sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ== - -caniuse-lite@^1.0.30001400: - version "1.0.30001426" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz#58da20446ccd0cb1dfebd11d2350c907ee7c2eaa" - integrity sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A== - -chalk@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" - integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.0, chalk@^5.0.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.1.2.tgz#d957f370038b75ac572471e83be4c5ca9f8e8c45" - integrity sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f" - integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-spinners@^2.5.0, cli-spinners@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cli-width@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.0.0.tgz#a5622f6a3b0a9e3e711a25f099bf2399f608caf6" - integrity sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.0.7: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.1: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" - integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== - dependencies: - dot-prop "^6.0.1" - graceful-fs "^4.2.6" - unique-string "^3.0.0" - write-file-atomic "^3.0.3" - xdg-basedir "^5.0.1" - -connect@^3.6.5: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -core-js-compat@^3.25.1: - version "3.26.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.0.tgz#94e2cf8ba3e63800c4956ea298a6473bc9d62b44" - integrity sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A== - dependencies: - browserslist "^4.21.4" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@7.0.1, cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" - integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== - dependencies: - type-fest "^1.0.1" - -csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== - -data-uri-to-buffer@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" - integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== - -data-uri-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" - integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== - -dayjs@^1.8.15: - version "1.11.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.6.tgz#2e79a226314ec3ec904e3ee1dd5a4f5e5b1c7afb" - integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" - integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -degenerator@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" - integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== - dependencies: - ast-types "^0.13.2" - escodegen "^1.8.1" - esprima "^4.0.0" - vm2 "^3.9.8" - -del@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -envinfo@^7.7.2: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -errorhandler@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" - integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== - dependencies: - accepts "~1.3.7" - escape-html "~1.0.3" - -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" - integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.0.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" - integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.0" - has-symbols "^1.0.1" - is-arguments "^1.1.0" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.5" - isarray "^2.0.5" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-goat@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" - integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - -escodegen@^1.8.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-ft-flow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.1.tgz#57d9a12ef02b7af8f9bd6ccd6bd8fa4034809716" - integrity sha512-dGBnCo+ok6H9p6Vw2oPFEM4vA9IEclRXQQAA/Zws51/L5zr3FDl9FxQiWGfaw0WaTIX5biiAxp/q1W5bGXjlVA== - dependencies: - lodash "^4.17.21" - string-natural-compare "^3.0.1" - -eslint-plugin-jest@^26.5.3: - version "26.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz#7931c31000b1c19e57dbfb71bbf71b817d1bf949" - integrity sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^4.0.0, eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react-native-globals@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2" - integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g== - -eslint-plugin-react-native@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-4.0.0.tgz#eec41984abe4970bdd7c6082dff7a98a5e34d0bb" - integrity sha512-kMmdxrSY7A1WgdqaGC+rY/28rh7kBGNBRsk48ovqkQmdg5j4K+DaFmegENDzMrdLkoufKGRNkKX6bgSwQTCAxQ== - dependencies: - "@babel/traverse" "^7.7.4" - eslint-plugin-react-native-globals "^0.1.1" - -eslint-plugin-react@^7.30.1: - version "7.31.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" - integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.4.1: - version "8.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.26.0.tgz#2bcc8836e6c424c4ac26a5674a70d44d84f2181d" - integrity sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg== - dependencies: - "@eslint/eslintrc" "^1.3.3" - "@humanwhocodes/config-array" "^0.11.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.15.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-target-shim@^5.0.0, event-target-shim@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -execa@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" - integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^3.0.1" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - -figures@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-5.0.0.tgz#126cd055052dea699f8a54e8c9450e6ecfc44d5f" - integrity sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg== - dependencies: - escape-string-regexp "^5.0.0" - is-unicode-supported "^1.2.0" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" - integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -flow-parser@0.*: - version "0.191.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.191.0.tgz#0fe7eb4be505f443c067c47f795153bf3b87c7d7" - integrity sha512-/5Gv9zY+Mg58ubzzwNz4I29uYHDpBFR5F5ohyVsb+SxW2R8S4s1qCBRtgiTAsujsC6qmQlrsOn2DBlK4m7SQTQ== - -flow-parser@^0.121.0: - version "0.121.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" - integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -form-data-encoder@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.3.tgz#682cd821a8423605093992ff895e6b2ed5a9d429" - integrity sha512-KqU0nnPMgIJcCOFTNJFEA8epcseEaoox4XZffTgy8jlI6pL/5EFyR54NRG7CnCJN0biY7q52DO3MH6/sJ/TKlQ== - -form-data@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.1.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -ftp@^0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-uri@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" - integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== - dependencies: - "@tootallnate/once" "1" - data-uri-to-buffer "3" - debug "4" - file-uri-to-path "2" - fs-extra "^8.1.0" - ftp "^0.3.10" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -git-up@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" - integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== - dependencies: - is-ssh "^1.4.0" - parse-url "^8.1.0" - -git-url-parse@13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" - integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== - dependencies: - git-up "^7.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.0.0, glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== - dependencies: - ini "2.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -globby@13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" - integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" - -globby@^11.0.1, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -got@12.5.1: - version "12.5.1" - resolved "https://registry.yarnpkg.com/got/-/got-12.5.1.tgz#0796191c61478273f4cdbeb19d358a75a54a008d" - integrity sha512-sD16AK8cCyUoPtKr/NMvLTFFa+T3i3S+zoiuvhq0HP2YiqBZA9AtlBjAdsQBsLBK7slPuvmfE0OxhGi7N5dD4w== - dependencies: - "@sindresorhus/is" "^5.2.0" - "@szmarczak/http-timer" "^5.0.1" - cacheable-lookup "^7.0.0" - cacheable-request "^10.2.1" - decompress-response "^6.0.0" - form-data-encoder "^2.1.2" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^3.0.0" - -got@^12.1.0: - version "12.5.2" - resolved "https://registry.yarnpkg.com/got/-/got-12.5.2.tgz#2c1b390918961cf50e61cb02d2085ba203d0df45" - integrity sha512-guHGMSEcsA5m1oPRweXUJnug0vuvlkX9wx5hzOka+ZBrBUOJHU0Z1JcNu3QE5IPGnA5aXUsQHdWOD4eJg9/v3A== - dependencies: - "@sindresorhus/is" "^5.2.0" - "@szmarczak/http-timer" "^5.0.1" - cacheable-lookup "^7.0.0" - cacheable-request "^10.2.1" - decompress-response "^6.0.0" - form-data-encoder "^2.1.2" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^3.0.0" - -graceful-fs@4.2.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" - integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hermes-estree@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.8.0.tgz#530be27243ca49f008381c1f3e8b18fb26bf9ec0" - integrity sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q== - -hermes-parser@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.8.0.tgz#116dceaba32e45b16d6aefb5c4c830eaeba2d257" - integrity sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA== - dependencies: - hermes-estree "0.8.0" - -hermes-profile-transformer@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" - integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== - dependencies: - source-map "^0.7.3" - -http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http2-wrapper@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef" - integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - -https-proxy-agent@5, https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" - integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.0.5, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -image-size@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" - integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.4, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inquirer@9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.1.2.tgz#37f5486f3de0e38820aad83a1f75c52c747e2f9a" - integrity sha512-Hj2Ml1WpxKJU2npP2Rj0OURGkHV+GtNW2CwFdHDiXlqUBAUrWTcZHxCkFywX/XHzOS7wrG/kExgJFbUkVgyHzg== - dependencies: - ansi-escapes "^5.0.0" - chalk "^5.0.1" - cli-cursor "^4.0.0" - cli-width "^4.0.0" - external-editor "^3.0.3" - figures "^5.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^6.1.2" - run-async "^2.4.0" - rxjs "^7.5.6" - string-width "^5.1.2" - strip-ansi "^7.0.1" - through "^2.3.6" - wrap-ansi "^8.0.1" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@3.0.1, is-ci@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-git-dirty@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-git-dirty/-/is-git-dirty-2.0.1.tgz#29ca82fb0924ccbeaa0bae08de217546df593012" - integrity sha512-zn3CNLDbSR+y7+VDDw7/SwTRRuECn4OpAyelo5MDN+gVxdzM8SUDd51ZwPIOxhljED44Riu0jiiNtC8w0bcLdA== - dependencies: - execa "^4.0.3" - is-git-repository "^2.0.0" - -is-git-repository@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-git-repository/-/is-git-repository-2.0.0.tgz#fa036007fe9697198c2c89dac4dd8304a6101e1c" - integrity sha512-HDO50CG5suIAcmqG4F1buqVXEZRPn+RaXIn9pFKq/947FBo2bCRwK7ZluEVZOy99a4IQyqsjbKEpAiOXCccOHQ== - dependencies: - execa "^4.0.3" - is-absolute "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-npm@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" - integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2, is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-ssh@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" - integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== - dependencies: - protocols "^2.0.1" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-unicode-supported@^1.1.0, is-unicode-supported@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" - integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.0.tgz#714d94453327db9ea98fbf1a0c5f2b88f59ddd5c" - integrity sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -iterate-iterator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" - integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== - -iterate-value@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" - integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== - dependencies: - es-get-iterator "^1.0.2" - iterate-iterator "^1.0.1" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-regex-util@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-serializer@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-util@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^26.5.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-worker@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jetifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-2.0.0.tgz#699391367ca1fe7bc4da5f8bf691eb117758e4cb" - integrity sha512-J4Au9KuT74te+PCCCHKgAjyLlEa+2VyIAEPNCdE5aNkAJ6FAJcAqcdzEkSnzNksIa9NkGmC4tPiClk2e7tCJuQ== - -joi@^17.2.1: - version "17.6.4" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.4.tgz#4d9536a059ef0762c718ae98673016b3ec151abd" - integrity sha512-tPzkTJHZQjSFCc842QpdVpOZ9LI2txApboNUbW70qgnRB14Lzl+oWQOPdF2N4yqyiY14wBGe8lc7f/2hZxbGmw== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" - "@sideway/pinpoint" "^2.0.0" - -js-sdsl@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" - integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsc-android@^250230.2.1: - version "250230.2.1" - resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83" - integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q== - -jscodeshift@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" - integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^3.1.10" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.20.4" - temp "^0.8.4" - write-file-atomic "^2.3.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -keyv@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" - integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kleur@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -latest-version@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" - integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== - dependencies: - package-json "^8.1.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - -lodash@4.17.21, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-symbols@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" - integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== - dependencies: - chalk "^5.0.0" - is-unicode-supported "^1.1.0" - -logkitty@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" - integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== - dependencies: - ansi-fragments "^0.2.1" - dayjs "^1.8.15" - yargs "^15.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -macos-release@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-3.1.0.tgz#6165bb0736ae567ed6649e36ce6a24d87cbb7aca" - integrity sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA== - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -metro-babel-transformer@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz#2c60493a4eb7a8d20cc059f05e0e505dc1684d01" - integrity sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw== - dependencies: - "@babel/core" "^7.14.0" - hermes-parser "0.8.0" - metro-source-map "0.72.3" - nullthrows "^1.1.1" - -metro-cache-key@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.72.3.tgz#dcc3055b6cb7e35b84b4fe736a148affb4ecc718" - integrity sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg== - -metro-cache@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.72.3.tgz#fd079f90b12a81dd5f1567c607c13b14ae282690" - integrity sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A== - dependencies: - metro-core "0.72.3" - rimraf "^2.5.4" - -metro-config@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.72.3.tgz#c2f1a89537c79cec516b1229aa0550dfa769e2ee" - integrity sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw== - dependencies: - cosmiconfig "^5.0.5" - jest-validate "^26.5.2" - metro "0.72.3" - metro-cache "0.72.3" - metro-core "0.72.3" - metro-runtime "0.72.3" - -metro-core@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.72.3.tgz#e3a276d54ecc8fe667127347a1bfd3f8c0009ccb" - integrity sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.72.3" - -metro-file-map@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.72.3.tgz#94f6d4969480aa7f47cfe2c5f365ad4e85051f12" - integrity sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA== - dependencies: - abort-controller "^3.0.0" - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -metro-hermes-compiler@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz#e9ab4d25419eedcc72c73842c8da681a4a7e691e" - integrity sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg== - -metro-inspector-proxy@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz#8d7ff4240fc414af5b72d86dac2485647fc3cf09" - integrity sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - ws "^7.5.1" - yargs "^15.3.1" - -metro-minify-uglify@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz#a9d4cd27933b29cfe95d8406b40d185567a93d39" - integrity sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA== - dependencies: - uglify-es "^3.1.9" - -metro-react-native-babel-preset@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz#e549199fa310fef34364fdf19bd210afd0c89432" - integrity sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw== - dependencies: - "@babel/core" "^7.14.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz#f8eda8c07c0082cbdbef47a3293edc41587c6b5a" - integrity sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA== - dependencies: - "@babel/core" "^7.14.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.8.0" - metro-babel-transformer "0.72.3" - metro-react-native-babel-preset "0.72.3" - metro-source-map "0.72.3" - nullthrows "^1.1.1" - -metro-resolver@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.72.3.tgz#c64ce160454ac850a15431509f54a587cb006540" - integrity sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w== - dependencies: - absolute-path "^0.0.0" - -metro-runtime@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.72.3.tgz#1485ed7b5f06d09ebb40c83efcf8accc8d30b8b9" - integrity sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA== - dependencies: - "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" - -metro-source-map@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.72.3.tgz#5efcf354413804a62ff97864e797f60ef3cc689e" - integrity sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ== - dependencies: - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - invariant "^2.2.4" - metro-symbolicate "0.72.3" - nullthrows "^1.1.1" - ob1 "0.72.3" - source-map "^0.5.6" - vlq "^1.0.0" - -metro-symbolicate@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz#093d4f8c7957bcad9ca2ab2047caa90b1ee1b0c1" - integrity sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw== - dependencies: - invariant "^2.2.4" - metro-source-map "0.72.3" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-transform-plugins@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz#b00e5a9f24bff7434ea7a8e9108eebc8386b9ee4" - integrity sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg== - dependencies: - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.14.0" - nullthrows "^1.1.1" - -metro-transform-worker@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz#bdc6cc708ea114bc085e11d675b8ff626d7e6db7" - integrity sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ== - dependencies: - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/types" "^7.0.0" - babel-preset-fbjs "^3.4.0" - metro "0.72.3" - metro-babel-transformer "0.72.3" - metro-cache "0.72.3" - metro-cache-key "0.72.3" - metro-hermes-compiler "0.72.3" - metro-source-map "0.72.3" - metro-transform-plugins "0.72.3" - nullthrows "^1.1.1" - -metro@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.72.3.tgz#eb587037d62f48a0c33c8d88f26666b4083bb61e" - integrity sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - absolute-path "^0.0.0" - accepts "^1.3.7" - async "^3.2.2" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - fs-extra "^1.0.0" - graceful-fs "^4.2.4" - hermes-parser "0.8.0" - image-size "^0.6.0" - invariant "^2.2.4" - jest-worker "^27.2.0" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.72.3" - metro-cache "0.72.3" - metro-cache-key "0.72.3" - metro-config "0.72.3" - metro-core "0.72.3" - metro-file-map "0.72.3" - metro-hermes-compiler "0.72.3" - metro-inspector-proxy "0.72.3" - metro-minify-uglify "0.72.3" - metro-react-native-babel-preset "0.72.3" - metro-resolver "0.72.3" - metro-runtime "0.72.3" - metro-source-map "0.72.3" - metro-symbolicate "0.72.3" - metro-transform-plugins "0.72.3" - metro-transform-worker "0.72.3" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^2.5.4" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - temp "0.8.3" - throat "^5.0.0" - ws "^7.5.1" - yargs "^15.3.1" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@2.1.35, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -mimic-response@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" - integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== - -minimatch@^3.0.2, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -netmask@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" - integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== - -new-github-release-url@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/new-github-release-url/-/new-github-release-url-2.0.0.tgz#335189b91f52bbb9569042a7485900a205a0500b" - integrity sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ== - dependencies: - type-fest "^2.5.1" - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -nocache@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" - integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@3.2.10: - version "3.2.10" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8" - integrity sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - -node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -node-stream-zip@^1.9.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-7.2.0.tgz#5317f78cff95f5fa1e76cc0b5e33245c43781e11" - integrity sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - dependencies: - path-key "^4.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -ob1@0.72.3: - version "0.72.3" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.72.3.tgz#fc1efcfe156f12ed23615f2465a796faad8b91e4" - integrity sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -open@^6.2.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@6.1.2, ora@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/ora/-/ora-6.1.2.tgz#7b3c1356b42fd90fb1dad043d5dbe649388a0bf5" - integrity sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw== - dependencies: - bl "^5.0.0" - chalk "^5.0.0" - cli-cursor "^4.0.0" - cli-spinners "^2.6.1" - is-interactive "^2.0.0" - is-unicode-supported "^1.1.0" - log-symbols "^5.1.0" - strip-ansi "^7.0.1" - wcwidth "^1.0.1" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-name@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-5.0.1.tgz#acb4f996ec5bd86c41755fef9d6d31905c47172e" - integrity sha512-0EQpaHUHq7olp2/YFUr+0vZi9tMpDTblHGz+Ch5RntKxiRXOAY0JOz1UlxhSjMSksHvkm13eD6elJj3M8Ht/kw== - dependencies: - macos-release "^3.0.1" - windows-release "^5.0.1" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pac-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" - integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - get-uri "3" - http-proxy-agent "^4.0.1" - https-proxy-agent "5" - pac-resolver "^5.0.0" - raw-body "^2.2.0" - socks-proxy-agent "5" - -pac-resolver@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" - integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== - dependencies: - degenerator "^3.0.2" - ip "^1.1.5" - netmask "^2.0.2" - -package-json@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.0.tgz#2a22806f1ed7c786c8e6ff26cfe20003bf4c6850" - integrity sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg== - dependencies: - got "^12.1.0" - registry-auth-token "^5.0.1" - registry-url "^6.0.0" - semver "^7.3.7" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-path@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" - integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== - dependencies: - protocols "^2.0.0" - -parse-url@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" - integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== - dependencies: - parse-path "^7.0.0" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pod-install@^0.1.0: - version "0.1.38" - resolved "https://registry.yarnpkg.com/pod-install/-/pod-install-0.1.38.tgz#1c16a800a5fc1abea0cafcc0e190f376368c76ab" - integrity sha512-NeDWGigjJRriOIKBOvpW2/tK2tYLfyUT7ia6C6L+oarCAhBNP+IGODWdU+GEAqvfsseqOApcFclpXAJTL0UPzA== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.0.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty-format@^26.5.2, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -promise.allsettled@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53" - integrity sha512-tVDqeZPoBC0SlzJHzWGZ2NKAguVq2oiYj7gbggbiTvH2itHohijTp7njOUA0aQ/nl+0lr/r6egmhoYu63UZ/pQ== - dependencies: - array.prototype.map "^1.0.4" - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - iterate-value "^1.0.2" - -promise@^8.0.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" - integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== - dependencies: - asap "~2.0.6" - -prompts@^2.4.0, prompts@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -protocols@^2.0.0, protocols@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" - integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== - -proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" - integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== - dependencies: - agent-base "^6.0.0" - debug "4" - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^5.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^5.0.0" - -proxy-from-env@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" - integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== - dependencies: - escape-goat "^4.0.0" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-devtools-core@4.24.0: - version "4.24.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.0.tgz#7daa196bdc64f3626b3f54f2ff2b96f7c4fdf017" - integrity sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0": - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-native-builder-bob@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/react-native-builder-bob/-/react-native-builder-bob-0.20.0.tgz#f6ea6ba6baae59ebe30d5ed5d384b7e728fd68c5" - integrity sha512-PvH1ekERU6x+OOOrcLggG3AMpV1I+gM5lOb4dGuxLKh7iQCWQT+BvYBoX9X1tDKj0DKsqPRn1dl4/hMIpk7r8w== - dependencies: - "@babel/core" "^7.18.5" - "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/preset-env" "^7.18.2" - "@babel/preset-flow" "^7.17.12" - "@babel/preset-react" "^7.17.12" - "@babel/preset-typescript" "^7.17.12" - browserslist "^4.20.4" - cosmiconfig "^7.0.1" - cross-spawn "^7.0.3" - dedent "^0.7.0" - del "^6.1.1" - fs-extra "^10.1.0" - glob "^8.0.3" - is-git-dirty "^2.0.1" - json5 "^2.2.1" - kleur "^4.1.4" - prompts "^2.4.2" - which "^2.0.2" - yargs "^17.5.1" - optionalDependencies: - jetifier "^2.0.0" - -react-native-codegen@^0.70.6: - version "0.70.6" - resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.70.6.tgz#2ce17d1faad02ad4562345f8ee7cbe6397eda5cb" - integrity sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw== - dependencies: - "@babel/parser" "^7.14.0" - flow-parser "^0.121.0" - jscodeshift "^0.13.1" - nullthrows "^1.1.1" - -react-native-gradle-plugin@^0.70.3: - version "0.70.3" - resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz#cbcf0619cbfbddaa9128701aa2d7b4145f9c4fc8" - integrity sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A== - -react-native@0.70.4: - version "0.70.4" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.70.4.tgz#f2a3a7996431a47a45ce1f5097352c5721417516" - integrity sha512-1e4jWotS20AJ/4lGVkZQs2wE0PvCpIRmPQEQ1FyH7wdyuewFFIxbUHqy6vAj1JWVFfAzbDakOQofrIkkHWLqNA== - dependencies: - "@jest/create-cache-key-function" "^29.0.3" - "@react-native-community/cli" "9.2.1" - "@react-native-community/cli-platform-android" "9.2.1" - "@react-native-community/cli-platform-ios" "9.2.1" - "@react-native/assets" "1.0.0" - "@react-native/normalize-color" "2.0.0" - "@react-native/polyfills" "2.0.0" - abort-controller "^3.0.0" - anser "^1.4.9" - base64-js "^1.1.2" - event-target-shim "^5.0.1" - invariant "^2.2.4" - jsc-android "^250230.2.1" - memoize-one "^5.0.0" - metro-react-native-babel-transformer "0.72.3" - metro-runtime "0.72.3" - metro-source-map "0.72.3" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.0.3" - react-devtools-core "4.24.0" - react-native-codegen "^0.70.6" - react-native-gradle-plugin "^0.70.3" - react-refresh "^0.4.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "^0.22.0" - stacktrace-parser "^0.1.3" - use-sync-external-store "^1.0.0" - whatwg-fetch "^3.0.0" - ws "^6.1.4" - -react-refresh@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" - integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== - -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - -react@18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" - integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== - dependencies: - loose-envify "^1.1.0" - -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" - integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== - -recast@^0.20.4: - version "0.20.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" - integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== - dependencies: - ast-types "0.14.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.2: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.1.tgz#a69c26f324c1e962e9ffd0b88b055caba8089139" - integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsgen "^0.7.1" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -registry-auth-token@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.1.tgz#5e6cd106e6c251135a046650c58476fc03e92833" - integrity sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA== - dependencies: - "@pnpm/npm-conf" "^1.0.4" - -registry-url@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" - integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== - dependencies: - rc "1.2.8" - -regjsgen@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" - integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -release-it@^15.0.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/release-it/-/release-it-15.5.0.tgz#773c247d4fd5a5e5c8801b02bf1e7e9e536bee27" - integrity sha512-/pQo/PwEXAWRBgVGLE+3IQ3hUoeiDZMGAo/Egin1envCyLyjzrU7+0P2w4iZ1Xv5OxhC2AcaPaN5eY1ql47cBA== - dependencies: - "@iarna/toml" "2.2.5" - "@octokit/rest" "19.0.4" - async-retry "1.3.3" - chalk "5.0.1" - cosmiconfig "7.0.1" - execa "6.1.0" - form-data "4.0.0" - git-url-parse "13.1.0" - globby "13.1.2" - got "12.5.1" - inquirer "9.1.2" - is-ci "3.0.1" - lodash "4.17.21" - mime-types "2.1.35" - new-github-release-url "2.0.0" - node-fetch "3.2.10" - open "8.4.0" - ora "6.1.2" - os-name "5.0.1" - promise.allsettled "1.0.5" - proxy-agent "5.0.0" - semver "7.3.7" - shelljs "0.8.5" - update-notifier "6.0.2" - url-join "5.0.0" - wildcard-match "5.1.2" - yargs-parser "21.1.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve@^1.1.6, resolve@^1.14.2: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" - integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== - dependencies: - lowercase-keys "^3.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.5.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg== - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.5.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scheduler@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" - integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== - dependencies: - loose-envify "^1.1.0" - -semver-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" - integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== - dependencies: - semver "^7.3.5" - -semver@7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.5, semver@^7.3.7: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-error@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" - integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== - -serve-static@^1.13.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1, shell-quote@^1.7.3: - version "1.7.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== - -shelljs@0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socks-proxy-agent@5, socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks@^2.3.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.16: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -stacktrace-parser@^0.1.3: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -sudo-prompt@^9.0.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -temp@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - integrity sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw== - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.1, tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -type-fest@^1.0.1, type-fest@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.13.0, type-fest@^2.5.1: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^4.5.2: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - -uglify-es@^3.1.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-string@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" - integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== - dependencies: - crypto-random-string "^4.0.0" - -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -update-browserslist-db@^1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-notifier@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" - integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== - dependencies: - boxen "^7.0.0" - chalk "^5.0.1" - configstore "^6.0.0" - has-yarn "^3.0.0" - import-lazy "^4.0.0" - is-ci "^3.0.1" - is-installed-globally "^0.4.0" - is-npm "^6.0.0" - is-yarn-global "^0.4.0" - latest-version "^7.0.0" - pupa "^3.1.0" - semver "^7.3.7" - semver-diff "^4.0.0" - xdg-basedir "^5.1.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-join@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-5.0.0.tgz#c2f1e5cbd95fa91082a93b58a1f42fecb4bdbcf1" - integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA== - -use-sync-external-store@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vlq@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" - integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== - -vm2@^3.9.8: - version "3.9.11" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.11.tgz#a880f510a606481719ec3f9803b940c5805a06fe" - integrity sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web-streams-polyfill@^3.0.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-fetch@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== - dependencies: - string-width "^5.0.1" - -wildcard-match@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/wildcard-match/-/wildcard-match-5.1.2.tgz#66b438001391674d8599b45da051e0bd9f33cd2a" - integrity sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ== - -windows-release@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-5.0.1.tgz#d1f7cd1f25660ba05cac6359711844dce909a8ed" - integrity sha512-y1xFdFvdMiDXI3xiOhMbJwt1Y7dUxidha0CWPs1NgjZIjZANTcX7+7bMqNjuezhzb8s5JGEiBAbQjQQYYy7ulw== - dependencies: - execa "^5.1.1" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" - integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^6.1.4: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7, ws@^7.5.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" - integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== - -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@21.1.1, yargs-parser@^21.0.0: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.1.0, yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^17.5.1: - version "17.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c" - integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==