@assistant-ui/react 0.15.24 → 0.15.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) 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 +8 -8
  4. package/dist/hooks/useToolCallElapsed.js.map +1 -1
  5. package/dist/index.d.ts +39 -7
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -3
  8. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  9. package/dist/mcp-apps/McpAppRenderer.js +3 -2
  10. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  11. package/dist/mcp-apps/app-frame.d.ts.map +1 -1
  12. package/dist/mcp-apps/app-frame.js +56 -46
  13. package/dist/mcp-apps/app-frame.js.map +1 -1
  14. package/dist/mcp-apps/csp.d.ts +4 -0
  15. package/dist/mcp-apps/csp.d.ts.map +1 -0
  16. package/dist/mcp-apps/csp.js +93 -0
  17. package/dist/mcp-apps/csp.js.map +1 -0
  18. package/dist/mcp-apps/types.d.ts +1 -0
  19. package/dist/mcp-apps/types.d.ts.map +1 -1
  20. package/dist/mcp-apps/types.js.map +1 -1
  21. package/dist/model-context/makeAssistantVisible.d.ts +1 -0
  22. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
  23. package/dist/model-context/makeAssistantVisible.js +31 -12
  24. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  25. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +1 -0
  26. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
  27. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  28. package/dist/primitives/attachment.d.ts +3 -1
  29. package/dist/primitives/attachment.d.ts.map +1 -1
  30. package/dist/primitives/attachment.js.map +1 -1
  31. package/dist/primitives/composer/ComposerCancel.d.ts +5 -1
  32. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  33. package/dist/primitives/composer/ComposerCancel.js +14 -1
  34. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  35. package/dist/primitives/composer/ComposerInput.d.ts +15 -1
  36. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  37. package/dist/primitives/composer/ComposerInput.js +5 -4
  38. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  39. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  40. package/dist/primitives/composer/ComposerRoot.js +24 -19
  41. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  42. package/dist/primitives/composer/composerInputSelector.d.ts +3 -0
  43. package/dist/primitives/composer/composerInputSelector.d.ts.map +1 -0
  44. package/dist/primitives/composer/composerInputSelector.js +7 -0
  45. package/dist/primitives/composer/composerInputSelector.js.map +1 -0
  46. package/dist/primitives/composer/trigger/TriggerPopover.d.ts +11 -11
  47. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  48. package/dist/primitives/composer/trigger/TriggerPopover.js +62 -60
  49. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  50. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +8 -8
  51. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -1
  52. package/dist/primitives/composer/trigger/TriggerPopoverAction.js +6 -6
  53. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
  54. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +3 -3
  55. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
  56. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  57. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +9 -9
  58. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -1
  59. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +7 -7
  60. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
  61. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +5 -5
  62. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
  63. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  64. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +8 -8
  65. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +8 -8
  66. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  67. package/dist/primitives/composer/trigger/index.d.ts +1 -1
  68. package/dist/primitives/composer/useComposerCancelWithFocus.d.ts +2 -0
  69. package/dist/primitives/composer/useComposerCancelWithFocus.d.ts.map +1 -0
  70. package/dist/primitives/composer/useComposerCancelWithFocus.js +42 -0
  71. package/dist/primitives/composer/useComposerCancelWithFocus.js.map +1 -0
  72. package/dist/primitives/composer.d.ts +55 -15
  73. package/dist/primitives/composer.d.ts.map +1 -1
  74. package/dist/primitives/composer.js +8 -1
  75. package/dist/primitives/composer.js.map +1 -1
  76. package/dist/primitives/message/MessagePartsGrouped.d.ts +8 -1
  77. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
  78. package/dist/primitives/message/MessagePartsGrouped.js +58 -278
  79. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  80. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -1
  81. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +5 -2
  82. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  83. package/dist/primitives/thread/ThreadLoadEarlier.d.ts +19 -0
  84. package/dist/primitives/thread/ThreadLoadEarlier.d.ts.map +1 -0
  85. package/dist/primitives/thread/ThreadLoadEarlier.js +36 -0
  86. package/dist/primitives/thread/ThreadLoadEarlier.js.map +1 -0
  87. package/dist/primitives/thread/ThreadMessages.d.ts +1 -1
  88. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  89. package/dist/primitives/thread/ThreadMessages.js +2 -2
  90. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  91. package/dist/primitives/thread/ThreadViewport.js +4 -3
  92. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  93. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +2 -2
  94. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
  95. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  96. package/dist/primitives/thread/useThreadViewportAutoScroll.js +195 -17
  97. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  98. package/dist/primitives/thread.d.ts +2 -0
  99. package/dist/primitives/thread.d.ts.map +1 -1
  100. package/dist/primitives/thread.js +5 -2
  101. package/dist/primitives/thread.js.map +1 -1
  102. package/dist/sandbox-host/SandboxHost.d.ts.map +1 -1
  103. package/dist/sandbox-host/SandboxHost.js +9 -3
  104. package/dist/sandbox-host/SandboxHost.js.map +1 -1
  105. package/dist/unstable/useComposerInput.d.ts +7 -4
  106. package/dist/unstable/useComposerInput.d.ts.map +1 -1
  107. package/dist/unstable/useComposerInput.js +4 -4
  108. package/dist/unstable/useComposerInput.js.map +1 -1
  109. package/dist/unstable/useComposerInputHistory.d.ts +3 -2
  110. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -1
  111. package/dist/unstable/useComposerInputHistory.js +2 -2
  112. package/dist/unstable/useComposerInputHistory.js.map +1 -1
  113. package/dist/unstable/useLiveCompletionAdapter.d.ts +3 -2
  114. package/dist/unstable/useLiveCompletionAdapter.d.ts.map +1 -1
  115. package/dist/unstable/useLiveCompletionAdapter.js +8 -7
  116. package/dist/unstable/useLiveCompletionAdapter.js.map +1 -1
  117. package/dist/unstable/useMentionAdapter.d.ts +12 -3
  118. package/dist/unstable/useMentionAdapter.d.ts.map +1 -1
  119. package/dist/unstable/useMentionAdapter.js +2 -2
  120. package/dist/unstable/useMentionAdapter.js.map +1 -1
  121. package/dist/unstable/useMessageStallDetection.d.ts +4 -2
  122. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -1
  123. package/dist/unstable/useMessageStallDetection.js +12 -8
  124. package/dist/unstable/useMessageStallDetection.js.map +1 -1
  125. package/dist/unstable/useSlashCommandAdapter.d.ts +5 -2
  126. package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -1
  127. package/dist/unstable/useSlashCommandAdapter.js +5 -4
  128. package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
  129. package/dist/unstable/webmcp/useWebMcpProvider.d.ts +4 -0
  130. package/dist/unstable/webmcp/useWebMcpProvider.d.ts.map +1 -1
  131. package/dist/unstable/webmcp/useWebMcpProvider.js +2 -0
  132. package/dist/unstable/webmcp/useWebMcpProvider.js.map +1 -1
  133. package/dist/utils/getSelectionMessageId.d.ts.map +1 -1
  134. package/dist/utils/getSelectionMessageId.js +31 -8
  135. package/dist/utils/getSelectionMessageId.js.map +1 -1
  136. package/dist/utils/hooks/useOnResizeContent.d.ts.map +1 -1
  137. package/dist/utils/hooks/useOnResizeContent.js +2 -22
  138. package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
  139. package/dist/utils/smooth/useSmooth.js +6 -6
  140. package/dist/utils/smooth/useSmooth.js.map +1 -1
  141. package/dist/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  142. package/dist/utils/useIsomorphicLayoutEffect.d.ts.map +1 -0
  143. package/dist/utils/useIsomorphicLayoutEffect.js +6 -0
  144. package/dist/utils/useIsomorphicLayoutEffect.js.map +1 -0
  145. package/package.json +12 -11
  146. package/src/hooks/useToolCallElapsed.test.tsx +37 -0
  147. package/src/hooks/useToolCallElapsed.ts +10 -7
  148. package/src/index.ts +47 -5
  149. package/src/mcp-apps/McpAppRenderer.tsx +3 -9
  150. package/src/mcp-apps/app-frame.test.tsx +38 -0
  151. package/src/mcp-apps/app-frame.tsx +5 -8
  152. package/src/mcp-apps/csp.test.ts +112 -0
  153. package/src/mcp-apps/csp.ts +124 -0
  154. package/src/mcp-apps/types.ts +1 -0
  155. package/src/model-context/frame/AssistantFrame.test.ts +45 -0
  156. package/src/model-context/frame/SPEC_AssistantFrame.md +1 -0
  157. package/src/model-context/makeAssistantVisible.test.tsx +315 -5
  158. package/src/model-context/makeAssistantVisible.tsx +43 -7
  159. package/src/primitives/assistantModal/AssistantModalRoot.tsx +1 -0
  160. package/src/primitives/attachment.ts +4 -1
  161. package/src/primitives/composer/ComposerCancel.focus.test.tsx +307 -0
  162. package/src/primitives/composer/ComposerCancel.ts +8 -1
  163. package/src/primitives/composer/ComposerInput.tsx +20 -2
  164. package/src/primitives/composer/ComposerRoot.tsx +6 -5
  165. package/src/primitives/composer/composerInputSelector.ts +4 -0
  166. package/src/primitives/composer/trigger/TriggerPopover.tsx +11 -11
  167. package/src/primitives/composer/trigger/TriggerPopoverAction.tsx +10 -13
  168. package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +2 -2
  169. package/src/primitives/composer/trigger/TriggerPopoverDirective.tsx +11 -14
  170. package/src/primitives/composer/trigger/TriggerPopoverExports.test.ts +61 -0
  171. package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +3 -3
  172. package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +8 -8
  173. package/src/primitives/composer/useComposerCancelWithFocus.ts +57 -0
  174. package/src/primitives/composer.ts +70 -15
  175. package/src/primitives/message/MessagePartsGrouped.test.tsx +106 -2
  176. package/src/primitives/message/MessagePartsGrouped.tsx +36 -134
  177. package/src/primitives/message/MessageRoot.test.tsx +125 -2
  178. package/src/primitives/selectionToolbar/SelectionToolbarRoot.test.tsx +20 -12
  179. package/src/primitives/selectionToolbar/SelectionToolbarRoot.tsx +6 -2
  180. package/src/primitives/thread/ThreadLoadEarlier.tsx +35 -0
  181. package/src/primitives/thread/ThreadMessages.tsx +1 -0
  182. package/src/primitives/thread/ThreadViewport.tsx +3 -3
  183. package/src/primitives/thread/topAnchor/useTopAnchorReserve.ts +2 -2
  184. package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +922 -68
  185. package/src/primitives/thread/useThreadViewportAutoScroll.ts +330 -56
  186. package/src/primitives/thread.ts +2 -0
  187. package/src/sandbox-host/SandboxHost.test.tsx +34 -0
  188. package/src/sandbox-host/SandboxHost.tsx +11 -12
  189. package/src/tests/toolCallTiming.test.tsx +19 -2
  190. package/src/unstable/useComposerInput.ts +7 -4
  191. package/src/unstable/useComposerInputHistory.ts +3 -2
  192. package/src/unstable/useLiveCompletionAdapter.ts +9 -14
  193. package/src/unstable/useMentionAdapter.ts +12 -3
  194. package/src/unstable/useMessageStallDetection.test.tsx +40 -0
  195. package/src/unstable/useMessageStallDetection.ts +14 -8
  196. package/src/unstable/useSlashCommandAdapter.ts +8 -4
  197. package/src/unstable/webmcp/useWebMcpProvider.ts +4 -0
  198. package/src/utils/getSelectionMessageId.test.ts +231 -0
  199. package/src/utils/getSelectionMessageId.ts +45 -7
  200. package/src/utils/hooks/useOnResizeContent.ts +2 -29
  201. package/src/utils/smooth/useSmooth.test.tsx +16 -5
  202. package/src/utils/smooth/useSmooth.ts +7 -7
  203. package/src/utils/useIsomorphicLayoutEffect.test.tsx +21 -0
  204. package/src/utils/useIsomorphicLayoutEffect.ts +9 -0
