aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/util/RichTextSchema.tsx35
-rw-r--r--src/client/util/TooltipTextMenu.tsx6
2 files changed, 31 insertions, 10 deletions
diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index 84c2fd5c3..db62f3ac1 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -1,5 +1,5 @@
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { Schema, NodeSpec, MarkSpec, DOMOutputSpecArray, NodeType } from "prosemirror-model";
+import { Schema, NodeSpec, MarkSpec, DOMOutputSpecArray, NodeType, Slice } from "prosemirror-model";
import { joinUp, lift, setBlockType, toggleMark, wrapIn, selectNodeForward, deleteSelection } from 'prosemirror-commands';
import { redo, undo } from 'prosemirror-history';
import { orderedList, bulletList, listItem, } from 'prosemirror-schema-list';
@@ -26,6 +26,13 @@ export const nodes: { [index: string]: NodeSpec } = {
toDOM() { return pDOM; }
},
+ // starmine: {
+ // inline: true,
+ // attrs: { oldtext: { default: "" } },
+ // group: "inline",
+ // toDOM() { return ["star", "㊉"]; },
+ // parseDOM: [{ tag: "star" }]
+ // },
// :: NodeSpec A blockquote (`<blockquote>`) wrapping one or more blocks.
blockquote: {
@@ -446,25 +453,30 @@ export class SummarizedView {
_collapsed: HTMLElement;
constructor(node: any, view: any, getPos: any) {
this._collapsed = document.createElement("span");
- this._collapsed.textContent = "...";
+ this._collapsed.textContent = "㊉";
this._collapsed.style.opacity = "0.5";
- this._collapsed.style.background = "yellow";
+ // this._collapsed.style.background = "yellow";
this._collapsed.style.position = "relative";
this._collapsed.style.width = "40px";
this._collapsed.style.height = "20px";
this._collapsed.onpointerdown = function (e: any) {
console.log("star pressed!");
if (node.attrs.visibility) {
+ node.attrs.visibility = !node.attrs.visibility;
+ console.log("content is visible");
let y = getPos();
view.dispatch(view.state.tr.setSelection(TextSelection.create(view.state.doc, y + 1, y + 1 + node.attrs.oldtextlen)));
view.dispatch(view.state.tr.deleteSelection(view.state, () => { }));
-
+ //this._collapsed.textContent = "㊀";
} else {
+ node.attrs.visibility = !node.attrs.visibility;
+ console.log("content is invisible");
let y = getPos();
+ console.log("PASTING " + node.attrs.oldtext.toString());
view.dispatch(view.state.tr.setSelection(TextSelection.create(view.state.doc, y + 1, y + 1)));
view.dispatch(view.state.tr.replaceSelection(node.attrs.oldtext));
+ //this._collapsed.textContent = "㊉";
}
- node.attrs.visibility = !node.attrs.visibility;
e.preventDefault();
e.stopPropagation();
};
@@ -485,4 +497,15 @@ export class SummarizedView {
//
// To reuse elements from this schema, extend or read from its
// `spec.nodes` and `spec.marks` [properties](#model.Schema.spec).
-export const schema = new Schema({ nodes, marks }); \ No newline at end of file
+export const schema = new Schema({ nodes, marks });
+
+const fromJson = schema.nodeFromJSON;
+
+schema.nodeFromJSON = (json: any) => {
+ if (json.type !== "star") {
+ return fromJson(json);
+ }
+ let x = fromJson(json);
+ x.attrs.oldtext = Slice.fromJSON(x.attrs.oldtext);
+ return x;
+} \ No newline at end of file
diff --git a/src/client/util/TooltipTextMenu.tsx b/src/client/util/TooltipTextMenu.tsx
index 6cc71be39..a2288a496 100644
--- a/src/client/util/TooltipTextMenu.tsx
+++ b/src/client/util/TooltipTextMenu.tsx
@@ -274,11 +274,9 @@ export class TooltipTextMenu {
insertStar(state: EditorState<any>, dispatch: any) {
console.log("creating star...");
- let newNode = schema.nodes.star.create();
+ let newNode = schema.nodes.star.create({ visibility: false, oldtext: state.selection.content(), oldtextlen: state.selection.to - state.selection.from });
if (dispatch) {
- newNode.attrs.visibility = false;
- newNode.attrs.oldtext = state.selection.content();
- newNode.attrs.oldtextlen = state.selection.to - state.selection.from;
+ console.log(newNode.attrs.oldtext.toString());
dispatch(state.tr.replaceSelectionWith(newNode));
}
return true;