aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorab <abdullah_ahmed@brown.edu>2019-06-11 12:02:00 -0400
committerab <abdullah_ahmed@brown.edu>2019-06-11 12:02:00 -0400
commitbf73b629c78d0db0b8d4bcf6aadd6609b3fe1689 (patch)
treebfb3aeaf6eecb7abb90b2213f2f5bce80dcdc2fe
parentef24cc445aa466cae3b6c40029f7d7bc9baa81b7 (diff)
star node, trying to set selection as its attribute for copy/paste like behavior
-rw-r--r--src/client/util/RichTextSchema.tsx13
-rw-r--r--src/client/util/TooltipTextMenu.tsx23
-rw-r--r--src/client/views/nodes/FormattedTextBox.tsx6
3 files changed, 29 insertions, 13 deletions
diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index 8fae821a5..a29036f19 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -28,6 +28,7 @@ export const nodes: { [index: string]: NodeSpec } = {
star: {
inline: true,
+ attrs: { oldtext: { default: "suhhhh" } },
group: "inline",
toDOM() { return ["star", "🟊"]; },
parseDOM: [{ tag: "star" }]
@@ -424,6 +425,18 @@ export class ImageResizeView {
this._handle.style.display = "none";
}
}
+
+export class SummarizedView {
+ _collapsed: HTMLElement;
+ _selection: any;
+ constructor(node: any) {
+ this._collapsed = document.createElement("star");
+ this._collapsed.onpointerdown = function (e: any) {
+ console.log("star pressed!");
+ };
+
+ }
+}
// :: Schema
// This schema rougly corresponds to the document schema used by
// [CommonMark](http://commonmark.org/), minus the list elements,
diff --git a/src/client/util/TooltipTextMenu.tsx b/src/client/util/TooltipTextMenu.tsx
index 366105ad9..c5d016547 100644
--- a/src/client/util/TooltipTextMenu.tsx
+++ b/src/client/util/TooltipTextMenu.tsx
@@ -1,6 +1,6 @@
import { action, IReactionDisposer, reaction } from "mobx";
import { Dropdown, DropdownSubmenu, MenuItem, MenuItemSpec, renderGrouped, icons, } from "prosemirror-menu"; //no import css
-import { baseKeymap, lift } from "prosemirror-commands";
+import { baseKeymap, lift, deleteSelection } from "prosemirror-commands";
import { history, redo, undo } from "prosemirror-history";
import { keymap } from "prosemirror-keymap";
import { EditorState, Transaction, NodeSelection, TextSelection } from "prosemirror-state";
@@ -28,6 +28,7 @@ import { CollectionDockingView } from "../views/collections/CollectionDockingVie
import { DocumentManager } from "./DocumentManager";
import { Id } from "../../new_fields/FieldSymbols";
import { Utils } from "../../Utils";
+// import { wrap } from "module";
const SVG = "http://www.w3.org/2000/svg";
@@ -74,7 +75,7 @@ export class TooltipTextMenu {
{ command: toggleMark(schema.marks.strikethrough), dom: this.icon("S", "strikethrough", "Strikethrough") },
{ command: toggleMark(schema.marks.superscript), dom: this.icon("s", "superscript", "Superscript") },
{ command: toggleMark(schema.marks.subscript), dom: this.icon("s", "subscript", "Subscript") },
- { command: toggleMark(schema.marks.collapse), dom: this.icon("C", 'collapse', 'Collapse') }
+ { command: deleteSelection, dom: this.icon("C", 'collapse', 'Collapse') }
// { command: wrapInList(schema.nodes.bullet_list), dom: this.icon(":", "bullets") },
// { command: wrapInList(schema.nodes.ordered_list), dom: this.icon("1)", "bullets") },
// { command: lift, dom: this.icon("<", "lift") },
@@ -274,18 +275,18 @@ export class TooltipTextMenu {
insertStar(state: EditorState<any>, dispatch: any) {
console.log("creating star...");
let type = schema.nodes.star;
- //let {$from} = state.selection;
let select = state.selection;
+ let node = select.$from.nodeAfter;
+ if (node) {
+ console.log("node");
+ console.log(node.type.name);
+ if (node.type.name === "star") {
+ console.log(node.attrs.oldtext);
+ }
+ }
if (dispatch) {
- dispatch(state.tr.setMeta('select.visible', false));
+ dispatch(state.tr.replaceSelectionWith(type.create({ attrs: { oldtext: select } })));
}
- // console.log($from);
- // if (!$from.parent.canReplaceWith($from.index(), $from.index(), type)) {
- // return false;
- // }
- // if (dispatch) {
- // dispatch(state.tr.replaceSelectionWith(type.create()));
- // }
return true;
}
diff --git a/src/client/views/nodes/FormattedTextBox.tsx b/src/client/views/nodes/FormattedTextBox.tsx
index 5c635cc0c..b40c6d580 100644
--- a/src/client/views/nodes/FormattedTextBox.tsx
+++ b/src/client/views/nodes/FormattedTextBox.tsx
@@ -16,7 +16,7 @@ import { DocumentManager } from "../../util/DocumentManager";
import { DragManager } from "../../util/DragManager";
import buildKeymap from "../../util/ProsemirrorKeymap";
import { inpRules } from "../../util/RichTextRules";
-import { ImageResizeView, schema } from "../../util/RichTextSchema";
+import { SummarizedView, ImageResizeView, schema } from "../../util/RichTextSchema";
import { SelectionManager } from "../../util/SelectionManager";
import { TooltipLinkingMenu } from "../../util/TooltipLinkingMenu";
import { TooltipTextMenu } from "../../util/TooltipTextMenu";
@@ -29,6 +29,7 @@ import { FieldView, FieldViewProps } from "./FieldView";
import "./FormattedTextBox.scss";
import React = require("react");
import { DocUtils } from '../../documents/Documents';
+import { start } from 'repl';
library.add(faEdit);
library.add(faSmile);
@@ -189,7 +190,8 @@ export class FormattedTextBox extends DocComponent<(FieldViewProps & FormattedTe
state: field && field.Data ? EditorState.fromJSON(config, JSON.parse(field.Data)) : EditorState.create(config),
dispatchTransaction: this.dispatchTransaction,
nodeViews: {
- image(node, view, getPos) { return new ImageResizeView(node, view, getPos); }
+ image(node, view, getPos) { return new ImageResizeView(node, view, getPos); },
+ //star(node, view, getPos) { return new SummarizedView(node); }
}
});
let text = StrCast(this.props.Document.documentText);