Skip to content
Snippets Groups Projects
NumericalAnswerQuestion.js 1.28 KiB
Newer Older
chris's avatar
chris committed
import { injectable } from 'inversify';
import { findWrapping } from 'prosemirror-transform';
import { v4 as uuidv4 } from 'uuid';
import { Commands, Tools } from 'wax-prosemirror-core';
import helpers from '../MultipleChoiceQuestionService/helpers/helpers';

@injectable()
class NumericalAnswerQuestion extends Tools {
  title = 'Numerical Answer Question';
  icon = '';
  name = 'Numerical Answer';

  get run() {
    return main => {
      const { dispatch } = main;
      const { state } = main;
      helpers.checkifEmpty(main);
      const { $from, $to } = main.state.selection;
      const range = $from.blockRange($to);
      const { tr } = main.state;

      const wrapping =
        range &&
        findWrapping(
          range,
          state.config.schema.nodes.numerical_answer_container,
          {
            id: uuidv4(),
          },
        );
      if (!wrapping) return false;
      tr.wrap(range, wrapping);
      dispatch(tr);
    };
chris's avatar
chris committed
  }

  get active() {
    return state => {
      if (
        Commands.isParentOfType(
          state,
          state.config.schema.nodes.numerical_answer_container,
        )
      ) {
        return true;
      }
      return false;
    };
  }

  select = (state, activeViewId, activeView) => {};
}

export default NumericalAnswerQuestion;