From 2ec32aee559749e1978d779705c84a8343615bfe Mon Sep 17 00:00:00 2001 From: bobzel Date: Tue, 22 Feb 2022 18:05:36 -0500 Subject: improve efficiency for scenes with lots of documents by using computed functions to avoid invalidations. moved grid renderer to its own component to avoid invalidations when panning/zooming. --- src/client/views/nodes/CollectionFreeFormDocumentView.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/client/views/nodes/CollectionFreeFormDocumentView.tsx') diff --git a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx index 460982c8a..235c8accb 100644 --- a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx +++ b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx @@ -18,17 +18,18 @@ import { StyleProp } from "../StyleProvider"; import "./CollectionFreeFormDocumentView.scss"; import { DocumentView, DocumentViewProps } from "./DocumentView"; import React = require("react"); +import { Id } from "../../../fields/FieldSymbols"; export interface CollectionFreeFormDocumentViewProps extends DocumentViewProps { dataProvider?: (doc: Doc, replica: string) => { x: number, y: number, zIndex?: number, opacity?: number, highlight?: boolean, z: number, transition?: string } | undefined; sizeProvider?: (doc: Doc, replica: string) => { width: number, height: number } | undefined; layerProvider: ((doc: Doc, assign?: boolean) => boolean) | undefined; + renderCutoffProvider: (doc: Doc) => boolean; zIndex?: number; highlight?: boolean; jitterRotation: number; dataTransition?: string; replica: string; - renderCutoff: () => number; renderIndex: number; CollectionFreeFormView: CollectionFreeFormView; } @@ -178,10 +179,11 @@ export class CollectionFreeFormDocumentView extends DocComponent - {this.props.renderCutoff() >= this.props.renderIndex ? - this._contentView = r)} /> + {this.props.renderCutoffProvider(this.props.Document) ? +
: -
} + this._contentView = r)} /> + }
; } } -- cgit v1.2.3-70-g09d2