@@ -34,26 +34,26 @@ const useTriggerBehaviorRegistration = () => {
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
  const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
56
- const $ = c(69);
56
+ const $ = c(70);
57
57
  let adapter;
58
58
  let ariaLabel;
59
59
  let char;
@@ -179,43 +179,45 @@ const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
179
179
  $[32] = t9;
180
180
  } else t9 = $[32];
181
181
  let t10;
182
- if ($[33] !== behavior || $[34] !== char || $[35] !== hasMatcher || $[36] !== root) {
182
+ if ($[33] !== behavior || $[34] !== char || $[35] !== hasMatcher || $[36] !== registeredMatcher || $[37] !== root) {
183
183
  t10 = [
184
184
  root,
185
185
  char,
186
186
  hasMatcher,
187
+ registeredMatcher,
187
188
  behavior
188
189
  ];
189
190
  $[33] = behavior;
190
191
  $[34] = char;
191
192
  $[35] = hasMatcher;
192
- $[36] = root;
193
- $[37] = t10;
194
- } else t10 = $[37];
193
+ $[36] = registeredMatcher;
194
+ $[37] = root;
195
+ $[38] = t10;
196
+ } else t10 = $[38];
195
197
  useEffect(t9, t10);
196
198
  const pluginRegistry = useComposerInputPluginRegistryOptional();
197
199
  let t11;
198
- if ($[38] !== getResource || $[39] !== pluginRegistry) {
200
+ if ($[39] !== getResource || $[40] !== pluginRegistry) {
199
201
  t11 = () => {
200
202
  if (!pluginRegistry) return;
201
203
  return pluginRegistry.register(getResource());
202
204
  };
203
- $[38] = getResource;
204
- $[39] = pluginRegistry;
205
- $[40] = t11;
206
- } else t11 = $[40];
205
+ $[39] = getResource;
206
+ $[40] = pluginRegistry;
207
+ $[41] = t11;
208
+ } else t11 = $[41];
207
209
  let t12;
208
- if ($[41] !== pluginRegistry) {
210
+ if ($[42] !== pluginRegistry) {
209
211
  t12 = [pluginRegistry];
210
- $[41] = pluginRegistry;
211
- $[42] = t12;
212
- } else t12 = $[42];
212
+ $[42] = pluginRegistry;
213
+ $[43] = t12;
214
+ } else t12 = $[43];
213
215
  useEffect(t11, t12);
214
216
  const open = behavior !== null && resource.open;
215
217
  const aria = useTriggerPopoverAriaPublish();
216
218
  let t13;
217
219
  let t14;
