From 81100809b0f824cfc1481b19dbe38c31814539e1 Mon Sep 17 00:00:00 2001
From: monikahedman <monika_hedman@brown.edu>
Date: Wed, 14 Aug 2019 17:20:57 -0400
Subject: drag new webpage and easy URL change working

---
 src/client/views/nodes/WebBox.tsx | 87 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 84 insertions(+), 3 deletions(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index c8749b7cd..ff5297783 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -7,13 +7,23 @@ import { FieldView, FieldViewProps } from './FieldView';
 import "./WebBox.scss";
 import React = require("react");
 import { InkTool } from "../../../new_fields/InkField";
-import { Cast, FieldValue, NumCast } from "../../../new_fields/Types";
+import { Cast, FieldValue, NumCast, StrCast } from "../../../new_fields/Types";
 import { Utils } from "../../../Utils";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { observable, action, computed } from "mobx";
+import { listSpec } from "../../../new_fields/Schema";
+import { Field, FieldResult } from "../../../new_fields/Doc";
+import { RefField } from "../../../new_fields/RefField";
+import { ObjectField } from "../../../new_fields/ObjectField";
+import { updateSourceFile } from "typescript";
+import { KeyValueBox } from "./KeyValueBox";
 
 @observer
 export class WebBox extends React.Component<FieldViewProps> {
 
     public static LayoutString() { return FieldView.LayoutString(WebBox); }
+    @observable private collapsed: boolean = true;
+    @observable private url: string = "";
 
     componentWillMount() {
 
@@ -30,6 +40,76 @@ export class WebBox extends React.Component<FieldViewProps> {
         }
     }
 
+    @action
+    onURLChange = (e: React.ChangeEvent<HTMLInputElement>) => {
+        this.url = e.target.value;
+    }
+
+    @action
+    submitURL = () => {
+        const script = KeyValueBox.CompileKVPScript(`new WebField("${this.url}")`);
+        if (!script) return;
+        KeyValueBox.ApplyKVPScript(this.props.Document, "data", script);
+        let mod = document.getElementById("webpage-input");
+        if (mod) mod.style.display = "none";
+    }
+
+    @computed
+    get getURL() {
+        let urlField: FieldResult<WebField> = Cast(this.props.Document.data, WebField)
+        if (urlField) return urlField.url.toString();
+        return "";
+    }
+
+    onValueKeyDown = async (e: React.KeyboardEvent) => {
+        if (e.key === "Enter") {
+            e.stopPropagation();
+            this.submitURL();
+        }
+    }
+
+    urlEditor() {
+        return (
+            <div className="webView-urlEditor" style={{ top: this.collapsed ? -70 : 0 }}>
+                <div className="urlEditor">
+                    <div className="collectionViewBaseChrome">
+                        <button className="collectionViewBaseChrome-collapse"
+                            style={{
+                                top: this.collapsed ? 70 : 10,
+                                transform: `rotate(${this.collapsed ? 180 : 0}deg) scale(${this.collapsed ? 0.5 : 1}) translate(${this.collapsed ? "-100%, -100%" : "0, 0"})`,
+                                opacity: (this.collapsed && !this.props.isSelected()) ? 0 : 0.9,
+                                left: (this.collapsed ? 0 : "unset"),
+                            }}
+                            title="Collapse Url Editor" onClick={this.toggleCollapse}>
+                            <FontAwesomeIcon icon="caret-up" size="2x" />
+                        </button>
+                        <div style={{ marginLeft: 54, width: "100%", display: this.collapsed ? "none" : "flex" }}>
+                            <input className="webpage-urlInput"
+                                placeholder="ENTER URL"
+                                value={this.getURL}
+                                onChange={this.onURLChange}
+                                onKeyDown={this.onValueKeyDown}
+                            // onPointerDown={this.openViewSpecs}
+                            />
+                            <button className="submitUrl" onClick={this.submitURL}>
+                                SUBMIT URL
+                            </button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        );
+    }
+
+    @action
+    toggleCollapse = () => {
+        // this.props.CollectionView.props.Document.chromeStatus = this.props.CollectionView.props.Document.chromeStatus === "enabled" ? "this.collapsed" : "enabled";
+        // if (this.props.collapse) {
+        //     this.props.collapse(this.props.CollectionView.props.Document.chromeStatus !== "enabled");
+        // }
+        this.collapsed = !this.collapsed;
+    }
+
     _ignore = 0;
     onPreWheel = (e: React.WheelEvent) => {
         this._ignore = e.timeStamp;
@@ -53,12 +133,13 @@ export class WebBox extends React.Component<FieldViewProps> {
         if (field instanceof HtmlField) {
             view = <span id="webBox-htmlSpan" dangerouslySetInnerHTML={{ __html: field.html }} />;
         } else if (field instanceof WebField) {
-            view = <iframe src={Utils.CorsProxy(field.url.href)} style={{ position: "absolute", width: "100%", height: "100%" }} />;
+            view = <iframe src={Utils.CorsProxy(field.url.href)} style={{ position: "absolute", width: "100%", height: "100%", top: 0 }} />;
         } else {
-            view = <iframe src={"https://crossorigin.me/https://cs.brown.edu"} style={{ position: "absolute", width: "100%", height: "100%" }} />;
+            view = <iframe src={"https://crossorigin.me/https://cs.brown.edu"} style={{ position: "absolute", width: "100%", height: "100%", top: 0 }} />;
         }
         let content =
             <div style={{ width: "100%", height: "100%", position: "absolute" }} onWheel={this.onPostWheel} onPointerDown={this.onPostPointer} onPointerMove={this.onPostPointer} onPointerUp={this.onPostPointer}>
+                {this.urlEditor()}
                 {view}
             </div>;
 
-- 
cgit v1.2.3-70-g09d2


From 819ca614b022417776580251cb0fdc419ea47ddd Mon Sep 17 00:00:00 2001
From: monikahedman <monika_hedman@brown.edu>
Date: Thu, 15 Aug 2019 15:33:16 -0400
Subject: url editable again

---
 src/client/views/nodes/WebBox.tsx | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index ff5297783..dc30dbed3 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -17,6 +17,7 @@ import { RefField } from "../../../new_fields/RefField";
 import { ObjectField } from "../../../new_fields/ObjectField";
 import { updateSourceFile } from "typescript";
 import { KeyValueBox } from "./KeyValueBox";
+import { setReactionScheduler } from "mobx/lib/internal";
 
 @observer
 export class WebBox extends React.Component<FieldViewProps> {
@@ -38,11 +39,16 @@ export class WebBox extends React.Component<FieldViewProps> {
                 this.props.Document.height = NumCast(this.props.Document.width) / youtubeaspect;
             }
         }
+
+        this.setURL();
     }
 
     @action
     onURLChange = (e: React.ChangeEvent<HTMLInputElement>) => {
+        console.log("changing")
+        console.log(e.target.value)
         this.url = e.target.value;
+        console.log(this.url)
     }
 
     @action
@@ -50,8 +56,13 @@ export class WebBox extends React.Component<FieldViewProps> {
         const script = KeyValueBox.CompileKVPScript(`new WebField("${this.url}")`);
         if (!script) return;
         KeyValueBox.ApplyKVPScript(this.props.Document, "data", script);
-        let mod = document.getElementById("webpage-input");
-        if (mod) mod.style.display = "none";
+    }
+
+    @action
+    setURL() {
+        let urlField: FieldResult<WebField> = Cast(this.props.Document.data, WebField)
+        if (urlField) this.url = urlField.url.toString();
+        else this.url = "";
     }
 
     @computed
@@ -86,7 +97,7 @@ export class WebBox extends React.Component<FieldViewProps> {
                         <div style={{ marginLeft: 54, width: "100%", display: this.collapsed ? "none" : "flex" }}>
                             <input className="webpage-urlInput"
                                 placeholder="ENTER URL"
-                                value={this.getURL}
+                                value={this.url}
                                 onChange={this.onURLChange}
                                 onKeyDown={this.onValueKeyDown}
                             // onPointerDown={this.openViewSpecs}
-- 
cgit v1.2.3-70-g09d2


From 70a3cc69966c52fb0b84809a942d0e363a315684 Mon Sep 17 00:00:00 2001
From: monikahedman <monika_hedman@brown.edu>
Date: Thu, 15 Aug 2019 15:39:39 -0400
Subject: things workin

---
 src/client/views/nodes/WebBox.tsx | 7 -------
 1 file changed, 7 deletions(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index dc30dbed3..9a177ca54 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -65,13 +65,6 @@ export class WebBox extends React.Component<FieldViewProps> {
         else this.url = "";
     }
 
-    @computed
-    get getURL() {
-        let urlField: FieldResult<WebField> = Cast(this.props.Document.data, WebField)
-        if (urlField) return urlField.url.toString();
-        return "";
-    }
-
     onValueKeyDown = async (e: React.KeyboardEvent) => {
         if (e.key === "Enter") {
             e.stopPropagation();
-- 
cgit v1.2.3-70-g09d2


From 1c1d4d4865b5dd90489cdde4c8f3dfceba60496b Mon Sep 17 00:00:00 2001
From: monikahedman <monika_hedman@brown.edu>
Date: Thu, 15 Aug 2019 16:14:17 -0400
Subject: done!

---
 src/client/views/nodes/WebBox.tsx | 8 --------
 1 file changed, 8 deletions(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index 9a177ca54..91170e99a 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -45,10 +45,7 @@ export class WebBox extends React.Component<FieldViewProps> {
 
     @action
     onURLChange = (e: React.ChangeEvent<HTMLInputElement>) => {
-        console.log("changing")
-        console.log(e.target.value)
         this.url = e.target.value;
-        console.log(this.url)
     }
 
     @action
@@ -93,7 +90,6 @@ export class WebBox extends React.Component<FieldViewProps> {
                                 value={this.url}
                                 onChange={this.onURLChange}
                                 onKeyDown={this.onValueKeyDown}
-                            // onPointerDown={this.openViewSpecs}
                             />
                             <button className="submitUrl" onClick={this.submitURL}>
                                 SUBMIT URL
@@ -107,10 +103,6 @@ export class WebBox extends React.Component<FieldViewProps> {
 
     @action
     toggleCollapse = () => {
-        // this.props.CollectionView.props.Document.chromeStatus = this.props.CollectionView.props.Document.chromeStatus === "enabled" ? "this.collapsed" : "enabled";
-        // if (this.props.collapse) {
-        //     this.props.collapse(this.props.CollectionView.props.Document.chromeStatus !== "enabled");
-        // }
         this.collapsed = !this.collapsed;
     }
 
-- 
cgit v1.2.3-70-g09d2


From 7e4aacb09e8c80a3452ca24145b1f094170a897b Mon Sep 17 00:00:00 2001
From: monikahedman <monika_hedman@brown.edu>
Date: Thu, 15 Aug 2019 16:44:57 -0400
Subject: cleaning up

---
 src/client/util/RichTextSchema.tsx      | 43 -------------------
 src/client/views/GlobalKeyHandler.ts    |  2 -
 src/client/views/MainOverlayTextBox.tsx |  3 --
 src/client/views/nodes/WebBox.scss      | 75 +--------------------------------
 src/client/views/nodes/WebBox.tsx       |  4 +-
 5 files changed, 4 insertions(+), 123 deletions(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index a581b7578..8a15c212d 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -526,49 +526,6 @@ export class ImageResizeView {
     }
 }
 
-export class CheckboxView {
-    _view: any;
-    _collapsed: HTMLElement;
-
-    constructor(node: any, view: any, getPos: any) {
-        this._collapsed = document.createElement("span");
-        this._collapsed.textContent = node.attrs.visibility ? "⬛" : "⬜";
-        this._collapsed.style.position = "relative";
-        // this._collapsed.style.width = "80px";
-        this._collapsed.style.height = "20px";
-        let self = this;
-        this._view = view;
-        const js = node.toJSON;
-        node.toJSON = function () {
-
-            return js.apply(this, arguments);
-        };
-        this._collapsed.onpointerdown = function (e: any) {
-            console.log(node.attrs.visibility)
-            if (node.attrs.visibility) {
-                let y = getPos();
-                const attrs = { ...node.attrs };
-                attrs.visibility = !attrs.visibility;
-                view.dispatch(view.state.tr.setNodeMarkup(y, undefined, attrs));
-                self._collapsed.textContent = "⬜";
-            } else {
-                let y = getPos();
-                const attrs = { ...node.attrs };
-                attrs.visibility = !attrs.visibility;
-                console.log(attrs.visibility)
-                view.dispatch(view.state.tr.setNodeMarkup(y, undefined, attrs));
-                self._collapsed.textContent = "⬛";
-            }
-            e.preventDefault();
-            e.stopPropagation();
-            console.log(node.attrs.visibility)
-
-        };
-        (this as any).dom = this._collapsed;
-    }
-
-}
-
 export class SummarizedView {
     // TODO: highlight text that is summarized. to find end of region, walk along mark
     _collapsed: HTMLElement;
diff --git a/src/client/views/GlobalKeyHandler.ts b/src/client/views/GlobalKeyHandler.ts
index f55953bd4..833bacedb 100644
--- a/src/client/views/GlobalKeyHandler.ts
+++ b/src/client/views/GlobalKeyHandler.ts
@@ -181,8 +181,6 @@ export default class KeyManager {
                 break;
             case "a":
             case "v":
-                this.printClipboard();
-                break;
             case "x":
             case "c":
                 stopPropagation = false;
diff --git a/src/client/views/MainOverlayTextBox.tsx b/src/client/views/MainOverlayTextBox.tsx
index f315b6d59..b14a1e0ea 100644
--- a/src/client/views/MainOverlayTextBox.tsx
+++ b/src/client/views/MainOverlayTextBox.tsx
@@ -60,20 +60,17 @@ export class MainOverlayTextBox extends React.Component<MainOverlayTextBoxProps>
                         return new Transform(-sxf.translateX, -sxf.translateY, 1 / sxf.scale);
                     };
                     this.setTextDoc(box.props.fieldKey, box.CurrentDiv, xf, BoolCast(box.props.Document.autoHeight, false) || box.props.height === "min-content");
-                    console.log("makin text doc?")
                 }
                 else {
                     this.TextDoc = undefined;
                     this.TextDataDoc = undefined;
                     this.setTextDoc();
-                    console.log("deletin text doc?")
                 }
             });
     }
 
     @action
     private setTextDoc(textFieldKey?: string, div?: HTMLDivElement, tx?: () => Transform, autoHeight?: boolean) {
-        console.log("what is going on")
         if (this._textTargetDiv) {
             this._textTargetDiv.style.color = this._textColor;
         }
diff --git a/src/client/views/nodes/WebBox.scss b/src/client/views/nodes/WebBox.scss
index c37f08eca..07774263c 100644
--- a/src/client/views/nodes/WebBox.scss
+++ b/src/client/views/nodes/WebBox.scss
@@ -52,91 +52,20 @@
         padding-bottom: 10px;
         overflow: hidden;
 
-        .collectionViewBaseChrome {
+        .editorBase {
             display: flex;
 
-            .collectionViewBaseChrome-viewPicker {
-                font-size: 75%;
-                text-transform: uppercase;
-                letter-spacing: 2px;
-                background: rgb(238, 238, 238);
-                color: grey;
-                outline-color: black;
-                border: none;
-                padding: 12px 10px 11px 10px;
-                margin-left: 50px;
-            }
-
-            .collectionViewBaseChrome-viewPicker:active {
-                outline-color: black;
-            }
-
-            .collectionViewBaseChrome-collapse {
+            .editor-collapse {
                 transition: all .5s, opacity 0.3s;
                 position: absolute;
                 width: 40px;
                 transform-origin: top left;
-                // margin-top: 10px;
-            }
-
-            .collectionViewBaseChrome-viewSpecs {
-                margin-left: 10px;
-                display: grid;
-
-
-
-                .collectionViewBaseChrome-viewSpecsMenu {
-                    overflow: hidden;
-                    transition: height .5s, display .5s;
-                    position: absolute;
-                    top: 60px;
-                    z-index: 100;
-                    display: flex;
-                    flex-direction: column;
-                    background: rgb(238, 238, 238);
-                    box-shadow: grey 2px 2px 4px;
-
-                    .qs-datepicker {
-                        left: unset;
-                        right: 0;
-                    }
-
-                    .collectionViewBaseChrome-viewSpecsMenu-row {
-                        display: grid;
-                        grid-template-columns: 150px 200px 150px;
-                        margin-top: 10px;
-                        margin-right: 10px;
-
-                        .collectionViewBaseChrome-viewSpecsMenu-rowLeft,
-                        .collectionViewBaseChrome-viewSpecsMenu-rowMiddle,
-                        .collectionViewBaseChrome-viewSpecsMenu-rowRight {
-                            font-size: 75%;
-                            letter-spacing: 2px;
-                            color: grey;
-                            margin-left: 10px;
-                            padding: 5px;
-                            border: none;
-                            outline-color: black;
-                        }
-                    }
-
-                    .collectionViewBaseChrome-viewSpecsMenu-lastRow {
-                        display: grid;
-                        grid-template-columns: 1fr 1fr 1fr;
-                        grid-gap: 10px;
-                        margin: 10px;
-                    }
-                }
             }
         }
 
         button:hover {
             transform: scale(1);
         }
-
-        .collectionStackingViewChrome-sectionFilter:hover {
-            cursor: text;
-        }
     }
 }
 
diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index 91170e99a..0a4af7318 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -73,8 +73,8 @@ export class WebBox extends React.Component<FieldViewProps> {
         return (
             <div className="webView-urlEditor" style={{ top: this.collapsed ? -70 : 0 }}>
                 <div className="urlEditor">
-                    <div className="collectionViewBaseChrome">
-                        <button className="collectionViewBaseChrome-collapse"
+                    <div className="editorBase">
+                        <button className="editor-collapse"
                             style={{
                                 top: this.collapsed ? 70 : 10,
                                 transform: `rotate(${this.collapsed ? 180 : 0}deg) scale(${this.collapsed ? 0.5 : 1}) translate(${this.collapsed ? "-100%, -100%" : "0, 0"})`,
-- 
cgit v1.2.3-70-g09d2


From eb2d8bdcf11459ab274196b390815e6fc4ddc26e Mon Sep 17 00:00:00 2001
From: monikahedman <monika_hedman@brown.edu>
Date: Thu, 15 Aug 2019 16:45:20 -0400
Subject: we hate lint

---
 src/client/views/nodes/WebBox.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index 0a4af7318..302b45a9a 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -57,7 +57,7 @@ export class WebBox extends React.Component<FieldViewProps> {
 
     @action
     setURL() {
-        let urlField: FieldResult<WebField> = Cast(this.props.Document.data, WebField)
+        let urlField: FieldResult<WebField> = Cast(this.props.Document.data, WebField);
         if (urlField) this.url = urlField.url.toString();
         else this.url = "";
     }
-- 
cgit v1.2.3-70-g09d2


From 797ed4ee343a52738e8619cf336e5f94f64c69c4 Mon Sep 17 00:00:00 2001
From: Bob Zeleznik <zzzman@gmail.com>
Date: Thu, 15 Aug 2019 23:44:45 -0400
Subject: tweaks

---
 src/client/views/nodes/WebBox.tsx | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

(limited to 'src/client/views/nodes/WebBox.tsx')

diff --git a/src/client/views/nodes/WebBox.tsx b/src/client/views/nodes/WebBox.tsx
index 302b45a9a..9b66b2431 100644
--- a/src/client/views/nodes/WebBox.tsx
+++ b/src/client/views/nodes/WebBox.tsx
@@ -1,23 +1,18 @@
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { action, observable } from "mobx";
 import { observer } from "mobx-react";
+import { FieldResult } from "../../../new_fields/Doc";
 import { HtmlField } from "../../../new_fields/HtmlField";
+import { InkTool } from "../../../new_fields/InkField";
+import { Cast, NumCast } from "../../../new_fields/Types";
 import { WebField } from "../../../new_fields/URLField";
+import { Utils } from "../../../Utils";
 import { DocumentDecorations } from "../DocumentDecorations";
 import { InkingControl } from "../InkingControl";
 import { FieldView, FieldViewProps } from './FieldView';
+import { KeyValueBox } from "./KeyValueBox";
 import "./WebBox.scss";
 import React = require("react");
-import { InkTool } from "../../../new_fields/InkField";
-import { Cast, FieldValue, NumCast, StrCast } from "../../../new_fields/Types";
-import { Utils } from "../../../Utils";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { observable, action, computed } from "mobx";
-import { listSpec } from "../../../new_fields/Schema";
-import { Field, FieldResult } from "../../../new_fields/Doc";
-import { RefField } from "../../../new_fields/RefField";
-import { ObjectField } from "../../../new_fields/ObjectField";
-import { updateSourceFile } from "typescript";
-import { KeyValueBox } from "./KeyValueBox";
-import { setReactionScheduler } from "mobx/lib/internal";
 
 @observer
 export class WebBox extends React.Component<FieldViewProps> {
-- 
cgit v1.2.3-70-g09d2

