aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/FormattedTextBox.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/FormattedTextBox.tsx')
-rw-r--r--src/client/views/nodes/FormattedTextBox.tsx45
1 files changed, 24 insertions, 21 deletions
diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx
index e59179874..e872ea48b 100644
--- a/src/client/views/nodes/FormattedTextBox.tsx
+++ b/src/client/views/nodes/FormattedTextBox.tsx
@@ -8,6 +8,7 @@ import { FieldWaiting, Opt } from "../../../fields/Field";
import { KeyStore } from "../../../fields/KeyStore";
import { RichTextField } from "../../../fields/RichTextField";
import { inpRules } from "../../util/RichTextRules";
+import { Schema } from "prosemirror-model";
import { schema } from "../../util/RichTextSchema";
import { TooltipTextMenu } from "../../util/TooltipTextMenu";
import { ContextMenu } from "../../views/ContextMenu";
@@ -15,6 +16,8 @@ import { Main } from "../Main";
import { FieldView, FieldViewProps } from "./FieldView";
import "./FormattedTextBox.scss";
import React = require("react");
+import { undoItem } from "prosemirror-menu";
+import buildKeymap from "../../util/ProsemirrorKeymap";
const { buildMenuItems } = require("prosemirror-example-setup");
const { menuBar } = require("prosemirror-menu");
@@ -61,9 +64,9 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
);
// doc.SetData(fieldKey, JSON.stringify(state.toJSON()), RichTextField);
}
- };
+ }
- get FieldDoc() { return this.props.fieldKey === KeyStore.Archives ? Main.Instance._textDoc! : this.props.doc; }
+ get FieldDoc() { return this.props.fieldKey === KeyStore.Archives ? Main.Instance._textDoc! : this.props.Document; }
get FieldKey() { return this.props.fieldKey === KeyStore.Archives ? KeyStore.Data : this.props.fieldKey; }
componentDidMount() {
@@ -72,7 +75,7 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
inpRules, //these currently don't do anything, but could eventually be helpful
plugins: [
history(),
- keymap({ "Mod-z": undo, "Mod-y": redo }),
+ keymap(buildKeymap(schema)),
keymap(baseKeymap),
this.tooltipMenuPlugin()
]
@@ -81,18 +84,19 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
if (this.props.fieldKey === KeyStore.Archives) {
this._inputReactionDisposer = reaction(() => Main.Instance._textDoc && Main.Instance._textDoc.Id,
() => {
- if (this._editorView)
- this._editorView!.destroy();
+ if (this._editorView) {
+ this._editorView.destroy();
+ }
this.setupEditor(config);
}
- )
+ );
}
this._reactionDisposer = reaction(
() => {
const field = this.FieldDoc.GetT(this.FieldKey, RichTextField);
- return field && field != FieldWaiting ? field.Data : undefined;
+ return field && field !== FieldWaiting ? field.Data : undefined;
},
field => {
if (field && this._editorView) {
@@ -109,7 +113,7 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
let state: EditorState;
let field = this.FieldDoc.GetT(this.FieldKey, RichTextField);
- if (field && field != FieldWaiting && field.Data) {
+ if (field && field !== FieldWaiting && field.Data) {
state = EditorState.fromJSON(config, JSON.parse(field.Data));
} else {
state = EditorState.create(config);
@@ -122,7 +126,7 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
}
if (this.props.selectOnLoad) {
- this.props.select();
+ this.props.select(false);
this._editorView!.focus();
}
}
@@ -145,30 +149,28 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
@action
onChange(e: React.ChangeEvent<HTMLInputElement>) {
- const { fieldKey, doc } = this.props;
- doc.SetOnPrototype(fieldKey, new RichTextField(e.target.value));
+ const { fieldKey, Document } = this.props;
+ Document.SetOnPrototype(fieldKey, new RichTextField(e.target.value));
// doc.SetData(fieldKey, e.target.value, RichTextField);
}
onPointerDown = (e: React.PointerEvent): void => {
if (e.buttons === 1 && this.props.isSelected() && !e.altKey) {
e.stopPropagation();
}
- if (e.buttons === 1 && this.props.fieldKey !== KeyStore.Archives)
- e.preventDefault();
- };
+ }
onPointerUp = (e: React.PointerEvent): void => {
if (e.buttons === 1 && this.props.isSelected() && !e.altKey) {
e.stopPropagation();
}
if (this.props.fieldKey !== KeyStore.Archives) {
e.preventDefault();
- Main.Instance.SetTextDoc(this.props.doc, this._ref.current!);
+ Main.Instance.SetTextDoc(this.props.Document, this._ref.current!);
}
- };
+ }
onFocused = (e: React.FocusEvent): void => {
if (this.props.fieldKey !== KeyStore.Archives) {
- Main.Instance.SetTextDoc(this.props.doc, this._ref.current!);
+ Main.Instance.SetTextDoc(this.props.Document, this._ref.current!);
}
}
@@ -193,13 +195,13 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
// ]
// })
// e.stopPropagation()
- };
+ }
onPointerWheel = (e: React.WheelEvent): void => {
e.stopPropagation();
- };
+ }
- tooltipMenuPlugin() {
+ tooltipMenuPlugin(): Plugin<any, any> {
return new Plugin({
view(_editorView) {
return new TooltipTextMenu(_editorView);
@@ -207,7 +209,8 @@ export class FormattedTextBox extends React.Component<FieldViewProps> {
});
}
onKeyPress(e: React.KeyboardEvent) {
- e.stopPropagation();
+ console.log(e.keyCode)
+ // e.stopPropagation();
// stop propagation doesn't seem to stop propagation of native keyboard events.
// so we set a flag on the native event that marks that the event's been handled.
// (e.nativeEvent as any).DASHFormattedTextBoxHandled = true;