codemirror-widgets

1.4.2 • Public • Published

codemirror-widgets

Utility to easily write interactive widgets for CodeMirror.

Installation

$ npm install codemirror-widgets

Usage

Example, replace LaTeX math ($$ ... $$) by a preview using KaTeX

var widgets = require('codemirror-widgets');
var katex = require('katex');
 
// Create a type of widget
var WidgetMath = widgets.createType({
    mixins: [
        widgets.mixins.re(/\$\$([^$]+)\$\$/g, function(match) {
            return {
                props: {
                    text: match[1]
                }
            };
        }),
        widgets.mixins.editDelimit('$$', '$$')
    ],
 
    createElement: function(widget) {
        // Create the spam to replace the formula
        var span = document.createElement('span');
 
        // Render the formula using katex
        katex.render(widget.props.text, span)
 
        return span;
    }
});
 
 
// Create a widgets manager connected to an editor
var manager = widgets.createManager(editor);
 
// Connect a type of widget to the manager
manager.enable(WidgetLink);

Mixins

Some prebuilt mixins make it event easier to create awesome widgets:

re

Find occurrence using a Regex:

var widgetMath = widgets.createType({
    mixins: [
        widgets.mixins.re(/\$\$([^$]+)\$\$/g, function(match) {
            return {
                props: {
                    text: match[1]
                }
            };
        })
    ],
 
    ...
});
menu

Bind a menu with multiple actions to your widgets. The menu will show up on click (like on Gmail).

var widgetLink = widgets.createType({
    mixins: [
        widgets.mixins.menu({
            entries: [
                {
                    label: 'Open',
                    click: function(widget) {
                        window.open(widget.props.href, '_blank')
                    }
                }
            ]
        })
    ],
 
    ...
});
editParagraph

Helper to update a paragraph when user is typing

var widgetLink = widgets.createType({
    mixins: [
        widgets.mixins.editParagraph()
    ],
 
    ...
});

Readme

Keywords

none

Package Sidebar

Install

npm i codemirror-widgets

Weekly Downloads

1

Version

1.4.2

License

Apache-2.0

Last publish

Collaborators

  • samypesse