1.0.1 • Published 4 months ago

editorjs-mathcyou v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

EditorJS MathCyou

A plugin for Editor.js that adds support for LaTeX math formulas, both inline and as blocks.

Features

  • Inline Math Tool: Add LaTeX equations within your text
  • Math Block Tool: Add standalone LaTeX equations as blocks
  • KaTeX Integration: Uses KaTeX for fast and beautiful math rendering
  • Custom Parser: Helper function to parse the editor's output into a structured format
  • Lightweight: Minimal dependencies, just EditorJS and KaTeX

Installation

npm install editorjs-mathcyou

Or using yarn:

yarn add editorjs-mathcyou

Requirements

  • Editor.js v2.20 or higher
  • KaTeX v0.13.0 or higher

Usage

Basic Setup

import EditorJS from '@editorjs/editorjs';
import { InlineMathTool, MathBlockTool, parseEditorOutput } from 'editorjs-mathcyou';
import katex from 'katex';
import 'katex/dist/katex.min.css';

const editor = new EditorJS({
  holder: 'editorjs',
  tools: {
    paragraph: {
      class: Paragraph,
      inlineToolbar: true
    },
    inlineMath: {
      class: InlineMathTool
    },
    mathBlock: {
      class: MathBlockTool
    }
  },
  // ...
});

// To save and parse the content
const saveButton = document.getElementById('save-button');
saveButton.addEventListener('click', async () => {
  const savedData = await editor.save();
  const parsedData = parseEditorOutput(savedData.blocks);
  console.log('Parsed data:', parsedData);
});

Adding Styles

Add the following CSS to your project:

.math-block-wrapper {
  margin: 15px 0;
  padding: 10px;
  background-color: #f8f8f8;
  border-radius: 5px;
}

.math-block-preview {
  display: flex;
  justify-content: center;
  padding: 15px 0;
  overflow-x: auto;
}

.math-block-input {
  width: 100%;
  padding: 8px;
  font-family: monospace;
  border: 1px solid #ddd;
  border-radius: 3px;
  min-height: 60px;
}

.inline-math {
  display: inline-block;
  cursor: pointer;
  padding: 0 2px;
  background-color: rgba(74, 144, 226, 0.1);
  border-radius: 3px;
}

Or use the included utility function:

import { getStyles } from 'editorjs-mathcyou';

// Add styles programmatically
const styleElement = document.createElement('style');
styleElement.textContent = getStyles();
document.head.appendChild(styleElement);

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

1.0.1

4 months ago

1.0.0

4 months ago