Skip to content

Commit 9bffa7b

Browse files
committed
Revert "Cleaned up LinkToolbarController, FloatingComposerController, and FloatingThreadController"
This reverts commit 7d223de.
1 parent af1f6cd commit 9bffa7b

File tree

7 files changed

+102
-95
lines changed

7 files changed

+102
-95
lines changed

packages/react/src/components/Comments/FloatingComposerController.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
} from "@blocknote/core";
99
import { CommentsExtension } from "@blocknote/core/comments";
1010
import { flip, offset, shift } from "@floating-ui/react";
11-
import { ComponentProps, FC, useMemo } from "react";
11+
import { ComponentProps, FC, useEffect, useMemo, useState } from "react";
1212

1313
import { useBlockNoteEditor } from "../../hooks/useBlockNoteEditor.js";
1414
import { useEditorState } from "../../hooks/useEditorState.js";
@@ -25,6 +25,8 @@ export default function FloatingComposerController<
2525
floatingComposer?: FC<ComponentProps<typeof FloatingComposer>>;
2626
floatingUIOptions?: FloatingUIOptions;
2727
}) {
28+
const [open, setOpen] = useState(false);
29+
2830
const editor = useBlockNoteEditor<B, I, S>();
2931

3032
const comments = useExtension(CommentsExtension);
@@ -33,6 +35,9 @@ export default function FloatingComposerController<
3335
editor,
3436
selector: (state) => state.pendingComment,
3537
});
38+
useEffect(() => {
39+
setOpen(pendingComment);
40+
}, [pendingComment]);
3641

