fix: stop font loadingdone loop when rendering element SVGs (#5883)

* fix: stop font `loadingdone` loop when rendering element SVGs

* update snaps

* stop updating scene elements array if no change was made

* always re-render if invalidating element shape
This commit is contained in:
David Luzar 2022-11-15 21:02:57 +01:00 committed by GitHub
parent d273acb7e4
commit bbe0c35f66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 52 additions and 17 deletions

View file

@ -730,18 +730,20 @@ class App extends React.Component<AppProps, AppState> {
};
private onFontLoaded = () => {
this.scene.replaceAllElements([
...this.scene.getElementsIncludingDeleted().map((element) => {
if (isTextElement(element)) {
invalidateShapeForElement(element);
return newElementWith(element, {
...refreshTextDimensions(element),
});
}
return element;
}),
]);
this.onSceneUpdated();
let didUpdate = false;
this.scene.mapElements((element) => {
if (isTextElement(element)) {
invalidateShapeForElement(element);
didUpdate = true;
return newElementWith(element, {
...refreshTextDimensions(element),
});
}
return element;
});
if (didUpdate) {
this.onSceneUpdated();
}
};
private resetHistory = () => {

View file

@ -44,6 +44,7 @@ export const LibraryUnit = ({
},
null,
);
svg.querySelector(".style-fonts")?.remove();
node.innerHTML = svg.outerHTML;
})();

View file

@ -46,6 +46,7 @@ const ChartPreviewBtn = (props: {
},
null, // files
);
svg.querySelector(".style-fonts")?.remove();
previewNode.replaceChildren();
previewNode.appendChild(svg);