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

chris's avatar
chris committed
  InlineAnnotationsService,
  ImageService,
  LinkService,
  ListsService,
  BaseService,
  DisplayBlockLevelService,
chris's avatar
chris committed
  TextBlockLevelService,
  NoteService,
  TrackChangeService,
chris's avatar
chris committed
  CommentsService,
chris's avatar
chris committed
  CodeBlockService,
chris's avatar
chris committed
  DisplayTextToolGroupService,
chris's avatar
chris committed
  MathService,
  FindAndReplaceService,
  EditingSuggestingService,
  FullScreenService,
chris's avatar
chris committed
  SpecialCharactersService,
  BottomInfoService,
  TransformService,
chris's avatar
chris committed
  disallowPasteImagesPlugin,
chris's avatar
chris committed
  BlockDropDownToolGroupService,
chris's avatar
chris committed
  AskAiContentService,
chris's avatar
chris committed
  YjsService,
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
import { EditoriaSchema } from 'wax-prosemirror-core';
chris's avatar
chris committed

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

import CharactersList from './CharactersList';

chris's avatar
chris committed
// const updateTitle = title => {
//   console.log(title);
// };

chris's avatar
chris committed
async function DummyPromise(userInput) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('User input:', userInput);
      if (userInput === 'reject') {
        reject('Your request could not be processed for now');
      } else {
chris's avatar
chris committed
        resolve(
          'He made significant contributions to theoretical physics, including achievements in quantum mechanics',
        );
chris's avatar
chris committed
      }
chris's avatar
chris committed
    }, 3150);
chris's avatar
chris committed
  });
}

chris's avatar
chris committed
const updateTitle = debounce(title => {
chris's avatar
chris committed
  // console.log(title);
chris's avatar
chris committed
}, 100);
chris's avatar
chris committed

