react-native-screenshot-aware 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +101 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeScreenshotAwareSpec.java +38 -0
- package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +49 -0
- package/android/app/build/generated/source/codegen/jni/RNScreenshotAwareSpec-generated.cpp +32 -0
- package/android/app/build/generated/source/codegen/jni/RNScreenshotAwareSpec.h +31 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI-generated.cpp +28 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI.h +67 -0
- package/android/build.gradle +90 -0
- package/android/generated/java/com/screenshotaware/NativeScreenshotAwareSpec.java +41 -0
- package/android/generated/jni/CMakeLists.txt +49 -0
- package/android/generated/jni/RNScreenshotAwareSpec-generated.cpp +38 -0
- package/android/generated/jni/RNScreenshotAwareSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ComponentDescriptors.cpp +22 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ComponentDescriptors.h +24 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/EventEmitters.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/EventEmitters.h +17 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/Props.cpp +19 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/Props.h +18 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI-generated.cpp +36 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI.h +76 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ShadowNodes.cpp +17 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ShadowNodes.h +23 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/States.h +19 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/screenshotaware/ScreenshotAwareModule.kt +54 -0
- package/android/src/main/java/com/screenshotaware/ScreenshotAwarePackage.kt +34 -0
- package/android/src/newarch/ScreenshotAwareSpec.kt +7 -0
- package/android/src/oldarch/ScreenshotAwareSpec.kt +11 -0
- package/ios/ScreenshotAware.h +13 -0
- package/ios/ScreenshotAware.mm +52 -0
- package/ios/ScreenshotAwareImpl.h +13 -0
- package/ios/ScreenshotAwareImpl.mm +35 -0
- package/ios/generated/RNScreenshotAwareSpec/ComponentDescriptors.cpp +22 -0
- package/ios/generated/RNScreenshotAwareSpec/ComponentDescriptors.h +24 -0
- package/ios/generated/RNScreenshotAwareSpec/EventEmitters.cpp +16 -0
- package/ios/generated/RNScreenshotAwareSpec/EventEmitters.h +17 -0
- package/ios/generated/RNScreenshotAwareSpec/Props.cpp +19 -0
- package/ios/generated/RNScreenshotAwareSpec/Props.h +18 -0
- package/ios/generated/RNScreenshotAwareSpec/RCTComponentViewHelpers.h +18 -0
- package/ios/generated/RNScreenshotAwareSpec/RNScreenshotAwareSpec-generated.mm +36 -0
- package/ios/generated/RNScreenshotAwareSpec/RNScreenshotAwareSpec.h +50 -0
- package/ios/generated/RNScreenshotAwareSpec/ShadowNodes.cpp +17 -0
- package/ios/generated/RNScreenshotAwareSpec/ShadowNodes.h +23 -0
- package/ios/generated/RNScreenshotAwareSpec/States.cpp +16 -0
- package/ios/generated/RNScreenshotAwareSpec/States.h +19 -0
- package/ios/generated/RNScreenshotAwareSpecJSI-generated.cpp +36 -0
- package/ios/generated/RNScreenshotAwareSpecJSI.h +76 -0
- package/lib/commonjs/NativeScreenshotAware.js +9 -0
- package/lib/commonjs/NativeScreenshotAware.js.map +1 -0
- package/lib/commonjs/index.js +25 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/NativeScreenshotAware.js +5 -0
- package/lib/module/NativeScreenshotAware.js.map +1 -0
- package/lib/module/index.js +19 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/NativeScreenshotAware.d.ts +8 -0
- package/lib/typescript/NativeScreenshotAware.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +7 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +133 -0
- package/react-native-screenshot-aware.podspec +23 -0
- package/src/NativeScreenshotAware.ts +9 -0
- package/src/index.tsx +23 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#import "RNScreenshotAwareSpec.h"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
static facebook::jsi::Value __hostFunction_NativeScreenshotAwareSpecJSI_addListener(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
20
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "addListener", @selector(addListener:), args, count);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static facebook::jsi::Value __hostFunction_NativeScreenshotAwareSpecJSI_removeListeners(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
24
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, VoidKind, "removeListeners", @selector(removeListeners:), args, count);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
NativeScreenshotAwareSpecJSI::NativeScreenshotAwareSpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
|
28
|
+
: ObjCTurboModule(params) {
|
|
29
|
+
|
|
30
|
+
methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeScreenshotAwareSpecJSI_addListener};
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeScreenshotAwareSpecJSI_removeListeners};
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef __cplusplus
|
|
15
|
+
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
// Avoid multiple includes of RNScreenshotAwareSpec symbols
|
|
19
|
+
#ifndef RNScreenshotAwareSpec_H
|
|
20
|
+
#define RNScreenshotAwareSpec_H
|
|
21
|
+
|
|
22
|
+
#import <Foundation/Foundation.h>
|
|
23
|
+
#import <RCTRequired/RCTRequired.h>
|
|
24
|
+
#import <RCTTypeSafety/RCTConvertHelpers.h>
|
|
25
|
+
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
|
|
26
|
+
#import <React/RCTBridgeModule.h>
|
|
27
|
+
#import <React/RCTCxxConvert.h>
|
|
28
|
+
#import <React/RCTManagedPointer.h>
|
|
29
|
+
#import <ReactCommon/RCTTurboModule.h>
|
|
30
|
+
#import <optional>
|
|
31
|
+
#import <vector>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@protocol NativeScreenshotAwareSpec <RCTBridgeModule, RCTTurboModule>
|
|
35
|
+
|
|
36
|
+
- (void)addListener:(NSString *)eventName;
|
|
37
|
+
- (void)removeListeners:(double)count;
|
|
38
|
+
|
|
39
|
+
@end
|
|
40
|
+
namespace facebook::react {
|
|
41
|
+
/**
|
|
42
|
+
* ObjC++ class for module 'NativeScreenshotAware'
|
|
43
|
+
*/
|
|
44
|
+
class JSI_EXPORT NativeScreenshotAwareSpecJSI : public ObjCTurboModule {
|
|
45
|
+
public:
|
|
46
|
+
NativeScreenshotAwareSpecJSI(const ObjCTurboModule::InitParams ¶ms);
|
|
47
|
+
};
|
|
48
|
+
} // namespace facebook::react
|
|
49
|
+
|
|
50
|
+
#endif // RNScreenshotAwareSpec_H
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "ShadowNodes.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "EventEmitters.h"
|
|
14
|
+
#include "Props.h"
|
|
15
|
+
#include "States.h"
|
|
16
|
+
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
17
|
+
#include <jsi/jsi.h>
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateStateCpp.js
|
|
9
|
+
*/
|
|
10
|
+
#include "States.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateStateH.js
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#ifdef ANDROID
|
|
12
|
+
#include <folly/dynamic.h>
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleCpp.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "RNScreenshotAwareSpecJSI.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
static jsi::Value __hostFunction_NativeScreenshotAwareCxxSpecJSI_addListener(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
15
|
+
static_cast<NativeScreenshotAwareCxxSpecJSI *>(&turboModule)->addListener(
|
|
16
|
+
rt,
|
|
17
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
18
|
+
);
|
|
19
|
+
return jsi::Value::undefined();
|
|
20
|
+
}
|
|
21
|
+
static jsi::Value __hostFunction_NativeScreenshotAwareCxxSpecJSI_removeListeners(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
22
|
+
static_cast<NativeScreenshotAwareCxxSpecJSI *>(&turboModule)->removeListeners(
|
|
23
|
+
rt,
|
|
24
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
|
|
25
|
+
);
|
|
26
|
+
return jsi::Value::undefined();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
NativeScreenshotAwareCxxSpecJSI::NativeScreenshotAwareCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
30
|
+
: TurboModule("ScreenshotAware", jsInvoker) {
|
|
31
|
+
methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeScreenshotAwareCxxSpecJSI_addListener};
|
|
32
|
+
methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeScreenshotAwareCxxSpecJSI_removeListeners};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleH.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <ReactCommon/TurboModule.h>
|
|
13
|
+
#include <react/bridging/Bridging.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class JSI_EXPORT NativeScreenshotAwareCxxSpecJSI : public TurboModule {
|
|
19
|
+
protected:
|
|
20
|
+
NativeScreenshotAwareCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
|
|
21
|
+
|
|
22
|
+
public:
|
|
23
|
+
virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
|
|
24
|
+
virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
|
|
25
|
+
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
template <typename T>
|
|
29
|
+
class JSI_EXPORT NativeScreenshotAwareCxxSpec : public TurboModule {
|
|
30
|
+
public:
|
|
31
|
+
jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
|
|
32
|
+
return delegate_.get(rt, propName);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static constexpr std::string_view kModuleName = "ScreenshotAware";
|
|
36
|
+
|
|
37
|
+
protected:
|
|
38
|
+
NativeScreenshotAwareCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
|
|
39
|
+
: TurboModule(std::string{NativeScreenshotAwareCxxSpec::kModuleName}, jsInvoker),
|
|
40
|
+
delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
private:
|
|
44
|
+
class Delegate : public NativeScreenshotAwareCxxSpecJSI {
|
|
45
|
+
public:
|
|
46
|
+
Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
|
|
47
|
+
NativeScreenshotAwareCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
void addListener(jsi::Runtime &rt, jsi::String eventName) override {
|
|
52
|
+
static_assert(
|
|
53
|
+
bridging::getParameterCount(&T::addListener) == 2,
|
|
54
|
+
"Expected addListener(...) to have 2 parameters");
|
|
55
|
+
|
|
56
|
+
return bridging::callFromJs<void>(
|
|
57
|
+
rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
|
|
58
|
+
}
|
|
59
|
+
void removeListeners(jsi::Runtime &rt, double count) override {
|
|
60
|
+
static_assert(
|
|
61
|
+
bridging::getParameterCount(&T::removeListeners) == 2,
|
|
62
|
+
"Expected removeListeners(...) to have 2 parameters");
|
|
63
|
+
|
|
64
|
+
return bridging::callFromJs<void>(
|
|
65
|
+
rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private:
|
|
69
|
+
friend class NativeScreenshotAwareCxxSpec;
|
|
70
|
+
T *instance_;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
Delegate delegate_;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing("ScreenshotAware");
|
|
9
|
+
//# sourceMappingURL=NativeScreenshotAware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeScreenshotAware.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAOpCC,gCAAmB,CAACC,YAAY,CAAO,iBAAiB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useScreenshotAware = exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _NativeScreenshotAware = _interopRequireDefault(require("./NativeScreenshotAware"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const moduleEventEmitter = new _reactNative.NativeEventEmitter(_NativeScreenshotAware.default);
|
|
12
|
+
const useScreenshotAware = callback => {
|
|
13
|
+
(0, _react.useEffect)(() => {
|
|
14
|
+
const subscription = moduleEventEmitter.addListener("ScreenshotEvent", callback);
|
|
15
|
+
return () => subscription.remove();
|
|
16
|
+
}, [callback]);
|
|
17
|
+
};
|
|
18
|
+
exports.useScreenshotAware = useScreenshotAware;
|
|
19
|
+
var _default = exports.default = {
|
|
20
|
+
addListener: callback => {
|
|
21
|
+
return moduleEventEmitter.addListener("ScreenshotEvent", callback);
|
|
22
|
+
},
|
|
23
|
+
removeAllListeners: () => moduleEventEmitter.removeAllListeners("ScreenshotEvent")
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_NativeScreenshotAware","_interopRequireDefault","e","__esModule","default","moduleEventEmitter","NativeEventEmitter","NativeScreenshotAware","useScreenshotAware","callback","useEffect","subscription","addListener","remove","exports","_default","removeAllListeners"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA4D,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5D,MAAMG,kBAAkB,GAAG,IAAIC,+BAAkB,CAACC,8BAAqB,CAAC;AAEjE,MAAMC,kBAAkB,GAAIC,QAAoB,IAAK;EAC1D,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,YAAY,GAAGN,kBAAkB,CAACO,WAAW,CACjD,iBAAiB,EACjBH,QACF,CAAC;IACD,OAAO,MAAME,YAAY,CAACE,MAAM,CAAC,CAAC;EACpC,CAAC,EAAE,CAACJ,QAAQ,CAAC,CAAC;AAChB,CAAC;AAACK,OAAA,CAAAN,kBAAA,GAAAA,kBAAA;AAAA,IAAAO,QAAA,GAAAD,OAAA,CAAAV,OAAA,GAEa;EACbQ,WAAW,EAAGH,QAAoB,IAAK;IACrC,OAAOJ,kBAAkB,CAACO,WAAW,CAAC,iBAAiB,EAAEH,QAAQ,CAAC;EACpE,CAAC;EACDO,kBAAkB,EAAEA,CAAA,KAClBX,kBAAkB,CAACW,kBAAkB,CAAC,iBAAiB;AAC3D,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeScreenshotAware.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAOlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,iBAAiB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
import { NativeEventEmitter } from "react-native";
|
|
5
|
+
import NativeScreenshotAware from "./NativeScreenshotAware";
|
|
6
|
+
const moduleEventEmitter = new NativeEventEmitter(NativeScreenshotAware);
|
|
7
|
+
export const useScreenshotAware = callback => {
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const subscription = moduleEventEmitter.addListener("ScreenshotEvent", callback);
|
|
10
|
+
return () => subscription.remove();
|
|
11
|
+
}, [callback]);
|
|
12
|
+
};
|
|
13
|
+
export default {
|
|
14
|
+
addListener: callback => {
|
|
15
|
+
return moduleEventEmitter.addListener("ScreenshotEvent", callback);
|
|
16
|
+
},
|
|
17
|
+
removeAllListeners: () => moduleEventEmitter.removeAllListeners("ScreenshotEvent")
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","NativeEventEmitter","NativeScreenshotAware","moduleEventEmitter","useScreenshotAware","callback","subscription","addListener","remove","removeAllListeners"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,qBAAqB,MAAM,yBAAyB;AAE3D,MAAMC,kBAAkB,GAAG,IAAIF,kBAAkB,CAACC,qBAAqB,CAAC;AAExE,OAAO,MAAME,kBAAkB,GAAIC,QAAoB,IAAK;EAC1DL,SAAS,CAAC,MAAM;IACd,MAAMM,YAAY,GAAGH,kBAAkB,CAACI,WAAW,CACjD,iBAAiB,EACjBF,QACF,CAAC;IACD,OAAO,MAAMC,YAAY,CAACE,MAAM,CAAC,CAAC;EACpC,CAAC,EAAE,CAACH,QAAQ,CAAC,CAAC;AAChB,CAAC;AAED,eAAe;EACbE,WAAW,EAAGF,QAAoB,IAAK;IACrC,OAAOF,kBAAkB,CAACI,WAAW,CAAC,iBAAiB,EAAEF,QAAQ,CAAC;EACpE,CAAC;EACDI,kBAAkB,EAAEA,CAAA,KAClBN,kBAAkB,CAACM,kBAAkB,CAAC,iBAAiB;AAC3D,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TurboModule } from "react-native";
|
|
2
|
+
export interface Spec extends TurboModule {
|
|
3
|
+
addListener(eventName: string): void;
|
|
4
|
+
removeListeners(count: number): void;
|
|
5
|
+
}
|
|
6
|
+
declare const _default: Spec;
|
|
7
|
+
export default _default;
|
|
8
|
+
//# sourceMappingURL=NativeScreenshotAware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeScreenshotAware.d.ts","sourceRoot":"","sources":["../../src/NativeScreenshotAware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAAyE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const useScreenshotAware: (callback: () => void) => void;
|
|
2
|
+
declare const _default: {
|
|
3
|
+
addListener: (callback: () => void) => import("react-native").EmitterSubscription;
|
|
4
|
+
removeAllListeners: () => void;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,aAAc,MAAM,IAAI,SAQtD,CAAC;;4BAGwB,MAAM,IAAI;;;AADpC,wBAME"}
|
package/package.json
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-native-screenshot-aware",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "React Native module for real-time screenshot detection on Android and iOS",
|
|
5
|
+
"source": "./src/index.tsx",
|
|
6
|
+
"main": "./lib/commonjs/index.js",
|
|
7
|
+
"react-native": "src/index.ts",
|
|
8
|
+
"module": "./lib/module/index.js",
|
|
9
|
+
"types": "lib/typescript/index.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"src",
|
|
12
|
+
"lib",
|
|
13
|
+
"android",
|
|
14
|
+
"ios",
|
|
15
|
+
"cpp",
|
|
16
|
+
"*.podspec",
|
|
17
|
+
"!ios/build",
|
|
18
|
+
"!android/build",
|
|
19
|
+
"!android/gradle",
|
|
20
|
+
"!android/gradlew",
|
|
21
|
+
"!android/gradlew.bat",
|
|
22
|
+
"!android/local.properties",
|
|
23
|
+
"!**/__tests__",
|
|
24
|
+
"!**/__fixtures__",
|
|
25
|
+
"!**/__mocks__",
|
|
26
|
+
"!**/.*"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"example": "yarn workspace react-native-screenshot-aware-example",
|
|
30
|
+
"test": "jest",
|
|
31
|
+
"lint": "npx biome check ./src && npx biome format ./src && yarn lint:example",
|
|
32
|
+
"lint:example": "npx biome check ./example/src && npx biome format ./example/src",
|
|
33
|
+
"lint:fix": "npx biome lint --write ./src && npx biome format --write ./src && npx biome check --write ./src && yarn lint:fix:example",
|
|
34
|
+
"lint:fix:example": "npx biome lint --write ./example/src && npx biome format --write ./example/src && npx biome check --write ./example/src",
|
|
35
|
+
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
|
|
36
|
+
"prepare": "bob build",
|
|
37
|
+
"release": "semantic-release"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"react-native",
|
|
41
|
+
"ios",
|
|
42
|
+
"android",
|
|
43
|
+
"screenshot",
|
|
44
|
+
"aware",
|
|
45
|
+
"capture",
|
|
46
|
+
"screen"
|
|
47
|
+
],
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/huextrat/react-native-screenshot-aware.git"
|
|
51
|
+
},
|
|
52
|
+
"author": "Hugo EXTRAT <extrat.h@gmail.com> (https://github.com/huextrat)",
|
|
53
|
+
"license": "MIT",
|
|
54
|
+
"bugs": {
|
|
55
|
+
"url": "https://github.com/huextrat/react-native-screenshot-aware/issues"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/huextrat/react-native-screenshot-aware#readme",
|
|
58
|
+
"publishConfig": {
|
|
59
|
+
"registry": "https://registry.npmjs.org/"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@biomejs/biome": "1.9.1",
|
|
63
|
+
"@commitlint/cli": "19.5.0",
|
|
64
|
+
"@commitlint/config-conventional": "19.5.0",
|
|
65
|
+
"@semantic-release/changelog": "6.0.3",
|
|
66
|
+
"@semantic-release/git": "10.0.1",
|
|
67
|
+
"@types/jest": "29.5.13",
|
|
68
|
+
"@types/react": "18.3.7",
|
|
69
|
+
"commitlint": "19.5.0",
|
|
70
|
+
"del-cli": "5.1.0",
|
|
71
|
+
"husky": "9.1.6",
|
|
72
|
+
"jest": "29.7.0",
|
|
73
|
+
"react": "18.3.1",
|
|
74
|
+
"react-native": "0.75.3",
|
|
75
|
+
"react-native-builder-bob": "0.30.2",
|
|
76
|
+
"semantic-release": "24.1.1",
|
|
77
|
+
"turbo": "2.1.2",
|
|
78
|
+
"typescript": "5.6.2"
|
|
79
|
+
},
|
|
80
|
+
"resolutions": {
|
|
81
|
+
"@types/react": "18.3.7"
|
|
82
|
+
},
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"react": "*",
|
|
85
|
+
"react-native": "*"
|
|
86
|
+
},
|
|
87
|
+
"workspaces": [
|
|
88
|
+
"example"
|
|
89
|
+
],
|
|
90
|
+
"packageManager": "yarn@4.5.0",
|
|
91
|
+
"jest": {
|
|
92
|
+
"preset": "react-native",
|
|
93
|
+
"modulePathIgnorePatterns": [
|
|
94
|
+
"<rootDir>/example/node_modules",
|
|
95
|
+
"<rootDir>/lib/"
|
|
96
|
+
],
|
|
97
|
+
"setupFilesAfterEnv": [
|
|
98
|
+
"<rootDir>/setupJest.ts"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"commitlint": {
|
|
102
|
+
"extends": [
|
|
103
|
+
"@commitlint/config-conventional"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"react-native-builder-bob": {
|
|
107
|
+
"source": "src",
|
|
108
|
+
"output": "lib",
|
|
109
|
+
"targets": [
|
|
110
|
+
"commonjs",
|
|
111
|
+
"module",
|
|
112
|
+
"typescript"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"codegenConfig": {
|
|
116
|
+
"name": "RNScreenshotAwareSpec",
|
|
117
|
+
"type": "all",
|
|
118
|
+
"jsSrcsDir": "src",
|
|
119
|
+
"outputDir": {
|
|
120
|
+
"ios": "ios/generated",
|
|
121
|
+
"android": "android/generated"
|
|
122
|
+
},
|
|
123
|
+
"android": {
|
|
124
|
+
"javaPackageName": "com.screenshotaware"
|
|
125
|
+
},
|
|
126
|
+
"includesGeneratedCode": true
|
|
127
|
+
},
|
|
128
|
+
"create-react-native-library": {
|
|
129
|
+
"type": "module-mixed",
|
|
130
|
+
"languages": "kotlin-objc",
|
|
131
|
+
"version": "0.41.2"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 = "react-native-screenshot-aware"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = package["description"]
|
|
9
|
+
s.homepage = package["homepage"]
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
|
|
13
|
+
s.platforms = { :ios => min_ios_version_supported }
|
|
14
|
+
s.source = { :git => "https://github.com/huextrat/react-native-screenshot-aware.git", :tag => "#{s.version}" }
|
|
15
|
+
|
|
16
|
+
s.source_files = "ios/**/*.{h,m,mm,cpp}"
|
|
17
|
+
|
|
18
|
+
if defined?(install_modules_dependencies()) != nil
|
|
19
|
+
install_modules_dependencies(s)
|
|
20
|
+
else
|
|
21
|
+
s.dependency "React-Core"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TurboModule } from "react-native";
|
|
2
|
+
import { TurboModuleRegistry } from "react-native";
|
|
3
|
+
|
|
4
|
+
export interface Spec extends TurboModule {
|
|
5
|
+
addListener(eventName: string): void;
|
|
6
|
+
removeListeners(count: number): void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export default TurboModuleRegistry.getEnforcing<Spec>("ScreenshotAware");
|
package/src/index.tsx
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { NativeEventEmitter } from "react-native";
|
|
3
|
+
import NativeScreenshotAware from "./NativeScreenshotAware";
|
|
4
|
+
|
|
5
|
+
const moduleEventEmitter = new NativeEventEmitter(NativeScreenshotAware);
|
|
6
|
+
|
|
7
|
+
export const useScreenshotAware = (callback: () => void) => {
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const subscription = moduleEventEmitter.addListener(
|
|
10
|
+
"ScreenshotEvent",
|
|
11
|
+
callback,
|
|
12
|
+
);
|
|
13
|
+
return () => subscription.remove();
|
|
14
|
+
}, [callback]);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
addListener: (callback: () => void) => {
|
|
19
|
+
return moduleEventEmitter.addListener("ScreenshotEvent", callback);
|
|
20
|
+
},
|
|
21
|
+
removeAllListeners: () =>
|
|
22
|
+
moduleEventEmitter.removeAllListeners("ScreenshotEvent"),
|
|
23
|
+
};
|