From 5c46fe792dd304ae139622fb165b41afa348988b Mon Sep 17 00:00:00 2001
From: Tom <7283497+thfrei@users.noreply.github.com>
Date: Fri, 8 Apr 2022 10:31:44 +0200
Subject: [PATCH] use widget element to render for multiple excalidraw
instances
---
.../app/widgets/type_widgets/canvas_note.js | 70 +++++++++++--------
1 file changed, 39 insertions(+), 31 deletions(-)
diff --git a/src/public/app/widgets/type_widgets/canvas_note.js b/src/public/app/widgets/type_widgets/canvas_note.js
index 7ba58dca6..499666843 100644
--- a/src/public/app/widgets/type_widgets/canvas_note.js
+++ b/src/public/app/widgets/type_widgets/canvas_note.js
@@ -1,24 +1,21 @@
import libraryLoader from "../../services/library_loader.js";
import TypeWidget from "./type_widget.js";
import appContext from "../../services/app_context.js";
-import _debounce from './canvas-note-utils/lodash.debounce.js';
-import _throttle from './canvas-note-utils/lodash.throttle.js';
import sleep from './canvas-note-utils/sleep.js';
import froca from "../../services/froca.js";
-import throttle from "./canvas-note-utils/lodash.throttle.js";
import debounce from "./canvas-note-utils/lodash.debounce.js";
+ // NoteContextAwareWidget does not handle loading/refreshing of note context
+import NoteContextAwareWidget from "../note_context_aware_widget.js";
const TPL = `
-
-
+
+
+
+
`;
@@ -54,20 +54,23 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
}
doRender() {
+ const self = this;
this.$widget = $(TPL);
+ this.contentSized();
+ this.$render = this.$widget.find('.canvas-note-render');
+ this.$renderElement = this.$render.get(0);
+
libraryLoader
.requireLibrary(libraryLoader.EXCALIDRAW)
.then(() => {
console.log("react, react-dom, excalidraw loaded");
- const excalidrawWrapper = document.getElementById("app");
-
const React = window.React;
const ReactDOM = window.ReactDOM;
- ReactDOM.unmountComponentAtNode(excalidrawWrapper);
- ReactDOM.render(React.createElement(this.ExcalidrawReactApp), excalidrawWrapper);
+ ReactDOM.unmountComponentAtNode(this.$renderElement);
+ ReactDOM.render(React.createElement(this.ExcalidrawReactApp), self.$renderElement);
})
return this.$widget;
@@ -157,20 +160,25 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
const [gridModeEnabled, setGridModeEnabled] = React.useState(false);
React.useEffect(() => {
- setDimensions({
- width: excalidrawWrapperRef.current.getBoundingClientRect().width,
- height: excalidrawWrapperRef.current.getBoundingClientRect().height
- });
- const onResize = () => {
- setDimensions({
- width: excalidrawWrapperRef.current.getBoundingClientRect().width,
- height: excalidrawWrapperRef.current.getBoundingClientRect().height
- });
- };
-
- window.addEventListener("resize", onResize);
-
- return () => window.removeEventListener("resize", onResize);
+ const dimensions = {
+ width: excalidrawWrapperRef.current.getBoundingClientRect().width,
+ height: excalidrawWrapperRef.current.getBoundingClientRect().height
+ };
+ console.log('effect, setdimensions', dimensions);
+ setDimensions(dimensions);
+
+ const onResize = () => {
+ const dimensions = {
+ width: excalidrawWrapperRef.current.getBoundingClientRect().width,
+ height: excalidrawWrapperRef.current.getBoundingClientRect().height
+ };
+ console.log('onResize, setdimensions', dimensions);
+ setDimensions(dimensions);
+ };
+
+ window.addEventListener("resize", onResize);
+
+ return () => window.removeEventListener("resize", onResize);
}, [excalidrawWrapperRef]);
return React.createElement(