npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

react-native-pip-reanimated

v1.0.1

Published

PiP view for React Native via react-native-reanimated

Readme

react-native-pip-reanimated

PiP view for React Native via react-native-reanimated

Installation

npm install react-native-pip-reanimated

Usage

import { PictureInPictureView } from "react-native-pip-reanimated";

Props

  // if the view was flung with some velocity, let it glide
  minimumGlideVelocity?: number;

  // determines how much the view can glide
  deceleration?: number;

  // the initial position in which to render the view, default bottom-left
  initialPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';

  // inset the initial position by this px amount from the edge, defaults to edge's margin
  initialInsetX?: number;
  initialInsetY?: number;

  // if using dragToDestroy, set an overlay color to display when the view
  // is far enough out-of-bounds to be destroyed (optional)
  destroyOverlayColor?: string;

  // separate configuration for each edge, see below.
  edgeConfig: {
    top: EdgeConfig;
    bottom: EdgeConfig;
    left: EdgeConfig;
    right: EdgeConfig;
  }

EdgeConfig (top, bottom, left, right)

  // px from edge that the view likes to sit at
  margin: number;

  // spring params to bounce the view back into bounds with if not destroying
  spring?: WithSpringConfig;

  // prevent the view from being dragged off-screen, if destroyByDrag is not desired
  // 0.8 means 80% of the view will still be on-screen when it would otherwise be 100% off-screen
  resistance?: number;

  // enable destroying the view by flinging
  destroyByFling?: {

    // the minimum required velocity to destroy the view
    minimumVelocity: number;

    // the maximum angle (in radians oriented towards the edge) allowed to destroy the view.
    // for example, if the user flings the view at 75 degrees (in unit circle), we can prevent
    // the view from being destroyed on the right edge by lowering the maximum angle.
    // in other words: _how_ perpendicular the fling direction must be to the edge.
    maximumAngle: number;

    // once destroying has begun, fade out the view over this duration
    fadeDuration: number;

    // when animating the fling, optionally lock the animation to one axis
    lockAxis?: boolean;
  };

  // enable destroying the view by dragging off-screen
  destroyByDrag?: {

    // minimum percent of view that must be off-screen to destroy upon releasing the drag
    minimumOutOfBounds: number;

    // the velocity at which to animate the view when released
    animateVelocity: number;
  };

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT