@lobehub/ui 5.2.2 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/es/Accordion/Accordion.d.mts +2 -2
  2. package/es/Accordion/AccordionItem.d.mts +2 -2
  3. package/es/ActionIcon/ActionIcon.d.mts +2 -2
  4. package/es/Alert/Alert.d.mts +2 -2
  5. package/es/AutoComplete/Select.d.mts +2 -2
  6. package/es/Avatar/AvatarGroup/index.d.mts +2 -2
  7. package/es/Burger/Burger.d.mts +2 -2
  8. package/es/CodeDiff/CodeDiff.d.mts +2 -2
  9. package/es/CodeDiff/PatchDiff.d.mts +2 -2
  10. package/es/CodeEditor/CodeEditor.d.mts +2 -2
  11. package/es/Collapse/Collapse.d.mts +2 -2
  12. package/es/ConfigProvider/index.d.mts +2 -2
  13. package/es/CopyButton/CopyButton.d.mts +2 -2
  14. package/es/DatePicker/DatePicker.d.mts +2 -2
  15. package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
  16. package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
  17. package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
  18. package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
  19. package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
  20. package/es/Drawer/Drawer.d.mts +2 -2
  21. package/es/Dropdown/Dropdown.d.mts +2 -2
  22. package/es/EditableText/EditableText.d.mts +2 -2
  23. package/es/EditorSlashMenu/atoms.d.mts +13 -13
  24. package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
  25. package/es/Flex/FlexBasic.d.mts +2 -2
  26. package/es/FontLoader/index.d.mts +2 -2
  27. package/es/Footer/Footer.d.mts +2 -2
  28. package/es/Form/components/FormGroup.d.mts +2 -2
  29. package/es/Form/components/FormItem.d.mts +2 -2
  30. package/es/Form/components/FormSubmitFooter.d.mts +2 -2
  31. package/es/FormModal/FormModal.d.mts +2 -2
  32. package/es/Freeze/Freeze.d.mts +2 -2
  33. package/es/GuideCard/GuideCard.d.mts +2 -2
  34. package/es/Header/Header.d.mts +2 -2
  35. package/es/Highlighter/Highlighter.d.mts +2 -2
  36. package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
  37. package/es/Hotkey/Hotkey.d.mts +2 -2
  38. package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
  39. package/es/HotkeyInput/HotkeyInput.mjs +30 -8
  40. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  41. package/es/HotkeyInput/type.d.mts +3 -0
  42. package/es/Icon/Icon.d.mts +2 -2
  43. package/es/Icon/components/IconProvider.d.mts +3 -3
  44. package/es/Image/Image.mjs +2 -2
  45. package/es/Image/Image.mjs.map +1 -1
  46. package/es/Image/PreviewGroup.d.mts +2 -2
  47. package/es/Image/components/Toolbar.mjs +116 -36
  48. package/es/Image/components/Toolbar.mjs.map +1 -1
  49. package/es/Input/Input.d.mts +2 -2
  50. package/es/Input/InputOPT.d.mts +2 -2
  51. package/es/Input/InputPassword.d.mts +2 -2
  52. package/es/Input/TextArea.d.mts +2 -2
  53. package/es/Layout/components/LayoutFooter.d.mts +2 -2
  54. package/es/Layout/components/LayoutHeader.d.mts +2 -2
  55. package/es/Layout/components/LayoutMain.d.mts +2 -2
  56. package/es/Layout/components/LayoutSidebar.d.mts +2 -2
  57. package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
  58. package/es/Layout/components/LayoutToc.d.mts +2 -2
  59. package/es/List/ListItem/index.d.mts +2 -2
  60. package/es/Markdown/Markdown.d.mts +2 -2
  61. package/es/Markdown/Markdown.mjs +2 -1
  62. package/es/Markdown/Markdown.mjs.map +1 -1
  63. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs +56 -30
  64. package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
  65. package/es/Markdown/SyntaxMarkdown/style.mjs +2 -2
  66. package/es/Markdown/SyntaxMarkdown/style.mjs.map +1 -1
  67. package/es/Markdown/SyntaxMarkdown/useSmoothStreamContent.mjs +229 -0
  68. package/es/Markdown/SyntaxMarkdown/useSmoothStreamContent.mjs.map +1 -0
  69. package/es/Markdown/SyntaxMarkdown/useStreamQueue.mjs +8 -6
  70. package/es/Markdown/SyntaxMarkdown/useStreamQueue.mjs.map +1 -1
  71. package/es/Markdown/Typography.d.mts +2 -2
  72. package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
  73. package/es/Markdown/index.d.mts +2 -2
  74. package/es/Markdown/plugins/rehypeStreamAnimated.d.mts +2 -0
  75. package/es/Markdown/plugins/rehypeStreamAnimated.mjs +17 -5
  76. package/es/Markdown/plugins/rehypeStreamAnimated.mjs.map +1 -1
  77. package/es/Markdown/type.d.mts +3 -1
  78. package/es/MaskShadow/MaskShadow.d.mts +2 -2
  79. package/es/Menu/Menu.d.mts +2 -2
  80. package/es/Mermaid/Mermaid.d.mts +2 -2
  81. package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
  82. package/es/Modal/Modal.d.mts +2 -2
  83. package/es/Modal/ModalProvider.d.mts +2 -2
  84. package/es/Modal/imperative.d.mts +2 -2
  85. package/es/MotionProvider/index.d.mts +2 -2
  86. package/es/Popover/ArrowIcon.d.mts +2 -2
  87. package/es/Popover/atoms.d.mts +2 -2
  88. package/es/Popover/context.d.mts +2 -2
  89. package/es/SearchBar/SearchBar.d.mts +2 -2
  90. package/es/Segmented/Segmented.d.mts +2 -2
  91. package/es/Select/Select.d.mts +2 -2
  92. package/es/SideNav/SideNav.d.mts +2 -2
  93. package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
  94. package/es/SortableList/components/DragHandle.d.mts +2 -2
  95. package/es/SortableList/components/SortableItem.d.mts +2 -2
  96. package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
  97. package/es/Toc/Toc.d.mts +2 -2
  98. package/es/Tooltip/TooltipGroup.mjs +4 -3
  99. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  100. package/es/Tooltip/TooltipStandalone.mjs +18 -5
  101. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  102. package/es/Tooltip/type.d.mts +7 -0
  103. package/es/Tooltip/useMergedTooltipProps.mjs +4 -1
  104. package/es/Tooltip/useMergedTooltipProps.mjs.map +1 -1
  105. package/es/Video/index.d.mts +2 -2
  106. package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
  107. package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
  108. package/es/awesome/Features/Features.d.mts +2 -2
  109. package/es/awesome/Giscus/Giscus.d.mts +2 -2
  110. package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
  111. package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
  112. package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
  113. package/es/awesome/Hero/Hero.d.mts +2 -2
  114. package/es/awesome/Spline/Spine.d.mts +2 -2
  115. package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
  116. package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
  117. package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
  118. package/es/base-ui/DropdownMenu/DropdownMenu.d.mts +2 -2
  119. package/es/base-ui/DropdownMenu/atoms.d.mts +18 -18
  120. package/es/base-ui/Modal/atoms.d.mts +12 -12
  121. package/es/base-ui/Modal/context.d.mts +2 -2
  122. package/es/base-ui/Modal/imperative.d.mts +2 -2
  123. package/es/base-ui/ScrollArea/atoms.d.mts +7 -7
  124. package/es/base-ui/Select/Select.d.mts +2 -2
  125. package/es/base-ui/Select/atoms.d.mts +3 -3
  126. package/es/base-ui/Switch/Switch.d.mts +2 -2
  127. package/es/base-ui/Switch/atoms.d.mts +4 -4
  128. package/es/base-ui/Toast/imperative.d.mts +2 -2
  129. package/es/brand/LobeChat/index.d.mts +2 -2
  130. package/es/brand/LobeHub/index.d.mts +2 -2
  131. package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
  132. package/es/brand/LogoThree/index.d.mts +2 -2
  133. package/es/chat/BackBottom/BackBottom.d.mts +2 -2
  134. package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
  135. package/es/chat/ChatItem/ChatItem.d.mts +2 -2
  136. package/es/chat/ChatList/ChatList.d.mts +2 -2
  137. package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
  138. package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
  139. package/es/chat/MessageInput/MessageInput.d.mts +2 -2
  140. package/es/chat/MessageModal/MessageModal.d.mts +2 -2
  141. package/es/color/ColorScales/index.d.mts +2 -2
  142. package/es/color/CssVar/index.d.mts +2 -2
  143. package/es/i18n/context.d.mts +2 -2
  144. package/es/i18n/resources/en/hotkey.d.mts +1 -0
  145. package/es/i18n/resources/en/hotkey.mjs +1 -0
  146. package/es/i18n/resources/en/hotkey.mjs.map +1 -1
  147. package/es/i18n/resources/en/image.d.mts +18 -0
  148. package/es/i18n/resources/en/image.mjs +19 -0
  149. package/es/i18n/resources/en/image.mjs.map +1 -0
  150. package/es/i18n/resources/en/index.d.mts +4 -3
  151. package/es/i18n/resources/en/index.mjs +2 -0
  152. package/es/i18n/resources/en/index.mjs.map +1 -1
  153. package/es/i18n/resources/zhCn/hotkey.d.mts +1 -0
  154. package/es/i18n/resources/zhCn/hotkey.mjs +1 -0
  155. package/es/i18n/resources/zhCn/hotkey.mjs.map +1 -1
  156. package/es/i18n/resources/zhCn/image.d.mts +18 -0
  157. package/es/i18n/resources/zhCn/image.mjs +19 -0
  158. package/es/i18n/resources/zhCn/image.mjs.map +1 -0
  159. package/es/i18n/resources/zhCn/index.d.mts +4 -3
  160. package/es/i18n/resources/zhCn/index.mjs +2 -0
  161. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  162. package/es/i18n/types.d.mts +4 -3
  163. package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
  164. package/es/icons/lucideExtra/CreateBotIcon.d.mts +3 -3
  165. package/es/icons/lucideExtra/DiscordIcon.d.mts +3 -3
  166. package/es/icons/lucideExtra/GlobeOffIcon.d.mts +2 -2
  167. package/es/icons/lucideExtra/GroupBotIcon.d.mts +3 -3
  168. package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +2 -2
  169. package/es/icons/lucideExtra/LeftClickIcon.d.mts +3 -3
  170. package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +2 -2
  171. package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
  172. package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
  173. package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
  174. package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
  175. package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
  176. package/es/icons/lucideExtra/SkillsIcon.d.mts +2 -2
  177. package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +3 -3
  178. package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +3 -3
  179. package/es/mdx/Mdx/index.d.mts +2 -2
  180. package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
  181. package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
  182. package/es/mobile/TabBar/TabBar.d.mts +2 -2
  183. package/es/storybook/StoryBook/index.d.mts +2 -2
  184. package/es/utils/blobToPng.mjs +41 -0
  185. package/es/utils/blobToPng.mjs.map +1 -0
  186. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rehypeStreamAnimated.mjs","names":["newChildren: ElementContent[]","properties: Record<string, any>"],"sources":["../../../src/Markdown/plugins/rehypeStreamAnimated.ts"],"sourcesContent":["import { type Element, type ElementContent, type Root } from 'hast';\nimport { type BuildVisitor } from 'unist-util-visit';\nimport { visit } from 'unist-util-visit';\n\nexport interface StreamAnimatedOptions {\n baseCharCount?: number;\n charDelay?: number;\n revealed?: boolean;\n}\n\nconst BLOCK_TAGS = new Set(['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li']);\nconst SKIP_TAGS = new Set(['pre', 'code', 'table', 'svg']);\n\nfunction hasClass(node: Element, cls: string): boolean {\n const cn = node.properties?.className;\n if (Array.isArray(cn)) return cn.some((c) => String(c).includes(cls));\n if (typeof cn === 'string') return cn.includes(cls);\n return false;\n}\n\nexport const rehypeStreamAnimated = (options: StreamAnimatedOptions = {}) => {\n const { charDelay = 20, baseCharCount = 0, revealed = false } = options;\n\n return (tree: Root) => {\n let globalCharIndex = 0;\n\n const shouldSkip = (node: Element): boolean => {\n return SKIP_TAGS.has(node.tagName) || hasClass(node, 'katex');\n };\n\n const wrapText = (node: Element) => {\n const newChildren: ElementContent[] = [];\n for (const child of node.children) {\n if (child.type === 'text') {\n for (const char of child.value) {\n const properties: Record<string, any> = {\n className: revealed ? 'stream-char stream-char-revealed' : 'stream-char',\n };\n if (!revealed) {\n const relativeIndex = Math.max(0, globalCharIndex - baseCharCount);\n const delay = relativeIndex * charDelay;\n if (delay > 0) {\n properties.style = `animation-delay:${delay}ms`;\n }\n }\n newChildren.push({\n children: [{ type: 'text', value: char }],\n properties,\n tagName: 'span',\n type: 'element',\n });\n globalCharIndex++;\n }\n } else if (child.type === 'element') {\n if (!shouldSkip(child)) {\n wrapText(child);\n }\n newChildren.push(child);\n } else {\n newChildren.push(child);\n }\n }\n node.children = newChildren;\n };\n\n visit(tree, 'element', ((node: Element) => {\n if (shouldSkip(node)) return 'skip';\n if (BLOCK_TAGS.has(node.tagName)) {\n wrapText(node);\n return 'skip';\n }\n }) as BuildVisitor<Root, 'element'>);\n };\n};\n"],"mappings":";;;AAUA,MAAM,aAAa,IAAI,IAAI;CAAC;CAAK;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAK,CAAC;AAC3E,MAAM,YAAY,IAAI,IAAI;CAAC;CAAO;CAAQ;CAAS;CAAM,CAAC;AAE1D,SAAS,SAAS,MAAe,KAAsB;CACrD,MAAM,KAAK,KAAK,YAAY;AAC5B,KAAI,MAAM,QAAQ,GAAG,CAAE,QAAO,GAAG,MAAM,MAAM,OAAO,EAAE,CAAC,SAAS,IAAI,CAAC;AACrE,KAAI,OAAO,OAAO,SAAU,QAAO,GAAG,SAAS,IAAI;AACnD,QAAO;;AAGT,MAAa,wBAAwB,UAAiC,EAAE,KAAK;CAC3E,MAAM,EAAE,YAAY,IAAI,gBAAgB,GAAG,WAAW,UAAU;AAEhE,SAAQ,SAAe;EACrB,IAAI,kBAAkB;EAEtB,MAAM,cAAc,SAA2B;AAC7C,UAAO,UAAU,IAAI,KAAK,QAAQ,IAAI,SAAS,MAAM,QAAQ;;EAG/D,MAAM,YAAY,SAAkB;GAClC,MAAMA,cAAgC,EAAE;AACxC,QAAK,MAAM,SAAS,KAAK,SACvB,KAAI,MAAM,SAAS,OACjB,MAAK,MAAM,QAAQ,MAAM,OAAO;IAC9B,MAAMC,aAAkC,EACtC,WAAW,WAAW,qCAAqC,eAC5D;AACD,QAAI,CAAC,UAAU;KAEb,MAAM,QADgB,KAAK,IAAI,GAAG,kBAAkB,cAAc,GACpC;AAC9B,SAAI,QAAQ,EACV,YAAW,QAAQ,mBAAmB,MAAM;;AAGhD,gBAAY,KAAK;KACf,UAAU,CAAC;MAAE,MAAM;MAAQ,OAAO;MAAM,CAAC;KACzC;KACA,SAAS;KACT,MAAM;KACP,CAAC;AACF;;YAEO,MAAM,SAAS,WAAW;AACnC,QAAI,CAAC,WAAW,MAAM,CACpB,UAAS,MAAM;AAEjB,gBAAY,KAAK,MAAM;SAEvB,aAAY,KAAK,MAAM;AAG3B,QAAK,WAAW;;AAGlB,QAAM,MAAM,aAAa,SAAkB;AACzC,OAAI,WAAW,KAAK,CAAE,QAAO;AAC7B,OAAI,WAAW,IAAI,KAAK,QAAQ,EAAE;AAChC,aAAS,KAAK;AACd,WAAO;;KAEyB"}