218
- if ($[43] !== aria || $[44] !== char || $[45] !== open) {
220
+ if ($[44] !== aria || $[45] !== char || $[46] !== open) {
219
221
  t13 = () => {
220
222
  if (!open) return;
221
223
  return () => {
@@ -227,19 +229,19 @@ const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
227
229
  char,
228
230
  open
229
231
  ];
230
- $[43] = aria;
231
- $[44] = char;
232
- $[45] = open;
233
- $[46] = t13;
234
- $[47] = t14;
232
+ $[44] = aria;
233
+ $[45] = char;
234
+ $[46] = open;
235
+ $[47] = t13;
236
+ $[48] = t14;
235
237
  } else {
236
- t13 = $[46];
237
- t14 = $[47];
238
+ t13 = $[47];
239
+ t14 = $[48];
238
240
  }
239
241
  useEffect(t13, t14);
240
242
  let t15;
241
243
  let t16;
242
- if ($[48] !== aria || $[49] !== char || $[50] !== open || $[51] !== popoverId || $[52] !== resource.highlightedItemId) {
244
+ if ($[49] !== aria || $[50] !== char || $[51] !== open || $[52] !== popoverId || $[53] !== resource.highlightedItemId) {
243
245
  t15 = () => {
244
246
  if (!open) return;
245
247
  aria.setActiveAria(char, {
@@ -254,20 +256,20 @@ const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
254
256
  open,
255
257
  resource.highlightedItemId
256
258
  ];
257
- $[48] = aria;
258
- $[49] = char;
259
- $[50] = open;
260
- $[51] = popoverId;
261
- $[52] = resource.highlightedItemId;
262
- $[53] = t15;
263
- $[54] = t16;
259
+ $[49] = aria;
260
+ $[50] = char;
261
+ $[51] = open;
262
+ $[52] = popoverId;
263
+ $[53] = resource.highlightedItemId;
264
+ $[54] = t15;
265
+ $[55] = t16;
264
266
  } else {
265
- t15 = $[53];
266
- t16 = $[54];
267
+ t15 = $[54];
268
+ t16 = $[55];
267
269
  }
268
270
  useEffect(t15, t16);
269
271
  let t17;
270
- if ($[55] !== ariaLabel || $[56] !== children || $[57] !== forwardedRef || $[58] !== open || $[59] !== popoverId || $[60] !== props || $[61] !== resource.highlightedItemId) {
272
+ if ($[56] !== ariaLabel || $[57] !== children || $[58] !== forwardedRef || $[59] !== open || $[60] !== popoverId || $[61] !== props || $[62] !== resource.highlightedItemId) {
271
273
  t17 = open ? /* @__PURE__ */ jsx(Primitive.div, {
272
274
  role: "listbox",
273
275
  id: popoverId,
@@ -278,35 +280,35 @@ const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
278
280
  ref: forwardedRef,
279
281
  children
280
282
  }) : children;
281
- $[55] = ariaLabel;
282
- $[56] = children;
283
- $[57] = forwardedRef;
284
- $[58] = open;
285
- $[59] = popoverId;
286
- $[60] = props;
287
- $[61] = resource.highlightedItemId;
288
- $[62] = t17;
289
- } else t17 = $[62];
283
+ $[56] = ariaLabel;
284
+ $[57] = children;
285
+ $[58] = forwardedRef;
286
+ $[59] = open;
287
+ $[60] = popoverId;
288
+ $[61] = props;
289
+ $[62] = resource.highlightedItemId;
290
+ $[63] = t17;
291
+ } else t17 = $[63];
290
292
  let t18;
291
- if ($[63] !== resource || $[64] !== t17) {
293
+ if ($[64] !== resource || $[65] !== t17) {
292
294
  t18 = /* @__PURE__ */ jsx(TriggerPopoverScopeContext.Provider, {
293
295
  value: resource,
294
296
  children: t17
295
297
  });
296
- $[63] = resource;
297
- $[64] = t17;
298
- $[65] = t18;
299
- } else t18 = $[65];
298
+ $[64] = resource;
299
+ $[65] = t17;
300
+ $[66] = t18;
301
+ } else t18 = $[66];
300
302
  let t19;
301
- if ($[66] !== registration || $[67] !== t18) {
303
+ if ($[67] !== registration || $[68] !== t18) {
302
304
  t19 = /* @__PURE__ */ jsx(TriggerBehaviorRegistrationContext.Provider, {
303
305
  value: registration,
304
306
  children: t18
305
307
  });
306
- $[66] = registration;
307
- $[67] = t18;
308
- $[68] = t19;
309
- } else t19 = $[68];
308
+ $[67] = registration;
309
+ $[68] = t18;
310
+ $[69] = t19;
311
+ } else t19 = $[69];
310
312
  return t19;
311
313
  });
312
314
  ComposerPrimitiveTriggerPopover.displayName = "ComposerPrimitive.TriggerPopover";
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopover.js","names":["c","_c","useAui","useAuiState","useResource","Unstable_TriggerAdapter","createContext","forwardRef","useCallback","useContext","useEffect","useEffectEvent","useId","useMemo","useRef","useState","ComponentPropsWithoutRef","ComponentRef","Primitive","useComposerInputPluginRegistryOptional","TriggerPopoverResource","TriggerPopoverResourceOutput","TriggerBehavior","useTriggerPopoverAriaPublish","useTriggerPopoverRootContext","TriggerMatcher","TriggerPopoverScopeContext","useTriggerPopoverScopeContext","ctx","Error","useTriggerPopoverScopeContextOptional","TriggerBehaviorRegistration","register","behavior","TriggerBehaviorRegistrationContext","useTriggerBehaviorRegistration","ComposerPrimitiveTriggerPopover","Element","div","Props","Omit","char","matcher","adapter","isLoading","t0","forwardedRef","$","ariaLabel","children","props","t1","undefined","aui","text","_temp","popoverId","matcherRef","t2","current","t3","Symbol","for","nextText","triggerChar","cursorPosition","registeredMatcher","hasMatcher","behaviorRef","setBehavior","registrationCountRef","t4","next","process","env","NODE_ENV","console","warn","Math","max","t5","registration","t6","t7","resource","t8","getResource","root","t9","t10","pluginRegistry","t11","t12","open","aria","t13","t14","setActiveAria","t15","t16","highlightedItemId","t17","t18","t19","displayName","s","composer","_c"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { useResource } from \"@assistant-ui/tap\";\nimport type { Unstable_TriggerAdapter } from \"@assistant-ui/core\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useEffectEvent,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n} from \"react\";\nimport { Primitive } from \"../../../utils/Primitive\";\nimport { useComposerInputPluginRegistryOptional } from \"../ComposerInputPluginContext\";\nimport {\n TriggerPopoverResource,\n type TriggerPopoverResourceOutput,\n} from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport {\n useTriggerPopoverAriaPublish,\n useTriggerPopoverRootContext,\n} from \"./TriggerPopoverRootContext\";\nimport type { TriggerMatcher } from \"./detectTrigger\";\n\nconst TriggerPopoverScopeContext =\n createContext<TriggerPopoverResourceOutput | null>(null);\n\nexport const useTriggerPopoverScopeContext = () => {\n const ctx = useContext(TriggerPopoverScopeContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverScopeContextOptional = () =>\n useContext(TriggerPopoverScopeContext);\n\n/** Registration API exposed to behavior sub-primitives. */\nexport type TriggerBehaviorRegistration = {\n register(behavior: TriggerBehavior): () => void;\n};\n\nconst TriggerBehaviorRegistrationContext =\n createContext<TriggerBehaviorRegistration | null>(null);\n\n/** Obtain the registration handle from the parent `<TriggerPopover>`. */\nexport const useTriggerBehaviorRegistration = () => {\n const ctx = useContext(TriggerBehaviorRegistrationContext);\n if (!ctx)\n throw new Error(\n \"TriggerPopover.Directive / TriggerPopover.Action must be rendered inside ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport namespace ComposerPrimitiveTriggerPopover {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"onSelect\"\n > & {\n /** The character(s) that activate this trigger (e.g. `\"@\"`, `\"/\"`). Also serves as the trigger identity within the root. */\n readonly char: string;\n /** Overrides trigger detection for both textarea and Lexical inputs. `endOffset` is the exclusive replace bound. */\n readonly matcher?: TriggerMatcher | undefined;\n /** Adapter providing categories and items. */\n readonly adapter?: Unstable_TriggerAdapter | undefined;\n /** Whether the adapter is resolving items, surfaced to the popover scope for async sources. @default false */\n readonly isLoading?: boolean | undefined;\n };\n}\n\n/**\n * Declares a trigger and renders its popover container. The popover only\n * renders its DOM (and children) when the trigger character is active in the\n * composer input and a behavior sub-primitive has been registered.\n *\n * A behavior is contributed by rendering exactly one of\n * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without\n * a behavior the trigger stays closed.\n *\n * Must be placed inside `ComposerPrimitive.Unstable_TriggerPopoverRoot`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover\n * char=\"@\"\n * adapter={mentionAdapter}\n * >\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * <ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * {(cats) => cats.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * <ComposerPrimitive.Unstable_TriggerPopoverItems>\n * {(items) => items.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverItems>\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopover = forwardRef<\n ComposerPrimitiveTriggerPopover.Element,\n ComposerPrimitiveTriggerPopover.Props\n>(\n (\n {\n char,\n matcher,\n adapter,\n isLoading = false,\n \"aria-label\": ariaLabel,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const text = useAuiState((s) => s.composer.text);\n const popoverId = useId();\n const matcherRef = useRef(matcher);\n useEffect(() => {\n matcherRef.current = matcher;\n });\n const [registeredMatcher] = useState(\n () => (nextText: string, triggerChar: string, cursorPosition: number) =>\n matcherRef.current!(nextText, triggerChar, cursorPosition),\n );\n const hasMatcher = matcher !== undefined;\n\n // Track in state (for resource reactivity) + ref (dev warning on duplicate registrations).\n const behaviorRef = useRef<TriggerBehavior | null>(null);\n const [behavior, setBehavior] = useState<TriggerBehavior | null>(null);\n const registrationCountRef = useRef(0);\n\n const register = useCallback<TriggerBehaviorRegistration[\"register\"]>(\n (next) => {\n registrationCountRef.current += 1;\n if (\n process.env.NODE_ENV !== \"production\" &&\n registrationCountRef.current > 1\n ) {\n console.warn(\n `[assistant-ui] TriggerPopover \"${char}\" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`,\n );\n }\n behaviorRef.current = next;\n setBehavior(next);\n return () => {\n registrationCountRef.current = Math.max(\n 0,\n registrationCountRef.current - 1,\n );\n if (behaviorRef.current === next) {\n behaviorRef.current = null;\n setBehavior(null);\n }\n };\n },\n [char],\n );\n\n const registration = useMemo<TriggerBehaviorRegistration>(\n () => ({ register }),\n [register],\n );\n\n const resource = useResource(\n TriggerPopoverResource({\n adapter,\n text,\n triggerChar: char,\n matcher,\n behavior: behavior ?? undefined,\n aui,\n popoverId,\n isLoading,\n }),\n );\n\n const getResource = useEffectEvent(() => resource);\n\n const root = useTriggerPopoverRootContext();\n useEffect(() => {\n return root.register({\n char,\n ...(hasMatcher ? { matcher: registeredMatcher } : {}),\n ...(behavior ? { behavior } : {}),\n resource: getResource(),\n });\n }, [root, char, hasMatcher, behavior]);\n\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n useEffect(() => {\n if (!pluginRegistry) return undefined;\n return pluginRegistry.register(getResource());\n }, [pluginRegistry]);\n\n const open = behavior !== null && resource.open;\n\n const aria = useTriggerPopoverAriaPublish();\n\n useEffect(() => {\n if (!open) return undefined;\n return () => {\n aria.setActiveAria(char, null);\n };\n }, [aria, char, open]);\n\n useEffect(() => {\n if (!open) return;\n aria.setActiveAria(char, {\n popoverId,\n highlightedItemId: resource.highlightedItemId,\n });\n }, [aria, char, popoverId, open, resource.highlightedItemId]);\n\n return (\n <TriggerBehaviorRegistrationContext.Provider value={registration}>\n <TriggerPopoverScopeContext.Provider value={resource}>\n {open ? (\n <Primitive.div\n role=\"listbox\"\n id={popoverId}\n aria-label={ariaLabel ?? \"Suggestions\"}\n aria-activedescendant={resource.highlightedItemId}\n data-state=\"open\"\n {...props}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n ) : (\n children\n )}\n </TriggerPopoverScopeContext.Provider>\n </TriggerBehaviorRegistrationContext.Provider>\n );\n },\n);\n\nComposerPrimitiveTriggerPopover.displayName =\n \"ComposerPrimitive.TriggerPopover\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"TriggerPopover.js","names":["c","_c","useAui","useAuiState","useResource","TriggerAdapter","createContext","forwardRef","useCallback","useContext","useEffect","useEffectEvent","useId","useMemo","useRef","useState","ComponentPropsWithoutRef","ComponentRef","Primitive","useComposerInputPluginRegistryOptional","TriggerPopoverResource","TriggerPopoverResourceOutput","TriggerBehavior","useTriggerPopoverAriaPublish","useTriggerPopoverRootContext","TriggerMatcher","TriggerPopoverScopeContext","useTriggerPopoverScopeContext","ctx","Error","useTriggerPopoverScopeContextOptional","TriggerBehaviorRegistration","register","behavior","TriggerBehaviorRegistrationContext","useTriggerBehaviorRegistration","ComposerPrimitiveTriggerPopover","Element","div","Props","Omit","char","matcher","adapter","isLoading","t0","forwardedRef","$","ariaLabel","children","props","t1","undefined","aui","text","_temp","popoverId","matcherRef","t2","current","t3","Symbol","for","nextText","triggerChar","cursorPosition","registeredMatcher","hasMatcher","behaviorRef","setBehavior","registrationCountRef","t4","next","process","env","NODE_ENV","console","warn","Math","max","t5","registration","t6","t7","resource","t8","getResource","root","t9","t10","pluginRegistry","t11","t12","open","aria","t13","t14","setActiveAria","t15","t16","highlightedItemId","t17","t18","t19","displayName","s","composer","_c"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { useResource } from \"@assistant-ui/tap\";\nimport type { TriggerAdapter } from \"@assistant-ui/core\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useEffectEvent,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n} from \"react\";\nimport { Primitive } from \"../../../utils/Primitive\";\nimport { useComposerInputPluginRegistryOptional } from \"../ComposerInputPluginContext\";\nimport {\n TriggerPopoverResource,\n type TriggerPopoverResourceOutput,\n} from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport {\n useTriggerPopoverAriaPublish,\n useTriggerPopoverRootContext,\n} from \"./TriggerPopoverRootContext\";\nimport type { TriggerMatcher } from \"./detectTrigger\";\n\nconst TriggerPopoverScopeContext =\n createContext<TriggerPopoverResourceOutput | null>(null);\n\nexport const useTriggerPopoverScopeContext = () => {\n const ctx = useContext(TriggerPopoverScopeContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverScopeContextOptional = () =>\n useContext(TriggerPopoverScopeContext);\n\n/** Registration API exposed to behavior sub-primitives. */\nexport type TriggerBehaviorRegistration = {\n register(behavior: TriggerBehavior): () => void;\n};\n\nconst TriggerBehaviorRegistrationContext =\n createContext<TriggerBehaviorRegistration | null>(null);\n\n/** Obtain the registration handle from the parent `<TriggerPopover>`. */\nexport const useTriggerBehaviorRegistration = () => {\n const ctx = useContext(TriggerBehaviorRegistrationContext);\n if (!ctx)\n throw new Error(\n \"TriggerPopover.Directive / TriggerPopover.Action must be rendered inside ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport namespace ComposerPrimitiveTriggerPopover {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"onSelect\"\n > & {\n /** The character(s) that activate this trigger (e.g. `\"@\"`, `\"/\"`). Also serves as the trigger identity within the root. */\n readonly char: string;\n /** Overrides trigger detection for both textarea and Lexical inputs. `endOffset` is the exclusive replace bound. */\n readonly matcher?: TriggerMatcher | undefined;\n /** Adapter providing categories and items. */\n readonly adapter?: TriggerAdapter | undefined;\n /** Whether the adapter is resolving items, surfaced to the popover scope for async sources. @default false */\n readonly isLoading?: boolean | undefined;\n };\n}\n\n/**\n * Declares a trigger and renders its popover container. The popover only\n * renders its DOM (and children) when the trigger character is active in the\n * composer input and a behavior sub-primitive has been registered.\n *\n * A behavior is contributed by rendering exactly one of\n * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without\n * a behavior the trigger stays closed.\n *\n * Must be placed inside `ComposerPrimitive.TriggerPopoverRoot`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.TriggerPopover\n * char=\"@\"\n * adapter={mentionAdapter}\n * >\n * <ComposerPrimitive.TriggerPopover.Directive formatter={formatter} />\n * <ComposerPrimitive.TriggerPopoverCategories>\n * {(cats) => cats.map(...)}\n * </ComposerPrimitive.TriggerPopoverCategories>\n * <ComposerPrimitive.TriggerPopoverItems>\n * {(items) => items.map(...)}\n * </ComposerPrimitive.TriggerPopoverItems>\n * </ComposerPrimitive.TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopover = forwardRef<\n ComposerPrimitiveTriggerPopover.Element,\n ComposerPrimitiveTriggerPopover.Props\n>(\n (\n {\n char,\n matcher,\n adapter,\n isLoading = false,\n \"aria-label\": ariaLabel,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const text = useAuiState((s) => s.composer.text);\n const popoverId = useId();\n const matcherRef = useRef(matcher);\n useEffect(() => {\n matcherRef.current = matcher;\n });\n const [registeredMatcher] = useState(\n () => (nextText: string, triggerChar: string, cursorPosition: number) =>\n matcherRef.current!(nextText, triggerChar, cursorPosition),\n );\n const hasMatcher = matcher !== undefined;\n\n // Track in state (for resource reactivity) + ref (dev warning on duplicate registrations).\n const behaviorRef = useRef<TriggerBehavior | null>(null);\n const [behavior, setBehavior] = useState<TriggerBehavior | null>(null);\n const registrationCountRef = useRef(0);\n\n const register = useCallback<TriggerBehaviorRegistration[\"register\"]>(\n (next) => {\n registrationCountRef.current += 1;\n if (\n process.env.NODE_ENV !== \"production\" &&\n registrationCountRef.current > 1\n ) {\n console.warn(\n `[assistant-ui] TriggerPopover \"${char}\" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`,\n );\n }\n behaviorRef.current = next;\n setBehavior(next);\n return () => {\n registrationCountRef.current = Math.max(\n 0,\n registrationCountRef.current - 1,\n );\n if (behaviorRef.current === next) {\n behaviorRef.current = null;\n setBehavior(null);\n }\n };\n },\n [char],\n );\n\n const registration = useMemo<TriggerBehaviorRegistration>(\n () => ({ register }),\n [register],\n );\n\n const resource = useResource(\n TriggerPopoverResource({\n adapter,\n text,\n triggerChar: char,\n matcher,\n behavior: behavior ?? undefined,\n aui,\n popoverId,\n isLoading,\n }),\n );\n\n const getResource = useEffectEvent(() => resource);\n\n const root = useTriggerPopoverRootContext();\n useEffect(() => {\n return root.register({\n char,\n ...(hasMatcher ? { matcher: registeredMatcher } : {}),\n ...(behavior ? { behavior } : {}),\n resource: getResource(),\n });\n }, [root, char, hasMatcher, registeredMatcher, behavior]);\n\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n useEffect(() => {\n if (!pluginRegistry) return undefined;\n return pluginRegistry.register(getResource());\n }, [pluginRegistry]);\n\n const open = behavior !== null && resource.open;\n\n const aria = useTriggerPopoverAriaPublish();\n\n useEffect(() => {\n if (!open) return undefined;\n return () => {\n aria.setActiveAria(char, null);\n };\n }, [aria, char, open]);\n\n useEffect(() => {\n if (!open) return;\n aria.setActiveAria(char, {\n popoverId,\n highlightedItemId: resource.highlightedItemId,\n });\n }, [aria, char, popoverId, open, resource.highlightedItemId]);\n\n return (\n <TriggerBehaviorRegistrationContext.Provider value={registration}>\n <TriggerPopoverScopeContext.Provider value={resource}>\n {open ? (\n <Primitive.div\n role=\"listbox\"\n id={popoverId}\n aria-label={ariaLabel ?? \"Suggestions\"}\n aria-activedescendant={resource.highlightedItemId}\n data-state=\"open\"\n {...props}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n ) : (\n children\n )}\n </TriggerPopoverScopeContext.Provider>\n </TriggerBehaviorRegistrationContext.Provider>\n );\n },\n);\n\nComposerPrimitiveTriggerPopover.displayName =\n \"ComposerPrimitive.TriggerPopover\";\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import type { Unstable_DirectiveFormatter, Unstable_TriggerItem } from "@assistant-ui/core";
1
+ import type { DirectiveFormatter, TriggerItem } from "@assistant-ui/core";
2
2
  import { type FC } from "react";
3
3
  export declare namespace ComposerPrimitiveTriggerPopoverAction {
4
4
  type Props = {
5
- /** Defaults to `unstable_defaultDirectiveFormatter`. */
6
- readonly formatter?: Unstable_DirectiveFormatter | undefined;
5
+ /** Defaults to `defaultDirectiveFormatter`. */
6
+ readonly formatter?: DirectiveFormatter | undefined;
7
7
  /** Fires the moment an item is selected; runs regardless of `removeOnExecute`. */
8
- readonly onExecute: (item: Unstable_TriggerItem) => void;
8
+ readonly onExecute: (item: TriggerItem) => void;
9
9
  /** When true, strips the trigger text after executing. Defaults to `false` (keeps audit-trail chip). */
10
10
  readonly removeOnExecute?: boolean | undefined;
11
11
  };
@@ -15,16 +15,16 @@ export declare namespace ComposerPrimitiveTriggerPopoverAction {
15
15
  * optionally leaving a directive chip behind as an audit trail. Render exactly
16
16
  * one behavior sub-primitive per `<TriggerPopover>`.
17
17
  *
18
- * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Action`.
18
+ * Exposed as `ComposerPrimitive.TriggerPopover.Action`.
19
19
  *
20
20
  * @example
21
21
  * ```tsx
22
- * <ComposerPrimitive.Unstable_TriggerPopover char="/" adapter={slashAdapter}>
23
- * <ComposerPrimitive.Unstable_TriggerPopover.Action
22
+ * <ComposerPrimitive.TriggerPopover char="/" adapter={slashAdapter}>
23
+ * <ComposerPrimitive.TriggerPopover.Action
24
24
  * onExecute={(item) => commandHandlers[item.id]?.()}
25
25
  * removeOnExecute={false}
26
26
  * />
27
- * </ComposerPrimitive.Unstable_TriggerPopover>
27
+ * </ComposerPrimitive.TriggerPopover>
28
28
  * ```
29
29
  */
30
30
  export declare const ComposerPrimitiveTriggerPopoverAction: FC<ComposerPrimitiveTriggerPopoverAction.Props>;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverAction.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverAction.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAyC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvE,yBAAiB,qCAAqC,CAAC;IACrD,KAAY,KAAK,GAAG;QAClB,wDAAwD;QACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;QAC7D,kFAAkF;QAClF,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;QACzD,wGAAwG;QACxG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAChD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qCAAqC,EAAE,EAAE,CACpD,qCAAqC,CAAC,KAAK,CAmB5C,CAAC"}
1
+ {"version":3,"file":"TriggerPopoverAction.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverAction.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAyC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvE,yBAAiB,qCAAqC,CAAC;IACrD,KAAY,KAAK,GAAG;QAClB,+CAA+C;QAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;QACpD,kFAAkF;QAClF,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;QAChD,wGAAwG;QACxG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAChD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qCAAqC,EAAE,EAAE,CACpD,qCAAqC,CAAC,KAAK,CAmB5C,CAAC"}
@@ -2,23 +2,23 @@
2
2
  import { useTriggerBehaviorRegistration } from "./TriggerPopover.js";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { useEffect, useInsertionEffect, useRef } from "@assistant-ui/tap/react-shim";
5
- import { unstable_defaultDirectiveFormatter } from "@assistant-ui/core";
5
+ import { defaultDirectiveFormatter } from "@assistant-ui/core";
6
6
  //#region src/primitives/composer/trigger/TriggerPopoverAction.tsx
7
7
  /**
8
8
  * Configures a `<TriggerPopover>` to fire a handler when an item is selected,
9
9
  * optionally leaving a directive chip behind as an audit trail. Render exactly
10
10
  * one behavior sub-primitive per `<TriggerPopover>`.
11
11
  *
12
- * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Action`.
12
+ * Exposed as `ComposerPrimitive.TriggerPopover.Action`.
13
13
  *
14
14
  * @example
15
15
  * ```tsx
16
- * <ComposerPrimitive.Unstable_TriggerPopover char="/" adapter={slashAdapter}>
17
- * <ComposerPrimitive.Unstable_TriggerPopover.Action
16
+ * <ComposerPrimitive.TriggerPopover char="/" adapter={slashAdapter}>
17
+ * <ComposerPrimitive.TriggerPopover.Action
18
18
  * onExecute={(item) => commandHandlers[item.id]?.()}
19
19
  * removeOnExecute={false}
20
20
  * />
21
- * </ComposerPrimitive.Unstable_TriggerPopover>
21
+ * </ComposerPrimitive.TriggerPopover>
22
22
  * ```
23
23
  */
24
24
  const ComposerPrimitiveTriggerPopoverAction = (t0) => {
@@ -47,7 +47,7 @@ const ComposerPrimitiveTriggerPopoverAction = (t0) => {
47
47
  t3 = () => {
48
48
  const behavior = {
49
49
  kind: "action",
50
- formatter: formatter ?? unstable_defaultDirectiveFormatter,
50
+ formatter: formatter ?? defaultDirectiveFormatter,
51
51
  onExecute: (item) => onExecuteRef.current(item),
52
52
  ...removeOnExecute !== void 0 ? { removeOnExecute } : {}
53
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverAction.js","names":["c","_c","Unstable_DirectiveFormatter","Unstable_TriggerItem","unstable_defaultDirectiveFormatter","useEffect","useInsertionEffect","useRef","FC","useTriggerBehaviorRegistration","TriggerBehavior","ComposerPrimitiveTriggerPopoverAction","Props","formatter","onExecute","item","removeOnExecute","t0","$","register","onExecuteRef","t1","t2","current","t3","t4","behavior","kind","undefined","displayName","_c"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverAction.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport { unstable_defaultDirectiveFormatter } from \"@assistant-ui/core\";\nimport { useEffect, useInsertionEffect, useRef, type FC } from \"react\";\nimport { useTriggerBehaviorRegistration } from \"./TriggerPopover\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport namespace ComposerPrimitiveTriggerPopoverAction {\n export type Props = {\n /** Defaults to `unstable_defaultDirectiveFormatter`. */\n readonly formatter?: Unstable_DirectiveFormatter | undefined;\n /** Fires the moment an item is selected; runs regardless of `removeOnExecute`. */\n readonly onExecute: (item: Unstable_TriggerItem) => void;\n /** When true, strips the trigger text after executing. Defaults to `false` (keeps audit-trail chip). */\n readonly removeOnExecute?: boolean | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to fire a handler when an item is selected,\n * optionally leaving a directive chip behind as an audit trail. Render exactly\n * one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Action`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"/\" adapter={slashAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Action\n * onExecute={(item) => commandHandlers[item.id]?.()}\n * removeOnExecute={false}\n * />\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverAction: FC<\n ComposerPrimitiveTriggerPopoverAction.Props\n> = ({ formatter, onExecute, removeOnExecute }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onExecuteRef = useRef(onExecute);\n useInsertionEffect(() => {\n onExecuteRef.current = onExecute;\n }, [onExecute]);\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"action\",\n formatter: formatter ?? unstable_defaultDirectiveFormatter,\n onExecute: (item) => onExecuteRef.current(item),\n ...(removeOnExecute !== undefined ? { removeOnExecute } : {}),\n };\n return register(behavior);\n }, [register, formatter, removeOnExecute]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverAction.displayName =\n \"ComposerPrimitive.TriggerPopoverAction\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAaW,yCAETM,OAAA;CAAA,MAAAC,IAAAjB,EAAA,CAAA;CAAC,MAAA,EAAAY,WAAAC,WAAAE,oBAAAC;CACH,MAAA,EAAAE,aAAqBV,+BAA+B;CACpD,MAAAW,eAAqBb,OAAOO,SAAS;CAAE,IAAAO;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAJ,WAAA;EACpBO,WAAA;GACjBD,aAAYG,UAAWT;EAAH;EACnBQ,KAAA,CAACR,SAAS;EAACI,EAAA,KAAAJ;EAAAI,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAFdZ,mBAAmBe,IAEhBC,EAAW;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAL,aAAAK,EAAA,OAAAC,YAAAD,EAAA,OAAAF,iBAAA;EAELQ,WAAA;GACR,MAAAE,WAAkC;IAAAC,MAC1B;IAAQd,WACHA,aAAAT;IAA+CU,YAC/CC,SAAUK,aAAYG,QAASR,IAAI;IAAC,GAC3CC,oBAAoBY,KAAAA,IAApB,EAAAZ,gBAAuD,IAAvD,CAAuD;GAC7D;GAAE,OACKG,SAASO,QAAQ;EAAC;EACxBD,KAAA;GAACN;GAAUN;GAAWG;EAAe;EAACE,EAAA,KAAAL;EAAAK,EAAA,KAAAC;EAAAD,EAAA,KAAAF;EAAAE,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAD,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CARzCb,UAAUmB,IAQPC,EAAsC;CAAC,OAEnC;AAAI;AAGbd,sCAAsCkB,cACpC"}
1
+ {"version":3,"file":"TriggerPopoverAction.js","names":["c","_c","DirectiveFormatter","TriggerItem","defaultDirectiveFormatter","useEffect","useInsertionEffect","useRef","FC","useTriggerBehaviorRegistration","TriggerBehavior","ComposerPrimitiveTriggerPopoverAction","Props","formatter","onExecute","item","removeOnExecute","t0","$","register","onExecuteRef","t1","t2","current","t3","t4","behavior","kind","undefined","displayName","_c"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverAction.tsx"],"sourcesContent":["\"use client\";\n\nimport type { DirectiveFormatter, TriggerItem } from \"@assistant-ui/core\";\nimport { defaultDirectiveFormatter } from \"@assistant-ui/core\";\nimport { useEffect, useInsertionEffect, useRef, type FC } from \"react\";\nimport { useTriggerBehaviorRegistration } from \"./TriggerPopover\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport namespace ComposerPrimitiveTriggerPopoverAction {\n export type Props = {\n /** Defaults to `defaultDirectiveFormatter`. */\n readonly formatter?: DirectiveFormatter | undefined;\n /** Fires the moment an item is selected; runs regardless of `removeOnExecute`. */\n readonly onExecute: (item: TriggerItem) => void;\n /** When true, strips the trigger text after executing. Defaults to `false` (keeps audit-trail chip). */\n readonly removeOnExecute?: boolean | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to fire a handler when an item is selected,\n * optionally leaving a directive chip behind as an audit trail. Render exactly\n * one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.TriggerPopover.Action`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.TriggerPopover char=\"/\" adapter={slashAdapter}>\n * <ComposerPrimitive.TriggerPopover.Action\n * onExecute={(item) => commandHandlers[item.id]?.()}\n * removeOnExecute={false}\n * />\n * </ComposerPrimitive.TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverAction: FC<\n ComposerPrimitiveTriggerPopoverAction.Props\n> = ({ formatter, onExecute, removeOnExecute }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onExecuteRef = useRef(onExecute);\n useInsertionEffect(() => {\n onExecuteRef.current = onExecute;\n }, [onExecute]);\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"action\",\n formatter: formatter ?? defaultDirectiveFormatter,\n onExecute: (item) => onExecuteRef.current(item),\n ...(removeOnExecute !== undefined ? { removeOnExecute } : {}),\n };\n return register(behavior);\n }, [register, formatter, removeOnExecute]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverAction.displayName =\n \"ComposerPrimitive.TriggerPopoverAction\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAaW,yCAETM,OAAA;CAAA,MAAAC,IAAAjB,EAAA,CAAA;CAAC,MAAA,EAAAY,WAAAC,WAAAE,oBAAAC;CACH,MAAA,EAAAE,aAAqBV,+BAA+B;CACpD,MAAAW,eAAqBb,OAAOO,SAAS;CAAE,IAAAO;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAJ,WAAA;EACpBO,WAAA;GACjBD,aAAYG,UAAWT;EAAH;EACnBQ,KAAA,CAACR,SAAS;EAACI,EAAA,KAAAJ;EAAAI,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAFdZ,mBAAmBe,IAEhBC,EAAW;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAL,aAAAK,EAAA,OAAAC,YAAAD,EAAA,OAAAF,iBAAA;EAELQ,WAAA;GACR,MAAAE,WAAkC;IAAAC,MAC1B;IAAQd,WACHA,aAAAT;IAAsCU,YACtCC,SAAUK,aAAYG,QAASR,IAAI;IAAC,GAC3CC,oBAAoBY,KAAAA,IAApB,EAAAZ,gBAAuD,IAAvD,CAAuD;GAC7D;GAAE,OACKG,SAASO,QAAQ;EAAC;EACxBD,KAAA;GAACN;GAAUN;GAAWG;EAAe;EAACE,EAAA,KAAAL;EAAAK,EAAA,KAAAC;EAAAD,EAAA,KAAAF;EAAAE,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAD,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CARzCb,UAAUmB,IAQPC,EAAsC;CAAC,OAEnC;AAAI;AAGbd,sCAAsCkB,cACpC"}
@@ -1,10 +1,10 @@
1
1
  import { Primitive } from "../../../utils/Primitive.js";
2
2
  import { type ComponentRef, type ComponentPropsWithoutRef, type ReactNode } from "react";
3
- import type { Unstable_TriggerCategory } from "@assistant-ui/core";
3
+ import type { TriggerCategory } from "@assistant-ui/core";
4
4
  export declare namespace ComposerPrimitiveTriggerPopoverCategories {
5
5
  type Element = ComponentRef<typeof Primitive.div>;
6
6
  type Props = Omit<ComponentPropsWithoutRef<typeof Primitive.div>, "children"> & {
7
- children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;
7
+ children: (categories: readonly TriggerCategory[]) => ReactNode;
8
8
  };
9
9
  }
10
10
  /**
@@ -16,7 +16,7 @@ export declare const ComposerPrimitiveTriggerPopoverCategories: import("react").
16
16
  }, "ref"> & {
17
17
  render?: import("react").ReactElement | undefined;
18
18
  } & import("react").RefAttributes<HTMLDivElement>, "ref">, "children"> & {
19
- children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;
19
+ children: (categories: readonly TriggerCategory[]) => ReactNode;
20
20
  } & import("react").RefAttributes<HTMLDivElement>>;
21
21
  export declare namespace ComposerPrimitiveTriggerPopoverCategoryItem {
22
22
  type Element = ComponentRef<typeof Primitive.button>;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverCategories.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,yBAAiB,yCAAyC,CAAC;IACzD,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,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,KAAK,SAAS,CAAC;KAC1E,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,yCAAyC;;;;;cARxC,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,KAAK,SAAS;kDA2B1E,CAAC;AAKH,yBAAiB,2CAA2C,CAAC;IAC3D,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,2CAA2C;;;;;gBARxC,MAAM;qDA+CpB,CAAC"}
1
+ {"version":3,"file":"TriggerPopoverCategories.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,yBAAiB,yCAAyC,CAAC;IACzD,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,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,KAAK,SAAS,CAAC;KACjE,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,yCAAyC;;;;;cARxC,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,KAAK,SAAS;kDA2BjE,CAAC;AAKH,yBAAiB,2CAA2C,CAAC;IAC3D,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,2CAA2C;;;;;gBARxC,MAAM;qDA+CpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverCategories.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerCategory","ComposerPrimitiveTriggerPopoverCategories","Element","div","Props","Omit","children","categories","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverCategoryItem","button","categoryId","onClick","onMouseMove","selectCategory","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","categoryIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8","_c","Primitive"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerCategory } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategories {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;\n };\n}\n\n/**\n * Renders the top-level category list via a render function.\n * Only renders when no category is active and search mode is off.\n */\nexport const ComposerPrimitiveTriggerPopoverCategories = forwardRef<\n ComposerPrimitiveTriggerPopoverCategories.Element,\n ComposerPrimitiveTriggerPopoverCategories.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { categories, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Categories\"}\n {...props}\n ref={forwardedRef}\n >\n {children(categories)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverCategories.displayName =\n \"ComposerPrimitive.TriggerPopoverCategories\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategoryItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n categoryId: string;\n };\n}\n\n/**\n * A button that selects a category and triggers drill-down navigation.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef<\n ComposerPrimitiveTriggerPopoverCategoryItem.Element,\n ComposerPrimitiveTriggerPopoverCategoryItem.Props\n>(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {\n const {\n selectCategory,\n highlightIndex,\n categories,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectCategory(categoryId);\n }, [selectCategory, categoryId]);\n\n const categoryIndex = categories.findIndex((c) => c.id === categoryId);\n const isHighlighted =\n !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(categoryIndex);\n }, [highlightIndex, categoryIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${categoryId}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverCategoryItem.displayName =\n \"ComposerPrimitive.TriggerPopoverCategoryItem\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"TriggerPopoverCategories.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","TriggerCategory","ComposerPrimitiveTriggerPopoverCategories","Element","div","Props","Omit","children","categories","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverCategoryItem","button","categoryId","onClick","onMouseMove","selectCategory","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","categoryIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8","_c","Primitive"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { TriggerCategory } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategories {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (categories: readonly TriggerCategory[]) => ReactNode;\n };\n}\n\n/**\n * Renders the top-level category list via a render function.\n * Only renders when no category is active and search mode is off.\n */\nexport const ComposerPrimitiveTriggerPopoverCategories = forwardRef<\n ComposerPrimitiveTriggerPopoverCategories.Element,\n ComposerPrimitiveTriggerPopoverCategories.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { categories, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Categories\"}\n {...props}\n ref={forwardedRef}\n >\n {children(categories)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverCategories.displayName =\n \"ComposerPrimitive.TriggerPopoverCategories\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategoryItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n categoryId: string;\n };\n}\n\n/**\n * A button that selects a category and triggers drill-down navigation.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef<\n ComposerPrimitiveTriggerPopoverCategoryItem.Element,\n ComposerPrimitiveTriggerPopoverCategoryItem.Props\n>(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {\n const {\n selectCategory,\n highlightIndex,\n categories,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectCategory(categoryId);\n }, [selectCategory, categoryId]);\n\n const categoryIndex = categories.findIndex((c) => c.id === categoryId);\n const isHighlighted =\n !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(categoryIndex);\n }, [highlightIndex, categoryIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${categoryId}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverCategoryItem.displayName =\n \"ComposerPrimitive.TriggerPopoverCategoryItem\";\n"],"mappings":";;;;;;;;;;;;AA4BA,MAAaW,4CAA4CL,YAGvDY,IAAAC,iBAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAAA,IAAAoB;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAF,UAAA,cAAAK,WAAA,GAAAC,SAAAJ;EAA+CE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;CAAA,OAAA;EAAAD,YAAAD,EAAA;EAAAJ,WAAAI,EAAA;EAAAE,QAAAF,EAAA;CAAA;CAChD,MAAA,EAAAH,YAAAM,kBAAAC,cAAAC,SACEhB,8BAA8B;CAEhC,IAAI,CAACgB,QAADF,oBAAAC,cAAyC,OAAS;CAKtC,MAAAE,KAAAL,aAAA;CAAyB,IAAAM;CAAA,IAAAP,EAAA,OAAAH,cAAAG,EAAA,OAAAJ,UAAA;EAIpCW,KAAAX,SAASC,UAAU;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAJ;EAAAI,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,SAAAF,EAAA,OAAAM,MAAAN,EAAA,QAAAO,IAAA;EANvBC,KAAA,oBAAAwB,YAAA,KAAA;GACO,MAAA;GACO,cAAA1B;GAAyB,GACjCJ;GACCH,KAAAA;GAEJQ,UAAAA;EACH,CAAA;EAAgBP,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAM;EAAAN,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAPhBQ;AAOgB,CAEnB;AAEDjB,0CAA0CkB,cACxC;;;;;AAaF,MAAaC,8CAA8CxB,YAGzDY,IAAAC,iBAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAAA,IAAA+B;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAZ;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAc,YAAAC,SAAAC,aAAA,GAAAZ,SAAAJ;EAA8CE,EAAA,KAAAF;EAAAE,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;EAAAb,EAAA,KAAAc;EAAAd,EAAA,KAAAE;CAAA,OAAA;EAAAU,aAAAZ,EAAA;EAAAa,UAAAb,EAAA;EAAAc,cAAAd,EAAA;EAAAE,QAAAF,EAAA;CAAA;CAC/C,MAAA,EAAAe,gBAAAC,gBAAAnB,YAAAoB,kBAAAd,kBAAAC,cAAAc,cAQI7B,8BAA8B;CAAE,IAAAiB;CAAA,IAAAN,EAAA,OAAAY,cAAAZ,EAAA,OAAAe,gBAAA;EAEJT,WAAA;GAC9BS,eAAeH,UAAU;EAAC;EAC3BZ,EAAA,KAAAY;EAAAZ,EAAA,KAAAe;EAAAf,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAFD,MAAAmB,cAAoBb;CAEa,IAAAC;CAAA,IAAAP,EAAA,OAAAH,cAAAG,EAAA,OAAAY,YAAA;EAAA,IAAAJ;EAAA,IAAAR,EAAA,QAAAY,YAAA;GAEUJ,MAAA5B,MAAOA,EAACwC,OAAQR;GAAUZ,EAAA,MAAAY;GAAAZ,EAAA,MAAAQ;EAAA,OAAAA,KAAAR,EAAA;EAA/CO,KAAAV,WAAUwB,UAAWb,EAA0B;EAACR,EAAA,KAAAH;EAAAG,EAAA,KAAAY;EAAAZ,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAtE,MAAAsB,gBAAsBf;CACtB,MAAAgB,gBACE,CAACpB,oBAAD,CAAsBC,gBAAgBkB,kBAAkBL;CAAiB,IAAAT;CAAA,IAAAR,EAAA,QAAAsB,iBAAAtB,EAAA,QAAAgB,gBAAA;EAEvCR,WAAA;GAClCQ,eAAeM,aAAa;EAAC;EAC9BtB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAgB;EAAAhB,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAFD,MAAAwB,kBAAwBhB;CAQhB,MAAAiB,KAAA,GAAGP,UAAS,UAAWN;CAET,MAAAc,KAAAH,gBAAA,KAAAI,KAAAA;CAA8B,IAAAC;CAAA,IAAA5B,EAAA,QAAAmB,eAAAnB,EAAA,QAAAa,SAAA;EAGvCe,KAAAxC,qBAAqByB,SAASM,WAAW;EAACnB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAa;EAAAb,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAAA,IAAA6B;CAAA,IAAA7B,EAAA,QAAAwB,mBAAAxB,EAAA,QAAAc,aAAA;EACtCe,KAAAzC,qBAAqB0B,aAAaU,eAAe;EAACxB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAc;EAAAd,EAAA,MAAA6B;CAAA,OAAAA,KAAA7B,EAAA;CAAA,IAAA8B;CAAA,IAAA9B,EAAA,QAAAD,gBAAAC,EAAA,QAAAuB,iBAAAvB,EAAA,QAAAE,SAAAF,EAAA,QAAAyB,MAAAzB,EAAA,QAAA0B,MAAA1B,EAAA,QAAA4B,MAAA5B,EAAA,QAAA6B,IAAA;EATjEC,KAAA,oBAAAE,YAAA,QAAA;GACO,MAAA;GACA,MAAA;GACD,IAAAP;GACWF,iBAAAA;GACG,oBAAAG;GAA8B,GAC5CxB;GACCH,KAAAA;GACI,SAAA6B;GACI,aAAAC;EAAkD,CAAA;EAC/D7B,EAAA,MAAAD;EAAAC,EAAA,MAAAuB;EAAAvB,EAAA,MAAAE;EAAAF,EAAA,MAAAyB;EAAAzB,EAAA,MAAA0B;EAAA1B,EAAA,MAAA4B;EAAA5B,EAAA,MAAA6B;EAAA7B,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAAA,OAVF8B;AAUE,CAEL;AAEDpB,4CAA4CD,cAC1C"}
@@ -1,27 +1,27 @@
1
- import type { Unstable_DirectiveFormatter, Unstable_TriggerItem } from "@assistant-ui/core";
1
+ import type { DirectiveFormatter, TriggerItem } from "@assistant-ui/core";
2
2
  import { type FC } from "react";
3
3
  export declare namespace ComposerPrimitiveTriggerPopoverDirective {
4
4
  type Props = {
5
- /** Defaults to `unstable_defaultDirectiveFormatter`. */
6
- readonly formatter?: Unstable_DirectiveFormatter | undefined;
5
+ /** Defaults to `defaultDirectiveFormatter`. */
6
+ readonly formatter?: DirectiveFormatter | undefined;
7
7
  /** Fires after an item has been inserted into the composer. */
8
- readonly onInserted?: ((item: Unstable_TriggerItem) => void) | undefined;
8
+ readonly onInserted?: ((item: TriggerItem) => void) | undefined;
9
9
  };
10
10
  }
11
11
  /**
12
12
  * Configures a `<TriggerPopover>` to insert a directive chip when an item is
13
13
  * selected. Render exactly one behavior sub-primitive per `<TriggerPopover>`.
14
14
  *
15
- * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Directive`.
15
+ * Exposed as `ComposerPrimitive.TriggerPopover.Directive`.
16
16
  *
17
17
  * @example
18
18
  * ```tsx
19
- * <ComposerPrimitive.Unstable_TriggerPopover char="@" adapter={mentionAdapter}>
20
- * <ComposerPrimitive.Unstable_TriggerPopover.Directive
21
- * formatter={unstable_defaultDirectiveFormatter}
19
+ * <ComposerPrimitive.TriggerPopover char="@" adapter={mentionAdapter}>
20
+ * <ComposerPrimitive.TriggerPopover.Directive
21
+ * formatter={defaultDirectiveFormatter}
22
22
  * onInserted={(item) => track("mention", item.id)}
23
23
  * />
24
- * </ComposerPrimitive.Unstable_TriggerPopover>
24
+ * </ComposerPrimitive.TriggerPopover>
25
25
  * ```
26
26
  */
27
27
  export declare const ComposerPrimitiveTriggerPopoverDirective: FC<ComposerPrimitiveTriggerPopoverDirective.Props>;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverDirective.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverDirective.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAyC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvE,yBAAiB,wCAAwC,CAAC;IACxD,KAAY,KAAK,GAAG;QAClB,wDAAwD;QACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;QAC7D,+DAA+D;QAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KAC1E,CAAC;CACH;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wCAAwC,EAAE,EAAE,CACvD,wCAAwC,CAAC,KAAK,CAkB/C,CAAC"}
1
+ {"version":3,"file":"TriggerPopoverDirective.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverDirective.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAyC,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvE,yBAAiB,wCAAwC,CAAC;IACxD,KAAY,KAAK,GAAG;QAClB,+CAA+C;QAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;QACpD,+DAA+D;QAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KACjE,CAAC;CACH;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wCAAwC,EAAE,EAAE,CACvD,wCAAwC,CAAC,KAAK,CAkB/C,CAAC"}
@@ -2,22 +2,22 @@
2
2
  import { useTriggerBehaviorRegistration } from "./TriggerPopover.js";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { useEffect, useInsertionEffect, useRef } from "@assistant-ui/tap/react-shim";
5
- import { unstable_defaultDirectiveFormatter } from "@assistant-ui/core";
5
+ import { defaultDirectiveFormatter } from "@assistant-ui/core";
6
6
  //#region src/primitives/composer/trigger/TriggerPopoverDirective.tsx
7
7
  /**
8
8
  * Configures a `<TriggerPopover>` to insert a directive chip when an item is
9
9
  * selected. Render exactly one behavior sub-primitive per `<TriggerPopover>`.
10
10
  *
11
- * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Directive`.
11
+ * Exposed as `ComposerPrimitive.TriggerPopover.Directive`.
12
12
  *
13
13
  * @example
14
14
  * ```tsx
15
- * <ComposerPrimitive.Unstable_TriggerPopover char="@" adapter={mentionAdapter}>
16
- * <ComposerPrimitive.Unstable_TriggerPopover.Directive
17
- * formatter={unstable_defaultDirectiveFormatter}
15
+ * <ComposerPrimitive.TriggerPopover char="@" adapter={mentionAdapter}>
16
+ * <ComposerPrimitive.TriggerPopover.Directive
17
+ * formatter={defaultDirectiveFormatter}
18
18
  * onInserted={(item) => track("mention", item.id)}
19
19
  * />
20
- * </ComposerPrimitive.Unstable_TriggerPopover>
20
+ * </ComposerPrimitive.TriggerPopover>
21
21
  * ```
22
22
  */
23
23
  const ComposerPrimitiveTriggerPopoverDirective = (t0) => {
@@ -46,7 +46,7 @@ const ComposerPrimitiveTriggerPopoverDirective = (t0) => {
46
46
  t3 = () => {
47
47
  return register({
48
48
  kind: "directive",
49
- formatter: formatter ?? unstable_defaultDirectiveFormatter,
49
+ formatter: formatter ?? defaultDirectiveFormatter,
50
50
  onInserted: (item) => onInsertedRef.current?.(item)
51
51
  });
52
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverDirective.js","names":["c","_c","Unstable_DirectiveFormatter","Unstable_TriggerItem","unstable_defaultDirectiveFormatter","useEffect","useInsertionEffect","useRef","FC","useTriggerBehaviorRegistration","TriggerBehavior","ComposerPrimitiveTriggerPopoverDirective","Props","formatter","onInserted","item","t0","$","register","onInsertedRef","t1","t2","current","t3","t4","behavior","kind","displayName","_c"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverDirective.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n Unstable_DirectiveFormatter,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport { unstable_defaultDirectiveFormatter } from \"@assistant-ui/core\";\nimport { useEffect, useInsertionEffect, useRef, type FC } from \"react\";\nimport { useTriggerBehaviorRegistration } from \"./TriggerPopover\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport namespace ComposerPrimitiveTriggerPopoverDirective {\n export type Props = {\n /** Defaults to `unstable_defaultDirectiveFormatter`. */\n readonly formatter?: Unstable_DirectiveFormatter | undefined;\n /** Fires after an item has been inserted into the composer. */\n readonly onInserted?: ((item: Unstable_TriggerItem) => void) | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to insert a directive chip when an item is\n * selected. Render exactly one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.Unstable_TriggerPopover.Directive`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"@\" adapter={mentionAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive\n * formatter={unstable_defaultDirectiveFormatter}\n * onInserted={(item) => track(\"mention\", item.id)}\n * />\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverDirective: FC<\n ComposerPrimitiveTriggerPopoverDirective.Props\n> = ({ formatter, onInserted }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onInsertedRef = useRef(onInserted);\n useInsertionEffect(() => {\n onInsertedRef.current = onInserted;\n }, [onInserted]);\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"directive\",\n formatter: formatter ?? unstable_defaultDirectiveFormatter,\n onInserted: (item) => onInsertedRef.current?.(item),\n };\n return register(behavior);\n }, [register, formatter]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverDirective.displayName =\n \"ComposerPrimitive.TriggerPopoverDirective\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAaW,4CAETK,OAAA;CAAA,MAAAC,IAAAhB,EAAA,CAAA;CAAC,MAAA,EAAAY,WAAAC,eAAAE;CACH,MAAA,EAAAE,aAAqBT,+BAA+B;CACpD,MAAAU,gBAAsBZ,OAAOO,UAAU;CAAE,IAAAM;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAH,YAAA;EACtBM,WAAA;GACjBD,cAAaG,UAAWR;EAAH;EACpBO,KAAA,CAACP,UAAU;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAFfX,mBAAmBc,IAEhBC,EAAY;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAJ,aAAAI,EAAA,OAAAC,UAAA;EAENK,WAAA;GAKN,OACKL,SAASO;IALkBC,MAC1B;IAAWb,WACNA,aAAAT;IAA+CU,aAC9CC,SAAUI,cAAaG,UAAWP,IAAI;GAEpCU,CAAQ;EAAC;EACxBD,KAAA,CAACN,UAAUL,SAAS;EAACI,EAAA,KAAAJ;EAAAI,EAAA,KAAAC;EAAAD,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAD,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CAPxBZ,UAAUkB,IAOPC,EAAqB;CAAC,OAElB;AAAI;AAGbb,yCAAyCgB,cACvC"}
1
+ {"version":3,"file":"TriggerPopoverDirective.js","names":["c","_c","DirectiveFormatter","TriggerItem","defaultDirectiveFormatter","useEffect","useInsertionEffect","useRef","FC","useTriggerBehaviorRegistration","TriggerBehavior","ComposerPrimitiveTriggerPopoverDirective","Props","formatter","onInserted","item","t0","$","register","onInsertedRef","t1","t2","current","t3","t4","behavior","kind","displayName","_c"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverDirective.tsx"],"sourcesContent":["\"use client\";\n\nimport type { DirectiveFormatter, TriggerItem } from \"@assistant-ui/core\";\nimport { defaultDirectiveFormatter } from \"@assistant-ui/core\";\nimport { useEffect, useInsertionEffect, useRef, type FC } from \"react\";\nimport { useTriggerBehaviorRegistration } from \"./TriggerPopover\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport namespace ComposerPrimitiveTriggerPopoverDirective {\n export type Props = {\n /** Defaults to `defaultDirectiveFormatter`. */\n readonly formatter?: DirectiveFormatter | undefined;\n /** Fires after an item has been inserted into the composer. */\n readonly onInserted?: ((item: TriggerItem) => void) | undefined;\n };\n}\n\n/**\n * Configures a `<TriggerPopover>` to insert a directive chip when an item is\n * selected. Render exactly one behavior sub-primitive per `<TriggerPopover>`.\n *\n * Exposed as `ComposerPrimitive.TriggerPopover.Directive`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.TriggerPopover char=\"@\" adapter={mentionAdapter}>\n * <ComposerPrimitive.TriggerPopover.Directive\n * formatter={defaultDirectiveFormatter}\n * onInserted={(item) => track(\"mention\", item.id)}\n * />\n * </ComposerPrimitive.TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverDirective: FC<\n ComposerPrimitiveTriggerPopoverDirective.Props\n> = ({ formatter, onInserted }) => {\n const { register } = useTriggerBehaviorRegistration();\n const onInsertedRef = useRef(onInserted);\n useInsertionEffect(() => {\n onInsertedRef.current = onInserted;\n }, [onInserted]);\n\n useEffect(() => {\n const behavior: TriggerBehavior = {\n kind: \"directive\",\n formatter: formatter ?? defaultDirectiveFormatter,\n onInserted: (item) => onInsertedRef.current?.(item),\n };\n return register(behavior);\n }, [register, formatter]);\n\n return null;\n};\n\nComposerPrimitiveTriggerPopoverDirective.displayName =\n \"ComposerPrimitive.TriggerPopoverDirective\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAaW,4CAETK,OAAA;CAAA,MAAAC,IAAAhB,EAAA,CAAA;CAAC,MAAA,EAAAY,WAAAC,eAAAE;CACH,MAAA,EAAAE,aAAqBT,+BAA+B;CACpD,MAAAU,gBAAsBZ,OAAOO,UAAU;CAAE,IAAAM;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAH,YAAA;EACtBM,WAAA;GACjBD,cAAaG,UAAWR;EAAH;EACpBO,KAAA,CAACP,UAAU;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAFfX,mBAAmBc,IAEhBC,EAAY;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAJ,aAAAI,EAAA,OAAAC,UAAA;EAENK,WAAA;GAKN,OACKL,SAASO;IALkBC,MAC1B;IAAWb,WACNA,aAAAT;IAAsCU,aACrCC,SAAUI,cAAaG,UAAWP,IAAI;GAEpCU,CAAQ;EAAC;EACxBD,KAAA,CAACN,UAAUL,SAAS;EAACI,EAAA,KAAAJ;EAAAI,EAAA,KAAAC;EAAAD,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAD,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CAPxBZ,UAAUkB,IAOPC,EAAqB;CAAC,OAElB;AAAI;AAGbb,yCAAyCgB,cACvC"}
@@ -1,10 +1,10 @@
1
1
  import { Primitive } from "../../../utils/Primitive.js";
2
2
  import { type ComponentRef, type ComponentPropsWithoutRef, type ReactNode } from "react";
3
- import type { Unstable_TriggerItem } from "@assistant-ui/core";
3
+ import type { TriggerItem } from "@assistant-ui/core";
4
4
  export declare namespace ComposerPrimitiveTriggerPopoverItems {
5
5
  type Element = ComponentRef<typeof Primitive.div>;
6
6
  type Props = Omit<ComponentPropsWithoutRef<typeof Primitive.div>, "children"> & {
7
- children: (items: readonly Unstable_TriggerItem[]) => ReactNode;
7
+ children: (items: readonly TriggerItem[]) => ReactNode;
8
8
  };
9
9
  }
10
10
  /**
@@ -16,12 +16,12 @@ export declare const ComposerPrimitiveTriggerPopoverItems: import("react").Forwa
16
16
  }, "ref"> & {
17
17
  render?: import("react").ReactElement | undefined;
18
18
  } & import("react").RefAttributes<HTMLDivElement>, "ref">, "children"> & {
19
- children: (items: readonly Unstable_TriggerItem[]) => ReactNode;
19
+ children: (items: readonly TriggerItem[]) => ReactNode;
20
20
  } & import("react").RefAttributes<HTMLDivElement>>;
21
21
  export declare namespace ComposerPrimitiveTriggerPopoverItem {
22
22
  type Element = ComponentRef<typeof Primitive.button>;
23
23
  type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {
24
- item: Unstable_TriggerItem;
24
+ item: TriggerItem;
25
25
  index?: number | undefined;
26
26
  };
27
27
  }
@@ -34,7 +34,7 @@ export declare const ComposerPrimitiveTriggerPopoverItem: import("react").Forwar
34
34
  }, "ref"> & {
35
35
  render?: import("react").ReactElement | undefined;
36
36
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
37
- item: Unstable_TriggerItem;
37
+ item: TriggerItem;
38
38
  index?: number | undefined;
39
39
  } & import("react").RefAttributes<HTMLButtonElement>>;
40
40
  //# sourceMappingURL=TriggerPopoverItems.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverItems.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,yBAAiB,oCAAoC,CAAC;IACpD,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,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,KAAK,SAAS,CAAC;KACjE,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC;;;;;cARnC,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,KAAK,SAAS;kDA2BjE,CAAC;AAKH,yBAAiB,mCAAmC,CAAC;IACnD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,IAAI,EAAE,oBAAoB,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;UATtC,oBAAoB;YAClB,MAAM,GAAG,SAAS;qDAqD7B,CAAC"}
1
+ {"version":3,"file":"TriggerPopoverItems.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,yBAAiB,oCAAoC,CAAC;IACpD,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,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,KAAK,SAAS,CAAC;KACxD,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC;;;;;cARnC,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,KAAK,SAAS;kDA2BxD,CAAC;AAKH,yBAAiB,mCAAmC,CAAC;IACnD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,IAAI,EAAE,WAAW,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;UATtC,WAAW;YACT,MAAM,GAAG,SAAS;qDAqD7B,CAAC"}