@assistant-ui/react 0.15.24 → 0.15.25

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.
Files changed (90) hide show
  1. package/dist/hooks/useToolCallElapsed.d.ts +3 -1
  2. package/dist/hooks/useToolCallElapsed.d.ts.map +1 -1
  3. package/dist/hooks/useToolCallElapsed.js +7 -8
  4. package/dist/hooks/useToolCallElapsed.js.map +1 -1
  5. package/dist/index.d.ts +10 -4
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -3
  8. package/dist/model-context/makeAssistantVisible.d.ts +1 -0
  9. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
  10. package/dist/model-context/makeAssistantVisible.js +31 -12
  11. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  12. package/dist/primitives/composer/ComposerInput.d.ts +1 -1
  13. package/dist/primitives/composer/ComposerInput.js +1 -1
  14. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  15. package/dist/primitives/composer/trigger/TriggerPopover.d.ts +11 -11
  16. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  17. package/dist/primitives/composer/trigger/TriggerPopover.js +62 -60
  18. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  19. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +8 -8
  20. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -1
  21. package/dist/primitives/composer/trigger/TriggerPopoverAction.js +6 -6
  22. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
  23. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +3 -3
  24. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
  25. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  26. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +9 -9
  27. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -1
  28. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +7 -7
  29. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
  30. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +5 -5
  31. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
  32. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  33. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +8 -8
  34. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +8 -8
  35. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  36. package/dist/primitives/composer/trigger/index.d.ts +1 -1
  37. package/dist/primitives/composer.d.ts +20 -1
  38. package/dist/primitives/composer.d.ts.map +1 -1
  39. package/dist/primitives/composer.js +8 -1
  40. package/dist/primitives/composer.js.map +1 -1
  41. package/dist/primitives/thread/ThreadLoadEarlier.d.ts +19 -0
  42. package/dist/primitives/thread/ThreadLoadEarlier.d.ts.map +1 -0
  43. package/dist/primitives/thread/ThreadLoadEarlier.js +36 -0
  44. package/dist/primitives/thread/ThreadLoadEarlier.js.map +1 -0
  45. package/dist/primitives/thread/ThreadMessages.d.ts +1 -1
  46. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  47. package/dist/primitives/thread/ThreadMessages.js +2 -2
  48. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  49. package/dist/primitives/thread/useThreadViewportAutoScroll.js +111 -2
  50. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  51. package/dist/primitives/thread.d.ts +2 -0
  52. package/dist/primitives/thread.d.ts.map +1 -1
  53. package/dist/primitives/thread.js +5 -2
  54. package/dist/primitives/thread.js.map +1 -1
  55. package/dist/sandbox-host/SandboxHost.d.ts.map +1 -1
  56. package/dist/sandbox-host/SandboxHost.js +6 -1
  57. package/dist/sandbox-host/SandboxHost.js.map +1 -1
  58. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -1
  59. package/dist/unstable/useMessageStallDetection.js +10 -6
  60. package/dist/unstable/useMessageStallDetection.js.map +1 -1
  61. package/dist/utils/smooth/useSmooth.js +6 -6
  62. package/dist/utils/smooth/useSmooth.js.map +1 -1
  63. package/package.json +5 -4
  64. package/src/hooks/useToolCallElapsed.test.tsx +35 -0
  65. package/src/hooks/useToolCallElapsed.ts +9 -7
  66. package/src/index.ts +28 -3
  67. package/src/model-context/makeAssistantVisible.test.tsx +315 -5
  68. package/src/model-context/makeAssistantVisible.tsx +43 -7
  69. package/src/primitives/composer/ComposerInput.tsx +1 -1
  70. package/src/primitives/composer/trigger/TriggerPopover.tsx +11 -11
  71. package/src/primitives/composer/trigger/TriggerPopoverAction.tsx +10 -13
  72. package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +2 -2
  73. package/src/primitives/composer/trigger/TriggerPopoverDirective.tsx +11 -14
  74. package/src/primitives/composer/trigger/TriggerPopoverExports.test.ts +61 -0
  75. package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +3 -3
  76. package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +8 -8
  77. package/src/primitives/composer.ts +21 -1
  78. package/src/primitives/message/MessageRoot.test.tsx +125 -2
  79. package/src/primitives/thread/ThreadLoadEarlier.tsx +35 -0
  80. package/src/primitives/thread/ThreadMessages.tsx +1 -0
  81. package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +256 -5
  82. package/src/primitives/thread/useThreadViewportAutoScroll.ts +147 -1
  83. package/src/primitives/thread.ts +2 -0
  84. package/src/sandbox-host/SandboxHost.test.tsx +34 -0
  85. package/src/sandbox-host/SandboxHost.tsx +8 -4
  86. package/src/tests/toolCallTiming.test.tsx +19 -2
  87. package/src/unstable/useMessageStallDetection.test.tsx +40 -0
  88. package/src/unstable/useMessageStallDetection.ts +10 -6
  89. package/src/utils/smooth/useSmooth.test.tsx +16 -5
  90. package/src/utils/smooth/useSmooth.ts +7 -7
@@ -5,7 +5,9 @@
5
5
  * Reads `part.timing`. Returns `undefined` when the part is not a tool call,
6
6
  * carries no timing, ended without a recorded completion (the duration is
7
7
  * unknown), or when no message part scope is available (so kit components
8
- * stay renderable standalone, e.g. in docs previews).
8
+ * stay renderable standalone, e.g. in docs previews). A running call also
9
+ * returns `undefined` until the component mounts, so a server render never
10
+ * reads the clock.
9
11
  *
10
12
  * @example
11
13
  * ```tsx
@@ -1 +1 @@
1
- {"version":3,"file":"useToolCallElapsed.d.ts","sourceRoot":"","sources":["../../src/hooks/useToolCallElapsed.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,SA4B9C,CAAC"}
1
+ {"version":3,"file":"useToolCallElapsed.d.ts","sourceRoot":"","sources":["../../src/hooks/useToolCallElapsed.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,SA4B9C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
- import { useEffect, useState } from "@assistant-ui/tap/react-shim";
3
+ import { useLayoutEffect, useState } from "@assistant-ui/tap/react-shim";
4
4
  import { useAuiState } from "@assistant-ui/store";
5
5
  //#region src/hooks/useToolCallElapsed.ts
6
6
  /**
@@ -10,7 +10,9 @@ import { useAuiState } from "@assistant-ui/store";
10
10
  * Reads `part.timing`. Returns `undefined` when the part is not a tool call,
11
11
  * carries no timing, ended without a recorded completion (the duration is
12
12
  * unknown), or when no message part scope is available (so kit components
13
- * stay renderable standalone, e.g. in docs previews).
13
+ * stay renderable standalone, e.g. in docs previews). A running call also
14
+ * returns `undefined` until the component mounts, so a server render never
15
+ * reads the clock.
14
16
  *
15
17
  * @example
16
18
  * ```tsx