1
+ {"version":3,"file":"rehypeStreamAnimated.mjs","names":["newChildren: ElementContent[]","delay: number | undefined","properties: Record<string, any>"],"sources":["../../../src/Markdown/plugins/rehypeStreamAnimated.ts"],"sourcesContent":["import { type Element, type ElementContent, type Root } from 'hast';\nimport { type BuildVisitor } from 'unist-util-visit';\nimport { visit } from 'unist-util-visit';\n\nexport interface StreamAnimatedOptions {\n baseCharCount?: number;\n charDelay?: number;\n fadeDuration?: number;\n revealed?: boolean;\n timelineElapsedMs?: number;\n}\n\nconst BLOCK_TAGS = new Set(['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li']);\nconst SKIP_TAGS = new Set(['pre', 'code', 'table', 'svg']);\n\nfunction hasClass(node: Element, cls: string): boolean {\n const cn = node.properties?.className;\n if (Array.isArray(cn)) return cn.some((c) => String(c).includes(cls));\n if (typeof cn === 'string') return cn.includes(cls);\n return false;\n}\n\nexport const rehypeStreamAnimated = (options: StreamAnimatedOptions = {}) => {\n const {\n charDelay = 20,\n fadeDuration = 150,\n baseCharCount = 0,\n revealed = false,\n timelineElapsedMs,\n } = options;\n const hasTimeline = typeof timelineElapsedMs === 'number' && Number.isFinite(timelineElapsedMs);\n\n return (tree: Root) => {\n let globalCharIndex = 0;\n\n const shouldSkip = (node: Element): boolean => {\n return SKIP_TAGS.has(node.tagName) || hasClass(node, 'katex');\n };\n\n const wrapText = (node: Element) => {\n const newChildren: ElementContent[] = [];\n for (const child of node.children) {\n if (child.type === 'text') {\n for (const char of child.value) {\n const relativeIndex = globalCharIndex - baseCharCount;\n let className = 'stream-char';\n let delay: number | undefined;\n\n if (revealed) {\n className = 'stream-char stream-char-revealed';\n } else if (hasTimeline) {\n const progress = (timelineElapsedMs as number) - globalCharIndex * charDelay;\n if (progress >= fadeDuration) {\n className = 'stream-char stream-char-revealed';\n } else {\n // Positive delay means \"not started yet\", negative keeps\n // the current in-flight progress on rerender.\n delay = -progress;\n }\n } else if (relativeIndex >= 0) {\n // Newly appended chars start with staggered positive delay.\n delay = relativeIndex * charDelay;\n } else {\n // Previously started chars continue fading with negative delay\n // instead of being immediately switched to revealed.\n const elapsed = -relativeIndex * charDelay;\n if (elapsed >= fadeDuration) {\n className = 'stream-char stream-char-revealed';\n } else {\n delay = -elapsed;\n }\n }\n\n const properties: Record<string, any> = { className };\n if (delay !== undefined && delay !== 0) {\n properties.style = `animation-delay:${delay}ms`;\n }\n newChildren.push({\n children: [{ type: 'text', value: char }],\n properties,\n tagName: 'span',\n type: 'element',\n });\n globalCharIndex++;\n }\n } else if (child.type === 'element') {\n if (!shouldSkip(child)) {\n wrapText(child);\n }\n newChildren.push(child);\n } else {\n newChildren.push(child);\n }\n }\n node.children = newChildren;\n };\n\n visit(tree, 'element', ((node: Element) => {\n if (shouldSkip(node)) return 'skip';\n if (BLOCK_TAGS.has(node.tagName)) {\n wrapText(node);\n return 'skip';\n }\n }) as BuildVisitor<Root, 'element'>);\n };\n};\n"],"mappings":";;;AAYA,MAAM,aAAa,IAAI,IAAI;CAAC;CAAK;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAK,CAAC;AAC3E,MAAM,YAAY,IAAI,IAAI;CAAC;CAAO;CAAQ;CAAS;CAAM,CAAC;AAE1D,SAAS,SAAS,MAAe,KAAsB;CACrD,MAAM,KAAK,KAAK,YAAY;AAC5B,KAAI,MAAM,QAAQ,GAAG,CAAE,QAAO,GAAG,MAAM,MAAM,OAAO,EAAE,CAAC,SAAS,IAAI,CAAC;AACrE,KAAI,OAAO,OAAO,SAAU,QAAO,GAAG,SAAS,IAAI;AACnD,QAAO;;AAGT,MAAa,wBAAwB,UAAiC,EAAE,KAAK;CAC3E,MAAM,EACJ,YAAY,IACZ,eAAe,KACf,gBAAgB,GAChB,WAAW,OACX,sBACE;CACJ,MAAM,cAAc,OAAO,sBAAsB,YAAY,OAAO,SAAS,kBAAkB;AAE/F,SAAQ,SAAe;EACrB,IAAI,kBAAkB;EAEtB,MAAM,cAAc,SAA2B;AAC7C,UAAO,UAAU,IAAI,KAAK,QAAQ,IAAI,SAAS,MAAM,QAAQ;;EAG/D,MAAM,YAAY,SAAkB;GAClC,MAAMA,cAAgC,EAAE;AACxC,QAAK,MAAM,SAAS,KAAK,SACvB,KAAI,MAAM,SAAS,OACjB,MAAK,MAAM,QAAQ,MAAM,OAAO;IAC9B,MAAM,gBAAgB,kBAAkB;IACxC,IAAI,YAAY;IAChB,IAAIC;AAEJ,QAAI,SACF,aAAY;aACH,aAAa;KACtB,MAAM,WAAY,oBAA+B,kBAAkB;AACnE,SAAI,YAAY,aACd,aAAY;SAIZ,SAAQ,CAAC;eAEF,iBAAiB,EAE1B,SAAQ,gBAAgB;SACnB;KAGL,MAAM,UAAU,CAAC,gBAAgB;AACjC,SAAI,WAAW,aACb,aAAY;SAEZ,SAAQ,CAAC;;IAIb,MAAMC,aAAkC,EAAE,WAAW;AACrD,QAAI,UAAU,UAAa,UAAU,EACnC,YAAW,QAAQ,mBAAmB,MAAM;AAE9C,gBAAY,KAAK;KACf,UAAU,CAAC;MAAE,MAAM;MAAQ,OAAO;MAAM,CAAC;KACzC;KACA,SAAS;KACT,MAAM;KACP,CAAC;AACF;;YAEO,MAAM,SAAS,WAAW;AACnC,QAAI,CAAC,WAAW,MAAM,CACpB,UAAS,MAAM;AAEjB,gBAAY,KAAK,MAAM;SAEvB,aAAY,KAAK,MAAM;AAG3B,QAAK,WAAW;;AAGlB,QAAM,MAAM,aAAa,SAAkB;AACzC,OAAI,WAAW,KAAK,CAAE,QAAO;AAC7B,OAAI,WAAW,IAAI,KAAK,QAAQ,EAAE;AAChC,aAAS,KAAK;AACd,WAAO;;KAEyB"}
@@ -22,6 +22,7 @@ interface TypographyProps extends DivProps {
22
22
  marginMultiple?: number;
23
23
  ref?: Ref<HTMLDivElement>;
24
24
  }
