Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions RNCMaskedView.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require 'json'

package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
folly_version = '2021.06.28.00-v2'
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'

Pod::Spec.new do |s|
s.name = "RNCMaskedView"
Expand All @@ -10,10 +12,27 @@ Pod::Spec.new do |s|

s.authors = package['author']
s.homepage = package['homepage']
s.platforms = { :ios => "9.0", :tvos => "9.0" }
s.platforms = { :ios => "11.0", :tvos => "11.0" }

s.source = { :git => "https://github.com/react-native-masked-view/masked-view.git", :tag => "v#{s.version}" }
s.source_files = "ios/**/*.{h,m}"
s.source_files = "ios/**/*.{h,m,mm,swift}"

s.dependency 'React-Core'

# This guard prevent to install the dependencies when we run `pod install` in the old architecture.
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
s.pod_target_xcconfig = {
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
"OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
}

s.dependency "React-RCTFabric"
s.dependency "React-Codegen"
s.dependency "RCT-Folly", folly_version
s.dependency "RCTRequired"
s.dependency "RCTTypeSafety"
s.dependency "ReactCommon/turbomodule/core"
end
end
76 changes: 41 additions & 35 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,56 +1,62 @@
def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}

buildscript {
if (project == rootProject) {
ext.safeExtGet = {prop, fallback ->
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
repositories {
google()
mavenCentral()
google()
gradlePluginPortal()
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.2'
classpath("com.android.tools.build:gradle:7.0.4")
}
}
}

def isNewArchitectureEnabled() {
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}

apply plugin: 'com.android.library'
if (isNewArchitectureEnabled()) {
apply plugin: 'com.facebook.react'
}

android {
compileSdkVersion safeExtGet('compileSdkVersion', 28)
compileSdkVersion safeExtGet('compileSdkVersion', 31)

defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 16)
targetSdkVersion safeExtGet('targetSdkVersion', 28)
}

sourceSets {
main {
java.srcDirs = ['src/main/java']
defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 21)
targetSdkVersion safeExtGet('targetSdkVersion', 31)
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
}
}

lintOptions {
abortOnError false
warning 'InvalidPackage'
}
buildTypes {
release {

sourceSets {
main {
if (isNewArchitectureEnabled()) {
java.srcDirs += ['src/newarch']
} else {
java.srcDirs += ['src/oldarch']
}
}
}
}

repositories {
google()
maven { url "https://jitpack.io" }
mavenCentral()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$projectDir/../node_modules/react-native/android"
}
mavenCentral()
google()
}

dependencies {
implementation 'com.facebook.react:react-native:+'
implementation 'com.facebook.react:react-native:+'
}

if (isNewArchitectureEnabled()) {
react {
jsRootDir = file("../src/")
libraryName = "maskedview"
codegenJavaPackageName = "org.reactnative.maskedview"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.reactnative.maskedview;

import androidx.annotation.Nullable;
import com.facebook.react.uimanager.ThemedReactContext;

public class RNCMaskedViewManagerImpl {

public static final String NAME = "RNCMaskedView";

public static RNCMaskedView createViewInstance(ThemedReactContext context) {
return new RNCMaskedView(context);
}

public static void setAndroidRenderingMode(RNCMaskedView view, @Nullable String renderingMode) {
if (renderingMode != null) {
view.setRenderingMode(renderingMode);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public List<NativeModule> createNativeModules(ReactApplicationContext reactAppli

@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactApplicationContext) {
return Arrays.<ViewManager>asList(
new RNCMaskedViewManager()
);
List<ViewManager> viewManagers = new ArrayList<>();
viewManagers.add(new RNCMaskedViewManager(reactApplicationContext));
return viewManagers;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package org.reactnative.maskedview;

import android.view.View;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.ViewManagerDelegate;
import com.facebook.react.uimanager.ViewGroupManager;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.viewmanagers.RNCMaskedViewwManagerInterface;
import com.facebook.react.viewmanagers.RNCMaskedViewManagerDelegate;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@ReactModule(name = RNCMaskedViewManagerImpl.NAME)
public class RNCMaskedViewManager extends ViewGroupManager<RNCMaskedView>
implements RNCMaskedViewwManagerInterface<RNCMaskedView> {

ReactApplicationContext mCallerContext;
private final ViewManagerDelegate<RNCMaskedView> mDelegate;

public RNCMaskedViewManager(ReactApplicationContext reactContext) {
mDelegate = new RNCMaskedViewManagerDelegate<>(this);
}

@Nullable
@Override
protected ViewManagerDelegate<RNCMaskedView> getDelegate() {
return mDelegate;
}

@Override
public String getName() {
return RNCMaskedViewManagerImpl.NAME;
}

@Override
protected RNCMaskedView createViewInstance(@NonNull ThemedReactContext themedReactContext) {
return RNCMaskedViewManagerImpl.createViewInstance(themedReactContext);
}

@ReactProp(name = "androidRenderingMode")
public void setAndroidRenderingMode(RNCMaskedView view, @Nullable String renderingMode) {
RNCMaskedViewManagerImpl.setAndroidRenderingMode(view, renderingMode);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,19 @@
import java.util.Map;

public class RNCMaskedViewManager extends ViewGroupManager<RNCMaskedView> {
private static final String REACT_CLASS = "RNCMaskedView";

@Override
public String getName() {
return REACT_CLASS;
return RNCMaskedViewManagerImpl.NAME;
}

@Override
protected RNCMaskedView createViewInstance(ThemedReactContext themedReactContext) {
return new RNCMaskedView(themedReactContext);
return RNCMaskedViewManagerImpl.createViewInstance(themedReactContext);
}

@ReactProp(name = "androidRenderingMode")
public void setAndroidRenderingMode(RNCMaskedView view, @Nullable String renderingMode) {
if (renderingMode != null) {
view.setRenderingMode(renderingMode);
}
RNCMaskedViewManagerImpl.setAndroidRenderingMode(view, renderingMode);
}
}
}
3 changes: 0 additions & 3 deletions index.js

This file was deleted.

21 changes: 12 additions & 9 deletions ios/RNCMaskedView.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

// This guard prevent this file to be compiled in the old architecture.
#ifdef RCT_NEW_ARCH_ENABLED
#import <React/RCTViewComponentView.h>
#import <UIKit/UIKit.h>

#import <React/RCTView.h>
#ifndef NativeComponentExampleCompontView_h
#define NativeComponentExampleComponentView_h

@interface RNCMaskedView : RCTView
NS_ASSUME_NONNULL_BEGIN

@interface RNCMaskedView : RCTViewComponentView
@end

NS_ASSUME_NONNULL_END

#endif /* NativeComponentExampleComponentView_h */
#endif /* RCT_NEW_ARCH_ENABLED */
34 changes: 0 additions & 34 deletions ios/RNCMaskedView.m

This file was deleted.

Loading