diff options
author | bob <bcz@cs.brown.edu> | 2019-12-05 14:25:02 -0500 |
---|---|---|
committer | bob <bcz@cs.brown.edu> | 2019-12-05 14:25:02 -0500 |
commit | ed1698dc1b225ebc79c1dbe5b831c3e164a312e7 (patch) | |
tree | d69b12a99f643b7f75336a183c8b3cbe2da984c3 /src/client/util/RichTextRules.ts | |
parent | f1d89e46aa4a2d10dcbe6d36ecf2aebdb348f887 (diff) |
added style shortcut for text
Diffstat (limited to 'src/client/util/RichTextRules.ts')
-rw-r--r-- | src/client/util/RichTextRules.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/client/util/RichTextRules.ts b/src/client/util/RichTextRules.ts index cef1011cc..4e3192dd4 100644 --- a/src/client/util/RichTextRules.ts +++ b/src/client/util/RichTextRules.ts @@ -5,6 +5,7 @@ import { NodeSelection, TextSelection } from "prosemirror-state"; import { NumCast, Cast } from "../../new_fields/Types"; import { Doc } from "../../new_fields/Doc"; import { FormattedTextBox } from "../views/nodes/FormattedTextBox"; +import { TooltipTextMenuManager } from "../util/TooltipTextMenu"; import { Docs } from "../documents/Documents"; import { Id } from "../../new_fields/FieldSymbols"; @@ -72,6 +73,27 @@ export const inpRules = { return state.tr.deleteRange(start, end).addStoredMark(schema.marks.pFontSize.create({ fontSize: size })); }), new InputRule( + new RegExp(/%[a-z]*\s$/), + (state, match, start, end) => { + const color = match[0].substring(1, match[0].length - 1); + let marks = TooltipTextMenuManager.Instance._brushMap.get(color); + if (marks) { + let tr = state.tr.deleteRange(start, end); + return marks ? Array.from(marks).reduce((tr, m) => tr.addStoredMark(m), tr) : tr; + } + if (color) { + return state.tr.deleteRange(start, end).addStoredMark(schema.marks.pFontColor.create({ color: color })); + } + return state.tr.deleteRange(start, end); + }), + new InputRule( + new RegExp(/%%$/), + (state, match, start, end) => { + let tr = state.tr.deleteRange(start, end); + let marks = state.tr.selection.$anchor.nodeBefore?.marks; + return marks ? Array.from(marks).filter(m => m !== state.schema.marks.user_mark).reduce((tr, m) => tr.removeStoredMark(m), tr) : tr; + }), + new InputRule( new RegExp(/t$/), (state, match, start, end) => { if (state.selection.to === state.selection.from) return null; |