Skip to content

Commit d091583

Browse files
authored
ENG-913 - Canvas css issue in main window (#467)
* Refactor Tldraw component to remove unused TLDRAW_DATA_ATTRIBUTE and simplify canvas rendering logic. Update styles to use :has() for conditionally hiding Roam Blocks based on canvas presence. * Enhance Tldraw component by adding early return to prevent duplicate canvas container appending. This improves rendering logic and maintains clean DOM structure.
1 parent 2460c97 commit d091583

2 files changed

Lines changed: 9 additions & 15 deletions

File tree

apps/roam/src/components/canvas/Tldraw.tsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ import ConvertToDialog from "./ConvertToDialog";
8585
import { createMigrations } from "./DiscourseRelationShape/discourseRelationMigrations";
8686
import ToastListener, { dispatchToastEvent } from "./ToastListener";
8787
import sendErrorEmail from "~/utils/sendErrorEmail";
88-
import { TLDRAW_DATA_ATTRIBUTE } from "./tldrawStyles";
8988
import { AUTO_CANVAS_RELATIONS_KEY } from "~/data/userSettings";
9089
import { getSetting } from "~/utils/extensionSettings";
9190
import { isPluginTimerReady, waitForPluginTimer } from "~/utils/pluginTimer";
@@ -975,14 +974,12 @@ const renderTldrawCanvasHelper = ({
975974
if (!childFromRoot) return () => {};
976975

977976
const canvasWrapperEl = document.createElement("div");
978-
if (
979-
childFromRoot &&
980-
childFromRoot.parentElement &&
981-
!childFromRoot.hasAttribute(TLDRAW_DATA_ATTRIBUTE)
982-
) {
983-
rootElement.setAttribute(TLDRAW_DATA_ATTRIBUTE, "true");
984-
childFromRoot.setAttribute(TLDRAW_DATA_ATTRIBUTE, "true");
977+
if (childFromRoot && childFromRoot.parentElement) {
985978
const parentEl = childFromRoot.parentElement;
979+
980+
if (parentEl.querySelector(".roamjs-tldraw-canvas-container"))
981+
return () => {};
982+
986983
parentEl.appendChild(canvasWrapperEl);
987984
canvasWrapperEl.style.minHeight = minHeight;
988985
canvasWrapperEl.style.height = height;
@@ -998,8 +995,6 @@ const renderTldrawCanvasHelper = ({
998995
const originalUnmount = unmount;
999996
return () => {
1000997
originalUnmount();
1001-
childFromRoot.removeAttribute(TLDRAW_DATA_ATTRIBUTE);
1002-
rootElement.removeAttribute(TLDRAW_DATA_ATTRIBUTE);
1003998
canvasWrapperEl.remove();
1004999
};
10051000
};

apps/roam/src/components/canvas/tldrawStyles.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
// tldrawStyles.ts because some of these styles need to be inlined
2-
export const TLDRAW_DATA_ATTRIBUTE = "dg-tldraw-canvas-wrapper";
32
export default /* css */ `
4-
/* Hide Roam Blocks only when canvas is present */
5-
.roam-article[${TLDRAW_DATA_ATTRIBUTE}="true"] .rm-block-children {
3+
/* Hide Roam Blocks only when a canvas is present under the root */
4+
.roam-article:has(.roamjs-tldraw-canvas-container) .rm-block-children {
65
display: none;
76
}
87
9-
/* Hide Roam Blocks in sidebar when canvas is present */
10-
.rm-sidebar-outline[${TLDRAW_DATA_ATTRIBUTE}="true"] .rm-block-children {
8+
/* Hide Roam Blocks in sidebar when a canvas is present */
9+
.rm-sidebar-outline:has(.roamjs-tldraw-canvas-container) .rm-block-children {
1110
display: none;
1211
}
1312

0 commit comments

Comments
 (0)