Skip to content
Snippets Groups Projects
config.js 4.88 KiB
Newer Older
chris's avatar
chris committed
import { emDash, ellipsis } from 'prosemirror-inputrules';
import { debounce } from 'lodash';
chris's avatar
chris committed

chris's avatar
chris committed
import {
  InlineAnnotationsService,
  ImageService,
  LinkService,
  ListsService,
  BaseService,
  DisplayBlockLevelService,
  TextBlockLevelService,
  NoteService,
  TrackChangeService,
  CommentsService,
  CodeBlockService,
chris's avatar
chris committed
  // DisplayTextToolGroupService,
chris's avatar
chris committed
  MathService,
  FindAndReplaceService,
  EditingSuggestingService,
  FullScreenService,
  SpecialCharactersService,
  HighlightService,
  BottomInfoService,
  TransformService,
  TrackOptionsToolGroupService,
  TrackCommentOptionsToolGroupService,
  CustomTagService,
chris's avatar
chris committed
  OENContainersService,
chris's avatar
chris committed
} from 'wax-prosemirror-services';
chris's avatar
chris committed
import { TablesService, tableEditing, columnResizing } from 'wax-table-service';
chris's avatar
chris committed

chris's avatar
chris committed
import { EditoriaSchema } from 'wax-prosemirror-core';
chris's avatar
chris committed

import invisibles, {
  space,
  hardBreak,
  paragraph,
} from '@guardian/prosemirror-invisibles';

import CharactersList from './CharactersList';

// const updateTitle = title => {
//   console.log(title);
// };

const updateTitle = debounce(title => {
  // console.log(title);
}, 3000);

const saveTags = tags => {
  // console.log(tags);
};

const updateTrackStatus = status => {
  // console.log('status', status);
};

export default {
  MenuService: [
    {
      templateArea: 'mainMenuToolBar',
      toolGroups: [
        'Base',
        {
          name: 'Annotations',
          more: [
            'Superscript',
            'Subscript',
            'SmallCaps',
            'Underline',
            'StrikeThrough',
          ],
        },
        'HighlightToolGroup',
        'TransformToolGroup',
        'CustomTagInline',
        'Notes',
        'Lists',
        'Images',
        'SpecialCharacters',
        'CodeBlock',
        'Tables',
        'TrackingAndEditing',
        'FullScreen',
      ],
    },
    {
      templateArea: 'leftSideBar',
chris's avatar
chris committed
      toolGroups: ['OENTools'],
chris's avatar
chris committed
    },
    {
      templateArea: 'commentTrackToolBar',
      toolGroups: ['TrackCommentOptions'],
    },
    {
      templateArea: 'BottomRightInfo',
      toolGroups: ['InfoToolGroup'],
    },
  ],

  // CommentsService: { readOnly: true },
  // OrderedListService: { subList: false },
  // BulletListService: { subList: false },
  // JoinUpService: { subList: false },
chris's avatar
chris committed
  OENContainersService: [
    {
      groupHeader: 'Core Elements',
      items: [
chris's avatar
chris committed
        {
          displayName: 'Learning Objectives',
          headingLevel: 2,
chris's avatar
chris committed
          isSection: false,
chris's avatar
chris committed
          nestedHeadingLevel: null,
          className: 'learning-objectives',
        },
chris's avatar
chris committed
        {
          displayName: 'Section',
          headingLevel: 2,
chris's avatar
chris committed
          isSection: true,
          nestedHeadingLevel: undefined,
          className: 'whatever',
chris's avatar
chris committed
        },
        {
chris's avatar
chris committed
          displayName: 'outline',
chris's avatar
chris committed
          headingLevel: 2,
chris's avatar
chris committed
          isSection: false,
          nestedHeadingLevel: 4,
chris's avatar
chris committed
          className: 'outline',
chris's avatar
chris committed
        },
      ],
    },
    {
      groupHeader: 'Core Elements 1',
      items: [
        {
chris's avatar
chris committed
          displayName: 'Key Terms',
chris's avatar
chris committed
          headingLevel: 2,
chris's avatar
chris committed
          isSection: false,
chris's avatar
chris committed
          nestedHeadingLevel: null,
chris's avatar
chris committed
          className: 'key-terms',
chris's avatar
chris committed
        },
        {
chris's avatar
chris committed
          displayName: 'Summary',
chris's avatar
chris committed
          headingLevel: 2,
chris's avatar
chris committed
          isSection: false,
chris's avatar
chris committed
          nestedHeadingLevel: null,
chris's avatar
chris committed
          className: 'summary',
chris's avatar
chris committed
        },
      ],
    },
  ],
chris's avatar
chris committed
  SpecialCharactersService: CharactersList,
  SchemaService: EditoriaSchema,
  TitleService: { updateTitle },
  RulesService: [emDash, ellipsis],
  ShortCutsService: {},
  EnableTrackChangeService: { enabled: false, toggle: true, updateTrackStatus },
  AcceptTrackChangeService: {
    own: {
      accept: true,
    },
    others: {
      accept: true,
    },
  },
  RejectTrackChangeService: {
    own: {
      reject: true,
    },
    others: {
      reject: true,
    },
  },
chris's avatar
chris committed
  PmPlugins: [invisibles([hardBreak()])],
chris's avatar
chris committed
  CustomTagService: {
    tags: [
      { label: 'custom-tag-label-1', tagType: 'inline' },
      { label: 'custom-tag-label-2', tagType: 'inline' },
      { label: 'custom-tag-label-3', tagType: 'block' },
      { label: 'label 2', tagType: 'block' },
    ],
    // updateTags: saveTags,
  },

  services: [
chris's avatar
chris committed
    new OENContainersService(),
chris's avatar
chris committed
    new CustomTagService(),
    new DisplayBlockLevelService(),
    new TextBlockLevelService(),
    new ListsService(),
    new LinkService(),
    new InlineAnnotationsService(),
    new TrackChangeService(),
    new CommentsService(),
    new ImageService(),
    new TablesService(),
    new BaseService(),
    new NoteService(),
    new CodeBlockService(),
    new EditingSuggestingService(),
chris's avatar
chris committed
    // new DisplayTextToolGroupService(),
chris's avatar
chris committed
    new MathService(),
    new FindAndReplaceService(),
    new FullScreenService(),
    new SpecialCharactersService(),
    new HighlightService(),
    new BottomInfoService(),
    new TransformService(),
    new TrackOptionsToolGroupService(),
    new TrackCommentOptionsToolGroupService(),
  ],
};