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

@libraz/formulon-cell

v0.8.0

Published

Spreadsheet UI for the formulon WASM calc engine — extension-based, i18n-aware, theme-tokenized, and desktop-spreadsheet-style.

Readme

@libraz/formulon-cell

CI npm npm — react npm — vue License TypeScript Docs Demo

A working spreadsheet for any web page, no framework required. Mount it into a DOM element and you get a canvas-rendered grid with desktop-spreadsheet chrome (formula bar, ribbon, sheet tabs, context menu) over the formulon WASM calc engine. Features are composed from presets and extension factories, and locales and themes swap at runtime without re-mounting.

Try it in the live demo.

This is the vanilla TypeScript / DOM core. @libraz/formulon-cell-react and @libraz/formulon-cell-vue are thin adapters over the same mount call.

Basic workbook workflows are ready to use. Dialogs, detailed control behaviour, keyboard interaction, and accessibility do not yet match desktop spreadsheets in every case, so do not present this as a finished end-user product yet.

Install

npm install @libraz/formulon-cell zustand

zustand is a peer dependency. The default WASM engine is single-threaded and needs no COOP/COEP headers. WorkbookHandle.createDefault() rejects if the engine fails to initialize; the in-memory stub is used only when you pass preferStub: true. Bundler settings are in the project README.

Quick start

import { Spreadsheet, WorkbookHandle, presets } from '@libraz/formulon-cell';
import '@libraz/formulon-cell/styles.css';

const wb = await WorkbookHandle.createDefault();
const sheet = await Spreadsheet.mount(document.getElementById('sheet')!, {
  workbook: wb,
  features: presets.full(),
  locale: 'en',
  toolbar: true, // ribbon mounted in the same call, available as sheet.toolbar
});

sheet.i18n.setLocale('ja');
sheet.setTheme('ink'); // themes the grid and the ribbon together

For a grid-only form or viewer, mount with ui: { profile: 'embedded' } and a policy such as fixedFormPolicy(ranges) or viewerPolicy(). See Embedding and use cases.

Presets

| preset | what's in it | |--------|--------------| | presets.minimal() | formula bar, status bar, basic keymap | | presets.standard() | + Quick Analysis, context menu, find/replace, clipboard, format painter | | presets.full() | + format dialog, paste special, conditional formatting, named ranges, hyperlink dialog, PivotTable creation, validation, autocomplete, hover comments |

Subpath exports

| import path | contents | |---|---| | @libraz/formulon-cell | Spreadsheet, WorkbookHandle, presets, policies, extension factories | | @libraz/formulon-cell/extensions | all extension factories | | @libraz/formulon-cell/extensions/* | one extension (statusBar, findReplace, contextMenu, …) | | @libraz/formulon-cell/i18n/ja, /i18n/en | locale dictionaries | | @libraz/formulon-cell/styles.css | grid, dialogs, overlays, ribbon, and all themes in one file | | @libraz/formulon-cell/styles/{tokens,paper,ink,contrast,toolbar}.css | individual stylesheets for granular setups |

Key APIs

| API | description | |-----|-------------| | Spreadsheet.mount(host, opts) | mount the spreadsheet into a DOM element | | WorkbookHandle.createDefault() | create a workbook backed by the WASM engine | | workbook.withBatchedRecalc(fn) | run a multi-cell write with a single recalc | | instance.i18n.setLocale(loc) / instance.setTheme(theme) | swap locale or theme at runtime | | instance.setPolicy / setViewportOptions / setContextMenu / setUi / setToolbar | change embedding settings at runtime | | instance.applyChanges(changes) | trusted host update that bypasses the user policy | | instance.on(event, handler) | cellChange, selectionChange, changeBatch, recalc, … |

The full option and API reference is on the documentation site.

Documentation

License

Apache-2.0