This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
outline/app/components/Editor/plugins.js

56 lines
1.5 KiB
JavaScript

// @flow
import InsertImages from '@tommoor/slate-drop-or-paste-images';
import PasteLinkify from 'slate-paste-linkify';
import CollapseOnEscape from 'slate-collapse-on-escape';
import TrailingBlock from 'slate-trailing-block';
import EditCode from 'slate-edit-code';
import Prism from 'slate-prism';
import EditList from './plugins/EditList';
import KeyboardShortcuts from './plugins/KeyboardShortcuts';
import MarkdownShortcuts from './plugins/MarkdownShortcuts';
import { insertImageFile } from './changes';
type Options = {
onImageUploadStart: () => void,
onImageUploadStop: () => void,
};
const createPlugins = ({ onImageUploadStart, onImageUploadStop }: Options) => {
return [
PasteLinkify({
type: 'link',
collapseTo: 'end',
}),
InsertImages({
extensions: ['png', 'jpg', 'gif', 'webp'],
insertImage: async (change, file, editor) => {
return change.call(
insertImageFile,
file,
editor,
onImageUploadStart,
onImageUploadStop
);
},
}),
EditList,
EditCode({
containerType: 'code',
lineType: 'code-line',
exitBlocktype: 'paragraph',
allowMarks: false,
selectAll: true,
}),
Prism({
onlyIn: node => node.type === 'code',
getSyntax: node => 'javascript',
}),
CollapseOnEscape({ toEdge: 'end' }),
TrailingBlock({ type: 'paragraph' }),
KeyboardShortcuts(),
MarkdownShortcuts(),
];
};
export default createPlugins;