@assistant-ui/react 0.15.16 → 0.15.17

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 (223) hide show
  1. package/README.md +3 -3
  2. package/dist/index.d.ts +4 -3
  3. package/dist/index.js +2 -2
  4. package/dist/mcp-apps/McpAppRenderer.d.ts +6 -1
  5. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  6. package/dist/mcp-apps/McpAppRenderer.js +19 -12
  7. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  8. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  9. package/dist/mcp-apps/McpAppsRemoteHost.js +20 -17
  10. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  11. package/dist/mcp-apps/app-frame.d.ts.map +1 -1
  12. package/dist/mcp-apps/app-frame.js +189 -94
  13. package/dist/mcp-apps/app-frame.js.map +1 -1
  14. package/dist/mcp-apps/index.d.ts +2 -2
  15. package/dist/model-context/frame/useAssistantFrameHost.d.ts +1 -1
  16. package/dist/model-context/frame/useAssistantFrameHost.js +10 -11
  17. package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
  18. package/dist/model-context/makeAssistantVisible.js +1 -1
  19. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  20. package/dist/primitives/actionBar/ActionBarCopy.js +3 -3
  21. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  22. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +3 -3
  23. package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
  24. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +3 -3
  25. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  26. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +3 -3
  27. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  28. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  29. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +3 -3
  30. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  31. package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
  32. package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
  33. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
  34. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
  35. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
  36. package/dist/primitives/actionBarMore/scope.d.ts +2 -2
  37. package/dist/primitives/actionBarMore/scope.d.ts.map +1 -1
  38. package/dist/primitives/actionBarMore/scope.js.map +1 -1
  39. package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
  40. package/dist/primitives/assistantModal/AssistantModalContent.js +1 -1
  41. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  42. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  43. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
  44. package/dist/primitives/assistantModal/scope.d.ts +2 -2
  45. package/dist/primitives/assistantModal/scope.d.ts.map +1 -1
  46. package/dist/primitives/assistantModal/scope.js.map +1 -1
  47. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  48. package/dist/primitives/composer/ComposerAttachmentDropzone.js +1 -1
  49. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
  50. package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
  51. package/dist/primitives/composer/ComposerInput.js +1 -3
  52. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  53. package/dist/primitives/composer/ComposerQuote.js +5 -5
  54. package/dist/primitives/composer/ComposerQuote.js.map +1 -1
  55. package/dist/primitives/composer/ComposerRoot.js +3 -3
  56. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  57. package/dist/primitives/composer/trigger/TriggerPopover.d.ts +5 -0
  58. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  59. package/dist/primitives/composer/trigger/TriggerPopover.js +157 -130
  60. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  61. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +3 -3
  62. package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
  63. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +4 -4
  64. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  65. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +4 -4
  66. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  67. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +2 -0
  68. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
  69. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +63 -61
  70. package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
  71. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +2 -0
  72. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts.map +1 -1
  73. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  74. package/dist/primitives/composer/trigger/detectTrigger.d.ts +21 -1
  75. package/dist/primitives/composer/trigger/detectTrigger.d.ts.map +1 -0
  76. package/dist/primitives/composer/trigger/detectTrigger.js +17 -3
  77. package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
  78. package/dist/primitives/composer/trigger/index.d.ts +3 -1
  79. package/dist/primitives/composer/trigger/index.d.ts.map +1 -1
  80. package/dist/primitives/composer/trigger/index.js.map +1 -1
  81. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +3 -4
  82. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
  83. package/dist/primitives/composer/trigger/triggerDetectionResource.js +15 -14
  84. package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
  85. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  86. package/dist/primitives/composer/trigger/triggerSelectionResource.js +18 -19
  87. package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
  88. package/dist/primitives/composer.d.ts +3 -2
  89. package/dist/primitives/composer.js.map +1 -1
  90. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  91. package/dist/primitives/message/MessageIf.js.map +1 -1
  92. package/dist/primitives/message/MessageParts.js.map +1 -1
  93. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  94. package/dist/primitives/message/MessageRoot.js +4 -4
  95. package/dist/primitives/message/MessageRoot.js.map +1 -1
  96. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  97. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +3 -3
  98. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
  99. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +3 -3
  100. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  101. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  102. package/dist/primitives/thread/ThreadViewport.js +3 -3
  103. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  104. package/dist/primitives/thread/ThreadViewportFooter.js +3 -3
  105. package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
  106. package/dist/primitives/thread/useThreadViewportAutoScroll.js +1 -1
  107. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  108. package/dist/primitives/threadList/ThreadListNew.js +3 -3
  109. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  110. package/dist/primitives/threadListFocusGroup.d.ts +2 -1
  111. package/dist/primitives/threadListFocusGroup.d.ts.map +1 -1
  112. package/dist/primitives/threadListFocusGroup.js +2 -2
  113. package/dist/primitives/threadListFocusGroup.js.map +1 -1
  114. package/dist/primitives/threadListItem/ThreadListItemRoot.js +3 -3
  115. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  116. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +1 -1
  117. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  118. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +1 -1
  119. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
  120. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
  121. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +1 -1
  122. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
  123. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
  124. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +1 -2
  125. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
  126. package/dist/primitives/threadListItemMore/scope.d.ts +2 -2
  127. package/dist/primitives/threadListItemMore/scope.d.ts.map +1 -1
  128. package/dist/primitives/threadListItemMore/scope.js.map +1 -1
  129. package/dist/sandbox-host/SandboxHost.d.ts.map +1 -1
  130. package/dist/sandbox-host/SandboxHost.js +137 -70
  131. package/dist/sandbox-host/SandboxHost.js.map +1 -1
  132. package/dist/unstable/useLiveCompletionAdapter.js +3 -1
  133. package/dist/unstable/useLiveCompletionAdapter.js.map +1 -1
  134. package/dist/unstable/useSlashCommandAdapter.js +41 -27
  135. package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
  136. package/dist/utils/Primitive.d.ts +2 -2
  137. package/dist/utils/Primitive.js +2 -2
  138. package/dist/utils/Primitive.js.map +1 -1
  139. package/dist/utils/createActionButton.js +3 -3
  140. package/dist/utils/createActionButton.js.map +1 -1
  141. package/dist/utils/hooks/useOnResizeContent.js +1 -1
  142. package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
  143. package/dist/utils/hooks/useOnScrollToBottom.js +1 -1
  144. package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
  145. package/dist/utils/smooth/SmoothContext.d.ts +24 -0
  146. package/dist/utils/smooth/SmoothContext.d.ts.map +1 -1
  147. package/dist/utils/smooth/useSmooth.js +1 -1
  148. package/dist/utils/smooth/useSmooth.js.map +1 -1
  149. package/dist/utils/useToolArgsFieldStatus.d.ts +5 -1
  150. package/package.json +11 -19
  151. package/src/index.ts +9 -1
  152. package/src/mcp-apps/McpAppRenderer.test.tsx +133 -4
  153. package/src/mcp-apps/McpAppRenderer.tsx +28 -21
  154. package/src/mcp-apps/McpAppsRemoteHost.concurrent.test.tsx +215 -0
  155. package/src/mcp-apps/McpAppsRemoteHost.ts +28 -12
  156. package/src/mcp-apps/app-frame.test.tsx +102 -0
  157. package/src/mcp-apps/app-frame.tsx +17 -4
  158. package/src/mcp-apps/index.ts +1 -0
  159. package/src/model-context/frame/AssistantFrame.test.ts +3 -3
  160. package/src/model-context/frame/SPEC_AssistantFrame.md +1 -1
  161. package/src/model-context/frame/useAssistantFrameHost.ts +2 -2
  162. package/src/model-context/makeAssistantVisible.tsx +1 -1
  163. package/src/primitives/actionBar/ActionBarCopy.tsx +1 -1
  164. package/src/primitives/actionBar/ActionBarExportMarkdown.tsx +1 -1
  165. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
  166. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
  167. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +1 -1
  168. package/src/primitives/actionBarMore/scope.ts +2 -2
  169. package/src/primitives/assistantModal/AssistantModalContent.tsx +1 -1
  170. package/src/primitives/assistantModal/scope.ts +2 -2
  171. package/src/primitives/composer/ComposerAttachmentDropzone.tsx +1 -1
  172. package/src/primitives/composer/ComposerInput.test.tsx +2 -1
  173. package/src/primitives/composer/ComposerInput.tsx +3 -3
  174. package/src/primitives/composer/ComposerQuote.tsx +1 -1
  175. package/src/primitives/composer/ComposerRoot.tsx +1 -1
  176. package/src/primitives/composer/trigger/TriggerPopover.tsx +16 -1
  177. package/src/primitives/composer/trigger/TriggerPopoverBack.tsx +1 -1
  178. package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +1 -1
  179. package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +1 -1
  180. package/src/primitives/composer/trigger/TriggerPopoverResource.ts +4 -1
  181. package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +2 -0
  182. package/src/primitives/composer/trigger/detectTrigger.test.ts +88 -5
  183. package/src/primitives/composer/trigger/detectTrigger.ts +50 -9
  184. package/src/primitives/composer/trigger/index.ts +1 -0
  185. package/src/primitives/composer/trigger/triggerDetectionResource.ts +10 -7
  186. package/src/primitives/composer/trigger/triggerSelectionResource.test.ts +15 -3
  187. package/src/primitives/composer/trigger/triggerSelectionResource.ts +1 -4
  188. package/src/primitives/composer.ts +1 -0
  189. package/src/primitives/message/MessageRoot.tsx +1 -1
  190. package/src/primitives/selectionToolbar/SelectionToolbarQuote.tsx +1 -1
  191. package/src/primitives/selectionToolbar/SelectionToolbarRoot.tsx +1 -1
  192. package/src/primitives/thread/ThreadViewport.tsx +1 -1
  193. package/src/primitives/thread/ThreadViewportFooter.tsx +1 -1
  194. package/src/primitives/thread/useThreadViewportAutoScroll.ts +1 -1
  195. package/src/primitives/threadList/ThreadListNew.tsx +1 -1
  196. package/src/primitives/threadListFocusGroup.ts +2 -2
  197. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +1 -1
  198. package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +1 -1
  199. package/src/primitives/threadListItemMore/ThreadListItemMoreContent.tsx +1 -1
  200. package/src/primitives/threadListItemMore/ThreadListItemMoreRoot.tsx +1 -1
  201. package/src/primitives/threadListItemMore/ThreadListItemMoreTrigger.tsx +2 -2
  202. package/src/primitives/threadListItemMore/scope.ts +2 -2
  203. package/src/sandbox-host/SandboxHost.test.tsx +45 -1
  204. package/src/sandbox-host/SandboxHost.tsx +16 -3
  205. package/src/tests/RemoteThreadListRuntime.adapterProvider.test.tsx +31 -1
  206. package/src/unstable/useLiveCompletionAdapter.test.tsx +60 -1
  207. package/src/unstable/useLiveCompletionAdapter.ts +4 -1
  208. package/src/unstable/useSlashCommandAdapter.test.tsx +141 -0
  209. package/src/unstable/useSlashCommandAdapter.ts +52 -17
  210. package/src/utils/Primitive.tsx +2 -2
  211. package/src/utils/createActionButton.tsx +1 -1
  212. package/src/utils/hooks/useOnResizeContent.ts +1 -1
  213. package/src/utils/hooks/useOnScrollToBottom.ts +1 -1
  214. package/src/utils/smooth/useSmooth.ts +1 -1
  215. package/dist/legacy-runtime/runtime/MessagePartRuntime.d.ts +0 -3
  216. package/dist/legacy-runtime/runtime/MessagePartRuntime.js +0 -2
  217. package/dist/legacy-runtime/runtime/MessageRuntime.d.ts +0 -3
  218. package/dist/legacy-runtime/runtime/MessageRuntime.js +0 -2
  219. package/dist/legacy-runtime/runtime/ThreadListRuntime.d.ts +0 -3
  220. package/dist/legacy-runtime/runtime/ThreadListRuntime.js +0 -2
  221. package/src/legacy-runtime/runtime/MessagePartRuntime.ts +0 -2
  222. package/src/legacy-runtime/runtime/MessageRuntime.ts +0 -3
  223. package/src/legacy-runtime/runtime/ThreadListRuntime.ts +0 -4
@@ -53,40 +53,60 @@ const useTriggerBehaviorRegistration = () => {
53
53
  * ```
54
54
  */
55
55
  const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
56
- const $ = c(61);
56
+ const $ = c(69);
57
57
  let adapter;
58
58
  let ariaLabel;
59
59
  let char;
60
60
  let children;
61
+ let matcher;
61
62
  let props;
62
63
  let t1;
63
64
  if ($[0] !== t0) {
64
- ({char, adapter, isLoading: t1, "aria-label": ariaLabel, children, ...props} = t0);
65
+ ({char, matcher, adapter, isLoading: t1, "aria-label": ariaLabel, children, ...props} = t0);
65
66
  $[0] = t0;
66
67
  $[1] = adapter;
67
68
  $[2] = ariaLabel;
68
69
  $[3] = char;
69
70
  $[4] = children;
70
- $[5] = props;
71
- $[6] = t1;
71
+ $[5] = matcher;
72
+ $[6] = props;
73
+ $[7] = t1;
72
74
  } else {
73
75
  adapter = $[1];
74
76
  ariaLabel = $[2];
75
77
  char = $[3];
76
78
  children = $[4];
77
- props = $[5];
78
- t1 = $[6];
79
+ matcher = $[5];
80
+ props = $[6];
81
+ t1 = $[7];
79
82
  }
80
83
  const isLoading = t1 === void 0 ? false : t1;
81
84
  const aui = useAui();
82
85
  const text = useAuiState(_temp);
83
86
  const popoverId = useId();
87
+ const matcherRef = useRef(matcher);
88
+ let t2;
89
+ if ($[8] !== matcher) {
90
+ t2 = () => {
91
+ matcherRef.current = matcher;
92
+ };
93
+ $[8] = matcher;
94
+ $[9] = t2;
95
+ } else t2 = $[9];
96
+ useEffect(t2);
97
+ let t3;
98
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
99
+ t3 = () => (nextText, triggerChar, cursorPosition) => matcherRef.current(nextText, triggerChar, cursorPosition);
100
+ $[10] = t3;
101
+ } else t3 = $[10];
102
+ const [registeredMatcher] = useState(t3);
103
+ const hasMatcher = matcher !== void 0;
84
104
  const behaviorRef = useRef(null);
85
105
  const [behavior, setBehavior] = useState(null);
86
106
  const registrationCountRef = useRef(0);
87
- let t2;
88
- if ($[7] !== char) {
89
- t2 = (next) => {
107
+ let t4;
108
+ if ($[11] !== char) {
109
+ t4 = (next) => {
90
110
  registrationCountRef.current = registrationCountRef.current + 1;
91
111
  if (process.env.NODE_ENV !== "production" && registrationCountRef.current > 1) console.warn(`[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.`);
92
112
  behaviorRef.current = next;
@@ -99,149 +119,156 @@ const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
99
119
  }
100
120
  };
101
121
  };
102
- $[7] = char;
103
- $[8] = t2;
104
- } else t2 = $[8];
105
- const register = t2;
106
- let t3;
107
- if ($[9] !== register) {
108
- t3 = { register };
109
- $[9] = register;
110
- $[10] = t3;
111
- } else t3 = $[10];
112
- const registration = t3;
113
- const t4 = behavior ?? void 0;
122
+ $[11] = char;
123
+ $[12] = t4;
124
+ } else t4 = $[12];
125
+ const register = t4;
114
126
  let t5;
115
- if ($[11] !== adapter || $[12] !== aui || $[13] !== char || $[14] !== isLoading || $[15] !== popoverId || $[16] !== t4 || $[17] !== text) {
116
- t5 = TriggerPopoverResource({
127
+ if ($[13] !== register) {
128
+ t5 = { register };
129
+ $[13] = register;
130
+ $[14] = t5;
131
+ } else t5 = $[14];
132
+ const registration = t5;
133
+ const t6 = behavior ?? void 0;
134
+ let t7;
135
+ if ($[15] !== adapter || $[16] !== aui || $[17] !== char || $[18] !== isLoading || $[19] !== matcher || $[20] !== popoverId || $[21] !== t6 || $[22] !== text) {
136
+ t7 = TriggerPopoverResource({
117
137
  adapter,
118
138
  text,
119
139
  triggerChar: char,
120
- behavior: t4,
140
+ matcher,
141
+ behavior: t6,
121
142
  aui,
122
143
  popoverId,
123
144
  isLoading
124
145
  });
125
- $[11] = adapter;
126
- $[12] = aui;
127
- $[13] = char;
128
- $[14] = isLoading;
129
- $[15] = popoverId;
130
- $[16] = t4;
131
- $[17] = text;
132
- $[18] = t5;
133
- } else t5 = $[18];
134
- const resource = useResource(t5);
135
- let t6;
136
- if ($[19] !== resource) {
137
- t6 = () => resource;
138
- $[19] = resource;
139
- $[20] = t6;
140
- } else t6 = $[20];
141
- const getResource = useEffectEvent(t6);
146
+ $[15] = adapter;
147
+ $[16] = aui;
148
+ $[17] = char;
149
+ $[18] = isLoading;
150
+ $[19] = matcher;
151
+ $[20] = popoverId;
152
+ $[21] = t6;
153
+ $[22] = text;
154
+ $[23] = t7;
155
+ } else t7 = $[23];
156
+ const resource = useResource(t7);
157
+ let t8;
158
+ if ($[24] !== resource) {
159
+ t8 = () => resource;
160
+ $[24] = resource;
161
+ $[25] = t8;
162
+ } else t8 = $[25];
163
+ const getResource = useEffectEvent(t8);
142
164
  const root = useTriggerPopoverRootContext();
143
- let t7;
144
- if ($[21] !== behavior || $[22] !== char || $[23] !== getResource || $[24] !== root) {
145
- t7 = () => root.register({
165
+ let t9;
166
+ if ($[26] !== behavior || $[27] !== char || $[28] !== getResource || $[29] !== hasMatcher || $[30] !== registeredMatcher || $[31] !== root) {
167
+ t9 = () => root.register({
146
168
  char,
169
+ ...hasMatcher ? { matcher: registeredMatcher } : {},
147
170
  ...behavior ? { behavior } : {},
148
171
  resource: getResource()
149
172
  });
150
- $[21] = behavior;
151
- $[22] = char;
152
- $[23] = getResource;
153
- $[24] = root;
154
- $[25] = t7;
155
- } else t7 = $[25];
156
- let t8;
157
- if ($[26] !== behavior || $[27] !== char || $[28] !== root) {
158
- t8 = [
173
+ $[26] = behavior;
174
+ $[27] = char;
175
+ $[28] = getResource;
176
+ $[29] = hasMatcher;
177
+ $[30] = registeredMatcher;
178
+ $[31] = root;
179
+ $[32] = t9;
180
+ } else t9 = $[32];
181
+ let t10;
182
+ if ($[33] !== behavior || $[34] !== char || $[35] !== hasMatcher || $[36] !== root) {
183
+ t10 = [
159
184
  root,
160
185
  char,
186
+ hasMatcher,
161
187
  behavior
162
188
  ];
163
- $[26] = behavior;
164
- $[27] = char;
165
- $[28] = root;
166
- $[29] = t8;
167
- } else t8 = $[29];
168
- useEffect(t7, t8);
189
+ $[33] = behavior;
190
+ $[34] = char;
191
+ $[35] = hasMatcher;
192
+ $[36] = root;
193
+ $[37] = t10;
194
+ } else t10 = $[37];
195
+ useEffect(t9, t10);
169
196
  const pluginRegistry = useComposerInputPluginRegistryOptional();
170
- let t9;
171
- if ($[30] !== getResource || $[31] !== pluginRegistry) {
172
- t9 = () => {
197
+ let t11;
198
+ if ($[38] !== getResource || $[39] !== pluginRegistry) {
199
+ t11 = () => {
173
200
  if (!pluginRegistry) return;
174
201
  return pluginRegistry.register(getResource());
175
202
  };
176
- $[30] = getResource;
177
- $[31] = pluginRegistry;
178
- $[32] = t9;
179
- } else t9 = $[32];
180
- let t10;
181
- if ($[33] !== pluginRegistry) {
182
- t10 = [pluginRegistry];
183
- $[33] = pluginRegistry;
184
- $[34] = t10;
185
- } else t10 = $[34];
186
- useEffect(t9, t10);
203
+ $[38] = getResource;
204
+ $[39] = pluginRegistry;
205
+ $[40] = t11;
206
+ } else t11 = $[40];
207
+ let t12;
208
+ if ($[41] !== pluginRegistry) {
209
+ t12 = [pluginRegistry];
210
+ $[41] = pluginRegistry;
211
+ $[42] = t12;
212
+ } else t12 = $[42];
213
+ useEffect(t11, t12);
187
214
  const open = behavior !== null && resource.open;
188
215
  const aria = useTriggerPopoverAriaPublish();
189
- let t11;
190
- let t12;
191
- if ($[35] !== aria || $[36] !== char || $[37] !== open) {
192
- t11 = () => {
216
+ let t13;
217
+ let t14;
218
+ if ($[43] !== aria || $[44] !== char || $[45] !== open) {
219
+ t13 = () => {
193
220
  if (!open) return;
194
221
  return () => {
195
222
  aria.setActiveAria(char, null);
196
223
  };
197
224
  };
198
- t12 = [
225
+ t14 = [
199
226
  aria,
200
227
  char,
201
228
  open
202
229
  ];
203
- $[35] = aria;
204
- $[36] = char;
205
- $[37] = open;
206
- $[38] = t11;
207
- $[39] = t12;
230
+ $[43] = aria;
231
+ $[44] = char;
232
+ $[45] = open;
233
+ $[46] = t13;
234
+ $[47] = t14;
208
235
  } else {
209
- t11 = $[38];
210
- t12 = $[39];
236
+ t13 = $[46];
237
+ t14 = $[47];
211
238
  }
212
- useEffect(t11, t12);
213
- let t13;
214
- let t14;
215
- if ($[40] !== aria || $[41] !== char || $[42] !== open || $[43] !== popoverId || $[44] !== resource.highlightedItemId) {
216
- t13 = () => {
239
+ useEffect(t13, t14);
240
+ let t15;
241
+ let t16;
242
+ if ($[48] !== aria || $[49] !== char || $[50] !== open || $[51] !== popoverId || $[52] !== resource.highlightedItemId) {
243
+ t15 = () => {
217
244
  if (!open) return;
218
245
  aria.setActiveAria(char, {
219
246
  popoverId,
220
247
  highlightedItemId: resource.highlightedItemId
221
248
  });
222
249
  };
223
- t14 = [
250
+ t16 = [
224
251
  aria,
225
252
  char,
226
253
  popoverId,
227
254
  open,
228
255
  resource.highlightedItemId
229
256
  ];
230
- $[40] = aria;
231
- $[41] = char;
232
- $[42] = open;
233
- $[43] = popoverId;
234
- $[44] = resource.highlightedItemId;
235
- $[45] = t13;
236
- $[46] = t14;
257
+ $[48] = aria;
258
+ $[49] = char;
259
+ $[50] = open;
260
+ $[51] = popoverId;
261
+ $[52] = resource.highlightedItemId;
262
+ $[53] = t15;
263
+ $[54] = t16;
237
264
  } else {
238
- t13 = $[45];
239
- t14 = $[46];
265
+ t15 = $[53];
266
+ t16 = $[54];
240
267
  }
241
- useEffect(t13, t14);
242
- let t15;
243
- if ($[47] !== ariaLabel || $[48] !== children || $[49] !== forwardedRef || $[50] !== open || $[51] !== popoverId || $[52] !== props || $[53] !== resource.highlightedItemId) {
244
- t15 = open ? /* @__PURE__ */ jsx(Primitive.div, {
268
+ useEffect(t15, t16);
269
+ let t17;
270
+ if ($[55] !== ariaLabel || $[56] !== children || $[57] !== forwardedRef || $[58] !== open || $[59] !== popoverId || $[60] !== props || $[61] !== resource.highlightedItemId) {
271
+ t17 = open ? /* @__PURE__ */ jsx(Primitive.div, {
245
272
  role: "listbox",
246
273
  id: popoverId,
247
274
  "aria-label": ariaLabel ?? "Suggestions",
@@ -251,36 +278,36 @@ const ComposerPrimitiveTriggerPopover = forwardRef((t0, forwardedRef) => {
251
278
  ref: forwardedRef,
252
279
  children
253
280
  }) : children;
254
- $[47] = ariaLabel;
255
- $[48] = children;
256
- $[49] = forwardedRef;
257
- $[50] = open;
258
- $[51] = popoverId;
259
- $[52] = props;
260
- $[53] = resource.highlightedItemId;
261
- $[54] = t15;
262
- } else t15 = $[54];
263
- let t16;
264
- if ($[55] !== resource || $[56] !== t15) {
265
- t16 = /* @__PURE__ */ jsx(TriggerPopoverScopeContext.Provider, {
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];
290
+ let t18;
291
+ if ($[63] !== resource || $[64] !== t17) {
292
+ t18 = /* @__PURE__ */ jsx(TriggerPopoverScopeContext.Provider, {
266
293
  value: resource,
267
- children: t15
294
+ children: t17
268
295
  });
269
- $[55] = resource;
270
- $[56] = t15;
271
- $[57] = t16;
272
- } else t16 = $[57];
273
- let t17;
274
- if ($[58] !== registration || $[59] !== t16) {
275
- t17 = /* @__PURE__ */ jsx(TriggerBehaviorRegistrationContext.Provider, {
296
+ $[63] = resource;
297
+ $[64] = t17;
298
+ $[65] = t18;
299
+ } else t18 = $[65];
300
+ let t19;
301
+ if ($[66] !== registration || $[67] !== t18) {
302
+ t19 = /* @__PURE__ */ jsx(TriggerBehaviorRegistrationContext.Provider, {
276
303
  value: registration,
277
- children: t16
304
+ children: t18
278
305
  });
279
- $[58] = registration;
280
- $[59] = t16;
281
- $[60] = t17;
282
- } else t17 = $[60];
283
- return t17;
306
+ $[66] = registration;
307
+ $[67] = t18;
308
+ $[68] = t19;
309
+ } else t19 = $[68];
310
+ return t19;
284
311
  });
285
312
  ComposerPrimitiveTriggerPopover.displayName = "ComposerPrimitive.TriggerPopover";
286
313
  function _temp(s) {
@@ -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","TriggerPopoverScopeContext","useTriggerPopoverScopeContext","ctx","Error","useTriggerPopoverScopeContextOptional","TriggerBehaviorRegistration","register","behavior","TriggerBehaviorRegistrationContext","useTriggerBehaviorRegistration","ComposerPrimitiveTriggerPopover","Element","div","Props","Omit","char","adapter","isLoading","t0","forwardedRef","$","ariaLabel","children","props","t1","undefined","aui","text","_temp","popoverId","behaviorRef","setBehavior","registrationCountRef","t2","next","current","process","env","NODE_ENV","console","warn","Math","max","t3","registration","t4","t5","triggerChar","resource","t6","getResource","root","t7","t8","pluginRegistry","t9","t10","open","aria","t11","t12","setActiveAria","t13","t14","highlightedItemId","t15","t16","t17","displayName","s","composer"],"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\";\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 /** 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 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\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 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 ...(behavior ? { behavior } : {}),\n resource: getResource(),\n });\n }, [root, char, 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","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"],"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,10 +1,10 @@
1
1
  "use client";
2
- import { Primitive } from "../../../utils/Primitive.js";
2
+ import { Primitive as Primitive$1 } from "../../../utils/Primitive.js";
3
3
  import { useTriggerPopoverScopeContext } from "./TriggerPopover.js";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { forwardRef } from "@assistant-ui/tap/react-shim";
6
6
  import { jsx } from "react/jsx-runtime";
7
- import { composeEventHandlers } from "@radix-ui/primitive";
7
+ import { composeEventHandlers } from "radix-ui/internal";
8
8
  //#region src/primitives/composer/trigger/TriggerPopoverBack.tsx
9
9
  /**
10
10
  * A button that navigates back from category items to the category list.
@@ -34,7 +34,7 @@ const ComposerPrimitiveTriggerPopoverBack = forwardRef((t0, forwardedRef) => {
34
34
  } else t1 = $[5];
35
35
  let t2;
36
36
  if ($[6] !== forwardedRef || $[7] !== props || $[8] !== t1) {
37
- t2 = /* @__PURE__ */ jsx(Primitive.button, {
37
+ t2 = /* @__PURE__ */ jsx(Primitive$1.button, {
38
38
  type: "button",
39
39
  ...props,
40
40
  ref: forwardedRef,
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverBack.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","forwardRef","composeEventHandlers","useTriggerPopoverScopeContext","ComposerPrimitiveTriggerPopoverBack","Element","button","Props","t0","forwardedRef","$","onClick","props","activeCategoryId","isSearchMode","goBack","open","t1","t2","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\n\nexport namespace ComposerPrimitiveTriggerPopoverBack {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button that navigates back from category items to the category list.\n * Only renders when a category is active (drill-down view).\n */\nexport const ComposerPrimitiveTriggerPopoverBack = forwardRef<\n ComposerPrimitiveTriggerPopoverBack.Element,\n ComposerPrimitiveTriggerPopoverBack.Props\n>(({ onClick, ...props }, forwardedRef) => {\n const { activeCategoryId, isSearchMode, goBack, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || !activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, goBack)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverBack.displayName =\n \"ComposerPrimitive.TriggerPopoverBack\";\n"],"mappings":";;;;;;;;;;;;AAoBA,MAAaQ,sCAAsCH,YAGjDO,IAAAC,iBAAA;CAAA,MAAAC,IAAAb,EAAA,EAAA;CAAA,IAAAc;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAG,YAAAC,SAAAJ;EAAqBE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,UAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACtB,MAAA,EAAAG,kBAAAC,cAAAC,QAAAC,SACEb,8BAA8B;CAEhC,IAAI,CAACa,QAAD,CAAUH,oBAAVC,cAA0C,OAAS;CAAK,IAAAG;CAAA,IAAAP,EAAA,OAAAK,UAAAL,EAAA,OAAAC,SAAA;EAO/CM,KAAAf,qBAAqBS,SAASI,MAAM;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAC;EAAAD,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,SAAAF,EAAA,OAAAO,IAAA;EAJhDC,KAAA,oBAAA,UAAA,QAAA;GACO,MAAA;GAAQ,GACTN;GACCH,KAAAA;GACI,SAAAQ;EAAqC,CAAA;EAC9CP,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OALFQ;AAKE,CAEL;AAEDd,oCAAoCe,cAClC"}
1
+ {"version":3,"file":"TriggerPopoverBack.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","forwardRef","composeEventHandlers","useTriggerPopoverScopeContext","ComposerPrimitiveTriggerPopoverBack","Element","button","Props","t0","forwardedRef","$","onClick","props","activeCategoryId","isSearchMode","goBack","open","t1","t2","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\n\nexport namespace ComposerPrimitiveTriggerPopoverBack {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button that navigates back from category items to the category list.\n * Only renders when a category is active (drill-down view).\n */\nexport const ComposerPrimitiveTriggerPopoverBack = forwardRef<\n ComposerPrimitiveTriggerPopoverBack.Element,\n ComposerPrimitiveTriggerPopoverBack.Props\n>(({ onClick, ...props }, forwardedRef) => {\n const { activeCategoryId, isSearchMode, goBack, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || !activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, goBack)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverBack.displayName =\n \"ComposerPrimitive.TriggerPopoverBack\";\n"],"mappings":";;;;;;;;;;;;AAoBA,MAAaQ,sCAAsCH,YAGjDO,IAAAC,iBAAA;CAAA,MAAAC,IAAAb,EAAA,EAAA;CAAA,IAAAc;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAG,SAAA,GAAAC,SAAAJ;EAAqBE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,UAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACtB,MAAA,EAAAG,kBAAAC,cAAAC,QAAAC,SACEb,8BAA8B;CAEhC,IAAI,CAACa,QAAD,CAAUH,oBAAVC,cAA0C,OAAS;CAAK,IAAAG;CAAA,IAAAP,EAAA,OAAAK,UAAAL,EAAA,OAAAC,SAAA;EAO/CM,KAAAf,qBAAqBS,SAASI,MAAM;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAC;EAAAD,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,SAAAF,EAAA,OAAAO,IAAA;EAJhDC,KAAA,oBAAA,YAAA,QAAA;GACO,MAAA;GAAQ,GACTN;GACCH,KAAAA;GACI,SAAAQ;EAAqC,CAAA;EAC9CP,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OALFQ;AAKE,CAEL;AAEDd,oCAAoCe,cAClC"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { Primitive } from "../../../utils/Primitive.js";
2
+ import { Primitive as Primitive$1 } from "../../../utils/Primitive.js";
3
3
  import { useTriggerPopoverScopeContext } from "./TriggerPopover.js";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { forwardRef } from "@assistant-ui/tap/react-shim";
6
6
  import { jsx } from "react/jsx-runtime";
7
- import { composeEventHandlers } from "@radix-ui/primitive";
7
+ import { composeEventHandlers } from "radix-ui/internal";
8
8
  //#region src/primitives/composer/trigger/TriggerPopoverCategories.tsx
9
9
  /**
10
10
  * Renders the top-level category list via a render function.
@@ -38,7 +38,7 @@ const ComposerPrimitiveTriggerPopoverCategories = forwardRef((t0, forwardedRef)
38
38
  } else t2 = $[6];
39
39
  let t3;
40
40
  if ($[7] !== forwardedRef || $[8] !== props || $[9] !== t1 || $[10] !== t2) {
41
- t3 = /* @__PURE__ */ jsx(Primitive.div, {
41
+ t3 = /* @__PURE__ */ jsx(Primitive$1.div, {
42
42
  role: "group",
43
43
  "aria-label": t1,
44
44
  ...props,
@@ -131,7 +131,7 @@ const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef((t0, forwardedRef
131
131
  } else t7 = $[21];
132
132
  let t8;
133
133
  if ($[22] !== forwardedRef || $[23] !== isHighlighted || $[24] !== props || $[25] !== t4 || $[26] !== t5 || $[27] !== t6 || $[28] !== t7) {
134
- t8 = /* @__PURE__ */ jsx(Primitive.button, {
134
+ t8 = /* @__PURE__ */ jsx(Primitive$1.button, {
135
135
  type: "button",
136
136
  role: "option",
137
137
  id: t4,
@@ -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"],"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/primitive\";\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","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"],"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,10 +1,10 @@
1
1
  "use client";
2
- import { Primitive } from "../../../utils/Primitive.js";
2
+ import { Primitive as Primitive$1 } from "../../../utils/Primitive.js";
3
3
  import { useTriggerPopoverScopeContext } from "./TriggerPopover.js";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { forwardRef } from "@assistant-ui/tap/react-shim";
6
6
  import { jsx } from "react/jsx-runtime";
7
- import { composeEventHandlers } from "@radix-ui/primitive";
7
+ import { composeEventHandlers } from "radix-ui/internal";
8
8
  //#region src/primitives/composer/trigger/TriggerPopoverItems.tsx
9
9
  /**
10
10
  * Renders the list of items within a category or search results via a render function.
@@ -38,7 +38,7 @@ const ComposerPrimitiveTriggerPopoverItems = forwardRef((t0, forwardedRef) => {
38
38
  } else t2 = $[6];
39
39
  let t3;
40
40
  if ($[7] !== forwardedRef || $[8] !== props || $[9] !== t1 || $[10] !== t2) {
41
- t3 = /* @__PURE__ */ jsx(Primitive.div, {
41
+ t3 = /* @__PURE__ */ jsx(Primitive$1.div, {
42
42
  role: "group",
43
43
  "aria-label": t1,
44
44
  ...props,
@@ -129,7 +129,7 @@ const ComposerPrimitiveTriggerPopoverItem = forwardRef((t0, forwardedRef) => {
129
129
  } else t7 = $[21];
130
130
  let t8;
131
131
  if ($[22] !== forwardedRef || $[23] !== isHighlighted || $[24] !== props || $[25] !== t4 || $[26] !== t5 || $[27] !== t6 || $[28] !== t7) {
132
- t8 = /* @__PURE__ */ jsx(Primitive.button, {
132
+ t8 = /* @__PURE__ */ jsx(Primitive$1.button, {
133
133
  type: "button",
134
134
  role: "option",
135
135
  id: t4,