@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
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverItems.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerItem","ComposerPrimitiveTriggerPopoverItems","Element","div","Props","Omit","children","items","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverItem","button","item","index","indexProp","onClick","onMouseMove","selectItem","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","i","itemIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.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_TriggerItem } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItems {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (items: readonly Unstable_TriggerItem[]) => ReactNode;\n };\n}\n\n/**\n * Renders the list of items within a category or search results via a render function.\n * Only renders when a category is active or search mode is on.\n */\nexport const ComposerPrimitiveTriggerPopoverItems = forwardRef<\n ComposerPrimitiveTriggerPopoverItems.Element,\n ComposerPrimitiveTriggerPopoverItems.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { items, 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 ?? \"Items\"}\n {...props}\n ref={forwardedRef}\n >\n {children(items)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverItems.displayName =\n \"ComposerPrimitive.TriggerPopoverItems\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n item: Unstable_TriggerItem;\n index?: number | undefined;\n };\n}\n\n/**\n * A button that selects a trigger item.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverItem = forwardRef<\n ComposerPrimitiveTriggerPopoverItem.Element,\n ComposerPrimitiveTriggerPopoverItem.Props\n>(\n (\n { item, index: indexProp, onClick, onMouseMove, ...props },\n forwardedRef,\n ) => {\n const {\n selectItem,\n highlightIndex,\n items,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectItem(item);\n }, [selectItem, item]);\n\n const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);\n const isHighlighted =\n (isSearchMode || activeCategoryId !== null) &&\n itemIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(itemIndex);\n }, [highlightIndex, itemIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${item.id}`}\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);\n\nComposerPrimitiveTriggerPopoverItem.displayName =\n \"ComposerPrimitive.TriggerPopoverItem\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"TriggerPopoverItems.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerItem","ComposerPrimitiveTriggerPopoverItems","Element","div","Props","Omit","children","items","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverItem","button","item","index","indexProp","onClick","onMouseMove","selectItem","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","i","itemIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.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_TriggerItem } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItems {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (items: readonly Unstable_TriggerItem[]) => ReactNode;\n };\n}\n\n/**\n * Renders the list of items within a category or search results via a render function.\n * Only renders when a category is active or search mode is on.\n */\nexport const ComposerPrimitiveTriggerPopoverItems = forwardRef<\n ComposerPrimitiveTriggerPopoverItems.Element,\n ComposerPrimitiveTriggerPopoverItems.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { items, 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 ?? \"Items\"}\n {...props}\n ref={forwardedRef}\n >\n {children(items)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverItems.displayName =\n \"ComposerPrimitive.TriggerPopoverItems\";\n\nexport namespace ComposerPrimitiveTriggerPopoverItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n item: Unstable_TriggerItem;\n index?: number | undefined;\n };\n}\n\n/**\n * A button that selects a trigger item.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverItem = forwardRef<\n ComposerPrimitiveTriggerPopoverItem.Element,\n ComposerPrimitiveTriggerPopoverItem.Props\n>(\n (\n { item, index: indexProp, onClick, onMouseMove, ...props },\n forwardedRef,\n ) => {\n const {\n selectItem,\n highlightIndex,\n items,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectItem(item);\n }, [selectItem, item]);\n\n const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);\n const isHighlighted =\n (isSearchMode || activeCategoryId !== null) &&\n itemIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(itemIndex);\n }, [highlightIndex, itemIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${item.id}`}\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);\n\nComposerPrimitiveTriggerPopoverItem.displayName =\n \"ComposerPrimitive.TriggerPopoverItem\";\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { TriggerMatcher } from "./detectTrigger.js";
1
2
  import { SelectItemOverride, TriggerBehavior } from "./triggerSelectionResource.js";
2
3
  import { TriggerPopoverKeyEvent } from "./triggerKeyboardResource.js";
3
4
  import { AssistantClient } from "@assistant-ui/store";
@@ -37,6 +38,7 @@ declare const TriggerPopoverResource: import("@assistant-ui/tap").Resource<Trigg
37
38
  adapter: Unstable_TriggerAdapter | undefined;
38
39
  text: string;
39
40
  triggerChar: string;
41
+ matcher: TriggerMatcher | undefined;
40
42
  behavior: TriggerBehavior | undefined;
41
43
  aui: AssistantClient;
42
44
  /** Stable ID for accessible element IDs (pass React's useId() from component layer). */
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"mappings":";;;;;;KAqBY,mBAAmB;KAEnB;WACD;WACA;WACA;WACA,qBAAqB;WACrB,gBAAgB;WAChB;WACA;;WAEA;;WAEA;;WAEA;EAET,eAAe;EACf;EACA,WAAW,MAAM;EACjB;;EAEA,eAAe;EACf,cAAc;aACH;aACA;IACT;;EAGF,kBAAkB;EAClB,2BAA2B,IAAI;;cA2FpB,oDAAsB,SAAA;EA9ExB,SAAA;EACH;EACO;EACH,UAAA;EACL,KAAA;;EAEM;EACA"}
1
+ {"version":3,"file":"TriggerPopoverResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"mappings":";;;;;;;KAsBY,mBAAmB;KAEnB;WACD;WACA;WACA;WACA,qBAAqB;WACrB,gBAAgB;WAChB;WACA;;WAEA;;WAEA;;WAEA;EAET,eAAe;EACf;EACA,WAAW,MAAM;EACjB;;EAEA,eAAe;EACf,cAAc;aACH;aACA;IACT;;EAGF,kBAAkB;EAClB,2BAA2B,IAAI;;cA6FpB,oDAAsB,SAAA;EA/ExB,SAAA;EACH;EACO;EACJ,SAAA;EACC,UAAA;EACL,KAAA;;EAEM;EACA"}
@@ -8,44 +8,46 @@ import { resource, useResource } from "@assistant-ui/tap";
8
8
  //#region src/primitives/composer/trigger/TriggerPopoverResource.ts
9
9
  /** Composes detection, navigation, keyboard, and selection sub-resources. */
10
10
  const useTriggerPopoverResource = (t0) => {
11
- const $ = c(46);
12
- const { adapter, text, triggerChar, behavior, aui, popoverId, isLoading } = t0;
11
+ const $ = c(47);
12
+ const { adapter, text, triggerChar, matcher, behavior, aui, popoverId, isLoading } = t0;
13
13
  let t1;
14
- if ($[0] !== text || $[1] !== triggerChar) {
14
+ if ($[0] !== matcher || $[1] !== text || $[2] !== triggerChar) {
15
15
  t1 = TriggerDetectionResource({
16
16
  text,
17
- triggerChar
17
+ triggerChar,
18
+ matcher
18
19
  });
19
- $[0] = text;
20
- $[1] = triggerChar;
21
- $[2] = t1;
22
- } else t1 = $[2];
20
+ $[0] = matcher;
21
+ $[1] = text;
22
+ $[2] = triggerChar;
23
+ $[3] = t1;
24
+ } else t1 = $[3];
23
25
  const detection = useResource(t1);
24
26
  const open = detection.trigger !== null && adapter !== void 0 && behavior !== void 0;
25
27
  let t2;
26
- if ($[3] !== adapter || $[4] !== detection.query || $[5] !== open) {
28
+ if ($[4] !== adapter || $[5] !== detection.query || $[6] !== open) {
27
29
  t2 = TriggerNavigationResource({
28
30
  adapter,
29
31
  query: detection.query,
30
32
  open
31
33
  });
32
- $[3] = adapter;
33
- $[4] = detection.query;
34
- $[5] = open;
35
- $[6] = t2;
36
- } else t2 = $[6];
34
+ $[4] = adapter;
35
+ $[5] = detection.query;
36
+ $[6] = open;
37
+ $[7] = t2;
38
+ } else t2 = $[7];
37
39
  const navigation = useResource(t2);
38
40
  let t3;
39
- if ($[7] !== navigation) {
41
+ if ($[8] !== navigation) {
40
42
  t3 = () => {
41
43
  navigation.goBack();
42
44
  };
43
- $[7] = navigation;
44
- $[8] = t3;
45
- } else t3 = $[8];
45
+ $[8] = navigation;
46
+ $[9] = t3;
47
+ } else t3 = $[9];
46
48
  const onSelected = useEffectEvent(t3);
47
49
  let t4;
48
- if ($[9] !== aui || $[10] !== behavior || $[11] !== detection.setCursorPosition || $[12] !== detection.trigger || $[13] !== onSelected || $[14] !== triggerChar) {
50
+ if ($[10] !== aui || $[11] !== behavior || $[12] !== detection.setCursorPosition || $[13] !== detection.trigger || $[14] !== onSelected || $[15] !== triggerChar) {
49
51
  t4 = TriggerSelectionResource({
50
52
  behavior,
51
53
  trigger: detection.trigger,
@@ -54,17 +56,17 @@ const useTriggerPopoverResource = (t0) => {
54
56
  setCursorPosition: detection.setCursorPosition,
55
57
  onSelected
56
58
  });
57
- $[9] = aui;
58
- $[10] = behavior;
59
- $[11] = detection.setCursorPosition;
60
- $[12] = detection.trigger;
61
- $[13] = onSelected;
62
- $[14] = triggerChar;
63
- $[15] = t4;
64
- } else t4 = $[15];
59
+ $[10] = aui;
60
+ $[11] = behavior;
61
+ $[12] = detection.setCursorPosition;
62
+ $[13] = detection.trigger;
63
+ $[14] = onSelected;
64
+ $[15] = triggerChar;
65
+ $[16] = t4;
66
+ } else t4 = $[16];
65
67
  const selection = useResource(t4);
66
68
  let t5;
67
- if ($[16] !== detection.query || $[17] !== navigation.activeCategoryId || $[18] !== navigation.goBack || $[19] !== navigation.isSearchMode || $[20] !== navigation.navigableList || $[21] !== navigation.selectCategory || $[22] !== open || $[23] !== popoverId || $[24] !== selection.close || $[25] !== selection.selectItem) {
69
+ if ($[17] !== detection.query || $[18] !== navigation.activeCategoryId || $[19] !== navigation.goBack || $[20] !== navigation.isSearchMode || $[21] !== navigation.navigableList || $[22] !== navigation.selectCategory || $[23] !== open || $[24] !== popoverId || $[25] !== selection.close || $[26] !== selection.selectItem) {
68
70
  t5 = TriggerKeyboardResource({
69
71
  navigableList: navigation.navigableList,
70
72
  isSearchMode: navigation.isSearchMode,
@@ -77,21 +79,21 @@ const useTriggerPopoverResource = (t0) => {
77
79
  goBack: navigation.goBack,
78
80
  close: selection.close
79
81
  });
80
- $[16] = detection.query;
81
- $[17] = navigation.activeCategoryId;
82
- $[18] = navigation.goBack;
83
- $[19] = navigation.isSearchMode;
84
- $[20] = navigation.navigableList;
85
- $[21] = navigation.selectCategory;
86
- $[22] = open;
87
- $[23] = popoverId;
88
- $[24] = selection.close;
89
- $[25] = selection.selectItem;
90
- $[26] = t5;
91
- } else t5 = $[26];
82
+ $[17] = detection.query;
83
+ $[18] = navigation.activeCategoryId;
84
+ $[19] = navigation.goBack;
85
+ $[20] = navigation.isSearchMode;
86
+ $[21] = navigation.navigableList;
87
+ $[22] = navigation.selectCategory;
88
+ $[23] = open;
89
+ $[24] = popoverId;
90
+ $[25] = selection.close;
91
+ $[26] = selection.selectItem;
92
+ $[27] = t5;
93
+ } else t5 = $[27];
92
94
  const keyboard = useResource(t5);
93
95
  let t6;
94
- if ($[27] !== detection.query || $[28] !== detection.setCursorPosition || $[29] !== isLoading || $[30] !== keyboard.handleKeyDown || $[31] !== keyboard.highlightIndex || $[32] !== keyboard.highlightedIndex || $[33] !== keyboard.highlightedItemId || $[34] !== navigation.activeCategoryId || $[35] !== navigation.categories || $[36] !== navigation.goBack || $[37] !== navigation.isSearchMode || $[38] !== navigation.items || $[39] !== navigation.selectCategory || $[40] !== open || $[41] !== popoverId || $[42] !== selection.close || $[43] !== selection.registerSelectItemOverride || $[44] !== selection.selectItem) {
96
+ if ($[28] !== detection.query || $[29] !== detection.setCursorPosition || $[30] !== isLoading || $[31] !== keyboard.handleKeyDown || $[32] !== keyboard.highlightIndex || $[33] !== keyboard.highlightedIndex || $[34] !== keyboard.highlightedItemId || $[35] !== navigation.activeCategoryId || $[36] !== navigation.categories || $[37] !== navigation.goBack || $[38] !== navigation.isSearchMode || $[39] !== navigation.items || $[40] !== navigation.selectCategory || $[41] !== open || $[42] !== popoverId || $[43] !== selection.close || $[44] !== selection.registerSelectItemOverride || $[45] !== selection.selectItem) {
95
97
  t6 = {
96
98
  open,
97
99
  query: detection.query,
@@ -112,26 +114,26 @@ const useTriggerPopoverResource = (t0) => {
112
114
  setCursorPosition: detection.setCursorPosition,
113
115
  registerSelectItemOverride: selection.registerSelectItemOverride
114
116
  };
115
- $[27] = detection.query;
116
- $[28] = detection.setCursorPosition;
117
- $[29] = isLoading;
118
- $[30] = keyboard.handleKeyDown;
119
- $[31] = keyboard.highlightIndex;
120
- $[32] = keyboard.highlightedIndex;
121
- $[33] = keyboard.highlightedItemId;
122
- $[34] = navigation.activeCategoryId;
123
- $[35] = navigation.categories;
124
- $[36] = navigation.goBack;
125
- $[37] = navigation.isSearchMode;
126
- $[38] = navigation.items;
127
- $[39] = navigation.selectCategory;
128
- $[40] = open;
129
- $[41] = popoverId;
130
- $[42] = selection.close;
131
- $[43] = selection.registerSelectItemOverride;
132
- $[44] = selection.selectItem;
133
- $[45] = t6;
134
- } else t6 = $[45];
117
+ $[28] = detection.query;
118
+ $[29] = detection.setCursorPosition;
119
+ $[30] = isLoading;
120
+ $[31] = keyboard.handleKeyDown;
121
+ $[32] = keyboard.highlightIndex;
122
+ $[33] = keyboard.highlightedIndex;
123
+ $[34] = keyboard.highlightedItemId;
124
+ $[35] = navigation.activeCategoryId;
125
+ $[36] = navigation.categories;
126
+ $[37] = navigation.goBack;
127
+ $[38] = navigation.isSearchMode;
128
+ $[39] = navigation.items;
129
+ $[40] = navigation.selectCategory;
130
+ $[41] = open;
131
+ $[42] = popoverId;
132
+ $[43] = selection.close;
133
+ $[44] = selection.registerSelectItemOverride;
134
+ $[45] = selection.selectItem;
135
+ $[46] = t6;
136
+ } else t6 = $[46];
135
137
  return t6;
136
138
  };
137
139
  const TriggerPopoverResource = resource(useTriggerPopoverResource);
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverResource.js","names":["useEffectEvent","useResource","resource","Unstable_TriggerAdapter","Unstable_TriggerCategory","Unstable_TriggerItem","AssistantClient","TriggerDetectionResource","TriggerKeyboardResource","TriggerNavigationResource","TriggerSelectionResource","SelectItemOverride","TriggerBehavior","TriggerPopoverKeyEvent","OnSelectBehavior","TriggerPopoverResourceOutput","open","query","activeCategoryId","categories","items","highlightedIndex","isSearchMode","isLoading","popoverId","highlightedItemId","selectCategory","categoryId","goBack","selectItem","item","close","highlightIndex","index","handleKeyDown","e","key","shiftKey","preventDefault","setCursorPosition","pos","registerSelectItemOverride","fn","useTriggerPopoverResource","t0","$","_c","adapter","text","triggerChar","behavior","aui","t1","detection","trigger","undefined","t2","navigation","t3","onSelected","t4","selection","t5","navigableList","keyboard","t6","TriggerPopoverResource"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"sourcesContent":["import { useEffectEvent } from \"react\";\nimport { useResource, resource } from \"@assistant-ui/tap\";\nimport type {\n Unstable_TriggerAdapter,\n Unstable_TriggerCategory,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport { TriggerDetectionResource } from \"./triggerDetectionResource\";\nimport { TriggerKeyboardResource } from \"./triggerKeyboardResource\";\nimport { TriggerNavigationResource } from \"./triggerNavigationResource\";\nimport {\n TriggerSelectionResource,\n type SelectItemOverride,\n type TriggerBehavior,\n} from \"./triggerSelectionResource\";\n\nexport type { SelectItemOverride, TriggerBehavior };\nexport type { TriggerPopoverKeyEvent } from \"./triggerKeyboardResource\";\n\n/** @deprecated Use `TriggerBehavior`. */\nexport type OnSelectBehavior = TriggerBehavior;\n\nexport type TriggerPopoverResourceOutput = {\n readonly open: boolean;\n readonly query: string;\n readonly activeCategoryId: string | null;\n readonly categories: readonly Unstable_TriggerCategory[];\n readonly items: readonly Unstable_TriggerItem[];\n readonly highlightedIndex: number;\n readonly isSearchMode: boolean;\n /** Whether the adapter is currently resolving items (async sources). */\n readonly isLoading: boolean;\n /** Stable ID prefix for generating accessible element IDs. */\n readonly popoverId: string;\n /** ID of the currently highlighted item (for aria-activedescendant). */\n readonly highlightedItemId: string | undefined;\n\n selectCategory(categoryId: string): void;\n goBack(): void;\n selectItem(item: Unstable_TriggerItem): void;\n close(): void;\n /** Move the highlight to an entry index (e.g. from pointer hover). Out-of-range values are ignored. */\n highlightIndex(index: number): void;\n handleKeyDown(e: {\n readonly key: string;\n readonly shiftKey: boolean;\n preventDefault(): void;\n }): boolean;\n\n setCursorPosition(pos: number): void;\n registerSelectItemOverride(fn: SelectItemOverride): () => void;\n};\n\n/** Composes detection, navigation, keyboard, and selection sub-resources. */\nconst useTriggerPopoverResource = ({\n adapter,\n text,\n triggerChar,\n behavior,\n aui,\n popoverId,\n isLoading,\n}: {\n adapter: Unstable_TriggerAdapter | undefined;\n text: string;\n triggerChar: string;\n behavior: TriggerBehavior | undefined;\n aui: AssistantClient;\n /** Stable ID for accessible element IDs (pass React's useId() from component layer). */\n popoverId: string;\n isLoading: boolean;\n}): TriggerPopoverResourceOutput => {\n const detection = useResource(\n TriggerDetectionResource({ text, triggerChar }),\n );\n\n const open =\n detection.trigger !== null &&\n adapter !== undefined &&\n behavior !== undefined;\n\n const navigation = useResource(\n TriggerNavigationResource({\n adapter,\n query: detection.query,\n open,\n }),\n );\n\n const onSelected = useEffectEvent(() => {\n navigation.goBack();\n });\n\n const selection = useResource(\n TriggerSelectionResource({\n behavior,\n trigger: detection.trigger,\n aui,\n triggerChar,\n setCursorPosition: detection.setCursorPosition,\n onSelected,\n }),\n );\n\n const keyboard = useResource(\n TriggerKeyboardResource({\n navigableList: navigation.navigableList,\n isSearchMode: navigation.isSearchMode,\n activeCategoryId: navigation.activeCategoryId,\n query: detection.query,\n popoverId,\n open,\n selectItem: selection.selectItem,\n selectCategory: navigation.selectCategory,\n goBack: navigation.goBack,\n close: selection.close,\n }),\n );\n\n return {\n open,\n query: detection.query,\n activeCategoryId: navigation.activeCategoryId,\n categories: navigation.categories,\n items: navigation.items,\n highlightedIndex: keyboard.highlightedIndex,\n isSearchMode: navigation.isSearchMode,\n isLoading,\n popoverId,\n highlightedItemId: keyboard.highlightedItemId,\n selectCategory: navigation.selectCategory,\n goBack: navigation.goBack,\n selectItem: selection.selectItem,\n close: selection.close,\n highlightIndex: keyboard.highlightIndex,\n handleKeyDown: keyboard.handleKeyDown,\n setCursorPosition: detection.setCursorPosition,\n registerSelectItemOverride: selection.registerSelectItemOverride,\n };\n};\n\nexport const TriggerPopoverResource = resource(useTriggerPopoverResource);\n"],"mappings":"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"}
1
+ {"version":3,"file":"TriggerPopoverResource.js","names":["useEffectEvent","useResource","resource","Unstable_TriggerAdapter","Unstable_TriggerCategory","Unstable_TriggerItem","AssistantClient","TriggerDetectionResource","TriggerKeyboardResource","TriggerNavigationResource","TriggerSelectionResource","SelectItemOverride","TriggerBehavior","TriggerMatcher","TriggerPopoverKeyEvent","OnSelectBehavior","TriggerPopoverResourceOutput","open","query","activeCategoryId","categories","items","highlightedIndex","isSearchMode","isLoading","popoverId","highlightedItemId","selectCategory","categoryId","goBack","selectItem","item","close","highlightIndex","index","handleKeyDown","e","key","shiftKey","preventDefault","setCursorPosition","pos","registerSelectItemOverride","fn","useTriggerPopoverResource","t0","$","_c","adapter","text","triggerChar","matcher","behavior","aui","t1","detection","trigger","undefined","t2","navigation","t3","onSelected","t4","selection","t5","navigableList","keyboard","t6","TriggerPopoverResource"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"sourcesContent":["import { useEffectEvent } from \"react\";\nimport { useResource, resource } from \"@assistant-ui/tap\";\nimport type {\n Unstable_TriggerAdapter,\n Unstable_TriggerCategory,\n Unstable_TriggerItem,\n} from \"@assistant-ui/core\";\nimport type { AssistantClient } from \"@assistant-ui/store\";\nimport { TriggerDetectionResource } from \"./triggerDetectionResource\";\nimport { TriggerKeyboardResource } from \"./triggerKeyboardResource\";\nimport { TriggerNavigationResource } from \"./triggerNavigationResource\";\nimport {\n TriggerSelectionResource,\n type SelectItemOverride,\n type TriggerBehavior,\n} from \"./triggerSelectionResource\";\nimport type { TriggerMatcher } from \"./detectTrigger\";\n\nexport type { SelectItemOverride, TriggerBehavior };\nexport type { TriggerPopoverKeyEvent } from \"./triggerKeyboardResource\";\n\n/** @deprecated Use `TriggerBehavior`. */\nexport type OnSelectBehavior = TriggerBehavior;\n\nexport type TriggerPopoverResourceOutput = {\n readonly open: boolean;\n readonly query: string;\n readonly activeCategoryId: string | null;\n readonly categories: readonly Unstable_TriggerCategory[];\n readonly items: readonly Unstable_TriggerItem[];\n readonly highlightedIndex: number;\n readonly isSearchMode: boolean;\n /** Whether the adapter is currently resolving items (async sources). */\n readonly isLoading: boolean;\n /** Stable ID prefix for generating accessible element IDs. */\n readonly popoverId: string;\n /** ID of the currently highlighted item (for aria-activedescendant). */\n readonly highlightedItemId: string | undefined;\n\n selectCategory(categoryId: string): void;\n goBack(): void;\n selectItem(item: Unstable_TriggerItem): void;\n close(): void;\n /** Move the highlight to an entry index (e.g. from pointer hover). Out-of-range values are ignored. */\n highlightIndex(index: number): void;\n handleKeyDown(e: {\n readonly key: string;\n readonly shiftKey: boolean;\n preventDefault(): void;\n }): boolean;\n\n setCursorPosition(pos: number): void;\n registerSelectItemOverride(fn: SelectItemOverride): () => void;\n};\n\n/** Composes detection, navigation, keyboard, and selection sub-resources. */\nconst useTriggerPopoverResource = ({\n adapter,\n text,\n triggerChar,\n matcher,\n behavior,\n aui,\n popoverId,\n isLoading,\n}: {\n adapter: Unstable_TriggerAdapter | undefined;\n text: string;\n triggerChar: string;\n matcher: TriggerMatcher | undefined;\n behavior: TriggerBehavior | undefined;\n aui: AssistantClient;\n /** Stable ID for accessible element IDs (pass React's useId() from component layer). */\n popoverId: string;\n isLoading: boolean;\n}): TriggerPopoverResourceOutput => {\n const detection = useResource(\n TriggerDetectionResource({ text, triggerChar, matcher }),\n );\n\n const open =\n detection.trigger !== null &&\n adapter !== undefined &&\n behavior !== undefined;\n\n const navigation = useResource(\n TriggerNavigationResource({\n adapter,\n query: detection.query,\n open,\n }),\n );\n\n const onSelected = useEffectEvent(() => {\n navigation.goBack();\n });\n\n const selection = useResource(\n TriggerSelectionResource({\n behavior,\n trigger: detection.trigger,\n aui,\n triggerChar,\n setCursorPosition: detection.setCursorPosition,\n onSelected,\n }),\n );\n\n const keyboard = useResource(\n TriggerKeyboardResource({\n navigableList: navigation.navigableList,\n isSearchMode: navigation.isSearchMode,\n activeCategoryId: navigation.activeCategoryId,\n query: detection.query,\n popoverId,\n open,\n selectItem: selection.selectItem,\n selectCategory: navigation.selectCategory,\n goBack: navigation.goBack,\n close: selection.close,\n }),\n );\n\n return {\n open,\n query: detection.query,\n activeCategoryId: navigation.activeCategoryId,\n categories: navigation.categories,\n items: navigation.items,\n highlightedIndex: keyboard.highlightedIndex,\n isSearchMode: navigation.isSearchMode,\n isLoading,\n popoverId,\n highlightedItemId: keyboard.highlightedItemId,\n selectCategory: navigation.selectCategory,\n goBack: navigation.goBack,\n selectItem: selection.selectItem,\n close: selection.close,\n highlightIndex: keyboard.highlightIndex,\n handleKeyDown: keyboard.handleKeyDown,\n setCursorPosition: detection.setCursorPosition,\n registerSelectItemOverride: selection.registerSelectItemOverride,\n };\n};\n\nexport const TriggerPopoverResource = resource(useTriggerPopoverResource);\n"],"mappings":";;;;;;;;;AAwDA,MAAM4C,6BAA4BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,SAAAC,MAAAC,aAAAC,SAAAC,UAAAC,KAAA5B,WAAAD,cAAAqB;CAmBlC,IAAAS;CAAA,IAAAR,EAAA,OAAAK,WAAAL,EAAA,OAAAG,QAAAH,EAAA,OAAAI,aAAA;EAEGI,KAAA/C,yBAAyB;GAAA0C;GAAAC;GAAAC;EAA6B,CAAC;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAD1D,MAAAS,YAAkBtD,YAChBqD,EACF;CAEA,MAAArC,OACEsC,UAASC,YAAa,QACtBR,YAAYS,KAAAA,KACZL,aAAaK,KAAAA;CAAU,IAAAC;CAAA,IAAAZ,EAAA,OAAAE,WAAAF,EAAA,OAAAS,UAAArC,SAAA4B,EAAA,OAAA7B,MAAA;EAGvByC,KAAAjD,0BAA0B;GAAAuC;GAAA9B,OAEjBqC,UAASrC;GAAMD;EAExB,CAAC;EAAC6B,EAAA,KAAAE;EAAAF,EAAA,KAAAS,UAAArC;EAAA4B,EAAA,KAAA7B;EAAA6B,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CALJ,MAAAa,aAAmB1D,YACjByD,EAKF;CAAE,IAAAE;CAAA,IAAAd,EAAA,OAAAa,YAAA;EAEgCC,WAAA;GAChCD,WAAU9B,OAAQ;EAAC;EACpBiB,EAAA,KAAAa;EAAAb,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAFD,MAAAe,aAAmB7D,eAAe4D,EAEjC;CAAE,IAAAE;CAAA,IAAAhB,EAAA,QAAAO,OAAAP,EAAA,QAAAM,YAAAN,EAAA,QAAAS,UAAAf,qBAAAM,EAAA,QAAAS,UAAAC,WAAAV,EAAA,QAAAe,cAAAf,EAAA,QAAAI,aAAA;EAGDY,KAAApD,yBAAyB;GAAA0C;GAAAI,SAEdD,UAASC;GAAQH;GAAAH;GAAAV,mBAGPe,UAASf;GAAkBqB;EAEhD,CAAC;EAACf,EAAA,MAAAO;EAAAP,EAAA,MAAAM;EAAAN,EAAA,MAAAS,UAAAf;EAAAM,EAAA,MAAAS,UAAAC;EAAAV,EAAA,MAAAe;EAAAf,EAAA,MAAAI;EAAAJ,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CARJ,MAAAiB,YAAkB9D,YAChB6D,EAQF;CAAE,IAAAE;CAAA,IAAAlB,EAAA,QAAAS,UAAArC,SAAA4B,EAAA,QAAAa,WAAAxC,oBAAA2B,EAAA,QAAAa,WAAA9B,UAAAiB,EAAA,QAAAa,WAAApC,gBAAAuB,EAAA,QAAAa,WAAAM,iBAAAnB,EAAA,QAAAa,WAAAhC,kBAAAmB,EAAA,QAAA7B,QAAA6B,EAAA,QAAArB,aAAAqB,EAAA,QAAAiB,UAAA/B,SAAAc,EAAA,QAAAiB,UAAAjC,YAAA;EAGAkC,KAAAxD,wBAAwB;GAAAyD,eACPN,WAAUM;GAAc1C,cACzBoC,WAAUpC;GAAaJ,kBACnBwC,WAAUxC;GAAiBD,OACtCqC,UAASrC;GAAMO;GAAAR;GAAAa,YAGViC,UAASjC;GAAWH,gBAChBgC,WAAUhC;GAAeE,QACjC8B,WAAU9B;GAAOG,OAClB+B,UAAS/B;EAClB,CAAC;EAACc,EAAA,MAAAS,UAAArC;EAAA4B,EAAA,MAAAa,WAAAxC;EAAA2B,EAAA,MAAAa,WAAA9B;EAAAiB,EAAA,MAAAa,WAAApC;EAAAuB,EAAA,MAAAa,WAAAM;EAAAnB,EAAA,MAAAa,WAAAhC;EAAAmB,EAAA,MAAA7B;EAAA6B,EAAA,MAAArB;EAAAqB,EAAA,MAAAiB,UAAA/B;EAAAc,EAAA,MAAAiB,UAAAjC;EAAAgB,EAAA,MAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAZJ,MAAAoB,WAAiBjE,YACf+D,EAYF;CAAE,IAAAG;CAAA,IAAArB,EAAA,QAAAS,UAAArC,SAAA4B,EAAA,QAAAS,UAAAf,qBAAAM,EAAA,QAAAtB,aAAAsB,EAAA,QAAAoB,SAAA/B,iBAAAW,EAAA,QAAAoB,SAAAjC,kBAAAa,EAAA,QAAAoB,SAAA5C,oBAAAwB,EAAA,QAAAoB,SAAAxC,qBAAAoB,EAAA,QAAAa,WAAAxC,oBAAA2B,EAAA,QAAAa,WAAAvC,cAAA0B,EAAA,QAAAa,WAAA9B,UAAAiB,EAAA,QAAAa,WAAApC,gBAAAuB,EAAA,QAAAa,WAAAtC,SAAAyB,EAAA,QAAAa,WAAAhC,kBAAAmB,EAAA,QAAA7B,QAAA6B,EAAA,QAAArB,aAAAqB,EAAA,QAAAiB,UAAA/B,SAAAc,EAAA,QAAAiB,UAAArB,8BAAAI,EAAA,QAAAiB,UAAAjC,YAAA;EAEKqC,KAAA;GAAAlD;GAAAC,OAEEqC,UAASrC;GAAMC,kBACJwC,WAAUxC;GAAiBC,YACjCuC,WAAUvC;GAAWC,OAC1BsC,WAAUtC;GAAMC,kBACL4C,SAAQ5C;GAAiBC,cAC7BoC,WAAUpC;GAAaC;GAAAC;GAAAC,mBAGlBwC,SAAQxC;GAAkBC,gBAC7BgC,WAAUhC;GAAeE,QACjC8B,WAAU9B;GAAOC,YACbiC,UAASjC;GAAWE,OACzB+B,UAAS/B;GAAMC,gBACNiC,SAAQjC;GAAeE,eACxB+B,SAAQ/B;GAAcK,mBAClBe,UAASf;GAAkBE,4BAClBqB,UAASrB;EACvC;EAACI,EAAA,MAAAS,UAAArC;EAAA4B,EAAA,MAAAS,UAAAf;EAAAM,EAAA,MAAAtB;EAAAsB,EAAA,MAAAoB,SAAA/B;EAAAW,EAAA,MAAAoB,SAAAjC;EAAAa,EAAA,MAAAoB,SAAA5C;EAAAwB,EAAA,MAAAoB,SAAAxC;EAAAoB,EAAA,MAAAa,WAAAxC;EAAA2B,EAAA,MAAAa,WAAAvC;EAAA0B,EAAA,MAAAa,WAAA9B;EAAAiB,EAAA,MAAAa,WAAApC;EAAAuB,EAAA,MAAAa,WAAAtC;EAAAyB,EAAA,MAAAa,WAAAhC;EAAAmB,EAAA,MAAA7B;EAAA6B,EAAA,MAAArB;EAAAqB,EAAA,MAAAiB,UAAA/B;EAAAc,EAAA,MAAAiB,UAAArB;EAAAI,EAAA,MAAAiB,UAAAjC;EAAAgB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,OAnBMqB;AAmBN;AAGH,MAAaC,yBAAyBlE,SAAS0C,yBAAyB"}
@@ -1,9 +1,11 @@
1
+ import { TriggerMatcher } from "./detectTrigger.js";
1
2
  import { TriggerBehavior } from "./triggerSelectionResource.js";
2
3
  import { TriggerPopoverResourceOutput } from "./TriggerPopoverResource.js";
3
4
  import { FC, ReactNode } from "react";
4
5
  //#region src/primitives/composer/trigger/TriggerPopoverRootContext.d.ts
5
6
  type RegisteredTrigger = {
6
7
  readonly char: string;
8
+ readonly matcher?: TriggerMatcher | undefined;
7
9
  /** Behavior contributed by a child `TriggerPopover.Directive` / `.Action`. */
8
10
  readonly behavior?: TriggerBehavior;
9
11
  readonly resource: TriggerPopoverResourceOutput;
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverRootContext.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"mappings":";;;;KAmBY;WACD;;WAEA,WAAW;WACX,UAAU;;KAGT;EACV,MAAM,SAAS;EACf,QAAQ;;;;;;;KAQE;EACV;EACA;;KAGU;EACV,SAAS,SAAS;EAClB,eAAe,oBAAoB;EACnC,UAAU;;EAEV,mBAAmB,UAAU;;EAE7B,iBAAiB;;EAEjB,cAAc;;;;;;;KAQX;EACH,cAAc,cAAc,MAAM;;cASvB,oCAA4B;cAS5B,4CAAoC;;;;;cAOpC,oCAAmC;;;;;cAanC,iCAAyB,oBAAA;;cAUzB,yCAAiC,oBAAA;;;;;;cAgBjC,2CACP;kBASW;OACH;IACV,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgLD,qCAAqC,GAChD,oCAAoC"}
1
+ {"version":3,"file":"TriggerPopoverRootContext.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"mappings":";;;;;KAoBY;WACD;WACA,UAAU;;WAEV,WAAW;WACX,UAAU;;KAGT;EACV,MAAM,SAAS;EACf,QAAQ;;;;;;;KAQE;EACV;EACA;;KAGU;EACV,SAAS,SAAS;EAClB,eAAe,oBAAoB;EACnC,UAAU;;EAEV,mBAAmB,UAAU;;EAE7B,iBAAiB;;EAEjB,cAAc;;;;;;;KAQX;EACH,cAAc,cAAc,MAAM;;cASvB,oCAA4B;cAS5B,4CAAoC;;;;;cAOpC,oCAAmC;;;;;cAanC,iCAAyB,oBAAA;;cAUzB,yCAAiC,oBAAA;;;;;;cAgBjC,2CACP;kBASW;OACH;IACV,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgLD,qCAAqC,GAChD,oCAAoC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPopoverRootContext.js","names":["c","_c","createContext","useCallback","useContext","useMemo","useRef","useSyncExternalStore","FC","ReactNode","ComposerInputPluginProvider","useComposerInputPluginRegistryOptional","TriggerPopoverResourceOutput","TriggerBehavior","RegisteredTrigger","char","behavior","resource","TriggerPopoverLifecycleListener","added","trigger","removed","TriggerPopoverActiveAria","popoverId","highlightedItemId","TriggerPopoverRootContextValue","register","getTriggers","ReadonlyMap","subscribe","listener","subscribeLifecycle","getActiveAria","subscribeAria","TriggerPopoverAriaPublish","setActiveAria","aria","TriggerPopoverRootContext","TriggerPopoverAriaPublishContext","useTriggerPopoverRootContext","ctx","Error","useTriggerPopoverRootContextOptional","useTriggerPopoverAriaPublish","useTriggerPopoverTriggers","EMPTY_TRIGGERS","Map","noopSubscribe","getEmptyTriggers","useTriggerPopoverTriggersOptional","getNullAria","useTriggerPopoverActiveAriaOptional","ComposerPrimitiveTriggerPopoverRoot","Props","children","useSimpleSubscribable","$","t0","Symbol","for","Set","listenersRef","t1","current","notify","t2","listener_0","add","delete","t3","TriggerPopoverRootInner","triggersRef","lifecycleListenersRef","has","process","env","NODE_ENV","console","warn","_temp","existing","values","startsWith","next","set","l","after","l_0","t4","t5","activeAriaRef","activeAriaCharRef","notifyAria","t6","char_0","prev","t7","t8","value","t9","ariaPublishValue","t10","t11","existingRegistry","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useSyncExternalStore,\n type FC,\n type ReactNode,\n} from \"react\";\nimport {\n ComposerInputPluginProvider,\n useComposerInputPluginRegistryOptional,\n} from \"../ComposerInputPluginContext\";\nimport type { TriggerPopoverResourceOutput } from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nexport type RegisteredTrigger = {\n readonly char: string;\n /** Behavior contributed by a child `TriggerPopover.Directive` / `.Action`. */\n readonly behavior?: TriggerBehavior;\n readonly resource: TriggerPopoverResourceOutput;\n};\n\nexport type TriggerPopoverLifecycleListener = {\n added(trigger: RegisteredTrigger): void;\n removed(char: string): void;\n};\n\n/**\n * ARIA descriptor of the popover that is currently open. Consumed by the\n * focused element (typically the composer textarea) so it can advertise the\n * combobox relationship per the WAI-ARIA editable combobox pattern.\n */\nexport type TriggerPopoverActiveAria = {\n popoverId: string;\n highlightedItemId: string | undefined;\n};\n\nexport type TriggerPopoverRootContextValue = {\n register(trigger: RegisteredTrigger): () => void;\n getTriggers(): ReadonlyMap<string, RegisteredTrigger>;\n subscribe(listener: () => void): () => void;\n /** Subscribe to per-trigger add/remove events. */\n subscribeLifecycle(listener: TriggerPopoverLifecycleListener): () => void;\n /** ARIA descriptor of the open popover, or null if none is open. */\n getActiveAria(): TriggerPopoverActiveAria | null;\n /** Subscribe to changes in the active ARIA descriptor. */\n subscribeAria(listener: () => void): () => void;\n};\n\n/**\n * Write-side of the ARIA descriptor, scoped to `TriggerPopover` children of a\n * `TriggerPopoverRoot`. Intentionally not exposed on the public root context\n * value: external consumers can read ARIA state but cannot publish or clear it.\n */\ntype TriggerPopoverAriaPublish = {\n setActiveAria(char: string, aria: TriggerPopoverActiveAria | null): void;\n};\n\nconst TriggerPopoverRootContext =\n createContext<TriggerPopoverRootContextValue | null>(null);\n\nconst TriggerPopoverAriaPublishContext =\n createContext<TriggerPopoverAriaPublish | null>(null);\n\nexport const useTriggerPopoverRootContext = () => {\n const ctx = useContext(TriggerPopoverRootContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverRootContext must be used within ComposerPrimitive.TriggerPopoverRoot\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverRootContextOptional = () =>\n useContext(TriggerPopoverRootContext);\n\n/**\n * Internal hook used by `TriggerPopover` children to publish their open and\n * highlight state. Not exported from the trigger module.\n */\nexport const useTriggerPopoverAriaPublish = (): TriggerPopoverAriaPublish => {\n const ctx = useContext(TriggerPopoverAriaPublishContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverAriaPublish must be used within ComposerPrimitive.TriggerPopoverRoot\",\n );\n return ctx;\n};\n\n/**\n * Live map of registered triggers, re-rendering on change. Prefer\n * `subscribeLifecycle` for incremental add/remove handling.\n */\nexport const useTriggerPopoverTriggers = () => {\n const ctx = useTriggerPopoverRootContext();\n return useSyncExternalStore(ctx.subscribe, ctx.getTriggers, ctx.getTriggers);\n};\n\nconst EMPTY_TRIGGERS: ReadonlyMap<string, RegisteredTrigger> = new Map();\nconst noopSubscribe = () => () => {};\nconst getEmptyTriggers = () => EMPTY_TRIGGERS;\n\n/** Like `useTriggerPopoverTriggers` but returns an empty map outside a root. */\nexport const useTriggerPopoverTriggersOptional = () => {\n const ctx = useTriggerPopoverRootContextOptional();\n return useSyncExternalStore(\n ctx ? ctx.subscribe : noopSubscribe,\n ctx ? ctx.getTriggers : getEmptyTriggers,\n ctx ? ctx.getTriggers : getEmptyTriggers,\n );\n};\n\nconst getNullAria = () => null;\n\n/**\n * Returns the ARIA descriptor of the currently open trigger popover, or\n * `null` if none is open or the consumer is rendered outside a\n * `TriggerPopoverRoot`.\n */\nexport const useTriggerPopoverActiveAriaOptional =\n (): TriggerPopoverActiveAria | null => {\n const ctx = useTriggerPopoverRootContextOptional();\n return useSyncExternalStore(\n ctx ? ctx.subscribeAria : noopSubscribe,\n ctx ? ctx.getActiveAria : getNullAria,\n ctx ? ctx.getActiveAria : getNullAria,\n );\n };\n\nexport namespace ComposerPrimitiveTriggerPopoverRoot {\n export type Props = {\n children: ReactNode;\n };\n}\n\n/**\n * Local helper for the simple \"notify-all listeners\" subscribable pattern.\n * Used twice in this file (trigger registry, active ARIA); kept inline to\n * avoid pulling a single-use abstraction into the wider tree.\n */\nfunction useSimpleSubscribable() {\n const listenersRef = useRef<Set<() => void>>(new Set());\n const notify = useCallback(() => {\n for (const listener of listenersRef.current) listener();\n }, []);\n const subscribe = useCallback((listener: () => void) => {\n listenersRef.current.add(listener);\n return () => {\n listenersRef.current.delete(listener);\n };\n }, []);\n return { notify, subscribe };\n}\n\nconst TriggerPopoverRootInner: FC<\n ComposerPrimitiveTriggerPopoverRoot.Props\n> = ({ children }) => {\n const triggersRef = useRef<ReadonlyMap<string, RegisteredTrigger>>(new Map());\n const lifecycleListenersRef = useRef<Set<TriggerPopoverLifecycleListener>>(\n new Set(),\n );\n\n const { notify, subscribe } = useSimpleSubscribable();\n\n const register = useCallback<TriggerPopoverRootContextValue[\"register\"]>(\n (trigger) => {\n const { char } = trigger;\n if (triggersRef.current.has(char)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `[assistant-ui] Duplicate TriggerPopover for char \"${char}\". Ignoring the second registration.`,\n );\n }\n return () => {};\n }\n if (process.env.NODE_ENV !== \"production\") {\n for (const existing of triggersRef.current.values()) {\n if (\n char.startsWith(existing.char) ||\n existing.char.startsWith(char)\n ) {\n console.warn(\n `[assistant-ui] Trigger prefix collision between \"${existing.char}\" and \"${char}\". One char is a prefix of the other; only one will match reliably.`,\n );\n }\n }\n }\n const next = new Map(triggersRef.current);\n next.set(char, trigger);\n triggersRef.current = next;\n notify();\n for (const l of lifecycleListenersRef.current) l.added(trigger);\n return () => {\n const after = new Map(triggersRef.current);\n after.delete(char);\n triggersRef.current = after;\n notify();\n for (const l of lifecycleListenersRef.current) l.removed(char);\n };\n },\n [notify],\n );\n\n const getTriggers = useCallback<\n TriggerPopoverRootContextValue[\"getTriggers\"]\n >(() => triggersRef.current, []);\n\n const subscribeLifecycle = useCallback<\n TriggerPopoverRootContextValue[\"subscribeLifecycle\"]\n >((listener) => {\n lifecycleListenersRef.current.add(listener);\n return () => {\n lifecycleListenersRef.current.delete(listener);\n };\n }, []);\n\n const activeAriaRef = useRef<TriggerPopoverActiveAria | null>(null);\n const activeAriaCharRef = useRef<string | null>(null);\n const { notify: notifyAria, subscribe: subscribeAria } =\n useSimpleSubscribable();\n\n const setActiveAria = useCallback<TriggerPopoverAriaPublish[\"setActiveAria\"]>(\n (char, aria) => {\n if (aria === null) {\n if (activeAriaCharRef.current !== char) return;\n activeAriaRef.current = null;\n activeAriaCharRef.current = null;\n notifyAria();\n return;\n }\n const prev = activeAriaRef.current;\n if (\n activeAriaCharRef.current === char &&\n prev !== null &&\n prev.popoverId === aria.popoverId &&\n prev.highlightedItemId === aria.highlightedItemId\n ) {\n return;\n }\n activeAriaRef.current = aria;\n activeAriaCharRef.current = char;\n notifyAria();\n },\n [notifyAria],\n );\n\n const getActiveAria = useCallback<\n TriggerPopoverRootContextValue[\"getActiveAria\"]\n >(() => activeAriaRef.current, []);\n\n const value = useMemo<TriggerPopoverRootContextValue>(\n () => ({\n register,\n getTriggers,\n subscribe,\n subscribeLifecycle,\n getActiveAria,\n subscribeAria,\n }),\n [\n register,\n getTriggers,\n subscribe,\n subscribeLifecycle,\n getActiveAria,\n subscribeAria,\n ],\n );\n\n const ariaPublishValue = useMemo<TriggerPopoverAriaPublish>(\n () => ({ setActiveAria }),\n [setActiveAria],\n );\n\n return (\n <TriggerPopoverRootContext.Provider value={value}>\n <TriggerPopoverAriaPublishContext.Provider value={ariaPublishValue}>\n {children}\n </TriggerPopoverAriaPublishContext.Provider>\n </TriggerPopoverRootContext.Provider>\n );\n};\n\n/**\n * Provider that groups one or more `TriggerPopover` declarations. Each trigger\n * is identified by its `char` (unique within the root). Behavior is contributed\n * by a child `TriggerPopover.Directive` or `TriggerPopover.Action`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopoverRoot>\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"@\" adapter={mentionAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * ...\n * </ComposerPrimitive.Unstable_TriggerPopover>\n *\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"/\" adapter={slashAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Action onExecute={handler} />\n * ...\n * </ComposerPrimitive.Unstable_TriggerPopover>\n *\n * <ComposerPrimitive.Root>\n * <ComposerPrimitive.Input />\n * </ComposerPrimitive.Root>\n * </ComposerPrimitive.Unstable_TriggerPopoverRoot>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverRoot: FC<\n ComposerPrimitiveTriggerPopoverRoot.Props\n> = ({ children }) => {\n const existingRegistry = useComposerInputPluginRegistryOptional();\n\n if (existingRegistry) {\n return <TriggerPopoverRootInner>{children}</TriggerPopoverRootInner>;\n }\n\n return (\n <ComposerInputPluginProvider>\n <TriggerPopoverRootInner>{children}</TriggerPopoverRootInner>\n </ComposerInputPluginProvider>\n );\n};\n\nComposerPrimitiveTriggerPopoverRoot.displayName =\n \"ComposerPrimitive.TriggerPopoverRoot\";\n"],"mappings":";;;;;;AA8DA,MAAMqC,4BACJnC,cAAqD,IAAI;AAE3D,MAAMoC,mCACJpC,cAAgD,IAAI;AAEtD,MAAaqC,qCAA+B;CAC1C,MAAAC,MAAYpC,WAAWiC,yBAAyB;CAChD,IAAI,CAACG,KACH,MAAM,IAAIC,MACR,uFACF;CAAE,OACGD;AAAG;AAGZ,MAAaE,6CAAuC;CAAA,OAClDtC,WAAWiC,yBAAyB;AAAC;;;;;AAMvC,MAAaM,qCAA+B;CAC1C,MAAAH,MAAYpC,WAAWkC,gCAAgC;CACvD,IAAI,CAACE,KACH,MAAM,IAAIC,MACR,uFACF;CAAE,OACGD;AAAG;;;;;AAOZ,MAAaI,kCAA4B;CACvC,MAAAJ,MAAYD,6BAA6B;CAAE,OACpChC,qBAAqBiC,IAAGX,WAAYW,IAAGb,aAAca,IAAGb,WAAY;AAAC;AAG9E,MAAMkB,iCAAyD,IAAIC,IAAI;AACvE,MAAMC,4BAA4B,CAAC;AACnC,MAAMC,yBAAyBH;;AAG/B,MAAaI,0CAAoC;CAC/C,MAAAT,MAAYE,qCAAqC;CAAE,OAC5CnC,qBACLiC,MAAMA,IAAGX,YAATkB,eACAP,MAAMA,IAAGb,cAATqB,kBACAR,MAAMA,IAAGb,cAATqB,gBACF;AAAC;AAGH,MAAME,oBAAoB;;;;;;AAO1B,MAAaC,4CACX;CACE,MAAAX,MAAYE,qCAAqC;CAAE,OAC5CnC,qBACLiC,MAAMA,IAAGP,gBAATc,eACAP,MAAMA,IAAGR,gBAATkB,aACAV,MAAMA,IAAGR,gBAATkB,WACF;AAAC;;;;;;AAcL,SAAAK,wBAAA;CAAA,MAAAC,IAAAvD,EAAA,CAAA;CAAA,IAAAwD;CAAA,IAAAD,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAC+CF,qBAAA,IAAIG,IAAI;EAACJ,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAAtD,MAAAK,eAAqBvD,OAAwBmD,EAAS;CAAE,IAAAK;CAAA,IAAAN,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAC7BG,WAAA;GACzB,KAAK,MAAAhC,YAAkB+B,aAAYE,SAAUjC,SAAS;EAAE;EACzD0B,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAFD,MAAAQ,SAAeF;CAER,IAAAG;CAAA,IAAAT,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EACuBM,MAAAC,eAAA;GAC5BL,aAAYE,QAAQI,IAAKrC,UAAQ;GAAC,aAC3B;IACL+B,aAAYE,QAAQK,OAAQtC,UAAQ;GAAC;EACtC;EACF0B,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CALD,MAAA3B,YAAkBoC;CAKX,IAAAI;CAAA,IAAAb,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EACAU,KAAA;GAAAL;GAAAnC;EAAoB;EAAC2B,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAArBa;AAAqB;AAG9B,MAAMC,2BAEFb,OAAA;CAAA,MAAAD,IAAAvD,EAAA,EAAA;CAAC,MAAA,EAAAqD,aAAAG;CAAY,IAAAK;CAAA,IAAAN,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EACoDG,qBAAA,IAAIhB,IAAI;EAACU,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAA5E,MAAAe,cAAoBjE,OAA+CwD,EAAS;CAAE,IAAAG;CAAA,IAAAT,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAE5EM,qBAAA,IAAIL,IAAI;EAACJ,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CADX,MAAAgB,wBAA8BlE,OAC5B2D,EACF;CAEA,MAAA,EAAAD,QAAAnC,cAA8B0B,sBAAsB;CAAE,IAAAc;CAAA,IAAAb,EAAA,OAAAQ,QAAA;EAGpDK,MAAAjD,YAAA;GACE,MAAA,EAAAL,SAAiBK;GACjB,IAAImD,YAAWR,QAAQU,IAAK1D,IAAI,GAAC;IAC/B,IAAI2D,QAAOC,IAAIC,aAAc,cAC3BC,QAAOC,KACL,qDAAqD/D,KAAI,qCAC3D;IACD,OACMgE;GAAQ;GAEjB,IAAIL,QAAOC,IAAIC,aAAc,cACtB;SAAA,MAAAI,YAAkBT,YAAWR,QAAQkB,OAAQ,GAChD,IACElE,KAAImE,WAAYF,SAAQjE,IACK,KAA7BiE,SAAQjE,KAAKmE,WAAYnE,IAAI,GAE7B8D,QAAOC,KACL,oDAAoDE,SAAQjE,KAAK,SAAUA,KAAI,oEACjF;GAAA;GAIN,MAAAoE,OAAa,IAAIrC,IAAIyB,YAAWR,OAAQ;GACxCoB,KAAIC,IAAKrE,MAAMK,OAAO;GACtBmD,YAAWR,UAAWoB;GACtBnB,OAAO;GACP,KAAK,MAAAqB,KAAWb,sBAAqBT,SAAUsB,EAAClE,MAAOC,OAAO;GAAE,aACzD;IACL,MAAAkE,QAAc,IAAIxC,IAAIyB,YAAWR,OAAQ;IACzCuB,MAAKlB,OAAQrD,IAAI;IACjBwD,YAAWR,UAAWuB;IACtBtB,OAAO;IACP,KAAK,MAAAuB,OAAWf,sBAAqBT,SAAUsB,IAAChE,QAASN,IAAI;GAAE;EAChE;EACFyC,EAAA,KAAAQ;EAAAR,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAnCH,MAAA9B,WAAiB2C;CAqCf,IAAAmB;CAAA,IAAAhC,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAIA6B,WAAMjB,YAAWR;EAAQP,EAAA,KAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAF3B,MAAA7B,cAAoB6D;CAEa,IAAAC;CAAA,IAAAjC,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAI/B8B,MAAA3D,aAAA;GACA0C,sBAAqBT,QAAQI,IAAKrC,QAAQ;GAAC,aACpC;IACL0C,sBAAqBT,QAAQK,OAAQtC,QAAQ;GAAC;EAC/C;EACF0B,EAAA,KAAAiC;CAAA,OAAAA,KAAAjC,EAAA;CAPD,MAAAzB,qBAA2B0D;CAS3B,MAAAC,gBAAsBpF,OAAwC,IAAI;CAClE,MAAAqF,oBAA0BrF,OAAsB,IAAI;CACpD,MAAA,EAAA0D,QAAA4B,YAAA/D,WAAAI,kBACEsB,sBAAsB;CAAE,IAAAsC;CAAA,IAAArC,EAAA,OAAAoC,YAAA;EAGxBC,MAAAC,QAAA1D,SAAA;GACE,IAAIA,SAAS,MAAI;IACf,IAAIuD,kBAAiB5B,YAAahD,QAAI;IACtC2E,cAAa3B,UAAW;IACxB4B,kBAAiB5B,UAAW;IAC5B6B,WAAW;IAAC;GAAA;GAGd,MAAAG,OAAaL,cAAa3B;GAC1B,IACE4B,kBAAiB5B,YAAahD,UAC9BgF,SAAS,QACTA,KAAIxE,cAAea,KAAIb,aACvBwE,KAAIvE,sBAAuBY,KAAIZ,mBAAkB;GAInDkE,cAAa3B,UAAW3B;GACxBuD,kBAAiB5B,UAAWhD;GAC5B6E,WAAW;EAAC;EACbpC,EAAA,KAAAoC;EAAApC,EAAA,KAAAqC;CAAA,OAAAA,KAAArC,EAAA;CArBH,MAAArB,gBAAsB0D;CAuBpB,IAAAG;CAAA,IAAAxC,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EAIAqC,WAAMN,cAAa3B;EAAQP,EAAA,KAAAwC;CAAA,OAAAA,KAAAxC,EAAA;CAF7B,MAAAxB,gBAAsBgE;CAEa,IAAAC;CAAA,IAAAzC,EAAA,OAAA9B,YAAA8B,EAAA,QAAA3B,aAAA2B,EAAA,QAAAvB,eAAA;EAG1BgE,KAAA;GAAAvE;GAAAC;GAAAE;GAAAE;GAAAC;GAAAC;EAOP;EAACuB,EAAA,KAAA9B;EAAA8B,EAAA,MAAA3B;EAAA2B,EAAA,MAAAvB;EAAAuB,EAAA,MAAAyC;CAAA,OAAAA,KAAAzC,EAAA;CARH,MAAA0C,QACSD;CAgBP,IAAAE;CAAA,IAAA3C,EAAA,QAAArB,eAAA;EAGOgE,KAAA,EAAAhE,cAAgB;EAACqB,EAAA,MAAArB;EAAAqB,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAD1B,MAAA4C,mBACSD;CAEP,IAAAE;CAAA,IAAA7C,EAAA,QAAA4C,oBAAA5C,EAAA,QAAAF,UAAA;EAIE+C,MAAA,oBAAA,iCAAA,UAAA;GAAkDD,OAAAA;GAC/C9C;EACH,CAAA;EAA4CE,EAAA,MAAA4C;EAAA5C,EAAA,MAAAF;EAAAE,EAAA,MAAA6C;CAAA,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,IAAA9C,EAAA,QAAA6C,OAAA7C,EAAA,QAAA0C,OAAA;EAH9CI,MAAA,oBAAA,0BAAA,UAAA;GAA2CJ;GACzCG,UAAAA;EAGF,CAAA;EAAqC7C,EAAA,MAAA6C;EAAA7C,EAAA,MAAA0C;EAAA1C,EAAA,MAAA8C;CAAA,OAAAA,MAAA9C,EAAA;CAAA,OAJrC8C;AAIqC;;;;;;;;;;;;;;;;;;;;;;;;;AA4BzC,MAAalD,uCAETK,OAAA;CAAA,MAAAD,IAAAvD,EAAA,CAAA;CAAC,MAAA,EAAAqD,aAAAG;CAGH,IAFyB9C,uCAErB4F,GAAgB;EAAA,IAAAzC;EAAA,IAAAN,EAAA,OAAAF,UAAA;GACXQ,KAAA,oBAAC,yBAAD,EAA0BR,SAAF,CAAA;GAAqCE,EAAA,KAAAF;GAAAE,EAAA,KAAAM;EAAA,OAAAA,KAAAN,EAAA;EAAA,OAA7DM;CAA6D;CACrE,IAAAA;CAAA,IAAAN,EAAA,OAAAF,UAAA;EAGCQ,KAAA,oBAAC,6BAAD,EAAA,UACE,oBAAC,yBAAD,EAA0BR,SAAF,CAAA,EADE,CAAA;EAEEE,EAAA,KAAAF;EAAAE,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAF9BM;AAE8B;AAIlCV,oCAAoCoD,cAClC;AAxKE,SAAAzB,QAAA,CAAA"}
1
+ {"version":3,"file":"TriggerPopoverRootContext.js","names":["c","_c","createContext","useCallback","useContext","useMemo","useRef","useSyncExternalStore","FC","ReactNode","ComposerInputPluginProvider","useComposerInputPluginRegistryOptional","TriggerPopoverResourceOutput","TriggerBehavior","TriggerMatcher","RegisteredTrigger","char","matcher","behavior","resource","TriggerPopoverLifecycleListener","added","trigger","removed","TriggerPopoverActiveAria","popoverId","highlightedItemId","TriggerPopoverRootContextValue","register","getTriggers","ReadonlyMap","subscribe","listener","subscribeLifecycle","getActiveAria","subscribeAria","TriggerPopoverAriaPublish","setActiveAria","aria","TriggerPopoverRootContext","TriggerPopoverAriaPublishContext","useTriggerPopoverRootContext","ctx","Error","useTriggerPopoverRootContextOptional","useTriggerPopoverAriaPublish","useTriggerPopoverTriggers","EMPTY_TRIGGERS","Map","noopSubscribe","getEmptyTriggers","useTriggerPopoverTriggersOptional","getNullAria","useTriggerPopoverActiveAriaOptional","ComposerPrimitiveTriggerPopoverRoot","Props","children","useSimpleSubscribable","$","t0","Symbol","for","Set","listenersRef","t1","current","notify","t2","listener_0","add","delete","t3","TriggerPopoverRootInner","triggersRef","lifecycleListenersRef","has","process","env","NODE_ENV","console","warn","_temp","existing","values","startsWith","next","set","l","after","l_0","t4","t5","activeAriaRef","activeAriaCharRef","notifyAria","t6","char_0","prev","t7","t8","value","t9","ariaPublishValue","t10","t11","existingRegistry","displayName"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverRootContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useSyncExternalStore,\n type FC,\n type ReactNode,\n} from \"react\";\nimport {\n ComposerInputPluginProvider,\n useComposerInputPluginRegistryOptional,\n} from \"../ComposerInputPluginContext\";\nimport type { TriggerPopoverResourceOutput } from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport type { TriggerMatcher } from \"./detectTrigger\";\n\nexport type RegisteredTrigger = {\n readonly char: string;\n readonly matcher?: TriggerMatcher | undefined;\n /** Behavior contributed by a child `TriggerPopover.Directive` / `.Action`. */\n readonly behavior?: TriggerBehavior;\n readonly resource: TriggerPopoverResourceOutput;\n};\n\nexport type TriggerPopoverLifecycleListener = {\n added(trigger: RegisteredTrigger): void;\n removed(char: string): void;\n};\n\n/**\n * ARIA descriptor of the popover that is currently open. Consumed by the\n * focused element (typically the composer textarea) so it can advertise the\n * combobox relationship per the WAI-ARIA editable combobox pattern.\n */\nexport type TriggerPopoverActiveAria = {\n popoverId: string;\n highlightedItemId: string | undefined;\n};\n\nexport type TriggerPopoverRootContextValue = {\n register(trigger: RegisteredTrigger): () => void;\n getTriggers(): ReadonlyMap<string, RegisteredTrigger>;\n subscribe(listener: () => void): () => void;\n /** Subscribe to per-trigger add/remove events. */\n subscribeLifecycle(listener: TriggerPopoverLifecycleListener): () => void;\n /** ARIA descriptor of the open popover, or null if none is open. */\n getActiveAria(): TriggerPopoverActiveAria | null;\n /** Subscribe to changes in the active ARIA descriptor. */\n subscribeAria(listener: () => void): () => void;\n};\n\n/**\n * Write-side of the ARIA descriptor, scoped to `TriggerPopover` children of a\n * `TriggerPopoverRoot`. Intentionally not exposed on the public root context\n * value: external consumers can read ARIA state but cannot publish or clear it.\n */\ntype TriggerPopoverAriaPublish = {\n setActiveAria(char: string, aria: TriggerPopoverActiveAria | null): void;\n};\n\nconst TriggerPopoverRootContext =\n createContext<TriggerPopoverRootContextValue | null>(null);\n\nconst TriggerPopoverAriaPublishContext =\n createContext<TriggerPopoverAriaPublish | null>(null);\n\nexport const useTriggerPopoverRootContext = () => {\n const ctx = useContext(TriggerPopoverRootContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverRootContext must be used within ComposerPrimitive.TriggerPopoverRoot\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverRootContextOptional = () =>\n useContext(TriggerPopoverRootContext);\n\n/**\n * Internal hook used by `TriggerPopover` children to publish their open and\n * highlight state. Not exported from the trigger module.\n */\nexport const useTriggerPopoverAriaPublish = (): TriggerPopoverAriaPublish => {\n const ctx = useContext(TriggerPopoverAriaPublishContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverAriaPublish must be used within ComposerPrimitive.TriggerPopoverRoot\",\n );\n return ctx;\n};\n\n/**\n * Live map of registered triggers, re-rendering on change. Prefer\n * `subscribeLifecycle` for incremental add/remove handling.\n */\nexport const useTriggerPopoverTriggers = () => {\n const ctx = useTriggerPopoverRootContext();\n return useSyncExternalStore(ctx.subscribe, ctx.getTriggers, ctx.getTriggers);\n};\n\nconst EMPTY_TRIGGERS: ReadonlyMap<string, RegisteredTrigger> = new Map();\nconst noopSubscribe = () => () => {};\nconst getEmptyTriggers = () => EMPTY_TRIGGERS;\n\n/** Like `useTriggerPopoverTriggers` but returns an empty map outside a root. */\nexport const useTriggerPopoverTriggersOptional = () => {\n const ctx = useTriggerPopoverRootContextOptional();\n return useSyncExternalStore(\n ctx ? ctx.subscribe : noopSubscribe,\n ctx ? ctx.getTriggers : getEmptyTriggers,\n ctx ? ctx.getTriggers : getEmptyTriggers,\n );\n};\n\nconst getNullAria = () => null;\n\n/**\n * Returns the ARIA descriptor of the currently open trigger popover, or\n * `null` if none is open or the consumer is rendered outside a\n * `TriggerPopoverRoot`.\n */\nexport const useTriggerPopoverActiveAriaOptional =\n (): TriggerPopoverActiveAria | null => {\n const ctx = useTriggerPopoverRootContextOptional();\n return useSyncExternalStore(\n ctx ? ctx.subscribeAria : noopSubscribe,\n ctx ? ctx.getActiveAria : getNullAria,\n ctx ? ctx.getActiveAria : getNullAria,\n );\n };\n\nexport namespace ComposerPrimitiveTriggerPopoverRoot {\n export type Props = {\n children: ReactNode;\n };\n}\n\n/**\n * Local helper for the simple \"notify-all listeners\" subscribable pattern.\n * Used twice in this file (trigger registry, active ARIA); kept inline to\n * avoid pulling a single-use abstraction into the wider tree.\n */\nfunction useSimpleSubscribable() {\n const listenersRef = useRef<Set<() => void>>(new Set());\n const notify = useCallback(() => {\n for (const listener of listenersRef.current) listener();\n }, []);\n const subscribe = useCallback((listener: () => void) => {\n listenersRef.current.add(listener);\n return () => {\n listenersRef.current.delete(listener);\n };\n }, []);\n return { notify, subscribe };\n}\n\nconst TriggerPopoverRootInner: FC<\n ComposerPrimitiveTriggerPopoverRoot.Props\n> = ({ children }) => {\n const triggersRef = useRef<ReadonlyMap<string, RegisteredTrigger>>(new Map());\n const lifecycleListenersRef = useRef<Set<TriggerPopoverLifecycleListener>>(\n new Set(),\n );\n\n const { notify, subscribe } = useSimpleSubscribable();\n\n const register = useCallback<TriggerPopoverRootContextValue[\"register\"]>(\n (trigger) => {\n const { char } = trigger;\n if (triggersRef.current.has(char)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `[assistant-ui] Duplicate TriggerPopover for char \"${char}\". Ignoring the second registration.`,\n );\n }\n return () => {};\n }\n if (process.env.NODE_ENV !== \"production\") {\n for (const existing of triggersRef.current.values()) {\n if (\n char.startsWith(existing.char) ||\n existing.char.startsWith(char)\n ) {\n console.warn(\n `[assistant-ui] Trigger prefix collision between \"${existing.char}\" and \"${char}\". One char is a prefix of the other; only one will match reliably.`,\n );\n }\n }\n }\n const next = new Map(triggersRef.current);\n next.set(char, trigger);\n triggersRef.current = next;\n notify();\n for (const l of lifecycleListenersRef.current) l.added(trigger);\n return () => {\n const after = new Map(triggersRef.current);\n after.delete(char);\n triggersRef.current = after;\n notify();\n for (const l of lifecycleListenersRef.current) l.removed(char);\n };\n },\n [notify],\n );\n\n const getTriggers = useCallback<\n TriggerPopoverRootContextValue[\"getTriggers\"]\n >(() => triggersRef.current, []);\n\n const subscribeLifecycle = useCallback<\n TriggerPopoverRootContextValue[\"subscribeLifecycle\"]\n >((listener) => {\n lifecycleListenersRef.current.add(listener);\n return () => {\n lifecycleListenersRef.current.delete(listener);\n };\n }, []);\n\n const activeAriaRef = useRef<TriggerPopoverActiveAria | null>(null);\n const activeAriaCharRef = useRef<string | null>(null);\n const { notify: notifyAria, subscribe: subscribeAria } =\n useSimpleSubscribable();\n\n const setActiveAria = useCallback<TriggerPopoverAriaPublish[\"setActiveAria\"]>(\n (char, aria) => {\n if (aria === null) {\n if (activeAriaCharRef.current !== char) return;\n activeAriaRef.current = null;\n activeAriaCharRef.current = null;\n notifyAria();\n return;\n }\n const prev = activeAriaRef.current;\n if (\n activeAriaCharRef.current === char &&\n prev !== null &&\n prev.popoverId === aria.popoverId &&\n prev.highlightedItemId === aria.highlightedItemId\n ) {\n return;\n }\n activeAriaRef.current = aria;\n activeAriaCharRef.current = char;\n notifyAria();\n },\n [notifyAria],\n );\n\n const getActiveAria = useCallback<\n TriggerPopoverRootContextValue[\"getActiveAria\"]\n >(() => activeAriaRef.current, []);\n\n const value = useMemo<TriggerPopoverRootContextValue>(\n () => ({\n register,\n getTriggers,\n subscribe,\n subscribeLifecycle,\n getActiveAria,\n subscribeAria,\n }),\n [\n register,\n getTriggers,\n subscribe,\n subscribeLifecycle,\n getActiveAria,\n subscribeAria,\n ],\n );\n\n const ariaPublishValue = useMemo<TriggerPopoverAriaPublish>(\n () => ({ setActiveAria }),\n [setActiveAria],\n );\n\n return (\n <TriggerPopoverRootContext.Provider value={value}>\n <TriggerPopoverAriaPublishContext.Provider value={ariaPublishValue}>\n {children}\n </TriggerPopoverAriaPublishContext.Provider>\n </TriggerPopoverRootContext.Provider>\n );\n};\n\n/**\n * Provider that groups one or more `TriggerPopover` declarations. Each trigger\n * is identified by its `char` (unique within the root). Behavior is contributed\n * by a child `TriggerPopover.Directive` or `TriggerPopover.Action`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopoverRoot>\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"@\" adapter={mentionAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * ...\n * </ComposerPrimitive.Unstable_TriggerPopover>\n *\n * <ComposerPrimitive.Unstable_TriggerPopover char=\"/\" adapter={slashAdapter}>\n * <ComposerPrimitive.Unstable_TriggerPopover.Action onExecute={handler} />\n * ...\n * </ComposerPrimitive.Unstable_TriggerPopover>\n *\n * <ComposerPrimitive.Root>\n * <ComposerPrimitive.Input />\n * </ComposerPrimitive.Root>\n * </ComposerPrimitive.Unstable_TriggerPopoverRoot>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopoverRoot: FC<\n ComposerPrimitiveTriggerPopoverRoot.Props\n> = ({ children }) => {\n const existingRegistry = useComposerInputPluginRegistryOptional();\n\n if (existingRegistry) {\n return <TriggerPopoverRootInner>{children}</TriggerPopoverRootInner>;\n }\n\n return (\n <ComposerInputPluginProvider>\n <TriggerPopoverRootInner>{children}</TriggerPopoverRootInner>\n </ComposerInputPluginProvider>\n );\n};\n\nComposerPrimitiveTriggerPopoverRoot.displayName =\n \"ComposerPrimitive.TriggerPopoverRoot\";\n"],"mappings":"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"}
@@ -1 +1,21 @@
1
- export {}
1
+ //#region src/primitives/composer/trigger/detectTrigger.d.ts
2
+ type TriggerMatch = {
3
+ readonly query: string;
4
+ readonly offset: number;
5
+ readonly endOffset: number;
6
+ };
7
+ /**
8
+ * Locates a trigger query in `text` relative to `cursorPosition`.
9
+ *
10
+ * `offset` is the index of `triggerChar`. `endOffset` is the exclusive end of
11
+ * the span both the textarea and Lexical replace on select. `query` is the
12
+ * search string and may differ from that span.
13
+ *
14
+ * Return null when the caret is at or before the trigger. Escape moves the
15
+ * caret to `offset` so a match there would reopen the popover.
16
+ */
17
+ type TriggerMatcher = (text: string, triggerChar: string, cursorPosition: number) => TriggerMatch | null;
18
+ declare function resolveTriggerMatch(text: string, triggerChar: string, cursorPosition: number, match: TriggerMatch | null): TriggerMatch | null;
19
+ //#endregion
20
+ export { TriggerMatch, TriggerMatcher, resolveTriggerMatch };
21
+ //# sourceMappingURL=detectTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectTrigger.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/detectTrigger.ts"],"mappings":";KAEY;WACD;WACA;WACA;;;;;;;;;;;;KAaC,kBACV,cACA,qBACA,2BACG;iBAEW,oBACd,cACA,qBACA,wBACA,OAAO,sBACN"}
@@ -1,11 +1,24 @@
1
1
  //#region src/primitives/composer/trigger/detectTrigger.ts
