UNPKG

@liveblocks/react-ui

Version:

A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.

117 lines (113 loc) 4.11 kB
'use strict'; var jsxRuntime = require('react/jsx-runtime'); var react$1 = require('@liveblocks/react'); var react = require('react'); var Send = require('../../icons/Send.cjs'); var Stop = require('../../icons/Stop.cjs'); var overrides = require('../../overrides.cjs'); var index = require('../../primitives/AiComposer/index.cjs'); var contexts = require('../../primitives/AiComposer/contexts.cjs'); var cn = require('../../utils/cn.cjs'); var Button = require('./Button.cjs'); var Tooltip = require('./Tooltip.cjs'); var TooltipPrimitive = require('@radix-ui/react-tooltip'); function AiComposerAction({ overrides: overrides$1 }) { const { canAbort } = contexts.useAiComposer(); const $ = overrides.useOverrides(overrides$1); const preventDefault = react.useCallback((event) => { event.preventDefault(); }, []); const stopPropagation = react.useCallback((event) => { event.stopPropagation(); }, []); return canAbort ? /* @__PURE__ */ jsxRuntime.jsx(Tooltip.ShortcutTooltip, { content: $.AI_COMPOSER_ABORT, children: /* @__PURE__ */ jsxRuntime.jsx(index.AiComposerAbort, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx( Button.Button, { onPointerDown: preventDefault, onClick: stopPropagation, className: "lb-ai-composer-action", variant: "secondary", "aria-label": $.AI_COMPOSER_ABORT, icon: /* @__PURE__ */ jsxRuntime.jsx(Stop.StopIcon, {}) } ) }) }) : /* @__PURE__ */ jsxRuntime.jsx(Tooltip.ShortcutTooltip, { content: $.AI_COMPOSER_SEND, shortcut: "Enter", children: /* @__PURE__ */ jsxRuntime.jsx(index.AiComposerSubmit, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx( Button.Button, { onPointerDown: preventDefault, onClick: stopPropagation, className: "lb-ai-composer-action", variant: "primary", "aria-label": $.AI_COMPOSER_SEND, icon: /* @__PURE__ */ jsxRuntime.jsx(Send.SendIcon, {}) } ) }) }); } const AiComposer = react.forwardRef( ({ defaultValue, onComposerSubmit, disabled, autoFocus, overrides: overrides$1, className, chatId, branchId, copilotId, responseTimeout, stream = true, onComposerSubmitted, ...props }, forwardedRef) => { const $ = overrides.useOverrides(overrides$1); const sendAiMessage = react$1.useSendAiMessage(chatId, { stream, copilotId, timeout: responseTimeout }); const handleComposerSubmit = react.useCallback( (message, event) => { onComposerSubmit?.(message, event); if (event.isDefaultPrevented()) return; const newMessage = sendAiMessage(message.text); onComposerSubmitted?.(newMessage); }, [onComposerSubmit, sendAiMessage, onComposerSubmitted] ); return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx( index.AiComposerForm, { className: cn.cn( "lb-root lb-ai-composer lb-ai-composer-form", className ), dir: $.dir, ...props, disabled, ref: forwardedRef, onComposerSubmit: handleComposerSubmit, chatId, branchId, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lb-ai-composer-editor-container", children: [ /* @__PURE__ */ jsxRuntime.jsx( index.Editor, { autoFocus, className: "lb-ai-composer-editor", placeholder: $.AI_COMPOSER_PLACEHOLDER, defaultValue } ), /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lb-ai-composer-footer", children: [ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-composer-editor-actions" }), /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-ai-composer-actions", children: /* @__PURE__ */ jsxRuntime.jsx(AiComposerAction, { overrides: overrides$1 }) }) ] }) ] }) } ) }); } ); exports.AiComposer = AiComposer; //# sourceMappingURL=AiComposer.cjs.map