aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/ColorBox.tsx
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-10-15 16:25:10 -0400
committerbob <bcz@cs.brown.edu>2019-10-15 16:25:10 -0400
commit33811c112c7e479813908ba10f72813954a3e289 (patch)
tree8e424501ea479d03423660c3251a1afce8c060c0 /src/client/views/nodes/ColorBox.tsx
parent03f86e3b7b450699073c47aa43af23d31e0765d4 (diff)
working version of inking buttons
Diffstat (limited to 'src/client/views/nodes/ColorBox.tsx')
-rw-r--r--src/client/views/nodes/ColorBox.tsx33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/client/views/nodes/ColorBox.tsx b/src/client/views/nodes/ColorBox.tsx
index d280258ae..87c91c121 100644
--- a/src/client/views/nodes/ColorBox.tsx
+++ b/src/client/views/nodes/ColorBox.tsx
@@ -7,6 +7,9 @@ import { InkingControl } from "../InkingControl";
import { DocStaticComponent } from "../DocComponent";
import { documentSchema } from "./DocumentView";
import { makeInterface } from "../../../new_fields/Schema";
+import { trace, reaction, observable, action, IReactionDisposer } from "mobx";
+import { SelectionManager } from "../../util/SelectionManager";
+import { StrCast } from "../../../new_fields/Types";
type ColorDocument = makeInterface<[typeof documentSchema]>;
const ColorDocument = makeInterface(documentSchema);
@@ -14,9 +17,35 @@ const ColorDocument = makeInterface(documentSchema);
@observer
export class ColorBox extends DocStaticComponent<FieldViewProps, ColorDocument>(ColorDocument) {
public static LayoutString(fieldKey?: string) { return FieldView.LayoutString(ColorBox, fieldKey); }
+ _selectedDisposer: IReactionDisposer | undefined;
+ componentDidMount() {
+ this._selectedDisposer = reaction(() => SelectionManager.SelectedDocuments(),
+ action(() => this._startupColor = SelectionManager.SelectedDocuments().length ? StrCast(SelectionManager.SelectedDocuments()[0].Document.backgroundColor, "black") : "black"),
+ { fireImmediately: true });
+
+ // compare to this reaction that used to be in Selection Manager
+ // reaction(() => manager.SelectedDocuments, sel => {
+ // let targetColor = "#FFFFFF";
+ // if (sel.length > 0) {
+ // let firstView = sel[0];
+ // let doc = firstView.props.Document;
+ // let targetDoc = doc.isTemplate ? doc : Doc.GetProto(doc);
+ // let stored = StrCast(targetDoc.backgroundColor);
+ // stored.length > 0 && (targetColor = stored);
+ // }
+ // InkingControl.Instance.updateSelectedColor(targetColor);
+ // }, { fireImmediately: true });
+ }
+ componentWillUnmount() {
+ this._selectedDisposer && this._selectedDisposer();
+ }
+
+ @observable _startupColor = "black";
+
render() {
- return <div className={`colorBox-container${this.active() ? "-interactive" : ""}`} onPointerDown={e => e.button === 0 && !e.ctrlKey && e.stopPropagation()}>
- <SketchPicker color={InkingControl.Instance.selectedColor} onChange={InkingControl.Instance.switchColor} />
+ return <div className={`colorBox-container${this.active() ? "-interactive" : ""}`}
+ onPointerDown={e => e.button === 0 && !e.ctrlKey && e.stopPropagation()}>
+ <SketchPicker color={this._startupColor} onChange={InkingControl.Instance.switchColor} />
</div>;
}
} \ No newline at end of file