aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/RichTextRules.ts
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-12-05 14:25:02 -0500
committerbob <bcz@cs.brown.edu>2019-12-05 14:25:02 -0500
commited1698dc1b225ebc79c1dbe5b831c3e164a312e7 (patch)
treed69b12a99f643b7f75336a183c8b3cbe2da984c3 /src/client/util/RichTextRules.ts
parentf1d89e46aa4a2d10dcbe6d36ecf2aebdb348f887 (diff)
added style shortcut for text
Diffstat (limited to 'src/client/util/RichTextRules.ts')
-rw-r--r--src/client/util/RichTextRules.ts22
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;