Skip to content

Commit 030be25

Browse files
committed
Merge branch 'refs/heads/main' into releases
2 parents 7e815ac + d9562a2 commit 030be25

File tree

9 files changed

+88
-24
lines changed

9 files changed

+88
-24
lines changed

package-lock.json

Lines changed: 2 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/core/src/editor/editor.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Tippy popups that are appended to document.body directly
6262

6363
.bn-drag-preview {
6464
position: absolute;
65-
left: -100000px;
65+
z-index: -1;
6666
}
6767

6868
/* Give a remote user a caret */

packages/core/src/extensions/SideMenu/SideMenuPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ function unsetDragImage(rootEl: Document | ShadowRoot) {
158158
if (rootEl instanceof ShadowRoot) {
159159
rootEl.removeChild(dragImageElement);
160160
} else {
161-
rootEl.body.appendChild(dragImageElement);
161+
rootEl.body.removeChild(dragImageElement);
162162
}
163163

164164
dragImageElement = undefined;

packages/mantine/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@
5858
"@mantine/utils": "^6.0.21",
5959
"react": "^18",
6060
"react-dom": "^18",
61-
"react-icons": "^5.2.1",
62-
"use-prefers-color-scheme": "^1.1.3"
61+
"react-icons": "^5.2.1"
6362
},
6463
"devDependencies": {
6564
"@types/react": "^18.0.25",

packages/mantine/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import {
99
Components,
1010
ComponentsContext,
1111
useBlockNoteContext,
12+
usePrefersColorScheme,
1213
} from "@blocknote/react";
1314
import { MantineProvider } from "@mantine/core";
1415
import { ComponentProps, useCallback } from "react";
15-
import { usePrefersColorScheme } from "use-prefers-color-scheme";
1616

1717
import {
1818
Theme,

packages/react/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@
5858
"lodash.merge": "^4.6.2",
5959
"react": "^18",
6060
"react-dom": "^18",
61-
"react-icons": "^5.2.1",
62-
"use-prefers-color-scheme": "^1.1.3"
61+
"react-icons": "^5.2.1"
6362
},
6463
"devDependencies": {
6564
"@types/lodash.foreach": "^4.5.9",

packages/react/src/editor/BlockNoteView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import React, {
1515
useMemo,
1616
useState,
1717
} from "react";
18-
import { usePrefersColorScheme } from "use-prefers-color-scheme";
1918
import { useEditorChange } from "../hooks/useEditorChange";
2019
import { useEditorSelectionChange } from "../hooks/useEditorSelectionChange";
20+
import { usePrefersColorScheme } from "../hooks/usePrefersColorScheme";
2121
import { BlockNoteContext, useBlockNoteContext } from "./BlockNoteContext";
2222
import {
2323
BlockNoteDefaultUI,
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
// This code is taken from the `use-prefers-color-scheme` repo:
2+
// https://github.com/rfoel/use-prefers-color-scheme/blob/v1.0.0/src/index.ts
3+
// The code is copied instead of being imported as the package seems to cause
4+
// issues when used in a NextJS project.
5+
import { useEffect, useState } from "react";
6+
7+
const darkQuery = window.matchMedia?.("(prefers-color-scheme: dark)");
8+
9+
const lightQuery = window.matchMedia?.("(prefers-color-scheme: light)");
10+
11+
export const usePrefersColorScheme = () => {
12+
const isDark = darkQuery?.matches;
13+
const isLight = lightQuery?.matches;
14+
15+
const [preferredColorSchema, setPreferredColorSchema] = useState<
16+
"dark" | "light" | "no-preference"
17+
>(isDark ? "dark" : isLight ? "light" : "no-preference");
18+
19+
useEffect(() => {
20+
if (isDark) {
21+
setPreferredColorSchema("dark");
22+
} else if (isLight) {
23+
setPreferredColorSchema("light");
24+
} else {
25+
setPreferredColorSchema("no-preference");
26+
}
27+
}, [isDark, isLight]);
28+
29+
useEffect(() => {
30+
if (typeof darkQuery?.addEventListener === "function") {
31+
// In modern browsers MediaQueryList should subclass EventTarget
32+
// https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList
33+
34+
const darkListener = ({ matches }: MediaQueryListEvent) =>
35+
matches && setPreferredColorSchema("dark");
36+
const lightListener = ({ matches }: MediaQueryListEvent) =>
37+
matches && setPreferredColorSchema("light");
38+
39+
darkQuery?.addEventListener("change", darkListener);
40+
lightQuery?.addEventListener("change", lightListener);
41+
42+
return () => {
43+
darkQuery?.removeEventListener("change", darkListener);
44+
lightQuery?.removeEventListener("change", lightListener);
45+
};
46+
} else {
47+
// In some early implementations MediaQueryList existed, but did not
48+
// subclass EventTarget
49+
50+
// Closing over isDark here would cause it to not update when
51+
// `darkQuery.matches` changes
52+
const listener = () =>
53+
setPreferredColorSchema(
54+
darkQuery.matches
55+
? "dark"
56+
: lightQuery.matches
57+
? "light"
58+
: "no-preference"
59+
);
60+
61+
// This is two state updates if a user changes from dark to light, but
62+
// both state updates will be consistent and should be batched by React,
63+
// resulting in only one re-render
64+
darkQuery?.addEventListener("change", listener);
65+
lightQuery?.addEventListener("change", listener);
66+
67+
return () => {
68+
darkQuery?.removeEventListener("change", listener);
69+
lightQuery?.removeEventListener("change", listener);
70+
};
71+
}
72+
}, []);
73+
74+
if (typeof window.matchMedia !== "function") {
75+
return preferredColorSchema;
76+
}
77+
78+
return preferredColorSchema;
79+
};

packages/react/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export * from "./hooks/useEditorChange";
7474
export * from "./hooks/useEditorContentOrSelectionChange";
7575
export * from "./hooks/useEditorForceUpdate";
7676
export * from "./hooks/useEditorSelectionChange";
77+
export * from "./hooks/usePrefersColorScheme";
7778
export * from "./hooks/useSelectedBlocks";
7879

7980
export * from "./schema/ReactBlockSpec";

0 commit comments

Comments
 (0)