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 🙏

© 2026 – Pkg Stats / Ryan Hefner

trix-tools

v0.3.2

Published

Tools for the Trix Text Editor.

Readme

Trix Tools

Tools for the Trix Text Editor.

Build Status Coverage Status NPM Licence

The Trix Text Editor is a WYSIWYG editor in the browser, allowing for easy text input in your projects. It has a few drawbacks though like not being able to render YouTube embeded videos, Twitter (X) Tweets, image links, or code blocks out of the box. Trix Tools comes with various tools to help render that input content when using Trix in your projects.

Install

npm i trix-tools

Usage

Trix Tools is modular, allowing you to choose which rendering plugins you want to use for your project. Below you'll find all the available plugins which can be disabled to fit your needs. All plugins are enabled out of the box.

import { renderTrixContent } from 'trix-tools';

// Re-render all your original Trix HTML content using all plugins except Twitter
const trixContent = document.getElementById('trix-content');
trixContent.innerHTML = renderTrixContent(trixContent.innerHTML, { twitter: false });

Plugins

Code Blocks

Plugin name: codeBlocks

You can paste:

```python foo = "hello world" ```

into the Trix editor and Trix Tools will re-render it as:

<pre><code class="language-python">foo = "hello world"\n</code></pre>

We append the language-{lang} HTML class so you can use syntax highlighting packages. The language identifier at the start of your code block is optional.

Images

Plugin name: images

You can paste an image link into the Trix editor and Trix Tools will re-render it as an image HTML tag. The image will auto scale Y and max width 100% of its container.

Inline Code

Plugin name: inlineCode

You can paste `mycode` into the Trix editor and Trix Tools will re-render it as <code>mycode</code>.

Twitter

Plugin name: twitter

You can paste a simple link (eg: https://twitter.com/Justintime_50/status/123) into the Trix editor or a full Tweet blockquote and Trix Tools will re-render it as a well-formed embeded iframe (complete with Twitter script).

YouTube

Plugin name: youtube

You can paste a simple link (eg: https://www.youtube.com/watch?v=abc123) into the Trix editor or a full YouTube iframe and Trix Tools will re-render it as a well-formed embeded iframe.

Custom Plugins

Plugin name: whatever you want!

You can register your own plugins and have Trix Tools give the same treatment as our 1st party plugins to your content:

import { renderTrixContent, registerTrixPlugin } from 'trix-tools';

// Define your custom plugin
function renderCustomStuff(html) {
  // Custom processing...
  return html.replace(/foo/g, 'bar');
}

// Register it
registerTrixPlugin('custom', renderCustomStuff);

// Use it
const trixContent = document.getElementById('trix-content');
trixContent.innerHTML = renderTrixContent(trixContent.innerHTML, { custom: true });

Development

# Lint the project
npm run lint

# Run tests
npm run test

# Run test coverage
npm run coverage