-
Notifications
You must be signed in to change notification settings - Fork 32
/
index.ts
33 lines (30 loc) · 1.33 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* eslint-disable import/no-extraneous-dependencies */
import { EditorState } from 'prosemirror-state';
import { EditorView } from 'prosemirror-view';
import { DOMParser } from 'prosemirror-model';
import { schema } from 'prosemirror-schema-basic';
import { exampleSetup } from 'prosemirror-example-setup';
import { autocomplete, Options } from '../src';
import { reducer } from './reducer';
const editor = document.querySelector('#editor') as HTMLDivElement;
const content = document.querySelector('#content') as HTMLDivElement;
const options: Options = {
reducer,
triggers: [
// For demo purposes, make the `#` and `@` easier to create
{ name: 'hashtag', trigger: /(#)$/ },
{ name: 'mention', trigger: /(@)$/ },
{ name: 'emoji', trigger: ':' },
{ name: 'link', trigger: '[[', cancelOnFirstSpace: false },
{ name: 'jinja', trigger: '{{', cancelOnFirstSpace: false },
{ name: 'command', trigger: '/', decorationAttrs: { class: 'command' } },
{ name: 'variable', trigger: /((?:^[a-zA-Z0-9_]+)\s?=)$/, cancelOnFirstSpace: false },
{ name: 'code', trigger: /((?:[a-zA-Z0-9_]+)\.)$/ },
],
};
(window as any).view = new EditorView(editor, {
state: EditorState.create({
doc: DOMParser.fromSchema(schema).parse(content),
plugins: [...autocomplete(options), ...exampleSetup({ schema, menuBar: false })],
}),
});