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

@max3a3/react-paperjs

v0.0.59

Published

React Fiber renderer and component container for Paper.js

Readme

React Paper.js

Stability npm Build Status codecov

Dependencies Status Dev Dependencies Status Peer Dependencies Status

React fiber renderer and component container for Paper.js.

Install

Recommended: Paper 0.12.x, React, React DOM 16.x.

npm install --save @psychobolt/react-paperjs
# or
yarn add @psychobolt/react-paperjs

Examples

There are several demos. Also check out their sources. Here is one to get you started:

import React from 'react';
import { PaperContainer, Circle, Layer } from '@psychobolt/react-paperjs'

const Shapes = () => <Circle center={[120, 50]} radius={35} fillColor="#00FF00" />;

const App = (props) => (
  <div>
    <PaperContainer {...props}>
      <Circle center={[80, 50]} radius={35} fillColor="red" />
      <Layer>
        <Shapes />
      </Layer>
    </PaperContainer>
  </div>
);

export default App;

Components

Common usage with PaperContainer and its default renderer.

PaperContainer

Provide and creates Paper Scope context. To access Paper Scope, you may use the provided HOC. All children are rendered into its canvas with PaperRenderer by default.

Props

renderer?: Renderer

The default is PaperRenderer. Alternatively, you can extend and pass in your own.

canvasProps?: {} | (paper) => ({})

Props to be passed to <canvas>. Alternatively, you can provide a function that returns new props.

viewProps?: {} | (paper) => ({})

Props to be passed to the View. Alternatively, you can provide a function that returns new props.

onMount?: (paper) => myCallback(paper)

Callback on container mount.

className?: string

Canvas element class attribute.

Paper

Refer supported Paper types. All props are passed to the type constructor.

API

PaperRenderer

Currently a synchronous but extensible implementation.

Members

defaultHostConfig: {}

The host config that is passed into React Reconciler by default. This should not be mutated. Instead, extend PaperRenderer with a getHostConfig function.

defaultTypes: { [type: string]: (props: {}, paper: Paper) => Object}

A mapping of types with their instance factory method. This should not be mutated. Instead, extend PaperRenderer with a getInstanceFactory function.

Extension Example

import React from 'React';
import { PaperContainer, PaperRenderer } from '@psychobolt/react-paperjs'

import MyCustomStencil from './MyCustomStencil';

class MyPaperRenderer extends PaperRenderer {
  getInstanceFactory() {
    return { 
      ...this.defaultTypes,
      [MyCustomStencil.TYPE_NAME]: (props, paper) => new MyCustomStencil(props),
    };
  }
}

const App = (props) => (
   <PaperContainer renderer={MyPaperRenderer}>
     <MyCustomStencil>
   </PaperContainer>
);

export default App;

The above code adds a custom Component Type to the renderer's instance factory. Then the component can be rendered inside the container.

Higher-order Components

Paper Scope

Injects Paper Scope as component prop 'paper'.

Example usage:

import React from 'react';

import { PaperScope, Circle } from '@psychobolt/react-paperjs';

export default @PaperScope class Scene {
  render() {
    const { paper } = this.props;
    return <Circle fillColor="red" radius={35} center={paper.view.center} />;
  }
}

As an alternative, you can use a helper function:

import React from 'react';

import { renderWithPaperScope, Circle } from '@psychobolt/react-paperjs';

export default class Scene {
  render() {
    return renderWithPaperScope(paper => <Circle fillColor="red" radius={35} center={paper.view.center} />);
  }
}

Extensions

If you're interested in editor components for React Paper JS, you can checkout another library that's work in progress.