UNPKG

react-native-screenshot-aware

Version:

React Native module for real-time screenshot detection on Android and iOS

85 lines (81 loc) 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useScreenshotAware = exports.default = void 0; var _react = require("react"); var _reactNative = require("react-native"); var _NativeScreenshotAware = _interopRequireDefault(require("./codegenSpec/NativeScreenshotAware")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * @fileoverview This module provides functionality to detect screenshot events in a React Native application. * It exports a hook for functional components and methods for class components to listen for screenshot events. */ const moduleEventEmitter = new _reactNative.NativeEventEmitter(_NativeScreenshotAware.default); /** * A React hook that listens for screenshot events and triggers a callback when a screenshot is taken. * * @param {() => void} callback - The function to be called when a screenshot event occurs. * * @example * ```jsx * import { useScreenshotAware } from 'react-native-screenshot-aware'; * * function MyComponent() { * useScreenshotAware(() => { * console.log('A screenshot was taken!'); * }); * * return <View>...</View>; * } * ``` */ const useScreenshotAware = callback => { (0, _react.useEffect)(() => { const subscription = moduleEventEmitter.addListener("ScreenshotAwareEvent", callback); return () => subscription.remove(); }, [callback]); }; /** * Module object for managing screenshot event listeners. * Useful for class components or non-React contexts. * * @example * ```jsx * import ScreenshotAware from 'react-native-screenshot-aware'; * * class MyComponent extends React.Component { * componentDidMount() { * this.subscription = ScreenshotAware.addListener(() => { * console.log('A screenshot was taken!'); * }); * } * * componentWillUnmount() { * this.subscription.remove(); * } * * render() { * return <View>...</View>; * } * } * ``` */ exports.useScreenshotAware = useScreenshotAware; const ScreenshotAware = { /** * Adds a listener for screenshot events. * * @param {() => void} callback - The function to be called when a screenshot event occurs. * @returns {import('react-native').EmitterSubscription} A subscription object that can be used to remove the listener. */ addListener: callback => { return moduleEventEmitter.addListener("ScreenshotAwareEvent", callback); }, /** * Removes all listeners for screenshot events. */ removeAllListeners: () => moduleEventEmitter.removeAllListeners("ScreenshotAwareEvent") }; var _default = exports.default = ScreenshotAware; //# sourceMappingURL=index.js.map