2
2
  const WHITESPACE_RE = /\s/u;
3
+ function resolveTriggerMatch(text, triggerChar, cursorPosition, match) {
4
+ if (match === null) return null;
5
+ const { query, offset, endOffset } = match;
6
+ if (offset < 0 || offset + triggerChar.length > cursorPosition) return null;
7
+ if (!text.startsWith(triggerChar, offset)) return null;
8
+ if (endOffset < offset + triggerChar.length || endOffset > text.length) return null;
9
+ return {
10
+ query,
11
+ offset,
12
+ endOffset
13
+ };
14
+ }
3
15
  /**
4
16
  * Detect a trigger character in text relative to the cursor position.
5
17
  *
6
18
  * @internal Exported for testing and for trigger resources.
7
19
  */
8
- function detectTrigger(text, triggerChar, cursorPosition) {
20
+ function detectTrigger(text, triggerChar, cursorPosition, matcher) {
21
+ if (matcher) return resolveTriggerMatch(text, triggerChar, cursorPosition, matcher(text, triggerChar, cursorPosition));
9
22
  const textUpToCursor = text.slice(0, cursorPosition);
10
23
  for (let i = textUpToCursor.length - 1; i >= 0; i--) {
11
24
  const char = textUpToCursor[i];
@@ -14,13 +27,14 @@ function detectTrigger(text, triggerChar, cursorPosition) {
14
27
  if (i > 0 && !WHITESPACE_RE.test(textUpToCursor[i - 1])) continue;
15
28
  return {
16
29
  query: textUpToCursor.slice(i + triggerChar.length),
17
- offset: i
30
+ offset: i,
31
+ endOffset: cursorPosition
18
32
  };
19
33
  }
20
34
  }
21
35
  return null;
22
36
  }
23
37
  //#endregion
24
- export { detectTrigger };
38
+ export { detectTrigger, resolveTriggerMatch };
25
39
 
26
40
  //# sourceMappingURL=detectTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detectTrigger.js","names":["WHITESPACE_RE","detectTrigger","text","triggerChar","cursorPosition","query","offset","textUpToCursor","slice","i","length","char","test","startsWith"],"sources":["../../../../src/primitives/composer/trigger/detectTrigger.ts"],"sourcesContent":["const WHITESPACE_RE = /\\s/u;\n\n/**\n * Detect a trigger character in text relative to the cursor position.\n *\n * @internal Exported for testing and for trigger resources.\n */\nexport function detectTrigger(\n text: string,\n triggerChar: string,\n cursorPosition: number,\n): {\n query: string;\n offset: number;\n} | null {\n // Only consider text up to the cursor\n const textUpToCursor = text.slice(0, cursorPosition);\n\n // Search backwards from cursor for the trigger character.\n // Stop at any whitespace during scan trigger must be contiguous with cursor.\n for (let i = textUpToCursor.length - 1; i >= 0; i--) {\n const char = textUpToCursor[i]!;\n\n if (WHITESPACE_RE.test(char)) return null;\n\n if (textUpToCursor.startsWith(triggerChar, i)) {\n // Trigger must be preceded by whitespace or be at start of text\n if (i > 0 && !WHITESPACE_RE.test(textUpToCursor[i - 1]!)) continue;\n\n const query = textUpToCursor.slice(i + triggerChar.length);\n\n return { query, offset: i };\n }\n }\n\n return null;\n}\n"],"mappings":";AAAA,MAAMA,gBAAgB;;;;;;AAOtB,SAAgBC,cACdC,MACAC,aACAC,gBAIO;CAEP,MAAMG,iBAAiBL,KAAKM,MAAM,GAAGJ,cAAc;CAInD,KAAK,IAAIK,IAAIF,eAAeG,SAAS,GAAGD,KAAK,GAAGA,KAAK;EACnD,MAAME,OAAOJ,eAAeE;EAE5B,IAAIT,cAAcY,KAAKD,IAAI,GAAG,OAAO;EAErC,IAAIJ,eAAeM,WAAWV,aAAaM,CAAC,GAAG;GAE7C,IAAIA,IAAI,KAAK,CAACT,cAAcY,KAAKL,eAAeE,IAAI,EAAG,GAAG;GAI1D,OAAO;IAAEJ,OAFKE,eAAeC,MAAMC,IAAIN,YAAYO,MAE1CL;IAAOC,QAAQG;GAAE;EAC5B;CACF;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"detectTrigger.js","names":["WHITESPACE_RE","TriggerMatch","query","offset","endOffset","TriggerMatcher","text","triggerChar","cursorPosition","resolveTriggerMatch","match","length","startsWith","detectTrigger","matcher","textUpToCursor","slice","i","char","test"],"sources":["../../../../src/primitives/composer/trigger/detectTrigger.ts"],"sourcesContent":["const WHITESPACE_RE = /\\s/u;\n\nexport type TriggerMatch = {\n readonly query: string;\n readonly offset: number;\n readonly endOffset: number;\n};\n\n/**\n * Locates a trigger query in `text` relative to `cursorPosition`.\n *\n * `offset` is the index of `triggerChar`. `endOffset` is the exclusive end of\n * the span both the textarea and Lexical replace on select. `query` is the\n * search string and may differ from that span.\n *\n * Return null when the caret is at or before the trigger. Escape moves the\n * caret to `offset` so a match there would reopen the popover.\n */\nexport type TriggerMatcher = (\n text: string,\n triggerChar: string,\n cursorPosition: number,\n) => TriggerMatch | null;\n\nexport function resolveTriggerMatch(\n text: string,\n triggerChar: string,\n cursorPosition: number,\n match: TriggerMatch | null,\n): TriggerMatch | null {\n if (match === null) return null;\n const { query, offset, endOffset } = match;\n if (offset < 0 || offset + triggerChar.length > cursorPosition) return null;\n if (!text.startsWith(triggerChar, offset)) return null;\n if (endOffset < offset + triggerChar.length || endOffset > text.length) {\n return null;\n }\n return { query, offset, endOffset };\n}\n\n/**\n * Detect a trigger character in text relative to the cursor position.\n *\n * @internal Exported for testing and for trigger resources.\n */\nexport function detectTrigger(\n text: string,\n triggerChar: string,\n cursorPosition: number,\n matcher?: TriggerMatcher | undefined,\n): TriggerMatch | null {\n if (matcher) {\n return resolveTriggerMatch(\n text,\n triggerChar,\n cursorPosition,\n matcher(text, triggerChar, cursorPosition),\n );\n }\n\n const textUpToCursor = text.slice(0, cursorPosition);\n\n for (let i = textUpToCursor.length - 1; i >= 0; i--) {\n const char = textUpToCursor[i]!;\n\n if (WHITESPACE_RE.test(char)) return null;\n\n if (textUpToCursor.startsWith(triggerChar, i)) {\n if (i > 0 && !WHITESPACE_RE.test(textUpToCursor[i - 1]!)) continue;\n\n const query = textUpToCursor.slice(i + triggerChar.length);\n\n return { query, offset: i, endOffset: cursorPosition };\n }\n }\n\n return null;\n}\n"],"mappings":";AAAA,MAAMA,gBAAgB;AAwBtB,SAAgBS,oBACdH,MACAC,aACAC,gBACAE,OACqB;CACrB,IAAIA,UAAU,MAAM,OAAO;CAC3B,MAAM,EAAER,OAAOC,QAAQC,cAAcM;CACrC,IAAIP,SAAS,KAAKA,SAASI,YAAYI,SAASH,gBAAgB,OAAO;CACvE,IAAI,CAACF,KAAKM,WAAWL,aAAaJ,MAAM,GAAG,OAAO;CAClD,IAAIC,YAAYD,SAASI,YAAYI,UAAUP,YAAYE,KAAKK,QAC9D,OAAO;CAET,OAAO;EAAET;EAAOC;EAAQC;CAAU;AACpC;;;;;;AAOA,SAAgBS,cACdP,MACAC,aACAC,gBACAM,SACqB;CACrB,IAAIA,SACF,OAAOL,oBACLH,MACAC,aACAC,gBACAM,QAAQR,MAAMC,aAAaC,cAAc,CAC3C;CAGF,MAAMO,iBAAiBT,KAAKU,MAAM,GAAGR,cAAc;CAEnD,KAAK,IAAIS,IAAIF,eAAeJ,SAAS,GAAGM,KAAK,GAAGA,KAAK;EACnD,MAAMC,OAAOH,eAAeE;EAE5B,IAAIjB,cAAcmB,KAAKD,IAAI,GAAG,OAAO;EAErC,IAAIH,eAAeH,WAAWL,aAAaU,CAAC,GAAG;GAC7C,IAAIA,IAAI,KAAK,CAACjB,cAAcmB,KAAKJ,eAAeE,IAAI,EAAG,GAAG;GAI1D,OAAO;IAAEf,OAFKa,eAAeC,MAAMC,IAAIV,YAAYI,MAE1CT;IAAOC,QAAQc;IAAGb,WAAWI;GAAe;EACvD;CACF;CAEA,OAAO;AACT"}
@@ -1,3 +1,4 @@
1
+ import { TriggerMatch, TriggerMatcher } from "./detectTrigger.js";
1
2
  import { TriggerBehavior } from "./triggerSelectionResource.js";
2
3
  import { ComposerPrimitiveTriggerPopoverRoot, RegisteredTrigger, TriggerPopoverRootContextValue, useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional, useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional } from "./TriggerPopoverRootContext.js";
3
4
  import { useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional } from "./TriggerPopover.js";
@@ -13,6 +14,7 @@ declare const ComposerPrimitiveTriggerPopover: import("react").ForwardRefExoticC
13
14
  render?: import("react").ReactElement | undefined;
14
15
  } & import("react").RefAttributes<HTMLDivElement>, "ref">, "onSelect"> & {
15
16
  readonly char: string;
17
+ readonly matcher?: TriggerMatcher | undefined;
16
18
  readonly adapter?: import("@assistant-ui/core").Unstable_TriggerAdapter | undefined;
17
19
  readonly isLoading?: boolean | undefined;
18
20
  } & import("react").RefAttributes<HTMLDivElement>> & {
@@ -20,5 +22,5 @@ declare const ComposerPrimitiveTriggerPopover: import("react").ForwardRefExoticC
20
22
  Action: import("react").FC<ComposerPrimitiveTriggerPopoverAction.Props>;
21
23
  };
