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

@editora/citations

v1.0.2

Published

Native citation and bibliography plugin for Editora with APA/MLA/Chicago support

Readme

@editora/citations

Version License TypeScript Size

[!IMPORTANT] Live Website: https://editora-ecosystem.netlify.app/
Storybook: https://editora-ecosystem-storybook.netlify.app/

@editora/citations adds native citation authoring to Editora with inline references, bibliography generation, and optional citation-note (footnote) sync.

Features

  • Native framework-agnostic plugin (no framework dependency)
  • Works in React (Vite/CRA) and Web Component without code changes
  • Inline citations with APA / MLA / Chicago style switching
  • Auto-generated bibliography section (References)
  • Optional citation-note sync (Citation Notes section)
  • Multi-instance safe (state, panel, and debounce timers isolated per editor)
  • Accessible panel (role="dialog", keyboard focus, aria-live, labeled controls)
  • Light/dark theme support
  • Debounced content refresh for performance

Install

npm install @editora/citations

Basic Usage (React)

import { EditoraEditor } from '@editora/react';
import { BoldPlugin, HistoryPlugin, CitationsPlugin } from '@editora/plugins';

const plugins = [
  BoldPlugin(),
  HistoryPlugin(),
  CitationsPlugin({
    defaultStyle: 'apa',
    enableFootnoteSync: true,
  }),
];

export default function App() {
  return <EditoraEditor plugins={plugins} />;
}

Basic Usage (Web Component)

<editora-editor id="editor"></editora-editor>
<script>
  const editor = document.getElementById('editor');
  editor.setConfig({
    plugins: 'bold history citations',
    toolbar: {
      items: 'bold undo redo | citations citationsRefresh citationsStyle',
    },
  });
</script>

Accepted aliases: citations, citation.

Toolbar Commands

  • toggleCitationsPanel -> open/close citations panel
  • insertCitation -> insert citation at current caret
  • refreshCitations -> rebuild citation references + bibliography + notes
  • setCitationStyle -> set apa | mla | chicago
  • cycleCitationStyle -> rotate style in toolbar/dialog
  • getCitationRecords -> emit editora:citations-data, cache on editor.__citationRecords, optional callback
  • setCitationsOptions -> update plugin options at runtime
  • locateCitation -> focus citation reference by id
  • deleteCitation -> remove selected/adjacent citation or remove all occurrences by citation id
  • insertRecentCitation -> reinsert most recent citation (or by citation id) without reopening/reloading

Keyboard Shortcuts

  • Ctrl/Cmd + Alt + Shift + C -> open/close citations panel
  • Ctrl/Cmd + Alt + Shift + B -> refresh bibliography and notes
  • Ctrl/Cmd + Alt + Shift + J -> cycle citation style
  • Esc -> close panel

Advanced Usage

Insert citation programmatically

(window as any).executeEditorCommand?.('insertCitation', {
  author: 'Nielsen',
  year: '2024',
  title: 'Designing Content Workflows',
  source: 'Editorial Systems Journal',
  url: 'https://example.org/editorial-systems',
  note: 'Used in policy baseline section',
});

Switch style + refresh

const exec = (window as any).executeEditorCommand;

exec?.('setCitationStyle', 'chicago');
exec?.('refreshCitations');

Read citation records

const exec = (window as any).executeEditorCommand;

exec?.('getCitationRecords', (records) => {
  console.log('records', records);
});

document.addEventListener('editora:citations-data', (event) => {
  const records = (event as CustomEvent).detail?.records || [];
  console.log('records via event', records);
});

Edge Cases Covered

  • Duplicate citation ids are deduped in bibliography while preserving inline occurrences.
  • Invalid custom ids are normalized before use in DOM anchors/backrefs.
  • Backspace/Delete on selected or adjacent citation references removes the citation cleanly.
  • Deleted citations remain available in the recent list for quick reinsertion in the same session.
  • Panel includes direct per-recent-item Delete actions to avoid manual id workflows.
  • Deleting references and typing updates bibliography/notes via debounced refresh.
  • Managed sections are excluded from insertion targets to avoid nested references.
  • Repeated refreshes with unchanged references skip expensive DOM rebuilds.
  • Runtime option/style changes are scoped to the targeted editor instance.

Production Gate

  • CI gate command: npm run verify:citations (repo root)
  • Detailed checklist: packages/plugins/citations/PRODUCTION_CHECKLIST.md