@@ -26,7 +28,7 @@ const useToolCallElapsed = () => {
26
28
  const timing = useAuiState(_temp);
27
29
  const partRunning = useAuiState(_temp2);
28
30
  const running = timing !== void 0 && timing.completedAt === void 0 && partRunning;
29
- const [now, setNow] = useState(_temp3);
31
+ const [now, setNow] = useState(void 0);
30
32
  let t0;
31
33
  let t1;
32
34
  if ($[0] !== running) {
@@ -44,10 +46,10 @@ const useToolCallElapsed = () => {
44
46
  t0 = $[1];
45
47
  t1 = $[2];
46
48
  }
47
- useEffect(t0, t1);
49
+ useLayoutEffect(t0, t1);
48
50
  if (timing === void 0) return;
49
51
  if (timing.completedAt !== void 0) return Math.max(0, timing.completedAt - timing.startedAt);
50
- if (!running) return;
52
+ if (!running || now === void 0) return;
51
53
  return Math.max(0, now - timing.startedAt);
52
54
  };
53
55
  function _temp(s) {
@@ -58,9 +60,6 @@ function _temp2(s_0) {
58
60
  const part_0 = s_0.optional.part;
59
61
  return part_0?.type === "tool-call" && part_0.status.type === "running";
60
62
  }
61
- function _temp3() {
62
- return Date.now();
63
- }
64
63
  //#endregion
65
64
  export { useToolCallElapsed };
66
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"useToolCallElapsed.js","names":["c","_c","useEffect","useState","useAuiState","useToolCallElapsed","$","timing","_temp","partRunning","_temp2","running","undefined","completedAt","now","setNow","_temp3","t0","t1","Date","id","setInterval","clearInterval","Math","max","startedAt","s","part","optional","type","s_0","part_0","status","_c"],"sources":["../../src/hooks/useToolCallElapsed.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\n/**\n * Hook that returns the elapsed wall-clock time of the current tool call in\n * milliseconds, ticking once per second while the call runs.\n *\n * Reads `part.timing`. Returns `undefined` when the part is not a tool call,\n * carries no timing, ended without a recorded completion (the duration is\n * unknown), or when no message part scope is available (so kit components\n * stay renderable standalone, e.g. in docs previews).\n *\n * @example\n * ```tsx\n * function ToolDuration() {\n * const elapsedMs = useToolCallElapsed();\n * if (elapsedMs === undefined) return null;\n * return <span>{(elapsedMs / 1000).toFixed(1)}s</span>;\n * }\n * ```\n */\nexport const useToolCallElapsed = (): number | undefined => {\n const timing = useAuiState((s) => {\n const part = s.optional.part;\n return part?.type === \"tool-call\" ? part.timing : undefined;\n });\n const partRunning = useAuiState((s) => {\n const part = s.optional.part;\n return part?.type === \"tool-call\" && part.status.type === \"running\";\n });\n const running =\n timing !== undefined && timing.completedAt === undefined && partRunning;\n const [now, setNow] = useState(() => Date.now());\n\n useEffect(() => {\n if (!running) return undefined;\n // The clock is an external source; this catches the elapsed value up before\n // the interval takes over.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setNow(Date.now());\n const id = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(id);\n }, [running]);\n\n if (timing === undefined) return undefined;\n if (timing.completedAt !== undefined)\n return Math.max(0, timing.completedAt - timing.startedAt);\n if (!running) return undefined;\n return Math.max(0, now - timing.startedAt);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAaK,2BAAqB;CAAA,MAAAC,IAAAL,EAAA,CAAA;CAChC,MAAAM,SAAeH,YAAYI,KAG1B;CACD,MAAAC,cAAoBL,YAAYM,MAG/B;CACD,MAAAC,UACEJ,WAAWK,KAAAA,KAAaL,OAAMM,gBAAiBD,KAAAA,KAA/CH;CACF,MAAA,CAAAK,KAAAC,UAAsBZ,SAASa,MAAgB;CAAE,IAAAC;CAAA,IAAAC;CAAA,IAAAZ,EAAA,OAAAK,SAAA;EAEvCM,WAAA;GACR,IAAI,CAACN,SAAO;GAIZI,OAAOI,KAAIL,IAAK,CAAC;GACjB,MAAAM,KAAWC,kBAAkBN,OAAOI,KAAIL,IAAK,CAAC,GAAG,GAAI;GAAE,aAC1CQ,cAAcF,EAAE;EAAC;EAC7BF,KAAA,CAACP,OAAO;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAW;EAAAX,EAAA,KAAAY;CAAA,OAAA;EAAAD,KAAAX,EAAA;EAAAY,KAAAZ,EAAA;CAAA;CARZJ,UAAUe,IAQPC,EAAS;CAEZ,IAAIX,WAAWK,KAAAA,GAAS;CACxB,IAAIL,OAAMM,gBAAiBD,KAAAA,GAAS,OAC3BW,KAAIC,IAAK,GAAGjB,OAAMM,cAAeN,OAAMkB,SAAU;CAC1D,IAAI,CAACd,SAAO;CAAmB,OACxBY,KAAIC,IAAK,GAAGV,MAAMP,OAAMkB,SAAU;AAAC;AA3BV,SAAAjB,MAAAkB,GAAA;CAE9B,MAAAC,OAAaD,EAACE,SAASD;CAAM,OACtBA,MAAIE,SAAW,cAAcF,KAAIpB,SAAjCK,KAAAA;AAAoD;AAH7B,SAAAF,OAAAoB,KAAA;CAM9B,MAAAC,SAAaL,IAACE,SAASD;CAAM,OACtBA,QAAIE,SAAW,eAAeF,OAAIK,OAAOH,SAAU;AAAS;AAPrC,SAAAb,SAAA;CAAA,OAWKG,KAAIL,IAAK;AAAC"}
1
+ {"version":3,"file":"useToolCallElapsed.js","names":["c","_c","useLayoutEffect","useState","useAuiState","useToolCallElapsed","$","timing","_temp","partRunning","_temp2","running","undefined","completedAt","now","setNow","t0","t1","Date","id","setInterval","clearInterval","Math","max","startedAt","s","part","optional","type","s_0","part_0","status","_c"],"sources":["../../src/hooks/useToolCallElapsed.ts"],"sourcesContent":["\"use client\";\n\nimport { useLayoutEffect, useState } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\n/**\n * Hook that returns the elapsed wall-clock time of the current tool call in\n * milliseconds, ticking once per second while the call runs.\n *\n * Reads `part.timing`. Returns `undefined` when the part is not a tool call,\n * carries no timing, ended without a recorded completion (the duration is\n * unknown), or when no message part scope is available (so kit components\n * stay renderable standalone, e.g. in docs previews). A running call also\n * returns `undefined` until the component mounts, so a server render never\n * reads the clock.\n *\n * @example\n * ```tsx\n * function ToolDuration() {\n * const elapsedMs = useToolCallElapsed();\n * if (elapsedMs === undefined) return null;\n * return <span>{(elapsedMs / 1000).toFixed(1)}s</span>;\n * }\n * ```\n */\nexport const useToolCallElapsed = (): number | undefined => {\n const timing = useAuiState((s) => {\n const part = s.optional.part;\n return part?.type === \"tool-call\" ? part.timing : undefined;\n });\n const partRunning = useAuiState((s) => {\n const part = s.optional.part;\n return part?.type === \"tool-call\" && part.status.type === \"running\";\n });\n const running =\n timing !== undefined && timing.completedAt === undefined && partRunning;\n const [now, setNow] = useState<number | undefined>(undefined);\n\n useLayoutEffect(() => {\n if (!running) return undefined;\n // The clock is read only after mount so a prerender never reads it; the\n // layout effect still catches the elapsed value up before the first paint.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setNow(Date.now());\n const id = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(id);\n }, [running]);\n\n if (timing === undefined) return undefined;\n if (timing.completedAt !== undefined)\n return Math.max(0, timing.completedAt - timing.startedAt);\n if (!running || now === undefined) return undefined;\n return Math.max(0, now - timing.startedAt);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAaK,2BAAqB;CAAA,MAAAC,IAAAL,EAAA,CAAA;CAChC,MAAAM,SAAeH,YAAYI,KAG1B;CACD,MAAAC,cAAoBL,YAAYM,MAG/B;CACD,MAAAC,UACEJ,WAAWK,KAAAA,KAAaL,OAAMM,gBAAiBD,KAAAA,KAA/CH;CACF,MAAA,CAAAK,KAAAC,UAAsBZ,SAA6BS,KAAAA,CAAS;CAAE,IAAAI;CAAA,IAAAC;CAAA,IAAAX,EAAA,OAAAK,SAAA;EAE9CK,WAAA;GACd,IAAI,CAACL,SAAO;GAIZI,OAAOG,KAAIJ,IAAK,CAAC;GACjB,MAAAK,KAAWC,kBAAkBL,OAAOG,KAAIJ,IAAK,CAAC,GAAG,GAAI;GAAE,aAC1CO,cAAcF,EAAE;EAAC;EAC7BF,KAAA,CAACN,OAAO;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAU;EAAAV,EAAA,KAAAW;CAAA,OAAA;EAAAD,KAAAV,EAAA;EAAAW,KAAAX,EAAA;CAAA;CARZJ,gBAAgBc,IAQbC,EAAS;CAEZ,IAAIV,WAAWK,KAAAA,GAAS;CACxB,IAAIL,OAAMM,gBAAiBD,KAAAA,GAAS,OAC3BU,KAAIC,IAAK,GAAGhB,OAAMM,cAAeN,OAAMiB,SAAU;CAC1D,IAAI,CAACb,WAAWG,QAAQF,KAAAA,GAAS;CAAmB,OAC7CU,KAAIC,IAAK,GAAGT,MAAMP,OAAMiB,SAAU;AAAC;AA3BV,SAAAhB,MAAAiB,GAAA;CAE9B,MAAAC,OAAaD,EAACE,SAASD;CAAM,OACtBA,MAAIE,SAAW,cAAcF,KAAInB,SAAjCK,KAAAA;AAAoD;AAH7B,SAAAF,OAAAmB,KAAA;CAM9B,MAAAC,SAAaL,IAACE,SAASD;CAAM,OACtBA,QAAIE,SAAW,eAAeF,OAAIK,OAAOH,SAAU;AAAS"}
package/dist/index.d.ts CHANGED
@@ -76,6 +76,7 @@ export * as ThreadListItemPrimitive from "./primitives/threadListItem.js";
76
76
  export * as ThreadListItemMorePrimitive from "./primitives/threadListItemMore.js";
77
77
  export * as SelectionToolbarPrimitive from "./primitives/selectionToolbar.js";
78
78
  export { groupPartByType, type GroupByContext } from "@assistant-ui/core/react";
79
+ export { createThreadRowsSelector, type ThreadRow, type ThreadRowsOptions, } from "@assistant-ui/core/react";
79
80
  export { unstable_useThreadMessageIds } from "@assistant-ui/core/react";
80
81
  export { useMessagePartText } from "./primitives/messagePart/useMessagePartText.js";
81
82
  export { useMessagePartReasoning } from "./primitives/messagePart/useMessagePartReasoning.js";
@@ -90,7 +91,7 @@ export { useMessageTiming } from "./hooks/useMessageTiming.js";
90
91
  export { useToolCallElapsed } from "./hooks/useToolCallElapsed.js";
91
92
  export { unstable_useMessageStallDetection, type Unstable_MessageStallDetection, type Unstable_MessageStallDetectionOptions, } from "./unstable/useMessageStallDetection.js";
92
93
  export { useSmooth, type SmoothOptions } from "./utils/smooth/useSmooth.js";
93
- export type { Attachment, PendingAttachment, CompleteAttachment, AttachmentStatus, AppendMessage, TextMessagePart, ReasoningMessagePart, PartProviderMetadata, SourceProviderMetadata, SourceMessagePart, ImageMessagePart, FileMessagePart, DataMessagePart, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, Unstable_AudioMessagePart, RespondToToolApprovalOptions, ToolApprovalDisplay, ToolApprovalOption, ToolApprovalOptionKind, ToolApprovalResponse, ToolCallMessagePart, ToolCallTiming, ToolModelContentPart, MessageStatus, MessagePartStatus, MessagePartStreamStatus, ToolCallMessagePartStatus, MessageTiming, MessageModality, ThreadUserMessagePart, ThreadAssistantMessagePart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, Unsubscribe, QuoteInfo, CreateAttachment, } from "@assistant-ui/core";
94
+ export type { Attachment, PendingAttachment, CompleteAttachment, AttachmentStatus, AppendMessage, TextMessagePart, ReasoningMessagePart, PartProviderMetadata, SourceProviderMetadata, SourceMessagePart, ImageMessagePart, FileMessagePart, DataMessagePart, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, Unstable_AudioMessagePart, RespondToToolApprovalOptions, ToolApprovalDisplay, ToolApprovalOption, ToolApprovalOptionKind, ToolApprovalAnswer, ToolApprovalQuestion, ToolApprovalQuestionOption, ToolApprovalResponse, ToolCallMessagePart, MessagePartTiming, ToolCallTiming, ToolModelContentPart, MessageStatus, MessagePartStatus, MessagePartStreamStatus, ToolCallMessagePartStatus, MessageTiming, MessageModality, ThreadUserMessagePart, ThreadAssistantMessagePart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, Unsubscribe, QuoteInfo, CreateAttachment, } from "@assistant-ui/core";
94
95
  export type { EmptyMessagePartComponent, EmptyMessagePartProps, TextMessagePartComponent, TextMessagePartProps, ReasoningMessagePartComponent, ReasoningMessagePartProps, SourceMessagePartComponent, SourceMessagePartProps, ImageMessagePartComponent, ImageMessagePartProps, FileMessagePartComponent, FileMessagePartProps, Unstable_AudioMessagePartComponent, Unstable_AudioMessagePartProps, DataMessagePartComponent, DataMessagePartProps, ToolCallMessagePartComponent, ToolCallMessagePartProps, ReasoningGroupProps, ReasoningGroupComponent, QuoteMessagePartComponent, QuoteMessagePartProps, GenerativeUIComponentRegistry, GenerativeUIMessagePartComponent, GenerativeUIMessagePartProps, GenerativeUIRenderProps, EnrichedPartState, PartState, } from "@assistant-ui/core/react";
95
96
  export { GenerativeUIRender, GenerativeUIRenderError, } from "@assistant-ui/core/react";
96
97
  export type { ThreadListItemStatus } from "@assistant-ui/core";
@@ -106,9 +107,14 @@ export { unstable_useMentionAdapter, type Unstable_IconComponent, type Unstable_
106
107
  export { unstable_useSlashCommandAdapter, type Unstable_SlashCommand, type Unstable_SlashCommandAction, type Unstable_UseSlashCommandAdapterOptions, } from "./unstable/useSlashCommandAdapter.js";
107
108
  export { unstable_useLiveCompletionAdapter, type Unstable_UseLiveCompletionAdapterOptions, } from "./unstable/useLiveCompletionAdapter.js";
108
109
  export type { ToolExecutionStatus } from "./internal.js";
109
- export { useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, type RegisteredTrigger as Unstable_RegisteredTrigger, type TriggerMatch as Unstable_TriggerMatch, type TriggerMatcher as Unstable_TriggerMatcher, type TriggerBehavior as Unstable_TriggerBehavior, } from "./primitives/composer/trigger/index.js";
110
- export type { Unstable_DirectiveFormatter, Unstable_DirectiveSegment, Unstable_TriggerItem, } from "@assistant-ui/core";
111
- export { unstable_defaultDirectiveFormatter } from "@assistant-ui/core";
110
+ export { useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, type RegisteredTrigger as Unstable_RegisteredTrigger, type TriggerMatch, type TriggerMatcher, type TriggerBehavior as Unstable_TriggerBehavior, } from "./primitives/composer/trigger/index.js";
111
+ import type { TriggerMatch, TriggerMatcher } from "./primitives/composer/trigger/index.js";
112
+ /** @deprecated Use `TriggerMatch` instead. */
113
+ export type Unstable_TriggerMatch = TriggerMatch;
114
+ /** @deprecated Use `TriggerMatcher` instead. */
115
+ export type Unstable_TriggerMatcher = TriggerMatcher;
116
+ export type { DirectiveFormatter, DirectiveSegment, TriggerAdapter, TriggerCategory, TriggerItem, Unstable_DirectiveFormatter, Unstable_DirectiveSegment, Unstable_TriggerItem, } from "@assistant-ui/core";
117
+ export { defaultDirectiveFormatter, unstable_defaultDirectiveFormatter, } from "@assistant-ui/core";
112
118
  export { unstable_useComposerInputHistory, type Unstable_ComposerInputHistory, } from "./unstable/useComposerInputHistory.js";
113
119
  export { unstable_useComposerInput, unstable_useTriggerPopoverAriaProps, type Unstable_UseComposerInputOptions, type Unstable_ComposerInput, type Unstable_TriggerPopoverAriaProps, } from "./unstable/useComposerInput.js";
114
120
  export type { Assistant } from "./augmentations.js";
@@ -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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"}
package/dist/index.js CHANGED
@@ -64,9 +64,9 @@ import { McpAppRenderer } from "./mcp-apps/McpAppRenderer.js";
64
64
  import { McpAppsRemoteHost } from "./mcp-apps/McpAppsRemoteHost.js";
65
65
  import { defaultWebMcpFilter } from "./unstable/webmcp/convertTools.js";
66
66
  import { unstable_useWebMcpProvider } from "./unstable/webmcp/useWebMcpProvider.js";
67
- import { ChainOfThoughtPartByIndexProvider, DataRenderers, GenerativeUIRender, GenerativeUIRenderError, Interactables, RuntimeAdapterProvider, Tools, createSimpleTitleAdapter, defineMcpToolkit, defineToolkit, externalTool, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, providerTool, stubTool, unstable_Interactables, unstable_interactableTool, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useThreadMessageIds, useAssistantContext, useAssistantDataUI, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAuiToolOverrides, useCloudThreadListRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useRuntimeAdapters, useToolArgsStatus, useVoiceControls, useVoiceState, useVoiceVolume } from "@assistant-ui/core/react";
67
+ import { ChainOfThoughtPartByIndexProvider, DataRenderers, GenerativeUIRender, GenerativeUIRenderError, Interactables, RuntimeAdapterProvider, Tools, createSimpleTitleAdapter, createThreadRowsSelector, defineMcpToolkit, defineToolkit, externalTool, groupPartByType, hitl, hitlTool, humanTool, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, providerTool, stubTool, unstable_Interactables, unstable_interactableTool, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useThreadMessageIds, useAssistantContext, useAssistantDataUI, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAuiToolOverrides, useCloudThreadListRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useRuntimeAdapters, useToolArgsStatus, useVoiceControls, useVoiceState, useVoiceVolume } from "@assistant-ui/core/react";
68
68
  import { AuiConfig, AuiIf, AuiProvider, useAui, useAuiEvent, useAuiState } from "@assistant-ui/store";
69
69
  import { ChainOfThoughtClient, ExternalThread, InMemoryThreadList, ModelContext as ModelContextClient, RemoteThreadList, SingleThreadList, Suggestions } from "@assistant-ui/core/store";
70
- import { AssistantFrameHost, AssistantFrameProvider, CompositeAttachmentAdapter, ExportedMessageRepository, FRAME_MESSAGE_CHANNEL, InMemoryThreadListAdapter, MessageNotSentError, ModelContextRegistry, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createSuggestionAdapter, createVoiceSession, fromThreadMessageLike, generateId, getExternalStoreMessages, isMessageNotSentError, mergeModelContexts, pickExternalStoreSharedOptions, tool, toolApprovalAcceptsText, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions } from "@assistant-ui/core";
70
+ import { AssistantFrameHost, AssistantFrameProvider, CompositeAttachmentAdapter, ExportedMessageRepository, FRAME_MESSAGE_CHANNEL, InMemoryThreadListAdapter, MessageNotSentError, ModelContextRegistry, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createSuggestionAdapter, createVoiceSession, defaultDirectiveFormatter, fromThreadMessageLike, generateId, getExternalStoreMessages, isMessageNotSentError, mergeModelContexts, pickExternalStoreSharedOptions, tool, toolApprovalAcceptsText, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions } from "@assistant-ui/core";
71
71
  import { AssistantCloud, readAnonymousRefreshToken } from "assistant-cloud";
72
- export { actionBarMore_exports as ActionBarMorePrimitive, actionBar_exports as ActionBarPrimitive, AssistantCloud, AssistantFrameHost, AssistantFrameProvider, assistantModal_exports as AssistantModalPrimitive, AssistantRuntimeProvider, attachment_exports as AttachmentPrimitive, AuiConfig, AuiIf, AuiProvider, branchPicker_exports as BranchPickerPrimitive, ChainOfThoughtByIndicesProvider, ChainOfThoughtClient, ChainOfThoughtPartByIndexProvider, chainOfThought_exports as ChainOfThoughtPrimitive, CloudFileAttachmentAdapter, CloudRendererHost, ComposerAttachmentByIndexProvider, composer_exports as ComposerPrimitive, CompositeAttachmentAdapter, DataRenderers, DevToolsHooks, DevToolsProviderApi, error_exports as ErrorPrimitive, ExportedMessageRepository, ExternalThread, FRAME_MESSAGE_CHANNEL, GenerativeUIRender, GenerativeUIRenderError, internal_exports as INTERNAL, InMemoryThreadList, InMemoryThreadListAdapter, Interactables, McpAppRenderer, McpAppsRemoteHost, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageNotSentError, messagePart_exports as MessagePartPrimitive, message_exports as MessagePrimitive, MessageProvider, ModelContextClient, ModelContextRegistry, PartByIndexProvider, queueItem_exports as QueueItemPrimitive, ReadonlyThreadProvider, RemoteThreadList, RuntimeAdapterProvider, selectionToolbar_exports as SelectionToolbarPrimitive, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SingleThreadList, SuggestionByIndexProvider, suggestion_exports as SuggestionPrimitive, Suggestions, TextMessagePartProvider, ThreadListItemByIndexProvider, threadListItemMore_exports as ThreadListItemMorePrimitive, threadListItem_exports as ThreadListItemPrimitive, ThreadListItemRuntimeProvider, threadList_exports as ThreadListPrimitive, thread_exports as ThreadPrimitive, Tools, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createSimpleTitleAdapter, createSuggestionAdapter, createVoiceSession, defineMcpToolkit, defineToolkit, externalTool, fromThreadMessageLike, generateId, getExternalStoreMessages, getMcpAppFromToolPart, groupPartByType, hitl, hitlTool, humanTool, isMessageNotSentError, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, makeAssistantVisible, mergeModelContexts, pickExternalStoreSharedOptions, providerTool, readAnonymousRefreshToken, stubTool, tool, toolApprovalAcceptsText, unstable_Interactables, convertExternalMessages as unstable_convertExternalMessages, createExternalMessageConversionCache as unstable_createExternalMessageConversionCache, createMessageConverter as unstable_createMessageConverter, unstable_defaultDirectiveFormatter, defaultWebMcpFilter as unstable_defaultWebMcpFilter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions, unstable_interactableTool, unstable_useComposerInput, unstable_useComposerInputHistory, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useLiveCompletionAdapter, unstable_useMentionAdapter, unstable_useMessageStallDetection, unstable_useSlashCommandAdapter, unstable_useThreadMessageIds, unstable_useTriggerPopoverAriaProps, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, unstable_useWebMcpProvider, useAssistantContext, useAssistantDataUI, useAssistantFrameHost, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAui, useAuiEvent, useAuiState, useAuiToolOverrides, useCloudThreadListAdapter, useCloudThreadListRuntime, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessagePartData, useMessagePartFile, useMessagePartImage, useMessagePartReasoning, useMessagePartSource, useMessagePartText, useMessageQuote, useMessageTiming, useRemoteThreadListRuntime, useRuntimeAdapters, useScrollLock, useSmooth, useThreadViewport, useThreadViewportAutoScroll, useThreadViewportStore, useToolArgsStatus, useToolCallElapsed, useVoiceControls, useVoiceState, useVoiceVolume };
72
+ export { actionBarMore_exports as ActionBarMorePrimitive, actionBar_exports as ActionBarPrimitive, AssistantCloud, AssistantFrameHost, AssistantFrameProvider, assistantModal_exports as AssistantModalPrimitive, AssistantRuntimeProvider, attachment_exports as AttachmentPrimitive, AuiConfig, AuiIf, AuiProvider, branchPicker_exports as BranchPickerPrimitive, ChainOfThoughtByIndicesProvider, ChainOfThoughtClient, ChainOfThoughtPartByIndexProvider, chainOfThought_exports as ChainOfThoughtPrimitive, CloudFileAttachmentAdapter, CloudRendererHost, ComposerAttachmentByIndexProvider, composer_exports as ComposerPrimitive, CompositeAttachmentAdapter, DataRenderers, DevToolsHooks, DevToolsProviderApi, error_exports as ErrorPrimitive, ExportedMessageRepository, ExternalThread, FRAME_MESSAGE_CHANNEL, GenerativeUIRender, GenerativeUIRenderError, internal_exports as INTERNAL, InMemoryThreadList, InMemoryThreadListAdapter, Interactables, McpAppRenderer, McpAppsRemoteHost, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageNotSentError, messagePart_exports as MessagePartPrimitive, message_exports as MessagePrimitive, MessageProvider, ModelContextClient, ModelContextRegistry, PartByIndexProvider, queueItem_exports as QueueItemPrimitive, ReadonlyThreadProvider, RemoteThreadList, RuntimeAdapterProvider, selectionToolbar_exports as SelectionToolbarPrimitive, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SingleThreadList, SuggestionByIndexProvider, suggestion_exports as SuggestionPrimitive, Suggestions, TextMessagePartProvider, ThreadListItemByIndexProvider, threadListItemMore_exports as ThreadListItemMorePrimitive, threadListItem_exports as ThreadListItemPrimitive, ThreadListItemRuntimeProvider, threadList_exports as ThreadListPrimitive, thread_exports as ThreadPrimitive, Tools, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createSimpleTitleAdapter, createSuggestionAdapter, createThreadRowsSelector, createVoiceSession, defaultDirectiveFormatter, defineMcpToolkit, defineToolkit, externalTool, fromThreadMessageLike, generateId, getExternalStoreMessages, getMcpAppFromToolPart, groupPartByType, hitl, hitlTool, humanTool, isMessageNotSentError, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, makeAssistantVisible, mergeModelContexts, pickExternalStoreSharedOptions, providerTool, readAnonymousRefreshToken, stubTool, tool, toolApprovalAcceptsText, unstable_Interactables, convertExternalMessages as unstable_convertExternalMessages, createExternalMessageConversionCache as unstable_createExternalMessageConversionCache, createMessageConverter as unstable_createMessageConverter, unstable_defaultDirectiveFormatter, defaultWebMcpFilter as unstable_defaultWebMcpFilter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions, unstable_interactableTool, unstable_useComposerInput, unstable_useComposerInputHistory, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useLiveCompletionAdapter, unstable_useMentionAdapter, unstable_useMessageStallDetection, unstable_useSlashCommandAdapter, unstable_useThreadMessageIds, unstable_useTriggerPopoverAriaProps, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, unstable_useWebMcpProvider, useAssistantContext, useAssistantDataUI, useAssistantFrameHost, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAui, useAuiEvent, useAuiState, useAuiToolOverrides, useCloudThreadListAdapter, useCloudThreadListRuntime, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessagePartData, useMessagePartFile, useMessagePartImage, useMessagePartReasoning, useMessagePartSource, useMessagePartText, useMessageQuote, useMessageTiming, useRemoteThreadListRuntime, useRuntimeAdapters, useScrollLock, useSmooth, useThreadViewport, useThreadViewportAutoScroll, useThreadViewportStore, useToolArgsStatus, useToolCallElapsed, useVoiceControls, useVoiceState, useVoiceVolume };
@@ -2,6 +2,7 @@ import { type ComponentType } from "react";
2
2
  export declare const makeAssistantVisible: <T extends ComponentType<any>>(Component: T, config?: {
3
3
  clickable?: boolean | undefined;
4
4
  editable?: boolean | undefined;
5
+ settleDelayMs?: number | undefined;
5
6
  }) => T;
6
7
  export default makeAssistantVisible;
7
8
  //# sourceMappingURL=makeAssistantVisible.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"makeAssistantVisible.d.ts","sourceRoot":"","sources":["../../src/model-context/makeAssistantVisible.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,aAAa,EAMnB,MAAM,OAAO,CAAC;AA+Ef,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC/D,WAAW,CAAC,EACZ,SAAS;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,KA6CrC,CACxC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"makeAssistantVisible.d.ts","sourceRoot":"","sources":["../../src/model-context/makeAssistantVisible.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,aAAa,EAMnB,MAAM,OAAO,CAAC;AAgGf,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC/D,WAAW,CAAC,EACZ,SAAS;IACP,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,KA4DsC,CACxC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -6,6 +6,17 @@ import { jsx } from "react/jsx-runtime";
6
6
  import { tool } from "@assistant-ui/core";
7
7
  import { useComposedRefs } from "radix-ui/internal";
8
8
  //#region src/model-context/makeAssistantVisible.tsx
9
+ const DEFAULT_ACTION_SETTLE_DELAY_MS = 2e3;
10
+ const MAX_ACTION_SETTLE_DELAY_MS = 2147483647;
11
+ const waitForSettle = async (settleDelayMs) => {
12
+ const delay = Number.isFinite(settleDelayMs) && settleDelayMs >= 0 && settleDelayMs <= MAX_ACTION_SETTLE_DELAY_MS ? settleDelayMs : DEFAULT_ACTION_SETTLE_DELAY_MS;
13
+ if (delay === 0) return;
14
+ await new Promise((resolve) => setTimeout(resolve, delay));
15
+ };
16
+ const readActionSettleDelay = (element) => {
17
+ const value = element.dataset.actionSettleDelay;
18
+ return value === void 0 || value.trim() === "" ? DEFAULT_ACTION_SETTLE_DELAY_MS : Number(value);
19
+ };
9
20
  const click = tool({
10
21
  parameters: {
11
22
  type: "object",
@@ -17,7 +28,7 @@ const click = tool({
17
28
  const el = document.querySelector(`[data-click-id='${escapedClickId}']`);
18
29
  if (el instanceof HTMLElement) {
19
30
  el.click();
20
- await new Promise((resolve) => setTimeout(resolve, 2e3));
31
+ await waitForSettle(readActionSettleDelay(el));
21
32
  return {};
22
33
  } else return "Element not found";
23
34
  }
@@ -44,15 +55,17 @@ const edit = tool({
44
55
  setNativeValue(el, value);
45
56
  el.dispatchEvent(new Event("input", { bubbles: true }));
46
57
  el.dispatchEvent(new Event("change", { bubbles: true }));
47
- await new Promise((resolve) => setTimeout(resolve, 2e3));
58
+ await waitForSettle(readActionSettleDelay(el));
48
59
  return {};
49
60
  } else return "Element not found";
50
61
  }
51
62
  });
52
63
  const ReadableContext = createContext(false);
53
64
  const makeAssistantVisible = (Component, config) => {
65
+ const settleDelayMs = config?.settleDelayMs ?? DEFAULT_ACTION_SETTLE_DELAY_MS;
66
+ if (!Number.isFinite(settleDelayMs) || settleDelayMs < 0 || settleDelayMs > MAX_ACTION_SETTLE_DELAY_MS) throw new RangeError(`settleDelayMs must be between 0 and ${MAX_ACTION_SETTLE_DELAY_MS}`);
54
67
  const ReadableComponent = forwardRef((props, outerRef) => {
55
- const $ = c(15);
68
+ const $ = c(16);
56
69
  const isNestedReadable = useContext(ReadableContext);
57
70
  const clickId = useId();
58
71
  const componentRef = useRef(null);
@@ -104,23 +117,29 @@ const makeAssistantVisible = (Component, config) => {
104
117
  t5 = $[9];
105
118
  }
106
119
  let t6;
107
- if ($[10] !== ref || $[11] !== t3 || $[12] !== t4 || $[13] !== t5) {
108
- t6 = /* @__PURE__ */ jsx(ReadableContext.Provider, {
120
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
121
+ t6 = config?.settleDelayMs !== void 0 && (config.clickable || config.editable) ? { "data-action-settle-delay": settleDelayMs } : {};
122
+ $[10] = t6;
123
+ } else t6 = $[10];
124
+ let t7;
125
+ if ($[11] !== ref || $[12] !== t3 || $[13] !== t4 || $[14] !== t5) {
126
+ t7 = /* @__PURE__ */ jsx(ReadableContext.Provider, {
109
127
  value: true,
110
128
  children: /* @__PURE__ */ jsx(Component, {
111
129
  ...t3,
112
130
  ...t4,
113
131
  ...t5,
132
+ ...t6,
114
133
  ref
115
134
  })
116
135
  });
117
- $[10] = ref;
118
- $[11] = t3;
119
- $[12] = t4;
120
- $[13] = t5;
121
- $[14] = t6;
122
- } else t6 = $[14];
123
- return t6;
136
+ $[11] = ref;
137
+ $[12] = t3;
138
+ $[13] = t4;
139
+ $[14] = t5;
140
+ $[15] = t7;
141
+ } else t7 = $[15];
142
+ return t7;
124
143
  });
125
144
  ReadableComponent.displayName = Component.displayName;
126
145
  return ReadableComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"makeAssistantVisible.js","names":["c","_c","useEffect","useRef","forwardRef","ComponentType","ForwardedRef","PropsWithoutRef","useId","createContext","useContext","useAui","useComposedRefs","tool","click","parameters","type","properties","clickId","required","execute","escapedClickId","CSS","escape","el","document","querySelector","HTMLElement","Promise","resolve","setTimeout","setNativeValue","element","HTMLInputElement","HTMLTextAreaElement","value","prototype","setter","Object","getOwnPropertyDescriptor","set","call","edit","editId","escapedEditId","dispatchEvent","Event","bubbles","ReadableContext","makeAssistantVisible","Component","T","config","clickable","editable","ReadableComponent","props","outerRef","$","isNestedReadable","componentRef","aui","t0","Symbol","for","t1","modelContext","register","getModelContext","tools","system","current","outerHTML","undefined","t2","ref","t3","t4","t5","t6","displayName","_c"],"sources":["../../src/model-context/makeAssistantVisible.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useEffect,\n useRef,\n forwardRef,\n type ComponentType,\n type ForwardedRef,\n type PropsWithoutRef,\n useId,\n createContext,\n useContext,\n} from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { tool } from \"@assistant-ui/core\";\n\nconst click = tool({\n parameters: {\n type: \"object\",\n properties: {\n clickId: {\n type: \"string\",\n },\n },\n required: [\"clickId\"],\n },\n execute: async ({ clickId }: { clickId: string }) => {\n const escapedClickId = CSS.escape(clickId);\n const el = document.querySelector(`[data-click-id='${escapedClickId}']`);\n if (el instanceof HTMLElement) {\n el.click();\n\n // todo make adjustable\n await new Promise((resolve) => setTimeout(resolve, 2000));\n return {};\n } else {\n return \"Element not found\";\n }\n },\n});\n\nconst setNativeValue = (\n element: HTMLInputElement | HTMLTextAreaElement,\n value: string,\n) => {\n const prototype =\n element instanceof HTMLInputElement\n ? HTMLInputElement.prototype\n : HTMLTextAreaElement.prototype;\n const setter = Object.getOwnPropertyDescriptor(prototype, \"value\")?.set;\n\n if (setter) {\n setter.call(element, value);\n } else {\n element.value = value;\n }\n};\n\nconst edit = tool({\n parameters: {\n type: \"object\",\n properties: {\n editId: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n required: [\"editId\", \"value\"],\n },\n execute: async ({ editId, value }: { editId: string; value: string }) => {\n const escapedEditId = CSS.escape(editId);\n const el = document.querySelector(`[data-edit-id='${escapedEditId}']`);\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n setNativeValue(el, value);\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n el.dispatchEvent(new Event(\"change\", { bubbles: true }));\n\n // todo make adjustable\n await new Promise((resolve) => setTimeout(resolve, 2000));\n return {};\n } else {\n return \"Element not found\";\n }\n },\n});\n\nconst ReadableContext = createContext<boolean>(false);\n\nexport const makeAssistantVisible = <T extends ComponentType<any>>(\n Component: T,\n config?: { clickable?: boolean | undefined; editable?: boolean | undefined },\n) => {\n const ReadableComponent = forwardRef(\n (props: PropsWithoutRef<T>, outerRef: ForwardedRef<any>) => {\n const isNestedReadable = useContext(ReadableContext);\n\n const clickId = useId();\n const componentRef = useRef<HTMLElement>(null);\n\n const aui = useAui();\n\n const { clickable, editable } = config ?? {};\n useEffect(() => {\n return aui.modelContext.register({\n getModelContext: () => {\n return {\n tools: {\n ...(clickable ? { click } : {}),\n ...(editable ? { edit } : {}),\n },\n system: !isNestedReadable // only pass content if this readable isn't nested in another readable\n ? componentRef.current?.outerHTML\n : undefined,\n };\n },\n });\n }, [isNestedReadable, aui, clickable, editable]);\n\n const ref = useComposedRefs(componentRef, outerRef);\n\n return (\n <ReadableContext.Provider value={true}>\n <Component\n {...(props as any)}\n {...(config?.clickable ? { \"data-click-id\": clickId } : {})}\n {...(config?.editable ? { \"data-edit-id\": clickId } : {})}\n ref={ref}\n />\n </ReadableContext.Provider>\n );\n },\n );\n\n ReadableComponent.displayName = Component.displayName;\n\n return ReadableComponent as unknown as T;\n};\n\nexport default makeAssistantVisible;\n"],"mappings":"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"}
1
+ {"version":3,"file":"makeAssistantVisible.js","names":["c","_c","useEffect","useRef","forwardRef","ComponentType","ForwardedRef","PropsWithoutRef","useId","createContext","useContext","useAui","useComposedRefs","tool","DEFAULT_ACTION_SETTLE_DELAY_MS","MAX_ACTION_SETTLE_DELAY_MS","waitForSettle","settleDelayMs","delay","Number","isFinite","Promise","resolve","setTimeout","readActionSettleDelay","element","HTMLElement","value","dataset","actionSettleDelay","undefined","trim","click","parameters","type","properties","clickId","required","execute","escapedClickId","CSS","escape","el","document","querySelector","setNativeValue","HTMLInputElement","HTMLTextAreaElement","prototype","setter","Object","getOwnPropertyDescriptor","set","call","edit","editId","escapedEditId","dispatchEvent","Event","bubbles","ReadableContext","makeAssistantVisible","Component","T","config","clickable","editable","RangeError","ReadableComponent","props","outerRef","$","isNestedReadable","componentRef","aui","t0","Symbol","for","t1","modelContext","register","getModelContext","tools","system","current","outerHTML","t2","ref","t3","t4","t5","t6","t7","displayName","_c"],"sources":["../../src/model-context/makeAssistantVisible.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useEffect,\n useRef,\n forwardRef,\n type ComponentType,\n type ForwardedRef,\n type PropsWithoutRef,\n useId,\n createContext,\n useContext,\n} from \"react\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { tool } from \"@assistant-ui/core\";\n\nconst DEFAULT_ACTION_SETTLE_DELAY_MS = 2000;\nconst MAX_ACTION_SETTLE_DELAY_MS = 2_147_483_647;\n\nconst waitForSettle = async (settleDelayMs: number) => {\n const delay =\n Number.isFinite(settleDelayMs) &&\n settleDelayMs >= 0 &&\n settleDelayMs <= MAX_ACTION_SETTLE_DELAY_MS\n ? settleDelayMs\n : DEFAULT_ACTION_SETTLE_DELAY_MS;\n if (delay === 0) return;\n await new Promise<void>((resolve) => setTimeout(resolve, delay));\n};\n\nconst readActionSettleDelay = (element: HTMLElement) => {\n const value = element.dataset.actionSettleDelay;\n return value === undefined || value.trim() === \"\"\n ? DEFAULT_ACTION_SETTLE_DELAY_MS\n : Number(value);\n};\n\nconst click = tool({\n parameters: {\n type: \"object\",\n properties: {\n clickId: {\n type: \"string\",\n },\n },\n required: [\"clickId\"],\n },\n execute: async ({ clickId }: { clickId: string }) => {\n const escapedClickId = CSS.escape(clickId);\n const el = document.querySelector(`[data-click-id='${escapedClickId}']`);\n if (el instanceof HTMLElement) {\n el.click();\n await waitForSettle(readActionSettleDelay(el));\n return {};\n } else {\n return \"Element not found\";\n }\n },\n});\n\nconst setNativeValue = (\n element: HTMLInputElement | HTMLTextAreaElement,\n value: string,\n) => {\n const prototype =\n element instanceof HTMLInputElement\n ? HTMLInputElement.prototype\n : HTMLTextAreaElement.prototype;\n const setter = Object.getOwnPropertyDescriptor(prototype, \"value\")?.set;\n\n if (setter) {\n setter.call(element, value);\n } else {\n element.value = value;\n }\n};\n\nconst edit = tool({\n parameters: {\n type: \"object\",\n properties: {\n editId: {\n type: \"string\",\n },\n value: {\n type: \"string\",\n },\n },\n required: [\"editId\", \"value\"],\n },\n execute: async ({ editId, value }: { editId: string; value: string }) => {\n const escapedEditId = CSS.escape(editId);\n const el = document.querySelector(`[data-edit-id='${escapedEditId}']`);\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n setNativeValue(el, value);\n el.dispatchEvent(new Event(\"input\", { bubbles: true }));\n el.dispatchEvent(new Event(\"change\", { bubbles: true }));\n await waitForSettle(readActionSettleDelay(el));\n return {};\n } else {\n return \"Element not found\";\n }\n },\n});\n\nconst ReadableContext = createContext<boolean>(false);\n\nexport const makeAssistantVisible = <T extends ComponentType<any>>(\n Component: T,\n config?: {\n clickable?: boolean | undefined;\n editable?: boolean | undefined;\n settleDelayMs?: number | undefined;\n },\n) => {\n const settleDelayMs = config?.settleDelayMs ?? DEFAULT_ACTION_SETTLE_DELAY_MS;\n if (\n !Number.isFinite(settleDelayMs) ||\n settleDelayMs < 0 ||\n settleDelayMs > MAX_ACTION_SETTLE_DELAY_MS\n ) {\n throw new RangeError(\n `settleDelayMs must be between 0 and ${MAX_ACTION_SETTLE_DELAY_MS}`,\n );\n }\n\n const ReadableComponent = forwardRef(\n (props: PropsWithoutRef<T>, outerRef: ForwardedRef<any>) => {\n const isNestedReadable = useContext(ReadableContext);\n\n const clickId = useId();\n const componentRef = useRef<HTMLElement>(null);\n\n const aui = useAui();\n\n const { clickable, editable } = config ?? {};\n useEffect(() => {\n return aui.modelContext.register({\n getModelContext: () => {\n return {\n tools: {\n ...(clickable ? { click } : {}),\n ...(editable ? { edit } : {}),\n },\n system: !isNestedReadable // only pass content if this readable isn't nested in another readable\n ? componentRef.current?.outerHTML\n : undefined,\n };\n },\n });\n }, [isNestedReadable, aui, clickable, editable]);\n\n const ref = useComposedRefs(componentRef, outerRef);\n\n return (\n <ReadableContext.Provider value={true}>\n <Component\n {...(props as any)}\n {...(config?.clickable ? { \"data-click-id\": clickId } : {})}\n {...(config?.editable ? { \"data-edit-id\": clickId } : {})}\n {...(config?.settleDelayMs !== undefined &&\n (config.clickable || config.editable)\n ? { \"data-action-settle-delay\": settleDelayMs }\n : {})}\n ref={ref}\n />\n </ReadableContext.Provider>\n );\n },\n );\n\n ReadableComponent.displayName = Component.displayName;\n\n return ReadableComponent as unknown as T;\n};\n\nexport default makeAssistantVisible;\n"],"mappings":"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"}
@@ -79,7 +79,7 @@ export declare namespace ComposerPrimitiveInput {
79
79
  * keyboard shortcuts, file paste support, and intelligent focus management.
80
80
  * It integrates with the composer context to manage message state and submission.
81
81
  *
82
- * When rendered inside `Unstable_TriggerPopoverRoot` and a popover is open, the
82
+ * When rendered inside `TriggerPopoverRoot` and a popover is open, the
83
83
  * underlying `<textarea>` automatically receives `aria-controls`,
84
84
  * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the
85
85
  * combobox relationship. These computed attributes override user-provided
@@ -22,7 +22,7 @@ const TOUCH_PRIMARY_QUERY = "(pointer: coarse) and (not (any-pointer: fine))";
22
22
  * keyboard shortcuts, file paste support, and intelligent focus management.
23
23
  * It integrates with the composer context to manage message state and submission.
24
24
  *
25
- * When rendered inside `Unstable_TriggerPopoverRoot` and a popover is open, the
25
+ * When rendered inside `TriggerPopoverRoot` and a popover is open, the
26
26
  * underlying `<textarea>` automatically receives `aria-controls`,
27
27
  * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the
28
28
  * combobox relationship. These computed attributes override user-provided
@@ -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","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","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","composer","getState","canCancel","cancel","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","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 {\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 * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to automatically focus the input when a new run starts.\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\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 * @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 `Unstable_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 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 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 composer.cancel();\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 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\", focus);\n }, [unstable_focusOnRunStart, focus, 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","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","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","composer","getState","canCancel","cancel","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","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 {\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 * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to automatically focus the input when a new run starts.\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\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 * @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 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 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 composer.cancel();\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 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\", focus);\n }, [unstable_focusOnRunStart, focus, 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,4 +1,4 @@
1
- import type { Unstable_TriggerAdapter } from "@assistant-ui/core";
1
+ import type { TriggerAdapter } from "@assistant-ui/core";
2
2
  import { type ComponentPropsWithoutRef, type ComponentRef } from "react";
3
3
  import { Primitive } from "../../../utils/Primitive.js";
4
4
  import { type TriggerPopoverResourceOutput } from "./TriggerPopoverResource.js";
@@ -20,7 +20,7 @@ export declare namespace ComposerPrimitiveTriggerPopover {
20
20
  /** Overrides trigger detection for both textarea and Lexical inputs. `endOffset` is the exclusive replace bound. */
21
21
  readonly matcher?: TriggerMatcher | undefined;
22
22
  /** Adapter providing categories and items. */
23
- readonly adapter?: Unstable_TriggerAdapter | undefined;
23
+ readonly adapter?: TriggerAdapter | undefined;
24
24
  /** Whether the adapter is resolving items, surfaced to the popover scope for async sources. @default false */
25
25
  readonly isLoading?: boolean | undefined;
26
26
  };
@@ -34,22 +34,22 @@ export declare namespace ComposerPrimitiveTriggerPopover {
34
34
  * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without
35
35
  * a behavior the trigger stays closed.
36
36
  *
37
- * Must be placed inside `ComposerPrimitive.Unstable_TriggerPopoverRoot`.
37
+ * Must be placed inside `ComposerPrimitive.TriggerPopoverRoot`.
38
38
  *
39
39
  * @example
40
40
  * ```tsx
41
- * <ComposerPrimitive.Unstable_TriggerPopover
41
+ * <ComposerPrimitive.TriggerPopover
42
42
  * char="@"
43
43
  * adapter={mentionAdapter}
44
44
  * >
45
- * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />
46
- * <ComposerPrimitive.Unstable_TriggerPopoverCategories>
45
+ * <ComposerPrimitive.TriggerPopover.Directive formatter={formatter} />
46
+ * <ComposerPrimitive.TriggerPopoverCategories>
47
47
  * {(cats) => cats.map(...)}
48
- * </ComposerPrimitive.Unstable_TriggerPopoverCategories>
49
- * <ComposerPrimitive.Unstable_TriggerPopoverItems>
48
+ * </ComposerPrimitive.TriggerPopoverCategories>
49
+ * <ComposerPrimitive.TriggerPopoverItems>
50
50
  * {(items) => items.map(...)}
51
- * </ComposerPrimitive.Unstable_TriggerPopoverItems>
52
- * </ComposerPrimitive.Unstable_TriggerPopover>
51
+ * </ComposerPrimitive.TriggerPopoverItems>
52
+ * </ComposerPrimitive.TriggerPopover>
53
53
  * ```
54
54
  */
55
55
  export declare const ComposerPrimitiveTriggerPopover: import("react").ForwardRefExoticComponent<Omit<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
@@ -62,7 +62,7 @@ export declare const ComposerPrimitiveTriggerPopover: import("react").ForwardRef
62
62
  /** Overrides trigger detection for both textarea and Lexical inputs. `endOffset` is the exclusive replace bound. */
63
63
  readonly matcher?: TriggerMatcher | undefined;
64
64
  /** Adapter providing categories and items. */
65
- readonly adapter?: Unstable_TriggerAdapter | undefined;
65
+ readonly adapter?: TriggerAdapter | undefined;
66
66
  /** Whether the adapter is resolving items, surfaced to the popover scope for async sources. @default false */
67
67
  readonly isLoading?: boolean | undefined;
68
68
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopover.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAWL,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,oCAAiC;AAErD,OAAO,EAEL,KAAK,4BAA4B,EAClC,oCAAiC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,sCAAmC;AAKlE,OAAO,KAAK,EAAE,cAAc,EAAE,2BAAwB;AAKtD,eAAO,MAAM,6BAA6B,oCAOzC,CAAC;AAEF,eAAO,MAAM,qCAAqC,2CACV,CAAC;AAEzC,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CACjD,CAAC;AAKF,yEAAyE;AACzE,eAAO,MAAM,8BAA8B,mCAO1C,CAAC;AAEF,yBAAiB,+BAA+B,CAAC;IAC/C,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,IAAI,CACtB,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAC9C,UAAU,CACX,GAAG;QACF,4HAA4H;QAC5H,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,oHAAoH;QACpH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;QAC9C,8CAA8C;QAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;QACvD,8GAA8G;QAC9G,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC1C,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,+BAA+B;;;;;IAtCxC,4HAA4H;mBAC7G,MAAM;IACrB,oHAAoH;uBACjG,cAAc,GAAG,SAAS;IAC7C,8CAA8C;uBAC3B,uBAAuB,GAAG,SAAS;IACtD,8GAA8G;yBACzF,OAAO,GAAG,SAAS;kDAyK3C,CAAC"}
1
+ {"version":3,"file":"TriggerPopover.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAWL,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,oCAAiC;AAErD,OAAO,EAEL,KAAK,4BAA4B,EAClC,oCAAiC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,sCAAmC;AAKlE,OAAO,KAAK,EAAE,cAAc,EAAE,2BAAwB;AAKtD,eAAO,MAAM,6BAA6B,oCAOzC,CAAC;AAEF,eAAO,MAAM,qCAAqC,2CACV,CAAC;AAEzC,2DAA2D;AAC3D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CACjD,CAAC;AAKF,yEAAyE;AACzE,eAAO,MAAM,8BAA8B,mCAO1C,CAAC;AAEF,yBAAiB,+BAA+B,CAAC;IAC/C,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,IAAI,CACtB,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAC9C,UAAU,CACX,GAAG;QACF,4HAA4H;QAC5H,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,oHAAoH;QACpH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;QAC9C,8CAA8C;QAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;QAC9C,8GAA8G;QAC9G,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC1C,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,+BAA+B;;;;;IAtCxC,4HAA4H;mBAC7G,MAAM;IACrB,oHAAoH;uBACjG,cAAc,GAAG,SAAS;IAC7C,8CAA8C;uBAC3B,cAAc,GAAG,SAAS;IAC7C,8GAA8G;yBACzF,OAAO,GAAG,SAAS;kDAyK3C,CAAC"}