@assistant-ui/react 0.15.29 → 0.15.30
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/context/stores/ThreadViewport.d.ts +8 -0
- package/dist/context/stores/ThreadViewport.d.ts.map +1 -1
- package/dist/context/stores/ThreadViewport.js +24 -8
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerResume.d.ts +23 -0
- package/dist/primitives/composer/ComposerResume.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerResume.js +34 -0
- package/dist/primitives/composer/ComposerResume.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +6 -2
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +4 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
- package/dist/primitives/composer.d.ts +1 -0
- package/dist/primitives/composer.d.ts.map +1 -1
- package/dist/primitives/composer.js +3 -1
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +32 -292
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js +1 -1
- package/package.json +5 -5
- package/src/context/stores/ThreadViewport.ts +36 -8
- package/src/index.ts +2 -0
- package/src/model-context/makeAssistantVisible.test.tsx +25 -37
- package/src/primitives/composer/ComposerInput.tsx +1 -1
- package/src/primitives/composer/ComposerResume.ts +36 -0
- package/src/primitives/composer/trigger/triggerSelectionResource.test.ts +24 -0
- package/src/primitives/composer/trigger/triggerSelectionResource.ts +14 -3
- package/src/primitives/composer/useAuiState.composer.test.tsx +84 -0
- package/src/primitives/composer.ts +1 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +90 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.ts +48 -486
- package/src/model-context/frame/AssistantFrame.test.ts +0 -400
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Unsubscribe } from "@assistant-ui/core";
|
|
2
|
+
import { type ThreadViewportAutoScroll, type ThreadViewportAutoScrollOptions } from "@assistant-ui/store/client";
|
|
3
|
+
import type { ReadonlyStore } from "../ReadonlyStore.js";
|
|
2
4
|
export type SizeHandle = {
|
|
3
5
|
/** Update the height */
|
|
4
6
|
setHeight: (height: number) => void;
|
|
@@ -76,5 +78,11 @@ export type ThreadViewportStoreOptions = {
|
|
|
76
78
|
visibleHeight?: string | undefined;
|
|
77
79
|
} | undefined;
|
|
78
80
|
};
|
|
81
|
+
type ViewportAutoScroll = {
|
|
82
|
+
controller: ThreadViewportAutoScroll;
|
|
83
|
+
getOptions: () => ThreadViewportAutoScrollOptions;
|
|
84
|
+
};
|
|
85
|
+
export declare const getThreadViewportAutoScroll: (store: ReadonlyStore<ThreadViewportState>) => ViewportAutoScroll;
|
|
79
86
|
export declare const makeThreadViewportStore: (options?: ThreadViewportStoreOptions) => import("zustand").UseBoundStore<import("zustand").StoreApi<ThreadViewportState>>;
|
|
87
|
+
export {};
|
|
80
88
|
//# sourceMappingURL=ThreadViewport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadViewport.d.ts","sourceRoot":"","sources":["../../../src/context/stores/ThreadViewport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ThreadViewport.d.ts","sourceRoot":"","sources":["../../../src/context/stores/ThreadViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { create } from "zustand";
|
|
3
3
|
import { notifyEventListeners } from "@assistant-ui/core/internal";
|
|
4
|
+
import { createThreadViewportAutoScroll } from "@assistant-ui/store/client";
|
|
4
5
|
//#region src/context/stores/ThreadViewport.ts
|
|
5
6
|
const createSizeRegistry = (onChange) => {
|
|
6
7
|
const entries = /* @__PURE__ */ new Map();
|
|
@@ -26,6 +27,8 @@ const createSizeRegistry = (onChange) => {
|
|
|
26
27
|
};
|
|
27
28
|
} };
|
|
28
29
|
};
|
|
30
|
+
const viewportAutoScroll = /* @__PURE__ */ new WeakMap();
|
|
31
|
+
const getThreadViewportAutoScroll = (store) => viewportAutoScroll.get(store);
|
|
29
32
|
const makeThreadViewportStore = (options = {}) => {
|
|
30
33
|
const scrollToBottomListeners = /* @__PURE__ */ new Set();
|
|
31
34
|
const viewportRegistry = createSizeRegistry((total) => {
|
|
@@ -34,12 +37,24 @@ const makeThreadViewportStore = (options = {}) => {
|
|
|
34
37
|
viewport: total
|
|
35
38
|
} });
|
|
36
39
|
});
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const autoScroll = {
|
|
41
|
+
getOptions: () => ({
|
|
42
|
+
autoScroll: options.turnAnchor !== "top",
|
|
43
|
+
scrollToBottomOnInitialize: true,
|
|
44
|
+
scrollToBottomOnRunStart: options.turnAnchor !== "top",
|
|
45
|
+
scrollToBottomOnThreadSwitch: true
|
|
46
|
+
}),
|
|
47
|
+
controller: createThreadViewportAutoScroll({
|
|
48
|
+
getOptions: () => autoScroll.getOptions(),
|
|
49
|
+
onAtBottomChange: (isAtBottom) => store.setState({ isAtBottom }),
|
|
50
|
+
onContentInsetChange: (inset) => {
|
|
51
|
+
store.setState({ height: {
|
|
52
|
+
...store.getState().height,
|
|
53
|
+
inset
|
|
54
|
+
} });
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
};
|
|
43
58
|
const registerElementSlot = (key, element) => {
|
|
44
59
|
store.setState({ element: {
|
|
45
60
|
...store.getState().element,
|
|
@@ -81,7 +96,7 @@ const makeThreadViewportStore = (options = {}) => {
|
|
|
81
96
|
targetConfig: null,
|
|
82
97
|
topAnchorTurn: null,
|
|
83
98
|
registerViewport: viewportRegistry.register,
|
|
84
|
-
registerContentInset:
|
|
99
|
+
registerContentInset: autoScroll.controller.registerContentInset,
|
|
85
100
|
registerViewportElement: (element) => registerElementSlot("viewport", element),
|
|
86
101
|
registerAnchorElement: (element) => registerElementSlot("anchor", element),
|
|
87
102
|
registerAnchorTargetElement: (element, config) => {
|
|
@@ -107,9 +122,10 @@ const makeThreadViewportStore = (options = {}) => {
|
|
|
107
122
|
store.setState({ topAnchorTurn });
|
|
108
123
|
}
|
|
109
124
|
}));
|
|
125
|
+
viewportAutoScroll.set(store, autoScroll);
|
|
110
126
|
return store;
|
|
111
127
|
};
|
|
112
128
|
//#endregion
|
|
113
|
-
export { makeThreadViewportStore };
|
|
129
|
+
export { getThreadViewportAutoScroll, makeThreadViewportStore };
|
|
114
130
|
|
|
115
131
|
//# sourceMappingURL=ThreadViewport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadViewport.js","names":["create","Unsubscribe","notifyEventListeners","SizeHandle","setHeight","height","unregister","SizeRegistry","register","createSizeRegistry","onChange","total","entries","Map","recalculate","values","id","Symbol","set","get","delete","ThreadViewportState","isAtBottom","scrollToBottom","config","behavior","ScrollBehavior","onScrollToBottom","callback","turnAnchor","topAnchorMessageClamp","tallerThan","visibleHeight","viewport","inset","element","HTMLElement","anchor","target","targetConfig","topAnchorTurn","anchorId","targetId","registerViewport","registerContentInset","registerViewportElement","registerAnchorElement","registerAnchorTargetElement","setTopAnchorTurn","turn","ThreadViewportStoreOptions","makeThreadViewportStore","options","scrollToBottomListeners","Set","viewportRegistry","store","setState","getState","insetRegistry","registerElementSlot","key","add"],"sources":["../../../src/context/stores/ThreadViewport.ts"],"sourcesContent":["\"use client\";\n\nimport { create } from \"zustand\";\nimport type { Unsubscribe } from \"@assistant-ui/core\";\nimport { notifyEventListeners } from \"@assistant-ui/core/internal\";\n\nexport type SizeHandle = {\n /** Update the height */\n setHeight: (height: number) => void;\n /** Unregister this handle */\n unregister: Unsubscribe;\n};\n\ntype SizeRegistry = {\n register: () => SizeHandle;\n};\n\nconst createSizeRegistry = (\n onChange: (total: number) => void,\n): SizeRegistry => {\n const entries = new Map<symbol, number>();\n\n const recalculate = () => {\n let total = 0;\n for (const height of entries.values()) {\n total += height;\n }\n onChange(total);\n };\n\n return {\n register: () => {\n const id = Symbol();\n entries.set(id, 0);\n\n return {\n setHeight: (height: number) => {\n if (entries.get(id) !== height) {\n entries.set(id, height);\n recalculate();\n }\n },\n unregister: () => {\n entries.delete(id);\n recalculate();\n },\n };\n },\n };\n};\n\nexport type ThreadViewportState = {\n readonly isAtBottom: boolean;\n readonly scrollToBottom: (config?: {\n behavior?: ScrollBehavior | undefined;\n }) => void;\n readonly onScrollToBottom: (\n callback: ({ behavior }: { behavior: ScrollBehavior }) => void,\n ) => Unsubscribe;\n\n /** Controls scroll anchoring: \"top\" anchors user messages at top, \"bottom\" is classic behavior */\n readonly turnAnchor: \"top\" | \"bottom\";\n\n /** Clamps tall user messages so the assistant response stays in view. */\n readonly topAnchorMessageClamp: {\n readonly tallerThan: string;\n readonly visibleHeight: string;\n };\n\n /** Raw height values from registered elements */\n readonly height: {\n /** Total viewport height */\n readonly viewport: number;\n /** Total content inset height (footer, anchor message, etc.) */\n readonly inset: number;\n };\n\n /** Current DOM elements used for geometry-based top anchoring */\n readonly element: {\n readonly viewport: HTMLElement | null;\n readonly anchor: HTMLElement | null;\n readonly target: HTMLElement | null;\n };\n\n /** Numeric clamp configuration for the active top-anchor target message */\n readonly targetConfig: {\n readonly tallerThan: number;\n readonly visibleHeight: number;\n } | null;\n\n /**\n * The current top-anchor turn activated in this viewport session.\n * History-loaded messages do not populate this; it is set when a run creates\n * a live user/assistant pair and remains after the run completes.\n */\n readonly topAnchorTurn: {\n readonly anchorId: string;\n readonly targetId: string;\n } | null;\n\n /** Register a viewport and get a handle to update its height */\n readonly registerViewport: () => SizeHandle;\n\n /** Register a content inset (footer, anchor message, etc.) and get a handle to update its height */\n readonly registerContentInset: () => SizeHandle;\n\n /** Register the scroll viewport element */\n readonly registerViewportElement: (\n element: HTMLElement | null,\n ) => Unsubscribe;\n\n /** Register the current anchor user message element */\n readonly registerAnchorElement: (element: HTMLElement | null) => Unsubscribe;\n\n /**\n * Register the current top-anchor target (last assistant response) element\n * along with its numeric clamp configuration. When unregistered, both\n * `element.target` and `targetConfig` clear together.\n */\n readonly registerAnchorTargetElement: (\n element: HTMLElement | null,\n config?: { readonly tallerThan: number; readonly visibleHeight: number },\n ) => Unsubscribe;\n\n readonly setTopAnchorTurn: (\n turn: { readonly anchorId: string; readonly targetId: string } | null,\n ) => void;\n};\n\nexport type ThreadViewportStoreOptions = {\n turnAnchor?: \"top\" | \"bottom\" | undefined;\n topAnchorMessageClamp?:\n | {\n tallerThan?: string | undefined;\n visibleHeight?: string | undefined;\n }\n | undefined;\n};\n\nexport const makeThreadViewportStore = (\n options: ThreadViewportStoreOptions = {},\n) => {\n const scrollToBottomListeners = new Set<\n (config: { behavior: ScrollBehavior }) => void\n >();\n\n const viewportRegistry = createSizeRegistry((total) => {\n store.setState({\n height: {\n ...store.getState().height,\n viewport: total,\n },\n });\n });\n const insetRegistry = createSizeRegistry((total) => {\n store.setState({\n height: {\n ...store.getState().height,\n inset: total,\n },\n });\n });\n const registerElementSlot = (\n key: \"viewport\" | \"anchor\",\n element: HTMLElement | null,\n ) => {\n store.setState({\n element: {\n ...store.getState().element,\n [key]: element,\n },\n });\n\n return () => {\n if (store.getState().element[key] !== element) return;\n store.setState({\n element: {\n ...store.getState().element,\n [key]: null,\n },\n });\n };\n };\n\n const store = create<ThreadViewportState>(() => ({\n isAtBottom: true,\n scrollToBottom: ({ behavior = \"auto\" } = {}) => {\n notifyEventListeners(\n scrollToBottomListeners,\n () => ({ behavior }),\n \"Thread viewport\",\n );\n },\n onScrollToBottom: (callback) => {\n scrollToBottomListeners.add(callback);\n return () => {\n scrollToBottomListeners.delete(callback);\n };\n },\n\n turnAnchor: options.turnAnchor ?? \"bottom\",\n topAnchorMessageClamp: {\n tallerThan: options.topAnchorMessageClamp?.tallerThan ?? \"10em\",\n visibleHeight: options.topAnchorMessageClamp?.visibleHeight ?? \"6em\",\n },\n\n height: {\n viewport: 0,\n inset: 0,\n },\n element: {\n viewport: null,\n anchor: null,\n target: null,\n },\n targetConfig: null,\n topAnchorTurn: null,\n\n registerViewport: viewportRegistry.register,\n registerContentInset: insetRegistry.register,\n registerViewportElement: (element) =>\n registerElementSlot(\"viewport\", element),\n registerAnchorElement: (element) => registerElementSlot(\"anchor\", element),\n registerAnchorTargetElement: (element, config) => {\n store.setState({\n element: {\n ...store.getState().element,\n target: element,\n },\n targetConfig: element && config ? config : null,\n });\n\n return () => {\n if (store.getState().element.target !== element) return;\n store.setState({\n element: {\n ...store.getState().element,\n target: null,\n },\n targetConfig: null,\n });\n };\n },\n setTopAnchorTurn: (topAnchorTurn) => {\n store.setState({ topAnchorTurn });\n },\n }));\n\n return store;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadViewport.js","names":["create","Unsubscribe","notifyEventListeners","createThreadViewportAutoScroll","ThreadViewportAutoScroll","ThreadViewportAutoScrollOptions","ReadonlyStore","SizeHandle","setHeight","height","unregister","SizeRegistry","register","createSizeRegistry","onChange","total","entries","Map","recalculate","values","id","Symbol","set","get","delete","ThreadViewportState","isAtBottom","scrollToBottom","config","behavior","ScrollBehavior","onScrollToBottom","callback","turnAnchor","topAnchorMessageClamp","tallerThan","visibleHeight","viewport","inset","element","HTMLElement","anchor","target","targetConfig","topAnchorTurn","anchorId","targetId","registerViewport","registerContentInset","registerViewportElement","registerAnchorElement","registerAnchorTargetElement","setTopAnchorTurn","turn","ThreadViewportStoreOptions","ViewportAutoScroll","controller","getOptions","viewportAutoScroll","WeakMap","getThreadViewportAutoScroll","store","makeThreadViewportStore","options","scrollToBottomListeners","Set","viewportRegistry","setState","getState","autoScroll","scrollToBottomOnInitialize","scrollToBottomOnRunStart","scrollToBottomOnThreadSwitch","onAtBottomChange","onContentInsetChange","registerElementSlot","key","add"],"sources":["../../../src/context/stores/ThreadViewport.ts"],"sourcesContent":["\"use client\";\n\nimport { create } from \"zustand\";\nimport type { Unsubscribe } from \"@assistant-ui/core\";\nimport { notifyEventListeners } from \"@assistant-ui/core/internal\";\nimport {\n createThreadViewportAutoScroll,\n type ThreadViewportAutoScroll,\n type ThreadViewportAutoScrollOptions,\n} from \"@assistant-ui/store/client\";\nimport type { ReadonlyStore } from \"../ReadonlyStore\";\n\nexport type SizeHandle = {\n /** Update the height */\n setHeight: (height: number) => void;\n /** Unregister this handle */\n unregister: Unsubscribe;\n};\n\ntype SizeRegistry = {\n register: () => SizeHandle;\n};\n\nconst createSizeRegistry = (\n onChange: (total: number) => void,\n): SizeRegistry => {\n const entries = new Map<symbol, number>();\n\n const recalculate = () => {\n let total = 0;\n for (const height of entries.values()) {\n total += height;\n }\n onChange(total);\n };\n\n return {\n register: () => {\n const id = Symbol();\n entries.set(id, 0);\n\n return {\n setHeight: (height: number) => {\n if (entries.get(id) !== height) {\n entries.set(id, height);\n recalculate();\n }\n },\n unregister: () => {\n entries.delete(id);\n recalculate();\n },\n };\n },\n };\n};\n\nexport type ThreadViewportState = {\n readonly isAtBottom: boolean;\n readonly scrollToBottom: (config?: {\n behavior?: ScrollBehavior | undefined;\n }) => void;\n readonly onScrollToBottom: (\n callback: ({ behavior }: { behavior: ScrollBehavior }) => void,\n ) => Unsubscribe;\n\n /** Controls scroll anchoring: \"top\" anchors user messages at top, \"bottom\" is classic behavior */\n readonly turnAnchor: \"top\" | \"bottom\";\n\n /** Clamps tall user messages so the assistant response stays in view. */\n readonly topAnchorMessageClamp: {\n readonly tallerThan: string;\n readonly visibleHeight: string;\n };\n\n /** Raw height values from registered elements */\n readonly height: {\n /** Total viewport height */\n readonly viewport: number;\n /** Total content inset height (footer, anchor message, etc.) */\n readonly inset: number;\n };\n\n /** Current DOM elements used for geometry-based top anchoring */\n readonly element: {\n readonly viewport: HTMLElement | null;\n readonly anchor: HTMLElement | null;\n readonly target: HTMLElement | null;\n };\n\n /** Numeric clamp configuration for the active top-anchor target message */\n readonly targetConfig: {\n readonly tallerThan: number;\n readonly visibleHeight: number;\n } | null;\n\n /**\n * The current top-anchor turn activated in this viewport session.\n * History-loaded messages do not populate this; it is set when a run creates\n * a live user/assistant pair and remains after the run completes.\n */\n readonly topAnchorTurn: {\n readonly anchorId: string;\n readonly targetId: string;\n } | null;\n\n /** Register a viewport and get a handle to update its height */\n readonly registerViewport: () => SizeHandle;\n\n /** Register a content inset (footer, anchor message, etc.) and get a handle to update its height */\n readonly registerContentInset: () => SizeHandle;\n\n /** Register the scroll viewport element */\n readonly registerViewportElement: (\n element: HTMLElement | null,\n ) => Unsubscribe;\n\n /** Register the current anchor user message element */\n readonly registerAnchorElement: (element: HTMLElement | null) => Unsubscribe;\n\n /**\n * Register the current top-anchor target (last assistant response) element\n * along with its numeric clamp configuration. When unregistered, both\n * `element.target` and `targetConfig` clear together.\n */\n readonly registerAnchorTargetElement: (\n element: HTMLElement | null,\n config?: { readonly tallerThan: number; readonly visibleHeight: number },\n ) => Unsubscribe;\n\n readonly setTopAnchorTurn: (\n turn: { readonly anchorId: string; readonly targetId: string } | null,\n ) => void;\n};\n\nexport type ThreadViewportStoreOptions = {\n turnAnchor?: \"top\" | \"bottom\" | undefined;\n topAnchorMessageClamp?:\n | {\n tallerThan?: string | undefined;\n visibleHeight?: string | undefined;\n }\n | undefined;\n};\n\ntype ViewportAutoScroll = {\n controller: ThreadViewportAutoScroll;\n getOptions: () => ThreadViewportAutoScrollOptions;\n};\n\nconst viewportAutoScroll = new WeakMap<\n ReadonlyStore<ThreadViewportState>,\n ViewportAutoScroll\n>();\n\nexport const getThreadViewportAutoScroll = (\n store: ReadonlyStore<ThreadViewportState>,\n) => viewportAutoScroll.get(store)!;\n\nexport const makeThreadViewportStore = (\n options: ThreadViewportStoreOptions = {},\n) => {\n const scrollToBottomListeners = new Set<\n (config: { behavior: ScrollBehavior }) => void\n >();\n\n const viewportRegistry = createSizeRegistry((total) => {\n store.setState({\n height: {\n ...store.getState().height,\n viewport: total,\n },\n });\n });\n const autoScroll: ViewportAutoScroll = {\n getOptions: () => ({\n autoScroll: options.turnAnchor !== \"top\",\n scrollToBottomOnInitialize: true,\n scrollToBottomOnRunStart: options.turnAnchor !== \"top\",\n scrollToBottomOnThreadSwitch: true,\n }),\n controller: createThreadViewportAutoScroll({\n getOptions: () => autoScroll.getOptions(),\n onAtBottomChange: (isAtBottom) => store.setState({ isAtBottom }),\n onContentInsetChange: (inset) => {\n store.setState({ height: { ...store.getState().height, inset } });\n },\n }),\n };\n const registerElementSlot = (\n key: \"viewport\" | \"anchor\",\n element: HTMLElement | null,\n ) => {\n store.setState({\n element: {\n ...store.getState().element,\n [key]: element,\n },\n });\n\n return () => {\n if (store.getState().element[key] !== element) return;\n store.setState({\n element: {\n ...store.getState().element,\n [key]: null,\n },\n });\n };\n };\n\n const store = create<ThreadViewportState>(() => ({\n isAtBottom: true,\n scrollToBottom: ({ behavior = \"auto\" } = {}) => {\n notifyEventListeners(\n scrollToBottomListeners,\n () => ({ behavior }),\n \"Thread viewport\",\n );\n },\n onScrollToBottom: (callback) => {\n scrollToBottomListeners.add(callback);\n return () => {\n scrollToBottomListeners.delete(callback);\n };\n },\n\n turnAnchor: options.turnAnchor ?? \"bottom\",\n topAnchorMessageClamp: {\n tallerThan: options.topAnchorMessageClamp?.tallerThan ?? \"10em\",\n visibleHeight: options.topAnchorMessageClamp?.visibleHeight ?? \"6em\",\n },\n\n height: {\n viewport: 0,\n inset: 0,\n },\n element: {\n viewport: null,\n anchor: null,\n target: null,\n },\n targetConfig: null,\n topAnchorTurn: null,\n\n registerViewport: viewportRegistry.register,\n registerContentInset: autoScroll.controller.registerContentInset,\n registerViewportElement: (element) =>\n registerElementSlot(\"viewport\", element),\n registerAnchorElement: (element) => registerElementSlot(\"anchor\", element),\n registerAnchorTargetElement: (element, config) => {\n store.setState({\n element: {\n ...store.getState().element,\n target: element,\n },\n targetConfig: element && config ? config : null,\n });\n\n return () => {\n if (store.getState().element.target !== element) return;\n store.setState({\n element: {\n ...store.getState().element,\n target: null,\n },\n targetConfig: null,\n });\n };\n },\n setTopAnchorTurn: (topAnchorTurn) => {\n store.setState({ topAnchorTurn });\n },\n }));\n\n viewportAutoScroll.set(store, autoScroll);\n return store;\n};\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export type { ExportedMessageRepositoryItem } from "@assistant-ui/core";
|
|
|
51
51
|
export { ExportedMessageRepository } from "@assistant-ui/core";
|
|
52
52
|
export * from "./context/index.js";
|
|
53
53
|
export { makeAssistantTool, type AssistantTool, makeAssistantToolUI, type AssistantToolUI, makeAssistantDataUI, type AssistantDataUI, useAssistantTool, type AssistantToolProps, useAssistantToolUI, type AssistantToolUIProps, useAssistantDataUI, type AssistantDataUIProps, useAssistantInstructions, useAssistantContext, type AssistantContextConfig, useInlineRender, type Toolkit, type ToolDefinition, type ToolCallText, type ToolkitDefinition, type ToolkitDefinitionEntry, defineToolkit, stubTool, externalTool, useAuiToolOverrides, hitl, hitlTool, humanTool, providerTool, type ProviderToolConfig, defineMcpToolkit, type McpToolkitEntry, type McpToolkitDefinition, type McpToolkitToolConfig, Tools, DataRenderers, Interactables, useAssistantInteractable, type AssistantInteractableProps, useInteractableState, unstable_Interactables, unstable_useInteractable, type Unstable_InteractableConfig, type Unstable_InferInteractableState, type Unstable_InteractableVersionInfo, unstable_useInteractableState, unstable_useInteractableVersions, unstable_interactableTool, type Unstable_InteractableToolConfig, type Unstable_InteractableToolRenderProps, type Unstable_InteractableStateSchema, type Unstable_InteractablesState, type Unstable_InteractableDefinition, type Unstable_InteractableRegistration, type Unstable_InteractablesMethods, type Unstable_InteractablePersistedState, type Unstable_InteractablePersistenceAdapter, type Unstable_InteractablePersistenceStatus, type Unstable_InteractablesClientSchema, type Unstable_InteractablesConfig, useToolArgsStatus, type ToolArgsStatus, } from "@assistant-ui/core/react";
|
|
54
|
-
export type { ModelContext, ModelContextProvider, LanguageModelConfig, LanguageModelV1CallSettings, } from "@assistant-ui/core";
|
|
54
|
+
export type { ModelContext, ModelContextOptions, ModelContextProvider, SystemPart, LanguageModelConfig, LanguageModelV1CallSettings, } from "@assistant-ui/core";
|
|
55
55
|
export { mergeModelContexts } from "@assistant-ui/core";
|
|
56
56
|
export { unstable_getInteractableSnapshots, unstable_formatInteractableSnapshot, unstable_getInteractableVersions, type Unstable_InteractableSnapshotEntry, type Unstable_InteractableVersion, } from "@assistant-ui/core";
|
|
57
57
|
export type { Tool } from "assistant-stream";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposerInput.js","names":["composeEventHandlers","useComposedRefs","Slot","ClipboardEvent","KeyboardEvent","ReactElement","ReactNode","forwardRef","useCallback","useEffect","useRef","isValidElement","TextareaAutosize","TextareaAutosizeProps","TextareaHeightChangeMeta","useEscapeKeydown","useOnScrollToBottom","useMediaQuery","renderSlot","isCompositionKey","useAui","flushTapSync","useComposerInputPluginRegistryOptional","useComposerCompactContextOptional","useComposerCancelWithFocus","useThreadRootElementRef","useComposerInputDisabled","useComposerInputValue","useTriggerPopoverAriaProps","TOUCH_PRIMARY_QUERY","ComposerPrimitiveInput","Element","HTMLTextAreaElement","BaseProps","asChild","render","cancelOnEscape","unstable_focusOnRunStart","unstable_focusOnScrollToBottom","unstable_focusOnThreadSwitched","unstable_insertNewlineOnTouchEnter","addAttachmentOnPaste","SubmitModeProps","submitMode","submitOnEnter","Props","autoFocus","disabled","disabledProp","onChange","onKeyDown","onPaste","onSelect","onHeightChange","rest","forwardedRef","aui","threadRootRef","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","cancel","composer","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","getState","canCancel","preventDefault","handleKeyPress","nativeEvent","key","threadState","thread","hasQueue","capabilities","queue","shiftKey","ctrlKey","metaKey","canSend","send","steer","isRunning","voice","undefined","shouldSubmit","closest","requestSubmit","handlePaste","threadCapabilities","files","Array","from","clipboardData","attachments","length","Promise","all","map","file","addAttachment","handleHeightChange","height","meta","el","cs","getComputedStyle","contentHeight","boxSizing","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","Math","round","rowHeight","setMultiline","autoFocusEnabled","focus","textarea","preventScroll","setSelectionRange","focusOnRunStart","doc","ownerDocument","active","activeElement","root","composerRoot","body","type","on","ariaComboboxProps","inputProps","name","const","React","ForwardedRef","ChangeEvent","isEditing","nativeIsComposing","isComposing","setText","pos","selectionStart","setCursorPosition","onCompositionStart","CompositionEventHandler","onCompositionEnd","CompositionEvent","SyntheticEvent","children","Component","Root","displayName"],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { Slot } from \"radix-ui\";\nimport {\n type ClipboardEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n isValidElement,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n type TextareaHeightChangeMeta,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"radix-ui/internal\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useMediaQuery } from \"../../utils/hooks/useMediaQuery\";\nimport { renderSlot } from \"../../utils/Primitive\";\nimport { isCompositionKey } from \"../../utils/isCompositionKey\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { flushTapSync } from \"@assistant-ui/tap\";\nimport { useComposerInputPluginRegistryOptional } from \"./ComposerInputPluginContext\";\nimport { useComposerCompactContextOptional } from \"./ComposerCompactContext\";\nimport { useComposerCancelWithFocus } from \"./useComposerCancelWithFocus\";\nimport { useThreadRootElementRef } from \"../thread/ThreadRootElementContext\";\nimport {\n useComposerInputDisabled,\n useComposerInputValue,\n useTriggerPopoverAriaProps,\n} from \"./useComposerInputState\";\n\nconst TOUCH_PRIMARY_QUERY = \"(pointer: coarse) and (not (any-pointer: fine))\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n\n type BaseProps = {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * A React element to use as the input container, with props merged in.\n */\n render?: ReactElement | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * After cancelling an edit, focus returns to the main thread composer when\n * available, unless a handler has moved focus elsewhere.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to focus the input when a new run starts if nothing is focused\n * or focus is already inside the same thread or composer. Keeps the current\n * selection when the input is already focused. Applies when `autoFocus` is\n * enabled.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether plain Enter on a touch-primary device should insert a newline\n * instead of submitting, detected via\n * `(pointer: coarse) and (not (any-pointer: fine))`. Only takes effect\n * when `submitMode` resolves to `\"enter\"`.\n *\n * @deprecated Experimental since 2026-05-24. Not scheduled for removal; the API may change in any release.\n *\n * @default false\n */\n unstable_insertNewlineOnTouchEnter?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n\n type SubmitModeProps =\n | {\n /**\n * Controls how the Enter key submits messages.\n * - \"enter\": Plain Enter submits (Shift+Enter for newline)\n * - \"ctrlEnter\": Ctrl/Cmd+Enter submits (plain Enter for newline)\n * - \"none\": Keyboard submission disabled\n * @default \"enter\"\n */\n submitMode?: \"enter\" | \"ctrlEnter\" | \"none\" | undefined;\n /**\n * @deprecated Use `submitMode` instead\n * @ignore\n */\n submitOnEnter?: never;\n }\n | {\n submitMode?: never;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n * @deprecated Use `submitMode` instead. Will be removed in a future version.\n */\n submitOnEnter?: boolean | undefined;\n };\n\n export type Props = TextareaAutosizeProps & BaseProps & SubmitModeProps;\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * When rendered inside `TriggerPopoverRoot` and a popover is open, the\n * underlying `<textarea>` automatically receives `aria-controls`,\n * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the\n * combobox relationship. These computed attributes override user-provided\n * values for those four ARIA props while the popover is open.\n *\n * @example\n * ```tsx\n * // Ctrl/Cmd+Enter to submit (plain Enter inserts newline)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitMode=\"ctrlEnter\"\n * />\n *\n * // Insert a newline on Enter on touch-primary devices.\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * unstable_insertNewlineOnTouchEnter\n * />\n *\n * // Old API (deprecated, still supported)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n render,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n onSelect,\n submitOnEnter,\n submitMode,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n unstable_insertNewlineOnTouchEnter = false,\n addAttachmentOnPaste = true,\n onHeightChange,\n ...rest\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const threadRootRef = useThreadRootElementRef();\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n const compactContext = useComposerCompactContextOptional();\n\n const declaredSubmitMode =\n submitMode ?? (submitOnEnter === false ? \"none\" : \"enter\");\n const isTouchPrimary = useMediaQuery(\n unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null,\n );\n const effectiveSubmitMode =\n unstable_insertNewlineOnTouchEnter &&\n isTouchPrimary &&\n declaredSubmitMode === \"enter\"\n ? \"none\"\n : declaredSubmitMode;\n\n const value = useComposerInputValue();\n const isDisabled = useComposerInputDisabled(disabledProp);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const cancel = useComposerCancelWithFocus(\n useCallback(() => aui.composer.cancel(), [aui]),\n );\n const ref = useComposedRefs(forwardedRef, textareaRef);\n // suppress text/cursor broadcasts during IME composition\n const compositionRef = useRef(false);\n\n useEscapeKeydown((e) => {\n // Only handle ESC if it originated from within this input\n if (!textareaRef.current?.contains(e.target as Node)) return;\n\n // ignore IME composition events\n if (isCompositionKey(e)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle Escape first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (!cancelOnEscape) return;\n\n const composer = aui.composer;\n if (composer.getState().canCancel) {\n cancel(textareaRef.current);\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled) return;\n\n // ignore IME composition events\n if (isCompositionKey(e.nativeEvent)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle keyboard events first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (e.key === \"Enter\") {\n const threadState = aui.thread.getState();\n const hasQueue = threadState.capabilities.queue;\n\n // Steer hotkey: Cmd/Ctrl+Shift+Enter (respects submitMode=\"none\" and canSend)\n if (\n e.shiftKey &&\n (e.ctrlKey || e.metaKey) &&\n hasQueue &&\n declaredSubmitMode !== \"none\" &&\n aui.composer.getState().canSend\n ) {\n e.preventDefault();\n aui.composer.send({ steer: true });\n return;\n }\n\n // Regular newline: Shift+Enter\n if (e.shiftKey) return;\n\n // Block submission when running unless queue is supported; a voice\n // session leaves the decision to canSend\n if (\n threadState.isRunning &&\n !hasQueue &&\n threadState.voice === undefined\n )\n return;\n\n let shouldSubmit = false;\n if (effectiveSubmitMode === \"ctrlEnter\") {\n shouldSubmit = e.ctrlKey || e.metaKey;\n } else if (effectiveSubmitMode === \"enter\") {\n shouldSubmit = true;\n }\n\n if (shouldSubmit) {\n e.preventDefault();\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = aui.thread.getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n e.preventDefault();\n await Promise.all(\n files.map(async (file) => {\n try {\n await aui.composer.addAttachment(file);\n } catch {\n // The composer runtime emits composer.attachmentAddError before rejecting.\n }\n }),\n );\n }\n };\n\n const handleHeightChange = (\n height: number,\n meta: TextareaHeightChangeMeta,\n ) => {\n onHeightChange?.(height, meta);\n if (!compactContext) return;\n const el = textareaRef.current;\n if (!el || el.value === \"\") return;\n const cs = getComputedStyle(el);\n const contentHeight =\n cs.boxSizing === \"border-box\"\n ? height -\n parseFloat(cs.paddingTop) -\n parseFloat(cs.paddingBottom) -\n parseFloat(cs.borderTopWidth) -\n parseFloat(cs.borderBottomWidth)\n : height;\n if (Math.round(contentHeight / meta.rowHeight) > 1) {\n compactContext.setMultiline(true);\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n const focusOnRunStart = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n const doc = textarea.ownerDocument;\n const active = doc.activeElement;\n if (active === textarea) return;\n\n const root = threadRootRef?.current;\n const composerRoot = textarea.closest(\"[data-aui-composer-type]\");\n if (\n active &&\n active !== doc.body &&\n !composerRoot?.contains(active) &&\n (!root?.contains(active) ||\n active.closest(\"[data-aui-thread-root]\") !== root)\n )\n return;\n\n focus();\n }, [focus, threadRootRef]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n aui.composer.getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return aui.on(\"thread.runStart\", focusOnRunStart);\n }, [unstable_focusOnRunStart, focusOnRunStart, aui]);\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched\n )\n return undefined;\n\n return aui.on(\"threads.selectionChanged\", focus);\n }, [unstable_focusOnThreadSwitched, focus, aui]);\n\n useEffect(() => {\n if (value === \"\") compactContext?.setMultiline(false);\n }, [value, compactContext]);\n\n const ariaComboboxProps = useTriggerPopoverAriaProps();\n\n const inputProps = {\n name: \"input\" as const,\n value,\n ...rest,\n ...ariaComboboxProps,\n ref: ref as React.ForwardedRef<HTMLTextAreaElement>,\n disabled: isDisabled,\n onChange: composeEventHandlers(\n onChange,\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!aui.composer.getState().isEditing) return;\n const nativeIsComposing =\n (e.nativeEvent as { isComposing?: boolean }).isComposing === true;\n // recover stuck compositionRef when the browser drops compositionend\n if (compositionRef.current && !nativeIsComposing) {\n compositionRef.current = false;\n }\n const isComposing = nativeIsComposing || compositionRef.current;\n // keep controlled value in sync mid-IME so react does not reset the textarea to a stale value\n flushTapSync(() => {\n aui.composer.setText(e.target.value);\n });\n if (isComposing) return;\n const pos = e.target.selectionStart ?? e.target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),\n onCompositionStart: composeEventHandlers(\n (rest as { onCompositionStart?: React.CompositionEventHandler })\n .onCompositionStart,\n () => {\n compositionRef.current = true;\n },\n ),\n onCompositionEnd: composeEventHandlers(\n (rest as { onCompositionEnd?: React.CompositionEventHandler })\n .onCompositionEnd,\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n if (!aui.composer.getState().isEditing) return;\n const target = e.target as HTMLTextAreaElement;\n flushTapSync(() => {\n aui.composer.setText(target.value);\n });\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onSelect: composeEventHandlers(\n onSelect,\n (e: React.SyntheticEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) return;\n const target = e.target as HTMLTextAreaElement;\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onPaste: composeEventHandlers(onPaste, handlePaste),\n ...(compactContext\n ? { onHeightChange: handleHeightChange }\n : onHeightChange !== undefined\n ? { onHeightChange }\n : {}),\n };\n\n if (render && isValidElement(render)) {\n return renderSlot(\n render,\n (rest as { children?: ReactNode }).children,\n inputProps,\n );\n }\n\n const Component = asChild ? Slot.Root : TextareaAutosize;\n return <Component {...inputProps} />;\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComposerInput.js","names":["composeEventHandlers","useComposedRefs","Slot","ClipboardEvent","KeyboardEvent","ReactElement","ReactNode","forwardRef","useCallback","useEffect","useRef","isValidElement","TextareaAutosize","TextareaAutosizeProps","TextareaHeightChangeMeta","useEscapeKeydown","useOnScrollToBottom","useMediaQuery","renderSlot","isCompositionKey","useAui","flushTapSync","useComposerInputPluginRegistryOptional","useComposerCompactContextOptional","useComposerCancelWithFocus","useThreadRootElementRef","useComposerInputDisabled","useComposerInputValue","useTriggerPopoverAriaProps","TOUCH_PRIMARY_QUERY","ComposerPrimitiveInput","Element","HTMLTextAreaElement","BaseProps","asChild","render","cancelOnEscape","unstable_focusOnRunStart","unstable_focusOnScrollToBottom","unstable_focusOnThreadSwitched","unstable_insertNewlineOnTouchEnter","addAttachmentOnPaste","SubmitModeProps","submitMode","submitOnEnter","Props","autoFocus","disabled","disabledProp","onChange","onKeyDown","onPaste","onSelect","onHeightChange","rest","forwardedRef","aui","threadRootRef","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","cancel","composer","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","getState","canCancel","preventDefault","handleKeyPress","nativeEvent","key","threadState","thread","hasQueue","capabilities","queue","shiftKey","ctrlKey","metaKey","canSend","send","steer","isRunning","voice","undefined","shouldSubmit","closest","requestSubmit","handlePaste","threadCapabilities","files","Array","from","clipboardData","attachments","length","Promise","all","map","file","addAttachment","handleHeightChange","height","meta","el","cs","getComputedStyle","contentHeight","boxSizing","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","Math","round","rowHeight","setMultiline","autoFocusEnabled","focus","textarea","preventScroll","setSelectionRange","focusOnRunStart","doc","ownerDocument","active","activeElement","root","composerRoot","body","type","on","ariaComboboxProps","inputProps","name","const","React","ForwardedRef","ChangeEvent","isEditing","nativeIsComposing","isComposing","setText","pos","selectionStart","setCursorPosition","onCompositionStart","CompositionEventHandler","onCompositionEnd","CompositionEvent","SyntheticEvent","children","Component","Root","displayName"],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { Slot } from \"radix-ui\";\nimport {\n type ClipboardEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n isValidElement,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n type TextareaHeightChangeMeta,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"radix-ui/internal\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useMediaQuery } from \"../../utils/hooks/useMediaQuery\";\nimport { renderSlot } from \"../../utils/Primitive\";\nimport { isCompositionKey } from \"../../utils/isCompositionKey\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { flushTapSync } from \"@assistant-ui/tap\";\nimport { useComposerInputPluginRegistryOptional } from \"./ComposerInputPluginContext\";\nimport { useComposerCompactContextOptional } from \"./ComposerCompactContext\";\nimport { useComposerCancelWithFocus } from \"./useComposerCancelWithFocus\";\nimport { useThreadRootElementRef } from \"../thread/ThreadRootElementContext\";\nimport {\n useComposerInputDisabled,\n useComposerInputValue,\n useTriggerPopoverAriaProps,\n} from \"./useComposerInputState\";\n\nconst TOUCH_PRIMARY_QUERY = \"(pointer: coarse) and (not (any-pointer: fine))\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n\n type BaseProps = {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * A React element to use as the input container, with props merged in.\n */\n render?: ReactElement | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * After cancelling an edit, focus returns to the main thread composer when\n * available, unless a handler has moved focus elsewhere.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to focus the input when a new run starts if nothing is focused\n * or focus is already inside the same thread or composer. Keeps the current\n * selection when the input is already focused. Applies when `autoFocus` is\n * enabled.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether plain Enter on a touch-primary device should insert a newline\n * instead of submitting, detected via\n * `(pointer: coarse) and (not (any-pointer: fine))`. Only takes effect\n * when `submitMode` resolves to `\"enter\"`.\n *\n * @deprecated Experimental since 2026-05-24. Not scheduled for removal; the API may change in any release.\n *\n * @default false\n */\n unstable_insertNewlineOnTouchEnter?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n\n type SubmitModeProps =\n | {\n /**\n * Controls how the Enter key submits messages.\n * - \"enter\": Plain Enter submits (Shift+Enter for newline)\n * - \"ctrlEnter\": Ctrl/Cmd+Enter submits (plain Enter for newline)\n * - \"none\": Keyboard submission disabled\n * @default \"enter\"\n */\n submitMode?: \"enter\" | \"ctrlEnter\" | \"none\" | undefined;\n /**\n * @deprecated Use `submitMode` instead\n * @ignore\n */\n submitOnEnter?: never;\n }\n | {\n submitMode?: never;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n * @deprecated Use `submitMode` instead. Will be removed in a future version.\n */\n submitOnEnter?: boolean | undefined;\n };\n\n export type Props = TextareaAutosizeProps & BaseProps & SubmitModeProps;\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * When rendered inside `TriggerPopoverRoot` and a popover is open, the\n * underlying `<textarea>` automatically receives `aria-controls`,\n * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the\n * combobox relationship. These computed attributes override user-provided\n * values for those four ARIA props while the popover is open.\n *\n * @example\n * ```tsx\n * // Ctrl/Cmd+Enter to submit (plain Enter inserts newline)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitMode=\"ctrlEnter\"\n * />\n *\n * // Insert a newline on Enter on touch-primary devices.\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * unstable_insertNewlineOnTouchEnter\n * />\n *\n * // Old API (deprecated, still supported)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n render,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n onSelect,\n submitOnEnter,\n submitMode,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n unstable_insertNewlineOnTouchEnter = false,\n addAttachmentOnPaste = true,\n onHeightChange,\n ...rest\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const threadRootRef = useThreadRootElementRef();\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n const compactContext = useComposerCompactContextOptional();\n\n const declaredSubmitMode =\n submitMode ?? (submitOnEnter === false ? \"none\" : \"enter\");\n const isTouchPrimary = useMediaQuery(\n unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null,\n );\n const effectiveSubmitMode =\n unstable_insertNewlineOnTouchEnter &&\n isTouchPrimary &&\n declaredSubmitMode === \"enter\"\n ? \"none\"\n : declaredSubmitMode;\n\n const value = useComposerInputValue();\n const isDisabled = useComposerInputDisabled(disabledProp);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const cancel = useComposerCancelWithFocus(\n useCallback(() => aui.composer.cancel(), [aui]),\n );\n const ref = useComposedRefs(forwardedRef, textareaRef);\n // suppress text/cursor broadcasts during IME composition\n const compositionRef = useRef(false);\n\n useEscapeKeydown((e) => {\n // Only handle ESC if it originated from within this input\n if (!textareaRef.current?.contains(e.target as Node)) return;\n\n // ignore IME composition events\n if (isCompositionKey(e)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle Escape first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (!cancelOnEscape) return;\n\n const composer = aui.composer;\n if (composer.getState().canCancel) {\n cancel(textareaRef.current);\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled) return;\n\n // ignore IME composition events\n if (isCompositionKey(e.nativeEvent)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle keyboard events first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (e.key === \"Enter\") {\n const threadState = aui.thread.getState();\n const hasQueue = threadState.capabilities.queue;\n\n // Steer hotkey: Cmd/Ctrl+Shift+Enter (respects submitMode=\"none\" and canSend)\n if (\n e.shiftKey &&\n (e.ctrlKey || e.metaKey) &&\n hasQueue &&\n declaredSubmitMode !== \"none\" &&\n aui.composer.getState().canSend\n ) {\n e.preventDefault();\n aui.composer.send({ steer: true });\n return;\n }\n\n // Regular newline: Shift+Enter\n if (e.shiftKey) return;\n\n // Block submission when running unless queue is supported; a voice\n // session leaves the decision to canSend\n if (\n threadState.isRunning &&\n !hasQueue &&\n threadState.voice === undefined\n )\n return;\n\n let shouldSubmit = false;\n if (effectiveSubmitMode === \"ctrlEnter\") {\n shouldSubmit = e.ctrlKey || e.metaKey;\n } else if (effectiveSubmitMode === \"enter\") {\n shouldSubmit = true;\n }\n\n if (shouldSubmit) {\n e.preventDefault();\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = aui.thread.getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n e.preventDefault();\n await Promise.all(\n files.map(async (file) => {\n try {\n await aui.composer.addAttachment(file);\n } catch {\n // The composer runtime emits composer.attachmentAddError before rejecting.\n }\n }),\n );\n }\n };\n\n const handleHeightChange = (\n height: number,\n meta: TextareaHeightChangeMeta,\n ) => {\n onHeightChange?.(height, meta);\n if (!compactContext) return;\n const el = textareaRef.current;\n if (!el || el.value === \"\") return;\n const cs = getComputedStyle(el);\n const contentHeight =\n cs.boxSizing === \"border-box\"\n ? height -\n parseFloat(cs.paddingTop) -\n parseFloat(cs.paddingBottom) -\n parseFloat(cs.borderTopWidth) -\n parseFloat(cs.borderBottomWidth)\n : height;\n if (Math.round(contentHeight / meta.rowHeight) > 1) {\n compactContext.setMultiline(true);\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n const focusOnRunStart = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n const doc = textarea.ownerDocument;\n const active = doc.activeElement;\n if (active === textarea) return;\n\n const root = threadRootRef?.current;\n const composerRoot = textarea.closest(\"[data-aui-composer-type]\");\n if (\n active &&\n active !== doc.body &&\n !composerRoot?.contains(active) &&\n (!root?.contains(active) ||\n active.closest(\"[data-aui-thread-root]\") !== root)\n )\n return;\n\n focus();\n }, [focus, threadRootRef]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n aui.composer.getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return aui.on(\"thread.runStart\", focusOnRunStart);\n }, [unstable_focusOnRunStart, focusOnRunStart, aui]);\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched\n )\n return undefined;\n\n return aui.on(\"threads.selectionChanged\", focus);\n }, [unstable_focusOnThreadSwitched, focus, aui]);\n\n useEffect(() => {\n if (value === \"\") compactContext?.setMultiline(false);\n }, [value, compactContext]);\n\n const ariaComboboxProps = useTriggerPopoverAriaProps();\n\n const inputProps = {\n name: \"input\" as const,\n value,\n ...rest,\n ...ariaComboboxProps,\n ref: ref as React.ForwardedRef<HTMLTextAreaElement>,\n disabled: isDisabled,\n onChange: composeEventHandlers(\n onChange,\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!aui.composer.getState().isEditing) return;\n const nativeIsComposing =\n (e.nativeEvent as { isComposing?: boolean }).isComposing === true;\n // recover stuck compositionRef when the browser drops compositionend\n if (compositionRef.current && !nativeIsComposing) {\n compositionRef.current = false;\n }\n const isComposing = nativeIsComposing || compositionRef.current;\n // Standalone tap roots need a synchronous flush while the input is composing.\n flushTapSync(() => {\n aui.composer.setText(e.target.value);\n });\n if (isComposing) return;\n const pos = e.target.selectionStart ?? e.target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),\n onCompositionStart: composeEventHandlers(\n (rest as { onCompositionStart?: React.CompositionEventHandler })\n .onCompositionStart,\n () => {\n compositionRef.current = true;\n },\n ),\n onCompositionEnd: composeEventHandlers(\n (rest as { onCompositionEnd?: React.CompositionEventHandler })\n .onCompositionEnd,\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n if (!aui.composer.getState().isEditing) return;\n const target = e.target as HTMLTextAreaElement;\n flushTapSync(() => {\n aui.composer.setText(target.value);\n });\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onSelect: composeEventHandlers(\n onSelect,\n (e: React.SyntheticEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) return;\n const target = e.target as HTMLTextAreaElement;\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onPaste: composeEventHandlers(onPaste, handlePaste),\n ...(compactContext\n ? { onHeightChange: handleHeightChange }\n : onHeightChange !== undefined\n ? { onHeightChange }\n : {}),\n };\n\n if (render && isValidElement(render)) {\n return renderSlot(\n render,\n (rest as { children?: ReactNode }).children,\n inputProps,\n );\n }\n\n const Component = asChild ? Slot.Root : TextareaAutosize;\n return <Component {...inputProps} />;\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ActionButtonElement, type ActionButtonProps } from "../../utils/createActionButton.js";
|
|
2
|
+
declare const useComposerResume: () => (() => void) | null;
|
|
3
|
+
export declare namespace ComposerPrimitiveResume {
|
|
4
|
+
type Element = ActionButtonElement;
|
|
5
|
+
type Props = ActionButtonProps<typeof useComposerResume>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resumes an interrupted run when its adapter explicitly reports a checkpoint.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <ComposerPrimitive.Resume>
|
|
13
|
+
* Resume
|
|
14
|
+
* </ComposerPrimitive.Resume>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const ComposerPrimitiveResume: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
18
|
+
asChild?: boolean;
|
|
19
|
+
}, "ref"> & {
|
|
20
|
+
render?: import("react").ReactElement | undefined;
|
|
21
|
+
} & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=ComposerResume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerResume.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerResume.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,0CAAuC;AAExC,QAAA,MAAM,iBAAiB,2BAKtB,CAAC;AAEF,yBAAiB,uBAAuB,CAAC;IACvC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,CAAC;CACjE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB;;;;gHAGnC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createActionButton } from "../../utils/createActionButton.js";
|
|
3
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
4
|
+
import { useComposerResume } from "@assistant-ui/core/react";
|
|
5
|
+
import "@assistant-ui/tap/react-shim";
|
|
6
|
+
//#region src/primitives/composer/ComposerResume.ts
|
|
7
|
+
const useComposerResume$1 = () => {
|
|
8
|
+
const $ = c(2);
|
|
9
|
+
const { disabled, resume } = useComposerResume();
|
|
10
|
+
let t0;
|
|
11
|
+
if ($[0] !== resume) {
|
|
12
|
+
t0 = () => resume();
|
|
13
|
+
$[0] = resume;
|
|
14
|
+
$[1] = t0;
|
|
15
|
+
} else t0 = $[1];
|
|
16
|
+
const callback = t0;
|
|
17
|
+
if (disabled) return null;
|
|
18
|
+
return callback;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Resumes an interrupted run when its adapter explicitly reports a checkpoint.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <ComposerPrimitive.Resume>
|
|
26
|
+
* Resume
|
|
27
|
+
* </ComposerPrimitive.Resume>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
const ComposerPrimitiveResume = createActionButton("ComposerPrimitive.Resume", useComposerResume$1);
|
|
31
|
+
//#endregion
|
|
32
|
+
export { ComposerPrimitiveResume };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=ComposerResume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerResume.js","names":["c","_c","useCallback","useComposerResume","useComposerResumeBehavior","createActionButton","ActionButtonElement","ActionButtonProps","$","disabled","resume","t0","callback","ComposerPrimitiveResume","Element","Props","useComposerResume","_c","useComposerResumeBehavior"],"sources":["../../../src/primitives/composer/ComposerResume.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useComposerResume as useComposerResumeBehavior } from \"@assistant-ui/core/react\";\nimport {\n createActionButton,\n type ActionButtonElement,\n type ActionButtonProps,\n} from \"../../utils/createActionButton\";\n\nconst useComposerResume = () => {\n const { disabled, resume } = useComposerResumeBehavior();\n const callback = useCallback(() => resume(), [resume]);\n if (disabled) return null;\n return callback;\n};\n\nexport namespace ComposerPrimitiveResume {\n export type Element = ActionButtonElement;\n export type Props = ActionButtonProps<typeof useComposerResume>;\n}\n\n/**\n * Resumes an interrupted run when its adapter explicitly reports a checkpoint.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Resume>\n * Resume\n * </ComposerPrimitive.Resume>\n * ```\n */\nexport const ComposerPrimitiveResume = createActionButton(\n \"ComposerPrimitive.Resume\",\n useComposerResume,\n);\n"],"mappings":";;;;;;AAUA,MAAMG,4BAAoB;CAAA,MAAAK,IAAAP,EAAA,CAAA;CACxB,MAAA,EAAAQ,UAAAC,WAA6BN,kBAA0B;CAAE,IAAAO;CAAA,IAAAH,EAAA,OAAAE,QAAA;EAC5BC,WAAMD,OAAO;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAA3C,MAAAI,WAAiBD;CACjB,IAAIF,UAAQ,OAAS;CAAK,OACnBG;AAAQ;;;;;;;;;;;AAkBjB,MAAaC,0BAA0BR,mBACrC,4BACAF,mBACF"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { Unstable_DirectiveFormatter, Unstable_TriggerItem } from "@assistant-ui/core";
|
|
2
2
|
import type { AssistantClient } from "@assistant-ui/store";
|
|
3
3
|
import type { DetectedTrigger } from "./triggerDetectionResource.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* External override for selection (used by Lexical's DirectivePlugin).
|
|
6
|
+
* Returns whether it handled the item, and calls `onInserted` once the
|
|
7
|
+
* insertion has reached the composer.
|
|
8
|
+
*/
|
|
9
|
+
export type SelectItemOverride = (item: Unstable_TriggerItem, onInserted: () => void) => boolean;
|
|
6
10
|
export type TriggerBehavior = {
|
|
7
11
|
readonly kind: "directive";
|
|
8
12
|
readonly formatter: Unstable_DirectiveFormatter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerSelectionResource.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,sCAAmC;AAElE
|
|
1
|
+
{"version":3,"file":"triggerSelectionResource.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,sCAAmC;AAElE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAE,MAAM,IAAI,KACnB,OAAO,CAAC;AAEb,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC5D,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEN,MAAM,MAAM,8BAA8B,GAAG;IAC3C,qEAAqE;IACrE,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,+EAA+E;IAC/E,KAAK,IAAI,IAAI,CAAC;IACd,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;CAChE,CAAC;AA2FF,eAAO,MAAM,wBAAwB;cAjFzB,eAAe,GAAG,SAAS;aAC5B,eAAe,GAAG,IAAI;SAC1B,eAAe;iBACP,MAAM;uBACA,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IACxC,6EAA6E;gBACjE,MAAM,IAAI;GA2EqD,CAAC"}
|
|
@@ -22,7 +22,10 @@ const useTriggerSelectionResource = (t0) => {
|
|
|
22
22
|
if ($[1] !== aui || $[2] !== behavior || $[3] !== onSelected || $[4] !== setCursorPosition || $[5] !== trigger) {
|
|
23
23
|
t2 = (item) => {
|
|
24
24
|
if (!trigger || !behavior) return;
|
|
25
|
-
|
|
25
|
+
const reportInserted = () => {
|
|
26
|
+
if (behavior.kind === "directive") behavior.onInserted?.(item);
|
|
27
|
+
};
|
|
28
|
+
if (selectItemOverrideRef.current?.(item, reportInserted)) {
|
|
26
29
|
onSelected();
|
|
27
30
|
return;
|
|
28
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerSelectionResource.js","names":["useEffectEvent","useRef","resource","Unstable_DirectiveFormatter","Unstable_TriggerItem","AssistantClient","DetectedTrigger","SelectItemOverride","item","TriggerBehavior","kind","formatter","
|
|
1
|
+
{"version":3,"file":"triggerSelectionResource.js","names":["useEffectEvent","useRef","resource","Unstable_DirectiveFormatter","Unstable_TriggerItem","AssistantClient","DetectedTrigger","SelectItemOverride","item","onInserted","TriggerBehavior","kind","formatter","onExecute","removeOnExecute","TriggerSelectionResourceOutput","selectItem","close","registerSelectItemOverride","fn","useTriggerSelectionResource","t0","$","_c","behavior","trigger","aui","setCursorPosition","onSelected","selectItemOverrideRef","t1","Symbol","for","current","t2","reportInserted","currentText","composer","getState","text","before","slice","offset","after","endOffset","insertDirective","directive","serialize","setText","startsWith","length","t3","t4","TriggerSelectionResource","_c"],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"sourcesContent":["import { useEffectEvent, useRef } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport type { DetectedTrigger } from \"./triggerDetectionResource\";\n\n/**\n * External override for selection (used by Lexical's DirectivePlugin).\n * Returns whether it handled the item, and calls `onInserted` once the\n * insertion has reached the composer.\n */\nexport type SelectItemOverride = (\n item: Unstable_TriggerItem,\n onInserted: () => void,\n) => boolean;\n\nexport type TriggerBehavior =\n | {\n readonly kind: \"directive\";\n readonly formatter: Unstable_DirectiveFormatter;\n readonly onInserted?: (item: Unstable_TriggerItem) => void;\n }\n | {\n readonly kind: \"action\";\n readonly formatter: Unstable_DirectiveFormatter;\n readonly onExecute: (item: Unstable_TriggerItem) => void;\n readonly removeOnExecute?: boolean;\n };\n\nexport type TriggerSelectionResourceOutput = {\n /** Select an item — runs override (if any) then applies behavior. */\n selectItem(item: Unstable_TriggerItem): void;\n /** Close the popover (moves cursor before trigger to deactivate detection). */\n close(): void;\n /** Register a Lexical-style selection override. Returns unregister fn. */\n registerSelectItemOverride(fn: SelectItemOverride): () => void;\n};\n\n/** Owns composer text mutation + behavior dispatch on item selection. */\nconst useTriggerSelectionResource = ({\n behavior,\n trigger,\n aui,\n setCursorPosition,\n onSelected,\n}: {\n behavior: TriggerBehavior | undefined;\n trigger: DetectedTrigger | null;\n aui: AssistantClient;\n triggerChar: string;\n setCursorPosition: (pos: number) => void;\n /** Called after a successful selection so the parent can reset nav state. */\n onSelected: () => void;\n}): TriggerSelectionResourceOutput => {\n // Select-item override: lets Lexical's DirectivePlugin intercept selection\n // and drive its own node insertion.\n const selectItemOverrideRef = useRef<SelectItemOverride | null>(null);\n\n const registerSelectItemOverride = useEffectEvent(\n (fn: SelectItemOverride) => {\n selectItemOverrideRef.current = fn;\n return () => {\n if (selectItemOverrideRef.current === fn) {\n selectItemOverrideRef.current = null;\n }\n };\n },\n );\n\n const selectItem = useEffectEvent((item: Unstable_TriggerItem) => {\n if (!trigger || !behavior) return;\n\n const reportInserted = () => {\n if (behavior.kind === \"directive\") behavior.onInserted?.(item);\n };\n\n if (selectItemOverrideRef.current?.(item, reportInserted)) {\n onSelected();\n return;\n }\n\n const currentText = aui.composer.getState().text;\n const before = currentText.slice(0, trigger.offset);\n const after = currentText.slice(trigger.endOffset);\n\n const insertDirective = () => {\n const directive = behavior.formatter.serialize(item);\n aui.composer.setText(\n before + directive + (after.startsWith(\" \") ? after : ` ${after}`),\n );\n setCursorPosition(before.length + directive.length + 1);\n };\n\n if (behavior.kind === \"directive\") {\n insertDirective();\n behavior.onInserted?.(item);\n } else {\n if (behavior.removeOnExecute) {\n aui.composer.setText(\n before + (after.startsWith(\" \") ? after.slice(1) : after),\n );\n setCursorPosition(before.length);\n } else {\n // Leave directive chip in the composer as an audit trail\n insertDirective();\n }\n behavior.onExecute(item);\n }\n\n onSelected();\n });\n\n const close = useEffectEvent(() => {\n onSelected();\n // Move cursor before the trigger so trigger detection deactivates\n if (trigger) {\n setCursorPosition(trigger.offset);\n }\n });\n\n return {\n selectItem,\n close,\n registerSelectItemOverride,\n };\n};\n\nexport const TriggerSelectionResource = resource(useTriggerSelectionResource);\n"],"mappings":";;;;;AA0CA,MAAMoB,+BAA8BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,UAAAC,SAAAC,KAAAC,mBAAAC,eAAAP;CAiBnC,MAAAQ,wBAA8B5B,OAAkC,IAAI;CAAE,IAAA6B;CAAA,IAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,GAAA;EAGpEF,MAAAX,OAAA;GACEU,sBAAqBI,UAAWd;GAAH,aACtB;IACL,IAAIU,sBAAqBI,YAAad,IACpCU,sBAAqBI,UAAW;GACjC;EACF;EACFX,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CARH,MAAAJ,6BAAmClB,eACjC8B,EAQF;CAAE,IAAAI;CAAA,IAAAZ,EAAA,OAAAI,OAAAJ,EAAA,OAAAE,YAAAF,EAAA,OAAAM,cAAAN,EAAA,OAAAK,qBAAAL,EAAA,OAAAG,SAAA;EAEgCS,MAAA1B,SAAA;GAChC,IAAI,CAACiB,WAAD,CAAaD,UAAQ;GAEzB,MAAAW,uBAAuB;IACrB,IAAIX,SAAQb,SAAU,aAAaa,SAAQf,aAAcD,IAAI;GAAE;GAGjE,IAAIqB,sBAAqBI,UAAWzB,MAAM2B,cAAc,GAAC;IACvDP,WAAW;IAAC;GAAA;GAId,MAAAQ,cAAoBV,IAAGW,SAASC,SAAU,CAAC,CAAAC;GAC3C,MAAAC,SAAeJ,YAAWK,MAAO,GAAGhB,QAAOiB,MAAO;GAClD,MAAAC,QAAcP,YAAWK,MAAOhB,QAAOmB,SAAU;GAEjD,MAAAC,wBAAwB;IACtB,MAAAC,YAAkBtB,SAAQZ,UAAUmC,UAAWvC,IAAI;IACnDkB,IAAGW,SAASW,QACVR,SAASM,aAAaH,MAAKM,WAAY,GAAyB,IAA1CN,QAAA,IAAoCA,QAC5D;IACAhB,kBAAkBa,OAAMU,SAAUJ,UAASI,SAAU,CAAC;GAAC;GAGzD,IAAI1B,SAAQb,SAAU,aAAW;IAC/BkC,gBAAgB;IAChBrB,SAAQf,aAAcD,IAAI;GAAC,OAAA;IAE3B,IAAIgB,SAAQV,iBAAgB;KAC1BY,IAAGW,SAASW,QACVR,UAAUG,MAAKM,WAAY,GAA4B,IAArBN,MAAKF,MAAO,CAAS,IAA7CE,MACZ;KACAhB,kBAAkBa,OAAMU,MAAO;IAAC,OAGhCL,gBAAgB;IAElBrB,SAAQX,UAAWL,IAAI;GAAC;GAG1BoB,WAAW;EAAC;EACbN,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAzCD,MAAAN,aAAmBhB,eAAekC,EAyCjC;CAAE,IAAAiB;CAAA,IAAA7B,EAAA,OAAAM,cAAAN,EAAA,OAAAK,qBAAAL,EAAA,OAAAG,SAAA;EAE0B0B,WAAA;GAC3BvB,WAAW;GAEX,IAAIH,SACFE,kBAAkBF,QAAOiB,MAAO;EACjC;EACFpB,EAAA,KAAAM;EAAAN,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,MAAA6B;CAAA,OAAAA,KAAA7B,EAAA;CAND,MAAAL,QAAcjB,eAAemD,EAM5B;CAAE,IAAAC;CAAA,IAAA9B,EAAA,QAAAL,SAAAK,EAAA,QAAAJ,8BAAAI,EAAA,QAAAN,YAAA;EAEIoC,KAAA;GAAApC;GAAAC;GAAAC;EAIP;EAACI,EAAA,MAAAL;EAAAK,EAAA,MAAAJ;EAAAI,EAAA,MAAAN;EAAAM,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAAA,OAJM8B;AAIN;AAGH,MAAaC,2BAA2BnD,SAASkB,2BAA2B"}
|
|
@@ -2,6 +2,7 @@ import type { TriggerMatch, TriggerMatcher } from "./composer/trigger/index.js";
|
|
|
2
2
|
export { ComposerPrimitiveRoot as Root } from "./composer/ComposerRoot.js";
|
|
3
3
|
export { ComposerPrimitiveInput as Input } from "./composer/ComposerInput.js";
|
|
4
4
|
export { ComposerPrimitiveSend as Send } from "./composer/ComposerSend.js";
|
|
5
|
+
export { ComposerPrimitiveResume as Resume } from "./composer/ComposerResume.js";
|
|
5
6
|
export { ComposerPrimitiveCancel as Cancel } from "./composer/ComposerCancel.js";
|
|
6
7
|
export { ComposerPrimitiveAddAttachment as AddAttachment } from "./composer/ComposerAddAttachment.js";
|
|
7
8
|
export { ComposerPrimitiveAttachments as Attachments } from "./composer/ComposerAttachments.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { ComposerPrimitiveSend } from "./composer/ComposerSend.js";
|
|
|
3
3
|
import { ComposerPrimitiveRoot } from "./composer/ComposerRoot.js";
|
|
4
4
|
import { ComposerPrimitiveTriggerPopoverRoot, useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional, useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional } from "./composer/trigger/TriggerPopoverRootContext.js";
|
|
5
5
|
import { ComposerPrimitiveInput } from "./composer/ComposerInput.js";
|
|
6
|
+
import { ComposerPrimitiveResume } from "./composer/ComposerResume.js";
|
|
6
7
|
import { ComposerPrimitiveCancel } from "./composer/ComposerCancel.js";
|
|
7
8
|
import { ComposerPrimitiveAddAttachment } from "./composer/ComposerAddAttachment.js";
|
|
8
9
|
import { ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments } from "./composer/ComposerAttachments.js";
|
|
@@ -33,6 +34,7 @@ var composer_exports = /* @__PURE__ */ __exportAll({
|
|
|
33
34
|
Quote: () => ComposerPrimitiveQuote,
|
|
34
35
|
QuoteDismiss: () => ComposerPrimitiveQuoteDismiss,
|
|
35
36
|
QuoteText: () => ComposerPrimitiveQuoteText,
|
|
37
|
+
Resume: () => ComposerPrimitiveResume,
|
|
36
38
|
Root: () => ComposerPrimitiveRoot,
|
|
37
39
|
Send: () => ComposerPrimitiveSend,
|
|
38
40
|
StopDictation: () => ComposerPrimitiveStopDictation,
|
|
@@ -58,6 +60,6 @@ var composer_exports = /* @__PURE__ */ __exportAll({
|
|
|
58
60
|
unstable_useTriggerPopoverTriggersOptional: () => useTriggerPopoverTriggersOptional
|
|
59
61
|
});
|
|
60
62
|
//#endregion
|
|
61
|
-
export { ComposerPrimitiveAddAttachment as AddAttachment, ComposerPrimitiveAttachmentByIndex as AttachmentByIndex, ComposerPrimitiveAttachmentDropzone as AttachmentDropzone, ComposerPrimitiveAttachments as Attachments, ComposerPrimitiveCancel as Cancel, ComposerPrimitiveDictate as Dictate, ComposerPrimitiveDictationTranscript as DictationTranscript, ComposerPrimitiveIf as If, ComposerPrimitiveInput as Input, ComposerPrimitiveQueue as Queue, ComposerPrimitiveQuote as Quote, ComposerPrimitiveQuoteDismiss as QuoteDismiss, ComposerPrimitiveQuoteText as QuoteText, ComposerPrimitiveRoot as Root, ComposerPrimitiveSend as Send, ComposerPrimitiveStopDictation as StopDictation, ComposerPrimitiveTriggerPopover as TriggerPopover, ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot, ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover, ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot, composer_exports, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional };
|
|
63
|
+
export { ComposerPrimitiveAddAttachment as AddAttachment, ComposerPrimitiveAttachmentByIndex as AttachmentByIndex, ComposerPrimitiveAttachmentDropzone as AttachmentDropzone, ComposerPrimitiveAttachments as Attachments, ComposerPrimitiveCancel as Cancel, ComposerPrimitiveDictate as Dictate, ComposerPrimitiveDictationTranscript as DictationTranscript, ComposerPrimitiveIf as If, ComposerPrimitiveInput as Input, ComposerPrimitiveQueue as Queue, ComposerPrimitiveQuote as Quote, ComposerPrimitiveQuoteDismiss as QuoteDismiss, ComposerPrimitiveQuoteText as QuoteText, ComposerPrimitiveResume as Resume, ComposerPrimitiveRoot as Root, ComposerPrimitiveSend as Send, ComposerPrimitiveStopDictation as StopDictation, ComposerPrimitiveTriggerPopover as TriggerPopover, ComposerPrimitiveTriggerPopoverBack as TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as TriggerPopoverRoot, ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover, ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot, composer_exports, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional };
|
|
62
64
|
|
|
63
65
|
//# sourceMappingURL=composer.js.map
|