From 33cb4ee1c5a6ff07f2c1096d94259c0e2999f1c1 Mon Sep 17 00:00:00 2001 From: Aubrey Li Date: Tue, 15 Mar 2022 18:59:41 -0400 Subject: marquee create slide --- .../CollectionStackingViewFieldColumn.tsx | 13 +++++- .../collections/collectionFreeForm/MarqueeView.tsx | 48 +++++++++++++++++++-- src/client/views/nodes/trails/PresBox.tsx | 49 ++++++++++++++-------- src/fields/InkField.ts | 3 +- 4 files changed, 89 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionStackingViewFieldColumn.tsx b/src/client/views/collections/CollectionStackingViewFieldColumn.tsx index 58289a161..7f96217b8 100644 --- a/src/client/views/collections/CollectionStackingViewFieldColumn.tsx +++ b/src/client/views/collections/CollectionStackingViewFieldColumn.tsx @@ -59,6 +59,7 @@ export class CollectionStackingViewFieldColumn extends React.Component { @@ -69,6 +70,7 @@ export class CollectionStackingViewFieldColumn extends React.Component {this.props.renderChildren(this.props.docList)} - {!this.props.chromeHidden && type !== DocumentType.PRES ? + {!this.props.chromeHidden ?
-
: null} + + : null + } + + } ; diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index 08da682bb..dbd15be3b 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -25,6 +25,7 @@ import { PreviewCursor } from "../../PreviewCursor"; import { CollectionDockingView } from "../CollectionDockingView"; import { SubCollectionViewProps } from "../CollectionSubView"; import { CollectionView } from "../CollectionView"; +import { CollectionStackingViewFieldColumn } from "../CollectionStackingViewFieldColumn"; import { MarqueeOptionsMenu } from "./MarqueeOptionsMenu"; import "./MarqueeView.scss"; import React = require("react"); @@ -51,7 +52,7 @@ export class MarqueeView extends React.Component 100)) { + if (PresBox.startMarquee) { + console.log(PresBox.startMarquee); + this.pinMarqueeView(); + PresBox.startMarquee = false; + console.log(PresBox.startMarquee); + } + if (!this._commandExecuted && (Math.abs(this.Bounds.height * this.Bounds.width) > 100) && !PresBox.startMarquee) { MarqueeOptionsMenu.Instance.createCollection = this.collection; MarqueeOptionsMenu.Instance.delete = this.delete; MarqueeOptionsMenu.Instance.summarize = this.summary; @@ -380,6 +387,41 @@ export class MarqueeView extends React.Component { + const doc = this.props.Document; + const curPres = Cast(Doc.UserDoc().activePresentation, Doc) as Doc; + if (curPres) { + console.log(curPres); + if (doc === curPres) { alert("Cannot pin presentation document to itself"); return; } + const pinDoc = Doc.MakeAlias(doc); + pinDoc.presentationTargetDoc = doc; + pinDoc.presMovement = PresMovement.Zoom; + pinDoc.groupWithUp = false; + pinDoc.context = curPres; + pinDoc.title = doc.title + " - Slide"; + const presArray = PresBox.Instance?.sortArray(); + const size = PresBox.Instance?._selectedArray.size; + const presSelected = presArray && size ? presArray[size - 1] : undefined; + Doc.AddDocToList(curPres, "data", pinDoc, presSelected); + if (curPres.expandBoolean) pinDoc.presExpandInlineButton = true; + if (!DocumentManager.Instance.getDocumentView(curPres)) { + CollectionDockingView.AddSplit(curPres, "right"); + } + PresBox.Instance?._selectedArray.clear(); + pinDoc && PresBox.Instance?._selectedArray.set(pinDoc, undefined); //Updates selected array + const index = PresBox.Instance?.childDocs.indexOf(pinDoc); + index && (curPres._itemIndex = index); + const scale = Math.min(this.props.PanelWidth() / this.Bounds.width, this.props.PanelHeight() / this.Bounds.height); + pinDoc.presPinView = true; + pinDoc.presPinViewX = this.Bounds.left + this.Bounds.width / 2; + pinDoc.presPinViewY = this.Bounds.top + this.Bounds.height / 2; + pinDoc.presPinViewScale = scale; + } + this.hideMarquee(); + } + @undoBatch @action pinWithView = (e: KeyboardEvent | React.PointerEvent | undefined) => { @@ -647,7 +689,7 @@ export class MarqueeView extends React.Component e.preventDefault()} diff --git a/src/client/views/nodes/trails/PresBox.tsx b/src/client/views/nodes/trails/PresBox.tsx index 48223a5f0..5a7604ca4 100644 --- a/src/client/views/nodes/trails/PresBox.tsx +++ b/src/client/views/nodes/trails/PresBox.tsx @@ -94,6 +94,8 @@ export class PresBox extends ViewBoxBaseComponent @observable _expandBoolean: boolean = false; private _disposers: { [name: string]: IReactionDisposer } = {}; + + @observable static startMarquee: boolean = false; // onclick "+ new slide" in presentation mode, set as true, then when marquee selection finish, onPointerUp automatically triggers PinWithView @observable private transitionTools: boolean = false; @observable private newDocumentTools: boolean = false; @observable private progressivizeTools: boolean = false; @@ -2422,6 +2424,11 @@ export class PresBox extends ViewBoxBaseComponent else this.pauseAutoPres(); } + @action + startMarqueeCreateSlide = () => { + PresBox.startMarquee = true; + } + render() { // calling this method for keyEvents this.isPres; @@ -2455,24 +2462,30 @@ export class PresBox extends ViewBoxBaseComponent {this.toolbar} {this.newDocumentToolbarDropdown}
- {mode !== CollectionViewType.Invalid ? - - : (null) - } +
+ {mode !== CollectionViewType.Invalid ? + : (null) + } +
+ + { // if the document type is a presentation, then the collection stacking view has a "+ new slide" button at the bottom of the stack +
+ +
}
; } diff --git a/src/fields/InkField.ts b/src/fields/InkField.ts index 560cf3d63..fe6158154 100644 --- a/src/fields/InkField.ts +++ b/src/fields/InkField.ts @@ -11,7 +11,8 @@ export enum InkTool { Pen = "pen", Highlighter = "highlighter", Eraser = "eraser", - Stamp = "stamp" + Stamp = "stamp", + PresentationPin = 'presentationpin' } -- cgit v1.2.3-70-g09d2