diff --git a/.gitignore b/.gitignore index c1396e5..5f03352 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ lib/ node_modules/ *.egg-info/ *.ipynb_checkpoints +tsconfig.tsbuildinfo diff --git a/package-lock.json b/package-lock.json index 364a4a5..8a58ec6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1438,6 +1438,11 @@ "resolved": "https://registry.npmjs.org/markdown-it-ins/-/markdown-it-ins-2.0.0.tgz", "integrity": "sha1-papqMPHi9x6Ul1Z8/f9A8f3mdIM=" }, + "markdown-it-mathjax": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-mathjax/-/markdown-it-mathjax-2.0.0.tgz", + "integrity": "sha1-ritPTFxxmgP55HXGZPeyaFIx2ek=" + }, "marked": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz", diff --git a/package.json b/package.json index 5d03d48..e6204b3 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "fuzzyset": "0.0.4", "markdown-it": "^9.0.1", "markdown-it-ins": "^2.0.0", + "markdown-it-mathjax": "^2.0.0", "material-design-icons-iconfont": "^5.0.1", "mathjax": "^2.7.5", "mathjax-node": "^2.1.1", diff --git a/src/RichTextMenu.tsx b/src/RichTextMenu.tsx index 6f6575d..c9cb723 100644 --- a/src/RichTextMenu.tsx +++ b/src/RichTextMenu.tsx @@ -23,7 +23,8 @@ import { CodeMenu } from "./codemenu"; import { Widget } from '@phosphor/widgets'; import ReactDOM from "react-dom"; import { schema } from "./prosemirror/prosemirror-schema"; -import { wrapInList } from "prosemirror-schema-list"; +import { wrapInList, liftListItem, sinkListItem } from "prosemirror-schema-list"; +import {undo, redo} from "prosemirror-history"; // import { PageConfig } from "@jupyterlab/coreutils"; // import { MenuWidgetObject } from './widget'; @@ -149,7 +150,7 @@ export default class RichTextMenu extends React.Component<{view: EditorView, componentDidMount() { if (!this.props.view) { - this.setState({inactiveMarks: ["strong", "em", "underline", "strikethrough", "heading", "bullet_list", "ordered_list", "blockquote", "code", "link", "image"]}); + this.setState({inactiveMarks: ["undo", "redo", "strong", "em", "underline", "strikethrough", "heading", "bullet_list", "ordered_list", "blockquote", "code", "link", "image"]}); } } componentWillUnmount() { @@ -311,6 +312,18 @@ export default class RichTextMenu extends React.Component<{view: EditorView, case "ordered_list": wrapInList(schema.nodes.ordered_list)(view.state, view.dispatch); break; + case "indent_increase": + sinkListItem(schema.nodes.list_item)(view.state, view.dispatch); + break; + case "indent_decrease": + liftListItem(schema.nodes.list_item)(view.state, view.dispatch); + break; + case "undo": + undo(view.state, view.dispatch); + break; + case "redo": + redo(view.state, view.dispatch); + break; default: break; }; @@ -480,10 +493,10 @@ export default class RichTextMenu extends React.Component<{view: EditorView, */ render() { - const formats = ["format_bold", "format_italic", "format_underline", "strikethrough_s", - "text_fields", "format_list_bulleted", "format_list_numbered", "format_quote", "code", "insert_link", "photo", ]; + const formats = ["undo", "redo", "format_bold", "format_italic", "format_underline", "strikethrough_s", + "text_fields", "format_list_bulleted", "format_list_numbered", "format_indent_decrease", "format_indent_increase", "format_quote", "code", "insert_link", "photo", ]; const tooltips = ["bold", "italic", "underline", "strikethrough", "text-styles", "bulleted-list", "numbered-list", "blockquote", "code", "link", "image"]; - const marks = ["strong", "em", "underline", "strikethrough", "heading", "bullet_list", "ordered_list", "blockquote", "code", "link", "image"]; + const marks = ["undo", "redo", "strong", "em", "underline", "strikethrough", "heading", "bullet_list", "ordered_list", "indent_increase", "indent_decrease", "blockquote", "code", "link", "image"]; // const separators = ["strong", "bullet_list", "link"] return (