chris's avatar
chris committed
const getComments = debounce(comments => {
chris's avatar
chris committed
  console.log(comments);
}, 2000);
const setComments = (
  comments = [
chris's avatar
chris committed
    // {
    //   id: 'a1',
    //   from: 5,
    //   to: 10,
    //   data: {
    //     type: 'comment',
    //     yjsFrom: 5,
    //     yjsTo: 10,
    //     pmFrom: 5,
    //     pmTo: 10,
    //     conversation: [
    //       {
    //         content: '1111',
    //         displayName: 'admin',
    //         userId: 'b3cfc28e-0f2e-45b5-b505-e66783d4f946',
    //         timestamp: 1710501980537,
    //       },
    //     ],
    //     title: '111',
    //     group: 'main',
    //     viewId: 'main',
    //   },
    //   endHeight: 362.3579406738281,
    // },
    // {
    //   id: 'a2',
    //   from: 8,
    //   to: 15,
    //   data: {
    //     type: 'comment',
    //     yjsFrom: 8,
    //     yjsTo: 15,
    //     pmFrom: 8,
    //     pmTo: 15,
    //     conversation: [
    //       {
    //         content: '222',
    //         displayName: 'admin',
    //         userId: 'b3cfc28e-0f2e-45b5-b505-e66783d4f946',
    //         timestamp: 1710501987197,
    //       },
    //     ],
    //     title: '222',
    //     group: 'main',
    //     viewId: 'main',
    //   },
    //   endHeight: 266.3579406738281,
    // },
    // {
    //   id: 'b8d907d4-1859-49a9-abcd-13788d497758',
    //   from: {
    //     type: {
    //       client: 2887320119,
    //       clock: 150,
    //     },
    //     tname: null,
    //     item: {
    //       client: 2887320119,
    //       clock: 185,
    //     },
    //     assoc: 0,
    //   },
    //   to: {
    //     type: {
    //       client: 2887320119,
    //       clock: 150,
    //     },
    //     tname: null,
    //     item: {
    //       client: 2887320119,
    //       clock: 195,
    //     },
    //     assoc: 0,
    //   },
    //   data: {
    //     yjsFrom: {
    //       type: {
    //         client: 2887320119,
    //         clock: 150,
    //       },
    //       tname: null,
    //       item: {
    //         client: 2887320119,
    //         clock: 185,
    //       },
    //       assoc: 0,
    //     },
    //     yjsTo: {
    //       type: {
    //         client: 2887320119,
    //         clock: 150,
    //       },
    //       tname: null,
    //       item: {
    //         client: 2887320119,
    //         clock: 195,
    //       },
    //       assoc: 0,
    //     },
    //     pmFrom: 164,
    //     pmTo: 174,
    //     type: 'comment',
    //     conversation: [
    //       {
    //         content: 'dfgdfgd',
    //         displayName: 'admin',
    //         userId: 'b3cfc28e-0f2e-45b5-b505-e66783d4f946',
    //         timestamp: 1713699155995,
    //       },
    //     ],
    //     title: 'dgfdgf',
    //     group: 'main',
    //     viewId: 'main',
    //   },
    //   endHeight: 406.734375,
    // },
chris's avatar
chris committed
  return comments;
};

chris's avatar
chris committed
const saveTags = tags => {
chris's avatar
chris committed
  // console.log(tags);
const updateTrackStatus = status => {
  // console.log('status', status);
};

chris's avatar
chris committed
const onWarning = message => {
chris's avatar
chris committed
  alert(message);
chris's avatar
chris committed
  MenuService: [
    {
chris's avatar
chris committed
      templateArea: 'mainMenuToolBar',
chris's avatar
chris committed
      toolGroups: [
        'Base',
chris's avatar
chris committed
        'BlockDropDown',
chris's avatar
chris committed
        // 'TitleTool',
chris's avatar
chris committed
        {
          name: 'Annotations',
chris's avatar
chris committed
          more: [
            'Superscript',
            'Subscript',
            'SmallCaps',
            'Underline',
            'StrikeThrough',
          ],
        'TransformToolGroup',
chris's avatar
chris committed
        // 'Notes',
chris's avatar
chris committed
        'Lists',
chris's avatar
chris committed
        'Images',
chris's avatar
chris committed
        'SpecialCharacters',
chris's avatar
chris committed
        'CodeBlock',
chris's avatar
chris committed
        'ToggleAi',
chris's avatar
chris committed
        'Tables',
        'TrackingAndEditing',
chris's avatar
chris committed
        'FullScreen',
chris's avatar
chris committed
      ],
chris's avatar
chris committed
    {
      templateArea: 'leftSideBar',
      toolGroups: ['DisplayText'],
    },
chris's avatar
chris committed
    {
      templateArea: 'commentTrackToolBar',
      toolGroups: ['TrackCommentOptions'],
chris's avatar
chris committed
    },
    {
      templateArea: 'BottomRightInfo',
chris's avatar
chris committed
      toolGroups: ['InfoToolGroup'],
chris's avatar
chris committed
  ],
chris's avatar
chris committed

chris's avatar
chris committed
  // CommentsService: { readOnly: true },
  // OrderedListService: { subList: false },
  // BulletListService: { subList: false },
  // JoinUpService: { subList: false },
  SpecialCharactersService: CharactersList,
chris's avatar
chris committed
  SchemaService: EditoriaSchema,
chris's avatar
chris committed
  TitleService: { updateTitle },
chris's avatar
chris committed
  RulesService: [emDash, ellipsis],
  ShortCutsService: {},
  EnableTrackChangeService: { enabled: false, toggle: true, updateTrackStatus },
  AcceptTrackChangeService: {
    own: {
chris's avatar
chris committed
      accept: true,
    },
    others: {
      accept: true,
    },
  },
  RejectTrackChangeService: {
    own: {
      reject: true,
    },
    others: {
      reject: true,
    },
  },
chris's avatar
chris committed
  PmPlugins: [
chris's avatar
chris committed
    tableEditing(),
    columnResizing(),
chris's avatar
chris committed
    invisibles([hardBreak()]),
    disallowPasteImagesPlugin(() =>
      onWarning(
        'Images are not allowed. Please upload them through filemanager',
      ),
    ),
  ],
chris's avatar
chris committed
  ImageService: { showAlt: true },
  CommentsService: {
chris's avatar
chris committed
    showTitle: true,
chris's avatar
chris committed
    getComments,
chris's avatar
chris committed
    setComments,
  CustomTagService: {
    tags: [
      { label: 'custom-tag-label-1', tagType: 'inline' },
      { label: 'custom-tag-label-2', tagType: 'inline' },
chris's avatar
chris committed
      { label: 'custom-tag-label-3', tagType: 'block' },
chris's avatar
chris committed
      { label: 'label 2', tagType: 'block' },
chris's avatar
chris committed
    ],
chris's avatar
chris committed
    updateTags: saveTags,
chris's avatar
chris committed
  },
chris's avatar
chris committed
  YjsService: {
    // eslint-disable-next-line no-restricted-globals
    connectionUrl: 'ws://localhost:5010',
    // connectionUrl: 'ws://0.tcp.ap.ngrok.io:17607',
chris's avatar
chris committed
    docIdentifier: 'prosemirror-demo77',
chris's avatar
chris committed
    YjsType: 'prosemirror',
  },
chris's avatar
chris committed
  AskAiContentService: {
    AskAiContentTransformation: DummyPromise,
    AiOn: true,
victor mutai's avatar
victor mutai committed
    FreeTextPromptsOn: true,
    CustomPrompts: [],
chris's avatar
chris committed
  },

chris's avatar
chris committed
    new YjsService(),
chris's avatar
chris committed
    new BlockDropDownToolGroupService(),
chris's avatar
chris committed
    new AskAiContentService(),
chris's avatar
chris committed
    new CustomTagService(),
chris's avatar
chris committed
    new DisplayBlockLevelService(),
    new TextBlockLevelService(),
    new ListsService(),
    new LinkService(),
    new InlineAnnotationsService(),
    new TrackChangeService(),
    new CommentsService(),
    new ImageService(),
    new TablesService(),
    new BaseService(),
chris's avatar
chris committed
    // new NoteService(),
chris's avatar
chris committed
    new CodeBlockService(),
    new EditingSuggestingService(),
chris's avatar
chris committed
    new DisplayTextToolGroupService(),
chris's avatar
chris committed
    new MathService(),
    new FindAndReplaceService(),
    new FullScreenService(),
chris's avatar
chris committed
    new SpecialCharactersService(),
    new BottomInfoService(),
    new TransformService(),