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

@builder.io/plugin-bynder

v1.0.0

Published

Integrate Bynder's Compact View into Builder.io

Downloads

28

Readme

Example Bynder Plugin for Builder.io

Integrates Bynder's Universal Compact View with Builder as a custom input, using the SingleSelectFile mode, which provides asset translations and DAT. It only covers the asset selection workflow, however, and does not provide example components that consume that value (see below)

Notes

This is a starting point, not a complete integration.

  • The current output is the full Bynder file information object, the response from the CompactView's onSuccess() function. This may or may not meet your needs.
  • The plugin's main setup is configured in the plugin.ts file.
  • UI elements that handle loading the Bynder-provided Universal Compact View asset selector, and rendering the result as a preview in the ui.tsx file.
  • Simple utils in utils.ts, largely CONSTS for consistency between files.
  • Bynder's docs can be found here, and their React-specific code docs here

Using the plugin

To use the Bynder Universal Compact View widget in Builder.io you must create a custom component that leverages the BynderAsset custom input type provided by this plugin. If you're not already familiar with creating custom components in Builder.io you can read more here.

In your webapp register a custom component with an input of type BynderAsset.

// Builder.io React Gen1 SDK example
import { Builder } from '@builder.io/react'

Builder.registerComponent(
  (props) => {
    if (!props.bynderAsset?.assets[0]) {
      return 'Choose an Image' // or render a placeholder image?
    }

    // choose the asset derivative name that matches your needs
    const {url, width, height} = props.bynderAsset.assets[0].webImage
    return (
      <img
        src={url}
        width={width}
        height={height}
      />
    )
  },
  {
    name: 'BynderImage',
    image:
      'https://unpkg.com/[email protected]/icons/svg/image.svg',
    inputs: [{ 
      name: 'bynderAsset', 
      friendlyName: 'Bynder Asset',
      type: 'BynderAsset' 
    }],
  }
)

Opportunities for further improvement:

  • Provide a Bynder-specific Image component.
  • Create & implement a multi-image select handler, if valuable
  • Per-instance file-type inputs like Builder's file input component
    • This will require an improvement on Builder's side to support
    • In the meantime, extending BynderSingleSelect by creating per-asset-type pickers would be the recommendation.
  • Bynder's React NPM Package Bug:
    • Passing in the currently selected value does not appear to maintain the selection, despite passing in the assetID as defined in Bynder's docs.
    • Bynder is aware of this issue, and should be resolved with a new version of the Library.

Idea: Builder Input replacement

If completely replacing access to the Builder file input component is desired, you would need to do the following:

  • Change the name key from "BynderAsset" to "file" when calling Builder.registerEditor()
  • Ensure that the only values being saved in the onChange are the final URL of the image, matching the Builder file input type's format.
  • This could also be done as a toggle, conditionally changing the plugin's name from one to the other.
  • Alternatively, you can use the Builder menu registration to create custom menus that simply don't include the default file picker.

Plugin Development

If this plugin doesn't suit your needs and you would like to modify it for your specific use case then read on to see how you can do so! You can find general information about plugins here.

Install

git clone https://github.com/BuilderIO/builder.git
cd plugins/bynder-example
npm install

Develop

npm run start

Add the development plugin to Builder.io

From your Space Settings (click the gear Settings icon in the left menu) click the edit button next to Plugins, click the "Add Plugin" and enter the development URL for this plugin in the text field (http://localhost:1268/[email protected]/plugin-bynder) then hit save. The query parameter is necessary for Builder to know what the id of this plugin is, to identify the plugin's settings/configuration.

Now as you develop you can reload the Builder interface to see the latest version of your plugin. (Plugins are loaded once per session, a refresh is required to see any code changes)

NOTE: Loading http:// content on an https:// website may give you a warning. Be sure to click the shield in the top right of your browser and choose "load unsafe scripts" to allow the http content on Builder's https site when developing locally.

To uninstall your plugin run just go back to your Space Settings and click the edit button next to Plugins, click the X button to remove the plugin

Frameworks

Builder.io uses React and Material UI for the UI, and Emotion for styling.

Using these frameworks in Builder plugins ensures best possible experience and performance.

Publishing

If you think your plugin will benefit others in the Builder.io community you can send a pull request to this repo with your plugin, and we will review it! Otherwise, once your plugin is ready for use you can publish the package and add the link to its bundled JS in Account Settings > Plugins (enterprise only).