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.
Files changed (69) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +101 -0
  3. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeScreenshotAwareSpec.java +38 -0
  4. package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +49 -0
  5. package/android/app/build/generated/source/codegen/jni/RNScreenshotAwareSpec-generated.cpp +32 -0
  6. package/android/app/build/generated/source/codegen/jni/RNScreenshotAwareSpec.h +31 -0
  7. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI-generated.cpp +28 -0
  8. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI.h +67 -0
  9. package/android/build.gradle +90 -0
  10. package/android/generated/java/com/screenshotaware/NativeScreenshotAwareSpec.java +41 -0
  11. package/android/generated/jni/CMakeLists.txt +49 -0
  12. package/android/generated/jni/RNScreenshotAwareSpec-generated.cpp +38 -0
  13. package/android/generated/jni/RNScreenshotAwareSpec.h +31 -0
  14. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ComponentDescriptors.cpp +22 -0
  15. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ComponentDescriptors.h +24 -0
  16. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/EventEmitters.cpp +16 -0
  17. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/EventEmitters.h +17 -0
  18. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/Props.cpp +19 -0
  19. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/Props.h +18 -0
  20. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI-generated.cpp +36 -0
  21. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/RNScreenshotAwareSpecJSI.h +76 -0
  22. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ShadowNodes.cpp +17 -0
  23. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/ShadowNodes.h +23 -0
  24. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/States.cpp +16 -0
  25. package/android/generated/jni/react/renderer/components/RNScreenshotAwareSpec/States.h +19 -0
  26. package/android/gradle.properties +5 -0
  27. package/android/src/main/AndroidManifest.xml +1 -0
  28. package/android/src/main/AndroidManifestNew.xml +2 -0
  29. package/android/src/main/java/com/screenshotaware/ScreenshotAwareModule.kt +54 -0
  30. package/android/src/main/java/com/screenshotaware/ScreenshotAwarePackage.kt +34 -0
  31. package/android/src/newarch/ScreenshotAwareSpec.kt +7 -0
  32. package/android/src/oldarch/ScreenshotAwareSpec.kt +11 -0
  33. package/ios/ScreenshotAware.h +13 -0
  34. package/ios/ScreenshotAware.mm +52 -0
  35. package/ios/ScreenshotAwareImpl.h +13 -0
  36. package/ios/ScreenshotAwareImpl.mm +35 -0
  37. package/ios/generated/RNScreenshotAwareSpec/ComponentDescriptors.cpp +22 -0
  38. package/ios/generated/RNScreenshotAwareSpec/ComponentDescriptors.h +24 -0
  39. package/ios/generated/RNScreenshotAwareSpec/EventEmitters.cpp +16 -0
  40. package/ios/generated/RNScreenshotAwareSpec/EventEmitters.h +17 -0
  41. package/ios/generated/RNScreenshotAwareSpec/Props.cpp +19 -0
  42. package/ios/generated/RNScreenshotAwareSpec/Props.h +18 -0
  43. package/ios/generated/RNScreenshotAwareSpec/RCTComponentViewHelpers.h +18 -0
  44. package/ios/generated/RNScreenshotAwareSpec/RNScreenshotAwareSpec-generated.mm +36 -0
  45. package/ios/generated/RNScreenshotAwareSpec/RNScreenshotAwareSpec.h +50 -0
  46. package/ios/generated/RNScreenshotAwareSpec/ShadowNodes.cpp +17 -0
  47. package/ios/generated/RNScreenshotAwareSpec/ShadowNodes.h +23 -0
  48. package/ios/generated/RNScreenshotAwareSpec/States.cpp +16 -0
  49. package/ios/generated/RNScreenshotAwareSpec/States.h +19 -0
  50. package/ios/generated/RNScreenshotAwareSpecJSI-generated.cpp +36 -0
  51. package/ios/generated/RNScreenshotAwareSpecJSI.h +76 -0
  52. package/lib/commonjs/NativeScreenshotAware.js +9 -0
  53. package/lib/commonjs/NativeScreenshotAware.js.map +1 -0
  54. package/lib/commonjs/index.js +25 -0
  55. package/lib/commonjs/index.js.map +1 -0
  56. package/lib/commonjs/package.json +1 -0
  57. package/lib/module/NativeScreenshotAware.js +5 -0
  58. package/lib/module/NativeScreenshotAware.js.map +1 -0
  59. package/lib/module/index.js +19 -0
  60. package/lib/module/index.js.map +1 -0
  61. package/lib/module/package.json +1 -0
  62. package/lib/typescript/NativeScreenshotAware.d.ts +8 -0
  63. package/lib/typescript/NativeScreenshotAware.d.ts.map +1 -0
  64. package/lib/typescript/index.d.ts +7 -0
  65. package/lib/typescript/index.d.ts.map +1 -0
  66. package/package.json +133 -0
  67. package/react-native-screenshot-aware.podspec +23 -0
  68. package/src/NativeScreenshotAware.ts +9 -0
  69. 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 &params)
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 &params);
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,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from "react-native";
4
+ export default TurboModuleRegistry.getEnforcing("ScreenshotAware");
5
+ //# sourceMappingURL=NativeScreenshotAware.js.map
@@ -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
+ };