@assistant-ui/react 0.14.27 → 0.14.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +2 -2
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/context/react/utils/createContextStoreHook.d.ts.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +7 -1
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -1
- package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerQuote.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.d.ts +5 -0
- package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js +86 -40
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerStopDictation.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
- package/dist/primitives/composer/trigger/detectTrigger.d.ts +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
- package/dist/primitives/dropdownMenuRenderPrimitives.d.ts.map +1 -1
- package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.d.ts +3 -2
- package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.js +3 -2
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartFile.d.ts +5 -4
- package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartFile.js +11 -3
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartImage.d.ts +5 -4
- package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartImage.js +10 -3
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +5 -4
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartReasoning.js +10 -3
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.d.ts +6 -4
- package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.js +12 -3
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartText.d.ts +6 -5
- package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartText.js +10 -3
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -1
- package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -1
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +53 -19
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -1
- package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts.map +1 -1
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts +4 -0
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts.map +1 -1
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js +14 -1
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts +13 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js +14 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +2 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/threadList/ThreadListLoadMore.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
- package/dist/primitives/threadListFocusGroup.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts.map +1 -1
- package/dist/tests/setup.d.ts +1 -1
- package/dist/utils/Primitive.d.ts.map +1 -1
- package/dist/utils/Primitive.js.map +1 -1
- package/dist/utils/createActionButton.d.ts.map +1 -1
- package/package.json +20 -20
- package/src/client/ExternalThread.ts +2 -1
- package/src/model-context/makeAssistantVisible.test.tsx +146 -0
- package/src/model-context/makeAssistantVisible.tsx +18 -1
- package/src/primitives/composer/ComposerRoot.test.tsx +226 -5
- package/src/primitives/composer/ComposerRoot.tsx +50 -1
- package/src/primitives/messagePart/useMessagePartData.ts +3 -2
- package/src/primitives/messagePart/useMessagePartFile.ts +19 -7
- package/src/primitives/messagePart/useMessagePartImage.ts +18 -7
- package/src/primitives/messagePart/useMessagePartReasoning.ts +15 -6
- package/src/primitives/messagePart/useMessagePartSource.ts +20 -7
- package/src/primitives/messagePart/useMessagePartText.ts +15 -5
- package/src/primitives/thread/ThreadViewport.tsx +15 -0
- package/src/primitives/thread/topAnchor/mountTopAnchorReserve.test.ts +243 -0
- package/src/primitives/thread/topAnchor/mountTopAnchorReserve.ts +28 -7
- package/src/primitives/thread/topAnchor/topAnchorTurn.test.ts +69 -0
- package/src/primitives/thread/topAnchor/topAnchorTurn.ts +29 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +86 -1
- package/src/primitives/thread/useThreadViewportAutoScroll.ts +6 -1
- package/src/tests/BaseComposerRuntimeCore.test.ts +12 -3
- package/src/tests/external-thread-attachments.test.tsx +81 -0
- package/src/tests/messagePartSwitchRace.test.tsx +158 -0
- package/src/tests/messagePartTypeMismatch.test.tsx +146 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopover.js","names":["c","_c","useAui","useAuiState","useResource","Unstable_TriggerAdapter","createContext","forwardRef","useCallback","useContext","useEffect","useEffectEvent","useId","useMemo","useRef","useState","ComponentPropsWithoutRef","ComponentRef","Primitive","useComposerInputPluginRegistryOptional","TriggerPopoverResource","TriggerPopoverResourceOutput","TriggerBehavior","useTriggerPopoverAriaPublish","useTriggerPopoverRootContext","TriggerPopoverScopeContext","useTriggerPopoverScopeContext","ctx","Error","useTriggerPopoverScopeContextOptional","TriggerBehaviorRegistration","register","behavior","TriggerBehaviorRegistrationContext","useTriggerBehaviorRegistration","ComposerPrimitiveTriggerPopover","Element","div","Props","Omit","char","adapter","isLoading","t0","forwardedRef","$","ariaLabel","children","props","t1","undefined","aui","text","_temp","popoverId","behaviorRef","setBehavior","registrationCountRef","t2","next","current","process","env","NODE_ENV","console","warn","Math","max","t3","registration","t4","t5","triggerChar","resource","t6","getResource","root","t7","t8","pluginRegistry","t9","t10","open","aria","t11","t12","setActiveAria","t13","t14","highlightedItemId","t15","t16","t17","displayName","s","composer"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { useResource } from \"@assistant-ui/tap\";\nimport type { Unstable_TriggerAdapter } from \"@assistant-ui/core\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useEffectEvent,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n} from \"react\";\nimport { Primitive } from \"../../../utils/Primitive\";\nimport { useComposerInputPluginRegistryOptional } from \"../ComposerInputPluginContext\";\nimport {\n TriggerPopoverResource,\n type TriggerPopoverResourceOutput,\n} from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport {\n useTriggerPopoverAriaPublish,\n useTriggerPopoverRootContext,\n} from \"./TriggerPopoverRootContext\";\n\nconst TriggerPopoverScopeContext =\n createContext<TriggerPopoverResourceOutput | null>(null);\n\nexport const useTriggerPopoverScopeContext = () => {\n const ctx = useContext(TriggerPopoverScopeContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverScopeContextOptional = () =>\n useContext(TriggerPopoverScopeContext);\n\n/** Registration API exposed to behavior sub-primitives. */\nexport type TriggerBehaviorRegistration = {\n register(behavior: TriggerBehavior): () => void;\n};\n\nconst TriggerBehaviorRegistrationContext =\n createContext<TriggerBehaviorRegistration | null>(null);\n\n/** Obtain the registration handle from the parent `<TriggerPopover>`. */\nexport const useTriggerBehaviorRegistration = () => {\n const ctx = useContext(TriggerBehaviorRegistrationContext);\n if (!ctx)\n throw new Error(\n \"TriggerPopover.Directive / TriggerPopover.Action must be rendered inside ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport namespace ComposerPrimitiveTriggerPopover {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"onSelect\"\n > & {\n /** The character(s) that activate this trigger (e.g. `\"@\"`, `\"/\"`). Also serves as the trigger identity within the root. */\n readonly char: string;\n /** Adapter providing categories and items. */\n readonly adapter?: Unstable_TriggerAdapter | undefined;\n /** Whether the adapter is resolving items, surfaced to the popover scope for async sources. @default false */\n readonly isLoading?: boolean | undefined;\n };\n}\n\n/**\n * Declares a trigger and renders its popover container. The popover only\n * renders its DOM (and children) when the trigger character is active in the\n * composer input and a behavior sub-primitive has been registered.\n *\n * A behavior is contributed by rendering exactly one of\n * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without\n * a behavior the trigger stays closed.\n *\n * Must be placed inside `ComposerPrimitive.Unstable_TriggerPopoverRoot`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover\n * char=\"@\"\n * adapter={mentionAdapter}\n * >\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * <ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * {(cats) => cats.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * <ComposerPrimitive.Unstable_TriggerPopoverItems>\n * {(items) => items.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverItems>\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopover = forwardRef<\n ComposerPrimitiveTriggerPopover.Element,\n ComposerPrimitiveTriggerPopover.Props\n>(\n (\n {\n char,\n adapter,\n isLoading = false,\n \"aria-label\": ariaLabel,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const text = useAuiState((s) => s.composer.text);\n const popoverId = useId();\n\n // Track in state (for resource reactivity) + ref (dev warning on duplicate registrations).\n const behaviorRef = useRef<TriggerBehavior | null>(null);\n const [behavior, setBehavior] = useState<TriggerBehavior | null>(null);\n const registrationCountRef = useRef(0);\n\n const register = useCallback<TriggerBehaviorRegistration[\"register\"]>(\n (next) => {\n registrationCountRef.current += 1;\n if (\n process.env.NODE_ENV !== \"production\" &&\n registrationCountRef.current > 1\n ) {\n console.warn(\n `[assistant-ui] TriggerPopover \"${char}\" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`,\n );\n }\n behaviorRef.current = next;\n setBehavior(next);\n return () => {\n registrationCountRef.current = Math.max(\n 0,\n registrationCountRef.current - 1,\n );\n if (behaviorRef.current === next) {\n behaviorRef.current = null;\n setBehavior(null);\n }\n };\n },\n [char],\n );\n\n const registration = useMemo<TriggerBehaviorRegistration>(\n () => ({ register }),\n [register],\n );\n\n const resource = useResource(\n TriggerPopoverResource({\n adapter,\n text,\n triggerChar: char,\n behavior: behavior ?? undefined,\n aui,\n popoverId,\n isLoading,\n }),\n );\n\n const getResource = useEffectEvent(() => resource);\n\n const root = useTriggerPopoverRootContext();\n useEffect(() => {\n return root.register({\n char,\n ...(behavior ? { behavior } : {}),\n resource: getResource(),\n });\n }, [root, char, behavior]);\n\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n useEffect(() => {\n if (!pluginRegistry) return undefined;\n return pluginRegistry.register(getResource());\n }, [pluginRegistry]);\n\n const open = behavior !== null && resource.open;\n\n const aria = useTriggerPopoverAriaPublish();\n\n useEffect(() => {\n if (!open) return undefined;\n return () => {\n aria.setActiveAria(char, null);\n };\n }, [aria, char, open]);\n\n useEffect(() => {\n if (!open) return;\n aria.setActiveAria(char, {\n popoverId,\n highlightedItemId: resource.highlightedItemId,\n });\n }, [aria, char, popoverId, open, resource.highlightedItemId]);\n\n return (\n <TriggerBehaviorRegistrationContext.Provider value={registration}>\n <TriggerPopoverScopeContext.Provider value={resource}>\n {open ? (\n <Primitive.div\n role=\"listbox\"\n id={popoverId}\n aria-label={ariaLabel ?? \"Suggestions\"}\n aria-activedescendant={resource.highlightedItemId}\n data-state=\"open\"\n {...props}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n ) : (\n children\n )}\n </TriggerPopoverScopeContext.Provider>\n </TriggerBehaviorRegistrationContext.Provider>\n );\n },\n);\n\nComposerPrimitiveTriggerPopover.displayName =\n \"ComposerPrimitive.TriggerPopover\";\n"],"mappings":";;;;;;;;;;;AA+BA,MAAMyB,6BACJnB,cAAmD,IAAI;AAEzD,MAAaoB,sCAAgC;CAC3C,MAAAC,MAAYlB,WAAWgB,0BAA0B;CACjD,IAAI,CAACE,KACH,MAAM,IAAIC,MACR,oFACF;CAAE,OACGD;AAAG;AAGZ,MAAaE,8CAAwC;CAAA,OACnDpB,WAAWgB,0BAA0B;AAAC;AAOxC,MAAMQ,qCACJ3B,cAAkD,IAAI;;AAGxD,MAAa4B,uCAAiC;CAC5C,MAAAP,MAAYlB,WAAWwB,kCAAkC;CACzD,IAAI,CAACN,KACH,MAAM,IAAIC,MACR,2GACF;CAAE,OACGD;AAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CZ,MAAaQ,kCAAkC5B,YAI7CoC,IAAAC,iBAAA;CAAA,MAAAC,IAAA5C,EAAA,EAAA;CAAA,IAAAwC;CAAA,IAAAK;CAAA,IAAAN;CAAA,IAAAO;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAF,IAAA;EACE,CAAA,CAAAH,MAAAC,SAAAC,WAAAO,IAAA,cAAAH,WAAAC,aAAAC,SAAAL;EAOCE,EAAA,KAAAF;EAAAE,EAAA,KAAAJ;EAAAI,EAAA,KAAAC;EAAAD,EAAA,KAAAL;EAAAK,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAR,UAAAI,EAAA;EAAAC,YAAAD,EAAA;EAAAL,OAAAK,EAAA;EAAAE,WAAAF,EAAA;EAAAG,QAAAH,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAJC,MAAAH,YAAAO,OAAAC,KAAAA,IAAA,QAAAD;CAOF,MAAAE,MAAYjD,OAAO;CACnB,MAAAkD,OAAajD,YAAYkD,KAAsB;CAC/C,MAAAC,YAAkB1C,MAAM;CAGxB,MAAA2C,cAAoBzC,OAA+B,IAAI;CACvD,MAAA,CAAAkB,UAAAwB,eAAgCzC,SAAiC,IAAI;CACrE,MAAA0C,uBAA6B3C,OAAO,CAAC;CAAE,IAAA4C;CAAA,IAAAb,EAAA,OAAAL,MAAA;EAGrCkB,MAAAC,SAAA;GACEF,qBAAoBG,UAApBH,qBAAoBG,UAAY;GAChC,IACEC,QAAOC,IAAIC,aAAc,gBACzBN,qBAAoBG,UAAW,GAE/BI,QAAOC,KACL,kCAAkCzB,KAAI,sKACxC;GAEFe,YAAWK,UAAWD;GACtBH,YAAYG,IAAI;GAAC,aACV;IACLF,qBAAoBG,UAAWM,KAAIC,IACjC,GACAV,qBAAoBG,UAAW,CACjC;IACA,IAAIL,YAAWK,YAAaD,MAAI;KAC9BJ,YAAWK,UAAW;KACtBJ,YAAY,IAAI;IAAC;GAClB;EACF;EACFX,EAAA,KAAAL;EAAAK,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAvBH,MAAAd,WAAiB2B;CAyBf,IAAAU;CAAA,IAAAvB,EAAA,OAAAd,UAAA;EAGOqC,KAAA,EAAArC,SAAW;EAACc,EAAA,KAAAd;EAAAc,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CADrB,MAAAwB,eACSD;CASK,MAAAE,KAAAtC,YAAAkB,KAAAA;CAAqB,IAAAqB;CAAA,IAAA1B,EAAA,QAAAJ,WAAAI,EAAA,QAAAM,OAAAN,EAAA,QAAAL,QAAAK,EAAA,QAAAH,aAAAG,EAAA,QAAAS,aAAAT,EAAA,QAAAyB,MAAAzB,EAAA,QAAAO,MAAA;EAJjCmB,KAAAnD,uBAAuB;GAAAqB;GAAAW;GAAAoB,aAGRhC;GAAIR,UACPsC;GAAqBnB;GAAAG;GAAAZ;EAIjC,CAAC;EAACG,EAAA,MAAAJ;EAAAI,EAAA,MAAAM;EAAAN,EAAA,MAAAL;EAAAK,EAAA,MAAAH;EAAAG,EAAA,MAAAS;EAAAT,EAAA,MAAAyB;EAAAzB,EAAA,MAAAO;EAAAP,EAAA,MAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CATJ,MAAA4B,WAAiBrE,YACfmE,EASF;CAAE,IAAAG;CAAA,IAAA7B,EAAA,QAAA4B,UAAA;EAEiCC,WAAMD;EAAQ5B,EAAA,MAAA4B;EAAA5B,EAAA,MAAA6B;CAAA,OAAAA,KAAA7B,EAAA;CAAjD,MAAA8B,cAAoBhE,eAAe+D,EAAc;CAEjD,MAAAE,OAAapD,6BAA6B;CAAE,IAAAqD;CAAA,IAAAhC,EAAA,QAAAb,YAAAa,EAAA,QAAAL,QAAAK,EAAA,QAAA8B,eAAA9B,EAAA,QAAA+B,MAAA;EAClCC,WACDD,KAAI7C,SAAU;GAAAS;GAAA,GAEfR,WAAA,EAAAA,SAA2B,IAA3B,CAA2B;GAACyC,UACtBE,YAAY;EACxB,CAAC;EACF9B,EAAA,MAAAb;EAAAa,EAAA,MAAAL;EAAAK,EAAA,MAAA8B;EAAA9B,EAAA,MAAA+B;EAAA/B,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAAA,IAAAiC;CAAA,IAAAjC,EAAA,QAAAb,YAAAa,EAAA,QAAAL,QAAAK,EAAA,QAAA+B,MAAA;EAAEE,KAAA;GAACF;GAAMpC;GAAMR;EAAQ;EAACa,EAAA,MAAAb;EAAAa,EAAA,MAAAL;EAAAK,EAAA,MAAA+B;EAAA/B,EAAA,MAAAiC;CAAA,OAAAA,KAAAjC,EAAA;CANzBnC,UAAUmE,IAMPC,EAAsB;CAEzB,MAAAC,iBAAuB5D,uCAAuC;CAAE,IAAA6D;CAAA,IAAAnC,EAAA,QAAA8B,eAAA9B,EAAA,QAAAkC,gBAAA;EACtDC,WAAA;GACR,IAAI,CAACD,gBAAc;GAAmB,OAC/BA,eAAchD,SAAU4C,YAAY,CAAC;EAAC;EAC9C9B,EAAA,MAAA8B;EAAA9B,EAAA,MAAAkC;EAAAlC,EAAA,MAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAAA,IAAAoC;CAAA,IAAApC,EAAA,QAAAkC,gBAAA;EAAEE,MAAA,CAACF,cAAc;EAAClC,EAAA,MAAAkC;EAAAlC,EAAA,MAAAoC;CAAA,OAAAA,MAAApC,EAAA;CAHnBnC,UAAUsE,IAGPC,GAAgB;CAEnB,MAAAC,OAAalD,aAAa,QAAQyC,SAAQS;CAE1C,MAAAC,OAAa5D,6BAA6B;CAAE,IAAA6D;CAAA,IAAAC;CAAA,IAAAxC,EAAA,QAAAsC,QAAAtC,EAAA,QAAAL,QAAAK,EAAA,QAAAqC,MAAA;EAElCE,YAAA;GACR,IAAI,CAACF,MAAI;GAAmB,aACrB;IACLC,KAAIG,cAAe9C,MAAM,IAAI;GAAC;EAC/B;EACA6C,MAAA;GAACF;GAAM3C;GAAM0C;EAAI;EAACrC,EAAA,MAAAsC;EAAAtC,EAAA,MAAAL;EAAAK,EAAA,MAAAqC;EAAArC,EAAA,MAAAuC;EAAAvC,EAAA,MAAAwC;CAAA,OAAA;EAAAD,MAAAvC,EAAA;EAAAwC,MAAAxC,EAAA;CAAA;CALrBnC,UAAU0E,KAKPC,GAAkB;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAA3C,EAAA,QAAAsC,QAAAtC,EAAA,QAAAL,QAAAK,EAAA,QAAAqC,QAAArC,EAAA,QAAAS,aAAAT,EAAA,QAAA4B,SAAAgB,mBAAA;EAEZF,YAAA;GACR,IAAI,CAACL,MAAI;GACTC,KAAIG,cAAe9C,MAAM;IAAAc;IAAAmC,mBAEJhB,SAAQgB;GAC7B,CAAC;EAAC;EACDD,MAAA;GAACL;GAAM3C;GAAMc;GAAW4B;GAAMT,SAAQgB;EAAkB;EAAC5C,EAAA,MAAAsC;EAAAtC,EAAA,MAAAL;EAAAK,EAAA,MAAAqC;EAAArC,EAAA,MAAAS;EAAAT,EAAA,MAAA4B,SAAAgB;EAAA5C,EAAA,MAAA0C;EAAA1C,EAAA,MAAA2C;CAAA,OAAA;EAAAD,MAAA1C,EAAA;EAAA2C,MAAA3C,EAAA;CAAA;CAN5DnC,UAAU6E,KAMPC,GAAyD;CAAC,IAAAE;CAAA,IAAA7C,EAAA,QAAAC,aAAAD,EAAA,QAAAE,YAAAF,EAAA,QAAAD,gBAAAC,EAAA,QAAAqC,QAAArC,EAAA,QAAAS,aAAAT,EAAA,QAAAG,SAAAH,EAAA,QAAA4B,SAAAgB,mBAAA;EAKtDC,MAAAR,OACC,oBAAA,UAAA,KAAA;GACO,MAAA;GACD5B,IAAAA;GACQ,cAAAR,aAAA;GACW,yBAAA2B,SAAQgB;GACpB,cAAA;GAAM,GACbzC;GACCJ,KAAAA;GAEJG;EACH,CAAA,IAXDA;EAcAF,EAAA,MAAAC;EAAAD,EAAA,MAAAE;EAAAF,EAAA,MAAAD;EAAAC,EAAA,MAAAqC;EAAArC,EAAA,MAAAS;EAAAT,EAAA,MAAAG;EAAAH,EAAA,MAAA4B,SAAAgB;EAAA5C,EAAA,MAAA6C;CAAA,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,IAAA9C,EAAA,QAAA4B,YAAA5B,EAAA,QAAA6C,KAAA;EAfHC,MAAA,oBAAA,2BAAA,UAAA;GAA4ClB,OAAAA;aACzCiB;EAeH,CAAA;EAAsC7C,EAAA,MAAA4B;EAAA5B,EAAA,MAAA6C;EAAA7C,EAAA,MAAA8C;CAAA,OAAAA,MAAA9C,EAAA;CAAA,IAAA+C;CAAA,IAAA/C,EAAA,QAAAwB,gBAAAxB,EAAA,QAAA8C,KAAA;EAjBxCC,MAAA,oBAAA,mCAAA,UAAA;GAAoDvB,OAAAA;aAClDsB;EAiBF,CAAA;EAA8C9C,EAAA,MAAAwB;EAAAxB,EAAA,MAAA8C;EAAA9C,EAAA,MAAA+C;CAAA,OAAAA,MAAA/C,EAAA;CAAA,OAlB9C+C;AAkB8C,CAGpD;AAEAzD,gCAAgC0D,cAC9B;AA7HA,SAAAxC,MAAAyC,GAAA;CAAA,OAYkCA,EAACC,SAAS3C;AAAK"}
|
|
1
|
+
{"version":3,"file":"TriggerPopover.js","names":["c","_c","useAui","useAuiState","useResource","Unstable_TriggerAdapter","createContext","forwardRef","useCallback","useContext","useEffect","useEffectEvent","useId","useMemo","useRef","useState","ComponentPropsWithoutRef","ComponentRef","Primitive","useComposerInputPluginRegistryOptional","TriggerPopoverResource","TriggerPopoverResourceOutput","TriggerBehavior","useTriggerPopoverAriaPublish","useTriggerPopoverRootContext","TriggerPopoverScopeContext","useTriggerPopoverScopeContext","ctx","Error","useTriggerPopoverScopeContextOptional","TriggerBehaviorRegistration","register","behavior","TriggerBehaviorRegistrationContext","useTriggerBehaviorRegistration","ComposerPrimitiveTriggerPopover","Element","div","Props","Omit","char","adapter","isLoading","t0","forwardedRef","$","ariaLabel","children","props","t1","undefined","aui","text","_temp","popoverId","behaviorRef","setBehavior","registrationCountRef","t2","next","current","process","env","NODE_ENV","console","warn","Math","max","t3","registration","t4","t5","triggerChar","resource","t6","getResource","root","t7","t8","pluginRegistry","t9","t10","open","aria","t11","t12","setActiveAria","t13","t14","highlightedItemId","t15","t16","t17","displayName","s","composer"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopover.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\nimport { useResource } from \"@assistant-ui/tap\";\nimport type { Unstable_TriggerAdapter } from \"@assistant-ui/core\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useEffectEvent,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n} from \"react\";\nimport { Primitive } from \"../../../utils/Primitive\";\nimport { useComposerInputPluginRegistryOptional } from \"../ComposerInputPluginContext\";\nimport {\n TriggerPopoverResource,\n type TriggerPopoverResourceOutput,\n} from \"./TriggerPopoverResource\";\nimport type { TriggerBehavior } from \"./triggerSelectionResource\";\nimport {\n useTriggerPopoverAriaPublish,\n useTriggerPopoverRootContext,\n} from \"./TriggerPopoverRootContext\";\n\nconst TriggerPopoverScopeContext =\n createContext<TriggerPopoverResourceOutput | null>(null);\n\nexport const useTriggerPopoverScopeContext = () => {\n const ctx = useContext(TriggerPopoverScopeContext);\n if (!ctx)\n throw new Error(\n \"useTriggerPopoverScopeContext must be used within ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport const useTriggerPopoverScopeContextOptional = () =>\n useContext(TriggerPopoverScopeContext);\n\n/** Registration API exposed to behavior sub-primitives. */\nexport type TriggerBehaviorRegistration = {\n register(behavior: TriggerBehavior): () => void;\n};\n\nconst TriggerBehaviorRegistrationContext =\n createContext<TriggerBehaviorRegistration | null>(null);\n\n/** Obtain the registration handle from the parent `<TriggerPopover>`. */\nexport const useTriggerBehaviorRegistration = () => {\n const ctx = useContext(TriggerBehaviorRegistrationContext);\n if (!ctx)\n throw new Error(\n \"TriggerPopover.Directive / TriggerPopover.Action must be rendered inside ComposerPrimitive.TriggerPopover\",\n );\n return ctx;\n};\n\nexport namespace ComposerPrimitiveTriggerPopover {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"onSelect\"\n > & {\n /** The character(s) that activate this trigger (e.g. `\"@\"`, `\"/\"`). Also serves as the trigger identity within the root. */\n readonly char: string;\n /** Adapter providing categories and items. */\n readonly adapter?: Unstable_TriggerAdapter | undefined;\n /** Whether the adapter is resolving items, surfaced to the popover scope for async sources. @default false */\n readonly isLoading?: boolean | undefined;\n };\n}\n\n/**\n * Declares a trigger and renders its popover container. The popover only\n * renders its DOM (and children) when the trigger character is active in the\n * composer input and a behavior sub-primitive has been registered.\n *\n * A behavior is contributed by rendering exactly one of\n * `<TriggerPopover.Directive>` or `<TriggerPopover.Action>` as a child. Without\n * a behavior the trigger stays closed.\n *\n * Must be placed inside `ComposerPrimitive.Unstable_TriggerPopoverRoot`.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Unstable_TriggerPopover\n * char=\"@\"\n * adapter={mentionAdapter}\n * >\n * <ComposerPrimitive.Unstable_TriggerPopover.Directive formatter={formatter} />\n * <ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * {(cats) => cats.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverCategories>\n * <ComposerPrimitive.Unstable_TriggerPopoverItems>\n * {(items) => items.map(...)}\n * </ComposerPrimitive.Unstable_TriggerPopoverItems>\n * </ComposerPrimitive.Unstable_TriggerPopover>\n * ```\n */\nexport const ComposerPrimitiveTriggerPopover = forwardRef<\n ComposerPrimitiveTriggerPopover.Element,\n ComposerPrimitiveTriggerPopover.Props\n>(\n (\n {\n char,\n adapter,\n isLoading = false,\n \"aria-label\": ariaLabel,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const text = useAuiState((s) => s.composer.text);\n const popoverId = useId();\n\n // Track in state (for resource reactivity) + ref (dev warning on duplicate registrations).\n const behaviorRef = useRef<TriggerBehavior | null>(null);\n const [behavior, setBehavior] = useState<TriggerBehavior | null>(null);\n const registrationCountRef = useRef(0);\n\n const register = useCallback<TriggerBehaviorRegistration[\"register\"]>(\n (next) => {\n registrationCountRef.current += 1;\n if (\n process.env.NODE_ENV !== \"production\" &&\n registrationCountRef.current > 1\n ) {\n console.warn(\n `[assistant-ui] TriggerPopover \"${char}\" received more than one behavior child. Exactly one <TriggerPopover.Directive> or <TriggerPopover.Action> is allowed per TriggerPopover; the last registration wins.`,\n );\n }\n behaviorRef.current = next;\n setBehavior(next);\n return () => {\n registrationCountRef.current = Math.max(\n 0,\n registrationCountRef.current - 1,\n );\n if (behaviorRef.current === next) {\n behaviorRef.current = null;\n setBehavior(null);\n }\n };\n },\n [char],\n );\n\n const registration = useMemo<TriggerBehaviorRegistration>(\n () => ({ register }),\n [register],\n );\n\n const resource = useResource(\n TriggerPopoverResource({\n adapter,\n text,\n triggerChar: char,\n behavior: behavior ?? undefined,\n aui,\n popoverId,\n isLoading,\n }),\n );\n\n const getResource = useEffectEvent(() => resource);\n\n const root = useTriggerPopoverRootContext();\n useEffect(() => {\n return root.register({\n char,\n ...(behavior ? { behavior } : {}),\n resource: getResource(),\n });\n }, [root, char, behavior]);\n\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n useEffect(() => {\n if (!pluginRegistry) return undefined;\n return pluginRegistry.register(getResource());\n }, [pluginRegistry]);\n\n const open = behavior !== null && resource.open;\n\n const aria = useTriggerPopoverAriaPublish();\n\n useEffect(() => {\n if (!open) return undefined;\n return () => {\n aria.setActiveAria(char, null);\n };\n }, [aria, char, open]);\n\n useEffect(() => {\n if (!open) return;\n aria.setActiveAria(char, {\n popoverId,\n highlightedItemId: resource.highlightedItemId,\n });\n }, [aria, char, popoverId, open, resource.highlightedItemId]);\n\n return (\n <TriggerBehaviorRegistrationContext.Provider value={registration}>\n <TriggerPopoverScopeContext.Provider value={resource}>\n {open ? (\n <Primitive.div\n role=\"listbox\"\n id={popoverId}\n aria-label={ariaLabel ?? \"Suggestions\"}\n aria-activedescendant={resource.highlightedItemId}\n data-state=\"open\"\n {...props}\n ref={forwardedRef}\n >\n {children}\n </Primitive.div>\n ) : (\n children\n )}\n </TriggerPopoverScopeContext.Provider>\n </TriggerBehaviorRegistrationContext.Provider>\n );\n },\n);\n\nComposerPrimitiveTriggerPopover.displayName =\n \"ComposerPrimitive.TriggerPopover\";\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverBack.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"mappings":";;;kBAWiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;;;;;cAOnD,qDAAmC,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA"}
|
|
1
|
+
{"version":3,"file":"TriggerPopoverBack.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"mappings":";;;kBAWiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;;;;;cAOnD,qDAAmC,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA;;;;oBAiB9C,cAAA,6CAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverCategories.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"mappings":";;;;kBAciB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;IAG1C,WAAW,qBAAqB,+BAA+B;;;;;;;cAQtD,2DAAyC,0BAAA,KAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;;
|
|
1
|
+
{"version":3,"file":"TriggerPopoverCategories.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"mappings":";;;;kBAciB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;IAG1C,WAAW,qBAAqB,+BAA+B;;;;;;;cAQtD,2DAAyC,0BAAA,KAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;;EARxC,WAAC,qBAAqB,+BAA+B;oBA2BjE,cAAA;kBAKe;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;IAC5D;;;;;;;cAQS,6DAA2C,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA;;;;;EARxC;oBA+Cd,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverCategories.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerCategory","ComposerPrimitiveTriggerPopoverCategories","Element","div","Props","Omit","children","categories","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverCategoryItem","button","categoryId","onClick","onMouseMove","selectCategory","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","categoryIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerCategory } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategories {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;\n };\n}\n\n/**\n * Renders the top-level category list via a render function.\n * Only renders when no category is active and search mode is off.\n */\nexport const ComposerPrimitiveTriggerPopoverCategories = forwardRef<\n ComposerPrimitiveTriggerPopoverCategories.Element,\n ComposerPrimitiveTriggerPopoverCategories.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { categories, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Categories\"}\n {...props}\n ref={forwardedRef}\n >\n {children(categories)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverCategories.displayName =\n \"ComposerPrimitive.TriggerPopoverCategories\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategoryItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n categoryId: string;\n };\n}\n\n/**\n * A button that selects a category and triggers drill-down navigation.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef<\n ComposerPrimitiveTriggerPopoverCategoryItem.Element,\n ComposerPrimitiveTriggerPopoverCategoryItem.Props\n>(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {\n const {\n selectCategory,\n highlightIndex,\n categories,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectCategory(categoryId);\n }, [selectCategory, categoryId]);\n\n const categoryIndex = categories.findIndex((c) => c.id === categoryId);\n const isHighlighted =\n !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(categoryIndex);\n }, [highlightIndex, categoryIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${categoryId}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverCategoryItem.displayName =\n \"ComposerPrimitive.TriggerPopoverCategoryItem\";\n"],"mappings":";;;;;;;;;;;;AA4BA,MAAaW,4CAA4CL,YAGvDY,IAAAC,iBAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAAA,IAAAoB;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAF,UAAA,cAAAK,cAAAC,SAAAJ;EAA+CE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;CAAA,OAAA;EAAAD,YAAAD,EAAA;EAAAJ,WAAAI,EAAA;EAAAE,QAAAF,EAAA;CAAA;CAChD,MAAA,EAAAH,YAAAM,kBAAAC,cAAAC,SACEhB,8BAA8B;CAEhC,IAAI,CAACgB,QAADF,oBAAAC,cAAyC,OAAS;CAKtC,MAAAE,KAAAL,aAAA;CAAyB,IAAAM;CAAA,IAAAP,EAAA,OAAAH,cAAAG,EAAA,OAAAJ,UAAA;EAIpCW,KAAAX,SAASC,UAAU;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAJ;EAAAI,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,SAAAF,EAAA,OAAAM,MAAAN,EAAA,QAAAO,IAAA;EANvBC,KAAA,oBAAA,UAAA,KAAA;GACO,MAAA;GACO,cAAAF;GAAyB,GACjCJ;GACCH,KAAAA;
|
|
1
|
+
{"version":3,"file":"TriggerPopoverCategories.js","names":["c","_c","Primitive","ComponentRef","ComponentPropsWithoutRef","ReactNode","forwardRef","useCallback","composeEventHandlers","useTriggerPopoverScopeContext","Unstable_TriggerCategory","ComposerPrimitiveTriggerPopoverCategories","Element","div","Props","Omit","children","categories","t0","forwardedRef","$","ariaLabel","props","activeCategoryId","isSearchMode","open","t1","t2","t3","displayName","ComposerPrimitiveTriggerPopoverCategoryItem","button","categoryId","onClick","onMouseMove","selectCategory","highlightIndex","highlightedIndex","popoverId","handleClick","id","findIndex","categoryIndex","isHighlighted","handleMouseMove","t4","t5","undefined","t6","t7","t8"],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../../utils/Primitive\";\nimport {\n type ComponentRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useTriggerPopoverScopeContext } from \"./TriggerPopover\";\nimport type { Unstable_TriggerCategory } from \"@assistant-ui/core\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategories {\n export type Element = ComponentRef<typeof Primitive.div>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.div>,\n \"children\"\n > & {\n children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;\n };\n}\n\n/**\n * Renders the top-level category list via a render function.\n * Only renders when no category is active and search mode is off.\n */\nexport const ComposerPrimitiveTriggerPopoverCategories = forwardRef<\n ComposerPrimitiveTriggerPopoverCategories.Element,\n ComposerPrimitiveTriggerPopoverCategories.Props\n>(({ children, \"aria-label\": ariaLabel, ...props }, forwardedRef) => {\n const { categories, activeCategoryId, isSearchMode, open } =\n useTriggerPopoverScopeContext();\n\n if (!open || activeCategoryId || isSearchMode) return null;\n\n return (\n <Primitive.div\n role=\"group\"\n aria-label={ariaLabel ?? \"Categories\"}\n {...props}\n ref={forwardedRef}\n >\n {children(categories)}\n </Primitive.div>\n );\n});\n\nComposerPrimitiveTriggerPopoverCategories.displayName =\n \"ComposerPrimitive.TriggerPopoverCategories\";\n\nexport namespace ComposerPrimitiveTriggerPopoverCategoryItem {\n export type Element = ComponentRef<typeof Primitive.button>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {\n categoryId: string;\n };\n}\n\n/**\n * A button that selects a category and triggers drill-down navigation.\n * Automatically receives `data-highlighted` when keyboard-navigated.\n */\nexport const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef<\n ComposerPrimitiveTriggerPopoverCategoryItem.Element,\n ComposerPrimitiveTriggerPopoverCategoryItem.Props\n>(({ categoryId, onClick, onMouseMove, ...props }, forwardedRef) => {\n const {\n selectCategory,\n highlightIndex,\n categories,\n highlightedIndex,\n activeCategoryId,\n isSearchMode,\n popoverId,\n } = useTriggerPopoverScopeContext();\n\n const handleClick = useCallback(() => {\n selectCategory(categoryId);\n }, [selectCategory, categoryId]);\n\n const categoryIndex = categories.findIndex((c) => c.id === categoryId);\n const isHighlighted =\n !activeCategoryId && !isSearchMode && categoryIndex === highlightedIndex;\n\n const handleMouseMove = useCallback(() => {\n highlightIndex(categoryIndex);\n }, [highlightIndex, categoryIndex]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"option\"\n id={`${popoverId}-option-${categoryId}`}\n aria-selected={isHighlighted}\n data-highlighted={isHighlighted ? \"\" : undefined}\n {...props}\n ref={forwardedRef}\n onClick={composeEventHandlers(onClick, handleClick)}\n onMouseMove={composeEventHandlers(onMouseMove, handleMouseMove)}\n />\n );\n});\n\nComposerPrimitiveTriggerPopoverCategoryItem.displayName =\n \"ComposerPrimitive.TriggerPopoverCategoryItem\";\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerPopoverItems.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"mappings":";;;;kBAciB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;IAG1C,WAAW,gBAAgB,2BAA2B;;;;;;;cAQ7C,sDAAoC,0BAAA,KAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;;
|
|
1
|
+
{"version":3,"file":"TriggerPopoverItems.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"mappings":";;;;kBAciB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;IAG1C,WAAW,gBAAgB,2BAA2B;;;;;;;cAQ7C,sDAAoC,0BAAA,KAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;;EARnC,WAAC,gBAAgB,2BAA2B;oBA2BxD,cAAA;kBAKe;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;IAC5D,MAAM;IACN;;;;;;;cAQS,qDAAmC,0BAAA,KAAA,qBAAA,gBAAA,qCAAA,qBAAA;;;;;EATtC,MAAA;EACE;oBAqDX,cAAA"}
|
|
@@ -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":";;;;;;;;;;;;AA4BA,MAAaW,uCAAuCL,YAGlDY,IAAAC,iBAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAAA,IAAAoB;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAF,UAAA,cAAAK,cAAAC,SAAAJ;EAA+CE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;CAAA,OAAA;EAAAD,YAAAD,EAAA;EAAAJ,WAAAI,EAAA;EAAAE,QAAAF,EAAA;CAAA;CAChD,MAAA,EAAAH,OAAAM,kBAAAC,cAAAC,SACEhB,8BAA8B;CAEhC,IAAI,CAACgB,QAAS,CAACF,oBAAD,CAAsBC,cAAa,OAAS;CAK1C,MAAAE,KAAAL,aAAA;CAAoB,IAAAM;CAAA,IAAAP,EAAA,OAAAJ,YAAAI,EAAA,OAAAH,OAAA;EAI/BU,KAAAX,SAASC,KAAK;EAACG,EAAA,KAAAJ;EAAAI,EAAA,KAAAH;EAAAG,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAD,gBAAAC,EAAA,OAAAE,SAAAF,EAAA,OAAAM,MAAAN,EAAA,QAAAO,IAAA;EANlBC,KAAA,oBAAA,UAAA,KAAA;GACO,MAAA;GACO,cAAAF;GAAoB,GAC5BJ;GACCH,KAAAA;
|
|
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 +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;
|
|
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 +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":"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"}
|
|
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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
|
@@ -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"}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerKeyboardResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"mappings":";;;KAeY;WACD;WACA;EACT;;KAGU;;WAED;;WAEA;;EAET,eAAe;;EAEf,cAAc,GAAG;;cAkHN,qDAAuB,SAAA;
|
|
1
|
+
{"version":3,"file":"triggerKeyboardResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerKeyboardResource.ts"],"mappings":";;;KAeY;WACD;WACA;EACT;;KAGU;;WAED;;WAEA;;EAET,eAAe;;EAEf,cAAc,GAAG;;cAkHN,qDAAuB,SAAA;EA/FnB,yBAAU,2BAA2B;EACtC;EACI;EACX;EACI;EACL;EACM,aAAC,MAAM;EACH,iBAAC;EACT;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerNavigationResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerNavigationResource.ts"],"mappings":";;KAgBY;;WAED,qBAAqB;;WAErB,gBAAgB;;WAEhB;;WAEA;;WAEA,yBACL,2BACA;;EAGJ,eAAe;;EAEf;;cAoGW,uDAAyB,SAAA;
|
|
1
|
+
{"version":3,"file":"triggerNavigationResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerNavigationResource.ts"],"mappings":";;KAgBY;;WAED,qBAAqB;;WAErB,gBAAgB;;WAEhB;;WAEA;;WAEA,yBACL,2BACA;;EAGJ,eAAe;;EAEf;;cAoGW,uDAAyB,SAAA;EAxF3B,SAAA;EACF;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerSelectionResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"mappings":";;;;;KAUY,sBAAsB,MAAM;KAE5B;WAEG;WACA,WAAW;WACX,cAAc,MAAM;;WAGpB;WACA,WAAW;WACX,YAAY,MAAM;WAClB;;KAGH;;EAEV,WAAW,MAAM;;EAEjB;;EAEA,2BAA2B,IAAI;;cA2FpB,sDAAwB,SAAA;
|
|
1
|
+
{"version":3,"file":"triggerSelectionResource.d.ts","names":[],"sources":["../../../../src/primitives/composer/trigger/triggerSelectionResource.ts"],"mappings":";;;;;KAUY,sBAAsB,MAAM;KAE5B;WAEG;WACA,WAAW;WACX,cAAc,MAAM;;WAGpB;WACA,WAAW;WACX,YAAY,MAAM;WAClB;;KAGH;;EAEV,WAAW,MAAM;;EAEjB;;EAEA,2BAA2B,IAAI;;cA2FpB,sDAAwB,SAAA;EA/EzB,UAAA;EACD,SAAA;EACJ,KAAA;EACQ;EACM,oBAAC;;EAER"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdownMenuRenderPrimitives.d.ts","names":[],"sources":["../../src/primitives/dropdownMenuRenderPrimitives.ts"],"mappings":";;cAGa,2CAAyB,0BAAA,KAAA,aAAA,2CAAA,cAAA
|
|
1
|
+
{"version":3,"file":"dropdownMenuRenderPrimitives.d.ts","names":[],"sources":["../../src/primitives/dropdownMenuRenderPrimitives.ts"],"mappings":";;cAGa,2CAAyB,0BAAA,KAAA,aAAA,2CAAA,cAAA;;oBAErC,cAAA;cACY,2CAAyB,0BAAA,KAAA,aAAA,2CAAA,cAAA;;oBAErC,cAAA;cACY,wCAAsB,0BAAA,KAAA,aAAA,wCAAA,cAAA;;oBAElC,cAAA;cACY,6CAA2B,0BAAA,KAAA,aAAA,6CAAA,cAAA;;oBAEvC,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorMessage.d.ts","names":[],"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"mappings":";;;kBAUiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;cAGnD,uCAAqB,0BAAA,KAAA,qBAAA,gBAAA,mCAAA,eAAA"}
|
|
1
|
+
{"version":3,"file":"ErrorMessage.d.ts","names":[],"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"mappings":";;;kBAUiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;cAGnD,uCAAqB,0BAAA,KAAA,qBAAA,gBAAA,mCAAA,eAAA;;;;oBAahC,cAAA,2CAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorMessage.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","useMessageError","ErrorPrimitiveMessage","Element","span","Props","t0","$","children","props","error","undefined","t1","String","t2","displayName"],"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { useMessageError } from \"@assistant-ui/core/react\";\n\nexport namespace ErrorPrimitiveMessage {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\nexport const ErrorPrimitiveMessage = forwardRef<\n ErrorPrimitiveMessage.Element,\n ErrorPrimitiveMessage.Props\n>(({ children, ...props }, forwardRef) => {\n const error = useMessageError();\n\n if (error === undefined) return null;\n\n return (\n <Primitive.span {...props} ref={forwardRef}>\n {children ?? String(error)}\n </Primitive.span>\n );\n});\n\nErrorPrimitiveMessage.displayName = \"ErrorPrimitive.Message\";\n"],"mappings":";;;;;;;AAeA,MAAaO,wBAAwBH,YAGnCO,IAAAP,eAAA;CAAA,MAAAQ,IAAAX,EAAA,CAAA;CAAA,IAAAY;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAE,aAAAC,SAAAH;EAAsBC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,WAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACvB,MAAAG,QAAcT,gBAAgB;CAE9B,IAAIS,UAAUC,KAAAA,GAAS,OAAS;CAI3B,MAAAC,KAAAJ,YAAYK,OAAOH,KAAK;CAAC,IAAAI;CAAA,IAAAP,EAAA,OAAAR,cAAAQ,EAAA,OAAAE,SAAAF,EAAA,OAAAK,IAAA;EAD5BE,KAAA,oBAAA,UAAA,MAAA;GAAA,GAAoBL;GAAYV,KAAAA;
|
|
1
|
+
{"version":3,"file":"ErrorMessage.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","useMessageError","ErrorPrimitiveMessage","Element","span","Props","t0","$","children","props","error","undefined","t1","String","t2","displayName"],"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { useMessageError } from \"@assistant-ui/core/react\";\n\nexport namespace ErrorPrimitiveMessage {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\nexport const ErrorPrimitiveMessage = forwardRef<\n ErrorPrimitiveMessage.Element,\n ErrorPrimitiveMessage.Props\n>(({ children, ...props }, forwardRef) => {\n const error = useMessageError();\n\n if (error === undefined) return null;\n\n return (\n <Primitive.span {...props} ref={forwardRef}>\n {children ?? String(error)}\n </Primitive.span>\n );\n});\n\nErrorPrimitiveMessage.displayName = \"ErrorPrimitive.Message\";\n"],"mappings":";;;;;;;AAeA,MAAaO,wBAAwBH,YAGnCO,IAAAP,eAAA;CAAA,MAAAQ,IAAAX,EAAA,CAAA;CAAA,IAAAY;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAE,aAAAC,SAAAH;EAAsBC,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,WAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACvB,MAAAG,QAAcT,gBAAgB;CAE9B,IAAIS,UAAUC,KAAAA,GAAS,OAAS;CAI3B,MAAAC,KAAAJ,YAAYK,OAAOH,KAAK;CAAC,IAAAI;CAAA,IAAAP,EAAA,OAAAR,cAAAQ,EAAA,OAAAE,SAAAF,EAAA,OAAAK,IAAA;EAD5BE,KAAA,oBAAA,UAAA,MAAA;GAAA,GAAoBL;GAAYV,KAAAA;GAC7Ba,UAAAA;EACH,CAAA;EAAiBL,EAAA,KAAAR;EAAAQ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAFjBO;AAEiB,CAEpB;AAEDZ,sBAAsBa,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorRoot.d.ts","names":[],"sources":["../../../src/primitives/error/ErrorRoot.tsx"],"mappings":";;;kBASiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;cAGnD,oCAAkB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
|
|
1
|
+
{"version":3,"file":"ErrorRoot.d.ts","names":[],"sources":["../../../src/primitives/error/ErrorRoot.tsx"],"mappings":";;;kBASiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;cAGnD,oCAAkB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;oBAK7B,cAAA,0CAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageParts.js","names":["c","_c","FC","MessagePrimitiveParts","MessagePrimitivePartsBase","MessagePartComponent","MessagePartComponentBase","MessagePrimitivePartByIndex","MessagePrimitivePartByIndexBase","messagePartsDefaultComponents","MessagePartPrimitiveText","MessagePartPrimitiveImage","MessagePartPrimitiveInProgress","webDefaultComponents","Text","whiteSpace","fontFamily","Image","Props","props","$","t0","children","components","rest","Reasoning","Source","File","Unstable_Audio","ChainOfThought","tools","data","ToolGroup","ReasoningGroup","Empty","Quote","generativeUI","merged","t1","t2","displayName"],"sources":["../../../src/primitives/message/MessageParts.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC } from \"react\";\nimport {\n MessagePrimitiveParts as MessagePrimitivePartsBase,\n MessagePartComponent as MessagePartComponentBase,\n MessagePrimitivePartByIndex as MessagePrimitivePartByIndexBase,\n messagePartsDefaultComponents,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\n\nconst webDefaultComponents = {\n ...messagePartsDefaultComponents,\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Image: () => <MessagePartPrimitiveImage />,\n} satisfies MessagePrimitiveParts.Props[\"components\"];\n\nexport namespace MessagePrimitiveParts {\n export type Props = MessagePrimitivePartsBase.Props;\n}\n\n/**\n * Renders the parts of a message with web-specific default components.\n */\nexport const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = (\n props,\n) => {\n if (\"children\" in props) {\n return (\n <MessagePrimitivePartsBase>{props.children}</MessagePrimitivePartsBase>\n );\n }\n\n const { components, ...rest } = props;\n const merged = components\n ? {\n Text: components.Text ?? webDefaultComponents.Text,\n Image: components.Image ?? webDefaultComponents.Image,\n Reasoning:\n components.Reasoning ?? messagePartsDefaultComponents.Reasoning,\n Source: components.Source ?? messagePartsDefaultComponents.Source,\n File: components.File ?? messagePartsDefaultComponents.File,\n Unstable_Audio:\n components.Unstable_Audio ??\n messagePartsDefaultComponents.Unstable_Audio,\n ...(\"ChainOfThought\" in components\n ? { ChainOfThought: components.ChainOfThought }\n : {\n tools: components.tools,\n data: components.data,\n ToolGroup:\n components.ToolGroup ?? messagePartsDefaultComponents.ToolGroup,\n ReasoningGroup:\n components.ReasoningGroup ??\n messagePartsDefaultComponents.ReasoningGroup,\n }),\n Empty: components.Empty,\n Quote: components.Quote,\n generativeUI: components.generativeUI,\n }\n : webDefaultComponents;\n\n return <MessagePrimitivePartsBase components={merged as any} {...rest} />;\n};\n\nMessagePrimitiveParts.displayName = \"MessagePrimitive.Parts\";\n\n// Re-export everything else unchanged\nexport {\n MessagePartComponentBase as MessagePartComponent,\n MessagePrimitivePartByIndexBase as MessagePrimitivePartByIndex,\n};\n"],"mappings":";;;;;;;;AAaA,MAAMa,uBAAuB;CAC3B,GAAGJ;CACHK,YACE,qBAAC,KAAD;EAAG,OAAO,EAAEC,YAAY,WAAW;
|
|
1
|
+
{"version":3,"file":"MessageParts.js","names":["c","_c","FC","MessagePrimitiveParts","MessagePrimitivePartsBase","MessagePartComponent","MessagePartComponentBase","MessagePrimitivePartByIndex","MessagePrimitivePartByIndexBase","messagePartsDefaultComponents","MessagePartPrimitiveText","MessagePartPrimitiveImage","MessagePartPrimitiveInProgress","webDefaultComponents","Text","whiteSpace","fontFamily","Image","Props","props","$","t0","children","components","rest","Reasoning","Source","File","Unstable_Audio","ChainOfThought","tools","data","ToolGroup","ReasoningGroup","Empty","Quote","generativeUI","merged","t1","t2","displayName"],"sources":["../../../src/primitives/message/MessageParts.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC } from \"react\";\nimport {\n MessagePrimitiveParts as MessagePrimitivePartsBase,\n MessagePartComponent as MessagePartComponentBase,\n MessagePrimitivePartByIndex as MessagePrimitivePartByIndexBase,\n messagePartsDefaultComponents,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\n\nconst webDefaultComponents = {\n ...messagePartsDefaultComponents,\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Image: () => <MessagePartPrimitiveImage />,\n} satisfies MessagePrimitiveParts.Props[\"components\"];\n\nexport namespace MessagePrimitiveParts {\n export type Props = MessagePrimitivePartsBase.Props;\n}\n\n/**\n * Renders the parts of a message with web-specific default components.\n */\nexport const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = (\n props,\n) => {\n if (\"children\" in props) {\n return (\n <MessagePrimitivePartsBase>{props.children}</MessagePrimitivePartsBase>\n );\n }\n\n const { components, ...rest } = props;\n const merged = components\n ? {\n Text: components.Text ?? webDefaultComponents.Text,\n Image: components.Image ?? webDefaultComponents.Image,\n Reasoning:\n components.Reasoning ?? messagePartsDefaultComponents.Reasoning,\n Source: components.Source ?? messagePartsDefaultComponents.Source,\n File: components.File ?? messagePartsDefaultComponents.File,\n Unstable_Audio:\n components.Unstable_Audio ??\n messagePartsDefaultComponents.Unstable_Audio,\n ...(\"ChainOfThought\" in components\n ? { ChainOfThought: components.ChainOfThought }\n : {\n tools: components.tools,\n data: components.data,\n ToolGroup:\n components.ToolGroup ?? messagePartsDefaultComponents.ToolGroup,\n ReasoningGroup:\n components.ReasoningGroup ??\n messagePartsDefaultComponents.ReasoningGroup,\n }),\n Empty: components.Empty,\n Quote: components.Quote,\n generativeUI: components.generativeUI,\n }\n : webDefaultComponents;\n\n return <MessagePrimitivePartsBase components={merged as any} {...rest} />;\n};\n\nMessagePrimitiveParts.displayName = \"MessagePrimitive.Parts\";\n\n// Re-export everything else unchanged\nexport {\n MessagePartComponentBase as MessagePartComponent,\n MessagePrimitivePartByIndexBase as MessagePrimitivePartByIndex,\n};\n"],"mappings":";;;;;;;;AAaA,MAAMa,uBAAuB;CAC3B,GAAGJ;CACHK,YACE,qBAAC,KAAD;EAAG,OAAO,EAAEC,YAAY,WAAW;EAAnC,UAAA,CACE,oBAAC,0BAAD,CAAyB,CAAA,GACzB,oBAAC,gCAAD,EAAA,UACE,oBAAC,QAAD;GAAM,OAAO,EAAEC,YAAY,SAAS;GAAI,UAAA;EAAgB,CAAA,EAC1B,CAAA,CAC/B;;CAELC,aAAa,oBAAC,2BAAD,CAA0B,CAAA;AACzC;;;;AASA,MAAad,yBAAyDgB,UAAA;CAAA,MAAAC,IAAAnB,EAAA,EAAA;CAGpE,IAAI,cAAckB,OAAK;EAAA,IAAAE;EAAA,IAAAD,EAAA,OAAAD,MAAAG,UAAA;GAEnBD,KAAA,oBAAC,yBAAD,EAAA,UAA4BF,MAAKG,SAAP,CAAA;GAA6CF,EAAA,KAAAD,MAAAG;GAAAF,EAAA,KAAAC;EAAA,OAAAA,KAAAD,EAAA;EAAA,OAAvEC;CAAuE;CAE1E,IAAAE;CAAA,IAAAC;CAAA,IAAAJ,EAAA,OAAAD,OAAA;EAED,CAAA,CAAAI,eAAAC,QAAgCL;EAAMC,EAAA,KAAAD;EAAAC,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAA;EAAAD,aAAAH,EAAA;EAAAI,OAAAJ,EAAA;CAAA;CAAA,IAAAC;CAAA,IAAAD,EAAA,OAAAG,YAAA;EACvBF,KAAAE,aAAA;GAAAT,MAEHS,WAAUT,QAASD,qBAAoBC;GAAKG,OAC3CM,WAAUN,SAAUJ,qBAAoBI;GAAMQ,WAEnDF,WAAUE,aAAchB,8BAA6BgB;GAAUC,QACzDH,WAAUG,UAAWjB,8BAA6BiB;GAAOC,MAC3DJ,WAAUI,QAASlB,8BAA6BkB;GAAKC,gBAEzDL,WAAUK,kBACVnB,8BAA6BmB;GAAe,GAC1C,oBAAoBL,aAApB,EAAAM,gBACkBN,WAAUM,eAS5B,IAVA;IAAAC,OAGSP,WAAUO;IAAMC,MACjBR,WAAUQ;IAAKC,WAEnBT,WAAUS,aAAcvB,8BAA6BuB;IAAUC,gBAE/DV,WAAUU,kBACVxB,8BAA6BwB;GACjC;GAACC,OACEX,WAAUW;GAAMC,OAChBZ,WAAUY;GAAMC,cACTb,WAAUa;EAEP,IA1BRvB;EA0BSO,EAAA,KAAAG;EAAAH,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAEsB,MAAAkB,KAAAD;CAAa,IAAAE;CAAA,IAAAnB,EAAA,OAAAI,QAAAJ,EAAA,OAAAkB,IAAA;EAApDC,KAAA,oBAAC,yBAAD;GAAuC,YAAAD;GAAa,GAAMd;EAAI,CAAA;EAAIJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAkB;EAAAlB,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,OAAlEmB;AAAkE;AAG3EpC,sBAAsBqC,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartsGrouped.js","names":["c","_c","ComponentType","FC","memo","PropsWithChildren","useMemo","useAuiState","useAui","PartByIndexProvider","TextMessagePartProvider","MessagePartPrimitiveText","MessagePartPrimitiveImage","Unstable_AudioMessagePartComponent","DataMessagePartComponent","DataMessagePartProps","EmptyMessagePartComponent","TextMessagePartComponent","ImageMessagePartComponent","SourceMessagePartComponent","ToolCallMessagePartComponent","ToolCallMessagePartProps","FileMessagePartComponent","ReasoningMessagePartComponent","MessagePartPrimitiveInProgress","MessagePartStatus","MessagePartGroup","groupKey","indices","GroupingFunction","parts","groupMessagePartsByParentId","groupMap","Map","i","length","part","parentId","groupId","get","push","set","groups","startsWith","undefined","useMessagePartsGrouped","groupingFunction","$","_temp","t0","bb0","t1","Symbol","for","MessagePrimitiveUnstable_PartsGrouped","Props","components","Empty","Text","Reasoning","Source","Image","File","Unstable_Audio","data","by_name","Record","Fallback","tools","Override","Group","ToolUIDisplay","props","toolName","s","Render","Array","isArray","Render_0","t2","DataUIDisplay","name","dataRenderers","renderers","defaultComponents","whiteSpace","fontFamily","children","MessagePartComponentProps","MessagePartComponent","t3","t4","t5","t6","t7","t8","t9","Audio","t10","aui","_temp2","type","t11","addResult","addToolResult","t12","resume","resumeToolCall","t13","respondToApproval","respondToToolApproval","t14","Tool","status","Error","Data","console","warn","MessagePartProps","partIndex","MessagePartImpl","MessagePart","prev","next","EmptyPartFallback","component","Component","COMPLETE_STATUS","Object","freeze","EmptyPartsImpl","_temp3","EmptyParts","contentLength","_temp4","messageGroups","group","groupIndex","GroupComponent","map","partsElements","displayName","MessagePrimitiveUnstable_PartsGroupedByParentId","Omit","message"],"sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentType,\n type FC,\n memo,\n type PropsWithChildren,\n useMemo,\n} from \"react\";\nimport { useAuiState, useAui } from \"@assistant-ui/store\";\nimport { PartByIndexProvider } from \"../../context/providers/PartByIndexProvider\";\nimport { TextMessagePartProvider } from \"../../context/providers/TextMessagePartProvider\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport type {\n Unstable_AudioMessagePartComponent,\n DataMessagePartComponent,\n DataMessagePartProps,\n EmptyMessagePartComponent,\n TextMessagePartComponent,\n ImageMessagePartComponent,\n SourceMessagePartComponent,\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n FileMessagePartComponent,\n ReasoningMessagePartComponent,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\nimport type { MessagePartStatus } from \"@assistant-ui/core\";\n\ntype MessagePartGroup = {\n groupKey: string | undefined;\n indices: number[];\n};\n\nexport type GroupingFunction = (parts: readonly any[]) => MessagePartGroup[];\n\n/**\n * Groups message parts by their parent ID.\n * Parts without a parent ID appear in their chronological position as individual groups.\n * Parts with the same parent ID are grouped together at the position of their first occurrence.\n */\nconst groupMessagePartsByParentId: GroupingFunction = (\n parts: readonly any[],\n): MessagePartGroup[] => {\n // Map maintains insertion order, so groups appear in order of first occurrence\n const groupMap = new Map<string, number[]>();\n\n // Process each part in order\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const parentId = part?.parentId as string | undefined;\n\n // For parts without parentId, assign a unique group ID to maintain their position\n const groupId = parentId ?? `__ungrouped_${i}`;\n\n // Get or create the indices array for this group\n const indices = groupMap.get(groupId) ?? [];\n indices.push(i);\n groupMap.set(groupId, indices);\n }\n\n // Convert map to array of groups\n const groups: MessagePartGroup[] = [];\n for (const [groupId, indices] of groupMap) {\n // Extract parentId (undefined for ungrouped parts)\n const groupKey = groupId.startsWith(\"__ungrouped_\") ? undefined : groupId;\n groups.push({ groupKey, indices });\n }\n\n return groups;\n};\n\nconst useMessagePartsGrouped = (\n groupingFunction: GroupingFunction,\n): MessagePartGroup[] => {\n const parts = useAuiState((s) => s.message.parts);\n\n return useMemo(() => {\n if (parts.length === 0) {\n return [];\n }\n return groupingFunction(parts);\n }, [parts, groupingFunction]);\n};\n\nexport namespace MessagePrimitiveUnstable_PartsGrouped {\n export type Props = {\n /**\n * Function that takes an array of message parts and returns an array of groups.\n * Each group contains a key (for identification) and an array of indices.\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * groupingFunction={(parts) => {\n * const groups = new Map<string, number[]>();\n * parts.forEach((part, i) => {\n * const key = part.parentId ?? `__ungrouped_${i}`;\n * const indices = groups.get(key) ?? [];\n * indices.push(i);\n * groups.set(key, indices);\n * });\n * return Array.from(groups.entries()).map(([key, indices]) => ({\n * key: key.startsWith(\"__ungrouped_\") ? undefined : key,\n * indices\n * }));\n * }}\n * ```\n *\n * @example\n * ```tsx\n * // Group by tool name\n * import { groupMessagePartsByToolName } from \"@assistant-ui/react\";\n *\n * <MessagePrimitive.Unstable_PartsGrouped\n * groupingFunction={groupMessagePartsByToolName}\n * components={{\n * Group: ({ key, indices, children }) => {\n * if (!key) return <>{children}</>;\n * return (\n * <div className=\"tool-group\">\n * <h4>Tool: {key}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\n groupingFunction: GroupingFunction;\n\n /**\n * Component configuration for rendering different types of message content.\n *\n * You can provide custom components for each content type (text, image, file, etc.)\n * and configure tool rendering behavior. If not provided, default components will be used.\n */\n components:\n | {\n /** Component for rendering empty messages */\n Empty?: EmptyMessagePartComponent | undefined;\n /** Component for rendering text content */\n Text?: TextMessagePartComponent | undefined;\n /** Component for rendering reasoning content (typically hidden) */\n Reasoning?: ReasoningMessagePartComponent | undefined;\n /** Component for rendering source content */\n Source?: SourceMessagePartComponent | undefined;\n /** Component for rendering image content */\n Image?: ImageMessagePartComponent | undefined;\n /** Component for rendering file content */\n File?: FileMessagePartComponent | undefined;\n /** Component for rendering audio content (experimental) */\n Unstable_Audio?: Unstable_AudioMessagePartComponent | undefined;\n /** Configuration for data part rendering */\n data?:\n | {\n /** Map data event names to specific components */\n by_name?:\n | Record<string, DataMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unmatched data events */\n Fallback?: DataMessagePartComponent | undefined;\n }\n | undefined;\n /** Configuration for tool call rendering */\n tools?:\n | {\n /** Map of tool names to their specific components */\n by_name?:\n | Record<string, ToolCallMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unregistered tools */\n Fallback?: ComponentType<ToolCallMessagePartProps> | undefined;\n }\n | {\n /** Override component that handles all tool calls */\n Override: ComponentType<ToolCallMessagePartProps>;\n }\n | undefined;\n\n /**\n * Component for rendering grouped message parts.\n *\n * When provided, this component will automatically wrap message parts that share\n * the same group key as determined by the groupingFunction.\n *\n * The component receives:\n * - `groupKey`: The group key (or undefined for ungrouped parts)\n * - `indices`: Array of indices for the parts in this group\n * - `children`: The rendered message part components\n *\n * @example\n * ```tsx\n * // Collapsible group\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <details className=\"message-group\">\n * <summary>\n * Group {groupKey} ({indices.length} parts)\n * </summary>\n * <div className=\"group-content\">\n * {children}\n * </div>\n * </details>\n * );\n * }\n * ```\n *\n * @param groupKey - The group key (undefined for ungrouped parts)\n * @param indices - Array of indices for the parts in this group\n * @param children - Rendered message part components to display within the group\n */\n Group?: ComponentType<\n PropsWithChildren<{\n groupKey: string | undefined;\n indices: number[];\n }>\n >;\n }\n | undefined;\n };\n}\n\nconst ToolUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: ToolCallMessagePartComponent | undefined;\n} & ToolCallMessagePartProps) => {\n const Render = useAuiState((s) => {\n const Render = s.tools.tools[props.toolName] ?? Fallback;\n if (Array.isArray(Render)) return Render[0] ?? Fallback;\n return Render;\n });\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst DataUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: DataMessagePartComponent | undefined;\n} & DataMessagePartProps) => {\n const Render = useAuiState((s) => {\n const Render = s.dataRenderers.renderers[props.name] ?? Fallback;\n if (Array.isArray(Render)) return Render[0] ?? Fallback;\n return Render;\n });\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst defaultComponents = {\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Reasoning: () => null,\n Source: () => null,\n Image: () => <MessagePartPrimitiveImage />,\n File: () => null,\n Unstable_Audio: () => null,\n Group: ({ children }) => children,\n} satisfies MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n\ntype MessagePartComponentProps = {\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartComponent: FC<MessagePartComponentProps> = ({\n components: {\n Text = defaultComponents.Text,\n Reasoning = defaultComponents.Reasoning,\n Image = defaultComponents.Image,\n Source = defaultComponents.Source,\n File = defaultComponents.File,\n Unstable_Audio: Audio = defaultComponents.Unstable_Audio,\n tools = {},\n data,\n } = {},\n}) => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n\n const type = part.type;\n if (type === \"tool-call\") {\n const addResult = aui.part().addToolResult;\n const resume = aui.part().resumeToolCall;\n const respondToApproval = aui.part().respondToToolApproval;\n if (\"Override\" in tools)\n return (\n <tools.Override\n {...part}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;\n return (\n <ToolUIDisplay\n {...part}\n Fallback={Tool}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n }\n\n if (part.status?.type === \"requires-action\")\n throw new Error(\"Encountered unexpected requires-action status\");\n\n switch (type) {\n case \"text\":\n return <Text {...part} />;\n\n case \"reasoning\":\n return <Reasoning {...part} />;\n\n case \"source\":\n return <Source {...part} />;\n\n case \"image\":\n return <Image {...part} />;\n\n case \"file\":\n return <File {...part} />;\n\n case \"audio\":\n return <Audio {...part} />;\n\n case \"data\": {\n const Data = data?.by_name?.[part.name] ?? data?.Fallback;\n return <DataUIDisplay {...part} Fallback={Data} />;\n }\n\n default:\n console.warn(`Unknown message part type: ${type}`);\n return null;\n }\n};\n\ntype MessagePartProps = {\n partIndex: number;\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartImpl: FC<MessagePartProps> = ({ partIndex, components }) => {\n return (\n <PartByIndexProvider index={partIndex}>\n <MessagePartComponent components={components} />\n </PartByIndexProvider>\n );\n};\n\nconst MessagePart = memo(\n MessagePartImpl,\n (prev, next) =>\n prev.partIndex === next.partIndex &&\n prev.components?.Text === next.components?.Text &&\n prev.components?.Reasoning === next.components?.Reasoning &&\n prev.components?.Source === next.components?.Source &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.File === next.components?.File &&\n prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&\n prev.components?.tools === next.components?.tools &&\n prev.components?.data === next.components?.data &&\n prev.components?.Group === next.components?.Group,\n);\n\nconst EmptyPartFallback: FC<{\n status: MessagePartStatus;\n component: TextMessagePartComponent;\n}> = ({ status, component: Component }) => {\n return (\n <TextMessagePartProvider text=\"\" isRunning={status.type === \"running\"}>\n <Component type=\"text\" text=\"\" status={status} />\n </TextMessagePartProvider>\n );\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {\n const status = useAuiState(\n (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,\n );\n\n if (components?.Empty) return <components.Empty status={status} />;\n\n return (\n <EmptyPartFallback\n status={status}\n component={components?.Text ?? defaultComponents.Text}\n />\n );\n};\n\nconst EmptyParts = memo(\n EmptyPartsImpl,\n (prev, next) =>\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\n/**\n * Renders the parts of a message grouped by a custom grouping function.\n *\n * This component allows you to group message parts based on any criteria you define.\n * The grouping function receives all message parts and returns an array of groups,\n * where each group has a key and an array of part indices.\n *\n * @deprecated Prefer `<MessagePrimitive.GroupedParts>` for adjacent\n * grouping — it dispatches all rendering through one `switch (part.type)`\n * and supports nested group paths. Keep this primitive only for\n * non-adjacent clustering (e.g., gathering parts with the same parent-id\n * across the message).\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * <MessagePrimitive.Unstable_PartsGrouped\n * components={{\n * Text: ({ text }) => <p className=\"message-text\">{text}</p>,\n * Image: ({ image }) => <img src={image} alt=\"Message image\" />,\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <div className=\"parent-group border rounded p-4\">\n * <h4>Parent ID: {groupKey}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\nexport const MessagePrimitiveUnstable_PartsGrouped: FC<\n MessagePrimitiveUnstable_PartsGrouped.Props\n> = ({ groupingFunction, components }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const messageGroups = useMessagePartsGrouped(groupingFunction);\n\n const partsElements = useMemo(() => {\n if (contentLength === 0) {\n return <EmptyParts components={components} />;\n }\n\n return messageGroups.map((group, groupIndex) => {\n const GroupComponent = components?.Group ?? defaultComponents.Group;\n\n return (\n <GroupComponent\n key={`group-${groupIndex}-${group.groupKey ?? \"ungrouped\"}`}\n groupKey={group.groupKey}\n indices={group.indices}\n >\n {group.indices.map((partIndex) => (\n <MessagePart\n key={partIndex}\n partIndex={partIndex}\n components={components}\n />\n ))}\n </GroupComponent>\n );\n });\n }, [messageGroups, components, contentLength]);\n\n return <>{partsElements}</>;\n};\n\nMessagePrimitiveUnstable_PartsGrouped.displayName =\n \"MessagePrimitive.Unstable_PartsGrouped\";\n\n/**\n * Renders the parts of a message grouped by their parent ID.\n * This is a convenience wrapper around Unstable_PartsGrouped with parent ID grouping.\n *\n * @deprecated Use MessagePrimitive.Unstable_PartsGrouped instead for more flexibility\n */\nexport const MessagePrimitiveUnstable_PartsGroupedByParentId: FC<\n Omit<MessagePrimitiveUnstable_PartsGrouped.Props, \"groupingFunction\">\n> = ({ components, ...props }) => {\n return (\n <MessagePrimitiveUnstable_PartsGrouped\n {...props}\n components={components}\n groupingFunction={groupMessagePartsByParentId}\n />\n );\n};\n\nMessagePrimitiveUnstable_PartsGroupedByParentId.displayName =\n \"MessagePrimitive.Unstable_PartsGroupedByParentId\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessagePartsGrouped.js","names":["c","_c","ComponentType","FC","memo","PropsWithChildren","useMemo","useAuiState","useAui","PartByIndexProvider","TextMessagePartProvider","MessagePartPrimitiveText","MessagePartPrimitiveImage","Unstable_AudioMessagePartComponent","DataMessagePartComponent","DataMessagePartProps","EmptyMessagePartComponent","TextMessagePartComponent","ImageMessagePartComponent","SourceMessagePartComponent","ToolCallMessagePartComponent","ToolCallMessagePartProps","FileMessagePartComponent","ReasoningMessagePartComponent","MessagePartPrimitiveInProgress","MessagePartStatus","MessagePartGroup","groupKey","indices","GroupingFunction","parts","groupMessagePartsByParentId","groupMap","Map","i","length","part","parentId","groupId","get","push","set","groups","startsWith","undefined","useMessagePartsGrouped","groupingFunction","$","_temp","t0","bb0","t1","Symbol","for","MessagePrimitiveUnstable_PartsGrouped","Props","components","Empty","Text","Reasoning","Source","Image","File","Unstable_Audio","data","by_name","Record","Fallback","tools","Override","Group","ToolUIDisplay","props","toolName","s","Render","Array","isArray","Render_0","t2","DataUIDisplay","name","dataRenderers","renderers","defaultComponents","whiteSpace","fontFamily","children","MessagePartComponentProps","MessagePartComponent","t3","t4","t5","t6","t7","t8","t9","Audio","t10","aui","_temp2","type","t11","addResult","addToolResult","t12","resume","resumeToolCall","t13","respondToApproval","respondToToolApproval","t14","Tool","status","Error","Data","console","warn","MessagePartProps","partIndex","MessagePartImpl","MessagePart","prev","next","EmptyPartFallback","component","Component","COMPLETE_STATUS","Object","freeze","EmptyPartsImpl","_temp3","EmptyParts","contentLength","_temp4","messageGroups","group","groupIndex","GroupComponent","map","partsElements","displayName","MessagePrimitiveUnstable_PartsGroupedByParentId","Omit","message"],"sources":["../../../src/primitives/message/MessagePartsGrouped.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentType,\n type FC,\n memo,\n type PropsWithChildren,\n useMemo,\n} from \"react\";\nimport { useAuiState, useAui } from \"@assistant-ui/store\";\nimport { PartByIndexProvider } from \"../../context/providers/PartByIndexProvider\";\nimport { TextMessagePartProvider } from \"../../context/providers/TextMessagePartProvider\";\nimport { MessagePartPrimitiveText } from \"../messagePart/MessagePartText\";\nimport { MessagePartPrimitiveImage } from \"../messagePart/MessagePartImage\";\nimport type {\n Unstable_AudioMessagePartComponent,\n DataMessagePartComponent,\n DataMessagePartProps,\n EmptyMessagePartComponent,\n TextMessagePartComponent,\n ImageMessagePartComponent,\n SourceMessagePartComponent,\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n FileMessagePartComponent,\n ReasoningMessagePartComponent,\n} from \"@assistant-ui/core/react\";\nimport { MessagePartPrimitiveInProgress } from \"../messagePart/MessagePartInProgress\";\nimport type { MessagePartStatus } from \"@assistant-ui/core\";\n\ntype MessagePartGroup = {\n groupKey: string | undefined;\n indices: number[];\n};\n\nexport type GroupingFunction = (parts: readonly any[]) => MessagePartGroup[];\n\n/**\n * Groups message parts by their parent ID.\n * Parts without a parent ID appear in their chronological position as individual groups.\n * Parts with the same parent ID are grouped together at the position of their first occurrence.\n */\nconst groupMessagePartsByParentId: GroupingFunction = (\n parts: readonly any[],\n): MessagePartGroup[] => {\n // Map maintains insertion order, so groups appear in order of first occurrence\n const groupMap = new Map<string, number[]>();\n\n // Process each part in order\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const parentId = part?.parentId as string | undefined;\n\n // For parts without parentId, assign a unique group ID to maintain their position\n const groupId = parentId ?? `__ungrouped_${i}`;\n\n // Get or create the indices array for this group\n const indices = groupMap.get(groupId) ?? [];\n indices.push(i);\n groupMap.set(groupId, indices);\n }\n\n // Convert map to array of groups\n const groups: MessagePartGroup[] = [];\n for (const [groupId, indices] of groupMap) {\n // Extract parentId (undefined for ungrouped parts)\n const groupKey = groupId.startsWith(\"__ungrouped_\") ? undefined : groupId;\n groups.push({ groupKey, indices });\n }\n\n return groups;\n};\n\nconst useMessagePartsGrouped = (\n groupingFunction: GroupingFunction,\n): MessagePartGroup[] => {\n const parts = useAuiState((s) => s.message.parts);\n\n return useMemo(() => {\n if (parts.length === 0) {\n return [];\n }\n return groupingFunction(parts);\n }, [parts, groupingFunction]);\n};\n\nexport namespace MessagePrimitiveUnstable_PartsGrouped {\n export type Props = {\n /**\n * Function that takes an array of message parts and returns an array of groups.\n * Each group contains a key (for identification) and an array of indices.\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * groupingFunction={(parts) => {\n * const groups = new Map<string, number[]>();\n * parts.forEach((part, i) => {\n * const key = part.parentId ?? `__ungrouped_${i}`;\n * const indices = groups.get(key) ?? [];\n * indices.push(i);\n * groups.set(key, indices);\n * });\n * return Array.from(groups.entries()).map(([key, indices]) => ({\n * key: key.startsWith(\"__ungrouped_\") ? undefined : key,\n * indices\n * }));\n * }}\n * ```\n *\n * @example\n * ```tsx\n * // Group by tool name\n * import { groupMessagePartsByToolName } from \"@assistant-ui/react\";\n *\n * <MessagePrimitive.Unstable_PartsGrouped\n * groupingFunction={groupMessagePartsByToolName}\n * components={{\n * Group: ({ key, indices, children }) => {\n * if (!key) return <>{children}</>;\n * return (\n * <div className=\"tool-group\">\n * <h4>Tool: {key}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\n groupingFunction: GroupingFunction;\n\n /**\n * Component configuration for rendering different types of message content.\n *\n * You can provide custom components for each content type (text, image, file, etc.)\n * and configure tool rendering behavior. If not provided, default components will be used.\n */\n components:\n | {\n /** Component for rendering empty messages */\n Empty?: EmptyMessagePartComponent | undefined;\n /** Component for rendering text content */\n Text?: TextMessagePartComponent | undefined;\n /** Component for rendering reasoning content (typically hidden) */\n Reasoning?: ReasoningMessagePartComponent | undefined;\n /** Component for rendering source content */\n Source?: SourceMessagePartComponent | undefined;\n /** Component for rendering image content */\n Image?: ImageMessagePartComponent | undefined;\n /** Component for rendering file content */\n File?: FileMessagePartComponent | undefined;\n /** Component for rendering audio content (experimental) */\n Unstable_Audio?: Unstable_AudioMessagePartComponent | undefined;\n /** Configuration for data part rendering */\n data?:\n | {\n /** Map data event names to specific components */\n by_name?:\n | Record<string, DataMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unmatched data events */\n Fallback?: DataMessagePartComponent | undefined;\n }\n | undefined;\n /** Configuration for tool call rendering */\n tools?:\n | {\n /** Map of tool names to their specific components */\n by_name?:\n | Record<string, ToolCallMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unregistered tools */\n Fallback?: ComponentType<ToolCallMessagePartProps> | undefined;\n }\n | {\n /** Override component that handles all tool calls */\n Override: ComponentType<ToolCallMessagePartProps>;\n }\n | undefined;\n\n /**\n * Component for rendering grouped message parts.\n *\n * When provided, this component will automatically wrap message parts that share\n * the same group key as determined by the groupingFunction.\n *\n * The component receives:\n * - `groupKey`: The group key (or undefined for ungrouped parts)\n * - `indices`: Array of indices for the parts in this group\n * - `children`: The rendered message part components\n *\n * @example\n * ```tsx\n * // Collapsible group\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <details className=\"message-group\">\n * <summary>\n * Group {groupKey} ({indices.length} parts)\n * </summary>\n * <div className=\"group-content\">\n * {children}\n * </div>\n * </details>\n * );\n * }\n * ```\n *\n * @param groupKey - The group key (undefined for ungrouped parts)\n * @param indices - Array of indices for the parts in this group\n * @param children - Rendered message part components to display within the group\n */\n Group?: ComponentType<\n PropsWithChildren<{\n groupKey: string | undefined;\n indices: number[];\n }>\n >;\n }\n | undefined;\n };\n}\n\nconst ToolUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: ToolCallMessagePartComponent | undefined;\n} & ToolCallMessagePartProps) => {\n const Render = useAuiState((s) => {\n const Render = s.tools.tools[props.toolName] ?? Fallback;\n if (Array.isArray(Render)) return Render[0] ?? Fallback;\n return Render;\n });\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst DataUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: DataMessagePartComponent | undefined;\n} & DataMessagePartProps) => {\n const Render = useAuiState((s) => {\n const Render = s.dataRenderers.renderers[props.name] ?? Fallback;\n if (Array.isArray(Render)) return Render[0] ?? Fallback;\n return Render;\n });\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst defaultComponents = {\n Text: () => (\n <p style={{ whiteSpace: \"pre-line\" }}>\n <MessagePartPrimitiveText />\n <MessagePartPrimitiveInProgress>\n <span style={{ fontFamily: \"revert\" }}>{\" \\u25CF\"}</span>\n </MessagePartPrimitiveInProgress>\n </p>\n ),\n Reasoning: () => null,\n Source: () => null,\n Image: () => <MessagePartPrimitiveImage />,\n File: () => null,\n Unstable_Audio: () => null,\n Group: ({ children }) => children,\n} satisfies MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n\ntype MessagePartComponentProps = {\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartComponent: FC<MessagePartComponentProps> = ({\n components: {\n Text = defaultComponents.Text,\n Reasoning = defaultComponents.Reasoning,\n Image = defaultComponents.Image,\n Source = defaultComponents.Source,\n File = defaultComponents.File,\n Unstable_Audio: Audio = defaultComponents.Unstable_Audio,\n tools = {},\n data,\n } = {},\n}) => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n\n const type = part.type;\n if (type === \"tool-call\") {\n const addResult = aui.part().addToolResult;\n const resume = aui.part().resumeToolCall;\n const respondToApproval = aui.part().respondToToolApproval;\n if (\"Override\" in tools)\n return (\n <tools.Override\n {...part}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;\n return (\n <ToolUIDisplay\n {...part}\n Fallback={Tool}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n }\n\n if (part.status?.type === \"requires-action\")\n throw new Error(\"Encountered unexpected requires-action status\");\n\n switch (type) {\n case \"text\":\n return <Text {...part} />;\n\n case \"reasoning\":\n return <Reasoning {...part} />;\n\n case \"source\":\n return <Source {...part} />;\n\n case \"image\":\n return <Image {...part} />;\n\n case \"file\":\n return <File {...part} />;\n\n case \"audio\":\n return <Audio {...part} />;\n\n case \"data\": {\n const Data = data?.by_name?.[part.name] ?? data?.Fallback;\n return <DataUIDisplay {...part} Fallback={Data} />;\n }\n\n default:\n console.warn(`Unknown message part type: ${type}`);\n return null;\n }\n};\n\ntype MessagePartProps = {\n partIndex: number;\n components: MessagePrimitiveUnstable_PartsGrouped.Props[\"components\"];\n};\n\nconst MessagePartImpl: FC<MessagePartProps> = ({ partIndex, components }) => {\n return (\n <PartByIndexProvider index={partIndex}>\n <MessagePartComponent components={components} />\n </PartByIndexProvider>\n );\n};\n\nconst MessagePart = memo(\n MessagePartImpl,\n (prev, next) =>\n prev.partIndex === next.partIndex &&\n prev.components?.Text === next.components?.Text &&\n prev.components?.Reasoning === next.components?.Reasoning &&\n prev.components?.Source === next.components?.Source &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.File === next.components?.File &&\n prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&\n prev.components?.tools === next.components?.tools &&\n prev.components?.data === next.components?.data &&\n prev.components?.Group === next.components?.Group,\n);\n\nconst EmptyPartFallback: FC<{\n status: MessagePartStatus;\n component: TextMessagePartComponent;\n}> = ({ status, component: Component }) => {\n return (\n <TextMessagePartProvider text=\"\" isRunning={status.type === \"running\"}>\n <Component type=\"text\" text=\"\" status={status} />\n </TextMessagePartProvider>\n );\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {\n const status = useAuiState(\n (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,\n );\n\n if (components?.Empty) return <components.Empty status={status} />;\n\n return (\n <EmptyPartFallback\n status={status}\n component={components?.Text ?? defaultComponents.Text}\n />\n );\n};\n\nconst EmptyParts = memo(\n EmptyPartsImpl,\n (prev, next) =>\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\n/**\n * Renders the parts of a message grouped by a custom grouping function.\n *\n * This component allows you to group message parts based on any criteria you define.\n * The grouping function receives all message parts and returns an array of groups,\n * where each group has a key and an array of part indices.\n *\n * @deprecated Prefer `<MessagePrimitive.GroupedParts>` for adjacent\n * grouping — it dispatches all rendering through one `switch (part.type)`\n * and supports nested group paths. Keep this primitive only for\n * non-adjacent clustering (e.g., gathering parts with the same parent-id\n * across the message).\n *\n * @example\n * ```tsx\n * // Group by parent ID (default behavior)\n * <MessagePrimitive.Unstable_PartsGrouped\n * components={{\n * Text: ({ text }) => <p className=\"message-text\">{text}</p>,\n * Image: ({ image }) => <img src={image} alt=\"Message image\" />,\n * Group: ({ groupKey, indices, children }) => {\n * if (!groupKey) return <>{children}</>;\n * return (\n * <div className=\"parent-group border rounded p-4\">\n * <h4>Parent ID: {groupKey}</h4>\n * {children}\n * </div>\n * );\n * }\n * }}\n * />\n * ```\n */\nexport const MessagePrimitiveUnstable_PartsGrouped: FC<\n MessagePrimitiveUnstable_PartsGrouped.Props\n> = ({ groupingFunction, components }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const messageGroups = useMessagePartsGrouped(groupingFunction);\n\n const partsElements = useMemo(() => {\n if (contentLength === 0) {\n return <EmptyParts components={components} />;\n }\n\n return messageGroups.map((group, groupIndex) => {\n const GroupComponent = components?.Group ?? defaultComponents.Group;\n\n return (\n <GroupComponent\n key={`group-${groupIndex}-${group.groupKey ?? \"ungrouped\"}`}\n groupKey={group.groupKey}\n indices={group.indices}\n >\n {group.indices.map((partIndex) => (\n <MessagePart\n key={partIndex}\n partIndex={partIndex}\n components={components}\n />\n ))}\n </GroupComponent>\n );\n });\n }, [messageGroups, components, contentLength]);\n\n return <>{partsElements}</>;\n};\n\nMessagePrimitiveUnstable_PartsGrouped.displayName =\n \"MessagePrimitive.Unstable_PartsGrouped\";\n\n/**\n * Renders the parts of a message grouped by their parent ID.\n * This is a convenience wrapper around Unstable_PartsGrouped with parent ID grouping.\n *\n * @deprecated Use MessagePrimitive.Unstable_PartsGrouped instead for more flexibility\n */\nexport const MessagePrimitiveUnstable_PartsGroupedByParentId: FC<\n Omit<MessagePrimitiveUnstable_PartsGrouped.Props, \"groupingFunction\">\n> = ({ components, ...props }) => {\n return (\n <MessagePrimitiveUnstable_PartsGrouped\n {...props}\n components={components}\n groupingFunction={groupMessagePartsByParentId}\n />\n );\n};\n\nMessagePrimitiveUnstable_PartsGroupedByParentId.displayName =\n \"MessagePrimitive.Unstable_PartsGroupedByParentId\";\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageRoot.d.ts","names":[],"sources":["../../../src/primitives/message/MessageRoot.tsx"],"mappings":";;;kBAuHiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;cA8EnD,sCAAoB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA"}
|
|
1
|
+
{"version":3,"file":"MessageRoot.d.ts","names":[],"sources":["../../../src/primitives/message/MessageRoot.tsx"],"mappings":";;;kBAuHiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,gCAAgC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;cA8EnD,sCAAoB,0BAAA,KAAA,qBAAA,gBAAA,kCAAA,eAAA;;;;oBAkB/B,cAAA,0CAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartImage.d.ts","names":[],"sources":["../../../src/primitives/messagePart/MessagePartImage.tsx"],"mappings":";;;kBAUiB;OACH,UAAU,oBAAoB,UAAU;;;;;OAKxC,QAAQ,gCAAgC,UAAU;;;;;;;;;;;;;;;;;cAkBnD,2CAAyB,0BAAA,KAAA,qBAAA,gBAAA,oCAAA,kBAAA"}
|
|
1
|
+
{"version":3,"file":"MessagePartImage.d.ts","names":[],"sources":["../../../src/primitives/messagePart/MessagePartImage.tsx"],"mappings":";;;kBAUiB;OACH,UAAU,oBAAoB,UAAU;;;;;OAKxC,QAAQ,gCAAgC,UAAU;;;;;;;;;;;;;;;;;cAkBnD,2CAAyB,0BAAA,KAAA,qBAAA,gBAAA,oCAAA,kBAAA;;;;oBAMpC,cAAA,4CAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartText.d.ts","names":[],"sources":["../../../src/primitives/messagePart/MessagePartText.tsx"],"mappings":";;;;kBAYiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;;;;;;;;IAU1C,mBAAmB;;;;;IAKnB,YAAY;;;;;;;;;;;;;;;;;;;cAoBH,0CAAwB,0BAAA,KAAA,KAAA,qBAAA,gBAAA,mCAAA,eAAA;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"MessagePartText.d.ts","names":[],"sources":["../../../src/primitives/messagePart/MessagePartText.tsx"],"mappings":";;;;kBAYiB;OACH,UAAU,oBAAoB,UAAU;OACxC,QAAQ,KAClB,gCAAgC,UAAU;;;;;;;;IAU1C,mBAAmB;;;;;IAKnB,YAAY;;;;;;;;;;;;;;;;;;;cAoBH,0CAAwB,0BAAA,KAAA,KAAA,qBAAA,gBAAA,mCAAA,eAAA;;;;;;;;;;;;EAzBxB,mBAAU;;;;;EAKP,YAAA;oBA+Bd,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessagePartText.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","ElementType","useMessagePartText","useSmooth","SmoothOptions","MessagePartPrimitiveText","Element","span","Props","Omit","smooth","component","t0","forwardedRef","$","rest","t1","t2","undefined","Component","text","status","t3","type","displayName"],"sources":["../../../src/primitives/messagePart/MessagePartText.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n} from \"react\";\nimport { useMessagePartText } from \"./useMessagePartText\";\nimport { useSmooth, type SmoothOptions } from \"../../utils/smooth/useSmooth\";\n\nexport namespace MessagePartPrimitiveText {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.span>,\n \"children\" | \"asChild\"\n > & {\n /**\n * Whether to enable smooth text streaming animation.\n * When enabled, text appears with a typing effect as it streams in.\n * Pass a `SmoothOptions` object to tune the reveal rate.\n * Auto-disables under `prefers-reduced-motion: reduce`.\n * @default true\n */\n smooth?: boolean | SmoothOptions;\n /**\n * The HTML element or React component to render as.\n * @default \"span\"\n */\n component?: ElementType;\n };\n}\n\n/**\n * Renders the text content of a message part with optional smooth streaming.\n *\n * This component displays text content from the current message part context,\n * with support for smooth streaming animation that shows text appearing\n * character by character as it's generated.\n *\n * @example\n * ```tsx\n * <MessagePartPrimitive.Text\n * smooth={true}\n * component=\"p\"\n * className=\"message-text\"\n * />\n * ```\n */\nexport const MessagePartPrimitiveText = forwardRef<\n MessagePartPrimitiveText.Element,\n MessagePartPrimitiveText.Props\n>(({ smooth = true, component: Component = \"span\", ...rest }, forwardedRef) => {\n const { text, status } = useSmooth(useMessagePartText(), smooth);\n\n return (\n <Component data-status={status.type} {...rest} ref={forwardedRef}>\n {text}\n </Component>\n );\n});\n\nMessagePartPrimitiveText.displayName = \"MessagePartPrimitive.Text\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkDA,MAAaU,2BAA2BN,YAGtCa,IAAAC,iBAAA;CAAA,MAAAC,IAAAlB,EAAA,EAAA;CAAA,IAAAmB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAF,QAAAM,IAAAL,WAAAM,OAAAF,QAAAH;EAAyDE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAF,OAAAD,EAAA;EAAAE,KAAAF,EAAA;EAAAG,KAAAH,EAAA;CAAA;CAAvD,MAAAJ,SAAAM,OAAAE,KAAAA,IAAA,OAAAF;CAA0B,MAAAG,YAAAF,OAAAC,KAAAA,IAAA,SAAAD;CAC7B,MAAA,EAAAG,MAAAC,WAAyBlB,UAAUD,mBAAmB,GAAGQ,MAAM;CAAE,IAAAY;CAAA,IAAAR,EAAA,OAAAK,aAAAL,EAAA,OAAAD,gBAAAC,EAAA,OAAAC,QAAAD,EAAA,OAAAO,OAAAE,QAAAT,EAAA,OAAAM,MAAA;EAG/DE,KAAA,oBAAC,WAAD;GAAwB,eAAAD,OAAME;GAAK,GAAMR;GAAWF,KAAAA;
|
|
1
|
+
{"version":3,"file":"MessagePartText.js","names":["c","_c","Primitive","ComponentRef","forwardRef","ComponentPropsWithoutRef","ElementType","useMessagePartText","useSmooth","SmoothOptions","MessagePartPrimitiveText","Element","span","Props","Omit","smooth","component","t0","forwardedRef","$","rest","t1","t2","undefined","Component","text","status","t3","type","displayName"],"sources":["../../../src/primitives/messagePart/MessagePartText.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Primitive } from \"../../utils/Primitive\";\nimport {\n type ComponentRef,\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n} from \"react\";\nimport { useMessagePartText } from \"./useMessagePartText\";\nimport { useSmooth, type SmoothOptions } from \"../../utils/smooth/useSmooth\";\n\nexport namespace MessagePartPrimitiveText {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = Omit<\n ComponentPropsWithoutRef<typeof Primitive.span>,\n \"children\" | \"asChild\"\n > & {\n /**\n * Whether to enable smooth text streaming animation.\n * When enabled, text appears with a typing effect as it streams in.\n * Pass a `SmoothOptions` object to tune the reveal rate.\n * Auto-disables under `prefers-reduced-motion: reduce`.\n * @default true\n */\n smooth?: boolean | SmoothOptions;\n /**\n * The HTML element or React component to render as.\n * @default \"span\"\n */\n component?: ElementType;\n };\n}\n\n/**\n * Renders the text content of a message part with optional smooth streaming.\n *\n * This component displays text content from the current message part context,\n * with support for smooth streaming animation that shows text appearing\n * character by character as it's generated.\n *\n * @example\n * ```tsx\n * <MessagePartPrimitive.Text\n * smooth={true}\n * component=\"p\"\n * className=\"message-text\"\n * />\n * ```\n */\nexport const MessagePartPrimitiveText = forwardRef<\n MessagePartPrimitiveText.Element,\n MessagePartPrimitiveText.Props\n>(({ smooth = true, component: Component = \"span\", ...rest }, forwardedRef) => {\n const { text, status } = useSmooth(useMessagePartText(), smooth);\n\n return (\n <Component data-status={status.type} {...rest} ref={forwardedRef}>\n {text}\n </Component>\n );\n});\n\nMessagePartPrimitiveText.displayName = \"MessagePartPrimitive.Text\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkDA,MAAaU,2BAA2BN,YAGtCa,IAAAC,iBAAA;CAAA,MAAAC,IAAAlB,EAAA,EAAA;CAAA,IAAAmB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAF,QAAAM,IAAAL,WAAAM,OAAAF,QAAAH;EAAyDE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAF,OAAAD,EAAA;EAAAE,KAAAF,EAAA;EAAAG,KAAAH,EAAA;CAAA;CAAvD,MAAAJ,SAAAM,OAAAE,KAAAA,IAAA,OAAAF;CAA0B,MAAAG,YAAAF,OAAAC,KAAAA,IAAA,SAAAD;CAC7B,MAAA,EAAAG,MAAAC,WAAyBlB,UAAUD,mBAAmB,GAAGQ,MAAM;CAAE,IAAAY;CAAA,IAAAR,EAAA,OAAAK,aAAAL,EAAA,OAAAD,gBAAAC,EAAA,OAAAC,QAAAD,EAAA,OAAAO,OAAAE,QAAAT,EAAA,OAAAM,MAAA;EAG/DE,KAAA,oBAAC,WAAD;GAAwB,eAAAD,OAAME;GAAK,GAAMR;GAAWF,KAAAA;GACjDO,UAAAA;EADO,CAAA;EAEEN,EAAA,KAAAK;EAAAL,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAO,OAAAE;EAAAT,EAAA,KAAAM;EAAAN,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAFZQ;AAEY,CAEf;AAEDjB,yBAAyBmB,cAAc"}
|
|
@@ -2,8 +2,9 @@ import { DataMessagePart } from "@assistant-ui/core";
|
|
|
2
2
|
//#region src/primitives/messagePart/useMessagePartData.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* @deprecated Use {@link useAuiState} to select and narrow `s.part`.
|
|
5
|
-
* Return `null` for optional rendering
|
|
6
|
-
*
|
|
5
|
+
* Return `null` for optional rendering. Do not throw inside the selector:
|
|
6
|
+
* selectors run inside `useSyncExternalStore`'s `getSnapshot`, so a transient
|
|
7
|
+
* part mismatch during thread switches can unmount the React root.
|
|
7
8
|
*
|
|
8
9
|
* @example
|
|
9
10
|
* ```tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessagePartData.d.ts","names":[],"sources":["../../../src/primitives/messagePart/useMessagePartData.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMessagePartData.d.ts","names":[],"sources":["../../../src/primitives/messagePart/useMessagePartData.ts"],"mappings":";;;;;;;;;;;;;;;;;;;cAsBa,qBAAsB,SAAS,kBAAa,gBAAA"}
|