25
+ type StreamSmoothingPreset = 'realtime' | 'balanced' | 'silky';
25
26
  interface SyntaxMarkdownProps {
26
27
  allowHtml?: boolean;
27
28
  allowHtmlList?: ElementType[];
@@ -49,6 +50,7 @@ interface SyntaxMarkdownProps {
49
50
  remarkPlugins?: Pluggable[];
50
51
  remarkPluginsAhead?: Pluggable[];
51
52
  showFootnotes?: boolean;
53
+ streamSmoothingPreset?: StreamSmoothingPreset;
52
54
  variant?: 'default' | 'chat';
53
55
  }
54
56
  interface MarkdownProps extends SyntaxMarkdownProps, Omit<TypographyProps, 'children'> {
@@ -62,5 +64,5 @@ interface MarkdownProps extends SyntaxMarkdownProps, Omit<TypographyProps, 'chil
62
64
  style?: CSSProperties;
63
65
  }
64
66
  //#endregion
65
- export { MarkdownProps, SyntaxMarkdownProps, TypographyProps };
67
+ export { MarkdownProps, StreamSmoothingPreset, SyntaxMarkdownProps, TypographyProps };
66
68
  //# sourceMappingURL=type.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { MaskShadowProps } from "./type.mjs";
2
- import * as react57 from "react";
2
+ import * as react22 from "react";
3
3
 
4
4
  //#region src/MaskShadow/MaskShadow.d.ts
5
- declare const MaskShadow: react57.NamedExoticComponent<MaskShadowProps>;
5
+ declare const MaskShadow: react22.NamedExoticComponent<MaskShadowProps>;
6
6
  //#endregion
7
7
  export { MaskShadow };
8
8
  //# sourceMappingURL=MaskShadow.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { MenuProps } from "./type.mjs";
2
- import * as react46 from "react";
2
+ import * as react79 from "react";
3
3
 
4
4
  //#region src/Menu/Menu.d.ts
5
- declare const Menu: react46.NamedExoticComponent<MenuProps<unknown>>;
5
+ declare const Menu: react79.NamedExoticComponent<MenuProps<unknown>>;
6
6
  //#endregion
7
7
  export { Menu };
8
8
  //# sourceMappingURL=Menu.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { MermaidProps } from "./type.mjs";
2
- import * as react47 from "react";
2
+ import * as react12 from "react";
3
3
 
4
4
  //#region src/Mermaid/Mermaid.d.ts
5
- declare const Mermaid: react47.NamedExoticComponent<MermaidProps>;
5
+ declare const Mermaid: react12.NamedExoticComponent<MermaidProps>;
6
6
  //#endregion
7
7
  export { Mermaid };
8
8
  //# sourceMappingURL=Mermaid.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SyntaxMermaidProps } from "../type.mjs";
2
- import * as react48 from "react";
2
+ import * as react13 from "react";
3
3
 
4
4
  //#region src/Mermaid/SyntaxMermaid/index.d.ts
5
- declare const SyntaxMermaid: react48.NamedExoticComponent<SyntaxMermaidProps>;
5
+ declare const SyntaxMermaid: react13.NamedExoticComponent<SyntaxMermaidProps>;
6
6
  //#endregion
7
7
  export { SyntaxMermaid };
8
8
  //# sourceMappingURL=index.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { ModalProps } from "./type.mjs";
2
- import * as react42 from "react";
2
+ import * as react19 from "react";
3
3
 
4
4
  //#region src/Modal/Modal.d.ts
5
- declare const Modal: react42.NamedExoticComponent<ModalProps>;
5
+ declare const Modal: react19.NamedExoticComponent<ModalProps>;
6
6
  //#endregion
7
7
  export { Modal };
8
8
  //# sourceMappingURL=Modal.d.mts.map
@@ -1,9 +1,9 @@
1
1
  import { ModalContextValue } from "./type.mjs";
2
- import * as react43 from "react";
2
+ import * as react20 from "react";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/Modal/ModalProvider.d.ts
6
- declare const ModalProvider: react43.NamedExoticComponent<{
6
+ declare const ModalProvider: react20.NamedExoticComponent<{
7
7
  children: ReactNode;
8
8
  value: ModalContextValue;
9
9
  }>;
@@ -1,5 +1,5 @@
1
1
  import { ImperativeModalProps, ModalInstance, RawModalComponent, RawModalComponentProps, RawModalInstance, RawModalKeyOptions, RawModalOptions } from "./type.mjs";
2
- import * as react_jsx_runtime18 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/Modal/imperative.d.ts
5
5
  type ModalHostProps = {
@@ -7,7 +7,7 @@ type ModalHostProps = {
7
7
  };
8
8
  declare const ModalHost: ({
9
9
  root
10
- }: ModalHostProps) => react_jsx_runtime18.JSX.Element | null;
10
+ }: ModalHostProps) => react_jsx_runtime6.JSX.Element | null;
11
11
  declare const createModal: (props: ImperativeModalProps) => ModalInstance;
12
12
  declare function createRawModal<P extends RawModalComponentProps>(component: RawModalComponent<P>, props: Omit<P, 'open' | 'onClose'>, options?: RawModalOptions): RawModalInstance<P>;
13
13
  declare function createRawModal<P, OpenKey extends keyof P, CloseKey extends keyof P>(component: RawModalComponent<P>, props: Omit<P, OpenKey | CloseKey>, options: RawModalKeyOptions<OpenKey, CloseKey>): RawModalInstance<P, OpenKey, CloseKey>;
@@ -1,4 +1,4 @@
1
- import * as react37 from "react";
1
+ import * as react77 from "react";
2
2
  import { Context, ReactNode } from "react";
3
3
  import * as motion_react0 from "motion/react";
4
4
  import * as m from "motion/react-m";
@@ -6,7 +6,7 @@ import * as m from "motion/react-m";
6
6
  //#region src/MotionProvider/index.d.ts
7
7
  type MotionComponentType = typeof motion_react0.motion | typeof m;
8
8
  declare const MotionComponent: Context<MotionComponentType>;
9
- declare const MotionProvider: react37.NamedExoticComponent<{
9
+ declare const MotionProvider: react77.NamedExoticComponent<{
10
10
  children: ReactNode;
11
11
  motion: MotionComponentType;
12
12
  }>;
@@ -1,7 +1,7 @@
1
- import * as react_jsx_runtime5 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/Popover/ArrowIcon.d.ts
4
- declare const PopoverArrowIcon: react_jsx_runtime5.JSX.Element;
4
+ declare const PopoverArrowIcon: react_jsx_runtime0.JSX.Element;
5
5
  //#endregion
6
6
  export { PopoverArrowIcon };
7
7
  //# sourceMappingURL=ArrowIcon.d.mts.map
@@ -1,5 +1,5 @@
1
1
  import { PopoverPlacement } from "./type.mjs";
2
- import * as react12 from "react";
2
+ import * as react15 from "react";
3
3
  import { ComponentProps, ComponentPropsWithRef } from "react";
4
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
5
5
  import * as _base_ui_react_popover0 from "@base-ui/react/popover";
@@ -7,7 +7,7 @@ import { Popover } from "@base-ui/react/popover";
7
7
 
8
8
  //#region src/Popover/atoms.d.ts
9
9
  declare const PopoverRoot: typeof Popover.Root;
10
- declare const PopoverBackdrop: react12.ForwardRefExoticComponent<_base_ui_react_popover0.PopoverBackdropProps & react12.RefAttributes<HTMLDivElement>>;
10
+ declare const PopoverBackdrop: react15.ForwardRefExoticComponent<_base_ui_react_popover0.PopoverBackdropProps & react15.RefAttributes<HTMLDivElement>>;
11
11
  type PopoverTriggerElementProps = Omit<ComponentPropsWithRef<typeof Popover.Trigger>, 'children' | 'render'> & {
12
12
  children: ComponentProps<typeof Popover.Trigger>['children'];
13
13
  };
@@ -1,11 +1,11 @@
1
- import * as react14 from "react";
1
+ import * as react17 from "react";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/Popover/context.d.ts
5
5
  type PopoverContextValue = {
6
6
  close: () => void;
7
7
  };
8
- declare const PopoverProvider: react14.NamedExoticComponent<{
8
+ declare const PopoverProvider: react17.NamedExoticComponent<{
9
9
  children: ReactNode;
10
10
  value: PopoverContextValue;
11
11
  }>;
@@ -1,8 +1,8 @@
1
1
  import { SearchBarProps } from "./type.mjs";
2
- import * as react9 from "react";
2
+ import * as react3 from "react";
3
3
 
4
4
  //#region src/SearchBar/SearchBar.d.ts
5
- declare const SearchBar: react9.NamedExoticComponent<SearchBarProps>;
5
+ declare const SearchBar: react3.NamedExoticComponent<SearchBarProps>;
6
6
  //#endregion
7
7
  export { SearchBar };
8
8
  //# sourceMappingURL=SearchBar.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SegmentedProps } from "./type.mjs";
2
- import * as react8 from "react";
2
+ import * as react2 from "react";
3
3
 
4
4
  //#region src/Segmented/Segmented.d.ts
5
- declare const Segmented: react8.NamedExoticComponent<SegmentedProps>;
5
+ declare const Segmented: react2.NamedExoticComponent<SegmentedProps>;
6
6
  //#endregion
7
7
  export { Segmented };
8
8
  //# sourceMappingURL=Segmented.d.mts.map
@@ -1,11 +1,11 @@
1
1
  import { SelectProps } from "./type.mjs";
2
- import * as react7 from "react";
2
+ import * as react0 from "react";
3
3
 
4
4
  //#region src/Select/Select.d.ts
5
5
  /**
6
6
  * @deprecated Use `Select` from `@lobehub/ui/base-ui` instead.
7
7
  */
8
- declare const Select: react7.NamedExoticComponent<SelectProps>;
8
+ declare const Select: react0.NamedExoticComponent<SelectProps>;
9
9
  //#endregion
10
10
  export { Select };
11
11
  //# sourceMappingURL=Select.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SideNavProps } from "./type.mjs";
2
- import * as react5 from "react";
2
+ import * as react1 from "react";
3
3
 
4
4
  //#region src/SideNav/SideNav.d.ts
5
- declare const SideNav: react5.NamedExoticComponent<SideNavProps>;
5
+ declare const SideNav: react1.NamedExoticComponent<SideNavProps>;
6
6
  //#endregion
7
7
  export { SideNav };
8
8
  //# sourceMappingURL=SideNav.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { SliderWithInputProps } from "./type.mjs";
2
- import * as react6 from "react";
2
+ import * as react0 from "react";
3
3
 
4
4
  //#region src/SliderWithInput/SliderWithInput.d.ts
5
- declare const SliderWithInput: react6.NamedExoticComponent<SliderWithInputProps>;
5
+ declare const SliderWithInput: react0.NamedExoticComponent<SliderWithInputProps>;
6
6
  //#endregion
7
7
  export { SliderWithInput };
8
8
  //# sourceMappingURL=SliderWithInput.d.mts.map
@@ -1,9 +1,9 @@
1
1
  import { ActionIconProps } from "../../ActionIcon/type.mjs";
2
2
  import "../../ActionIcon/index.mjs";
3
- import * as react114 from "react";
3
+ import * as react117 from "react";
4
4
 
5
5
  //#region src/SortableList/components/DragHandle.d.ts
6
- declare const DragHandle: react114.NamedExoticComponent<ActionIconProps>;
6
+ declare const DragHandle: react117.NamedExoticComponent<ActionIconProps>;
7
7
  //#endregion
8
8
  export { DragHandle };
9
9
  //# sourceMappingURL=DragHandle.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { FlexboxProps } from "../../Flex/type.mjs";
2
2
  import "../../Flex/index.mjs";
3
- import * as react112 from "react";
3
+ import * as react115 from "react";
4
4
  import "@dnd-kit/core";
5
5
 
6
6
  //#region src/SortableList/components/SortableItem.d.ts
@@ -9,7 +9,7 @@ interface SortableItemProps extends Omit<FlexboxProps, 'id'> {
9
9
  id: string | number;
10
10
  variant?: 'borderless' | 'filled' | 'outlined';
11
11
  }
12
- declare const SortableItem: react112.NamedExoticComponent<SortableItemProps>;
12
+ declare const SortableItem: react115.NamedExoticComponent<SortableItemProps>;
13
13
  //#endregion
14
14
  export { SortableItem };
15
15
  //# sourceMappingURL=SortableItem.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { ThemeProviderProps } from "./type.mjs";
2
- import * as react29 from "react";
2
+ import * as react69 from "react";
3
3
 
4
4
  //#region src/ThemeProvider/ThemeProvider.d.ts
5
- declare const ThemeProvider: react29.NamedExoticComponent<ThemeProviderProps>;
5
+ declare const ThemeProvider: react69.NamedExoticComponent<ThemeProviderProps>;
6
6
  //#endregion
7
7
  export { ThemeProvider };
8
8
  //# sourceMappingURL=ThemeProvider.d.mts.map
package/es/Toc/Toc.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { TocProps } from "./type.mjs";
2
- import * as react2 from "react";
2
+ import * as react67 from "react";
3
3
 
4
4
  //#region src/Toc/Toc.d.ts
5
- declare const Toc: react2.NamedExoticComponent<TocProps>;
5
+ declare const Toc: react67.NamedExoticComponent<TocProps>;
6
6
  //#endregion
7
7
  export { Toc };
8
8
  //# sourceMappingURL=Toc.d.mts.map
@@ -14,7 +14,7 @@ import { cx } from "antd-style";
14
14
  import { Tooltip } from "@base-ui/react/tooltip";
15
15
 
16
16
  //#region src/Tooltip/TooltipGroup.tsx
17
- const TooltipGroup = ({ children, disableDestroyOnInvalidTrigger = false, disableZeroOriginGuard = false, layoutAnimation = false, ...sharedProps }) => {
17
+ const TooltipGroup = ({ children, disableDestroyOnInvalidTrigger = false, disableZeroOriginGuard = false, layoutAnimation = false, popupContainer, ...sharedProps }) => {
18
18
  const [{ handle, key }, setHandleState] = useState(() => ({
19
19
  handle: Tooltip.createHandle(),
20
20
  key: 0
@@ -106,8 +106,9 @@ const TooltipGroup = ({ children, disableDestroyOnInvalidTrigger = false, disabl
106
106
  }), body]
107
107
  })
108
108
  });
109
- return portalContainer ? /* @__PURE__ */ jsx(Tooltip.Portal, {
110
- container: portalContainer,
109
+ const resolvedPortalContainer = item.popupContainer ?? popupContainer ?? portalContainer;
110
+ return resolvedPortalContainer ? /* @__PURE__ */ jsx(Tooltip.Portal, {
111
+ container: resolvedPortalContainer,
111
112
  children: popup
112
113
  }) : null;
113
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipGroup.mjs","names":["TooltipGroup: FC<TooltipGroupProps>","BaseTooltip","key","TooltipContent"],"sources":["../../src/Tooltip/TooltipGroup.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { type FC, useCallback, useRef, useState } from 'react';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useAppElement } from '@/ThemeProvider';\nimport {\n useDestroyOnInvalidActiveTriggerElement,\n useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport {\n TooltipGroupHandleContext,\n type TooltipGroupItem,\n TooltipGroupPropsContext,\n} from './groupContext';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { type TooltipGroupProps } from './type';\n\nconst TooltipGroup: FC<TooltipGroupProps> = ({\n children,\n disableDestroyOnInvalidTrigger = false,\n disableZeroOriginGuard = false,\n layoutAnimation = false,\n ...sharedProps\n}) => {\n const [{ handle, key }, setHandleState] = useState(() => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: 0,\n }));\n const activeItemRef = useRef<TooltipGroupItem | null>(null);\n\n const destroy = useCallback(() => {\n activeItemRef.current = null;\n setHandleState(({ key }) => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: key + 1,\n }));\n }, []);\n\n const handleOpenChange = useCallback((open: boolean) => {\n activeItemRef.current?.onOpenChange?.(open);\n }, []);\n\n const appElement = useAppElement();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? appElement;\n\n useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n enabled: !disableDestroyOnInvalidTrigger,\n });\n useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n return (\n <TooltipGroupHandleContext value={handle}>\n <TooltipGroupPropsContext value={sharedProps}>\n {children}\n\n <BaseTooltip.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n {({ payload }) => {\n const item = (payload as TooltipGroupItem | null) ?? null;\n activeItemRef.current = item;\n\n if (!item || (item.title == null && !item.hotkey)) return null;\n\n const arrow = item.arrow ?? false;\n const placement = item.placement ?? 'top';\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const resolvedClassNames = {\n arrow: cx(styles.arrow, item.classNames?.arrow),\n popup: cx(\n styles.popup,\n item.className,\n item.classNames?.root,\n item.classNames?.container,\n ),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, item.classNames?.content),\n };\n\n const resolvedStyleProps = (() => {\n if (typeof item.styles === 'function') return undefined;\n return item.styles;\n })();\n\n const resolvedStyles = {\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: item.zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n };\n\n const body = layoutAnimation ? (\n <BaseTooltip.Viewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </BaseTooltip.Viewport>\n ) : (\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </div>\n );\n\n const popup = (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-layout-animation={layoutAnimation || undefined}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...item.positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n data-layout-animation={layoutAnimation || undefined}\n style={resolvedStyles.popup}\n {...item.popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow\n className={resolvedClassNames.arrow}\n style={resolvedStyles.arrow}\n >\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n {body}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n );\n\n return portalContainer ? (\n <BaseTooltip.Portal container={portalContainer}>{popup}</BaseTooltip.Portal>\n ) : null;\n }}\n </BaseTooltip.Root>\n </TooltipGroupPropsContext>\n </TooltipGroupHandleContext>\n );\n};\n\nTooltipGroup.displayName = 'TooltipGroup';\n\nexport default TooltipGroup;\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,MAAMA,gBAAuC,EAC3C,UACA,iCAAiC,OACjC,yBAAyB,OACzB,kBAAkB,OAClB,GAAG,kBACC;CACJ,MAAM,CAAC,EAAE,QAAQ,OAAO,kBAAkB,gBAAgB;EACxD,QAAQC,QAAY,cAAgC;EACpD,KAAK;EACN,EAAE;CACH,MAAM,gBAAgB,OAAgC,KAAK;CAE3D,MAAM,UAAU,kBAAkB;AAChC,gBAAc,UAAU;AACxB,kBAAgB,EAAE,kBAAW;GAC3B,QAAQA,QAAY,cAAgC;GACpD,KAAKC,QAAM;GACZ,EAAE;IACF,EAAE,CAAC;CAEN,MAAM,mBAAmB,aAAa,SAAkB;AACtD,gBAAc,SAAS,eAAe,KAAK;IAC1C,EAAE,CAAC;CAEN,MAAM,aAAa,eAAe;CAElC,MAAM,kBADyB,kBAAkB,IACC;AAElD,yCAAwC,OAAO,OAAO,SAAS,EAC7D,SAAS,CAAC,gCACX,CAAC;AACF,oCAAmC,OAAO,OAAO,EAAE,SAAS,CAAC,wBAAwB,CAAC;AAEtF,QACE,oBAAC;EAA0B,OAAO;YAChC,qBAAC;GAAyB,OAAO;cAC9B,UAED,oBAACD,QAAY;IAAa;IAAkB,cAAc;eACtD,EAAE,cAAc;KAChB,MAAM,OAAQ,WAAuC;AACrD,mBAAc,UAAU;AAExB,SAAI,CAAC,QAAS,KAAK,SAAS,QAAQ,CAAC,KAAK,OAAS,QAAO;KAE1D,MAAM,QAAQ,KAAK,SAAS;KAC5B,MAAM,YAAY,KAAK,aAAa;KACpC,MAAM,kBAAkB,aAAa,cAAc,aAAa;KAChE,MAAM,iBAAiB,QAAQ,IAAI;KAEnC,MAAM,qBAAqB;MACzB,OAAO,GAAG,OAAO,OAAO,KAAK,YAAY,MAAM;MAC/C,OAAO,GACL,OAAO,OACP,KAAK,WACL,KAAK,YAAY,MACjB,KAAK,YAAY,UAClB;MACD,YAAY,OAAO;MACnB,UAAU,GAAG,OAAO,UAAU,KAAK,YAAY,QAAQ;MACxD;KAED,MAAM,4BAA4B;AAChC,UAAI,OAAO,KAAK,WAAW,WAAY,QAAO;AAC9C,aAAO,KAAK;SACV;KAEJ,MAAM,iBAAiB;MACrB,OAAO,oBAAoB;MAC3B,OAAO;OACL,GAAG,oBAAoB;OACvB,GAAG,oBAAoB;OACxB;MACD,YAAY,EACV,QAAQ,KAAK,UAAU,QACxB;MACD,UAAU,oBAAoB;MAC/B;KAED,MAAM,OAAO,kBACX,oBAACA,QAAY;MACX,WAAW,mBAAmB;MAC9B,OAAO,eAAe;gBAEtB,oBAACE;OACC,QAAQ,KAAK;OACb,aAAa,KAAK;OAClB,OAAO,KAAK;QACZ;OACmB,GAEvB,oBAAC;MAAI,WAAW,mBAAmB;MAAU,OAAO,eAAe;gBACjE,oBAACA;OACC,QAAQ,KAAK;OACb,aAAa,KAAK;OAClB,OAAO,KAAK;QACZ;OACE;KAGR,MAAM,QACJ,oBAACF,QAAY;MACX,OAAO,gBAAgB;MACvB,WAAW,mBAAmB;MAC9B,yBAAuB,mBAAmB;MAC1C,kBAAgB;MAChB,MAAM,gBAAgB;MACtB,YAAY;MACZ,OAAO,eAAe;MACtB,GAAI,KAAK;gBAET,qBAACA,QAAY;OACX,WAAW,mBAAmB;OAC9B,yBAAuB,mBAAmB;OAC1C,OAAO,eAAe;OACtB,GAAI,KAAK;kBAER,SACC,oBAACA,QAAY;QACX,WAAW,mBAAmB;QAC9B,OAAO,eAAe;kBAErB;SACiB,EAErB;QACiB;OACG;AAG3B,YAAO,kBACL,oBAACA,QAAY;MAAO,WAAW;gBAAkB;OAA2B,GAC1E;;MA9F+B,IAgGpB;IACM;GACD;;AAIhC,aAAa,cAAc;AAE3B,2BAAe"}
1
+ {"version":3,"file":"TooltipGroup.mjs","names":["TooltipGroup: FC<TooltipGroupProps>","BaseTooltip","key","TooltipContent"],"sources":["../../src/Tooltip/TooltipGroup.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { type FC, useCallback, useRef, useState } from 'react';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useAppElement } from '@/ThemeProvider';\nimport {\n useDestroyOnInvalidActiveTriggerElement,\n useHidePopupWhenPositionerAtOrigin,\n} from '@/utils/destroyOnInvalidActiveTriggerElement';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport {\n TooltipGroupHandleContext,\n type TooltipGroupItem,\n TooltipGroupPropsContext,\n} from './groupContext';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { type TooltipGroupProps } from './type';\n\nconst TooltipGroup: FC<TooltipGroupProps> = ({\n children,\n disableDestroyOnInvalidTrigger = false,\n disableZeroOriginGuard = false,\n layoutAnimation = false,\n popupContainer,\n ...sharedProps\n}) => {\n const [{ handle, key }, setHandleState] = useState(() => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: 0,\n }));\n const activeItemRef = useRef<TooltipGroupItem | null>(null);\n\n const destroy = useCallback(() => {\n activeItemRef.current = null;\n setHandleState(({ key }) => ({\n handle: BaseTooltip.createHandle<TooltipGroupItem>(),\n key: key + 1,\n }));\n }, []);\n\n const handleOpenChange = useCallback((open: boolean) => {\n activeItemRef.current?.onOpenChange?.(open);\n }, []);\n\n const appElement = useAppElement();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? appElement;\n\n useDestroyOnInvalidActiveTriggerElement(handle.store, destroy, {\n enabled: !disableDestroyOnInvalidTrigger,\n });\n useHidePopupWhenPositionerAtOrigin(handle.store, { enabled: !disableZeroOriginGuard });\n\n return (\n <TooltipGroupHandleContext value={handle}>\n <TooltipGroupPropsContext value={sharedProps}>\n {children}\n\n <BaseTooltip.Root handle={handle} key={key} onOpenChange={handleOpenChange}>\n {({ payload }) => {\n const item = (payload as TooltipGroupItem | null) ?? null;\n activeItemRef.current = item;\n\n if (!item || (item.title == null && !item.hotkey)) return null;\n\n const arrow = item.arrow ?? false;\n const placement = item.placement ?? 'top';\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const resolvedClassNames = {\n arrow: cx(styles.arrow, item.classNames?.arrow),\n popup: cx(\n styles.popup,\n item.className,\n item.classNames?.root,\n item.classNames?.container,\n ),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, item.classNames?.content),\n };\n\n const resolvedStyleProps = (() => {\n if (typeof item.styles === 'function') return undefined;\n return item.styles;\n })();\n\n const resolvedStyles = {\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: item.zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n };\n\n const body = layoutAnimation ? (\n <BaseTooltip.Viewport\n className={resolvedClassNames.viewport}\n style={resolvedStyles.viewport}\n >\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </BaseTooltip.Viewport>\n ) : (\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent\n hotkey={item.hotkey}\n hotkeyProps={item.hotkeyProps}\n title={item.title}\n />\n </div>\n );\n\n const popup = (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-layout-animation={layoutAnimation || undefined}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...item.positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n data-layout-animation={layoutAnimation || undefined}\n style={resolvedStyles.popup}\n {...item.popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow\n className={resolvedClassNames.arrow}\n style={resolvedStyles.arrow}\n >\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n {body}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n );\n\n const resolvedPortalContainer =\n item.popupContainer ?? popupContainer ?? portalContainer;\n\n return resolvedPortalContainer ? (\n <BaseTooltip.Portal container={resolvedPortalContainer}>{popup}</BaseTooltip.Portal>\n ) : null;\n }}\n </BaseTooltip.Root>\n </TooltipGroupPropsContext>\n </TooltipGroupHandleContext>\n );\n};\n\nTooltipGroup.displayName = 'TooltipGroup';\n\nexport default TooltipGroup;\n"],"mappings":"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"}
@@ -22,9 +22,13 @@ const DEFAULT_CLOSE_DELAY = 100;
22
22
  * Tooltip component - displays small contextual hints on hover/focus