3742
const position = useEditorState({
3843
editor,
@@ -48,14 +53,16 @@ export default function FloatingComposerController<
4853
const floatingUIOptions = useMemo<FloatingUIOptions>(
4954
() => ({
5055
useFloatingOptions: {
51-
open: !!pendingComment,
56+
open,
5257
// Needed as hooks like `useDismiss` call `onOpenChange` to change the
5358
// open state.
5459
onOpenChange: (open) => {
5560
if (!open) {
5661
comments.stopPendingComment();
5762
editor.focus();
5863
}
64+
65+
setOpen(open);
5966
},
6067
placement: "bottom",
6168
middleware: [offset(10), shift(), flip()],
@@ -67,7 +74,7 @@ export default function FloatingComposerController<
6774
},
6875
...props.floatingUIOptions,
6976
}),
70-
[comments, editor, pendingComment, props.floatingUIOptions],
77+
[comments, editor, open, props.floatingUIOptions],
7178
);
7279

7380
// nice to have improvements would be:

packages/react/src/components/Comments/FloatingThreadController.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CommentsExtension } from "@blocknote/core/comments";
22
import { flip, offset, shift } from "@floating-ui/react";
3-
import { ComponentProps, FC, useMemo } from "react";
3+
import { ComponentProps, FC, useEffect, useMemo, useState } from "react";
44

55
import { useBlockNoteEditor } from "../../hooks/useBlockNoteEditor.js";
66
import { useExtension, useExtensionState } from "../../hooks/useExtension.js";
@@ -19,6 +19,8 @@ export default function FloatingThreadController(props: {
1919
}) {
2020
const editor = useBlockNoteEditor<any, any, any>();
2121

22+
const [open, setOpen] = useState(false);
23+
2224
const comments = useExtension(CommentsExtension);
2325
const selectedThread = useExtensionState(CommentsExtension, {
2426
editor,
@@ -30,6 +32,9 @@ export default function FloatingThreadController(props: {
3032
}
3133
: undefined,
3234
});
35+
useEffect(() => {
36+
setOpen(!!selectedThread);
37+
}, [selectedThread]);
3338

3439
const threads = useThreads();
3540

@@ -41,7 +46,7 @@ export default function FloatingThreadController(props: {
4146
const floatingUIOptions = useMemo<FloatingUIOptions>(
4247
() => ({
4348
useFloatingOptions: {
44-
open: !!selectedThread,
49+
open,
4550
// Needed as hooks like `useDismiss` call `onOpenChange` to change the
4651
// open state.
4752
onOpenChange: (open, _event, reason) => {
@@ -52,6 +57,8 @@ export default function FloatingThreadController(props: {
5257
if (!open) {
5358
comments.selectThread(undefined);
5459
}
60+
61+
setOpen(open);
5562
},
5663
placement: "bottom",
5764
middleware: [offset(10), shift(), flip()],
@@ -63,7 +70,7 @@ export default function FloatingThreadController(props: {
6370
},
6471
...props.floatingUIOptions,
6572
}),
66-
[comments, editor, props.floatingUIOptions, selectedThread],
73+
[comments, editor, open, props.floatingUIOptions],
6774
);
6875

6976
// nice to have improvements:

packages/react/src/components/LinkToolbar/DefaultButtons/EditLinkButton.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@ import { LinkToolbarProps } from "../LinkToolbarProps.js";
66
export const EditLinkButton = (
77
props: Pick<
88
LinkToolbarProps,
9-
"url" | "text" | "range" | "setToolbarOpen" | "setToolbarPositionFrozen"
9+
"url" | "text" | "range" | "setToolbarFrozen" | "setToolbarOpen"
1010
>,
1111
) => {
1212
const Components = useComponentsContext()!;
1313
const dict = useDictionary();
1414

1515
return (
16-
<Components.Generic.Popover.Root
17-
onOpenChange={props.setToolbarPositionFrozen}
18-
>
16+
<Components.Generic.Popover.Root onOpenChange={props.setToolbarFrozen}>
1917
<Components.Generic.Popover.Trigger>
2018
<Components.LinkToolbar.Button
2119
className={"bn-button"}
@@ -34,7 +32,7 @@ export const EditLinkButton = (
3432
text={props.text}
3533
range={props.range}
3634
setToolbarOpen={props.setToolbarOpen}
37-
setToolbarPositionFrozen={props.setToolbarPositionFrozen}
35+
setToolbarFrozen={props.setToolbarFrozen}
3836
/>
3937
</Components.Generic.Popover.Content>
4038
</Components.Generic.Popover.Root>

packages/react/src/components/LinkToolbar/EditLinkMenuItems.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const validateUrl = (url: string) => {
2929
export const EditLinkMenuItems = (
3030
props: Pick<
3131
LinkToolbarProps,
32-
"url" | "text" | "range" | "setToolbarOpen" | "setToolbarPositionFrozen"
32+
"url" | "text" | "range" | "setToolbarOpen" | "setToolbarFrozen"
3333
> & {
3434
showTextField?: boolean;
3535
},
@@ -55,7 +55,7 @@ export const EditLinkMenuItems = (
5555
event.preventDefault();
5656
editLink(validateUrl(currentUrl), currentText, props.range.from);
5757
props.setToolbarOpen?.(false);
58-
props.setToolbarPositionFrozen?.(false);
58+
props.setToolbarFrozen?.(false);
5959
}
6060
},
6161
[editLink, currentUrl, currentText, props],
@@ -76,7 +76,7 @@ export const EditLinkMenuItems = (
7676
const handleSubmit = useCallback(() => {
7777
editLink(validateUrl(currentUrl), currentText, props.range.from);
7878
props.setToolbarOpen?.(false);
79-
props.setToolbarPositionFrozen?.(false);
79+
props.setToolbarFrozen?.(false);
8080
}, [editLink, currentUrl, currentText, props]);
8181

8282
return (

packages/react/src/components/LinkToolbar/LinkToolbar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ export const LinkToolbar = (props: LinkToolbarProps) => {
2626
url={props.url}
2727
text={props.text}
2828
range={props.range}
29+
setToolbarFrozen={props.setToolbarFrozen}
2930
setToolbarOpen={props.setToolbarOpen}
30-
setToolbarPositionFrozen={props.setToolbarPositionFrozen}
3131
/>
3232
<OpenLinkButton url={props.url} />
3333
<DeleteLinkButton

0 commit comments

Comments
 (0)