@assistant-ui/react 0.15.25 → 0.15.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/useToolCallElapsed.d.ts.map +1 -1
- package/dist/hooks/useToolCallElapsed.js +3 -2
- package/dist/hooks/useToolCallElapsed.js.map +1 -1
- package/dist/index.d.ts +30 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.js +3 -2
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/mcp-apps/app-frame.d.ts.map +1 -1
- package/dist/mcp-apps/app-frame.js +56 -46
- package/dist/mcp-apps/app-frame.js.map +1 -1
- package/dist/mcp-apps/csp.d.ts +4 -0
- package/dist/mcp-apps/csp.d.ts.map +1 -0
- package/dist/mcp-apps/csp.js +93 -0
- package/dist/mcp-apps/csp.js.map +1 -0
- package/dist/mcp-apps/types.d.ts +1 -0
- package/dist/mcp-apps/types.d.ts.map +1 -1
- package/dist/mcp-apps/types.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +1 -0
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/attachment.d.ts +3 -1
- package/dist/primitives/attachment.d.ts.map +1 -1
- package/dist/primitives/attachment.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.d.ts +5 -1
- package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js +14 -1
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts +14 -0
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +4 -3
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js +24 -19
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/composerInputSelector.d.ts +3 -0
- package/dist/primitives/composer/composerInputSelector.d.ts.map +1 -0
- package/dist/primitives/composer/composerInputSelector.js +7 -0
- package/dist/primitives/composer/composerInputSelector.js.map +1 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.d.ts +2 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.d.ts.map +1 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.js +42 -0
- package/dist/primitives/composer/useComposerCancelWithFocus.js.map +1 -0
- package/dist/primitives/composer.d.ts +35 -14
- package/dist/primitives/composer.d.ts.map +1 -1
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts +8 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +58 -278
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +5 -2
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +4 -3
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +2 -2
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +90 -21
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/sandbox-host/SandboxHost.d.ts.map +1 -1
- package/dist/sandbox-host/SandboxHost.js +3 -2
- package/dist/sandbox-host/SandboxHost.js.map +1 -1
- package/dist/unstable/useComposerInput.d.ts +7 -4
- package/dist/unstable/useComposerInput.d.ts.map +1 -1
- package/dist/unstable/useComposerInput.js +4 -4
- package/dist/unstable/useComposerInput.js.map +1 -1
- package/dist/unstable/useComposerInputHistory.d.ts +3 -2
- package/dist/unstable/useComposerInputHistory.d.ts.map +1 -1
- package/dist/unstable/useComposerInputHistory.js +2 -2
- package/dist/unstable/useComposerInputHistory.js.map +1 -1
- package/dist/unstable/useLiveCompletionAdapter.d.ts +3 -2
- package/dist/unstable/useLiveCompletionAdapter.d.ts.map +1 -1
- package/dist/unstable/useLiveCompletionAdapter.js +8 -7
- package/dist/unstable/useLiveCompletionAdapter.js.map +1 -1
- package/dist/unstable/useMentionAdapter.d.ts +12 -3
- package/dist/unstable/useMentionAdapter.d.ts.map +1 -1
- package/dist/unstable/useMentionAdapter.js +2 -2
- package/dist/unstable/useMentionAdapter.js.map +1 -1
- package/dist/unstable/useMessageStallDetection.d.ts +4 -2
- package/dist/unstable/useMessageStallDetection.d.ts.map +1 -1
- package/dist/unstable/useMessageStallDetection.js +2 -2
- package/dist/unstable/useMessageStallDetection.js.map +1 -1
- package/dist/unstable/useSlashCommandAdapter.d.ts +5 -2
- package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -1
- package/dist/unstable/useSlashCommandAdapter.js +5 -4
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
- package/dist/unstable/webmcp/useWebMcpProvider.d.ts +4 -0
- package/dist/unstable/webmcp/useWebMcpProvider.d.ts.map +1 -1
- package/dist/unstable/webmcp/useWebMcpProvider.js +2 -0
- package/dist/unstable/webmcp/useWebMcpProvider.js.map +1 -1
- package/dist/utils/getSelectionMessageId.d.ts.map +1 -1
- package/dist/utils/getSelectionMessageId.js +31 -8
- package/dist/utils/getSelectionMessageId.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.d.ts.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js +2 -22
- package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
- package/dist/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/utils/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/dist/utils/useIsomorphicLayoutEffect.js +6 -0
- package/dist/utils/useIsomorphicLayoutEffect.js.map +1 -0
- package/package.json +10 -10
- package/src/hooks/useToolCallElapsed.test.tsx +4 -2
- package/src/hooks/useToolCallElapsed.ts +3 -2
- package/src/index.ts +19 -2
- package/src/mcp-apps/McpAppRenderer.tsx +3 -9
- package/src/mcp-apps/app-frame.test.tsx +38 -0
- package/src/mcp-apps/app-frame.tsx +5 -8
- package/src/mcp-apps/csp.test.ts +112 -0
- package/src/mcp-apps/csp.ts +124 -0
- package/src/mcp-apps/types.ts +1 -0
- package/src/model-context/frame/AssistantFrame.test.ts +45 -0
- package/src/model-context/frame/SPEC_AssistantFrame.md +1 -0
- package/src/primitives/assistantModal/AssistantModalRoot.tsx +1 -0
- package/src/primitives/attachment.ts +4 -1
- package/src/primitives/composer/ComposerCancel.focus.test.tsx +307 -0
- package/src/primitives/composer/ComposerCancel.ts +8 -1
- package/src/primitives/composer/ComposerInput.tsx +19 -1
- package/src/primitives/composer/ComposerRoot.tsx +6 -5
- package/src/primitives/composer/composerInputSelector.ts +4 -0
- package/src/primitives/composer/useComposerCancelWithFocus.ts +57 -0
- package/src/primitives/composer.ts +56 -21
- package/src/primitives/message/MessagePartsGrouped.test.tsx +106 -2
- package/src/primitives/message/MessagePartsGrouped.tsx +36 -134
- package/src/primitives/selectionToolbar/SelectionToolbarRoot.test.tsx +20 -12
- package/src/primitives/selectionToolbar/SelectionToolbarRoot.tsx +6 -2
- package/src/primitives/thread/ThreadViewport.tsx +3 -3
- package/src/primitives/thread/topAnchor/useTopAnchorReserve.ts +2 -2
- package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +666 -63
- package/src/primitives/thread/useThreadViewportAutoScroll.ts +201 -73
- package/src/sandbox-host/SandboxHost.tsx +3 -8
- package/src/unstable/useComposerInput.ts +7 -4
- package/src/unstable/useComposerInputHistory.ts +3 -2
- package/src/unstable/useLiveCompletionAdapter.ts +9 -14
- package/src/unstable/useMentionAdapter.ts +12 -3
- package/src/unstable/useMessageStallDetection.ts +4 -2
- package/src/unstable/useSlashCommandAdapter.ts +8 -4
- package/src/unstable/webmcp/useWebMcpProvider.ts +4 -0
- package/src/utils/getSelectionMessageId.test.ts +231 -0
- package/src/utils/getSelectionMessageId.ts +45 -7
- package/src/utils/hooks/useOnResizeContent.ts +2 -29
- package/src/utils/useIsomorphicLayoutEffect.test.tsx +21 -0
- package/src/utils/useIsomorphicLayoutEffect.ts +9 -0
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
import { Primitive as Primitive$1 } from "../../utils/Primitive.js";
|
|
3
3
|
import { useComposerSend } from "./ComposerSend.js";
|
|
4
4
|
import { ComposerCompactContext } from "./ComposerCompactContext.js";
|
|
5
|
+
import { COMPOSER_INPUT_SELECTOR, CONTENT_EDITABLE_SELECTOR } from "./composerInputSelector.js";
|
|
5
6
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
6
7
|
import { forwardRef, useState } from "@assistant-ui/tap/react-shim";
|
|
7
8
|
import { useAuiState } from "@assistant-ui/store";
|
|
8
9
|
import { jsx } from "react/jsx-runtime";
|
|
9
10
|
import { composeEventHandlers } from "radix-ui/internal";
|
|
10
11
|
//#region src/primitives/composer/ComposerRoot.tsx
|
|
11
|
-
const CONTENT_EDITABLE_SELECTOR = "[contenteditable]:not([contenteditable='false'])";
|
|
12
|
-
const COMPOSER_INPUT_SELECTOR = `textarea:not(:disabled), ${CONTENT_EDITABLE_SELECTOR}`;
|
|
13
12
|
const INTERACTIVE_ELEMENT_SELECTOR = [
|
|
14
13
|
"a",
|
|
15
14
|
"audio[controls]",
|
|
@@ -47,7 +46,7 @@ const INTERACTIVE_ELEMENT_SELECTOR = [
|
|
|
47
46
|
* ```
|
|
48
47
|
*/
|
|
49
48
|
const ComposerPrimitiveRoot = forwardRef((t0, forwardedRef) => {
|
|
50
|
-
const $ = c(
|
|
49
|
+
const $ = c(25);
|
|
51
50
|
let compact;
|
|
52
51
|
let onMouseDown;
|
|
53
52
|
let onSubmit;
|
|
@@ -66,6 +65,7 @@ const ComposerPrimitiveRoot = forwardRef((t0, forwardedRef) => {
|
|
|
66
65
|
rest = $[4];
|
|
67
66
|
}
|
|
68
67
|
const send = useComposerSend();
|
|
68
|
+
const composerType = useAuiState(_temp);
|
|
69
69
|
const [multiline, setMultiline] = useState(false);
|
|
70
70
|
let t1;
|
|
71
71
|
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
@@ -75,7 +75,7 @@ const ComposerPrimitiveRoot = forwardRef((t0, forwardedRef) => {
|
|
|
75
75
|
const compactContext = t1;
|
|
76
76
|
let t2;
|
|
77
77
|
if ($[6] !== compact) {
|
|
78
|
-
t2 = (
|
|
78
|
+
t2 = (s_0) => compact ? s_0.composer.attachments.length === 0 && s_0.composer.quote == null && s_0.composer.queue.length === 0 && s_0.composer.dictation == null && !s_0.composer.text.includes("\n") : false;
|
|
79
79
|
$[6] = compact;
|
|
80
80
|
$[7] = t2;
|
|
81
81
|
} else t2 = $[7];
|
|
@@ -91,7 +91,7 @@ const ComposerPrimitiveRoot = forwardRef((t0, forwardedRef) => {
|
|
|
91
91
|
$[9] = t3;
|
|
92
92
|
} else t3 = $[9];
|
|
93
93
|
const handleSubmit = t3;
|
|
94
|
-
const handleMouseDown =
|
|
94
|
+
const handleMouseDown = _temp2;
|
|
95
95
|
const t4 = compact ? compactContext : null;
|
|
96
96
|
const t5 = isCompact ? "" : void 0;
|
|
97
97
|
let t6;
|
|
@@ -108,35 +108,40 @@ const ComposerPrimitiveRoot = forwardRef((t0, forwardedRef) => {
|
|
|
108
108
|
$[14] = t7;
|
|
109
109
|
} else t7 = $[14];
|
|
110
110
|
let t8;
|
|
111
|
-
if ($[15] !==
|
|
111
|
+
if ($[15] !== composerType || $[16] !== forwardedRef || $[17] !== rest || $[18] !== t5 || $[19] !== t6 || $[20] !== t7) {
|
|
112
112
|
t8 = /* @__PURE__ */ jsx(Primitive$1.form, {
|
|
113
113
|
...rest,
|
|
114
|
+
"data-aui-composer-type": composerType,
|
|
114
115
|
"data-compact": t5,
|
|
115
116
|
ref: forwardedRef,
|
|
116
117
|
onSubmit: t6,
|
|
117
118
|
onMouseDown: t7
|
|
118
119
|
});
|
|
119
|
-
$[15] =
|
|
120
|
-
$[16] =
|
|
121
|
-
$[17] =
|
|
122
|
-
$[18] =
|
|
123
|
-
$[19] =
|
|
124
|
-
$[20] =
|
|
125
|
-
|
|
120
|
+
$[15] = composerType;
|
|
121
|
+
$[16] = forwardedRef;
|
|
122
|
+
$[17] = rest;
|
|
123
|
+
$[18] = t5;
|
|
124
|
+
$[19] = t6;
|
|
125
|
+
$[20] = t7;
|
|
126
|
+
$[21] = t8;
|
|
127
|
+
} else t8 = $[21];
|
|
126
128
|
let t9;
|
|
127
|
-
if ($[
|
|
129
|
+
if ($[22] !== t4 || $[23] !== t8) {
|
|
128
130
|
t9 = /* @__PURE__ */ jsx(ComposerCompactContext.Provider, {
|
|
129
131
|
value: t4,
|
|
130
132
|
children: t8
|
|
131
133
|
});
|
|
132
|
-
$[
|
|
133
|
-
$[
|
|
134
|
-
$[
|
|
135
|
-
} else t9 = $[
|
|
134
|
+
$[22] = t4;
|
|
135
|
+
$[23] = t8;
|
|
136
|
+
$[24] = t9;
|
|
137
|
+
} else t9 = $[24];
|
|
136
138
|
return t9;
|
|
137
139
|
});
|
|
138
140
|
ComposerPrimitiveRoot.displayName = "ComposerPrimitive.Root";
|
|
139
|
-
function _temp(
|
|
141
|
+
function _temp(s) {
|
|
142
|
+
return s.composer.type;
|
|
143
|
+
}
|
|
144
|
+
function _temp2(e_0) {
|
|
140
145
|
if (e_0.button !== 0) return;
|
|
141
146
|
const target = e_0.target;
|
|
142
147
|
if (!(target instanceof Element) || !e_0.currentTarget.contains(target)) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposerRoot.js","names":["c","_c","composeEventHandlers","useAuiState","Primitive","ComponentRef","FormEvent","forwardRef","ComponentPropsWithoutRef","MouseEvent","useMemo","useState","useComposerSend","ComposerCompactContext","
|
|
1
|
+
{"version":3,"file":"ComposerRoot.js","names":["c","_c","composeEventHandlers","useAuiState","Primitive","ComponentRef","FormEvent","forwardRef","ComponentPropsWithoutRef","MouseEvent","useMemo","useState","useComposerSend","ComposerCompactContext","COMPOSER_INPUT_SELECTOR","CONTENT_EDITABLE_SELECTOR","INTERACTIVE_ELEMENT_SELECTOR","join","ComposerPrimitiveRoot","Element","form","Props","compact","t0","forwardedRef","$","onMouseDown","onSubmit","rest","send","composerType","_temp","multiline","setMultiline","t1","Symbol","for","compactContext","t2","s_0","s","composer","attachments","length","quote","queue","dictation","text","includes","stateAllowsCompact","isCompact","t3","e","preventDefault","handleSubmit","handleMouseDown","_temp2","t4","t5","undefined","t6","t7","t8","t9","displayName","type","e_0","button","target","currentTarget","contains","interactive","closest","input","querySelector","focus","_c","Primitive"],"sources":["../../../src/primitives/composer/ComposerRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n type FormEvent,\n forwardRef,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n useMemo,\n useState,\n} from \"react\";\nimport { useComposerSend } from \"./ComposerSend\";\nimport { ComposerCompactContext } from \"./ComposerCompactContext\";\nimport {\n COMPOSER_INPUT_SELECTOR,\n CONTENT_EDITABLE_SELECTOR,\n} from \"./composerInputSelector\";\n\n// Keeps tabindex=\"-1\": roving-tabindex widgets click-focus items at -1.\nconst INTERACTIVE_ELEMENT_SELECTOR = [\n \"a\",\n \"audio[controls]\",\n \"button\",\n \"details\",\n \"embed\",\n \"iframe\",\n \"input\",\n \"label\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"video[controls]\",\n CONTENT_EDITABLE_SELECTOR,\n \"[tabindex]\",\n].join(\", \");\n\nexport namespace ComposerPrimitiveRoot {\n export type Element = ComponentRef<typeof Primitive.form>;\n /**\n * Props for the ComposerPrimitive.Root component.\n * Accepts all standard form element props.\n */\n export type Props = ComponentPropsWithoutRef<typeof Primitive.form> & {\n /**\n * Opt the composer into compact mode. While the input holds at most a single\n * line of text and there are no attachments, quote, queued messages, or\n * active dictation, the root renders a `data-compact` attribute so styles\n * can collapse the composer into a single row. It expands automatically\n * when any of those conditions stop holding.\n * @default false\n */\n compact?: boolean | undefined;\n };\n}\n\n/**\n * The root form container for message composition.\n *\n * This component provides a form wrapper that handles message submission when the form\n * is submitted (e.g., via Enter key or submit button). It automatically prevents the\n * default form submission and triggers the composer's send functionality.\n *\n * Clicking blank form space focuses the composer input (the first textarea or\n * contenteditable inside the form). Text selection cannot start from blank\n * areas; descendants that need native mousedown defaults can call\n * `stopPropagation()` in their own `onMouseDown`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Root>\n * <ComposerPrimitive.Input placeholder=\"Type your message...\" />\n * <ComposerPrimitive.Send>Send</ComposerPrimitive.Send>\n * </ComposerPrimitive.Root>\n * ```\n */\nexport const ComposerPrimitiveRoot = forwardRef<\n ComposerPrimitiveRoot.Element,\n ComposerPrimitiveRoot.Props\n>(({ onSubmit, onMouseDown, compact, ...rest }, forwardedRef) => {\n const send = useComposerSend();\n const composerType = useAuiState((s) => s.composer.type);\n\n const [multiline, setMultiline] = useState(false);\n const compactContext = useMemo(() => ({ setMultiline }), []);\n const stateAllowsCompact = useAuiState((s) =>\n compact\n ? s.composer.attachments.length === 0 &&\n s.composer.quote == null &&\n s.composer.queue.length === 0 &&\n s.composer.dictation == null &&\n !s.composer.text.includes(\"\\n\")\n : false,\n );\n const isCompact = stateAllowsCompact && !multiline;\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n\n if (!send) return;\n send();\n };\n\n const handleMouseDown = (e: MouseEvent<HTMLFormElement>) => {\n if (e.button !== 0) return;\n const target = e.target;\n // Portaled descendants (e.g. a dialog overlay) propagate mousedown through\n // the React tree while their DOM nodes live outside the form.\n if (!(target instanceof Element) || !e.currentTarget.contains(target))\n return;\n // Bound the ancestor walk to the form: hosts like AssistantModal render\n // the composer inside a wrapper carrying tabindex=\"-1\" (Radix FocusScope).\n const interactive = target.closest(INTERACTIVE_ELEMENT_SELECTOR);\n if (interactive && e.currentTarget.contains(interactive)) return;\n const input = e.currentTarget.querySelector<HTMLElement>(\n COMPOSER_INPUT_SELECTOR,\n );\n if (!input) return;\n e.preventDefault();\n input.focus();\n };\n\n return (\n <ComposerCompactContext.Provider value={compact ? compactContext : null}>\n <Primitive.form\n {...rest}\n data-aui-composer-type={composerType}\n data-compact={isCompact ? \"\" : undefined}\n ref={forwardedRef}\n onSubmit={composeEventHandlers(onSubmit, handleSubmit)}\n onMouseDown={composeEventHandlers(onMouseDown, handleMouseDown)}\n />\n </ComposerCompactContext.Provider>\n );\n});\n\nComposerPrimitiveRoot.displayName = \"ComposerPrimitive.Root\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const CONTENT_EDITABLE_SELECTOR = "[contenteditable]:not([contenteditable='false'])";
|
|
2
|
+
export declare const COMPOSER_INPUT_SELECTOR = "textarea:not(:disabled), [contenteditable]:not([contenteditable='false'])";
|
|
3
|
+
//# sourceMappingURL=composerInputSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composerInputSelector.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/composerInputSelector.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,qDACc,CAAC;AAErD,eAAO,MAAM,uBAAuB,8EAA0D,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/primitives/composer/composerInputSelector.ts
|
|
2
|
+
const CONTENT_EDITABLE_SELECTOR = "[contenteditable]:not([contenteditable='false'])";
|
|
3
|
+
const COMPOSER_INPUT_SELECTOR = `textarea:not(:disabled), ${CONTENT_EDITABLE_SELECTOR}`;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { COMPOSER_INPUT_SELECTOR, CONTENT_EDITABLE_SELECTOR };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=composerInputSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composerInputSelector.js","names":["CONTENT_EDITABLE_SELECTOR","COMPOSER_INPUT_SELECTOR"],"sources":["../../../src/primitives/composer/composerInputSelector.ts"],"sourcesContent":["export const CONTENT_EDITABLE_SELECTOR =\n \"[contenteditable]:not([contenteditable='false'])\";\n\nexport const COMPOSER_INPUT_SELECTOR = `textarea:not(:disabled), ${CONTENT_EDITABLE_SELECTOR}`;\n"],"mappings":";AAAA,MAAaA,4BACX;AAEF,MAAaC,0BAA0B,4BAA4BD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComposerCancelWithFocus.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/useComposerCancelWithFocus.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,0BAA0B,GAAI,QAAQ,MAAM,IAAI,cAKhD,WAAW,GAAG,IAAI,SAyC9B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { COMPOSER_INPUT_SELECTOR } from "./composerInputSelector.js";
|
|
3
|
+
import { useThreadRootElementRef } from "../thread/ThreadRootElementContext.js";
|
|
4
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
|
+
import "@assistant-ui/tap/react-shim";
|
|
6
|
+
import { useAui } from "@assistant-ui/store";
|
|
7
|
+
//#region src/primitives/composer/useComposerCancelWithFocus.ts
|
|
8
|
+
const COMPOSER_SELECTOR = "[data-aui-composer-type]";
|
|
9
|
+
const THREAD_SELECTOR = "[data-aui-thread-root]";
|
|
10
|
+
const useComposerCancelWithFocus = (cancel) => {
|
|
11
|
+
const $ = c(4);
|
|
12
|
+
const aui = useAui();
|
|
13
|
+
const threadRootRef = useThreadRootElementRef();
|
|
14
|
+
let t0;
|
|
15
|
+
if ($[0] !== aui.composer || $[1] !== cancel || $[2] !== threadRootRef) {
|
|
16
|
+
t0 = (source) => {
|
|
17
|
+
const root = threadRootRef?.current;
|
|
18
|
+
const doc = source?.ownerDocument;
|
|
19
|
+
const active = doc?.activeElement;
|
|
20
|
+
const composer = source?.closest(COMPOSER_SELECTOR);
|
|
21
|
+
const shouldRestore = aui.composer.getState().type === "edit" && root && active && composer?.getAttribute("data-aui-composer-type") === "edit" && composer.contains(active) && composer.closest(THREAD_SELECTOR) === root;
|
|
22
|
+
const candidates = shouldRestore ? Array.from(root.querySelectorAll(COMPOSER_INPUT_SELECTOR)).filter((input) => input.closest(THREAD_SELECTOR) === root && input.closest(COMPOSER_SELECTOR)?.getAttribute("data-aui-composer-type") === "thread") : [];
|
|
23
|
+
cancel();
|
|
24
|
+
if (!doc || !active || !shouldRestore) return;
|
|
25
|
+
if (doc.activeElement !== active && doc.activeElement !== doc.body) return;
|
|
26
|
+
for (const input_0 of candidates) {
|
|
27
|
+
if (!input_0.isConnected || input_0.closest("[hidden], [inert]")) continue;
|
|
28
|
+
input_0.focus({ preventScroll: true });
|
|
29
|
+
if (doc.activeElement !== active && doc.activeElement !== doc.body) break;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
$[0] = aui.composer;
|
|
33
|
+
$[1] = cancel;
|
|
34
|
+
$[2] = threadRootRef;
|
|
35
|
+
$[3] = t0;
|
|
36
|
+
} else t0 = $[3];
|
|
37
|
+
return t0;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { useComposerCancelWithFocus };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=useComposerCancelWithFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComposerCancelWithFocus.js","names":["c","_c","useCallback","useAui","useThreadRootElementRef","COMPOSER_INPUT_SELECTOR","COMPOSER_SELECTOR","THREAD_SELECTOR","useComposerCancelWithFocus","cancel","$","aui","threadRootRef","t0","composer","source","root","current","doc","ownerDocument","active","activeElement","closest","shouldRestore","getState","type","getAttribute","contains","candidates","Array","from","querySelectorAll","filter","input","body","input_0","isConnected","focus","preventScroll","cancelWithFocus","_c","cancelWithFocus"],"sources":["../../../src/primitives/composer/useComposerCancelWithFocus.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { useThreadRootElementRef } from \"../thread/ThreadRootElementContext\";\nimport { COMPOSER_INPUT_SELECTOR } from \"./composerInputSelector\";\n\nconst COMPOSER_SELECTOR = \"[data-aui-composer-type]\";\nconst THREAD_SELECTOR = \"[data-aui-thread-root]\";\n\nexport const useComposerCancelWithFocus = (cancel: () => void) => {\n const aui = useAui();\n const threadRootRef = useThreadRootElementRef();\n\n const cancelWithFocus = useCallback(\n (source: HTMLElement | null) => {\n const root = threadRootRef?.current;\n const doc = source?.ownerDocument;\n const active = doc?.activeElement;\n const composer = source?.closest(COMPOSER_SELECTOR);\n const shouldRestore =\n aui.composer.getState().type === \"edit\" &&\n root &&\n active &&\n composer?.getAttribute(\"data-aui-composer-type\") === \"edit\" &&\n composer.contains(active) &&\n composer.closest(THREAD_SELECTOR) === root;\n const candidates = shouldRestore\n ? Array.from(\n root.querySelectorAll<HTMLElement>(COMPOSER_INPUT_SELECTOR),\n ).filter(\n (input) =>\n input.closest(THREAD_SELECTOR) === root &&\n input\n .closest(COMPOSER_SELECTOR)\n ?.getAttribute(\"data-aui-composer-type\") === \"thread\",\n )\n : [];\n\n cancel();\n\n if (!doc || !active || !shouldRestore) return;\n if (doc.activeElement !== active && doc.activeElement !== doc.body)\n return;\n\n for (const input of candidates) {\n if (!input.isConnected || input.closest(\"[hidden], [inert]\")) continue;\n input.focus({ preventScroll: true });\n if (doc.activeElement !== active && doc.activeElement !== doc.body)\n break;\n }\n },\n [aui, cancel, threadRootRef],\n );\n\n return cancelWithFocus;\n};\n"],"mappings":";;;;;;;AAOA,MAAMM,oBAAoB;AAC1B,MAAMC,kBAAkB;AAExB,MAAaC,8BAA6BC,WAAA;CAAA,MAAAC,IAAAT,EAAA,CAAA;CACxC,MAAAU,MAAYR,OAAO;CACnB,MAAAS,gBAAsBR,wBAAwB;CAAE,IAAAS;CAAA,IAAAH,EAAA,OAAAC,IAAAG,YAAAJ,EAAA,OAAAD,UAAAC,EAAA,OAAAE,eAAA;EAG9CC,MAAAE,WAAA;GACE,MAAAC,OAAaJ,eAAaK;GAC1B,MAAAC,MAAYH,QAAMI;GAClB,MAAAC,SAAeF,KAAGG;GAClB,MAAAP,WAAiBC,QAAMO,QAAUhB,iBAAiB;GAClD,MAAAiB,gBACEZ,IAAGG,SAASU,SAAU,CAAC,CAAAC,SAAU,UAAjCT,QAAAI,UAGAN,UAAQY,aAAe,wBAAwB,MAAM,UACrDZ,SAAQa,SAAUP,MAAM,KACxBN,SAAQQ,QAASf,eAAe,MAAMS;GACxC,MAAAY,aAAmBL,gBACfM,MAAKC,KACHd,KAAIe,iBAA+B1B,uBAAuB,CAC5D,CAAC,CAAA2B,QACCC,UACEA,MAAKX,QAASf,eAAe,MAAMS,QACnCiB,MAAKX,QACMhB,iBACI,CAAC,EAAAoB,aAAC,wBAAwB,MAAM,QAElD,IAVc,CAAA;GAYnBjB,OAAO;GAEP,IAAI,CAACS,OAAD,CAASE,UAAT,CAAoBG,eAAa;GACrC,IAAIL,IAAGG,kBAAmBD,UAAUF,IAAGG,kBAAmBH,IAAGgB,MAAK;GAGlE,KAAK,MAAAC,WAAeP,YAAU;IAC5B,IAAI,CAACK,QAAKG,eAAgBH,QAAKX,QAAS,mBAAmB,GAAG;IAC9DW,QAAKI,MAAO,EAAAC,eAAiB,KAAK,CAAC;IACnC,IAAIpB,IAAGG,kBAAmBD,UAAUF,IAAGG,kBAAmBH,IAAGgB,MAC3D;GAAM;EACT;EACFxB,EAAA,KAAAC,IAAAG;EAAAJ,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAED,OAEK6B;AAAe"}
|
|
@@ -16,33 +16,54 @@ export { ComposerPrimitiveQuoteText as QuoteText } from "./composer/ComposerQuot
|
|
|
16
16
|
export { ComposerPrimitiveQuoteDismiss as QuoteDismiss } from "./composer/ComposerQuote.js";
|
|
17
17
|
export { ComposerPrimitiveQueue as Queue } from "./composer/ComposerQueue.js";
|
|
18
18
|
export { ComposerPrimitiveTriggerPopover as TriggerPopover } from "./composer/trigger/index.js";
|
|
19
|
+
export {
|
|
19
20
|
/** @deprecated Use `ComposerPrimitive.TriggerPopover` instead. */
|
|
20
|
-
|
|
21
|
+
ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover, } from "./composer/trigger/index.js";
|
|
21
22
|
export { ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot } from "./composer/trigger/index.js";
|
|
23
|
+
export {
|
|
22
24
|
/** @deprecated Use `ComposerPrimitive.TriggerPopoverRoot` instead. */
|
|
23
|
-
|
|
25
|
+
ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot, } from "./composer/trigger/index.js";
|
|
24
26
|
export { ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories } from "./composer/trigger/index.js";
|
|
27
|
+
export {
|
|
25
28
|
/** @deprecated Use `ComposerPrimitive.TriggerPopoverCategories` instead. */
|
|
26
|
-
|
|
29
|
+
ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories, } from "./composer/trigger/index.js";
|
|
27
30
|
export { ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem } from "./composer/trigger/index.js";
|
|
31
|
+
export {
|
|
28
32
|
/** @deprecated Use `ComposerPrimitive.TriggerPopoverCategoryItem` instead. */
|
|
29
|
-
|
|
33
|
+
ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem, } from "./composer/trigger/index.js";
|
|
30
34
|
export { ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems } from "./composer/trigger/index.js";
|
|
35
|
+
export {
|
|
31
36
|
/** @deprecated Use `ComposerPrimitive.TriggerPopoverItems` instead. */
|
|
32
|
-
|
|
37
|
+
ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems, } from "./composer/trigger/index.js";
|
|
33
38
|
export { ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem } from "./composer/trigger/index.js";
|
|
39
|
+
export {
|
|
34
40
|
/** @deprecated Use `ComposerPrimitive.TriggerPopoverItem` instead. */
|
|
35
|
-
|
|
41
|
+
ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem, } from "./composer/trigger/index.js";
|
|
36
42
|
export { ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack } from "./composer/trigger/index.js";
|
|
43
|
+
export {
|
|
37
44
|
/** @deprecated Use `ComposerPrimitive.TriggerPopoverBack` instead. */
|
|
38
|
-
|
|
39
|
-
export {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
export {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
export
|
|
45
|
+
ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack, } from "./composer/trigger/index.js";
|
|
46
|
+
export {
|
|
47
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
48
|
+
useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, } from "./composer/trigger/index.js";
|
|
49
|
+
export {
|
|
50
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
51
|
+
useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, } from "./composer/trigger/index.js";
|
|
52
|
+
export {
|
|
53
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
54
|
+
useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, } from "./composer/trigger/index.js";
|
|
55
|
+
export {
|
|
56
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
57
|
+
useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, } from "./composer/trigger/index.js";
|
|
58
|
+
export {
|
|
59
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
60
|
+
useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, } from "./composer/trigger/index.js";
|
|
61
|
+
export {
|
|
62
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
63
|
+
useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, } from "./composer/trigger/index.js";
|
|
64
|
+
export type {
|
|
65
|
+
/** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */
|
|
66
|
+
RegisteredTrigger as Unstable_RegisteredTrigger, } from "./composer/trigger/index.js";
|
|
46
67
|
export type { TriggerMatch, TriggerMatcher } from "./composer/trigger/index.js";
|
|
47
68
|
/** @deprecated Use `TriggerMatcher` instead. */
|
|
48
69
|
export type Unstable_TriggerMatcher = TriggerMatcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,oCAA2B;AAEvE,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAE3E,OAAO,EAAE,+BAA+B,IAAI,cAAc,EAAE,oCAA2B;AACvF,kEAAkE;AAClE
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.js","names":["TriggerMatch","TriggerMatcher","ComposerPrimitiveRoot","Root","ComposerPrimitiveInput","Input","ComposerPrimitiveSend","Send","ComposerPrimitiveCancel","Cancel","ComposerPrimitiveAddAttachment","AddAttachment","ComposerPrimitiveAttachments","Attachments","ComposerPrimitiveAttachmentByIndex","AttachmentByIndex","ComposerPrimitiveAttachmentDropzone","AttachmentDropzone","ComposerPrimitiveDictate","Dictate","ComposerPrimitiveStopDictation","StopDictation","ComposerPrimitiveDictationTranscript","DictationTranscript","ComposerPrimitiveIf","If","ComposerPrimitiveQuote","Quote","ComposerPrimitiveQuoteText","QuoteText","ComposerPrimitiveQuoteDismiss","QuoteDismiss","ComposerPrimitiveQueue","Queue","ComposerPrimitiveTriggerPopover","TriggerPopover","Unstable_TriggerPopover","ComposerPrimitiveTriggerPopoverRoot","TriggerPopoverRoot","Unstable_TriggerPopoverRoot","ComposerPrimitiveTriggerPopoverCategories","TriggerPopoverCategories","Unstable_TriggerPopoverCategories","ComposerPrimitiveTriggerPopoverCategoryItem","TriggerPopoverCategoryItem","Unstable_TriggerPopoverCategoryItem","ComposerPrimitiveTriggerPopoverItems","TriggerPopoverItems","Unstable_TriggerPopoverItems","ComposerPrimitiveTriggerPopoverItem","TriggerPopoverItem","Unstable_TriggerPopoverItem","ComposerPrimitiveTriggerPopoverBack","TriggerPopoverBack","Unstable_TriggerPopoverBack","useTriggerPopoverRootContext","unstable_useTriggerPopoverRootContext","useTriggerPopoverRootContextOptional","unstable_useTriggerPopoverRootContextOptional","useTriggerPopoverScopeContext","unstable_useTriggerPopoverScopeContext","useTriggerPopoverScopeContextOptional","unstable_useTriggerPopoverScopeContextOptional","useTriggerPopoverTriggers","unstable_useTriggerPopoverTriggers","useTriggerPopoverTriggersOptional","unstable_useTriggerPopoverTriggersOptional","RegisteredTrigger","Unstable_RegisteredTrigger","Unstable_TriggerMatcher","Unstable_TriggerMatch"],"sources":["../../src/primitives/composer.ts"],"sourcesContent":["import type { TriggerMatch, TriggerMatcher } from \"./composer/trigger\";\n\nexport { ComposerPrimitiveRoot as Root } from \"./composer/ComposerRoot\";\nexport { ComposerPrimitiveInput as Input } from \"./composer/ComposerInput\";\nexport { ComposerPrimitiveSend as Send } from \"./composer/ComposerSend\";\nexport { ComposerPrimitiveCancel as Cancel } from \"./composer/ComposerCancel\";\nexport { ComposerPrimitiveAddAttachment as AddAttachment } from \"./composer/ComposerAddAttachment\";\nexport { ComposerPrimitiveAttachments as Attachments } from \"./composer/ComposerAttachments\";\nexport { ComposerPrimitiveAttachmentByIndex as AttachmentByIndex } from \"./composer/ComposerAttachments\";\nexport { ComposerPrimitiveAttachmentDropzone as AttachmentDropzone } from \"./composer/ComposerAttachmentDropzone\";\nexport { ComposerPrimitiveDictate as Dictate } from \"./composer/ComposerDictate\";\nexport { ComposerPrimitiveStopDictation as StopDictation } from \"./composer/ComposerStopDictation\";\nexport { ComposerPrimitiveDictationTranscript as DictationTranscript } from \"./composer/ComposerDictationTranscript\";\nexport { ComposerPrimitiveIf as If } from \"./composer/ComposerIf\";\nexport { ComposerPrimitiveQuote as Quote } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQuoteText as QuoteText } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQuoteDismiss as QuoteDismiss } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQueue as Queue } from \"./composer/ComposerQueue\";\n\nexport { ComposerPrimitiveTriggerPopover as TriggerPopover } from \"./composer/trigger\";\n/** @deprecated Use `ComposerPrimitive.TriggerPopover` instead. */\
|
|
1
|
+
{"version":3,"file":"composer.js","names":["TriggerMatch","TriggerMatcher","ComposerPrimitiveRoot","Root","ComposerPrimitiveInput","Input","ComposerPrimitiveSend","Send","ComposerPrimitiveCancel","Cancel","ComposerPrimitiveAddAttachment","AddAttachment","ComposerPrimitiveAttachments","Attachments","ComposerPrimitiveAttachmentByIndex","AttachmentByIndex","ComposerPrimitiveAttachmentDropzone","AttachmentDropzone","ComposerPrimitiveDictate","Dictate","ComposerPrimitiveStopDictation","StopDictation","ComposerPrimitiveDictationTranscript","DictationTranscript","ComposerPrimitiveIf","If","ComposerPrimitiveQuote","Quote","ComposerPrimitiveQuoteText","QuoteText","ComposerPrimitiveQuoteDismiss","QuoteDismiss","ComposerPrimitiveQueue","Queue","ComposerPrimitiveTriggerPopover","TriggerPopover","Unstable_TriggerPopover","ComposerPrimitiveTriggerPopoverRoot","TriggerPopoverRoot","Unstable_TriggerPopoverRoot","ComposerPrimitiveTriggerPopoverCategories","TriggerPopoverCategories","Unstable_TriggerPopoverCategories","ComposerPrimitiveTriggerPopoverCategoryItem","TriggerPopoverCategoryItem","Unstable_TriggerPopoverCategoryItem","ComposerPrimitiveTriggerPopoverItems","TriggerPopoverItems","Unstable_TriggerPopoverItems","ComposerPrimitiveTriggerPopoverItem","TriggerPopoverItem","Unstable_TriggerPopoverItem","ComposerPrimitiveTriggerPopoverBack","TriggerPopoverBack","Unstable_TriggerPopoverBack","useTriggerPopoverRootContext","unstable_useTriggerPopoverRootContext","useTriggerPopoverRootContextOptional","unstable_useTriggerPopoverRootContextOptional","useTriggerPopoverScopeContext","unstable_useTriggerPopoverScopeContext","useTriggerPopoverScopeContextOptional","unstable_useTriggerPopoverScopeContextOptional","useTriggerPopoverTriggers","unstable_useTriggerPopoverTriggers","useTriggerPopoverTriggersOptional","unstable_useTriggerPopoverTriggersOptional","RegisteredTrigger","Unstable_RegisteredTrigger","Unstable_TriggerMatcher","Unstable_TriggerMatch"],"sources":["../../src/primitives/composer.ts"],"sourcesContent":["import type { TriggerMatch, TriggerMatcher } from \"./composer/trigger\";\n\nexport { ComposerPrimitiveRoot as Root } from \"./composer/ComposerRoot\";\nexport { ComposerPrimitiveInput as Input } from \"./composer/ComposerInput\";\nexport { ComposerPrimitiveSend as Send } from \"./composer/ComposerSend\";\nexport { ComposerPrimitiveCancel as Cancel } from \"./composer/ComposerCancel\";\nexport { ComposerPrimitiveAddAttachment as AddAttachment } from \"./composer/ComposerAddAttachment\";\nexport { ComposerPrimitiveAttachments as Attachments } from \"./composer/ComposerAttachments\";\nexport { ComposerPrimitiveAttachmentByIndex as AttachmentByIndex } from \"./composer/ComposerAttachments\";\nexport { ComposerPrimitiveAttachmentDropzone as AttachmentDropzone } from \"./composer/ComposerAttachmentDropzone\";\nexport { ComposerPrimitiveDictate as Dictate } from \"./composer/ComposerDictate\";\nexport { ComposerPrimitiveStopDictation as StopDictation } from \"./composer/ComposerStopDictation\";\nexport { ComposerPrimitiveDictationTranscript as DictationTranscript } from \"./composer/ComposerDictationTranscript\";\nexport { ComposerPrimitiveIf as If } from \"./composer/ComposerIf\";\nexport { ComposerPrimitiveQuote as Quote } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQuoteText as QuoteText } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQuoteDismiss as QuoteDismiss } from \"./composer/ComposerQuote\";\nexport { ComposerPrimitiveQueue as Queue } from \"./composer/ComposerQueue\";\n\nexport { ComposerPrimitiveTriggerPopover as TriggerPopover } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopover` instead. */\n ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover,\n} from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopoverRoot` instead. */\n ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot,\n} from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopoverCategories` instead. */\n ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories,\n} from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopoverCategoryItem` instead. */\n ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem,\n} from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopoverItems` instead. */\n ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems,\n} from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopoverItem` instead. */\n ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem,\n} from \"./composer/trigger\";\nexport { ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack } from \"./composer/trigger\";\nexport {\n /** @deprecated Use `ComposerPrimitive.TriggerPopoverBack` instead. */\n ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack,\n} from \"./composer/trigger\";\nexport {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext,\n} from \"./composer/trigger\";\nexport {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional,\n} from \"./composer/trigger\";\nexport {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext,\n} from \"./composer/trigger\";\nexport {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional,\n} from \"./composer/trigger\";\nexport {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers,\n} from \"./composer/trigger\";\nexport {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional,\n} from \"./composer/trigger\";\nexport type {\n /** @deprecated Experimental since 2026-04-15. Not scheduled for removal; the API may change in any release. */\n RegisteredTrigger as Unstable_RegisteredTrigger,\n} from \"./composer/trigger\";\nexport type { TriggerMatch, TriggerMatcher } from \"./composer/trigger\";\n/** @deprecated Use `TriggerMatcher` instead. */\nexport type Unstable_TriggerMatcher = TriggerMatcher;\n/** @deprecated Use `TriggerMatch` instead. */\nexport type Unstable_TriggerMatch = TriggerMatch;\n"],"mappings":""}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { type ComponentType, type FC, type PropsWithChildren } from "react";
|
|
2
|
-
import type
|
|
2
|
+
import { type Unstable_AudioMessagePartComponent, type DataMessagePartComponent, type EmptyMessagePartComponent, type TextMessagePartComponent, type ImageMessagePartComponent, type SourceMessagePartComponent, type ToolCallMessagePartComponent, type ToolCallMessagePartProps, type FileMessagePartComponent, type ReasoningMessagePartComponent } from "@assistant-ui/core/react";
|
|
3
3
|
type MessagePartGroup = {
|
|
4
4
|
groupKey: string | undefined;
|
|
5
5
|
indices: number[];
|
|
6
6
|
};
|
|
7
7
|
export type GroupingFunction = (parts: readonly any[]) => MessagePartGroup[];
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Prefer `<MessagePrimitive.GroupedParts>` for adjacent
|
|
10
|
+
* grouping — it dispatches all rendering through one `switch (part.type)`
|
|
11
|
+
* and supports nested group paths. Keep this primitive only for
|
|
12
|
+
* non-adjacent clustering (e.g., gathering parts with the same parent-id
|
|
13
|
+
* across the message).
|
|
14
|
+
*/
|
|
8
15
|
export declare namespace MessagePrimitiveUnstable_PartsGrouped {
|
|
9
16
|
type Props = {
|
|
10
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartsGrouped.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAEP,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"MessagePartsGrouped.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAEP,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAC;AAMf,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAKlC,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,KAAK,gBAAgB,EAAE,CAAC;AAoD7E;;;;;;GAMG;AACH,yBAAiB,qCAAqC,CAAC;IACrD,KAAY,KAAK,GAAG;QAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0CG;QACH,gBAAgB,EAAE,gBAAgB,CAAC;QAEnC;;;;;WAKG;QACH,UAAU,EACN;YACE,6CAA6C;YAC7C,KAAK,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;YAC5C,mEAAmE;YACnE,SAAS,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;YACtD,6CAA6C;YAC7C,MAAM,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;YAChD,4CAA4C;YAC5C,KAAK,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;YAC5C;;;;;eAKG;YACH,cAAc,CAAC,EAAE,kCAAkC,GAAG,SAAS,CAAC;YAChE,4CAA4C;YAC5C,IAAI,CAAC,EACD;gBACE,kDAAkD;gBAClD,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAC,GACpD,SAAS,CAAC;gBACd,mDAAmD;gBACnD,QAAQ,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;aACjD,GACD,SAAS,CAAC;YACd,4CAA4C;YAC5C,KAAK,CAAC,EACF;gBACE,qDAAqD;gBACrD,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,4BAA4B,GAAG,SAAS,CAAC,GACxD,SAAS,CAAC;gBACd,gDAAgD;gBAChD,QAAQ,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;aAChE,GACD;gBACE,qDAAqD;gBACrD,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;aACnD,GACD,SAAS,CAAC;YAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgCG;YACH,KAAK,CAAC,EAAE,aAAa,CACnB,iBAAiB,CAAC;gBAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;gBAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;aACnB,CAAC,CACH,CAAC;SACH,GACD,SAAS,CAAC;KACf,CAAC;CACH;AAmFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,qCAAqC,EAAE,EAAE,CACpD,qCAAqC,CAAC,KAAK,CAiD5C,CAAC;AAKF;;;;;GAKG;AACH,eAAO,MAAM,+CAA+C,EAAE,EAAE,CAC9D,IAAI,CAAC,qCAAqC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAStE,CAAC"}
|