Add document insights panel (#4418)
* Add document context to allow accessing editor in header, modals, and elsewhere * lint * framework * Hacking together fast * Insights * Spacing tweak, docs
This commit is contained in:
22
app/hooks/useTextSelection.ts
Normal file
22
app/hooks/useTextSelection.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import * as React from "react";
|
||||
import useEventListener from "./useEventListener";
|
||||
|
||||
/**
|
||||
* A hook that returns the currently selected text.
|
||||
*
|
||||
* @returns The selected text
|
||||
*/
|
||||
export default function useTextSelection() {
|
||||
const [selection, setSelection] = React.useState<string>("");
|
||||
|
||||
const handleMouse = React.useCallback(() => {
|
||||
const selection = window.getSelection();
|
||||
const text = selection?.toString();
|
||||
setSelection(text ?? "");
|
||||
}, []);
|
||||
|
||||
useEventListener("mousemove", handleMouse);
|
||||
useEventListener("mouseup", handleMouse);
|
||||
|
||||
return selection;
|
||||
}
|
||||
Reference in New Issue
Block a user