aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/views/animationtimeline/Keyframe.tsx51
-rw-r--r--src/client/views/animationtimeline/Timeline.scss2
-rw-r--r--src/client/views/animationtimeline/Timeline.tsx100
-rw-r--r--src/client/views/animationtimeline/TimelineOverview.scss5
-rw-r--r--src/client/views/animationtimeline/TimelineOverview.tsx19
-rw-r--r--src/client/views/animationtimeline/Track.tsx5
-rw-r--r--src/client/views/graph/GraphManager.ts2
-rw-r--r--src/client/views/nodes/DocumentView.tsx2
8 files changed, 90 insertions, 96 deletions
diff --git a/src/client/views/animationtimeline/Keyframe.tsx b/src/client/views/animationtimeline/Keyframe.tsx
index 6a0525eb8..784765318 100644
--- a/src/client/views/animationtimeline/Keyframe.tsx
+++ b/src/client/views/animationtimeline/Keyframe.tsx
@@ -2,10 +2,10 @@ import * as React from "react";
import "./Keyframe.scss";
import "./Timeline.scss";
import "../globalCssVariables.scss";
-import { observer, Observer } from "mobx-react";
-import { observable, reaction, action, IReactionDisposer, observe, IObservableArray, computed, toJS, isComputedProp, runInAction } from "mobx";
+import { observer} from "mobx-react";
+import { observable, reaction, action, IReactionDisposer, observe, computed, runInAction } from "mobx";
import { Doc, DocListCast, DocListCastAsync } from "../../../new_fields/Doc";
-import { Cast, FieldValue, StrCast, NumCast } from "../../../new_fields/Types";
+import { Cast, NumCast } from "../../../new_fields/Types";
import { List } from "../../../new_fields/List";
import { createSchema, defaultSpec, makeInterface, listSpec } from "../../../new_fields/Schema";
import { FlyoutProps } from "./Timeline";
@@ -13,7 +13,6 @@ import { Transform } from "../../util/Transform";
import { InkField, StrokeData } from "../../../new_fields/InkField";
import { TimelineMenu } from "./TimelineMenu";
import { Docs } from "../../documents/Documents";
-import { CollectionFreeFormView } from "../collections/collectionFreeForm/CollectionFreeFormView";
import { CollectionDockingView } from "../collections/CollectionDockingView";
export namespace KeyframeFunc {
@@ -111,7 +110,6 @@ interface IProps {
RegionData: Doc;
collection: Doc;
changeCurrentBarX: (x: number) => void;
- setFlyout: (props: FlyoutProps) => any;
transform: Transform;
}
@@ -183,8 +181,8 @@ export class Keyframe extends React.Component<IProps> {
let finish = await this.makeKeyData(this.regiondata.position + this.regiondata.duration, KeyframeFunc.KeyframeType.fade)!;
(fadeIn.key! as Doc).opacity = 1;
(fadeOut.key! as Doc).opacity = 1;
- (start.key! as Doc).opacity = 0;
- (finish.key! as Doc).opacity = 0;
+ (start.key! as Doc).opacity = 0.1;
+ (finish.key! as Doc).opacity = 0.1;
observe(this.regiondata, change => {
if (change.type === "update") {
@@ -238,14 +236,32 @@ export class Keyframe extends React.Component<IProps> {
return TK;
}
+ @observable private _mouseToggled = false;
+ @observable private _doubleClickEnabled = false;
@action
onBarPointerDown = (e: React.PointerEvent) => {
e.preventDefault();
e.stopPropagation();
- document.addEventListener("pointermove", this.onBarPointerMove);
- document.addEventListener("pointerup", (e: PointerEvent) => {
+
+ let clientX = e.clientX;
+ if (this._doubleClickEnabled){
+ this.createKeyframe(clientX);
+ this._doubleClickEnabled = false;
+ } else {
+ setTimeout(() => {if(!this._mouseToggled && this._doubleClickEnabled)this.props.changeCurrentBarX(this.regiondata.position + (clientX - this._bar.current!.getBoundingClientRect().left) * this.props.transform.Scale);
+ this._mouseToggled = false;
+ this._doubleClickEnabled = false; }, 200);
+ this._doubleClickEnabled = true;
+ document.addEventListener("pointermove", this.onBarPointerMove);
+ document.addEventListener("pointerup", (e: PointerEvent) => {
document.removeEventListener("pointermove", this.onBarPointerMove);
});
+
+ }
+
+
+
+
}
@@ -253,6 +269,9 @@ export class Keyframe extends React.Component<IProps> {
onBarPointerMove = (e: PointerEvent) => {
e.preventDefault();
e.stopPropagation();
+ if (e.movementX !== 0) {
+ this._mouseToggled = true;
+ }
let left = KeyframeFunc.findAdjacentRegion(KeyframeFunc.Direction.left, this.regiondata, this.regions)!;
let right = KeyframeFunc.findAdjacentRegion(KeyframeFunc.Direction.right, this.regiondata, this.regions!);
let prevX = this.regiondata.position;
@@ -351,11 +370,10 @@ export class Keyframe extends React.Component<IProps> {
}
@action
- createKeyframe = async (e: React.MouseEvent) => {
- e.preventDefault();
- e.stopPropagation();
+ createKeyframe = async (clientX:number) => {
+ this._mouseToggled = true;
let bar = this._bar.current!;
- let offset = Math.round((e.clientX - bar.getBoundingClientRect().left) * this.props.transform.Scale);
+ let offset = Math.round((clientX - bar.getBoundingClientRect().left) * this.props.transform.Scale);
if (offset > this.regiondata.fadeIn && offset < this.regiondata.duration - this.regiondata.fadeOut) { //make sure keyframe is not created inbetween fades and ends
let position = NumCast(this.regiondata.position);
await this.makeKeyData(Math.round(position + offset));
@@ -514,8 +532,7 @@ export class Keyframe extends React.Component<IProps> {
return (
<div>
<div className="bar" ref={this._bar} style={{ transform: `translate(${this.regiondata.position}px)`, width: `${this.regiondata.duration}px`, background: `linear-gradient(90deg, rgba(77, 153, 0, 0) 0%, rgba(77, 153, 0, 1) ${this.regiondata.fadeIn / this.regiondata.duration * 100}%, rgba(77, 153, 0, 1) ${(this.regiondata.duration - this.regiondata.fadeOut) / this.regiondata.duration * 100}%, rgba(77, 153, 0, 0) 100% )` }}
- onPointerDown={this.onBarPointerDown}
- onDoubleClick={this.createKeyframe}>
+ onPointerDown={this.onBarPointerDown}>
<div className="leftResize" onPointerDown={this.onResizeLeft} ></div>
<div className="rightResize" onPointerDown={this.onResizeRight}></div>
{this.regiondata.keyframes!.map(kf => {
@@ -529,8 +546,10 @@ export class Keyframe extends React.Component<IProps> {
<div ref={bodyRef}className="body-container" style={{left: `${NumCast(kf.time) - this.regiondata.position}px`, width:`${NumCast(left!.time) - NumCast(kf.time)}px`}}
onPointerOver={(e) => { this.onContainerOver(e, bodyRef); }}
onPointerOut={(e) => { this.onContainerOut(e, bodyRef); }}
- onPointerDown={(e) => { this.props.changeCurrentBarX(NumCast(kf.time) + (e.clientX - bodyRef.current!.getBoundingClientRect().left) * this.props.transform.Scale);}}
onContextMenu={(e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ this._mouseToggled = true;
let items = [
TimelineMenu.Instance.addItem("button", "Add Ease", () => {this.onContainerDown(kf, "interpolate");}),
TimelineMenu.Instance.addItem("button", "Add Path", () => {this.onContainerDown(kf, "path");}),
diff --git a/src/client/views/animationtimeline/Timeline.scss b/src/client/views/animationtimeline/Timeline.scss
index e5d898502..1457d5a84 100644
--- a/src/client/views/animationtimeline/Timeline.scss
+++ b/src/client/views/animationtimeline/Timeline.scss
@@ -8,7 +8,7 @@
}
.timeline-toolbox{
- position:absolute;
+ position:absolute;
display:flex;
align-items: flex-start;
flex-direction: row;
diff --git a/src/client/views/animationtimeline/Timeline.tsx b/src/client/views/animationtimeline/Timeline.tsx
index 29787fa03..3d878660d 100644
--- a/src/client/views/animationtimeline/Timeline.tsx
+++ b/src/client/views/animationtimeline/Timeline.tsx
@@ -1,26 +1,17 @@
import * as React from "react";
import "./Timeline.scss";
-import { CollectionSubView, SubCollectionViewProps } from "../collections/CollectionSubView";
+import { CollectionSubView } from "../collections/CollectionSubView";
import { Document, listSpec } from "../../../new_fields/Schema";
import { observer } from "mobx-react";
import { Track } from "./Track";
-import { observable, reaction, action, IReactionDisposer, observe, IObservableArray, computed, toJS, Reaction, IObservableObject, trace, autorun, runInAction } from "mobx";
-import { Cast, NumCast, FieldValue, StrCast, BoolCast } from "../../../new_fields/Types";
+import { observable, reaction, action, IReactionDisposer, computed, runInAction } from "mobx";
+import { Cast, NumCast, StrCast, BoolCast } from "../../../new_fields/Types";
import { List } from "../../../new_fields/List";
import { Doc, DocListCast } from "../../../new_fields/Doc";
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faPlayCircle, faBackward, faForward, faGripLines, faArrowUp, faArrowDown, faClock, faPauseCircle } from "@fortawesome/free-solid-svg-icons";
import { ContextMenuProps } from "../ContextMenuItem";
import { ContextMenu } from "../ContextMenu";
-import { DocumentManager } from "../../util/DocumentManager";
-import { VideoBox } from "../nodes/VideoBox";
-import { VideoField } from "../../../new_fields/URLField";
-import { CollectionVideoView } from "../collections/CollectionVideoView";
-import { Transform } from "../../util/Transform";
-import { faGrinTongueSquint } from "@fortawesome/free-regular-svg-icons";
-import { InkField } from "../../../new_fields/InkField";
-import { AddComparisonParameters } from "../../northstar/model/idea/idea";
-import { keepAlive } from "mobx-utils";
import { TimelineOverview } from "./TimelineOverview";
@@ -57,7 +48,7 @@ export class Timeline extends CollectionSubView(Document) {
@observable private _currentBarX: number = 0;
@observable private _windSpeed: number = 1;
@observable private _isPlaying: boolean = false; //scrubber playing
- @observable private _isFrozen: boolean = false; //timeline freeze
+ @observable private _isFrozen: boolean = true; //timeline freeze
@observable private _totalLength: number = 0;
@observable private _visibleLength: number = 0;
@observable private _visibleStart: number = 0;
@@ -65,7 +56,6 @@ export class Timeline extends CollectionSubView(Document) {
@observable private _time = 100000; //DEFAULT
@observable private _ticks: number[] = [];
@observable private _playButton = faPlayCircle;
- @observable private flyoutInfo: FlyoutProps = { x: 0, y: 0, display: "none", regiondata: new Doc(), regions: new List<Doc>() };
@computed
private get children(): List<Doc> {
@@ -130,30 +120,33 @@ export class Timeline extends CollectionSubView(Document) {
//for playing
@action
- onPlay = async (e: React.MouseEvent) => {
+ onPlay = (e: React.MouseEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
if (this._isPlaying) {
this._isPlaying = false;
this._playButton = faPlayCircle;
} else {
this._isPlaying = true;
this._playButton = faPauseCircle;
- this.changeCurrentX();
- }
- }
-
- @action
- changeCurrentX = () => {
- if (this._currentBarX === this._totalLength && this._isPlaying) {
- this._currentBarX = 0;
- }
- if (this._currentBarX <= this._totalLength && this._isPlaying) {
- this._currentBarX = this._currentBarX + this._windSpeed;
- setTimeout(this.changeCurrentX, 15);
+ const playTimeline = () => {
+ if (this._isPlaying){
+ if (this._currentBarX >= this._totalLength) {
+ this.changeCurrentBarX(0);
+ } else {
+ this.changeCurrentBarX(this._currentBarX + this._windSpeed);
+ setTimeout(playTimeline, 15);
+ }
+ }
+ };
+ playTimeline();
}
}
@action
windForward = (e: React.MouseEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
if (this._windSpeed < 64) { //max speed is 32
this._windSpeed = this._windSpeed * 2;
}
@@ -161,6 +154,8 @@ export class Timeline extends CollectionSubView(Document) {
@action
windBackward = (e: React.MouseEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
if (this._windSpeed > 1 / 16) { // min speed is 1/8
this._windSpeed = this._windSpeed / 2;
}
@@ -313,16 +308,12 @@ export class Timeline extends CollectionSubView(Document) {
}
}
-
- private _freezeText = "Freeze Timeline";
-
timelineContextMenu = (e: React.MouseEvent): void => {
let subitems: ContextMenuProps[] = [];
let timelineContainer = this._timelineWrapper.current!;
subitems.push({
description: "Pin to Top", event: action(() => {
if (!this._isFrozen) {
- timelineContainer.style.transition = "top 1000ms ease-in, left 1000ms ease-in"; //?????
timelineContainer.style.left = "0px";
timelineContainer.style.top = "0px";
timelineContainer.style.transition = "none";
@@ -330,22 +321,11 @@ export class Timeline extends CollectionSubView(Document) {
}), icon: faArrowUp
});
subitems.push({
- description: "Pin to Bottom", event: action(() => {
- console.log(this.props.Document.y);
-
- if (!this._isFrozen) {
- timelineContainer.style.transform = `translate(0px, ${e.pageY - this._containerHeight}px)`;
- }
- }), icon: faArrowDown
- });
- subitems.push({
- description: this._freezeText, event: action(() => {
+ description: this._isFrozen ? "Unfreeze Timeline" : "Freeze Timeline", event: action(() => {
if (this._isFrozen) {
this._isFrozen = false;
- this._freezeText = "Freeze Timeline";
} else {
this._isFrozen = true;
- this._freezeText = "Unfreeze Timeline";
}
}), icon: "thumbtack"
});
@@ -353,27 +333,24 @@ export class Timeline extends CollectionSubView(Document) {
}
-
- @action
- getFlyout = (props: FlyoutProps) => {
- for (const [k, v] of Object.entries(props)) {
- (this.flyoutInfo as any)[k] = v;
- }
- console.log(this.flyoutInfo);
+ private timelineToolBox = (scale:number) => {
+ let size = 50 * scale; //50 is default
+ return (
+ <div key="timeline_toolbox" className="timeline-toolbox" style={{height:`${size}px`}}>
+ <div key="timeline_windBack" onClick={this.windBackward}> <FontAwesomeIcon icon={faBackward} style={{height:`${size}px`, width: `${size}px`}} /> </div>
+ <div key =" timeline_play" onClick={this.onPlay}> <FontAwesomeIcon icon={this._playButton} style={{height:`${size}px`, width: `${size}px`}} /> </div>
+ <div key="timeline_windForward" onClick={this.windForward}> <FontAwesomeIcon icon={faForward} style={{height:`${size}px`, width: `${size}px`}} /> </div>
+ <TimelineOverview scale={scale} currentBarX={this._currentBarX} totalLength={this._totalLength} visibleLength={this._visibleLength} visibleStart={this._visibleStart} changeCurrentBarX={this.changeCurrentBarX} movePanX={this.movePanX}/>
+ </div>
+ );
}
-
render() {
return (
<div>
<div key="timeline_wrapper" style={{visibility: BoolCast(this.props.Document.isAnimating) ? "visible" :"hidden", left: "0px", top: "0px", position: "absolute", width: "100%", transform: "translate(0px, 0px)"}} ref={this._timelineWrapper}>
<button key="timeline_minimize" className="minimize" onClick={this.minimize}>Minimize</button>
<div key="timeline_container" className="timeline-container" style={{ height: `${this._containerHeight}px`, left: "0px", top: "30px" }} ref={this._timelineContainer} onPointerDown={this.onTimelineDown} onContextMenu={this.timelineContextMenu}>
- <div key ="timeline_toolbox" className="timeline-toolbox">
- <div key ="timeline_windBack" onClick={this.windBackward}> <FontAwesomeIcon icon={faBackward} size="2x" /> </div>
- <div key ="timeline_play" onClick={this.onPlay}> <FontAwesomeIcon icon={this._playButton} size="2x" /> </div>
- <div key = "timeline_windForward" onClick={this.windForward}> <FontAwesomeIcon icon={faForward} size="2x" /> </div>
- <TimelineOverview currentBarX = { this._currentBarX} totalLength={this._totalLength} visibleLength={this._visibleLength} visibleStart={this._visibleStart} changeCurrentBarX={this.changeCurrentBarX} movePanX={this.movePanX}/>
- </div>
+ {this.timelineToolBox(0.5)}
<div key ="timeline_info"className="info-container" ref={this._infoContainer}>
<div key="timeline_scrubberbox" className="scrubberbox" ref={this._scrubberbox} onClick={this.onScrubberClick}>
{this._ticks.map(element => {
@@ -384,7 +361,7 @@ export class Timeline extends CollectionSubView(Document) {
<div key="timeline_scrubberhead" className="scrubberhead"></div>
</div>
<div key="timeline_trackbox" className="trackbox" ref={this._trackbox} onPointerDown={this.onPanDown}>
- {DocListCast(this.children).map(doc => <Track node={doc} currentBarX={this._currentBarX} changeCurrentBarX={this.changeCurrentBarX} setFlyout={this.getFlyout} transform={this.props.ScreenToLocalTransform()} collection = {this.props.Document}/>)}
+ {DocListCast(this.children).map(doc => <Track node={doc} currentBarX={this._currentBarX} changeCurrentBarX={this.changeCurrentBarX} transform={this.props.ScreenToLocalTransform()} collection = {this.props.Document}/>)}
</div>
</div>
<div key="timeline_title"className="title-container" ref={this._titleContainer}>
@@ -395,12 +372,7 @@ export class Timeline extends CollectionSubView(Document) {
</div>
</div>
</div>
- <div key="timeline_toolbox" className="timeline-toolbox" style={{visibility: BoolCast(this.props.Document.isAnimating) ? "hidden" :"visible"}}>
- <div key="timeline_windBack" onClick={this.windBackward}> <FontAwesomeIcon icon={faBackward} size="4x" /> </div>
- <div key =" timeline_play" onClick={this.onPlay}> <FontAwesomeIcon icon={this._playButton} size="4x" /> </div>
- <div key="timeline_windForward" onClick={this.windForward}> <FontAwesomeIcon icon={faForward} size="4x" /> </div>
- <TimelineOverview currentBarX={this._currentBarX} totalLength={this._totalLength} visibleLength={this._visibleLength} visibleStart={this._visibleStart} changeCurrentBarX={this.changeCurrentBarX} movePanX={this.movePanX}/>
- </div>
+ {BoolCast(this.props.Document.isAnimating) ? <div></div>: this.timelineToolBox(1) }
</div>
);
}
diff --git a/src/client/views/animationtimeline/TimelineOverview.scss b/src/client/views/animationtimeline/TimelineOverview.scss
index 21988927d..9e69c2adf 100644
--- a/src/client/views/animationtimeline/TimelineOverview.scss
+++ b/src/client/views/animationtimeline/TimelineOverview.scss
@@ -1,16 +1,17 @@
+@import "./../globalCssVariables.scss";
+
.timeline-overview-container{
width: 300px;
height: 40px;
margin-top: 10px;
margin-left: 20px;
background: white;
- border: 1px solid black;
+ border: 2px solid black;
padding: 0px;
display:inline-block;
.timeline-overview-visible{
height: 100%;
background: green;
- border: 1px solid black;
margin: 0px;
}
.timeline-overview-scrubber-container{
diff --git a/src/client/views/animationtimeline/TimelineOverview.tsx b/src/client/views/animationtimeline/TimelineOverview.tsx
index 1ad7d20e5..4fdf1381e 100644
--- a/src/client/views/animationtimeline/TimelineOverview.tsx
+++ b/src/client/views/animationtimeline/TimelineOverview.tsx
@@ -6,6 +6,7 @@ import "./TimelineOverview.scss";
interface TimelineOverviewProps{
+ scale: number;
totalLength: number;
visibleLength:number;
visibleStart:number;
@@ -19,7 +20,9 @@ interface TimelineOverviewProps{
export class TimelineOverview extends React.Component<TimelineOverviewProps>{
@observable private _visibleRef = React.createRef<HTMLDivElement>();
@observable private _scrubberRef = React.createRef<HTMLDivElement>();
-
+ private readonly DEFAULT_HEIGHT = 50;
+ private readonly DEFAULT_WIDTH = 300;
+
@action
onPointerDown = (e:React.PointerEvent) => {
document.removeEventListener("pointermove", this.onPanX);
@@ -30,8 +33,8 @@ export class TimelineOverview extends React.Component<TimelineOverviewProps>{
@action
onPanX = (e: PointerEvent) => {
- let movX = (this.props.visibleStart / this.props.totalLength)* 300 + e.movementX;
- this.props.movePanX((movX / 300) * this.props.totalLength);
+ let movX = (this.props.visibleStart / this.props.totalLength)* (this.DEFAULT_WIDTH * this.props.scale) + e.movementX;
+ this.props.movePanX((movX / (this.DEFAULT_WIDTH * this.props.scale)) * this.props.totalLength);
}
@action
@@ -57,7 +60,7 @@ export class TimelineOverview extends React.Component<TimelineOverviewProps>{
let scrubberRef = this._scrubberRef.current!;
let left = scrubberRef.getBoundingClientRect().left;
let offsetX = Math.round(e.clientX - left);
- this.props.changeCurrentBarX(((offsetX / 300) * this.props.totalLength) + this.props.currentBarX);
+ this.props.changeCurrentBarX(((offsetX / (this.DEFAULT_WIDTH * this.props.scale)) * this.props.totalLength) + this.props.currentBarX);
}
@action
@@ -70,10 +73,10 @@ export class TimelineOverview extends React.Component<TimelineOverviewProps>{
render(){
return(
- <div key="timeline-overview-container" className="timeline-overview-container">
- <div ref={this._visibleRef} key="timeline-overview-visible" className="timeline-overview-visible" style={{marginLeft:`${(this.props.visibleStart / this.props.totalLength)* 300}px`, width:`${(this.props.visibleLength / this.props.totalLength) * 300}px`}} onPointerDown={this.onPointerDown}></div>
- <div ref={this._scrubberRef} key="timeline-overview-scrubber-container" className="timeline-overview-scrubber-container" style={{marginLeft:`${(this.props.currentBarX / this.props.totalLength) * 300}px`}} onPointerDown={this.onScrubberDown}>
- <div key="timeline-overview-scrubber-head" className="timeline-overview-scrubber-head"></div>
+ <div key="timeline-overview-container" className="timeline-overview-container" style={{height: `${this.DEFAULT_HEIGHT * this.props.scale * 0.8}px` ,width:`${this.DEFAULT_WIDTH * this.props.scale}`}}>
+ <div ref={this._visibleRef} key="timeline-overview-visible" className="timeline-overview-visible" style={{marginLeft:`${(this.props.visibleStart / this.props.totalLength)* this.DEFAULT_WIDTH * this.props.scale}px`, width:`${(this.props.visibleLength / this.props.totalLength) * this.DEFAULT_WIDTH * this.props.scale}px`}} onPointerDown={this.onPointerDown}></div>
+ <div ref={this._scrubberRef} key="timeline-overview-scrubber-container" className="timeline-overview-scrubber-container" style={{marginLeft:`${(this.props.currentBarX / this.props.totalLength) * this.DEFAULT_WIDTH * this.props.scale}px`, marginTop: `${-this.DEFAULT_HEIGHT * this.props.scale * 0.8}px`}} onPointerDown={this.onScrubberDown}>
+ <div key="timeline-overview-scrubber-head" className="timeline-overview-scrubber-head" style={{}}></div>
</div>
</div>
);
diff --git a/src/client/views/animationtimeline/Track.tsx b/src/client/views/animationtimeline/Track.tsx
index 288a1d2ad..d91954022 100644
--- a/src/client/views/animationtimeline/Track.tsx
+++ b/src/client/views/animationtimeline/Track.tsx
@@ -17,7 +17,6 @@ interface IProps {
transform: Transform;
collection: Doc;
changeCurrentBarX: (x: number) => void;
- setFlyout: (props: FlyoutProps) => any;
}
@observer
@@ -177,7 +176,7 @@ export class Track extends React.Component<IProps> {
const timeratio = (this.props.currentBarX - NumCast(left.time)) / dif_time; //linear
let keyframes = (await DocListCastAsync(regiondata.keyframes!))!;
let indexLeft = keyframes.indexOf(left);
- let interY:List<number> = await ((regiondata.functions as List<Doc>)[indexLeft] as Doc).interpolationY as List<number>;
+ let interY:List<number> = (await ((regiondata.functions as List<Doc>)[indexLeft] as Doc).interpolationY as List<number>)!;
let realIndex = (interY.length - 1) * timeratio;
let xIndex = Math.floor(realIndex);
let yValue = interY[xIndex];
@@ -276,7 +275,7 @@ export class Track extends React.Component<IProps> {
<div className="track">
<div className="inner" ref={this._inner} onDoubleClick={this.onInnerDoubleClick}>
{DocListCast(this.regions).map((region) => {
- return <Keyframe node={this.props.node} RegionData={region} changeCurrentBarX={this.props.changeCurrentBarX} setFlyout={this.props.setFlyout} transform={this.props.transform} collection={this.props.collection}/>;
+ return <Keyframe node={this.props.node} RegionData={region} changeCurrentBarX={this.props.changeCurrentBarX} transform={this.props.transform} collection={this.props.collection}/>;
})}
</div>
</div>
diff --git a/src/client/views/graph/GraphManager.ts b/src/client/views/graph/GraphManager.ts
index 9d62b1ef8..b62f2337b 100644
--- a/src/client/views/graph/GraphManager.ts
+++ b/src/client/views/graph/GraphManager.ts
@@ -32,7 +32,7 @@ export class GraphManager {
defaultGraphs = () => {
- this.GraphData.linear = ;
+
}
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index f2be7097a..28af39fb3 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -729,7 +729,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
render() {
- trace();
+ // trace();
let backgroundColor = this.layoutDoc.isBackground || (this.props.ContainingCollectionView && this.props.ContainingCollectionView.props.Document.clusterOverridesDefaultBackground && this.layoutDoc.backgroundColor === this.layoutDoc.defaultBackgroundColor) ?
this.props.backgroundColor(this.layoutDoc) || StrCast(this.layoutDoc.backgroundColor) :
StrCast(this.layoutDoc.backgroundColor) || this.props.backgroundColor(this.layoutDoc);