Skip to content
Snippets Groups Projects
Note.js 1.03 KiB
Newer Older
chris's avatar
chris committed
import Tools from '../lib/Tools';
import { injectable } from 'inversify';
Yannis Barlas's avatar
Yannis Barlas committed
// import { icons } from 'wax-prosemirror-components';
chris's avatar
chris committed
import { Fragment } from 'prosemirror-model';
import { v4 as uuidv4 } from 'uuid';
chris's avatar
chris committed
export default
@injectable()
chris's avatar
chris committed
class Note extends Tools {
chris's avatar
chris committed
  title = 'Insert Note';
Yannis Barlas's avatar
Yannis Barlas committed
  // content = icons.footnote;
  icon = 'note';
chris's avatar
chris committed
  name = 'Note';

  get run() {
    return (state, dispatch) => {
chris's avatar
chris committed
      const { empty, $from, $to } = state.selection;
      let content = Fragment.empty;
chris's avatar
chris committed
      if (!empty && $from.sameParent($to) && $from.parent.inlineContent)
        content = $from.parent.content.cut(
          $from.parentOffset,
chris's avatar
chris committed
          $to.parentOffset,
chris's avatar
chris committed
        );
      const footnote = state.config.schema.nodes.footnote.create(
chris's avatar
chris committed
        { id: uuidv4() },
chris's avatar
chris committed
        content,
      dispatch(state.tr.replaceSelectionWith(footnote));
    };
  }

chris's avatar
chris committed
  select = (state, activeViewId) => {
    if (activeViewId !== 'main') return false;
    return true;
  };

  get enable() {
    return state => {
      return false;