├── .eslintignore ├── .eslintrc.js ├── .flowconfig ├── .github ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── ci.yml ├── .gitignore ├── .prettierignore ├── CODEOWNERS ├── LICENSE ├── README.md ├── RNCMaskedView.podspec ├── android ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-web.png │ └── java │ └── org │ └── reactnative │ └── maskedview │ ├── RNCMaskedView.java │ ├── RNCMaskedViewManager.java │ └── RNCMaskedViewPackage.java ├── example ├── .gitignore ├── .watchmanconfig ├── android │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app.json ├── babel.config.js ├── index.js ├── ios │ ├── Podfile │ └── Podfile.lock ├── metro.config.js ├── package.json ├── react-native.config.js ├── src │ ├── colors │ │ └── index.js │ ├── components │ │ ├── ExampleContainer.js │ │ ├── MaskedViewExample.js │ │ ├── MaskedViewImageExample.js │ │ └── MaskedViewTextExample.js │ └── index.js └── yarn.lock ├── img └── example.png ├── index.js ├── ios ├── RNCMaskedView.h ├── RNCMaskedView.m ├── RNCMaskedView.xcodeproj │ └── project.pbxproj ├── RNCMaskedViewManager.h └── RNCMaskedViewManager.m ├── js ├── MaskedView.js ├── MaskedView.web.js └── MaskedViewTypes.js ├── package.json ├── prettier.config.js ├── tsconfig.json ├── types └── index.d.ts └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | types 3 | ios 4 | android 5 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@react-native'], 3 | }; 4 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore polyfills 9 | node_modules/react-native/Libraries/polyfills/.* 10 | 11 | ; These should not be required directly 12 | ; require from fbjs/lib instead: require('fbjs/lib/warning') 13 | node_modules/warning/.* 14 | 15 | ; Flow doesn't support platforms 16 | .*/Libraries/Utilities/LoadingView.js 17 | 18 | [untyped] 19 | .*/node_modules/@react-native-community/cli/.*/.* 20 | 21 | [include] 22 | 23 | [declarations] 24 | .*/node_modules/.* 25 | 26 | [libs] 27 | node_modules/react-native/interface.js 28 | node_modules/react-native/flow/ 29 | 30 | [options] 31 | enums=true 32 | 33 | emoji=true 34 | 35 | exact_by_default=true 36 | 37 | format.bracket_spacing=false 38 | 39 | module.file_ext=.js 40 | module.file_ext=.json 41 | 42 | experimental.multi_platform=true 43 | experimental.multi_platform.extensions=.ios 44 | experimental.multi_platform.extensions=.android 45 | 46 | munge_underscores=true 47 | 48 | module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation' 49 | module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' 50 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' 51 | 52 | suppress_type=$FlowIssue 53 | suppress_type=$FlowFixMe 54 | suppress_type=$FlowFixMeProps 55 | suppress_type=$FlowFixMeState 56 | suppress_type=$FlowFixMeEmpty 57 | 58 | sharedmemory.heap_size=4000000000 59 | 60 | [lints] 61 | sketchy-null-number=warn 62 | sketchy-null-mixed=warn 63 | sketchy-number=warn 64 | untyped-type-import=warn 65 | nonstrict-import=warn 66 | deprecated-type=error 67 | unsafe-getters-setters=warn 68 | unnecessary-invariant=warn 69 | unused-promise=error 70 | 71 | [strict] 72 | deprecated-type 73 | nonstrict-import 74 | sketchy-null 75 | unclear-type 76 | unsafe-getters-setters 77 | untyped-import 78 | untyped-type-import 79 | 80 | [version] 81 | ^0.246.0 82 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | 4 | 5 | 6 | # Test Plan 7 | 8 | 9 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: push 3 | 4 | jobs: 5 | lint: 6 | runs-on: ubuntu-latest 7 | strategy: 8 | matrix: 9 | node-version: [18] 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: ${{ matrix.node-version }} 15 | - name: Get yarn cache 16 | id: yarn-cache 17 | run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT 18 | - uses: actions/cache@v2 19 | with: 20 | path: ${{ steps.yarn-cache.outputs.dir }} 21 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 22 | - name: Install Dependencies 23 | run: yarn 24 | - name: ESLint Checks 25 | run: yarn test:lint 26 | tsc: 27 | runs-on: ubuntu-latest 28 | strategy: 29 | matrix: 30 | node-version: [18] 31 | steps: 32 | - uses: actions/checkout@v2 33 | - uses: actions/setup-node@v1 34 | with: 35 | node-version: ${{ matrix.node-version }} 36 | - name: Get yarn cache 37 | id: yarn-cache 38 | run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT 39 | - uses: actions/cache@v2 40 | with: 41 | path: ${{ steps.yarn-cache.outputs.dir }} 42 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 43 | - name: Install Dependencies 44 | run: yarn 45 | - name: TypeScript type check 46 | run: yarn test:typescript 47 | flow: 48 | runs-on: ubuntu-latest 49 | strategy: 50 | matrix: 51 | node-version: [18] 52 | steps: 53 | - uses: actions/checkout@v2 54 | - uses: actions/setup-node@v1 55 | with: 56 | node-version: ${{ matrix.node-version }} 57 | - name: Get yarn cache 58 | id: yarn-cache 59 | run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT 60 | - uses: actions/cache@v2 61 | with: 62 | path: ${{ steps.yarn-cache.outputs.dir }} 63 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 64 | - name: Install Dependencies 65 | run: yarn 66 | - name: Flow type check 67 | run: yarn test:flow 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | Pods/ 25 | 26 | # Android/IJ 27 | # 28 | .idea 29 | *.iml 30 | .gradle 31 | local.properties 32 | lib/android/src/main/gen 33 | 34 | # node.js 35 | # 36 | node_modules/ 37 | npm-debug.log 38 | yarn-error.log 39 | package-lock.json 40 | 41 | # Rubygem bundles 42 | # 43 | bundles/ 44 | 45 | # VS Code 46 | .vscode/* 47 | !.vscode/settings.json 48 | !.vscode/tasks.json 49 | !.vscode/launch.json 50 | !.vscode/extensions.json 51 | 52 | android/gradle 53 | android/gradlew 54 | android/gradlew.bat 55 | 56 | .yarn 57 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .yarn 2 | example/android 3 | example/ios 4 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | @FonDorn -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2015-present, Facebook, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Native `MaskedView` 2 | 3 | [![Build Status][build-badge]][build] 4 | [![Version][version-badge]][package] 5 | [![MIT License][license-badge]][license] 6 | [![Lean Core Badge][lean-core-badge]][lean-core-issue] 7 | 8 | Provides a React component that renders a masked view. 9 | 10 | ## Platforms Supported 11 | 12 | - [x] iOS 13 | - [x] Android 14 | - [x] Web 15 | 16 | ## Getting Started 17 | 18 | ```sh 19 | yarn add @react-native-masked-view/masked-view 20 | ``` 21 | 22 | or 23 | 24 | ```sh 25 | npm install --save @react-native-masked-view/masked-view 26 | ``` 27 | 28 | ### Using React Native >= 0.60 29 | 30 | Linking the package manually is not required anymore with [Autolinking](https://github.com/react-native-masked-view/cli/blob/master/docs/autolinking.md). 31 | 32 | Remember to install the pod with: 33 | 34 | ```sh 35 | npx pod-install 36 | ``` 37 | 38 | ### Using React Native < 0.60 39 | 40 | You then need to link the native parts of the library for the platforms you are using. The easiest way to link the library is using the CLI tool by running this command from the root of your project: 41 | 42 | ```sh 43 | react-native link @react-native-masked-view/masked-view 44 | ``` 45 | 46 | ## Usage 47 | 48 | Import the `MaskedView` component from `@react-native-masked-view/masked-view` and use it like so: 49 | 50 | ```jsx 51 | import React from 'react'; 52 | import { Text, View } from 'react-native'; 53 | import MaskedView from '@react-native-masked-view/masked-view'; 54 | 55 | const App = () => { 56 | return ( 57 | 69 | 76 | Basic Mask 77 | 78 | 79 | } 80 | > 81 | {/* Shows behind the mask, you can put anything here, such as an image */} 82 | 83 | 84 | 85 | 86 | 87 | ); 88 | } 89 | 90 | export default App 91 | ``` 92 | 93 | The following image demonstrates that you can put almost anything behind the mask. The three examples shown are masked ``, ``, and ``. 94 | 95 |
96 | 97 | ### Web Usage 98 | 99 | you need to install moden-screenshot package for web usage: 100 | ```sh 101 | yarn add modern-screenshot 102 | ``` 103 | 104 | ### Props 105 | 106 | - [View props...](https://github.com/facebook/react-native-website/blob/master/docs/view.md#props) 107 | 108 | - [`maskElement`](#maskelement) 109 | 110 | - [`androidRenderingMode`](#androidrenderingmode) 111 | 112 | ### Reference 113 | 114 | ### `maskElement` 115 | 116 | | Type | Required | 117 | | ------- | -------- | 118 | | element | Yes | 119 | 120 | ### `androidRenderingMode` 121 | 122 | By default `hardware` rendering mode will be used for best performance, however if you need to animate your `maskElement` then you’ll need to switch to `software` to get your mask to update. This prop only affects Android. 123 | 124 | | Type | Required | Default | 125 | | ---------------------- | -------- | ---------- | 126 | | `software`, `hardware` | No | `hardware` | 127 | 128 | 129 | 130 | [build-badge]: https://github.com/react-native-masked-view/masked-view/workflows/Build/badge.svg 131 | [build]: https://github.com/react-native-masked-view/masked-view/actions 132 | [version-badge]: https://img.shields.io/npm/v/@react-native-masked-view/masked-view.svg?style=flat-square 133 | [package]: https://www.npmjs.com/package/@react-native-masked-view/masked-view 134 | [license-badge]: https://img.shields.io/npm/l/@react-native-masked-view/masked-view.svg?style=flat-square 135 | [license]: https://opensource.org/licenses/MIT 136 | [lean-core-badge]: https://img.shields.io/badge/Lean%20Core-Extracted-brightgreen.svg?style=flat-square 137 | [lean-core-issue]: https://github.com/facebook/react-native/issues/23313 138 | -------------------------------------------------------------------------------- /RNCMaskedView.podspec: -------------------------------------------------------------------------------- 1 | require 'json' 2 | 3 | package = JSON.parse(File.read(File.join(__dir__, 'package.json'))) 4 | 5 | Pod::Spec.new do |s| 6 | s.name = "RNCMaskedView" 7 | s.version = package['version'] 8 | s.summary = package['description'] 9 | s.license = package['license'] 10 | 11 | s.authors = package['author'] 12 | s.homepage = package['homepage'] 13 | s.platforms = { :ios => "9.0", :tvos => "9.0" } 14 | 15 | s.source = { :git => "https://github.com/react-native-masked-view/masked-view.git", :tag => "v#{s.version}" } 16 | s.source_files = "ios/**/*.{h,m}" 17 | 18 | install_modules_dependencies(s) 19 | end 20 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | def safeExtGet(prop, fallback) { 2 | rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback 3 | } 4 | 5 | buildscript { 6 | if (project == rootProject) { 7 | repositories { 8 | google() 9 | mavenCentral() 10 | } 11 | 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:4.1.2' 14 | } 15 | } 16 | } 17 | 18 | apply plugin: 'com.android.library' 19 | 20 | def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() 21 | def shouldUseNameSpace = agpVersion >= 7 22 | def PACKAGE_PROP = "package=\"org.reactnative.maskedview\"" 23 | def manifestOutFile = file("${projectDir}/src/main/AndroidManifest.xml") 24 | def manifestContent = manifestOutFile.getText() 25 | if(shouldUseNameSpace){ 26 | manifestContent = manifestContent.replaceAll( 27 | PACKAGE_PROP, 28 | '' 29 | ) 30 | } else { 31 | if(!manifestContent.contains("$PACKAGE_PROP")){ 32 | manifestContent = manifestContent.replace( 33 | ' 2 | 3 | -------------------------------------------------------------------------------- /android/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-native-masked-view/masked-view/14df52650be2441fbf6f2a0308cc54a62e68820c/android/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /android/src/main/java/org/reactnative/maskedview/RNCMaskedView.java: -------------------------------------------------------------------------------- 1 | package org.reactnative.maskedview; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.Canvas; 6 | import android.graphics.Paint; 7 | import android.graphics.PorterDuff; 8 | import android.graphics.PorterDuffXfermode; 9 | import android.view.View; 10 | 11 | import com.facebook.react.views.view.ReactViewGroup; 12 | 13 | public class RNCMaskedView extends ReactViewGroup { 14 | private static final String TAG = "RNCMaskedView"; 15 | 16 | private Bitmap mBitmapMask = null; 17 | private boolean mBitmapMaskInvalidated = false; 18 | private Paint mPaint; 19 | private PorterDuffXfermode mPorterDuffXferMode; 20 | private int mRenderingMode = View.LAYER_TYPE_HARDWARE; 21 | 22 | public RNCMaskedView(Context context) { 23 | super(context); 24 | 25 | mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 26 | mPorterDuffXferMode = new PorterDuffXfermode(PorterDuff.Mode.DST_IN); 27 | } 28 | 29 | @Override 30 | protected void dispatchDraw(Canvas canvas) { 31 | super.dispatchDraw(canvas); 32 | 33 | if (mBitmapMaskInvalidated) { 34 | // redraw mask element to support animated elements 35 | updateBitmapMask(); 36 | 37 | mBitmapMaskInvalidated = false; 38 | } 39 | 40 | // draw the mask 41 | if (mBitmapMask != null) { 42 | setLayerType(mRenderingMode, mPaint); 43 | mPaint.setXfermode(mPorterDuffXferMode); 44 | canvas.drawBitmap(mBitmapMask, 0, 0, mPaint); 45 | mPaint.setXfermode(null); 46 | } 47 | } 48 | 49 | @Override 50 | public void onDescendantInvalidated(View child, View target) { 51 | super.onDescendantInvalidated(child, target); 52 | 53 | if (!mBitmapMaskInvalidated) { 54 | View maskView = getChildAt(0); 55 | if (maskView != null) { 56 | if (maskView.equals(child)) { 57 | mBitmapMaskInvalidated = true; 58 | } 59 | } 60 | } 61 | 62 | invalidate(); 63 | } 64 | 65 | @Override 66 | protected void onLayout(boolean changed, int l, int t, int r, int b) { 67 | super.onLayout(changed, l, t, r, b); 68 | 69 | if (changed) { 70 | mBitmapMaskInvalidated = true; 71 | } 72 | } 73 | 74 | @Override 75 | protected void onAttachedToWindow() { 76 | super.onAttachedToWindow(); 77 | mBitmapMaskInvalidated = true; 78 | } 79 | 80 | private void updateBitmapMask() { 81 | View maskView = getChildAt(0); 82 | if (maskView != null) { 83 | maskView.setVisibility(View.VISIBLE); 84 | if (this.mBitmapMask != null) { 85 | this.mBitmapMask.recycle(); 86 | } 87 | this.mBitmapMask = getBitmapFromView(maskView); 88 | maskView.setVisibility(View.INVISIBLE); 89 | } 90 | } 91 | 92 | public static Bitmap getBitmapFromView(final View view) { 93 | view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); 94 | 95 | if (view.getMeasuredWidth() <= 0 || view.getMeasuredHeight() <= 0) { 96 | return null; 97 | } 98 | 99 | final Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), 100 | view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 101 | 102 | final Canvas canvas = new Canvas(bitmap); 103 | 104 | view.draw(canvas); 105 | 106 | return bitmap; 107 | } 108 | 109 | public void setRenderingMode(String renderingMode) { 110 | mRenderingMode = renderingMode.equals("software") ? View.LAYER_TYPE_SOFTWARE : View.LAYER_TYPE_HARDWARE; 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /android/src/main/java/org/reactnative/maskedview/RNCMaskedViewManager.java: -------------------------------------------------------------------------------- 1 | package org.reactnative.maskedview; 2 | 3 | import android.view.View; 4 | import android.widget.Toast; 5 | import androidx.annotation.Nullable; 6 | 7 | import com.facebook.react.bridge.ReadableArray; 8 | import com.facebook.react.bridge.ReadableMap; 9 | import com.facebook.react.common.MapBuilder; 10 | import com.facebook.react.uimanager.SimpleViewManager; 11 | import com.facebook.react.uimanager.ThemedReactContext; 12 | import com.facebook.react.uimanager.ViewGroupManager; 13 | import com.facebook.react.uimanager.annotations.ReactProp; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | import java.util.Map; 18 | 19 | public class RNCMaskedViewManager extends ViewGroupManager { 20 | private static final String REACT_CLASS = "RNCMaskedView"; 21 | 22 | @Override 23 | public String getName() { 24 | return REACT_CLASS; 25 | } 26 | 27 | @Override 28 | protected RNCMaskedView createViewInstance(ThemedReactContext themedReactContext) { 29 | return new RNCMaskedView(themedReactContext); 30 | } 31 | 32 | @ReactProp(name = "androidRenderingMode") 33 | public void setAndroidRenderingMode(RNCMaskedView view, @Nullable String renderingMode) { 34 | if (renderingMode != null) { 35 | view.setRenderingMode(renderingMode); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /android/src/main/java/org/reactnative/maskedview/RNCMaskedViewPackage.java: -------------------------------------------------------------------------------- 1 | package org.reactnative.maskedview; 2 | 3 | import com.facebook.react.ReactPackage; 4 | import com.facebook.react.bridge.JavaScriptModule; 5 | import com.facebook.react.bridge.NativeModule; 6 | import com.facebook.react.bridge.ReactApplicationContext; 7 | import com.facebook.react.uimanager.ViewManager; 8 | 9 | import java.util.Arrays; 10 | import java.util.Collections; 11 | import java.util.List; 12 | 13 | public class RNCMaskedViewPackage implements ReactPackage { 14 | @Override 15 | public List createNativeModules(ReactApplicationContext reactApplicationContext) { 16 | return Collections.emptyList(); 17 | } 18 | 19 | @Override 20 | public List createViewManagers(ReactApplicationContext reactApplicationContext) { 21 | return Arrays.asList( 22 | new RNCMaskedViewManager() 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | *.binlog 2 | *.hprof 3 | *.xcworkspace/ 4 | *.zip 5 | .DS_Store 6 | .gradle/ 7 | .idea/ 8 | .vs/ 9 | .xcode.env 10 | Pods/ 11 | build/ 12 | dist/ 13 | local.properties 14 | msbuild.binlog 15 | node_modules/ 16 | -------------------------------------------------------------------------------- /example/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | def androidTestAppDir = "../node_modules/react-native-test-app/android" 3 | apply(from: "${androidTestAppDir}/dependencies.gradle") 4 | 5 | repositories { 6 | mavenCentral() 7 | google() 8 | } 9 | 10 | dependencies { 11 | getReactNativeDependencies().each { dependency -> 12 | classpath(dependency) 13 | } 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | maven { 20 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 21 | url("${rootDir}/../node_modules/react-native/android") 22 | } 23 | mavenCentral() 24 | google() 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the Gradle Daemon. The setting is 11 | # particularly useful for configuring JVM memory settings for build performance. 12 | # This does not affect the JVM settings for the Gradle client VM. 13 | # The default is `-Xmx512m -XX:MaxMetaspaceSize=256m`. 14 | org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 15 | 16 | # When configured, Gradle will fork up to org.gradle.workers.max JVMs to execute 17 | # projects in parallel. To learn more about parallel task execution, see the 18 | # section on Gradle build performance: 19 | # https://docs.gradle.org/current/userguide/performance.html#parallel_execution. 20 | # Default is `false`. 21 | #org.gradle.parallel=true 22 | 23 | # AndroidX package structure to make it clearer which packages are bundled with the 24 | # Android operating system, and which are packaged with your app's APK 25 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 26 | android.useAndroidX=true 27 | # Automatically convert third-party libraries to use AndroidX 28 | android.enableJetifier=true 29 | 30 | # Version of Flipper to use with React Native. Default value is whatever React 31 | # Native defaults to. To disable Flipper, set it to `false`. 32 | #FLIPPER_VERSION=0.182.0 33 | 34 | # Enable Fabric at runtime. 35 | #USE_FABRIC=1 36 | 37 | # Enable new architecture, i.e. Fabric + TurboModule - implies USE_FABRIC=1. 38 | # Note that this is incompatible with web debugging. 39 | #newArchEnabled=true 40 | 41 | # Uncomment the line below if building react-native from source 42 | #ANDROID_NDK_VERSION=23.1.7779620 43 | 44 | # Version of Kotlin to build against. 45 | #KOTLIN_VERSION=1.7.22 46 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-native-masked-view/masked-view/14df52650be2441fbf6f2a0308cc54a62e68820c/example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /example/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | # This is normally unused 84 | # shellcheck disable=SC2034 85 | APP_BASE_NAME=${0##*/} 86 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 147 | # shellcheck disable=SC3045 148 | MAX_FD=$( ulimit -H -n ) || 149 | warn "Could not query maximum file descriptor limit" 150 | esac 151 | case $MAX_FD in #( 152 | '' | soft) :;; #( 153 | *) 154 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 155 | # shellcheck disable=SC3045 156 | ulimit -n "$MAX_FD" || 157 | warn "Could not set maximum file descriptor limit to $MAX_FD" 158 | esac 159 | fi 160 | 161 | # Collect all arguments for the java command, stacking in reverse order: 162 | # * args from the command line 163 | # * the main class name 164 | # * -classpath 165 | # * -D...appname settings 166 | # * --module-path (only if needed) 167 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 168 | 169 | # For Cygwin or MSYS, switch paths to Windows format before running java 170 | if "$cygwin" || "$msys" ; then 171 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 172 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 173 | 174 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 175 | 176 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 177 | for arg do 178 | if 179 | case $arg in #( 180 | -*) false ;; # don't mess with options #( 181 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 182 | [ -e "$t" ] ;; #( 183 | *) false ;; 184 | esac 185 | then 186 | arg=$( cygpath --path --ignore --mixed "$arg" ) 187 | fi 188 | # Roll the args list around exactly as many times as the number of 189 | # args, so each arg winds up back in the position where it started, but 190 | # possibly modified. 191 | # 192 | # NB: a `for` loop captures its iteration list before it begins, so 193 | # changing the positional parameters here affects neither the number of 194 | # iterations, nor the values presented in `arg`. 195 | shift # remove old arg 196 | set -- "$@" "$arg" # push replacement arg 197 | done 198 | fi 199 | 200 | # Collect all arguments for the java command; 201 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 202 | # shell script including quotes and variable substitutions, so put them in 203 | # double quotes to make sure that they get re-expanded; and 204 | # * put everything else in single quotes, so that it's not re-expanded. 205 | 206 | set -- \ 207 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 208 | -classpath "$CLASSPATH" \ 209 | org.gradle.wrapper.GradleWrapperMain \ 210 | "$@" 211 | 212 | # Stop when "xargs" is not available. 213 | if ! command -v xargs >/dev/null 2>&1 214 | then 215 | die "xargs is not available" 216 | fi 217 | 218 | # Use "xargs" to parse quoted args. 219 | # 220 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 221 | # 222 | # In Bash we could simply go: 223 | # 224 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 225 | # set -- "${ARGS[@]}" "$@" 226 | # 227 | # but POSIX shell has neither arrays nor command substitution, so instead we 228 | # post-process each arg (as a line of input to sed) to backslash-escape any 229 | # character that might be a shell metacharacter, then use eval to reverse 230 | # that process (while maintaining the separation between arguments), and wrap 231 | # the whole thing up as a single "set" statement. 232 | # 233 | # This will of course break if any of these variables contains a newline or 234 | # an unmatched quote. 235 | # 236 | 237 | eval "set -- $( 238 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 239 | xargs -n1 | 240 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 241 | tr '\n' ' ' 242 | )" '"$@"' 243 | 244 | exec "$JAVACMD" "$@" 245 | -------------------------------------------------------------------------------- /example/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | google() 6 | } 7 | } 8 | 9 | rootProject.name = "MaskedViewExample" 10 | 11 | apply(from: "../node_modules/react-native-test-app/test-app.gradle") 12 | applyTestAppSettings(settings) 13 | -------------------------------------------------------------------------------- /example/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MaskedViewExample", 3 | "displayName": "MaskedViewExample", 4 | "components": [ 5 | { 6 | "appKey": "MaskedViewExample", 7 | "displayName": "MaskedViewExample" 8 | }, 9 | { 10 | "appKey": "MaskedViewImageExample", 11 | "displayName": "MaskedViewImageExample" 12 | }, 13 | { 14 | "appKey": "MaskedViewTextExample", 15 | "displayName": "MaskedViewTextExample" 16 | } 17 | ], 18 | "resources": { 19 | "android": ["dist/res", "dist/main.android.jsbundle"], 20 | "ios": ["dist/assets", "dist/main.ios.jsbundle"], 21 | "macos": ["dist/assets", "dist/main.macos.jsbundle"], 22 | "windows": ["dist/assets", "dist/main.windows.bundle"] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /example/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:@react-native/babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /example/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import { AppRegistry } from 'react-native'; 6 | 7 | import { components as appComponents } from './app.json'; 8 | import * as components from './src'; 9 | 10 | for (const component of appComponents) { 11 | AppRegistry.registerComponent( 12 | component.appKey, 13 | () => components[component.appKey], 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /example/ios/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../node_modules/react-native-test-app/test_app' 2 | 3 | use_flipper! false if ENV['USE_FLIPPER'] == '0' 4 | 5 | workspace 'MaskedViewExample.xcworkspace' 6 | 7 | use_test_app! 8 | -------------------------------------------------------------------------------- /example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.84.0) 3 | - DoubleConversion (1.1.6) 4 | - FBLazyVector (0.75.3) 5 | - fmt (9.1.0) 6 | - glog (0.3.5) 7 | - RCT-Folly (2024.01.01.00): 8 | - boost 9 | - DoubleConversion 10 | - fmt (= 9.1.0) 11 | - glog 12 | - RCT-Folly/Default (= 2024.01.01.00) 13 | - RCT-Folly/Default (2024.01.01.00): 14 | - boost 15 | - DoubleConversion 16 | - fmt (= 9.1.0) 17 | - glog 18 | - RCT-Folly/Fabric (2024.01.01.00): 19 | - boost 20 | - DoubleConversion 21 | - fmt (= 9.1.0) 22 | - glog 23 | - RCTDeprecation (0.75.3) 24 | - RCTRequired (0.75.3) 25 | - RCTTypeSafety (0.75.3): 26 | - FBLazyVector (= 0.75.3) 27 | - RCTRequired (= 0.75.3) 28 | - React-Core (= 0.75.3) 29 | - React (0.75.3): 30 | - React-Core (= 0.75.3) 31 | - React-Core/DevSupport (= 0.75.3) 32 | - React-Core/RCTWebSocket (= 0.75.3) 33 | - React-RCTActionSheet (= 0.75.3) 34 | - React-RCTAnimation (= 0.75.3) 35 | - React-RCTBlob (= 0.75.3) 36 | - React-RCTImage (= 0.75.3) 37 | - React-RCTLinking (= 0.75.3) 38 | - React-RCTNetwork (= 0.75.3) 39 | - React-RCTSettings (= 0.75.3) 40 | - React-RCTText (= 0.75.3) 41 | - React-RCTVibration (= 0.75.3) 42 | - React-callinvoker (0.75.3) 43 | - React-Core (0.75.3): 44 | - glog 45 | - RCT-Folly (= 2024.01.01.00) 46 | - RCTDeprecation 47 | - React-Core/Default (= 0.75.3) 48 | - React-cxxreact 49 | - React-featureflags 50 | - React-jsc 51 | - React-jsi 52 | - React-jsiexecutor 53 | - React-jsinspector 54 | - React-perflogger 55 | - React-runtimescheduler 56 | - React-utils 57 | - SocketRocket (= 0.7.0) 58 | - Yoga 59 | - React-Core/CoreModulesHeaders (0.75.3): 60 | - glog 61 | - RCT-Folly (= 2024.01.01.00) 62 | - RCTDeprecation 63 | - React-Core/Default 64 | - React-cxxreact 65 | - React-featureflags 66 | - React-jsc 67 | - React-jsi 68 | - React-jsiexecutor 69 | - React-jsinspector 70 | - React-perflogger 71 | - React-runtimescheduler 72 | - React-utils 73 | - SocketRocket (= 0.7.0) 74 | - Yoga 75 | - React-Core/Default (0.75.3): 76 | - glog 77 | - RCT-Folly (= 2024.01.01.00) 78 | - RCTDeprecation 79 | - React-cxxreact 80 | - React-featureflags 81 | - React-jsc 82 | - React-jsi 83 | - React-jsiexecutor 84 | - React-jsinspector 85 | - React-perflogger 86 | - React-runtimescheduler 87 | - React-utils 88 | - SocketRocket (= 0.7.0) 89 | - Yoga 90 | - React-Core/DevSupport (0.75.3): 91 | - glog 92 | - RCT-Folly (= 2024.01.01.00) 93 | - RCTDeprecation 94 | - React-Core/Default (= 0.75.3) 95 | - React-Core/RCTWebSocket (= 0.75.3) 96 | - React-cxxreact 97 | - React-featureflags 98 | - React-jsc 99 | - React-jsi 100 | - React-jsiexecutor 101 | - React-jsinspector 102 | - React-perflogger 103 | - React-runtimescheduler 104 | - React-utils 105 | - SocketRocket (= 0.7.0) 106 | - Yoga 107 | - React-Core/RCTActionSheetHeaders (0.75.3): 108 | - glog 109 | - RCT-Folly (= 2024.01.01.00) 110 | - RCTDeprecation 111 | - React-Core/Default 112 | - React-cxxreact 113 | - React-featureflags 114 | - React-jsc 115 | - React-jsi 116 | - React-jsiexecutor 117 | - React-jsinspector 118 | - React-perflogger 119 | - React-runtimescheduler 120 | - React-utils 121 | - SocketRocket (= 0.7.0) 122 | - Yoga 123 | - React-Core/RCTAnimationHeaders (0.75.3): 124 | - glog 125 | - RCT-Folly (= 2024.01.01.00) 126 | - RCTDeprecation 127 | - React-Core/Default 128 | - React-cxxreact 129 | - React-featureflags 130 | - React-jsc 131 | - React-jsi 132 | - React-jsiexecutor 133 | - React-jsinspector 134 | - React-perflogger 135 | - React-runtimescheduler 136 | - React-utils 137 | - SocketRocket (= 0.7.0) 138 | - Yoga 139 | - React-Core/RCTBlobHeaders (0.75.3): 140 | - glog 141 | - RCT-Folly (= 2024.01.01.00) 142 | - RCTDeprecation 143 | - React-Core/Default 144 | - React-cxxreact 145 | - React-featureflags 146 | - React-jsc 147 | - React-jsi 148 | - React-jsiexecutor 149 | - React-jsinspector 150 | - React-perflogger 151 | - React-runtimescheduler 152 | - React-utils 153 | - SocketRocket (= 0.7.0) 154 | - Yoga 155 | - React-Core/RCTImageHeaders (0.75.3): 156 | - glog 157 | - RCT-Folly (= 2024.01.01.00) 158 | - RCTDeprecation 159 | - React-Core/Default 160 | - React-cxxreact 161 | - React-featureflags 162 | - React-jsc 163 | - React-jsi 164 | - React-jsiexecutor 165 | - React-jsinspector 166 | - React-perflogger 167 | - React-runtimescheduler 168 | - React-utils 169 | - SocketRocket (= 0.7.0) 170 | - Yoga 171 | - React-Core/RCTLinkingHeaders (0.75.3): 172 | - glog 173 | - RCT-Folly (= 2024.01.01.00) 174 | - RCTDeprecation 175 | - React-Core/Default 176 | - React-cxxreact 177 | - React-featureflags 178 | - React-jsc 179 | - React-jsi 180 | - React-jsiexecutor 181 | - React-jsinspector 182 | - React-perflogger 183 | - React-runtimescheduler 184 | - React-utils 185 | - SocketRocket (= 0.7.0) 186 | - Yoga 187 | - React-Core/RCTNetworkHeaders (0.75.3): 188 | - glog 189 | - RCT-Folly (= 2024.01.01.00) 190 | - RCTDeprecation 191 | - React-Core/Default 192 | - React-cxxreact 193 | - React-featureflags 194 | - React-jsc 195 | - React-jsi 196 | - React-jsiexecutor 197 | - React-jsinspector 198 | - React-perflogger 199 | - React-runtimescheduler 200 | - React-utils 201 | - SocketRocket (= 0.7.0) 202 | - Yoga 203 | - React-Core/RCTSettingsHeaders (0.75.3): 204 | - glog 205 | - RCT-Folly (= 2024.01.01.00) 206 | - RCTDeprecation 207 | - React-Core/Default 208 | - React-cxxreact 209 | - React-featureflags 210 | - React-jsc 211 | - React-jsi 212 | - React-jsiexecutor 213 | - React-jsinspector 214 | - React-perflogger 215 | - React-runtimescheduler 216 | - React-utils 217 | - SocketRocket (= 0.7.0) 218 | - Yoga 219 | - React-Core/RCTTextHeaders (0.75.3): 220 | - glog 221 | - RCT-Folly (= 2024.01.01.00) 222 | - RCTDeprecation 223 | - React-Core/Default 224 | - React-cxxreact 225 | - React-featureflags 226 | - React-jsc 227 | - React-jsi 228 | - React-jsiexecutor 229 | - React-jsinspector 230 | - React-perflogger 231 | - React-runtimescheduler 232 | - React-utils 233 | - SocketRocket (= 0.7.0) 234 | - Yoga 235 | - React-Core/RCTVibrationHeaders (0.75.3): 236 | - glog 237 | - RCT-Folly (= 2024.01.01.00) 238 | - RCTDeprecation 239 | - React-Core/Default 240 | - React-cxxreact 241 | - React-featureflags 242 | - React-jsc 243 | - React-jsi 244 | - React-jsiexecutor 245 | - React-jsinspector 246 | - React-perflogger 247 | - React-runtimescheduler 248 | - React-utils 249 | - SocketRocket (= 0.7.0) 250 | - Yoga 251 | - React-Core/RCTWebSocket (0.75.3): 252 | - glog 253 | - RCT-Folly (= 2024.01.01.00) 254 | - RCTDeprecation 255 | - React-Core/Default (= 0.75.3) 256 | - React-cxxreact 257 | - React-featureflags 258 | - React-jsc 259 | - React-jsi 260 | - React-jsiexecutor 261 | - React-jsinspector 262 | - React-perflogger 263 | - React-runtimescheduler 264 | - React-utils 265 | - SocketRocket (= 0.7.0) 266 | - Yoga 267 | - React-CoreModules (0.75.3): 268 | - DoubleConversion 269 | - fmt (= 9.1.0) 270 | - RCT-Folly (= 2024.01.01.00) 271 | - RCTTypeSafety (= 0.75.3) 272 | - React-Core/CoreModulesHeaders (= 0.75.3) 273 | - React-jsi (= 0.75.3) 274 | - React-jsinspector 275 | - React-NativeModulesApple 276 | - React-RCTBlob 277 | - React-RCTImage (= 0.75.3) 278 | - ReactCodegen 279 | - ReactCommon 280 | - SocketRocket (= 0.7.0) 281 | - React-cxxreact (0.75.3): 282 | - boost 283 | - DoubleConversion 284 | - fmt (= 9.1.0) 285 | - glog 286 | - RCT-Folly (= 2024.01.01.00) 287 | - React-callinvoker (= 0.75.3) 288 | - React-debug (= 0.75.3) 289 | - React-jsi (= 0.75.3) 290 | - React-jsinspector 291 | - React-logger (= 0.75.3) 292 | - React-perflogger (= 0.75.3) 293 | - React-runtimeexecutor (= 0.75.3) 294 | - React-debug (0.75.3) 295 | - React-defaultsnativemodule (0.75.3): 296 | - DoubleConversion 297 | - glog 298 | - RCT-Folly (= 2024.01.01.00) 299 | - RCTRequired 300 | - RCTTypeSafety 301 | - React-Core 302 | - React-debug 303 | - React-domnativemodule 304 | - React-Fabric 305 | - React-featureflags 306 | - React-featureflagsnativemodule 307 | - React-graphics 308 | - React-idlecallbacksnativemodule 309 | - React-ImageManager 310 | - React-jsi 311 | - React-microtasksnativemodule 312 | - React-NativeModulesApple 313 | - React-RCTFabric 314 | - React-rendererdebug 315 | - React-utils 316 | - ReactCodegen 317 | - ReactCommon/turbomodule/bridging 318 | - ReactCommon/turbomodule/core 319 | - Yoga 320 | - React-domnativemodule (0.75.3): 321 | - DoubleConversion 322 | - glog 323 | - RCT-Folly (= 2024.01.01.00) 324 | - RCTRequired 325 | - RCTTypeSafety 326 | - React-Core 327 | - React-debug 328 | - React-Fabric 329 | - React-FabricComponents 330 | - React-featureflags 331 | - React-graphics 332 | - React-ImageManager 333 | - React-jsi 334 | - React-NativeModulesApple 335 | - React-RCTFabric 336 | - React-rendererdebug 337 | - React-utils 338 | - ReactCodegen 339 | - ReactCommon/turbomodule/bridging 340 | - ReactCommon/turbomodule/core 341 | - Yoga 342 | - React-Fabric (0.75.3): 343 | - DoubleConversion 344 | - fmt (= 9.1.0) 345 | - glog 346 | - RCT-Folly/Fabric (= 2024.01.01.00) 347 | - RCTRequired 348 | - RCTTypeSafety 349 | - React-Core 350 | - React-cxxreact 351 | - React-debug 352 | - React-Fabric/animations (= 0.75.3) 353 | - React-Fabric/attributedstring (= 0.75.3) 354 | - React-Fabric/componentregistry (= 0.75.3) 355 | - React-Fabric/componentregistrynative (= 0.75.3) 356 | - React-Fabric/components (= 0.75.3) 357 | - React-Fabric/core (= 0.75.3) 358 | - React-Fabric/dom (= 0.75.3) 359 | - React-Fabric/imagemanager (= 0.75.3) 360 | - React-Fabric/leakchecker (= 0.75.3) 361 | - React-Fabric/mounting (= 0.75.3) 362 | - React-Fabric/observers (= 0.75.3) 363 | - React-Fabric/scheduler (= 0.75.3) 364 | - React-Fabric/telemetry (= 0.75.3) 365 | - React-Fabric/templateprocessor (= 0.75.3) 366 | - React-Fabric/uimanager (= 0.75.3) 367 | - React-featureflags 368 | - React-graphics 369 | - React-jsc 370 | - React-jsi 371 | - React-jsiexecutor 372 | - React-logger 373 | - React-rendererdebug 374 | - React-runtimescheduler 375 | - React-utils 376 | - ReactCommon/turbomodule/core 377 | - React-Fabric/animations (0.75.3): 378 | - DoubleConversion 379 | - fmt (= 9.1.0) 380 | - glog 381 | - RCT-Folly/Fabric (= 2024.01.01.00) 382 | - RCTRequired 383 | - RCTTypeSafety 384 | - React-Core 385 | - React-cxxreact 386 | - React-debug 387 | - React-featureflags 388 | - React-graphics 389 | - React-jsc 390 | - React-jsi 391 | - React-jsiexecutor 392 | - React-logger 393 | - React-rendererdebug 394 | - React-runtimescheduler 395 | - React-utils 396 | - ReactCommon/turbomodule/core 397 | - React-Fabric/attributedstring (0.75.3): 398 | - DoubleConversion 399 | - fmt (= 9.1.0) 400 | - glog 401 | - RCT-Folly/Fabric (= 2024.01.01.00) 402 | - RCTRequired 403 | - RCTTypeSafety 404 | - React-Core 405 | - React-cxxreact 406 | - React-debug 407 | - React-featureflags 408 | - React-graphics 409 | - React-jsc 410 | - React-jsi 411 | - React-jsiexecutor 412 | - React-logger 413 | - React-rendererdebug 414 | - React-runtimescheduler 415 | - React-utils 416 | - ReactCommon/turbomodule/core 417 | - React-Fabric/componentregistry (0.75.3): 418 | - DoubleConversion 419 | - fmt (= 9.1.0) 420 | - glog 421 | - RCT-Folly/Fabric (= 2024.01.01.00) 422 | - RCTRequired 423 | - RCTTypeSafety 424 | - React-Core 425 | - React-cxxreact 426 | - React-debug 427 | - React-featureflags 428 | - React-graphics 429 | - React-jsc 430 | - React-jsi 431 | - React-jsiexecutor 432 | - React-logger 433 | - React-rendererdebug 434 | - React-runtimescheduler 435 | - React-utils 436 | - ReactCommon/turbomodule/core 437 | - React-Fabric/componentregistrynative (0.75.3): 438 | - DoubleConversion 439 | - fmt (= 9.1.0) 440 | - glog 441 | - RCT-Folly/Fabric (= 2024.01.01.00) 442 | - RCTRequired 443 | - RCTTypeSafety 444 | - React-Core 445 | - React-cxxreact 446 | - React-debug 447 | - React-featureflags 448 | - React-graphics 449 | - React-jsc 450 | - React-jsi 451 | - React-jsiexecutor 452 | - React-logger 453 | - React-rendererdebug 454 | - React-runtimescheduler 455 | - React-utils 456 | - ReactCommon/turbomodule/core 457 | - React-Fabric/components (0.75.3): 458 | - DoubleConversion 459 | - fmt (= 9.1.0) 460 | - glog 461 | - RCT-Folly/Fabric (= 2024.01.01.00) 462 | - RCTRequired 463 | - RCTTypeSafety 464 | - React-Core 465 | - React-cxxreact 466 | - React-debug 467 | - React-Fabric/components/legacyviewmanagerinterop (= 0.75.3) 468 | - React-Fabric/components/root (= 0.75.3) 469 | - React-Fabric/components/view (= 0.75.3) 470 | - React-featureflags 471 | - React-graphics 472 | - React-jsc 473 | - React-jsi 474 | - React-jsiexecutor 475 | - React-logger 476 | - React-rendererdebug 477 | - React-runtimescheduler 478 | - React-utils 479 | - ReactCommon/turbomodule/core 480 | - React-Fabric/components/legacyviewmanagerinterop (0.75.3): 481 | - DoubleConversion 482 | - fmt (= 9.1.0) 483 | - glog 484 | - RCT-Folly/Fabric (= 2024.01.01.00) 485 | - RCTRequired 486 | - RCTTypeSafety 487 | - React-Core 488 | - React-cxxreact 489 | - React-debug 490 | - React-featureflags 491 | - React-graphics 492 | - React-jsc 493 | - React-jsi 494 | - React-jsiexecutor 495 | - React-logger 496 | - React-rendererdebug 497 | - React-runtimescheduler 498 | - React-utils 499 | - ReactCommon/turbomodule/core 500 | - React-Fabric/components/root (0.75.3): 501 | - DoubleConversion 502 | - fmt (= 9.1.0) 503 | - glog 504 | - RCT-Folly/Fabric (= 2024.01.01.00) 505 | - RCTRequired 506 | - RCTTypeSafety 507 | - React-Core 508 | - React-cxxreact 509 | - React-debug 510 | - React-featureflags 511 | - React-graphics 512 | - React-jsc 513 | - React-jsi 514 | - React-jsiexecutor 515 | - React-logger 516 | - React-rendererdebug 517 | - React-runtimescheduler 518 | - React-utils 519 | - ReactCommon/turbomodule/core 520 | - React-Fabric/components/view (0.75.3): 521 | - DoubleConversion 522 | - fmt (= 9.1.0) 523 | - glog 524 | - RCT-Folly/Fabric (= 2024.01.01.00) 525 | - RCTRequired 526 | - RCTTypeSafety 527 | - React-Core 528 | - React-cxxreact 529 | - React-debug 530 | - React-featureflags 531 | - React-graphics 532 | - React-jsc 533 | - React-jsi 534 | - React-jsiexecutor 535 | - React-logger 536 | - React-rendererdebug 537 | - React-runtimescheduler 538 | - React-utils 539 | - ReactCommon/turbomodule/core 540 | - Yoga 541 | - React-Fabric/core (0.75.3): 542 | - DoubleConversion 543 | - fmt (= 9.1.0) 544 | - glog 545 | - RCT-Folly/Fabric (= 2024.01.01.00) 546 | - RCTRequired 547 | - RCTTypeSafety 548 | - React-Core 549 | - React-cxxreact 550 | - React-debug 551 | - React-featureflags 552 | - React-graphics 553 | - React-jsc 554 | - React-jsi 555 | - React-jsiexecutor 556 | - React-logger 557 | - React-rendererdebug 558 | - React-runtimescheduler 559 | - React-utils 560 | - ReactCommon/turbomodule/core 561 | - React-Fabric/dom (0.75.3): 562 | - DoubleConversion 563 | - fmt (= 9.1.0) 564 | - glog 565 | - RCT-Folly/Fabric (= 2024.01.01.00) 566 | - RCTRequired 567 | - RCTTypeSafety 568 | - React-Core 569 | - React-cxxreact 570 | - React-debug 571 | - React-featureflags 572 | - React-graphics 573 | - React-jsc 574 | - React-jsi 575 | - React-jsiexecutor 576 | - React-logger 577 | - React-rendererdebug 578 | - React-runtimescheduler 579 | - React-utils 580 | - ReactCommon/turbomodule/core 581 | - React-Fabric/imagemanager (0.75.3): 582 | - DoubleConversion 583 | - fmt (= 9.1.0) 584 | - glog 585 | - RCT-Folly/Fabric (= 2024.01.01.00) 586 | - RCTRequired 587 | - RCTTypeSafety 588 | - React-Core 589 | - React-cxxreact 590 | - React-debug 591 | - React-featureflags 592 | - React-graphics 593 | - React-jsc 594 | - React-jsi 595 | - React-jsiexecutor 596 | - React-logger 597 | - React-rendererdebug 598 | - React-runtimescheduler 599 | - React-utils 600 | - ReactCommon/turbomodule/core 601 | - React-Fabric/leakchecker (0.75.3): 602 | - DoubleConversion 603 | - fmt (= 9.1.0) 604 | - glog 605 | - RCT-Folly/Fabric (= 2024.01.01.00) 606 | - RCTRequired 607 | - RCTTypeSafety 608 | - React-Core 609 | - React-cxxreact 610 | - React-debug 611 | - React-featureflags 612 | - React-graphics 613 | - React-jsc 614 | - React-jsi 615 | - React-jsiexecutor 616 | - React-logger 617 | - React-rendererdebug 618 | - React-runtimescheduler 619 | - React-utils 620 | - ReactCommon/turbomodule/core 621 | - React-Fabric/mounting (0.75.3): 622 | - DoubleConversion 623 | - fmt (= 9.1.0) 624 | - glog 625 | - RCT-Folly/Fabric (= 2024.01.01.00) 626 | - RCTRequired 627 | - RCTTypeSafety 628 | - React-Core 629 | - React-cxxreact 630 | - React-debug 631 | - React-featureflags 632 | - React-graphics 633 | - React-jsc 634 | - React-jsi 635 | - React-jsiexecutor 636 | - React-logger 637 | - React-rendererdebug 638 | - React-runtimescheduler 639 | - React-utils 640 | - ReactCommon/turbomodule/core 641 | - React-Fabric/observers (0.75.3): 642 | - DoubleConversion 643 | - fmt (= 9.1.0) 644 | - glog 645 | - RCT-Folly/Fabric (= 2024.01.01.00) 646 | - RCTRequired 647 | - RCTTypeSafety 648 | - React-Core 649 | - React-cxxreact 650 | - React-debug 651 | - React-Fabric/observers/events (= 0.75.3) 652 | - React-featureflags 653 | - React-graphics 654 | - React-jsc 655 | - React-jsi 656 | - React-jsiexecutor 657 | - React-logger 658 | - React-rendererdebug 659 | - React-runtimescheduler 660 | - React-utils 661 | - ReactCommon/turbomodule/core 662 | - React-Fabric/observers/events (0.75.3): 663 | - DoubleConversion 664 | - fmt (= 9.1.0) 665 | - glog 666 | - RCT-Folly/Fabric (= 2024.01.01.00) 667 | - RCTRequired 668 | - RCTTypeSafety 669 | - React-Core 670 | - React-cxxreact 671 | - React-debug 672 | - React-featureflags 673 | - React-graphics 674 | - React-jsc 675 | - React-jsi 676 | - React-jsiexecutor 677 | - React-logger 678 | - React-rendererdebug 679 | - React-runtimescheduler 680 | - React-utils 681 | - ReactCommon/turbomodule/core 682 | - React-Fabric/scheduler (0.75.3): 683 | - DoubleConversion 684 | - fmt (= 9.1.0) 685 | - glog 686 | - RCT-Folly/Fabric (= 2024.01.01.00) 687 | - RCTRequired 688 | - RCTTypeSafety 689 | - React-Core 690 | - React-cxxreact 691 | - React-debug 692 | - React-Fabric/observers/events 693 | - React-featureflags 694 | - React-graphics 695 | - React-jsc 696 | - React-jsi 697 | - React-jsiexecutor 698 | - React-logger 699 | - React-performancetimeline 700 | - React-rendererdebug 701 | - React-runtimescheduler 702 | - React-utils 703 | - ReactCommon/turbomodule/core 704 | - React-Fabric/telemetry (0.75.3): 705 | - DoubleConversion 706 | - fmt (= 9.1.0) 707 | - glog 708 | - RCT-Folly/Fabric (= 2024.01.01.00) 709 | - RCTRequired 710 | - RCTTypeSafety 711 | - React-Core 712 | - React-cxxreact 713 | - React-debug 714 | - React-featureflags 715 | - React-graphics 716 | - React-jsc 717 | - React-jsi 718 | - React-jsiexecutor 719 | - React-logger 720 | - React-rendererdebug 721 | - React-runtimescheduler 722 | - React-utils 723 | - ReactCommon/turbomodule/core 724 | - React-Fabric/templateprocessor (0.75.3): 725 | - DoubleConversion 726 | - fmt (= 9.1.0) 727 | - glog 728 | - RCT-Folly/Fabric (= 2024.01.01.00) 729 | - RCTRequired 730 | - RCTTypeSafety 731 | - React-Core 732 | - React-cxxreact 733 | - React-debug 734 | - React-featureflags 735 | - React-graphics 736 | - React-jsc 737 | - React-jsi 738 | - React-jsiexecutor 739 | - React-logger 740 | - React-rendererdebug 741 | - React-runtimescheduler 742 | - React-utils 743 | - ReactCommon/turbomodule/core 744 | - React-Fabric/uimanager (0.75.3): 745 | - DoubleConversion 746 | - fmt (= 9.1.0) 747 | - glog 748 | - RCT-Folly/Fabric (= 2024.01.01.00) 749 | - RCTRequired 750 | - RCTTypeSafety 751 | - React-Core 752 | - React-cxxreact 753 | - React-debug 754 | - React-Fabric/uimanager/consistency (= 0.75.3) 755 | - React-featureflags 756 | - React-graphics 757 | - React-jsc 758 | - React-jsi 759 | - React-jsiexecutor 760 | - React-logger 761 | - React-rendererconsistency 762 | - React-rendererdebug 763 | - React-runtimescheduler 764 | - React-utils 765 | - ReactCommon/turbomodule/core 766 | - React-Fabric/uimanager/consistency (0.75.3): 767 | - DoubleConversion 768 | - fmt (= 9.1.0) 769 | - glog 770 | - RCT-Folly/Fabric (= 2024.01.01.00) 771 | - RCTRequired 772 | - RCTTypeSafety 773 | - React-Core 774 | - React-cxxreact 775 | - React-debug 776 | - React-featureflags 777 | - React-graphics 778 | - React-jsc 779 | - React-jsi 780 | - React-jsiexecutor 781 | - React-logger 782 | - React-rendererconsistency 783 | - React-rendererdebug 784 | - React-runtimescheduler 785 | - React-utils 786 | - ReactCommon/turbomodule/core 787 | - React-FabricComponents (0.75.3): 788 | - DoubleConversion 789 | - fmt (= 9.1.0) 790 | - glog 791 | - RCT-Folly/Fabric (= 2024.01.01.00) 792 | - RCTRequired 793 | - RCTTypeSafety 794 | - React-Core 795 | - React-cxxreact 796 | - React-debug 797 | - React-Fabric 798 | - React-FabricComponents/components (= 0.75.3) 799 | - React-FabricComponents/textlayoutmanager (= 0.75.3) 800 | - React-featureflags 801 | - React-graphics 802 | - React-jsc 803 | - React-jsi 804 | - React-jsiexecutor 805 | - React-logger 806 | - React-rendererdebug 807 | - React-runtimescheduler 808 | - React-utils 809 | - ReactCodegen 810 | - ReactCommon/turbomodule/core 811 | - Yoga 812 | - React-FabricComponents/components (0.75.3): 813 | - DoubleConversion 814 | - fmt (= 9.1.0) 815 | - glog 816 | - RCT-Folly/Fabric (= 2024.01.01.00) 817 | - RCTRequired 818 | - RCTTypeSafety 819 | - React-Core 820 | - React-cxxreact 821 | - React-debug 822 | - React-Fabric 823 | - React-FabricComponents/components/inputaccessory (= 0.75.3) 824 | - React-FabricComponents/components/iostextinput (= 0.75.3) 825 | - React-FabricComponents/components/modal (= 0.75.3) 826 | - React-FabricComponents/components/rncore (= 0.75.3) 827 | - React-FabricComponents/components/safeareaview (= 0.75.3) 828 | - React-FabricComponents/components/scrollview (= 0.75.3) 829 | - React-FabricComponents/components/text (= 0.75.3) 830 | - React-FabricComponents/components/textinput (= 0.75.3) 831 | - React-FabricComponents/components/unimplementedview (= 0.75.3) 832 | - React-featureflags 833 | - React-graphics 834 | - React-jsc 835 | - React-jsi 836 | - React-jsiexecutor 837 | - React-logger 838 | - React-rendererdebug 839 | - React-runtimescheduler 840 | - React-utils 841 | - ReactCodegen 842 | - ReactCommon/turbomodule/core 843 | - Yoga 844 | - React-FabricComponents/components/inputaccessory (0.75.3): 845 | - DoubleConversion 846 | - fmt (= 9.1.0) 847 | - glog 848 | - RCT-Folly/Fabric (= 2024.01.01.00) 849 | - RCTRequired 850 | - RCTTypeSafety 851 | - React-Core 852 | - React-cxxreact 853 | - React-debug 854 | - React-Fabric 855 | - React-featureflags 856 | - React-graphics 857 | - React-jsc 858 | - React-jsi 859 | - React-jsiexecutor 860 | - React-logger 861 | - React-rendererdebug 862 | - React-runtimescheduler 863 | - React-utils 864 | - ReactCodegen 865 | - ReactCommon/turbomodule/core 866 | - Yoga 867 | - React-FabricComponents/components/iostextinput (0.75.3): 868 | - DoubleConversion 869 | - fmt (= 9.1.0) 870 | - glog 871 | - RCT-Folly/Fabric (= 2024.01.01.00) 872 | - RCTRequired 873 | - RCTTypeSafety 874 | - React-Core 875 | - React-cxxreact 876 | - React-debug 877 | - React-Fabric 878 | - React-featureflags 879 | - React-graphics 880 | - React-jsc 881 | - React-jsi 882 | - React-jsiexecutor 883 | - React-logger 884 | - React-rendererdebug 885 | - React-runtimescheduler 886 | - React-utils 887 | - ReactCodegen 888 | - ReactCommon/turbomodule/core 889 | - Yoga 890 | - React-FabricComponents/components/modal (0.75.3): 891 | - DoubleConversion 892 | - fmt (= 9.1.0) 893 | - glog 894 | - RCT-Folly/Fabric (= 2024.01.01.00) 895 | - RCTRequired 896 | - RCTTypeSafety 897 | - React-Core 898 | - React-cxxreact 899 | - React-debug 900 | - React-Fabric 901 | - React-featureflags 902 | - React-graphics 903 | - React-jsc 904 | - React-jsi 905 | - React-jsiexecutor 906 | - React-logger 907 | - React-rendererdebug 908 | - React-runtimescheduler 909 | - React-utils 910 | - ReactCodegen 911 | - ReactCommon/turbomodule/core 912 | - Yoga 913 | - React-FabricComponents/components/rncore (0.75.3): 914 | - DoubleConversion 915 | - fmt (= 9.1.0) 916 | - glog 917 | - RCT-Folly/Fabric (= 2024.01.01.00) 918 | - RCTRequired 919 | - RCTTypeSafety 920 | - React-Core 921 | - React-cxxreact 922 | - React-debug 923 | - React-Fabric 924 | - React-featureflags 925 | - React-graphics 926 | - React-jsc 927 | - React-jsi 928 | - React-jsiexecutor 929 | - React-logger 930 | - React-rendererdebug 931 | - React-runtimescheduler 932 | - React-utils 933 | - ReactCodegen 934 | - ReactCommon/turbomodule/core 935 | - Yoga 936 | - React-FabricComponents/components/safeareaview (0.75.3): 937 | - DoubleConversion 938 | - fmt (= 9.1.0) 939 | - glog 940 | - RCT-Folly/Fabric (= 2024.01.01.00) 941 | - RCTRequired 942 | - RCTTypeSafety 943 | - React-Core 944 | - React-cxxreact 945 | - React-debug 946 | - React-Fabric 947 | - React-featureflags 948 | - React-graphics 949 | - React-jsc 950 | - React-jsi 951 | - React-jsiexecutor 952 | - React-logger 953 | - React-rendererdebug 954 | - React-runtimescheduler 955 | - React-utils 956 | - ReactCodegen 957 | - ReactCommon/turbomodule/core 958 | - Yoga 959 | - React-FabricComponents/components/scrollview (0.75.3): 960 | - DoubleConversion 961 | - fmt (= 9.1.0) 962 | - glog 963 | - RCT-Folly/Fabric (= 2024.01.01.00) 964 | - RCTRequired 965 | - RCTTypeSafety 966 | - React-Core 967 | - React-cxxreact 968 | - React-debug 969 | - React-Fabric 970 | - React-featureflags 971 | - React-graphics 972 | - React-jsc 973 | - React-jsi 974 | - React-jsiexecutor 975 | - React-logger 976 | - React-rendererdebug 977 | - React-runtimescheduler 978 | - React-utils 979 | - ReactCodegen 980 | - ReactCommon/turbomodule/core 981 | - Yoga 982 | - React-FabricComponents/components/text (0.75.3): 983 | - DoubleConversion 984 | - fmt (= 9.1.0) 985 | - glog 986 | - RCT-Folly/Fabric (= 2024.01.01.00) 987 | - RCTRequired 988 | - RCTTypeSafety 989 | - React-Core 990 | - React-cxxreact 991 | - React-debug 992 | - React-Fabric 993 | - React-featureflags 994 | - React-graphics 995 | - React-jsc 996 | - React-jsi 997 | - React-jsiexecutor 998 | - React-logger 999 | - React-rendererdebug 1000 | - React-runtimescheduler 1001 | - React-utils 1002 | - ReactCodegen 1003 | - ReactCommon/turbomodule/core 1004 | - Yoga 1005 | - React-FabricComponents/components/textinput (0.75.3): 1006 | - DoubleConversion 1007 | - fmt (= 9.1.0) 1008 | - glog 1009 | - RCT-Folly/Fabric (= 2024.01.01.00) 1010 | - RCTRequired 1011 | - RCTTypeSafety 1012 | - React-Core 1013 | - React-cxxreact 1014 | - React-debug 1015 | - React-Fabric 1016 | - React-featureflags 1017 | - React-graphics 1018 | - React-jsc 1019 | - React-jsi 1020 | - React-jsiexecutor 1021 | - React-logger 1022 | - React-rendererdebug 1023 | - React-runtimescheduler 1024 | - React-utils 1025 | - ReactCodegen 1026 | - ReactCommon/turbomodule/core 1027 | - Yoga 1028 | - React-FabricComponents/components/unimplementedview (0.75.3): 1029 | - DoubleConversion 1030 | - fmt (= 9.1.0) 1031 | - glog 1032 | - RCT-Folly/Fabric (= 2024.01.01.00) 1033 | - RCTRequired 1034 | - RCTTypeSafety 1035 | - React-Core 1036 | - React-cxxreact 1037 | - React-debug 1038 | - React-Fabric 1039 | - React-featureflags 1040 | - React-graphics 1041 | - React-jsc 1042 | - React-jsi 1043 | - React-jsiexecutor 1044 | - React-logger 1045 | - React-rendererdebug 1046 | - React-runtimescheduler 1047 | - React-utils 1048 | - ReactCodegen 1049 | - ReactCommon/turbomodule/core 1050 | - Yoga 1051 | - React-FabricComponents/textlayoutmanager (0.75.3): 1052 | - DoubleConversion 1053 | - fmt (= 9.1.0) 1054 | - glog 1055 | - RCT-Folly/Fabric (= 2024.01.01.00) 1056 | - RCTRequired 1057 | - RCTTypeSafety 1058 | - React-Core 1059 | - React-cxxreact 1060 | - React-debug 1061 | - React-Fabric 1062 | - React-featureflags 1063 | - React-graphics 1064 | - React-jsc 1065 | - React-jsi 1066 | - React-jsiexecutor 1067 | - React-logger 1068 | - React-rendererdebug 1069 | - React-runtimescheduler 1070 | - React-utils 1071 | - ReactCodegen 1072 | - ReactCommon/turbomodule/core 1073 | - Yoga 1074 | - React-FabricImage (0.75.3): 1075 | - DoubleConversion 1076 | - fmt (= 9.1.0) 1077 | - glog 1078 | - RCT-Folly/Fabric (= 2024.01.01.00) 1079 | - RCTRequired (= 0.75.3) 1080 | - RCTTypeSafety (= 0.75.3) 1081 | - React-Fabric 1082 | - React-graphics 1083 | - React-ImageManager 1084 | - React-jsc 1085 | - React-jsi 1086 | - React-jsiexecutor (= 0.75.3) 1087 | - React-logger 1088 | - React-rendererdebug 1089 | - React-utils 1090 | - ReactCommon 1091 | - Yoga 1092 | - React-featureflags (0.75.3) 1093 | - React-featureflagsnativemodule (0.75.3): 1094 | - DoubleConversion 1095 | - glog 1096 | - RCT-Folly (= 2024.01.01.00) 1097 | - RCTRequired 1098 | - RCTTypeSafety 1099 | - React-Core 1100 | - React-debug 1101 | - React-Fabric 1102 | - React-featureflags 1103 | - React-graphics 1104 | - React-ImageManager 1105 | - React-jsi 1106 | - React-NativeModulesApple 1107 | - React-RCTFabric 1108 | - React-rendererdebug 1109 | - React-utils 1110 | - ReactCodegen 1111 | - ReactCommon/turbomodule/bridging 1112 | - ReactCommon/turbomodule/core 1113 | - Yoga 1114 | - React-graphics (0.75.3): 1115 | - DoubleConversion 1116 | - fmt (= 9.1.0) 1117 | - glog 1118 | - RCT-Folly/Fabric (= 2024.01.01.00) 1119 | - React-jsi 1120 | - React-jsiexecutor 1121 | - React-utils 1122 | - React-idlecallbacksnativemodule (0.75.3): 1123 | - DoubleConversion 1124 | - glog 1125 | - RCT-Folly (= 2024.01.01.00) 1126 | - RCTRequired 1127 | - RCTTypeSafety 1128 | - React-Core 1129 | - React-debug 1130 | - React-Fabric 1131 | - React-featureflags 1132 | - React-graphics 1133 | - React-ImageManager 1134 | - React-jsi 1135 | - React-NativeModulesApple 1136 | - React-RCTFabric 1137 | - React-rendererdebug 1138 | - React-runtimescheduler 1139 | - React-utils 1140 | - ReactCodegen 1141 | - ReactCommon/turbomodule/bridging 1142 | - ReactCommon/turbomodule/core 1143 | - Yoga 1144 | - React-ImageManager (0.75.3): 1145 | - glog 1146 | - RCT-Folly/Fabric 1147 | - React-Core/Default 1148 | - React-debug 1149 | - React-Fabric 1150 | - React-graphics 1151 | - React-rendererdebug 1152 | - React-utils 1153 | - React-jsc (0.75.3): 1154 | - React-jsc/Fabric (= 0.75.3) 1155 | - React-jsi (= 0.75.3) 1156 | - React-jsc/Fabric (0.75.3): 1157 | - React-jsi (= 0.75.3) 1158 | - React-jserrorhandler (0.75.3): 1159 | - RCT-Folly/Fabric (= 2024.01.01.00) 1160 | - React-debug 1161 | - React-jsi 1162 | - React-jsi (0.75.3): 1163 | - boost 1164 | - DoubleConversion 1165 | - fmt (= 9.1.0) 1166 | - glog 1167 | - RCT-Folly (= 2024.01.01.00) 1168 | - React-jsiexecutor (0.75.3): 1169 | - DoubleConversion 1170 | - fmt (= 9.1.0) 1171 | - glog 1172 | - RCT-Folly (= 2024.01.01.00) 1173 | - React-cxxreact (= 0.75.3) 1174 | - React-jsi (= 0.75.3) 1175 | - React-jsinspector 1176 | - React-perflogger (= 0.75.3) 1177 | - React-jsinspector (0.75.3): 1178 | - DoubleConversion 1179 | - glog 1180 | - RCT-Folly (= 2024.01.01.00) 1181 | - React-featureflags 1182 | - React-jsi 1183 | - React-runtimeexecutor (= 0.75.3) 1184 | - React-jsitracing (0.75.3): 1185 | - React-jsi 1186 | - React-logger (0.75.3): 1187 | - glog 1188 | - React-Mapbuffer (0.75.3): 1189 | - glog 1190 | - React-debug 1191 | - React-microtasksnativemodule (0.75.3): 1192 | - DoubleConversion 1193 | - glog 1194 | - RCT-Folly (= 2024.01.01.00) 1195 | - RCTRequired 1196 | - RCTTypeSafety 1197 | - React-Core 1198 | - React-debug 1199 | - React-Fabric 1200 | - React-featureflags 1201 | - React-graphics 1202 | - React-ImageManager 1203 | - React-jsi 1204 | - React-NativeModulesApple 1205 | - React-RCTFabric 1206 | - React-rendererdebug 1207 | - React-utils 1208 | - ReactCodegen 1209 | - ReactCommon/turbomodule/bridging 1210 | - ReactCommon/turbomodule/core 1211 | - Yoga 1212 | - React-nativeconfig (0.75.3) 1213 | - React-NativeModulesApple (0.75.3): 1214 | - glog 1215 | - React-callinvoker 1216 | - React-Core 1217 | - React-cxxreact 1218 | - React-jsc 1219 | - React-jsi 1220 | - React-jsinspector 1221 | - React-runtimeexecutor 1222 | - ReactCommon/turbomodule/bridging 1223 | - ReactCommon/turbomodule/core 1224 | - React-perflogger (0.75.3) 1225 | - React-performancetimeline (0.75.3): 1226 | - RCT-Folly (= 2024.01.01.00) 1227 | - React-cxxreact 1228 | - React-RCTActionSheet (0.75.3): 1229 | - React-Core/RCTActionSheetHeaders (= 0.75.3) 1230 | - React-RCTAnimation (0.75.3): 1231 | - RCT-Folly (= 2024.01.01.00) 1232 | - RCTTypeSafety 1233 | - React-Core/RCTAnimationHeaders 1234 | - React-jsi 1235 | - React-NativeModulesApple 1236 | - ReactCodegen 1237 | - ReactCommon 1238 | - React-RCTAppDelegate (0.75.3): 1239 | - RCT-Folly (= 2024.01.01.00) 1240 | - RCTRequired 1241 | - RCTTypeSafety 1242 | - React-Core 1243 | - React-CoreModules 1244 | - React-debug 1245 | - React-defaultsnativemodule 1246 | - React-Fabric 1247 | - React-featureflags 1248 | - React-graphics 1249 | - React-jsc 1250 | - React-nativeconfig 1251 | - React-NativeModulesApple 1252 | - React-RCTFabric 1253 | - React-RCTImage 1254 | - React-RCTNetwork 1255 | - React-rendererdebug 1256 | - React-RuntimeApple 1257 | - React-RuntimeCore 1258 | - React-runtimescheduler 1259 | - React-utils 1260 | - ReactCodegen 1261 | - ReactCommon 1262 | - React-RCTBlob (0.75.3): 1263 | - DoubleConversion 1264 | - fmt (= 9.1.0) 1265 | - RCT-Folly (= 2024.01.01.00) 1266 | - React-Core/RCTBlobHeaders 1267 | - React-Core/RCTWebSocket 1268 | - React-jsi 1269 | - React-jsinspector 1270 | - React-NativeModulesApple 1271 | - React-RCTNetwork 1272 | - ReactCodegen 1273 | - ReactCommon 1274 | - React-RCTFabric (0.75.3): 1275 | - glog 1276 | - RCT-Folly/Fabric (= 2024.01.01.00) 1277 | - React-Core 1278 | - React-debug 1279 | - React-Fabric 1280 | - React-FabricComponents 1281 | - React-FabricImage 1282 | - React-featureflags 1283 | - React-graphics 1284 | - React-ImageManager 1285 | - React-jsc 1286 | - React-jsi 1287 | - React-jsinspector 1288 | - React-nativeconfig 1289 | - React-performancetimeline 1290 | - React-RCTImage 1291 | - React-RCTText 1292 | - React-rendererconsistency 1293 | - React-rendererdebug 1294 | - React-runtimescheduler 1295 | - React-utils 1296 | - Yoga 1297 | - React-RCTImage (0.75.3): 1298 | - RCT-Folly (= 2024.01.01.00) 1299 | - RCTTypeSafety 1300 | - React-Core/RCTImageHeaders 1301 | - React-jsi 1302 | - React-NativeModulesApple 1303 | - React-RCTNetwork 1304 | - ReactCodegen 1305 | - ReactCommon 1306 | - React-RCTLinking (0.75.3): 1307 | - React-Core/RCTLinkingHeaders (= 0.75.3) 1308 | - React-jsi (= 0.75.3) 1309 | - React-NativeModulesApple 1310 | - ReactCodegen 1311 | - ReactCommon 1312 | - ReactCommon/turbomodule/core (= 0.75.3) 1313 | - React-RCTNetwork (0.75.3): 1314 | - RCT-Folly (= 2024.01.01.00) 1315 | - RCTTypeSafety 1316 | - React-Core/RCTNetworkHeaders 1317 | - React-jsi 1318 | - React-NativeModulesApple 1319 | - ReactCodegen 1320 | - ReactCommon 1321 | - React-RCTSettings (0.75.3): 1322 | - RCT-Folly (= 2024.01.01.00) 1323 | - RCTTypeSafety 1324 | - React-Core/RCTSettingsHeaders 1325 | - React-jsi 1326 | - React-NativeModulesApple 1327 | - ReactCodegen 1328 | - ReactCommon 1329 | - React-RCTText (0.75.3): 1330 | - React-Core/RCTTextHeaders (= 0.75.3) 1331 | - Yoga 1332 | - React-RCTVibration (0.75.3): 1333 | - RCT-Folly (= 2024.01.01.00) 1334 | - React-Core/RCTVibrationHeaders 1335 | - React-jsi 1336 | - React-NativeModulesApple 1337 | - ReactCodegen 1338 | - ReactCommon 1339 | - React-rendererconsistency (0.75.3) 1340 | - React-rendererdebug (0.75.3): 1341 | - DoubleConversion 1342 | - fmt (= 9.1.0) 1343 | - RCT-Folly (= 2024.01.01.00) 1344 | - React-debug 1345 | - React-rncore (0.75.3) 1346 | - React-RuntimeApple (0.75.3): 1347 | - RCT-Folly/Fabric (= 2024.01.01.00) 1348 | - React-callinvoker 1349 | - React-Core/Default 1350 | - React-CoreModules 1351 | - React-cxxreact 1352 | - React-jsc 1353 | - React-jserrorhandler 1354 | - React-jsi 1355 | - React-jsiexecutor 1356 | - React-jsinspector 1357 | - React-Mapbuffer 1358 | - React-NativeModulesApple 1359 | - React-RCTFabric 1360 | - React-RuntimeCore 1361 | - React-runtimeexecutor 1362 | - React-runtimescheduler 1363 | - React-utils 1364 | - React-RuntimeCore (0.75.3): 1365 | - glog 1366 | - RCT-Folly/Fabric (= 2024.01.01.00) 1367 | - React-cxxreact 1368 | - React-featureflags 1369 | - React-jsc 1370 | - React-jserrorhandler 1371 | - React-jsi 1372 | - React-jsiexecutor 1373 | - React-jsinspector 1374 | - React-runtimeexecutor 1375 | - React-runtimescheduler 1376 | - React-utils 1377 | - React-runtimeexecutor (0.75.3): 1378 | - React-jsi (= 0.75.3) 1379 | - React-runtimescheduler (0.75.3): 1380 | - glog 1381 | - RCT-Folly (= 2024.01.01.00) 1382 | - React-callinvoker 1383 | - React-cxxreact 1384 | - React-debug 1385 | - React-featureflags 1386 | - React-jsc 1387 | - React-jsi 1388 | - React-rendererconsistency 1389 | - React-rendererdebug 1390 | - React-runtimeexecutor 1391 | - React-utils 1392 | - React-utils (0.75.3): 1393 | - glog 1394 | - RCT-Folly (= 2024.01.01.00) 1395 | - React-debug 1396 | - React-jsc 1397 | - React-jsi (= 0.75.3) 1398 | - ReactCodegen (0.75.3): 1399 | - DoubleConversion 1400 | - glog 1401 | - RCT-Folly 1402 | - RCTRequired 1403 | - RCTTypeSafety 1404 | - React-Core 1405 | - React-debug 1406 | - React-Fabric 1407 | - React-FabricImage 1408 | - React-featureflags 1409 | - React-graphics 1410 | - React-jsc 1411 | - React-jsi 1412 | - React-jsiexecutor 1413 | - React-NativeModulesApple 1414 | - React-rendererdebug 1415 | - React-utils 1416 | - ReactCommon/turbomodule/bridging 1417 | - ReactCommon/turbomodule/core 1418 | - ReactCommon (0.75.3): 1419 | - ReactCommon/turbomodule (= 0.75.3) 1420 | - ReactCommon/turbomodule (0.75.3): 1421 | - DoubleConversion 1422 | - fmt (= 9.1.0) 1423 | - glog 1424 | - RCT-Folly (= 2024.01.01.00) 1425 | - React-callinvoker (= 0.75.3) 1426 | - React-cxxreact (= 0.75.3) 1427 | - React-jsi (= 0.75.3) 1428 | - React-logger (= 0.75.3) 1429 | - React-perflogger (= 0.75.3) 1430 | - ReactCommon/turbomodule/bridging (= 0.75.3) 1431 | - ReactCommon/turbomodule/core (= 0.75.3) 1432 | - ReactCommon/turbomodule/bridging (0.75.3): 1433 | - DoubleConversion 1434 | - fmt (= 9.1.0) 1435 | - glog 1436 | - RCT-Folly (= 2024.01.01.00) 1437 | - React-callinvoker (= 0.75.3) 1438 | - React-cxxreact (= 0.75.3) 1439 | - React-jsi (= 0.75.3) 1440 | - React-logger (= 0.75.3) 1441 | - React-perflogger (= 0.75.3) 1442 | - ReactCommon/turbomodule/core (0.75.3): 1443 | - DoubleConversion 1444 | - fmt (= 9.1.0) 1445 | - glog 1446 | - RCT-Folly (= 2024.01.01.00) 1447 | - React-callinvoker (= 0.75.3) 1448 | - React-cxxreact (= 0.75.3) 1449 | - React-debug (= 0.75.3) 1450 | - React-featureflags (= 0.75.3) 1451 | - React-jsi (= 0.75.3) 1452 | - React-logger (= 0.75.3) 1453 | - React-perflogger (= 0.75.3) 1454 | - React-utils (= 0.75.3) 1455 | - ReactNativeHost (0.5.0): 1456 | - DoubleConversion 1457 | - glog 1458 | - RCT-Folly (= 2024.01.01.00) 1459 | - RCTRequired 1460 | - RCTTypeSafety 1461 | - React-Core 1462 | - React-cxxreact 1463 | - React-debug 1464 | - React-Fabric 1465 | - React-featureflags 1466 | - React-graphics 1467 | - React-ImageManager 1468 | - React-jsi 1469 | - React-NativeModulesApple 1470 | - React-RCTAppDelegate 1471 | - React-RCTFabric 1472 | - React-rendererdebug 1473 | - React-utils 1474 | - ReactCodegen 1475 | - ReactCommon/turbomodule/bridging 1476 | - ReactCommon/turbomodule/core 1477 | - Yoga 1478 | - ReactTestApp-DevSupport (3.10.5): 1479 | - React-Core 1480 | - React-jsi 1481 | - ReactTestApp-Resources (1.0.0-dev) 1482 | - RNCMaskedView (0.3.1): 1483 | - DoubleConversion 1484 | - glog 1485 | - RCT-Folly (= 2024.01.01.00) 1486 | - RCTRequired 1487 | - RCTTypeSafety 1488 | - React-Core 1489 | - React-debug 1490 | - React-Fabric 1491 | - React-featureflags 1492 | - React-graphics 1493 | - React-ImageManager 1494 | - React-jsi 1495 | - React-NativeModulesApple 1496 | - React-RCTFabric 1497 | - React-rendererdebug 1498 | - React-utils 1499 | - ReactCodegen 1500 | - ReactCommon/turbomodule/bridging 1501 | - ReactCommon/turbomodule/core 1502 | - Yoga 1503 | - SocketRocket (0.7.0) 1504 | - Yoga (0.0.0) 1505 | 1506 | DEPENDENCIES: 1507 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 1508 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 1509 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 1510 | - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) 1511 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 1512 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1513 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1514 | - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) 1515 | - RCTRequired (from `../node_modules/react-native/Libraries/Required`) 1516 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 1517 | - React (from `../node_modules/react-native/`) 1518 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 1519 | - React-Core (from `../node_modules/react-native/`) 1520 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 1521 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 1522 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 1523 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 1524 | - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) 1525 | - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) 1526 | - React-Fabric (from `../node_modules/react-native/ReactCommon`) 1527 | - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) 1528 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`) 1529 | - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) 1530 | - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) 1531 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) 1532 | - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) 1533 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) 1534 | - React-jsc (from `../node_modules/react-native/ReactCommon/jsc`) 1535 | - React-jsc/Fabric (from `../node_modules/react-native/ReactCommon/jsc`) 1536 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) 1537 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 1538 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 1539 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) 1540 | - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) 1541 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 1542 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) 1543 | - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) 1544 | - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) 1545 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 1546 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 1547 | - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) 1548 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 1549 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 1550 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 1551 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 1552 | - React-RCTFabric (from `../node_modules/react-native/React`) 1553 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 1554 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 1555 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 1556 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 1557 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 1558 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 1559 | - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) 1560 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) 1561 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 1562 | - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) 1563 | - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) 1564 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 1565 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 1566 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 1567 | - ReactCodegen (from `build/generated/ios`) 1568 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 1569 | - "ReactNativeHost (from `../node_modules/@rnx-kit/react-native-host`)" 1570 | - ReactTestApp-DevSupport (from `../node_modules/react-native-test-app`) 1571 | - ReactTestApp-Resources (from `..`) 1572 | - "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)" 1573 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 1574 | 1575 | SPEC REPOS: 1576 | trunk: 1577 | - SocketRocket 1578 | 1579 | EXTERNAL SOURCES: 1580 | boost: 1581 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 1582 | DoubleConversion: 1583 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 1584 | FBLazyVector: 1585 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 1586 | fmt: 1587 | :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" 1588 | glog: 1589 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 1590 | RCT-Folly: 1591 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 1592 | RCTDeprecation: 1593 | :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" 1594 | RCTRequired: 1595 | :path: "../node_modules/react-native/Libraries/Required" 1596 | RCTTypeSafety: 1597 | :path: "../node_modules/react-native/Libraries/TypeSafety" 1598 | React: 1599 | :path: "../node_modules/react-native/" 1600 | React-callinvoker: 1601 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 1602 | React-Core: 1603 | :path: "../node_modules/react-native/" 1604 | React-CoreModules: 1605 | :path: "../node_modules/react-native/React/CoreModules" 1606 | React-cxxreact: 1607 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 1608 | React-debug: 1609 | :path: "../node_modules/react-native/ReactCommon/react/debug" 1610 | React-defaultsnativemodule: 1611 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" 1612 | React-domnativemodule: 1613 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" 1614 | React-Fabric: 1615 | :path: "../node_modules/react-native/ReactCommon" 1616 | React-FabricComponents: 1617 | :path: "../node_modules/react-native/ReactCommon" 1618 | React-FabricImage: 1619 | :path: "../node_modules/react-native/ReactCommon" 1620 | React-featureflags: 1621 | :path: "../node_modules/react-native/ReactCommon/react/featureflags" 1622 | React-featureflagsnativemodule: 1623 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" 1624 | React-graphics: 1625 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" 1626 | React-idlecallbacksnativemodule: 1627 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" 1628 | React-ImageManager: 1629 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" 1630 | React-jsc: 1631 | :path: "../node_modules/react-native/ReactCommon/jsc" 1632 | React-jserrorhandler: 1633 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler" 1634 | React-jsi: 1635 | :path: "../node_modules/react-native/ReactCommon/jsi" 1636 | React-jsiexecutor: 1637 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 1638 | React-jsinspector: 1639 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" 1640 | React-jsitracing: 1641 | :path: "../node_modules/react-native/ReactCommon/hermes/executor/" 1642 | React-logger: 1643 | :path: "../node_modules/react-native/ReactCommon/logger" 1644 | React-Mapbuffer: 1645 | :path: "../node_modules/react-native/ReactCommon" 1646 | React-microtasksnativemodule: 1647 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" 1648 | React-nativeconfig: 1649 | :path: "../node_modules/react-native/ReactCommon" 1650 | React-NativeModulesApple: 1651 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 1652 | React-perflogger: 1653 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 1654 | React-performancetimeline: 1655 | :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" 1656 | React-RCTActionSheet: 1657 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 1658 | React-RCTAnimation: 1659 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 1660 | React-RCTAppDelegate: 1661 | :path: "../node_modules/react-native/Libraries/AppDelegate" 1662 | React-RCTBlob: 1663 | :path: "../node_modules/react-native/Libraries/Blob" 1664 | React-RCTFabric: 1665 | :path: "../node_modules/react-native/React" 1666 | React-RCTImage: 1667 | :path: "../node_modules/react-native/Libraries/Image" 1668 | React-RCTLinking: 1669 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 1670 | React-RCTNetwork: 1671 | :path: "../node_modules/react-native/Libraries/Network" 1672 | React-RCTSettings: 1673 | :path: "../node_modules/react-native/Libraries/Settings" 1674 | React-RCTText: 1675 | :path: "../node_modules/react-native/Libraries/Text" 1676 | React-RCTVibration: 1677 | :path: "../node_modules/react-native/Libraries/Vibration" 1678 | React-rendererconsistency: 1679 | :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" 1680 | React-rendererdebug: 1681 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" 1682 | React-rncore: 1683 | :path: "../node_modules/react-native/ReactCommon" 1684 | React-RuntimeApple: 1685 | :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" 1686 | React-RuntimeCore: 1687 | :path: "../node_modules/react-native/ReactCommon/react/runtime" 1688 | React-runtimeexecutor: 1689 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 1690 | React-runtimescheduler: 1691 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 1692 | React-utils: 1693 | :path: "../node_modules/react-native/ReactCommon/react/utils" 1694 | ReactCodegen: 1695 | :path: build/generated/ios 1696 | ReactCommon: 1697 | :path: "../node_modules/react-native/ReactCommon" 1698 | ReactNativeHost: 1699 | :path: "../node_modules/@rnx-kit/react-native-host" 1700 | ReactTestApp-DevSupport: 1701 | :path: "../node_modules/react-native-test-app" 1702 | ReactTestApp-Resources: 1703 | :path: ".." 1704 | RNCMaskedView: 1705 | :path: "../node_modules/@react-native-masked-view/masked-view" 1706 | Yoga: 1707 | :path: "../node_modules/react-native/ReactCommon/yoga" 1708 | 1709 | SPEC CHECKSUMS: 1710 | boost: 4cb898d0bf20404aab1850c656dcea009429d6c1 1711 | DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 1712 | FBLazyVector: 7b438dceb9f904bd85ca3c31d64cce32a035472b 1713 | fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 1714 | glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b 1715 | RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 1716 | RCTDeprecation: 4191f6e64b72d9743f6fe1a8a16e89e868f5e9e7 1717 | RCTRequired: 9bb589570f2bb3abc6518761e3fd1ad9b7f7f06c 1718 | RCTTypeSafety: 1c1a8741c86df0a0ac1a99cf3fb0e29eedbc2c88 1719 | React: b6810a201ee11e69ae8bfd4eb4aaab86610600bf 1720 | React-callinvoker: d6c7898b63e6a2d37bc308f17c05be0ba3630b10 1721 | React-Core: bcb0b025382981724a4b9f3708c2bf9e1eab1354 1722 | React-CoreModules: 2d68c251bc4080028f2835fa47504e8f20669a21 1723 | React-cxxreact: bb0dc212b515d6dba6c6ddc4034584e148857db9 1724 | React-debug: fd0ed8ecd5f8a23c7daf5ceaca8aa722a4d083fd 1725 | React-defaultsnativemodule: 8dd41726048ad16c135e1585797de81480c161fc 1726 | React-domnativemodule: a2f6c53b4edd50da888e240ba92b038a7264e713 1727 | React-Fabric: c12ce848f72cba42fb9e97a73a7c99abc6353f23 1728 | React-FabricComponents: 7813d5575c8ea2cda0fef9be4ff9d10987cba512 1729 | React-FabricImage: c511a5d612479cb4606edf3557c071956c8735f6 1730 | React-featureflags: cf78861db9318ae29982fa8953c92d31b276c9ac 1731 | React-featureflagsnativemodule: 7ee9bb16c9b3039c78eea088bc99819827981e12 1732 | React-graphics: 7572851bca7242416b648c45d6af87d93d29281e 1733 | React-idlecallbacksnativemodule: 2369a5e611553b9d43ec56577ad76d8d6b8e2474 1734 | React-ImageManager: aedf54d34d4475c66f4c3da6b8359b95bee904e4 1735 | React-jsc: 92ac98e0e03ee54fdaa4ac3936285a4fdb166fab 1736 | React-jserrorhandler: 0c8949672a00f2a502c767350e591e3ec3d82fb3 1737 | React-jsi: 497ac6512d81055258869d1f894472ef71ae85e1 1738 | React-jsiexecutor: bcb0a26448cafc995d5c0c8c31960d53fcc93bd9 1739 | React-jsinspector: 1bcd2707dd2601987bc92cbcd56737f353cc4541 1740 | React-jsitracing: 3935b092f85bb1e53b8cf8a00f572413648af46b 1741 | React-logger: 4072f39df335ca443932e0ccece41fbeb5ca8404 1742 | React-Mapbuffer: 714f2fae68edcabfc332b754e9fbaa8cfc68fdd4 1743 | React-microtasksnativemodule: 2eb1a69d35e700f752944644c0295cf7161d06c5 1744 | React-nativeconfig: 4a9543185905fe41014c06776bf126083795aed9 1745 | React-NativeModulesApple: 651670a799672bd54469f2981d91493dda361ddf 1746 | React-perflogger: 3bbb82f18e9ac29a1a6931568e99d6305ef4403b 1747 | React-performancetimeline: d15a723422ed500f47cb271f3175abbeb217f5ba 1748 | React-RCTActionSheet: cb2b38a53d03ec22f1159c89667b86c2c490d92d 1749 | React-RCTAnimation: 6836c87c7364f471e9077fda80b7349bc674be33 1750 | React-RCTAppDelegate: 8939a29da847bc51a01264d020a58d9d5035e119 1751 | React-RCTBlob: 984c80df29f3b3e3193bfbc2768bd302c889719b 1752 | React-RCTFabric: 4bb022567aacec7417d04741cba7e7baaeec6add 1753 | React-RCTImage: 1b2c2c1716db859ffff2d7a06a30b0ec5c677fc5 1754 | React-RCTLinking: 59c07577767e705b0ab95d11e5ad74c61bf2a022 1755 | React-RCTNetwork: f9a827e7d6bc428e0d99cd1fbe0427854354b8c1 1756 | React-RCTSettings: 614252fecc24840f61590c016aca1664a52cfb0f 1757 | React-RCTText: 424549f68867265aa25969f50e7b9bf8bd70ae55 1758 | React-RCTVibration: c8d156e6cce18f00b0310db7670fa997c7cda407 1759 | React-rendererconsistency: 993f54bb0df644df2922cd87ea55238d510d992b 1760 | React-rendererdebug: 7a8cbb632b68d666ad0fc01b3f9dc1a1bcc9a9f9 1761 | React-rncore: 1df26fe0ae861c599f9f2896f45e8834ef4b85f9 1762 | React-RuntimeApple: d20ee6d0cf3a361ec2e43c09d0f2778a863ce154 1763 | React-RuntimeCore: 0fd059fd563e8ea69528ebd8645b319490e449ad 1764 | React-runtimeexecutor: 9a668b94ad5d93755443311715bd57680330286a 1765 | React-runtimescheduler: 99993f1fc3d49f13a02784e339e45b36c3aae203 1766 | React-utils: b2baee839fb869f732d617b97dcfa384b4b4fdb3 1767 | ReactCodegen: f177b8fd67788c5c6ff45a39c7482c5f8d77ace6 1768 | ReactCommon: 627bd3192ef01a351e804e9709673d3741d38fec 1769 | ReactNativeHost: a3cd2bc15b6deac7439318607ce5637d8a93a117 1770 | ReactTestApp-DevSupport: 946bdd9e86ef05a3201d4f5af3166659f39564d0 1771 | ReactTestApp-Resources: 7db90c026cccdf40cfa495705ad436ccc4d64154 1772 | RNCMaskedView: dd1bc573702918675e7dab73255a01e022e270bc 1773 | SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d 1774 | Yoga: 1354c027ab07c7736f99a3bef16172d6f1b12b47 1775 | 1776 | PODFILE CHECKSUM: aca515c940c8c6f86345286cee4c55b47e7cd094 1777 | 1778 | COCOAPODS: 1.15.2 1779 | -------------------------------------------------------------------------------- /example/metro.config.js: -------------------------------------------------------------------------------- 1 | const { makeMetroConfig } = require('@rnx-kit/metro-config'); 2 | module.exports = makeMetroConfig({ 3 | transformer: { 4 | getTransformOptions: async () => ({ 5 | transform: { 6 | experimentalImportSupport: false, 7 | inlineRequires: false, 8 | }, 9 | }), 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "masked-view-example", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "android": "react-native run-android", 7 | "build:android": "npm run mkdist && react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist/res", 8 | "build:ios": "npm run mkdist && react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist", 9 | "ios": "react-native run-ios", 10 | "lint": "eslint .", 11 | "mkdist": "node -e \"require('node:fs').mkdirSync('dist', { recursive: true, mode: 0o755 })\"", 12 | "start": "react-native start", 13 | "test": "jest" 14 | }, 15 | "dependencies": { 16 | "@react-native-masked-view/masked-view": "file:..", 17 | "react": "18.2.0", 18 | "react-native": "0.75.3" 19 | }, 20 | "devDependencies": { 21 | "@babel/core": "^7.20.0", 22 | "@babel/preset-env": "^7.20.0", 23 | "@babel/runtime": "^7.20.0", 24 | "@react-native/babel-preset": "0.74.87", 25 | "@react-native/eslint-config": "0.74.87", 26 | "@react-native/metro-config": "0.74.87", 27 | "@react-native/typescript-config": "0.74.87", 28 | "@rnx-kit/metro-config": "^2.0.0", 29 | "@tsconfig/react-native": "^3.0.0", 30 | "@types/react": "^18.2.6", 31 | "@types/react-test-renderer": "^18.0.0", 32 | "babel-jest": "^29.6.3", 33 | "eslint": "^8.19.0", 34 | "jest": "^29.6.3", 35 | "metro-react-native-babel-preset": "0.77.0", 36 | "mkdirp": "^1.0.0", 37 | "prettier": "2.8.8", 38 | "react-native-test-app": "^3.10.5", 39 | "react-test-renderer": "18.2.0", 40 | "typescript": "5.0.4" 41 | }, 42 | "engines": { 43 | "node": ">=18" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /example/react-native.config.js: -------------------------------------------------------------------------------- 1 | const project = (() => { 2 | try { 3 | const { configureProjects } = require('react-native-test-app'); 4 | return configureProjects({ 5 | android: { 6 | sourceDir: 'android', 7 | }, 8 | ios: { 9 | sourceDir: 'ios', 10 | }, 11 | windows: { 12 | sourceDir: 'windows', 13 | solutionFile: 'windows/MaskedViewExample.sln', 14 | }, 15 | }); 16 | } catch (_) { 17 | return undefined; 18 | } 19 | })(); 20 | 21 | module.exports = { 22 | ...(project ? { project } : undefined), 23 | }; 24 | -------------------------------------------------------------------------------- /example/src/colors/index.js: -------------------------------------------------------------------------------- 1 | const Colors = { 2 | americanBlue: '#324376', 3 | bittersweet: '#F76C5E', 4 | black: 'black', 5 | chineseWhite: '#E1E1E1', 6 | darkChestnut: '#96645D', 7 | khaki: '#F5DD90', 8 | }; 9 | 10 | export default Colors; 11 | -------------------------------------------------------------------------------- /example/src/components/ExampleContainer.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | import MaskedView from '@react-native-masked-view/masked-view'; 4 | 5 | import Colors from '../colors'; 6 | 7 | const ExampleContainer = ({ children }) => ( 8 | 12 | Basic Mask 13 |
14 | } 15 | > 16 | {/* Shows behind the mask, you can put anything here, such as an image */} 17 | {children} 18 | 19 | ); 20 | 21 | const styles = StyleSheet.create({ 22 | maskedView: { 23 | flex: 1, 24 | }, 25 | maskElementView: { 26 | // Transparent background because mask is based off alpha channel. 27 | alignItems: 'center', 28 | backgroundColor: 'transparent', 29 | flex: 1, 30 | justifyContent: 'center', 31 | }, 32 | maskElementText: { 33 | color: Colors.black, 34 | fontSize: 60, 35 | fontWeight: 'bold', 36 | }, 37 | }); 38 | 39 | export default ExampleContainer; 40 | -------------------------------------------------------------------------------- /example/src/components/MaskedViewExample.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { StyleSheet, View } from 'react-native'; 3 | 4 | import Colors from '../colors'; 5 | import ExampleContainer from './ExampleContainer'; 6 | 7 | const MaskedViewExample = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | 18 | const styles = StyleSheet.create({ 19 | colorsView: { 20 | flex: 1, 21 | flexDirection: 'row', 22 | }, 23 | color1: { 24 | flex: 1, 25 | backgroundColor: Colors.americanBlue, 26 | }, 27 | color2: { 28 | flex: 1, 29 | backgroundColor: Colors.khaki, 30 | }, 31 | color3: { 32 | flex: 1, 33 | backgroundColor: Colors.bittersweet, 34 | }, 35 | color4: { 36 | flex: 1, 37 | backgroundColor: Colors.chineseWhite, 38 | }, 39 | }); 40 | 41 | export default MaskedViewExample; 42 | -------------------------------------------------------------------------------- /example/src/components/MaskedViewImageExample.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Image, StyleSheet } from 'react-native'; 3 | 4 | import ExampleContainer from './ExampleContainer'; 5 | 6 | const MaskedViewImageExample = () => ( 7 | 8 | 13 | 14 | ); 15 | 16 | const styles = StyleSheet.create({ 17 | image: { 18 | flex: 1, 19 | }, 20 | }); 21 | 22 | export default MaskedViewImageExample; 23 | -------------------------------------------------------------------------------- /example/src/components/MaskedViewTextExample.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | 4 | import Colors from '../colors'; 5 | import ExampleContainer from './ExampleContainer'; 6 | 7 | const Paragraph = () => ( 8 | 9 | 10 | 11 | Dear Doctor Brown, on the night that I go back in time, you will be shot 12 | by terrorists. Please take whatever precautions are necessary to prevent 13 | this terrible disaster. Your friend, Marty. Over there, on my hope 14 | chest. I've never seen purple underwear before, Calvin. They're late. My 15 | experiment worked. They're all exactly twenty-five minutes slow. Yeah, 16 | gimme a Tab. Remember, fellas, the future is in your hands. If you 17 | believe in progress, re-elect Mayor Red Thomas, progress is his middle 18 | name. Mayor Red Thomas's progress platform means more jobs, better 19 | education, bigger civic improvements, and lower taxes. On election day, 20 | cast your vote for a proven leader, re-elect Mayor Red Thomas... 21 | 22 | 23 | 24 | ); 25 | 26 | const styles = StyleSheet.create({ 27 | textView: { 28 | alignItems: 'center', 29 | flex: 1, 30 | flexDirection: 'row', 31 | justifyContent: 'center', 32 | }, 33 | text: { 34 | color: Colors.darkChestnut, 35 | fontSize: 8, 36 | fontVariant: ['small-caps'], 37 | fontWeight: 'bold', 38 | }, 39 | }); 40 | 41 | export default Paragraph; 42 | -------------------------------------------------------------------------------- /example/src/index.js: -------------------------------------------------------------------------------- 1 | export { default as MaskedViewExample } from './components/MaskedViewExample'; 2 | export { default as MaskedViewImageExample } from './components/MaskedViewImageExample'; 3 | export { default as MaskedViewTextExample } from './components/MaskedViewTextExample'; 4 | -------------------------------------------------------------------------------- /img/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/react-native-masked-view/masked-view/14df52650be2441fbf6f2a0308cc54a62e68820c/img/example.png -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import MaskedView from './js/MaskedView'; 2 | 3 | export default MaskedView; 4 | -------------------------------------------------------------------------------- /ios/RNCMaskedView.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import 11 | 12 | @interface RNCMaskedView : RCTView 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ios/RNCMaskedView.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "RNCMaskedView.h" 9 | 10 | #import 11 | 12 | @implementation RNCMaskedView 13 | 14 | - (void)didUpdateReactSubviews 15 | { 16 | // RNCMaskedView expects that the first subview rendered is the mask. 17 | UIView *maskView = [self.reactSubviews firstObject]; 18 | self.maskView = maskView; 19 | 20 | // Add the other subviews to the view hierarchy 21 | for (NSUInteger i = 1; i < self.reactSubviews.count; i++) { 22 | UIView *subview = [self.reactSubviews objectAtIndex:i]; 23 | [self addSubview:subview]; 24 | } 25 | } 26 | 27 | - (void)displayLayer:(CALayer *)layer 28 | { 29 | // RCTView uses displayLayer to do border rendering. 30 | // We don't need to do that in RNCMaskedView, so we 31 | // stub this method and override the default implementation. 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /ios/RNCMaskedView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2150303C220DFE9200FC1971 /* RNCMaskedViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2150303B220DFE9200FC1971 /* RNCMaskedViewManager.m */; }; 11 | B3E7B58A1CC2AC0600A0062D /* RNCMaskedView.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNCMaskedView.m */; }; 12 | /* End PBXBuildFile section */ 13 | 14 | /* Begin PBXCopyFilesBuildPhase section */ 15 | 58B511D91A9E6C8500147676 /* CopyFiles */ = { 16 | isa = PBXCopyFilesBuildPhase; 17 | buildActionMask = 2147483647; 18 | dstPath = "include/$(PRODUCT_NAME)"; 19 | dstSubfolderSpec = 16; 20 | files = ( 21 | ); 22 | runOnlyForDeploymentPostprocessing = 0; 23 | }; 24 | /* End PBXCopyFilesBuildPhase section */ 25 | 26 | /* Begin PBXFileReference section */ 27 | 134814201AA4EA6300B7C361 /* libRNCMaskedView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNCMaskedView.a; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 2150303A220DFE9200FC1971 /* RNCMaskedViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCMaskedViewManager.h; sourceTree = ""; }; 29 | 2150303B220DFE9200FC1971 /* RNCMaskedViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCMaskedViewManager.m; sourceTree = ""; }; 30 | B3E7B5881CC2AC0600A0062D /* RNCMaskedView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNCMaskedView.h; sourceTree = ""; }; 31 | B3E7B5891CC2AC0600A0062D /* RNCMaskedView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNCMaskedView.m; sourceTree = ""; }; 32 | /* End PBXFileReference section */ 33 | 34 | /* Begin PBXFrameworksBuildPhase section */ 35 | 58B511D81A9E6C8500147676 /* Frameworks */ = { 36 | isa = PBXFrameworksBuildPhase; 37 | buildActionMask = 2147483647; 38 | files = ( 39 | ); 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXFrameworksBuildPhase section */ 43 | 44 | /* Begin PBXGroup section */ 45 | 134814211AA4EA7D00B7C361 /* Products */ = { 46 | isa = PBXGroup; 47 | children = ( 48 | 134814201AA4EA6300B7C361 /* libRNCMaskedView.a */, 49 | ); 50 | name = Products; 51 | sourceTree = ""; 52 | }; 53 | 58B511D21A9E6C8500147676 = { 54 | isa = PBXGroup; 55 | children = ( 56 | B3E7B5881CC2AC0600A0062D /* RNCMaskedView.h */, 57 | 2150303A220DFE9200FC1971 /* RNCMaskedViewManager.h */, 58 | 2150303B220DFE9200FC1971 /* RNCMaskedViewManager.m */, 59 | B3E7B5891CC2AC0600A0062D /* RNCMaskedView.m */, 60 | 134814211AA4EA7D00B7C361 /* Products */, 61 | ); 62 | sourceTree = ""; 63 | }; 64 | /* End PBXGroup section */ 65 | 66 | /* Begin PBXNativeTarget section */ 67 | 58B511DA1A9E6C8500147676 /* RNCMaskedView */ = { 68 | isa = PBXNativeTarget; 69 | buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCMaskedView" */; 70 | buildPhases = ( 71 | 58B511D71A9E6C8500147676 /* Sources */, 72 | 58B511D81A9E6C8500147676 /* Frameworks */, 73 | 58B511D91A9E6C8500147676 /* CopyFiles */, 74 | ); 75 | buildRules = ( 76 | ); 77 | dependencies = ( 78 | ); 79 | name = RNCMaskedView; 80 | productName = RCTDataManager; 81 | productReference = 134814201AA4EA6300B7C361 /* libRNCMaskedView.a */; 82 | productType = "com.apple.product-type.library.static"; 83 | }; 84 | /* End PBXNativeTarget section */ 85 | 86 | /* Begin PBXProject section */ 87 | 58B511D31A9E6C8500147676 /* Project object */ = { 88 | isa = PBXProject; 89 | attributes = { 90 | LastUpgradeCheck = 0830; 91 | ORGANIZATIONNAME = Facebook; 92 | TargetAttributes = { 93 | 58B511DA1A9E6C8500147676 = { 94 | CreatedOnToolsVersion = 6.1.1; 95 | }; 96 | }; 97 | }; 98 | buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNCMaskedView" */; 99 | compatibilityVersion = "Xcode 3.2"; 100 | developmentRegion = English; 101 | hasScannedForEncodings = 0; 102 | knownRegions = ( 103 | en, 104 | ); 105 | mainGroup = 58B511D21A9E6C8500147676; 106 | productRefGroup = 58B511D21A9E6C8500147676; 107 | projectDirPath = ""; 108 | projectRoot = ""; 109 | targets = ( 110 | 58B511DA1A9E6C8500147676 /* RNCMaskedView */, 111 | ); 112 | }; 113 | /* End PBXProject section */ 114 | 115 | /* Begin PBXSourcesBuildPhase section */ 116 | 58B511D71A9E6C8500147676 /* Sources */ = { 117 | isa = PBXSourcesBuildPhase; 118 | buildActionMask = 2147483647; 119 | files = ( 120 | B3E7B58A1CC2AC0600A0062D /* RNCMaskedView.m in Sources */, 121 | 2150303C220DFE9200FC1971 /* RNCMaskedViewManager.m in Sources */, 122 | ); 123 | runOnlyForDeploymentPostprocessing = 0; 124 | }; 125 | /* End PBXSourcesBuildPhase section */ 126 | 127 | /* Begin XCBuildConfiguration section */ 128 | 58B511ED1A9E6C8500147676 /* Debug */ = { 129 | isa = XCBuildConfiguration; 130 | buildSettings = { 131 | ALWAYS_SEARCH_USER_PATHS = NO; 132 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 133 | CLANG_CXX_LIBRARY = "libc++"; 134 | CLANG_ENABLE_MODULES = YES; 135 | CLANG_ENABLE_OBJC_ARC = YES; 136 | CLANG_WARN_BOOL_CONVERSION = YES; 137 | CLANG_WARN_CONSTANT_CONVERSION = YES; 138 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 139 | CLANG_WARN_EMPTY_BODY = YES; 140 | CLANG_WARN_ENUM_CONVERSION = YES; 141 | CLANG_WARN_INFINITE_RECURSION = YES; 142 | CLANG_WARN_INT_CONVERSION = YES; 143 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 144 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 145 | CLANG_WARN_UNREACHABLE_CODE = YES; 146 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 147 | COPY_PHASE_STRIP = NO; 148 | ENABLE_STRICT_OBJC_MSGSEND = YES; 149 | ENABLE_TESTABILITY = YES; 150 | GCC_C_LANGUAGE_STANDARD = gnu99; 151 | GCC_DYNAMIC_NO_PIC = NO; 152 | GCC_NO_COMMON_BLOCKS = YES; 153 | GCC_OPTIMIZATION_LEVEL = 0; 154 | GCC_PREPROCESSOR_DEFINITIONS = ( 155 | "DEBUG=1", 156 | "$(inherited)", 157 | ); 158 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 159 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 160 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 161 | GCC_WARN_UNDECLARED_SELECTOR = YES; 162 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 163 | GCC_WARN_UNUSED_FUNCTION = YES; 164 | GCC_WARN_UNUSED_VARIABLE = YES; 165 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 166 | MTL_ENABLE_DEBUG_INFO = YES; 167 | ONLY_ACTIVE_ARCH = YES; 168 | SDKROOT = iphoneos; 169 | }; 170 | name = Debug; 171 | }; 172 | 58B511EE1A9E6C8500147676 /* Release */ = { 173 | isa = XCBuildConfiguration; 174 | buildSettings = { 175 | ALWAYS_SEARCH_USER_PATHS = NO; 176 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 177 | CLANG_CXX_LIBRARY = "libc++"; 178 | CLANG_ENABLE_MODULES = YES; 179 | CLANG_ENABLE_OBJC_ARC = YES; 180 | CLANG_WARN_BOOL_CONVERSION = YES; 181 | CLANG_WARN_CONSTANT_CONVERSION = YES; 182 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 183 | CLANG_WARN_EMPTY_BODY = YES; 184 | CLANG_WARN_ENUM_CONVERSION = YES; 185 | CLANG_WARN_INFINITE_RECURSION = YES; 186 | CLANG_WARN_INT_CONVERSION = YES; 187 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 188 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 189 | CLANG_WARN_UNREACHABLE_CODE = YES; 190 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 191 | COPY_PHASE_STRIP = YES; 192 | ENABLE_NS_ASSERTIONS = NO; 193 | ENABLE_STRICT_OBJC_MSGSEND = YES; 194 | GCC_C_LANGUAGE_STANDARD = gnu99; 195 | GCC_NO_COMMON_BLOCKS = YES; 196 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 197 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 198 | GCC_WARN_UNDECLARED_SELECTOR = YES; 199 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 200 | GCC_WARN_UNUSED_FUNCTION = YES; 201 | GCC_WARN_UNUSED_VARIABLE = YES; 202 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 203 | MTL_ENABLE_DEBUG_INFO = NO; 204 | SDKROOT = iphoneos; 205 | VALIDATE_PRODUCT = YES; 206 | }; 207 | name = Release; 208 | }; 209 | 58B511F01A9E6C8500147676 /* Debug */ = { 210 | isa = XCBuildConfiguration; 211 | buildSettings = { 212 | HEADER_SEARCH_PATHS = ( 213 | "$(inherited)", 214 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 215 | "$(SRCROOT)/../../../React/**", 216 | "$(SRCROOT)/../../react-native/React/**", 217 | ); 218 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 219 | OTHER_LDFLAGS = "-ObjC"; 220 | PRODUCT_NAME = RNCMaskedView; 221 | SKIP_INSTALL = YES; 222 | }; 223 | name = Debug; 224 | }; 225 | 58B511F11A9E6C8500147676 /* Release */ = { 226 | isa = XCBuildConfiguration; 227 | buildSettings = { 228 | HEADER_SEARCH_PATHS = ( 229 | "$(inherited)", 230 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 231 | "$(SRCROOT)/../../../React/**", 232 | "$(SRCROOT)/../../react-native/React/**", 233 | ); 234 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 235 | OTHER_LDFLAGS = "-ObjC"; 236 | PRODUCT_NAME = RNCMaskedView; 237 | SKIP_INSTALL = YES; 238 | }; 239 | name = Release; 240 | }; 241 | /* End XCBuildConfiguration section */ 242 | 243 | /* Begin XCConfigurationList section */ 244 | 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNCMaskedView" */ = { 245 | isa = XCConfigurationList; 246 | buildConfigurations = ( 247 | 58B511ED1A9E6C8500147676 /* Debug */, 248 | 58B511EE1A9E6C8500147676 /* Release */, 249 | ); 250 | defaultConfigurationIsVisible = 0; 251 | defaultConfigurationName = Release; 252 | }; 253 | 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCMaskedView" */ = { 254 | isa = XCConfigurationList; 255 | buildConfigurations = ( 256 | 58B511F01A9E6C8500147676 /* Debug */, 257 | 58B511F11A9E6C8500147676 /* Release */, 258 | ); 259 | defaultConfigurationIsVisible = 0; 260 | defaultConfigurationName = Release; 261 | }; 262 | /* End XCConfigurationList section */ 263 | }; 264 | rootObject = 58B511D31A9E6C8500147676 /* Project object */; 265 | } 266 | -------------------------------------------------------------------------------- /ios/RNCMaskedViewManager.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @interface RNCMaskedViewManager : RCTViewManager 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /ios/RNCMaskedViewManager.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "RNCMaskedViewManager.h" 9 | 10 | #import "RNCMaskedView.h" 11 | 12 | @implementation RNCMaskedViewManager 13 | 14 | RCT_EXPORT_MODULE() 15 | 16 | - (UIView *)view 17 | { 18 | return [RNCMaskedView new]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /js/MaskedView.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | * 7 | * @flow 8 | * @format 9 | */ 10 | 11 | import * as React from 'react'; 12 | import { View, StyleSheet, requireNativeComponent } from 'react-native'; 13 | 14 | const RNCMaskedView = requireNativeComponent('RNCMaskedView'); 15 | 16 | import type { MaskedViewProps } from './MaskedViewTypes'; 17 | 18 | /** 19 | * Renders the child view with a mask specified in the `maskElement` prop. 20 | * 21 | * ``` 22 | * import React from 'react'; 23 | * import { Text, View } from 'react-native'; 24 | * import MaskedView from 'react-native-masked-view'; 25 | * 26 | * class MyMaskedView extends React.Component { 27 | * render() { 28 | * return ( 29 | * 33 | * 34 | * Basic Mask 35 | * 36 | * 37 | * } 38 | * > 39 | * 40 | * 41 | * ); 42 | * } 43 | * } 44 | * ``` 45 | * 46 | * The above example will render a view with a blue background that fills its 47 | * parent, and then mask that view with text that says "Basic Mask". 48 | * 49 | * The alpha channel of the view rendered by the `maskElement` prop determines how 50 | * much of the view's content and background shows through. Fully or partially 51 | * opaque pixels allow the underlying content to show through but fully 52 | * transparent pixels block that content. 53 | * 54 | */ 55 | export default class MaskedView extends React.Component { 56 | _hasWarnedInvalidRenderMask = false; 57 | 58 | render(): React.Node { 59 | const { maskElement, children, ...otherViewProps } = this.props; 60 | 61 | if (!React.isValidElement(maskElement)) { 62 | if (!this._hasWarnedInvalidRenderMask) { 63 | console.warn( 64 | 'MaskedView: Invalid `maskElement` prop was passed to MaskedView. ' + 65 | 'Expected a React Element. No mask will render.', 66 | ); 67 | this._hasWarnedInvalidRenderMask = true; 68 | } 69 | return {children}; 70 | } 71 | 72 | return ( 73 | 74 | 75 | {maskElement} 76 | 77 | {children} 78 | 79 | ); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /js/MaskedView.web.js: -------------------------------------------------------------------------------- 1 | import React, { ReactNode, useEffect, useRef, useState } from "react"; 2 | import { View } from "react-native"; 3 | import { domToPng } from "modern-screenshot"; 4 | const MaskedView = ({ 5 | children, 6 | maskElement, 7 | style, 8 | ...rest 9 | }) => { 10 | const maskRef = useRef(null); 11 | const [mask, setMask] = useState(""); 12 | const snapShot = () => { 13 | if (!maskRef.current) return; 14 | domToPng(maskRef.current).then((dataUrl) => { 15 | setMask(dataUrl); 16 | }); 17 | }; 18 | useEffect(() => { 19 | const observer = new ResizeObserver(snapShot); 20 | observer.observe(maskRef.current!); 21 | return () => { 22 | observer.disconnect(); 23 | }; 24 | }, [maskElement]); 25 | 26 | return ( 27 | <> 28 | 34 |
{maskElement}
35 |
36 | 37 | 47 | {children} 48 | 49 | 50 | ); 51 | }; 52 | 53 | export default MaskedView; 54 | -------------------------------------------------------------------------------- /js/MaskedViewTypes.js: -------------------------------------------------------------------------------- 1 | // @flow 2 | import { type Node } from 'react'; 3 | import { type ViewProps } from 'react-native/Libraries/Components/View/ViewPropTypes'; 4 | 5 | export type MaskedViewProps = Partial & 6 | $ReadOnly<{| 7 | children: Node, 8 | /** 9 | * Should be a React element to be rendered and applied as the 10 | * mask for the child element. 11 | */ 12 | maskElement: Node, 13 | /** 14 | * Opt into software rendering to enable animated masks. 15 | */ 16 | androidRenderingMode?: 'software' | 'hardware', 17 | |}>; 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@react-native-masked-view/masked-view", 3 | "description": "React Native MaskedView component", 4 | "types": "./types/index.d.ts", 5 | "main": "index.js", 6 | "author": "Mike Nedosekin ", 7 | "license": "MIT", 8 | "version": "0.3.2", 9 | "homepage": "https://github.com/react-native-masked-view/masked-view#readme", 10 | "keywords": [ 11 | "react-native", 12 | "react native", 13 | "masked-view", 14 | "masked view" 15 | ], 16 | "scripts": { 17 | "test:flow": "flow check", 18 | "test:js": "echo 0", 19 | "test:lint": "eslint ./", 20 | "test:typescript": "tsc -noEmit", 21 | "test:prettier": "prettier --check './**/*.js'" 22 | }, 23 | "peerDependencies": { 24 | "react": ">=16", 25 | "react-native": ">=0.57" 26 | }, 27 | "files": [ 28 | "index.js", 29 | "android", 30 | "ios", 31 | "js", 32 | "types", 33 | "RNCMaskedView.podspec" 34 | ], 35 | "devDependencies": { 36 | "@react-native/eslint-config": "^0.76.1", 37 | "@types/react-native": "^0.72.8", 38 | "eslint": "8", 39 | "eslint-plugin-ft-flow": "^3.0.11", 40 | "flow-bin": "^0.246.0", 41 | "prettier": "^3.3.3", 42 | "react-native": "0.75.3", 43 | "react-native-test-app": "^3.10.5", 44 | "typescript": "5.3.2" 45 | }, 46 | "repository": { 47 | "type": "git", 48 | "url": "git+https://github.com/react-native-masked-view/masked-view.git" 49 | }, 50 | "bugs": { 51 | "url": "https://github.com/react-native-masked-view/masked-view/issues" 52 | }, 53 | "publishConfig": { 54 | "access": "public" 55 | }, 56 | "packageManager": "yarn@1.22.22+sha256.c17d3797fb9a9115bf375e31bfd30058cac6bc9c3b8807a3d8cb2094794b51ca" 57 | } 58 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | arrowParens: 'avoid', 3 | jsxBracketSameLine: false, 4 | printWidth: 80, 5 | singleQuote: true, 6 | tabWidth: 2, 7 | trailingComma: 'all', 8 | }; 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, 5 | "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, 6 | "rootDir": "src", 7 | "outDir": "dist", 8 | "lib": ["es2016"], 9 | "jsx": "react", 10 | "declaration": true, 11 | /* Strict Type-Checking Options */ 12 | "skipLibCheck": true, 13 | "strict": true /* Enable all strict type-checking options. */, 14 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 15 | }, 16 | "include": ["types"] 17 | } 18 | -------------------------------------------------------------------------------- /types/index.d.ts: -------------------------------------------------------------------------------- 1 | // CREDITS: These types are based on the original work made by all the people who contributed to @types/react-native 2 | 3 | import * as React from 'react'; 4 | import * as ReactNative from 'react-native'; 5 | 6 | type Constructor = new (...args: any[]) => T; 7 | 8 | interface MaskedViewProps extends ReactNative.ViewProps { 9 | maskElement: React.ReactElement; 10 | androidRenderingMode?: 'software' | 'hardware'; 11 | } 12 | /** 13 | * @see https://github.com/react-native-masked-view/masked-view 14 | */ 15 | declare class MaskedViewComponent extends React.Component {} 16 | declare const MaskedViewBase: Constructor< 17 | ReactNative.NativeMethods 18 | > & 19 | typeof MaskedViewComponent; 20 | export default class MaskedView extends MaskedViewBase {} 21 | --------------------------------------------------------------------------------