|
@@ -714,10 +714,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
id: this.id,
|
|
|
};
|
|
|
|
|
|
- this.fonts = new Fonts({
|
|
|
- scene: this.scene,
|
|
|
- onSceneUpdated: this.onSceneUpdated,
|
|
|
- });
|
|
|
+ this.fonts = new Fonts({ scene: this.scene });
|
|
|
this.history = new History();
|
|
|
|
|
|
this.actionManager.registerAll(actions);
|
|
@@ -940,7 +937,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
});
|
|
|
|
|
|
if (updated) {
|
|
|
- this.scene.informMutation();
|
|
|
+ this.scene.triggerUpdate();
|
|
|
}
|
|
|
|
|
|
// GC
|
|
@@ -1452,10 +1449,10 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
const selectedElements = this.scene.getSelectedElements(this.state);
|
|
|
const { renderTopRightUI, renderCustomStats } = this.props;
|
|
|
|
|
|
- const versionNonce = this.scene.getVersionNonce();
|
|
|
+ const sceneNonce = this.scene.getSceneNonce();
|
|
|
const { elementsMap, visibleElements } =
|
|
|
this.renderer.getRenderableElements({
|
|
|
- versionNonce,
|
|
|
+ sceneNonce,
|
|
|
zoom: this.state.zoom,
|
|
|
offsetLeft: this.state.offsetLeft,
|
|
|
offsetTop: this.state.offsetTop,
|
|
@@ -1673,7 +1670,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
elementsMap={elementsMap}
|
|
|
allElementsMap={allElementsMap}
|
|
|
visibleElements={visibleElements}
|
|
|
- versionNonce={versionNonce}
|
|
|
+ sceneNonce={sceneNonce}
|
|
|
selectionNonce={
|
|
|
this.state.selectionElement?.versionNonce
|
|
|
}
|
|
@@ -1695,7 +1692,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
elementsMap={elementsMap}
|
|
|
visibleElements={visibleElements}
|
|
|
selectedElements={selectedElements}
|
|
|
- versionNonce={versionNonce}
|
|
|
+ sceneNonce={sceneNonce}
|
|
|
selectionNonce={
|
|
|
this.state.selectionElement?.versionNonce
|
|
|
}
|
|
@@ -1819,7 +1816,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
);
|
|
|
}
|
|
|
this.magicGenerations.set(frameElement.id, data);
|
|
|
- this.onSceneUpdated();
|
|
|
+ this.triggerRender();
|
|
|
};
|
|
|
|
|
|
private getTextFromElements(elements: readonly ExcalidrawElement[]) {
|
|
@@ -2444,7 +2441,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
this.history.record(increment.elementsChange, increment.appStateChange);
|
|
|
});
|
|
|
|
|
|
- this.scene.addCallback(this.onSceneUpdated);
|
|
|
+ this.scene.onUpdate(this.triggerRender);
|
|
|
this.addEventListeners();
|
|
|
|
|
|
if (this.props.autoFocus && this.excalidrawContainerRef.current) {
|
|
@@ -2489,6 +2486,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
public componentWillUnmount() {
|
|
|
this.renderer.destroy();
|
|
|
this.scene = new Scene();
|
|
|
+ this.fonts = new Fonts({ scene: this.scene });
|
|
|
this.renderer = new Renderer(this.scene);
|
|
|
this.files = {};
|
|
|
this.imageCache.clear();
|
|
@@ -3670,7 +3668,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
ShapeCache.delete(element);
|
|
|
}
|
|
|
});
|
|
|
- this.scene.informMutation();
|
|
|
+ this.scene.triggerUpdate();
|
|
|
|
|
|
this.addNewImagesToImageCache();
|
|
|
},
|
|
@@ -3730,7 +3728,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
},
|
|
|
);
|
|
|
|
|
|
- private onSceneUpdated = () => {
|
|
|
+ private triggerRender = () => {
|
|
|
this.setState({});
|
|
|
};
|
|
|
|
|
@@ -5577,7 +5575,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
}
|
|
|
|
|
|
this.elementsPendingErasure = new Set(this.elementsPendingErasure);
|
|
|
- this.onSceneUpdated();
|
|
|
+ this.triggerRender();
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -8069,7 +8067,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
this.scene.getNonDeletedElementsMap(),
|
|
|
);
|
|
|
|
|
|
- this.scene.informMutation();
|
|
|
+ this.scene.triggerUpdate();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -8564,7 +8562,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
|
|
|
private restoreReadyToEraseElements = () => {
|
|
|
this.elementsPendingErasure = new Set();
|
|
|
- this.onSceneUpdated();
|
|
|
+ this.triggerRender();
|
|
|
};
|
|
|
|
|
|
private eraseElements = () => {
|
|
@@ -8978,7 +8976,7 @@ class App extends React.Component<AppProps, AppState> {
|
|
|
files,
|
|
|
);
|
|
|
if (updatedFiles.size) {
|
|
|
- this.scene.informMutation();
|
|
|
+ this.scene.triggerUpdate();
|
|
|
}
|
|
|
}
|
|
|
};
|