22
24
  //#endregion
23
- export { ComposerPrimitiveTriggerPopover, ComposerPrimitiveTriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot, type RegisteredTrigger, type TriggerBehavior, type TriggerPopoverRootContextValue, useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional };
25
+ export { ComposerPrimitiveTriggerPopover, ComposerPrimitiveTriggerPopoverBack, ComposerPrimitiveTriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem, ComposerPrimitiveTriggerPopoverItem, ComposerPrimitiveTriggerPopoverItems, ComposerPrimitiveTriggerPopoverRoot, type RegisteredTrigger, type TriggerBehavior, type TriggerMatch, type TriggerMatcher, type TriggerPopoverRootContextValue, useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional };
24
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/index.ts"],"mappings":";;;;;;;;;cA4Ba,iDAA+B,0BAAA,KAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/index.ts"],"mappings":";;;;;;;;;;cA6Ba,iDAA+B,0BAAA,KAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;;;qBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ComposerPrimitiveTriggerPopoverRoot","useTriggerPopoverRootContext","useTriggerPopoverRootContextOptional","useTriggerPopoverTriggers","useTriggerPopoverTriggersOptional","RegisteredTrigger","TriggerPopoverRootContextValue","useTriggerPopoverScopeContext","useTriggerPopoverScopeContextOptional","ComposerPrimitiveTriggerPopoverCategories","ComposerPrimitiveTriggerPopoverCategoryItem","ComposerPrimitiveTriggerPopoverItems","ComposerPrimitiveTriggerPopoverItem","ComposerPrimitiveTriggerPopoverBack","TriggerBehavior","ComposerPrimitiveTriggerPopover","Base","ComposerPrimitiveTriggerPopoverAction","ComposerPrimitiveTriggerPopoverDirective","Object","assign","Directive","Action"],"sources":["../../../../src/primitives/composer/trigger/index.ts"],"sourcesContent":["export {\n ComposerPrimitiveTriggerPopoverRoot,\n useTriggerPopoverRootContext,\n useTriggerPopoverRootContextOptional,\n useTriggerPopoverTriggers,\n useTriggerPopoverTriggersOptional,\n type RegisteredTrigger,\n type TriggerPopoverRootContextValue,\n} from \"./TriggerPopoverRootContext\";\nexport {\n useTriggerPopoverScopeContext,\n useTriggerPopoverScopeContextOptional,\n} from \"./TriggerPopover\";\nexport {\n ComposerPrimitiveTriggerPopoverCategories,\n ComposerPrimitiveTriggerPopoverCategoryItem,\n} from \"./TriggerPopoverCategories\";\nexport {\n ComposerPrimitiveTriggerPopoverItems,\n ComposerPrimitiveTriggerPopoverItem,\n} from \"./TriggerPopoverItems\";\nexport { ComposerPrimitiveTriggerPopoverBack } from \"./TriggerPopoverBack\";\nexport type { TriggerBehavior } from \"./triggerSelectionResource\";\n\nimport { ComposerPrimitiveTriggerPopover as Base } from \"./TriggerPopover\";\nimport { ComposerPrimitiveTriggerPopoverAction } from \"./TriggerPopoverAction\";\nimport { ComposerPrimitiveTriggerPopoverDirective } from \"./TriggerPopoverDirective\";\n\nexport const ComposerPrimitiveTriggerPopover = Object.assign(Base, {\n Directive: ComposerPrimitiveTriggerPopoverDirective,\n Action: ComposerPrimitiveTriggerPopoverAction,\n});\n"],"mappings":";;;;;;;;AA4BA,MAAae,kCAAkCI,OAAOC,OAAOJ,mCAAM;CACjEK,WAAWH;CACXI,QAAQL;AACV,CAAC"}
1
+ {"version":3,"file":"index.js","names":["ComposerPrimitiveTriggerPopoverRoot","useTriggerPopoverRootContext","useTriggerPopoverRootContextOptional","useTriggerPopoverTriggers","useTriggerPopoverTriggersOptional","RegisteredTrigger","TriggerPopoverRootContextValue","useTriggerPopoverScopeContext","useTriggerPopoverScopeContextOptional","ComposerPrimitiveTriggerPopoverCategories","ComposerPrimitiveTriggerPopoverCategoryItem","ComposerPrimitiveTriggerPopoverItems","ComposerPrimitiveTriggerPopoverItem","ComposerPrimitiveTriggerPopoverBack","TriggerBehavior","TriggerMatch","TriggerMatcher","ComposerPrimitiveTriggerPopover","Base","ComposerPrimitiveTriggerPopoverAction","ComposerPrimitiveTriggerPopoverDirective","Object","assign","Directive","Action"],"sources":["../../../../src/primitives/composer/trigger/index.ts"],"sourcesContent":["export {\n ComposerPrimitiveTriggerPopoverRoot,\n useTriggerPopoverRootContext,\n useTriggerPopoverRootContextOptional,\n useTriggerPopoverTriggers,\n useTriggerPopoverTriggersOptional,\n type RegisteredTrigger,\n type TriggerPopoverRootContextValue,\n} from \"./TriggerPopoverRootContext\";\nexport {\n useTriggerPopoverScopeContext,\n useTriggerPopoverScopeContextOptional,\n} from \"./TriggerPopover\";\nexport {\n ComposerPrimitiveTriggerPopoverCategories,\n ComposerPrimitiveTriggerPopoverCategoryItem,\n} from \"./TriggerPopoverCategories\";\nexport {\n ComposerPrimitiveTriggerPopoverItems,\n ComposerPrimitiveTriggerPopoverItem,\n} from \"./TriggerPopoverItems\";\nexport { ComposerPrimitiveTriggerPopoverBack } from \"./TriggerPopoverBack\";\nexport type { TriggerBehavior } from \"./triggerSelectionResource\";\nexport type { TriggerMatch, TriggerMatcher } from \"./detectTrigger\";\n\nimport { ComposerPrimitiveTriggerPopover as Base } from \"./TriggerPopover\";\nimport { ComposerPrimitiveTriggerPopoverAction } from \"./TriggerPopoverAction\";\nimport { ComposerPrimitiveTriggerPopoverDirective } from \"./TriggerPopoverDirective\";\n\nexport const ComposerPrimitiveTriggerPopover = Object.assign(Base, {\n Directive: ComposerPrimitiveTriggerPopoverDirective,\n Action: ComposerPrimitiveTriggerPopoverAction,\n});\n"],"mappings":";;;;;;;;AA6BA,MAAaiB,kCAAkCI,OAAOC,OAAOJ,mCAAM;CACjEK,WAAWH;CACXI,QAAQL;AACV,CAAC"}
@@ -1,9 +1,7 @@
1
+ import { TriggerMatch, TriggerMatcher } from "./detectTrigger.js";
1
2
  //#region src/primitives/composer/trigger/triggerDetectionResource.d.ts