23
23
  * Compatible with Ant Design Tooltip-like API (subset)
24
24
  */
25
- const TooltipStandalone = memo(({ children, title, arrow = false, className, classNames, closeDelay, defaultOpen = false, disabled = false, getPopupContainer, hotkey, hotkeyProps, mouseEnterDelay, mouseLeaveDelay, onOpenChange, open, openDelay, placement = "top", styles: styleProps, zIndex, ref: refProp, positionerProps, triggerProps, popupProps, portalProps }) => {
25
+ const TooltipStandalone = memo(({ children, title, arrow = false, className, classNames, closeDelay, defaultOpen = false, disabled = false, getPopupContainer, hotkey, hotkeyProps, mouseEnterDelay, mouseLeaveDelay, onOpenChange, open, openDelay, placement = "top", popupContainer, styles: styleProps, zIndex, ref: refProp, positionerProps, triggerProps, popupProps, portalProps }) => {
26
26
  const isClient = useIsClient();
27
27
  const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));
28
+ const [triggerNode, setTriggerNode] = useState(null);
29
+ const triggerCallbackRef = useCallback((node) => {
30
+ if (node) setTriggerNode(node);
31
+ }, []);
28
32
  const resolvedOpen = disabled ? false : open ?? uncontrolledOpen;
29
33
  const handleOpenChange = useCallback((nextOpen) => {
30
34
  if (disabled && nextOpen) return;
@@ -95,14 +99,15 @@ const TooltipStandalone = memo(({ children, title, arrow = false, className, cla
95
99
  ref: mergeRefs([
96
100
  children.ref,
97
101
  props.ref,
98
- refProp
102
+ refProp,
103
+ triggerCallbackRef
99
104
  ])
100
105
  });
101
106
  }
102
107
  });
103
108
  return /* @__PURE__ */ jsx(Tooltip.Trigger, {
104
109
  ...baseTriggerProps,
105
- ref: refProp,
110
+ ref: mergeRefs([refProp, triggerCallbackRef]),
106
111
  children
107
112
  });
108
113
  }, [
@@ -112,11 +117,19 @@ const TooltipStandalone = memo(({ children, title, arrow = false, className, cla
112
117
  refProp,
113
118
  resolvedCloseDelay,
114
119
  resolvedOpenDelay,
120
+ triggerCallbackRef,
115
121
  triggerProps
116
122
  ]);
117
123
  const customContainer = useMemo(() => {
118
- if (!getPopupContainer || !isClient) return void 0;
119
- }, [getPopupContainer, isClient]);
124
+ if (popupContainer) return popupContainer;
125
+ if (!getPopupContainer || !isClient || !triggerNode) return void 0;
126
+ return getPopupContainer(triggerNode);
127
+ }, [
128
+ popupContainer,
129
+ getPopupContainer,
130
+ isClient,
131
+ triggerNode
132
+ ]);
120
133
  const popup = useMemo(() => /* @__PURE__ */ jsx(Tooltip.Positioner, {
121
134
  align: placementConfig.align,
122
135
  className: resolvedClassNames.positioner,
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipStandalone.mjs","names":["BaseTooltip","TooltipContent"],"sources":["../../src/Tooltip/TooltipStandalone.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { cloneElement, isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { useAppElement } from '@/ThemeProvider';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { type TooltipProps } from './type';\n\nconst DEFAULT_OPEN_DELAY = 400;\nconst DEFAULT_CLOSE_DELAY = 100;\n\n/**\n * Tooltip component - displays small contextual hints on hover/focus\n * Compatible with Ant Design Tooltip-like API (subset)\n */\nexport const TooltipStandalone = memo<TooltipProps>(\n ({\n children,\n title,\n arrow = false,\n className,\n classNames,\n closeDelay,\n defaultOpen = false,\n disabled = false,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n open,\n openDelay,\n placement = 'top',\n styles: styleProps,\n zIndex,\n ref: refProp,\n positionerProps,\n triggerProps,\n popupProps,\n portalProps,\n }) => {\n const isClient = useIsClient();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n const mergedOpen = open ?? uncontrolledOpen;\n const resolvedOpen = disabled ? false : mergedOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [disabled, onOpenChange, open],\n );\n\n const resolvedOpenDelay = useMemo(() => {\n if (openDelay !== undefined) return openDelay;\n if (mouseEnterDelay !== undefined) return mouseEnterDelay * 1000;\n return DEFAULT_OPEN_DELAY;\n }, [mouseEnterDelay, openDelay]);\n\n const resolvedCloseDelay = useMemo(() => {\n if (closeDelay !== undefined) return closeDelay;\n if (mouseLeaveDelay !== undefined) return mouseLeaveDelay * 1000;\n return DEFAULT_CLOSE_DELAY;\n }, [closeDelay, mouseLeaveDelay]);\n\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const appElement = useAppElement();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? appElement;\n\n const { isNativeButtonTriggerElement } = useNativeButton({\n children,\n });\n\n const resolvedClassNames = useMemo(\n () => ({\n arrow: cx(styles.arrow, classNames?.arrow),\n popup: cx(styles.popup, className, classNames?.root, classNames?.container),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, classNames?.content),\n }),\n [className, classNames?.arrow, classNames?.container, classNames?.content, classNames?.root],\n );\n\n const resolvedStyleProps = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const resolvedStyles = useMemo(\n () => ({\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n }),\n [resolvedStyleProps, zIndex],\n );\n\n const triggerElement = useMemo(() => {\n const baseTriggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n ...triggerProps,\n };\n\n if (isValidElement(children)) {\n return (\n <BaseTooltip.Trigger\n {...baseTriggerProps}\n render={(props) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <BaseTooltip.Trigger {...baseTriggerProps} ref={refProp}>\n {children}\n </BaseTooltip.Trigger>\n );\n }, [\n children,\n disabled,\n isNativeButtonTriggerElement,\n refProp,\n resolvedCloseDelay,\n resolvedOpenDelay,\n triggerProps,\n ]);\n\n const customContainer = useMemo(() => {\n if (!getPopupContainer || !isClient) return undefined;\n return undefined;\n }, [getPopupContainer, isClient]);\n\n const popup = useMemo(\n () => (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n style={resolvedStyles.popup}\n {...popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent hotkey={hotkey} hotkeyProps={hotkeyProps} title={title} />\n </div>\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n ),\n [\n arrow,\n baseSideOffset,\n hotkey,\n hotkeyProps,\n placement,\n placementConfig.align,\n placementConfig.side,\n popupProps,\n positionerProps,\n resolvedClassNames,\n resolvedStyles,\n title,\n ],\n );\n\n if (title == null && !hotkey) {\n return children;\n }\n\n const resolvedPortalContainer = customContainer ?? portalContainer;\n\n return (\n <BaseTooltip.Root\n defaultOpen={defaultOpen}\n disabled={disabled}\n open={resolvedOpen}\n onOpenChange={handleOpenChange}\n >\n {triggerElement}\n {resolvedPortalContainer ? (\n <BaseTooltip.Portal container={resolvedPortalContainer} {...portalProps}>\n {popup}\n </BaseTooltip.Portal>\n ) : null}\n </BaseTooltip.Root>\n );\n },\n);\n\nTooltipStandalone.displayName = 'TooltipStandalone';\n"],"mappings":"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"}
1
+ {"version":3,"file":"TooltipStandalone.mjs","names":["BaseTooltip","TooltipContent"],"sources":["../../src/Tooltip/TooltipStandalone.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { cx } from 'antd-style';\nimport { cloneElement, isValidElement, memo, useCallback, useMemo, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { useFloatingLayer } from '@/hooks/useFloatingLayer';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { useAppElement } from '@/ThemeProvider';\nimport { placementMap } from '@/utils/placement';\n\nimport { TooltipArrowIcon } from './ArrowIcon';\nimport { styles } from './style';\nimport TooltipContent from './TooltipContent';\nimport { type TooltipProps } from './type';\n\nconst DEFAULT_OPEN_DELAY = 400;\nconst DEFAULT_CLOSE_DELAY = 100;\n\n/**\n * Tooltip component - displays small contextual hints on hover/focus\n * Compatible with Ant Design Tooltip-like API (subset)\n */\nexport const TooltipStandalone = memo<TooltipProps>(\n ({\n children,\n title,\n arrow = false,\n className,\n classNames,\n closeDelay,\n defaultOpen = false,\n disabled = false,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n open,\n openDelay,\n placement = 'top',\n popupContainer,\n styles: styleProps,\n zIndex,\n ref: refProp,\n positionerProps,\n triggerProps,\n popupProps,\n portalProps,\n }) => {\n const isClient = useIsClient();\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n const [triggerNode, setTriggerNode] = useState<HTMLElement | null>(null);\n const triggerCallbackRef = useCallback((node: HTMLElement | null) => {\n if (node) setTriggerNode(node);\n }, []);\n\n const mergedOpen = open ?? uncontrolledOpen;\n const resolvedOpen = disabled ? false : mergedOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n onOpenChange?.(nextOpen);\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [disabled, onOpenChange, open],\n );\n\n const resolvedOpenDelay = useMemo(() => {\n if (openDelay !== undefined) return openDelay;\n if (mouseEnterDelay !== undefined) return mouseEnterDelay * 1000;\n return DEFAULT_OPEN_DELAY;\n }, [mouseEnterDelay, openDelay]);\n\n const resolvedCloseDelay = useMemo(() => {\n if (closeDelay !== undefined) return closeDelay;\n if (mouseLeaveDelay !== undefined) return mouseLeaveDelay * 1000;\n return DEFAULT_CLOSE_DELAY;\n }, [closeDelay, mouseLeaveDelay]);\n\n const placementConfig = placementMap[placement] ?? placementMap.top;\n const baseSideOffset = arrow ? 8 : 6;\n\n const appElement = useAppElement();\n const floatingLayerContainer = useFloatingLayer();\n const portalContainer = floatingLayerContainer ?? appElement;\n\n const { isNativeButtonTriggerElement } = useNativeButton({\n children,\n });\n\n const resolvedClassNames = useMemo(\n () => ({\n arrow: cx(styles.arrow, classNames?.arrow),\n popup: cx(styles.popup, className, classNames?.root, classNames?.container),\n positioner: styles.positioner,\n viewport: cx(styles.viewport, classNames?.content),\n }),\n [className, classNames?.arrow, classNames?.container, classNames?.content, classNames?.root],\n );\n\n const resolvedStyleProps = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const resolvedStyles = useMemo(\n () => ({\n arrow: resolvedStyleProps?.arrow,\n popup: {\n ...resolvedStyleProps?.root,\n ...resolvedStyleProps?.container,\n },\n positioner: {\n zIndex: zIndex ?? 114_514,\n },\n viewport: resolvedStyleProps?.content,\n }),\n [resolvedStyleProps, zIndex],\n );\n\n const triggerElement = useMemo(() => {\n const baseTriggerProps = {\n closeDelay: resolvedCloseDelay,\n delay: resolvedOpenDelay,\n disabled,\n ...triggerProps,\n };\n\n if (isValidElement(children)) {\n return (\n <BaseTooltip.Trigger\n {...baseTriggerProps}\n render={(props) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([\n (children as any).ref,\n (props as any).ref,\n refProp,\n triggerCallbackRef,\n ]),\n });\n }}\n />\n );\n }\n\n return (\n <BaseTooltip.Trigger {...baseTriggerProps} ref={mergeRefs([refProp, triggerCallbackRef])}>\n {children}\n </BaseTooltip.Trigger>\n );\n }, [\n children,\n disabled,\n isNativeButtonTriggerElement,\n refProp,\n resolvedCloseDelay,\n resolvedOpenDelay,\n triggerCallbackRef,\n triggerProps,\n ]);\n\n const customContainer = useMemo(() => {\n if (popupContainer) return popupContainer;\n if (!getPopupContainer || !isClient || !triggerNode) return undefined;\n return getPopupContainer(triggerNode);\n }, [popupContainer, getPopupContainer, isClient, triggerNode]);\n\n const popup = useMemo(\n () => (\n <BaseTooltip.Positioner\n align={placementConfig.align}\n className={resolvedClassNames.positioner}\n data-placement={placement}\n side={placementConfig.side}\n sideOffset={baseSideOffset}\n style={resolvedStyles.positioner}\n {...positionerProps}\n >\n <BaseTooltip.Popup\n className={resolvedClassNames.popup}\n style={resolvedStyles.popup}\n {...popupProps}\n >\n {arrow && (\n <BaseTooltip.Arrow className={resolvedClassNames.arrow} style={resolvedStyles.arrow}>\n {TooltipArrowIcon}\n </BaseTooltip.Arrow>\n )}\n <div className={resolvedClassNames.viewport} style={resolvedStyles.viewport}>\n <TooltipContent hotkey={hotkey} hotkeyProps={hotkeyProps} title={title} />\n </div>\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n ),\n [\n arrow,\n baseSideOffset,\n hotkey,\n hotkeyProps,\n placement,\n placementConfig.align,\n placementConfig.side,\n popupProps,\n positionerProps,\n resolvedClassNames,\n resolvedStyles,\n title,\n ],\n );\n\n if (title == null && !hotkey) {\n return children;\n }\n\n const resolvedPortalContainer = customContainer ?? portalContainer;\n\n return (\n <BaseTooltip.Root\n defaultOpen={defaultOpen}\n disabled={disabled}\n open={resolvedOpen}\n onOpenChange={handleOpenChange}\n >\n {triggerElement}\n {resolvedPortalContainer ? (\n <BaseTooltip.Portal container={resolvedPortalContainer} {...portalProps}>\n {popup}\n </BaseTooltip.Portal>\n ) : null}\n </BaseTooltip.Root>\n );\n },\n);\n\nTooltipStandalone.displayName = 'TooltipStandalone';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;;;;;AAM5B,MAAa,oBAAoB,MAC9B,EACC,UACA,OACA,QAAQ,OACR,WACA,YACA,YACA,cAAc,OACd,WAAW,OACX,mBACA,QACA,aACA,iBACA,iBACA,cACA,MACA,WACA,YAAY,OACZ,gBACA,QAAQ,YACR,QACA,KAAK,SACL,iBACA,cACA,YACA,kBACI;CACJ,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,QAAQ,YAAY,CAAC;CAC9E,MAAM,CAAC,aAAa,kBAAkB,SAA6B,KAAK;CACxE,MAAM,qBAAqB,aAAa,SAA6B;AACnE,MAAI,KAAM,gBAAe,KAAK;IAC7B,EAAE,CAAC;CAGN,MAAM,eAAe,WAAW,QADb,QAAQ;CAG3B,MAAM,mBAAmB,aACtB,aAAsB;AACrB,MAAI,YAAY,SAAU;AAC1B,iBAAe,SAAS;AACxB,MAAI,SAAS,OACX,qBAAoB,SAAS;IAGjC;EAAC;EAAU;EAAc;EAAK,CAC/B;CAED,MAAM,oBAAoB,cAAc;AACtC,MAAI,cAAc,OAAW,QAAO;AACpC,MAAI,oBAAoB,OAAW,QAAO,kBAAkB;AAC5D,SAAO;IACN,CAAC,iBAAiB,UAAU,CAAC;CAEhC,MAAM,qBAAqB,cAAc;AACvC,MAAI,eAAe,OAAW,QAAO;AACrC,MAAI,oBAAoB,OAAW,QAAO,kBAAkB;AAC5D,SAAO;IACN,CAAC,YAAY,gBAAgB,CAAC;CAEjC,MAAM,kBAAkB,aAAa,cAAc,aAAa;CAChE,MAAM,iBAAiB,QAAQ,IAAI;CAEnC,MAAM,aAAa,eAAe;CAElC,MAAM,kBADyB,kBAAkB,IACC;CAElD,MAAM,EAAE,iCAAiC,gBAAgB,EACvD,UACD,CAAC;CAEF,MAAM,qBAAqB,eAClB;EACL,OAAO,GAAG,OAAO,OAAO,YAAY,MAAM;EAC1C,OAAO,GAAG,OAAO,OAAO,WAAW,YAAY,MAAM,YAAY,UAAU;EAC3E,YAAY,OAAO;EACnB,UAAU,GAAG,OAAO,UAAU,YAAY,QAAQ;EACnD,GACD;EAAC;EAAW,YAAY;EAAO,YAAY;EAAW,YAAY;EAAS,YAAY;EAAK,CAC7F;CAED,MAAM,qBAAqB,cAAc;AACvC,MAAI,OAAO,eAAe,WAAY,QAAO;AAC7C,SAAO;IACN,CAAC,WAAW,CAAC;CAEhB,MAAM,iBAAiB,eACd;EACL,OAAO,oBAAoB;EAC3B,OAAO;GACL,GAAG,oBAAoB;GACvB,GAAG,oBAAoB;GACxB;EACD,YAAY,EACV,QAAQ,UAAU,QACnB;EACD,UAAU,oBAAoB;EAC/B,GACD,CAAC,oBAAoB,OAAO,CAC7B;CAED,MAAM,iBAAiB,cAAc;EACnC,MAAM,mBAAmB;GACvB,YAAY;GACZ,OAAO;GACP;GACA,GAAG;GACJ;AAED,MAAI,eAAe,SAAS,CAC1B,QACE,oBAACA,QAAY;GACX,GAAI;GACJ,SAAS,UAAU;IAGjB,MAAM,uBAAuB;AAC3B,SAAI,6BAA8B,QAAO;KAEzC,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,cAAc;AAChD,YAAO;QACL;AAGJ,WAAO,aAAa,UAAiB;KACnC,GAFkB,WAAY,SAAiB,OAAO,cAAc;KAGpE,KAAK,UAAU;MACZ,SAAiB;MACjB,MAAc;MACf;MACA;MACD,CAAC;KACH,CAAC;;IAEJ;AAIN,SACE,oBAACA,QAAY;GAAQ,GAAI;GAAkB,KAAK,UAAU,CAAC,SAAS,mBAAmB,CAAC;GACrF;IACmB;IAEvB;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,kBAAkB,cAAc;AACpC,MAAI,eAAgB,QAAO;AAC3B,MAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,YAAa,QAAO;AAC5D,SAAO,kBAAkB,YAAY;IACpC;EAAC;EAAgB;EAAmB;EAAU;EAAY,CAAC;CAE9D,MAAM,QAAQ,cAEV,oBAACA,QAAY;EACX,OAAO,gBAAgB;EACvB,WAAW,mBAAmB;EAC9B,kBAAgB;EAChB,MAAM,gBAAgB;EACtB,YAAY;EACZ,OAAO,eAAe;EACtB,GAAI;YAEJ,qBAACA,QAAY;GACX,WAAW,mBAAmB;GAC9B,OAAO,eAAe;GACtB,GAAI;cAEH,SACC,oBAACA,QAAY;IAAM,WAAW,mBAAmB;IAAO,OAAO,eAAe;cAC3E;KACiB,EAEtB,oBAAC;IAAI,WAAW,mBAAmB;IAAU,OAAO,eAAe;cACjE,oBAACC;KAAuB;KAAqB;KAAoB;MAAS;KACtE;IACY;GACG,EAE3B;EACE;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB,gBAAgB;EAChB;EACA;EACA;EACA;EACA;EACD,CACF;AAED,KAAI,SAAS,QAAQ,CAAC,OACpB,QAAO;CAGT,MAAM,0BAA0B,mBAAmB;AAEnD,QACE,qBAACD,QAAY;EACE;EACH;EACV,MAAM;EACN,cAAc;aAEb,gBACA,0BACC,oBAACA,QAAY;GAAO,WAAW;GAAyB,GAAI;aACzD;IACkB,GACnB;GACa;EAGxB;AAED,kBAAkB,cAAc"}
@@ -60,6 +60,7 @@ interface TooltipProps {
60
60
  disabled?: boolean;
61
61
  /**
62
62
  * An Ant Design compatible escape hatch for portal container.
63
+ * @deprecated Use `popupContainer` instead.
63
64
  */
64
65
  getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
65
66
  hotkey?: string;
@@ -91,6 +92,11 @@ interface TooltipProps {
91
92
  * Tooltip placement. Supports Floating UI placements and Ant Design legacy placements.
92
93
  */
93
94
  placement?: TooltipPlacement;
95
+ /**
96
+ * Direct HTMLElement to use as the portal container.
97
+ * Takes precedence over `getPopupContainer`.
98
+ */
99
+ popupContainer?: HTMLElement;
94
100
  /**
95
101
  * Base UI Popup 组件的 props
96
102
  */
@@ -162,6 +168,7 @@ interface TooltipGroupProps {
162
168
  mouseLeaveDelay?: number;
163
169
  openDelay?: number;
164
170
  placement?: TooltipPlacement;
171
+ popupContainer?: TooltipProps['popupContainer'];
165
172
  popupProps?: TooltipPopupComponentProps;
166
173
  portalProps?: TooltipPortalProps$1;
167
174
  positionerProps?: TooltipPositionerProps$1;
@@ -6,7 +6,7 @@ import { useContext, useMemo } from "react";
6
6
  //#region src/Tooltip/useMergedTooltipProps.ts
7
7
  const useMergedTooltipProps = (props) => {
8
8
  const sharedProps = useContext(TooltipGroupPropsContext);
9
- const { arrow, className, classNames, closeDelay, disabled, getPopupContainer, hotkey, hotkeyProps, mouseEnterDelay, mouseLeaveDelay, onOpenChange, openDelay, placement, styles: styleProps, title, zIndex, positionerProps, triggerProps, popupProps } = props;
9
+ const { arrow, className, classNames, closeDelay, disabled, getPopupContainer, hotkey, hotkeyProps, mouseEnterDelay, mouseLeaveDelay, onOpenChange, openDelay, placement, popupContainer, styles: styleProps, title, zIndex, positionerProps, triggerProps, popupProps } = props;
10
10
  const mergedClassName = useMemo(() => {
11
11
  if (!sharedProps?.className && !className) return void 0;
12
12
  return [sharedProps?.className, className].filter(Boolean).join(" ");
@@ -55,6 +55,7 @@ const useMergedTooltipProps = (props) => {
55
55
  disabled: disabled ?? sharedProps?.disabled,
56
56
  getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer,
57
57
  hotkey: hotkey ?? sharedProps?.hotkey,
58
+ popupContainer: popupContainer ?? sharedProps?.popupContainer,
58
59
  hotkeyProps: mergedHotkeyProps,
59
60
  mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay,
60
61
  mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay,
@@ -82,6 +83,7 @@ const useMergedTooltipProps = (props) => {
82
83
  mouseLeaveDelay,
83
84
  openDelay,
84
85
  placement,
86
+ popupContainer,
85
87
  popupProps,
86
88
  positionerProps,
87
89
  sharedProps?.arrow,
@@ -94,6 +96,7 @@ const useMergedTooltipProps = (props) => {
94
96
  sharedProps?.onOpenChange,
95
97
  sharedProps?.openDelay,
96
98
  sharedProps?.placement,
99
+ sharedProps?.popupContainer,
97
100
  sharedProps?.popupProps,
98
101
  sharedProps?.positionerProps,
99
102
  sharedProps?.triggerProps,
@@ -1 +1 @@
1
- {"version":3,"file":"useMergedTooltipProps.mjs","names":[],"sources":["../../src/Tooltip/useMergedTooltipProps.ts"],"sourcesContent":["'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { type TooltipGroupItem, TooltipGroupPropsContext } from './groupContext';\nimport type { TooltipProps } from './type';\n\nexport const useMergedTooltipProps = (props: Partial<TooltipProps>): TooltipGroupItem => {\n const sharedProps = useContext(TooltipGroupPropsContext);\n\n const {\n arrow,\n className,\n classNames,\n closeDelay,\n disabled,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n openDelay,\n placement,\n styles: styleProps,\n title,\n zIndex,\n positionerProps,\n triggerProps,\n popupProps,\n } = props;\n\n const mergedClassName = useMemo(() => {\n if (!sharedProps?.className && !className) return undefined;\n return [sharedProps?.className, className].filter(Boolean).join(' ');\n }, [className, sharedProps?.className]);\n\n const mergedClassNames = useMemo(() => {\n if (!sharedProps?.classNames && !classNames) return undefined;\n return { ...sharedProps?.classNames, ...classNames };\n }, [classNames, sharedProps?.classNames]);\n\n const resolvedSharedStyles = useMemo(() => {\n if (typeof sharedProps?.styles === 'function') return undefined;\n return sharedProps?.styles;\n }, [sharedProps?.styles]);\n\n const resolvedLocalStyles = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const mergedStyles = useMemo(() => {\n if (!resolvedSharedStyles && !resolvedLocalStyles) return undefined;\n return { ...resolvedSharedStyles, ...resolvedLocalStyles };\n }, [resolvedSharedStyles, resolvedLocalStyles]);\n\n const mergedHotkeyProps = useMemo(() => {\n if (!sharedProps?.hotkeyProps && !hotkeyProps) return undefined;\n return { ...sharedProps?.hotkeyProps, ...hotkeyProps };\n }, [hotkeyProps, sharedProps?.hotkeyProps]);\n\n const mergedOnOpenChange = useMemo(() => {\n if (!sharedProps?.onOpenChange && !onOpenChange) return undefined;\n return (open: boolean) => {\n sharedProps?.onOpenChange?.(open);\n onOpenChange?.(open);\n };\n }, [onOpenChange, sharedProps?.onOpenChange]);\n\n const item: TooltipGroupItem = useMemo(\n () => ({\n arrow: arrow ?? sharedProps?.arrow ?? false,\n className: mergedClassName,\n classNames: mergedClassNames,\n closeDelay: closeDelay ?? sharedProps?.closeDelay,\n disabled: disabled ?? sharedProps?.disabled,\n getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer,\n hotkey: hotkey ?? sharedProps?.hotkey,\n hotkeyProps: mergedHotkeyProps,\n mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay,\n onOpenChange: mergedOnOpenChange,\n openDelay: openDelay ?? sharedProps?.openDelay,\n placement: placement ?? sharedProps?.placement ?? 'top',\n popupProps: popupProps ?? sharedProps?.popupProps,\n positionerProps: positionerProps ?? sharedProps?.positionerProps,\n styles: mergedStyles,\n title,\n triggerProps: triggerProps ?? sharedProps?.triggerProps,\n zIndex: zIndex ?? sharedProps?.zIndex,\n }),\n [\n arrow,\n closeDelay,\n disabled,\n getPopupContainer,\n hotkey,\n mergedClassName,\n mergedClassNames,\n mergedHotkeyProps,\n mergedOnOpenChange,\n mergedStyles,\n mouseEnterDelay,\n mouseLeaveDelay,\n openDelay,\n placement,\n popupProps,\n positionerProps,\n sharedProps?.arrow,\n sharedProps?.closeDelay,\n sharedProps?.disabled,\n sharedProps?.getPopupContainer,\n sharedProps?.hotkey,\n sharedProps?.mouseEnterDelay,\n sharedProps?.mouseLeaveDelay,\n sharedProps?.onOpenChange,\n sharedProps?.openDelay,\n sharedProps?.placement,\n sharedProps?.popupProps,\n sharedProps?.positionerProps,\n sharedProps?.triggerProps,\n sharedProps?.zIndex,\n title,\n triggerProps,\n zIndex,\n ],\n );\n\n return item;\n};\n"],"mappings":";;;;;;AAOA,MAAa,yBAAyB,UAAmD;CACvF,MAAM,cAAc,WAAW,yBAAyB;CAExD,MAAM,EACJ,OACA,WACA,YACA,YACA,UACA,mBACA,QACA,aACA,iBACA,iBACA,cACA,WACA,WACA,QAAQ,YACR,OACA,QACA,iBACA,cACA,eACE;CAEJ,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,aAAa,aAAa,CAAC,UAAW,QAAO;AAClD,SAAO,CAAC,aAAa,WAAW,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;IACnE,CAAC,WAAW,aAAa,UAAU,CAAC;CAEvC,MAAM,mBAAmB,cAAc;AACrC,MAAI,CAAC,aAAa,cAAc,CAAC,WAAY,QAAO;AACpD,SAAO;GAAE,GAAG,aAAa;GAAY,GAAG;GAAY;IACnD,CAAC,YAAY,aAAa,WAAW,CAAC;CAEzC,MAAM,uBAAuB,cAAc;AACzC,MAAI,OAAO,aAAa,WAAW,WAAY,QAAO;AACtD,SAAO,aAAa;IACnB,CAAC,aAAa,OAAO,CAAC;CAEzB,MAAM,sBAAsB,cAAc;AACxC,MAAI,OAAO,eAAe,WAAY,QAAO;AAC7C,SAAO;IACN,CAAC,WAAW,CAAC;CAEhB,MAAM,eAAe,cAAc;AACjC,MAAI,CAAC,wBAAwB,CAAC,oBAAqB,QAAO;AAC1D,SAAO;GAAE,GAAG;GAAsB,GAAG;GAAqB;IACzD,CAAC,sBAAsB,oBAAoB,CAAC;CAE/C,MAAM,oBAAoB,cAAc;AACtC,MAAI,CAAC,aAAa,eAAe,CAAC,YAAa,QAAO;AACtD,SAAO;GAAE,GAAG,aAAa;GAAa,GAAG;GAAa;IACrD,CAAC,aAAa,aAAa,YAAY,CAAC;CAE3C,MAAM,qBAAqB,cAAc;AACvC,MAAI,CAAC,aAAa,gBAAgB,CAAC,aAAc,QAAO;AACxD,UAAQ,SAAkB;AACxB,gBAAa,eAAe,KAAK;AACjC,kBAAe,KAAK;;IAErB,CAAC,cAAc,aAAa,aAAa,CAAC;AA6D7C,QA3D+B,eACtB;EACL,OAAO,SAAS,aAAa,SAAS;EACtC,WAAW;EACX,YAAY;EACZ,YAAY,cAAc,aAAa;EACvC,UAAU,YAAY,aAAa;EACnC,mBAAmB,qBAAqB,aAAa;EACrD,QAAQ,UAAU,aAAa;EAC/B,aAAa;EACb,iBAAiB,mBAAmB,aAAa;EACjD,iBAAiB,mBAAmB,aAAa;EACjD,cAAc;EACd,WAAW,aAAa,aAAa;EACrC,WAAW,aAAa,aAAa,aAAa;EAClD,YAAY,cAAc,aAAa;EACvC,iBAAiB,mBAAmB,aAAa;EACjD,QAAQ;EACR;EACA,cAAc,gBAAgB,aAAa;EAC3C,QAAQ,UAAU,aAAa;EAChC,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb;EACA;EACA;EACD,CACF"}
1
+ {"version":3,"file":"useMergedTooltipProps.mjs","names":[],"sources":["../../src/Tooltip/useMergedTooltipProps.ts"],"sourcesContent":["'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { type TooltipGroupItem, TooltipGroupPropsContext } from './groupContext';\nimport type { TooltipProps } from './type';\n\nexport const useMergedTooltipProps = (props: Partial<TooltipProps>): TooltipGroupItem => {\n const sharedProps = useContext(TooltipGroupPropsContext);\n\n const {\n arrow,\n className,\n classNames,\n closeDelay,\n disabled,\n getPopupContainer,\n hotkey,\n hotkeyProps,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n openDelay,\n placement,\n popupContainer,\n styles: styleProps,\n title,\n zIndex,\n positionerProps,\n triggerProps,\n popupProps,\n } = props;\n\n const mergedClassName = useMemo(() => {\n if (!sharedProps?.className && !className) return undefined;\n return [sharedProps?.className, className].filter(Boolean).join(' ');\n }, [className, sharedProps?.className]);\n\n const mergedClassNames = useMemo(() => {\n if (!sharedProps?.classNames && !classNames) return undefined;\n return { ...sharedProps?.classNames, ...classNames };\n }, [classNames, sharedProps?.classNames]);\n\n const resolvedSharedStyles = useMemo(() => {\n if (typeof sharedProps?.styles === 'function') return undefined;\n return sharedProps?.styles;\n }, [sharedProps?.styles]);\n\n const resolvedLocalStyles = useMemo(() => {\n if (typeof styleProps === 'function') return undefined;\n return styleProps;\n }, [styleProps]);\n\n const mergedStyles = useMemo(() => {\n if (!resolvedSharedStyles && !resolvedLocalStyles) return undefined;\n return { ...resolvedSharedStyles, ...resolvedLocalStyles };\n }, [resolvedSharedStyles, resolvedLocalStyles]);\n\n const mergedHotkeyProps = useMemo(() => {\n if (!sharedProps?.hotkeyProps && !hotkeyProps) return undefined;\n return { ...sharedProps?.hotkeyProps, ...hotkeyProps };\n }, [hotkeyProps, sharedProps?.hotkeyProps]);\n\n const mergedOnOpenChange = useMemo(() => {\n if (!sharedProps?.onOpenChange && !onOpenChange) return undefined;\n return (open: boolean) => {\n sharedProps?.onOpenChange?.(open);\n onOpenChange?.(open);\n };\n }, [onOpenChange, sharedProps?.onOpenChange]);\n\n const item: TooltipGroupItem = useMemo(\n () => ({\n arrow: arrow ?? sharedProps?.arrow ?? false,\n className: mergedClassName,\n classNames: mergedClassNames,\n closeDelay: closeDelay ?? sharedProps?.closeDelay,\n disabled: disabled ?? sharedProps?.disabled,\n getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer,\n hotkey: hotkey ?? sharedProps?.hotkey,\n popupContainer: popupContainer ?? sharedProps?.popupContainer,\n hotkeyProps: mergedHotkeyProps,\n mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay,\n onOpenChange: mergedOnOpenChange,\n openDelay: openDelay ?? sharedProps?.openDelay,\n placement: placement ?? sharedProps?.placement ?? 'top',\n popupProps: popupProps ?? sharedProps?.popupProps,\n positionerProps: positionerProps ?? sharedProps?.positionerProps,\n styles: mergedStyles,\n title,\n triggerProps: triggerProps ?? sharedProps?.triggerProps,\n zIndex: zIndex ?? sharedProps?.zIndex,\n }),\n [\n arrow,\n closeDelay,\n disabled,\n getPopupContainer,\n hotkey,\n mergedClassName,\n mergedClassNames,\n mergedHotkeyProps,\n mergedOnOpenChange,\n mergedStyles,\n mouseEnterDelay,\n mouseLeaveDelay,\n openDelay,\n placement,\n popupContainer,\n popupProps,\n positionerProps,\n sharedProps?.arrow,\n sharedProps?.closeDelay,\n sharedProps?.disabled,\n sharedProps?.getPopupContainer,\n sharedProps?.hotkey,\n sharedProps?.mouseEnterDelay,\n sharedProps?.mouseLeaveDelay,\n sharedProps?.onOpenChange,\n sharedProps?.openDelay,\n sharedProps?.placement,\n sharedProps?.popupContainer,\n sharedProps?.popupProps,\n sharedProps?.positionerProps,\n sharedProps?.triggerProps,\n sharedProps?.zIndex,\n title,\n triggerProps,\n zIndex,\n ],\n );\n\n return item;\n};\n"],"mappings":";;;;;;AAOA,MAAa,yBAAyB,UAAmD;CACvF,MAAM,cAAc,WAAW,yBAAyB;CAExD,MAAM,EACJ,OACA,WACA,YACA,YACA,UACA,mBACA,QACA,aACA,iBACA,iBACA,cACA,WACA,WACA,gBACA,QAAQ,YACR,OACA,QACA,iBACA,cACA,eACE;CAEJ,MAAM,kBAAkB,cAAc;AACpC,MAAI,CAAC,aAAa,aAAa,CAAC,UAAW,QAAO;AAClD,SAAO,CAAC,aAAa,WAAW,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;IACnE,CAAC,WAAW,aAAa,UAAU,CAAC;CAEvC,MAAM,mBAAmB,cAAc;AACrC,MAAI,CAAC,aAAa,cAAc,CAAC,WAAY,QAAO;AACpD,SAAO;GAAE,GAAG,aAAa;GAAY,GAAG;GAAY;IACnD,CAAC,YAAY,aAAa,WAAW,CAAC;CAEzC,MAAM,uBAAuB,cAAc;AACzC,MAAI,OAAO,aAAa,WAAW,WAAY,QAAO;AACtD,SAAO,aAAa;IACnB,CAAC,aAAa,OAAO,CAAC;CAEzB,MAAM,sBAAsB,cAAc;AACxC,MAAI,OAAO,eAAe,WAAY,QAAO;AAC7C,SAAO;IACN,CAAC,WAAW,CAAC;CAEhB,MAAM,eAAe,cAAc;AACjC,MAAI,CAAC,wBAAwB,CAAC,oBAAqB,QAAO;AAC1D,SAAO;GAAE,GAAG;GAAsB,GAAG;GAAqB;IACzD,CAAC,sBAAsB,oBAAoB,CAAC;CAE/C,MAAM,oBAAoB,cAAc;AACtC,MAAI,CAAC,aAAa,eAAe,CAAC,YAAa,QAAO;AACtD,SAAO;GAAE,GAAG,aAAa;GAAa,GAAG;GAAa;IACrD,CAAC,aAAa,aAAa,YAAY,CAAC;CAE3C,MAAM,qBAAqB,cAAc;AACvC,MAAI,CAAC,aAAa,gBAAgB,CAAC,aAAc,QAAO;AACxD,UAAQ,SAAkB;AACxB,gBAAa,eAAe,KAAK;AACjC,kBAAe,KAAK;;IAErB,CAAC,cAAc,aAAa,aAAa,CAAC;AAgE7C,QA9D+B,eACtB;EACL,OAAO,SAAS,aAAa,SAAS;EACtC,WAAW;EACX,YAAY;EACZ,YAAY,cAAc,aAAa;EACvC,UAAU,YAAY,aAAa;EACnC,mBAAmB,qBAAqB,aAAa;EACrD,QAAQ,UAAU,aAAa;EAC/B,gBAAgB,kBAAkB,aAAa;EAC/C,aAAa;EACb,iBAAiB,mBAAmB,aAAa;EACjD,iBAAiB,mBAAmB,aAAa;EACjD,cAAc;EACd,WAAW,aAAa,aAAa;EACrC,WAAW,aAAa,aAAa,aAAa;EAClD,YAAY,cAAc,aAAa;EACvC,iBAAiB,mBAAmB,aAAa;EACjD,QAAQ;EACR;EACA,cAAc,gBAAgB,aAAa;EAC3C,QAAQ,UAAU,aAAa;EAChC,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb;EACA;EACA;EACD,CACF"}
@@ -1,7 +1,7 @@
1
1
  import { FlexboxProps } from "../Flex/type.mjs";
2
2
  import "../Flex/index.mjs";
3
3
  import { VideoProps as VideoProps$1 } from "../types/index.mjs";
4
- import * as react38 from "react";
4
+ import * as react78 from "react";
5
5
  import { CSSProperties, Ref } from "react";
6
6
 
7
7
  //#region src/Video/index.d.ts
@@ -39,7 +39,7 @@ interface VideoProps extends VideoProps$1, Pick<FlexboxProps, 'width' | 'height'
39
39
  };
40
40
  variant?: 'borderless' | 'filled' | 'outlined';
41
41
  }
42
- declare const Video: react38.NamedExoticComponent<VideoProps>;
42
+ declare const Video: react78.NamedExoticComponent<VideoProps>;
43
43
  //#endregion
44
44
  export { Video, VideoProps };
45
45
  //# sourceMappingURL=index.d.mts.map
@@ -1,8 +1,8 @@
1
1
  import { AuroraBackgroundProps } from "./type.mjs";
2
- import * as react128 from "react";
2
+ import * as react136 from "react";
3
3
 
4
4
  //#region src/awesome/AuroraBackground/AuroraBackground.d.ts
5
- declare const AuroraBackground: react128.NamedExoticComponent<AuroraBackgroundProps>;
5
+ declare const AuroraBackground: react136.NamedExoticComponent<AuroraBackgroundProps>;
6
6
  //#endregion
7
7
  export { AuroraBackground };
8
8
  //# sourceMappingURL=AuroraBackground.d.mts.map