@assistant-ui/react
Version:
React components for AI chat.
32 lines • 1.26 kB
JavaScript
// src/primitive-hooks/actionBar/useActionBarCopy.tsx
import { useCallback } from "react";
import {
useMessage,
useMessageRuntime,
useMessageUtils
} from "../../context/react/MessageContext.mjs";
import { useComposerRuntime } from "../../context/index.mjs";
var useActionBarCopy = ({
copiedDuration = 3e3
} = {}) => {
const messageRuntime = useMessageRuntime();
const composerRuntime = useComposerRuntime();
const setIsCopied = useMessageUtils((s) => s.setIsCopied);
const hasCopyableContent = useMessage((message) => {
return (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c) => c.type === "text" && c.text.length > 0);
});
const callback = useCallback(() => {
const { isEditing, text: composerValue } = composerRuntime.getState();
const valueToCopy = isEditing ? composerValue : messageRuntime.unstable_getCopyText();
navigator.clipboard.writeText(valueToCopy).then(() => {
setIsCopied(true);
setTimeout(() => setIsCopied(false), copiedDuration);
});
}, [messageRuntime, setIsCopied, composerRuntime, copiedDuration]);
if (!hasCopyableContent) return null;
return callback;
};
export {
useActionBarCopy
};
//# sourceMappingURL=useActionBarCopy.mjs.map