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 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-window-wormhole

v1.0.0

Published

Extend your React App to other browser windows.

Downloads

3

Readme

react-window-wormhole

Extend your React App to other browser windows.

Demo

Usage

Install from npm

yarn add react-window-wormhole

Basic example

It's good to have router in the app if you want to use react-window-wormhole. Detailed example code is available here.

Code below is written in TypeScript.

// parent window
import { WormholeEntry } from 'react-window-wormhole'

interface PropsToTransfer {
  onAdd(val: number): void
  count: number
}

function Parent() {
  const [opened, setOpened] = useState(false)
  const [count, setCount] = useState(0)
  return (
    /* Data flows into entry of wormhole */
    <WormholeEntry<PropsToTransfer>
      {/* which path should child window */}
      path="/child"
      opened={opened}
      onClose={() => setOpened(false)}
      toTransfer={{
        onAdd(val: number) {
          setCount(c => c + val)
        },
        count,
      }}
    />
  )
}
// child window. render Child for path `/child`
import { WormholeExit } from 'react-window-wormhole'

function Child() {
  return (
    /* Exit is where data flows out */
    <WormholeExit<PropsToTransfer>>
      {props => (
        /* this `props` looks same as `toTransfer` */
        <button onClick={() => props.onAdd(1)}>{props.count}</button>
      )}
    </WormholeExit>
  )
}

API

WormholeEntry's props

| Name | Type | Description | | ---------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | path | string | The path that child window should be opened in. | | opened | boolean | Control child window to be opened or closed. | | onClose | () => void | Callback to close child window, i.e. setting opened to false. Not callback when window is closed. | | toTransfer | object | The props to pass to child window. You can pass plain object with values of transferable data and functions. You can simply take transferable data as something that can be safely handled by JSON.stringify. Arguments passed to those functions should be transferable data. | | supportReload | boolean? (defaults to false) | It's not recommended to enable this. Enabling this will prevent child window to be closed when refresh. But delays the invoke of onClose. | | reloadDuration | number? (defaults to 1000) | The duration between child window close and the invoke of onClose. It's dangerous to decrease its value. |

WormholeExit's props

| Name | Type | Description | | ---------- | ----------------- | ------------------------------------- | | children | (props) => void | Children should be a render function. |

License

MIT