2
3
  /** Detected trigger position within the composer text. */
3
- type DetectedTrigger = {
4
- readonly offset: number;
5
- readonly query: string;
6
- };
4
+ type DetectedTrigger = TriggerMatch;
7
5
  type TriggerDetectionResourceOutput = {
8
6
  /** Detected trigger (or `null` when inactive). */
9
7
  readonly trigger: DetectedTrigger | null;
@@ -15,6 +13,7 @@ type TriggerDetectionResourceOutput = {
15
13
  declare const TriggerDetectionResource: import("@assistant-ui/tap").Resource<TriggerDetectionResourceOutput, [{
16
14
  text: string;
17
15
  triggerChar: string;
16
+ matcher?: TriggerMatcher | undefined;
18
17
  }]>;
19
18
  //#endregion
20
19
  export { DetectedTrigger, TriggerDetectionResource, TriggerDetectionResourceOutput };
@@ -1 +1 @@
1
- {"version":3,"file":"triggerDetectionResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerDetectionResource.ts"],"mappings":";;KAKY;WACD;WACA;;KAGC;;WAED,SAAS;;WAET;;EAET,kBAAkB;;cA2BP,sDAAwB,SAAA;EAnB7B;EACO"}
1
+ {"version":3,"file":"triggerDetectionResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerDetectionResource.ts"],"mappings":";;;KASY,kBAAkB;KAElB;;WAED,SAAS;;WAET;;EAET,kBAAkB;;cA6BP,sDAAwB,SAAA;EApB7B;EACO;EACH,UAAA"}