@lobehub/ui 4.4.2 → 4.4.4
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/es/Accordion/Accordion.d.mts +2 -2
- package/es/Accordion/AccordionItem.d.mts +2 -2
- package/es/ActionIcon/ActionIcon.d.mts +2 -2
- package/es/Alert/Alert.d.mts +2 -2
- package/es/AutoComplete/Select.d.mts +2 -2
- package/es/Avatar/AvatarGroup/index.d.mts +2 -2
- package/es/Avatar/AvatarGroup/style.mjs +1 -5
- package/es/Avatar/AvatarGroup/style.mjs.map +1 -1
- package/es/Burger/Burger.d.mts +2 -2
- package/es/CodeEditor/CodeEditor.d.mts +2 -2
- package/es/Collapse/Collapse.d.mts +2 -2
- package/es/ConfigProvider/index.d.mts +2 -2
- package/es/CopyButton/CopyButton.d.mts +2 -2
- package/es/DatePicker/DatePicker.d.mts +2 -2
- package/es/DraggablePanel/components/DraggablePanelBody.d.mts +2 -2
- package/es/DraggablePanel/components/DraggablePanelContainer.d.mts +2 -2
- package/es/DraggablePanel/components/DraggablePanelFooter.d.mts +2 -2
- package/es/DraggablePanel/components/DraggablePanelHeader.d.mts +2 -2
- package/es/DraggableSideNav/DraggableSideNav.d.mts +2 -2
- package/es/Drawer/Drawer.d.mts +2 -2
- package/es/Dropdown/Dropdown.d.mts +2 -2
- package/es/EditableText/EditableText.d.mts +2 -2
- package/es/EmojiPicker/EmojiPicker.d.mts +2 -2
- package/es/Flex/FlexBasic.d.mts +2 -2
- package/es/FontLoader/index.d.mts +2 -2
- package/es/Footer/Footer.d.mts +2 -2
- package/es/Form/components/FormGroup.d.mts +2 -2
- package/es/Form/components/FormItem.d.mts +2 -2
- package/es/Form/components/FormSubmitFooter.d.mts +2 -2
- package/es/FormModal/FormModal.d.mts +2 -2
- package/es/GuideCard/GuideCard.d.mts +2 -2
- package/es/Header/Header.d.mts +2 -2
- package/es/Highlighter/Highlighter.d.mts +2 -2
- package/es/Highlighter/SyntaxHighlighter/index.d.mts +2 -2
- package/es/Hotkey/Hotkey.d.mts +2 -2
- package/es/HotkeyInput/HotkeyInput.d.mts +2 -2
- package/es/Icon/Icon.d.mts +2 -2
- package/es/Icon/components/IconProvider.d.mts +3 -3
- package/es/Image/PreviewGroup.d.mts +2 -2
- package/es/ImageSelect/ImageSelect.d.mts +2 -2
- package/es/Input/Input.d.mts +2 -2
- package/es/Input/InputNumber.d.mts +2 -2
- package/es/Input/InputOPT.d.mts +2 -2
- package/es/Input/InputPassword.d.mts +2 -2
- package/es/Input/TextArea.d.mts +2 -2
- package/es/Layout/components/LayoutFooter.d.mts +2 -2
- package/es/Layout/components/LayoutHeader.d.mts +2 -2
- package/es/Layout/components/LayoutMain.d.mts +2 -2
- package/es/Layout/components/LayoutSidebar.d.mts +2 -2
- package/es/Layout/components/LayoutSidebarInner.d.mts +2 -2
- package/es/Layout/components/LayoutToc.d.mts +2 -2
- package/es/List/ListItem/index.d.mts +2 -2
- package/es/Markdown/Markdown.d.mts +2 -2
- package/es/Markdown/Typography.d.mts +2 -2
- package/es/Markdown/components/SearchResultCards/index.d.mts +2 -2
- package/es/MaskShadow/MaskShadow.d.mts +2 -2
- package/es/Menu/Menu.d.mts +2 -2
- package/es/Mermaid/Mermaid.d.mts +2 -2
- package/es/Mermaid/SyntaxMermaid/index.d.mts +2 -2
- package/es/Modal/Modal.d.mts +2 -2
- package/es/MotionProvider/index.d.mts +2 -2
- package/es/SearchBar/SearchBar.d.mts +2 -2
- package/es/Segmented/Segmented.d.mts +2 -2
- package/es/Select/Select.d.mts +2 -2
- package/es/SideNav/SideNav.d.mts +2 -2
- package/es/SliderWithInput/SliderWithInput.d.mts +2 -2
- package/es/SortableList/components/DragHandle.d.mts +2 -2
- package/es/SortableList/components/SortableItem.d.mts +2 -2
- package/es/ThemeProvider/ThemeProvider.d.mts +2 -2
- package/es/Toc/Toc.d.mts +2 -2
- package/es/Tooltip/Tooltip.mjs +5 -237
- package/es/Tooltip/Tooltip.mjs.map +1 -1
- package/es/Tooltip/TooltipGroup.mjs +2 -2
- package/es/Tooltip/TooltipInGroup.mjs +65 -0
- package/es/Tooltip/TooltipInGroup.mjs.map +1 -0
- package/es/Tooltip/TooltipStandalone.mjs +89 -0
- package/es/Tooltip/TooltipStandalone.mjs.map +1 -0
- package/es/Tooltip/style.mjs +3 -2
- package/es/Tooltip/style.mjs.map +1 -1
- package/es/Tooltip/useMergedTooltipProps.mjs +92 -0
- package/es/Tooltip/useMergedTooltipProps.mjs.map +1 -0
- package/es/Tooltip/useTooltipFloating.mjs +55 -0
- package/es/Tooltip/useTooltipFloating.mjs.map +1 -0
- package/es/Tooltip/useTooltipReference.mjs +55 -0
- package/es/Tooltip/useTooltipReference.mjs.map +1 -0
- package/es/Tooltip/useTooltipTrigger.mjs +18 -0
- package/es/Tooltip/useTooltipTrigger.mjs.map +1 -0
- package/es/Video/index.d.mts +2 -2
- package/es/awesome/AuroraBackground/AuroraBackground.d.mts +2 -2
- package/es/awesome/BottomGradientButton/BottomGradientButton.d.mts +2 -2
- package/es/awesome/Features/Features.d.mts +2 -2
- package/es/awesome/Giscus/Giscus.d.mts +2 -2
- package/es/awesome/GradientButton/GradientButton.d.mts +2 -2
- package/es/awesome/GridBackground/GridBackground.d.mts +2 -2
- package/es/awesome/GridBackground/GridShowcase.d.mts +2 -2
- package/es/awesome/Hero/Hero.d.mts +2 -2
- package/es/awesome/Spline/Spine.d.mts +2 -2
- package/es/awesome/Spotlight/Spotlight.d.mts +2 -2
- package/es/awesome/SpotlightCard/SpotlightCard.d.mts +2 -2
- package/es/awesome/TypewriterEffect/TypewriterEffect.d.mts +2 -2
- package/es/brand/LobeChat/index.d.mts +2 -2
- package/es/brand/LobeHub/index.d.mts +2 -2
- package/es/brand/LogoThree/LogoSpline.d.mts +2 -2
- package/es/brand/LogoThree/index.d.mts +2 -2
- package/es/chat/BackBottom/BackBottom.d.mts +2 -2
- package/es/chat/ChatInputArea/components/ChatInputAreaInner.d.mts +2 -2
- package/es/chat/ChatItem/ChatItem.d.mts +2 -2
- package/es/chat/ChatList/ChatList.d.mts +2 -2
- package/es/chat/EditableMessage/EditableMessage.d.mts +2 -2
- package/es/chat/EditableMessageList/EditableMessageList.d.mts +2 -2
- package/es/chat/MessageInput/MessageInput.d.mts +2 -2
- package/es/chat/MessageModal/MessageModal.d.mts +2 -2
- package/es/color/ColorScales/index.d.mts +2 -2
- package/es/color/CssVar/index.d.mts +2 -2
- package/es/i18n/context.d.mts +2 -2
- package/es/icons/lucideExtra/BotPromptIcon.d.mts +2 -2
- package/es/icons/lucideExtra/CreateBotIcon.d.mts +2 -2
- package/es/icons/lucideExtra/DiscordIcon.d.mts +2 -2
- package/es/icons/lucideExtra/GlobeOffIcon.d.mts +3 -3
- package/es/icons/lucideExtra/GroupBotIcon.d.mts +3 -3
- package/es/icons/lucideExtra/GroupBotSquareIcon.d.mts +3 -3
- package/es/icons/lucideExtra/LeftClickIcon.d.mts +2 -2
- package/es/icons/lucideExtra/LeftDoubleClickIcon.d.mts +3 -3
- package/es/icons/lucideExtra/McpIcon.d.mts +3 -3
- package/es/icons/lucideExtra/ProviderIcon.d.mts +3 -3
- package/es/icons/lucideExtra/RightClickIcon.d.mts +3 -3
- package/es/icons/lucideExtra/RightDoubleClickIcon.d.mts +3 -3
- package/es/icons/lucideExtra/ShapesUploadIcon.d.mts +3 -3
- package/es/icons/lucideExtra/TreeDownRightIcon.d.mts +3 -3
- package/es/icons/lucideExtra/TreeUpDownRightIcon.d.mts +3 -3
- package/es/mdx/Mdx/index.d.mts +2 -2
- package/es/mobile/ChatHeader/ChatHeaderTitle.d.mts +2 -2
- package/es/mobile/ChatInputArea/components/ChatSendButton.d.mts +2 -2
- package/es/mobile/TabBar/TabBar.d.mts +2 -2
- package/es/storybook/StoryBook/index.d.mts +2 -2
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LayoutTocProps } from "../type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react68 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Layout/components/LayoutToc.d.ts
|
|
5
|
-
declare const LayoutToc:
|
|
5
|
+
declare const LayoutToc: react68.NamedExoticComponent<LayoutTocProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { LayoutToc };
|
|
8
8
|
//# sourceMappingURL=LayoutToc.d.mts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ListItemProps } from "../type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react64 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/List/ListItem/index.d.ts
|
|
5
|
-
declare const ListItem:
|
|
5
|
+
declare const ListItem: react64.NamedExoticComponent<ListItemProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { ListItem };
|
|
8
8
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MarkdownProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react8 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Markdown/Markdown.d.ts
|
|
5
|
-
declare const Markdown:
|
|
5
|
+
declare const Markdown: react8.NamedExoticComponent<MarkdownProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Markdown };
|
|
8
8
|
//# sourceMappingURL=Markdown.d.mts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TypographyProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react7 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Markdown/Typography.d.ts
|
|
5
|
-
declare const Typography:
|
|
5
|
+
declare const Typography: react7.NamedExoticComponent<TypographyProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Typography };
|
|
8
8
|
//# sourceMappingURL=Typography.d.mts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FlexboxProps } from "../../../Flex/type.mjs";
|
|
2
2
|
import "../../../Flex/index.mjs";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react43 from "react";
|
|
4
4
|
import { Ref } from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/Markdown/components/SearchResultCards/index.d.ts
|
|
@@ -14,7 +14,7 @@ interface SearchResultCardsProps extends FlexboxProps {
|
|
|
14
14
|
dataSource: string[] | SearchResultItem[];
|
|
15
15
|
ref?: Ref<HTMLDivElement>;
|
|
16
16
|
}
|
|
17
|
-
declare const SearchResultCards:
|
|
17
|
+
declare const SearchResultCards: react43.NamedExoticComponent<SearchResultCardsProps>;
|
|
18
18
|
//#endregion
|
|
19
19
|
export { SearchResultCards, SearchResultCardsProps };
|
|
20
20
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MaskShadowProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react6 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/MaskShadow/MaskShadow.d.ts
|
|
5
|
-
declare const MaskShadow:
|
|
5
|
+
declare const MaskShadow: react6.NamedExoticComponent<MaskShadowProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { MaskShadow };
|
|
8
8
|
//# sourceMappingURL=MaskShadow.d.mts.map
|
package/es/Menu/Menu.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MenuProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react2 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Menu/Menu.d.ts
|
|
5
|
-
declare const Menu:
|
|
5
|
+
declare const Menu: react2.NamedExoticComponent<MenuProps<unknown>>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Menu };
|
|
8
8
|
//# sourceMappingURL=Menu.d.mts.map
|
package/es/Mermaid/Mermaid.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MermaidProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react52 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Mermaid/Mermaid.d.ts
|
|
5
|
-
declare const Mermaid:
|
|
5
|
+
declare const Mermaid: react52.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
|
|
2
|
+
import * as react53 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Mermaid/SyntaxMermaid/index.d.ts
|
|
5
|
-
declare const SyntaxMermaid:
|
|
5
|
+
declare const SyntaxMermaid: react53.NamedExoticComponent<SyntaxMermaidProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { SyntaxMermaid };
|
|
8
8
|
//# sourceMappingURL=index.d.mts.map
|
package/es/Modal/Modal.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ModalProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react25 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Modal/Modal.d.ts
|
|
5
|
-
declare const Modal:
|
|
5
|
+
declare const Modal: react25.NamedExoticComponent<ModalProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Modal };
|
|
8
8
|
//# sourceMappingURL=Modal.d.mts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react44 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:
|
|
9
|
+
declare const MotionProvider: react44.NamedExoticComponent<{
|
|
10
10
|
children: ReactNode;
|
|
11
11
|
motion: MotionComponentType;
|
|
12
12
|
}>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SearchBarProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react23 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/SearchBar/SearchBar.d.ts
|
|
5
|
-
declare const SearchBar:
|
|
5
|
+
declare const SearchBar: react23.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
|
|
2
|
+
import * as react24 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Segmented/Segmented.d.ts
|
|
5
|
-
declare const Segmented:
|
|
5
|
+
declare const Segmented: react24.NamedExoticComponent<SegmentedProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Segmented };
|
|
8
8
|
//# sourceMappingURL=Segmented.d.mts.map
|
package/es/Select/Select.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SelectProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react22 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Select/Select.d.ts
|
|
5
|
-
declare const Input:
|
|
5
|
+
declare const Input: react22.NamedExoticComponent<SelectProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Input };
|
|
8
8
|
//# sourceMappingURL=Select.d.mts.map
|
package/es/SideNav/SideNav.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SideNavProps } from "./type.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react21 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/SideNav/SideNav.d.ts
|
|
5
|
-
declare const SideNav:
|
|
5
|
+
declare const SideNav: react21.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
|
|
2
|
+
import * as react20 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/SliderWithInput/SliderWithInput.d.ts
|
|
5
|
-
declare const SliderWithInput:
|
|
5
|
+
declare const SliderWithInput: react20.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
|
|
3
|
+
import * as react73 from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/SortableList/components/DragHandle.d.ts
|
|
6
|
-
declare const DragHandle:
|
|
6
|
+
declare const DragHandle: react73.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
|
|
3
|
+
import * as react71 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:
|
|
12
|
+
declare const SortableItem: react71.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
|
|
2
|
+
import * as react15 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/ThemeProvider/ThemeProvider.d.ts
|
|
5
|
-
declare const ThemeProvider:
|
|
5
|
+
declare const ThemeProvider: react15.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
|
|
2
|
+
import * as react9 from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/Toc/Toc.d.ts
|
|
5
|
-
declare const Toc:
|
|
5
|
+
declare const Toc: react9.NamedExoticComponent<TocProps>;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { Toc };
|
|
8
8
|
//# sourceMappingURL=Toc.d.mts.map
|
package/es/Tooltip/Tooltip.mjs
CHANGED
|
@@ -1,244 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import { cloneElement, isValidElement, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
9
|
-
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
-
import { arrow, autoUpdate, flip, offset, shift, useDismiss, useFloating, useFocus, useHover, useInteractions, useRole } from "@floating-ui/react";
|
|
11
|
-
import { mergeRefs } from "react-merge-refs";
|
|
3
|
+
import { TooltipGroupApiContext } from "./groupContext.mjs";
|
|
4
|
+
import { TooltipInGroup } from "./TooltipInGroup.mjs";
|
|
5
|
+
import { TooltipStandalone } from "./TooltipStandalone.mjs";
|
|
6
|
+
import { useContext } from "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
12
8
|
|
|
13
9
|
//#region src/Tooltip/Tooltip.tsx
|
|
14
|
-
const TooltipInGroup = ({ ref, hotkey, className, arrow: arrow$1, title, hotkeyProps, children, placement, openDelay, closeDelay, mouseEnterDelay, mouseLeaveDelay, onOpenChange, disabled, classNames, styles: styleProps, zIndex, portalled, getPopupContainer }) => {
|
|
15
|
-
const group = useContext(TooltipGroupApiContext);
|
|
16
|
-
const sharedProps = useContext(TooltipGroupPropsContext);
|
|
17
|
-
const triggerElRef = useRef(null);
|
|
18
|
-
const mergedClassName = useMemo(() => {
|
|
19
|
-
if (!sharedProps?.className && !className) return void 0;
|
|
20
|
-
return [sharedProps?.className, className].filter(Boolean).join(" ");
|
|
21
|
-
}, [className, sharedProps?.className]);
|
|
22
|
-
const mergedClassNames = useMemo(() => {
|
|
23
|
-
if (!sharedProps?.classNames && !classNames) return void 0;
|
|
24
|
-
return {
|
|
25
|
-
...sharedProps?.classNames,
|
|
26
|
-
...classNames
|
|
27
|
-
};
|
|
28
|
-
}, [classNames, sharedProps?.classNames]);
|
|
29
|
-
const mergedStyles = useMemo(() => {
|
|
30
|
-
if (!sharedProps?.styles && !styleProps) return void 0;
|
|
31
|
-
return {
|
|
32
|
-
...sharedProps?.styles,
|
|
33
|
-
...styleProps
|
|
34
|
-
};
|
|
35
|
-
}, [sharedProps?.styles, styleProps]);
|
|
36
|
-
const mergedHotkeyProps = useMemo(() => {
|
|
37
|
-
if (!sharedProps?.hotkeyProps && !hotkeyProps) return void 0;
|
|
38
|
-
return {
|
|
39
|
-
...sharedProps?.hotkeyProps,
|
|
40
|
-
...hotkeyProps
|
|
41
|
-
};
|
|
42
|
-
}, [hotkeyProps, sharedProps?.hotkeyProps]);
|
|
43
|
-
const mergedOnOpenChange = useMemo(() => {
|
|
44
|
-
if (!sharedProps?.onOpenChange && !onOpenChange) return void 0;
|
|
45
|
-
return (open) => {
|
|
46
|
-
sharedProps?.onOpenChange?.(open);
|
|
47
|
-
onOpenChange?.(open);
|
|
48
|
-
};
|
|
49
|
-
}, [onOpenChange, sharedProps?.onOpenChange]);
|
|
50
|
-
const item = useMemo(() => ({
|
|
51
|
-
arrow: arrow$1 ?? sharedProps?.arrow ?? false,
|
|
52
|
-
className: mergedClassName,
|
|
53
|
-
classNames: mergedClassNames,
|
|
54
|
-
closeDelay: closeDelay ?? sharedProps?.closeDelay,
|
|
55
|
-
disabled: disabled ?? sharedProps?.disabled,
|
|
56
|
-
getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer,
|
|
57
|
-
hotkey: hotkey ?? sharedProps?.hotkey,
|
|
58
|
-
hotkeyProps: mergedHotkeyProps,
|
|
59
|
-
mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay,
|
|
60
|
-
mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay,
|
|
61
|
-
onOpenChange: mergedOnOpenChange,
|
|
62
|
-
openDelay: openDelay ?? sharedProps?.openDelay,
|
|
63
|
-
placement: placement ?? sharedProps?.placement ?? "top",
|
|
64
|
-
portalled: portalled ?? sharedProps?.portalled,
|
|
65
|
-
styles: mergedStyles,
|
|
66
|
-
title,
|
|
67
|
-
zIndex: zIndex ?? sharedProps?.zIndex
|
|
68
|
-
}), [
|
|
69
|
-
arrow$1,
|
|
70
|
-
closeDelay,
|
|
71
|
-
disabled,
|
|
72
|
-
getPopupContainer,
|
|
73
|
-
hotkey,
|
|
74
|
-
mergedClassName,
|
|
75
|
-
mergedClassNames,
|
|
76
|
-
mergedHotkeyProps,
|
|
77
|
-
mergedOnOpenChange,
|
|
78
|
-
mergedStyles,
|
|
79
|
-
mouseEnterDelay,
|
|
80
|
-
mouseLeaveDelay,
|
|
81
|
-
openDelay,
|
|
82
|
-
placement,
|
|
83
|
-
portalled,
|
|
84
|
-
sharedProps?.arrow,
|
|
85
|
-
sharedProps?.closeDelay,
|
|
86
|
-
sharedProps?.disabled,
|
|
87
|
-
sharedProps?.getPopupContainer,
|
|
88
|
-
sharedProps?.hotkey,
|
|
89
|
-
sharedProps?.mouseEnterDelay,
|
|
90
|
-
sharedProps?.mouseLeaveDelay,
|
|
91
|
-
sharedProps?.openDelay,
|
|
92
|
-
sharedProps?.placement,
|
|
93
|
-
sharedProps?.portalled,
|
|
94
|
-
sharedProps?.zIndex,
|
|
95
|
-
title,
|
|
96
|
-
zIndex
|
|
97
|
-
]);
|
|
98
|
-
const trigger = useMemo(() => {
|
|
99
|
-
if (!isValidElement(children)) return /* @__PURE__ */ jsx("span", { children });
|
|
100
|
-
if (typeof children.type === "string" && Boolean(children.props?.disabled)) return /* @__PURE__ */ jsx("span", {
|
|
101
|
-
style: { display: "inline-flex" },
|
|
102
|
-
children
|
|
103
|
-
});
|
|
104
|
-
return children;
|
|
105
|
-
}, [children]);
|
|
106
|
-
const referenceNode = useMemo(() => {
|
|
107
|
-
if (!isValidElement(trigger)) return trigger;
|
|
108
|
-
const originalRef = trigger.props?.ref;
|
|
109
|
-
const triggerProps = trigger.props || {};
|
|
110
|
-
const setTriggerEl = (node) => {
|
|
111
|
-
triggerElRef.current = node instanceof HTMLElement ? node : null;
|
|
112
|
-
};
|
|
113
|
-
return cloneElement(trigger, {
|
|
114
|
-
...triggerProps,
|
|
115
|
-
onBlur: composeEventHandlers(triggerProps.onBlur, (e) => {
|
|
116
|
-
group?.closeFromTrigger(e.currentTarget, item);
|
|
117
|
-
}),
|
|
118
|
-
onFocus: composeEventHandlers(triggerProps.onFocus, (e) => {
|
|
119
|
-
group?.openFromTrigger(e.currentTarget, item);
|
|
120
|
-
}),
|
|
121
|
-
onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (e) => {
|
|
122
|
-
if (e?.key === "Escape") group?.closeImmediately();
|
|
123
|
-
}),
|
|
124
|
-
onPointerEnter: composeEventHandlers(triggerProps.onPointerEnter, (e) => {
|
|
125
|
-
group?.openFromTrigger(e.currentTarget, item);
|
|
126
|
-
}),
|
|
127
|
-
onPointerLeave: composeEventHandlers(triggerProps.onPointerLeave, (e) => {
|
|
128
|
-
group?.closeFromTrigger(e.currentTarget, item);
|
|
129
|
-
}),
|
|
130
|
-
ref: mergeRefs([
|
|
131
|
-
originalRef,
|
|
132
|
-
setTriggerEl,
|
|
133
|
-
ref
|
|
134
|
-
])
|
|
135
|
-
});
|
|
136
|
-
}, [
|
|
137
|
-
group,
|
|
138
|
-
item,
|
|
139
|
-
ref,
|
|
140
|
-
trigger
|
|
141
|
-
]);
|
|
142
|
-
useEffect(() => {
|
|
143
|
-
return () => {
|
|
144
|
-
if (!group) return;
|
|
145
|
-
const el = triggerElRef.current;
|
|
146
|
-
if (el && group.isActiveTrigger(el)) group.closeImmediately();
|
|
147
|
-
};
|
|
148
|
-
}, [group]);
|
|
149
|
-
return referenceNode;
|
|
150
|
-
};
|
|
151
|
-
TooltipInGroup.displayName = "TooltipInGroup";
|
|
152
|
-
const TooltipStandalone = ({ ref, hotkey, className, arrow: arrow$1 = false, title, hotkeyProps, children, placement = "top", openDelay, closeDelay, mouseEnterDelay, mouseLeaveDelay, open, defaultOpen, onOpenChange, disabled, classNames, styles: styleProps, zIndex, portalled = true, getPopupContainer }) => {
|
|
153
|
-
const arrowRef = useRef(null);
|
|
154
|
-
const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));
|
|
155
|
-
const mergedOpen = open ?? uncontrolledOpen;
|
|
156
|
-
const setOpen = (next) => {
|
|
157
|
-
if (open === void 0) setUncontrolledOpen(next);
|
|
158
|
-
onOpenChange?.(next);
|
|
159
|
-
};
|
|
160
|
-
const floatingPlacement = useMemo(() => antdPlacementToFloating(placement), [placement]);
|
|
161
|
-
const { context, floatingStyles, refs } = useFloating({
|
|
162
|
-
middleware: useMemo(() => {
|
|
163
|
-
const base = [
|
|
164
|
-
offset(8),
|
|
165
|
-
flip(),
|
|
166
|
-
shift({ padding: 8 })
|
|
167
|
-
];
|
|
168
|
-
if (arrow$1) base.push(arrow({ element: arrowRef }));
|
|
169
|
-
return base;
|
|
170
|
-
}, [arrow$1]),
|
|
171
|
-
onOpenChange: setOpen,
|
|
172
|
-
open: disabled ? false : mergedOpen,
|
|
173
|
-
placement: floatingPlacement,
|
|
174
|
-
whileElementsMounted: autoUpdate
|
|
175
|
-
});
|
|
176
|
-
const { getFloatingProps, getReferenceProps } = useInteractions([
|
|
177
|
-
useHover(context, {
|
|
178
|
-
delay: useMemo(() => ({
|
|
179
|
-
close: closeDelay ?? (mouseLeaveDelay !== void 0 ? mouseLeaveDelay * 1e3 : 100),
|
|
180
|
-
open: openDelay ?? (mouseEnterDelay !== void 0 ? mouseEnterDelay * 1e3 : 400)
|
|
181
|
-
}), [
|
|
182
|
-
closeDelay,
|
|
183
|
-
mouseEnterDelay,
|
|
184
|
-
mouseLeaveDelay,
|
|
185
|
-
openDelay
|
|
186
|
-
]),
|
|
187
|
-
enabled: !disabled,
|
|
188
|
-
move: false
|
|
189
|
-
}),
|
|
190
|
-
useFocus(context, { enabled: !disabled }),
|
|
191
|
-
useDismiss(context, { enabled: !disabled }),
|
|
192
|
-
useRole(context, { role: "tooltip" })
|
|
193
|
-
]);
|
|
194
|
-
const trigger = useMemo(() => {
|
|
195
|
-
if (!isValidElement(children)) return /* @__PURE__ */ jsx("span", { children });
|
|
196
|
-
if (typeof children.type === "string" && Boolean(children.props?.disabled)) return /* @__PURE__ */ jsx("span", {
|
|
197
|
-
style: { display: "inline-flex" },
|
|
198
|
-
children
|
|
199
|
-
});
|
|
200
|
-
return children;
|
|
201
|
-
}, [children]);
|
|
202
|
-
const referenceNode = useMemo(() => {
|
|
203
|
-
if (!isValidElement(trigger)) return trigger;
|
|
204
|
-
const originalRef = trigger.props?.ref;
|
|
205
|
-
return cloneElement(trigger, getReferenceProps({
|
|
206
|
-
...trigger.props,
|
|
207
|
-
ref: mergeRefs([
|
|
208
|
-
originalRef,
|
|
209
|
-
refs.setReference,
|
|
210
|
-
ref
|
|
211
|
-
])
|
|
212
|
-
}));
|
|
213
|
-
}, [
|
|
214
|
-
getReferenceProps,
|
|
215
|
-
ref,
|
|
216
|
-
refs.setReference,
|
|
217
|
-
trigger
|
|
218
|
-
]);
|
|
219
|
-
const portalRoot = getPopupContainer && refs.reference.current ? getPopupContainer(refs.reference.current) : void 0;
|
|
220
|
-
const floatingNode = /* @__PURE__ */ jsx(TooltipFloating_default, {
|
|
221
|
-
arrow: arrow$1,
|
|
222
|
-
arrowRef,
|
|
223
|
-
className,
|
|
224
|
-
classNames,
|
|
225
|
-
context,
|
|
226
|
-
floatingProps: getFloatingProps(),
|
|
227
|
-
floatingStyles,
|
|
228
|
-
hotkey,
|
|
229
|
-
hotkeyProps,
|
|
230
|
-
open: mergedOpen,
|
|
231
|
-
placement: floatingPlacement,
|
|
232
|
-
setFloating: refs.setFloating,
|
|
233
|
-
styles: styleProps,
|
|
234
|
-
title,
|
|
235
|
-
zIndex
|
|
236
|
-
});
|
|
237
|
-
return /* @__PURE__ */ jsxs(Fragment$1, { children: [referenceNode, !disabled && title && (portalled ? /* @__PURE__ */ jsx(TooltipPortal_default, {
|
|
238
|
-
root: portalRoot,
|
|
239
|
-
children: floatingNode
|
|
240
|
-
}) : floatingNode)] });
|
|
241
|
-
};
|
|
242
10
|
const Tooltip = (props) => {
|
|
243
11
|
const group = useContext(TooltipGroupApiContext);
|
|
244
12
|
return Boolean(group) && props.open === void 0 && props.defaultOpen === void 0 ? /* @__PURE__ */ jsx(TooltipInGroup, { ...props }) : /* @__PURE__ */ jsx(TooltipStandalone, { ...props });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.mjs","names":["TooltipInGroup: FC<TooltipProps>","item: TooltipGroupItem","arrow","triggerProps: any","TooltipStandalone: FC<TooltipProps>","arrowMiddleware","TooltipFloating","TooltipPortal","Tooltip: FC<TooltipProps>"],"sources":["../../src/Tooltip/Tooltip.tsx"],"sourcesContent":["'use client';\n\nimport {\n arrow as arrowMiddleware,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport {\n type FC,\n cloneElement,\n isValidElement,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { antdPlacementToFloating } from '@/Tooltip/antdPlacementToFloating';\nimport { composeEventHandlers } from '@/utils/composeEventHandlers';\n\nimport TooltipFloating from './TooltipFloating';\nimport TooltipPortal from './TooltipPortal';\nimport {\n TooltipGroupApiContext,\n type TooltipGroupItem,\n TooltipGroupPropsContext,\n} from './groupContext';\nimport type { TooltipProps } from './type';\n\nconst TooltipInGroup: FC<TooltipProps> = ({\n ref,\n hotkey,\n className,\n arrow,\n title,\n hotkeyProps,\n children,\n placement,\n openDelay,\n closeDelay,\n mouseEnterDelay,\n mouseLeaveDelay,\n onOpenChange,\n disabled,\n classNames,\n styles: styleProps,\n zIndex,\n portalled,\n getPopupContainer,\n}) => {\n const group = useContext(TooltipGroupApiContext);\n const sharedProps = useContext(TooltipGroupPropsContext);\n const triggerElRef = useRef<HTMLElement | null>(null);\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 mergedStyles = useMemo(() => {\n if (!sharedProps?.styles && !styleProps) return undefined;\n return { ...sharedProps?.styles, ...styleProps };\n }, [sharedProps?.styles, styleProps]);\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 portalled: portalled ?? sharedProps?.portalled,\n styles: mergedStyles,\n title,\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 portalled,\n sharedProps?.arrow,\n sharedProps?.closeDelay,\n sharedProps?.disabled,\n sharedProps?.getPopupContainer,\n sharedProps?.hotkey,\n sharedProps?.mouseEnterDelay,\n sharedProps?.mouseLeaveDelay,\n sharedProps?.openDelay,\n sharedProps?.placement,\n sharedProps?.portalled,\n sharedProps?.zIndex,\n title,\n zIndex,\n ],\n );\n\n const trigger = useMemo(() => {\n if (!isValidElement(children)) return <span>{children}</span>;\n\n const needsWrapper =\n typeof children.type === 'string' && Boolean((children.props as any)?.disabled);\n\n if (needsWrapper) return <span style={{ display: 'inline-flex' }}>{children}</span>;\n\n return children;\n }, [children]);\n\n const referenceNode = useMemo(() => {\n if (!isValidElement(trigger)) return trigger;\n\n const originalRef = (trigger.props as any)?.ref;\n const triggerProps: any = trigger.props || {};\n\n const setTriggerEl = (node: any) => {\n triggerElRef.current = node instanceof HTMLElement ? node : null;\n };\n\n return cloneElement(trigger as any, {\n ...triggerProps,\n onBlur: composeEventHandlers(triggerProps.onBlur, (e: any) => {\n group?.closeFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n onFocus: composeEventHandlers(triggerProps.onFocus, (e: any) => {\n group?.openFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (e: any) => {\n if (e?.key === 'Escape') group?.closeImmediately();\n }),\n onPointerEnter: composeEventHandlers(triggerProps.onPointerEnter, (e: any) => {\n group?.openFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n onPointerLeave: composeEventHandlers(triggerProps.onPointerLeave, (e: any) => {\n group?.closeFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n ref: mergeRefs([originalRef, setTriggerEl, ref]),\n });\n }, [group, item, ref, trigger]);\n\n useEffect(() => {\n return () => {\n if (!group) return;\n const el = triggerElRef.current;\n if (el && group.isActiveTrigger(el)) group.closeImmediately();\n };\n }, [group]);\n\n return referenceNode as any;\n};\n\nTooltipInGroup.displayName = 'TooltipInGroup';\n\nconst TooltipStandalone: FC<TooltipProps> = ({\n ref,\n hotkey,\n className,\n arrow = false,\n title,\n hotkeyProps,\n children,\n placement = 'top',\n openDelay,\n closeDelay,\n mouseEnterDelay,\n mouseLeaveDelay,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n classNames,\n styles: styleProps,\n zIndex,\n portalled = true,\n getPopupContainer,\n}) => {\n const arrowRef = useRef<SVGSVGElement | null>(null);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n const mergedOpen = open ?? uncontrolledOpen;\n const setOpen = (next: boolean) => {\n if (open === undefined) setUncontrolledOpen(next);\n onOpenChange?.(next);\n };\n\n const floatingPlacement = useMemo(() => antdPlacementToFloating(placement), [placement]);\n\n const middleware = useMemo(() => {\n const base = [offset(8), flip(), shift({ padding: 8 })];\n if (arrow) base.push(arrowMiddleware({ element: arrowRef }));\n return base;\n }, [arrow]);\n\n const { context, floatingStyles, refs } = useFloating({\n middleware,\n onOpenChange: setOpen,\n open: disabled ? false : mergedOpen,\n placement: floatingPlacement,\n whileElementsMounted: autoUpdate,\n });\n\n const resolvedDelay = useMemo(\n () => ({\n close: closeDelay ?? (mouseLeaveDelay !== undefined ? mouseLeaveDelay * 1000 : 100),\n open: openDelay ?? (mouseEnterDelay !== undefined ? mouseEnterDelay * 1000 : 400),\n }),\n [closeDelay, mouseEnterDelay, mouseLeaveDelay, openDelay],\n );\n\n const hover = useHover(context, {\n delay: resolvedDelay,\n enabled: !disabled,\n move: false,\n });\n const focus = useFocus(context, { enabled: !disabled });\n const dismiss = useDismiss(context, { enabled: !disabled });\n const role = useRole(context, { role: 'tooltip' });\n\n const { getFloatingProps, getReferenceProps } = useInteractions([hover, focus, dismiss, role]);\n\n const trigger = useMemo(() => {\n if (!isValidElement(children)) return <span>{children}</span>;\n\n const needsWrapper =\n typeof children.type === 'string' && Boolean((children.props as any)?.disabled);\n\n if (needsWrapper) return <span style={{ display: 'inline-flex' }}>{children}</span>;\n\n return children;\n }, [children]);\n\n const referenceNode = useMemo(() => {\n if (!isValidElement(trigger)) return trigger;\n\n const originalRef = (trigger.props as any)?.ref;\n\n return cloneElement(\n trigger as any,\n getReferenceProps({\n ...(trigger.props as any),\n ref: mergeRefs([originalRef, refs.setReference, ref]),\n }),\n );\n }, [getReferenceProps, ref, refs.setReference, trigger]);\n\n const portalRoot =\n getPopupContainer && refs.reference.current\n ? getPopupContainer(refs.reference.current as any)\n : undefined;\n\n const floatingNode = (\n <TooltipFloating\n arrow={arrow}\n arrowRef={arrowRef}\n className={className}\n classNames={classNames}\n context={context}\n floatingProps={getFloatingProps()}\n floatingStyles={floatingStyles}\n hotkey={hotkey}\n hotkeyProps={hotkeyProps}\n open={mergedOpen}\n placement={floatingPlacement}\n setFloating={refs.setFloating}\n styles={styleProps}\n title={title}\n zIndex={zIndex}\n />\n );\n\n return (\n <>\n {referenceNode}\n {!disabled &&\n title &&\n (portalled ? (\n <TooltipPortal root={portalRoot}>{floatingNode}</TooltipPortal>\n ) : (\n floatingNode\n ))}\n </>\n );\n};\n\nexport const Tooltip: FC<TooltipProps> = (props) => {\n const group = useContext(TooltipGroupApiContext);\n\n // Group mode is intentionally hover/focus driven; keep standalone behavior for controlled cases.\n const canUseGroup = Boolean(group) && props.open === undefined && props.defaultOpen === undefined;\n\n return canUseGroup ? <TooltipInGroup {...props} /> : <TooltipStandalone {...props} />;\n};\n\nexport default Tooltip;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tooltip.mjs","names":["Tooltip: FC<TooltipProps>"],"sources":["../../src/Tooltip/Tooltip.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, useContext } from 'react';\n\nimport { TooltipInGroup } from './TooltipInGroup';\nimport { TooltipStandalone } from './TooltipStandalone';\nimport { TooltipGroupApiContext } from './groupContext';\nimport type { TooltipProps } from './type';\n\nexport const Tooltip: FC<TooltipProps> = (props) => {\n const group = useContext(TooltipGroupApiContext);\n\n // Group mode is intentionally hover/focus driven; keep standalone behavior for controlled cases.\n const canUseGroup = Boolean(group) && props.open === undefined && props.defaultOpen === undefined;\n\n return canUseGroup ? <TooltipInGroup {...props} /> : <TooltipStandalone {...props} />;\n};\n\nexport default Tooltip;\n"],"mappings":";;;;;;;;;AASA,MAAaA,WAA6B,UAAU;CAClD,MAAM,QAAQ,WAAW,uBAAuB;AAKhD,QAFoB,QAAQ,MAAM,IAAI,MAAM,SAAS,UAAa,MAAM,gBAAgB,SAEnE,oBAAC,kBAAe,GAAI,QAAS,GAAG,oBAAC,qBAAkB,GAAI,QAAS;;AAGvF,sBAAe"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { TooltipGroupApiContext, TooltipGroupPropsContext } from "./groupContext.mjs";
|
|
4
4
|
import TooltipFloating_default from "./TooltipFloating.mjs";
|
|
5
5
|
import TooltipPortal_default from "./TooltipPortal.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { antdPlacementToFloating } from "./antdPlacementToFloating.mjs";
|
|
7
7
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import { arrow, autoUpdate, flip, offset, shift, useFloating } from "@floating-ui/react";
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { composeEventHandlers } from "../utils/composeEventHandlers.mjs";
|
|
4
|
+
import { TooltipGroupApiContext } from "./groupContext.mjs";
|
|
5
|
+
import { useMergedTooltipProps } from "./useMergedTooltipProps.mjs";
|
|
6
|
+
import { useTooltipTrigger } from "./useTooltipTrigger.mjs";
|
|
7
|
+
import { cloneElement, isValidElement, useContext, useEffect, useMemo, useRef } from "react";
|
|
8
|
+
import { mergeRefs } from "react-merge-refs";
|
|
9
|
+
|
|
10
|
+
//#region src/Tooltip/TooltipInGroup.tsx
|
|
11
|
+
const TooltipInGroup = ({ ref, children, ...props }) => {
|
|
12
|
+
const group = useContext(TooltipGroupApiContext);
|
|
13
|
+
const triggerElRef = useRef(null);
|
|
14
|
+
const item = useMergedTooltipProps(props);
|
|
15
|
+
const trigger = useTooltipTrigger(children);
|
|
16
|
+
const referenceNode = useMemo(() => {
|
|
17
|
+
if (!isValidElement(trigger)) return trigger;
|
|
18
|
+
const originalRef = trigger.ref;
|
|
19
|
+
const triggerProps = trigger.props || {};
|
|
20
|
+
const setTriggerEl = (node) => {
|
|
21
|
+
triggerElRef.current = node instanceof HTMLElement ? node : null;
|
|
22
|
+
};
|
|
23
|
+
return cloneElement(trigger, {
|
|
24
|
+
...triggerProps,
|
|
25
|
+
onBlur: composeEventHandlers(triggerProps.onBlur, (e) => {
|
|
26
|
+
group?.closeFromTrigger(e.currentTarget, item);
|
|
27
|
+
}),
|
|
28
|
+
onFocus: composeEventHandlers(triggerProps.onFocus, (e) => {
|
|
29
|
+
group?.openFromTrigger(e.currentTarget, item);
|
|
30
|
+
}),
|
|
31
|
+
onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (e) => {
|
|
32
|
+
if (e?.key === "Escape") group?.closeImmediately();
|
|
33
|
+
}),
|
|
34
|
+
onPointerEnter: composeEventHandlers(triggerProps.onPointerEnter, (e) => {
|
|
35
|
+
group?.openFromTrigger(e.currentTarget, item);
|
|
36
|
+
}),
|
|
37
|
+
onPointerLeave: composeEventHandlers(triggerProps.onPointerLeave, (e) => {
|
|
38
|
+
group?.closeFromTrigger(e.currentTarget, item);
|
|
39
|
+
}),
|
|
40
|
+
ref: mergeRefs([
|
|
41
|
+
originalRef,
|
|
42
|
+
setTriggerEl,
|
|
43
|
+
ref
|
|
44
|
+
])
|
|
45
|
+
});
|
|
46
|
+
}, [
|
|
47
|
+
group,
|
|
48
|
+
item,
|
|
49
|
+
ref,
|
|
50
|
+
trigger
|
|
51
|
+
]);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
return () => {
|
|
54
|
+
if (!group) return;
|
|
55
|
+
const el = triggerElRef.current;
|
|
56
|
+
if (el && group.isActiveTrigger(el)) group.closeImmediately();
|
|
57
|
+
};
|
|
58
|
+
}, [group]);
|
|
59
|
+
return referenceNode;
|
|
60
|
+
};
|
|
61
|
+
TooltipInGroup.displayName = "TooltipInGroup";
|
|
62
|
+
|
|
63
|
+
//#endregion
|
|
64
|
+
export { TooltipInGroup };
|
|
65
|
+
//# sourceMappingURL=TooltipInGroup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TooltipInGroup.mjs","names":["TooltipInGroup: FC<TooltipProps>","triggerProps: any"],"sources":["../../src/Tooltip/TooltipInGroup.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type ReactNode,\n cloneElement,\n isValidElement,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { composeEventHandlers } from '@/utils/composeEventHandlers';\n\nimport { TooltipGroupApiContext } from './groupContext';\nimport type { TooltipProps } from './type';\nimport { useMergedTooltipProps } from './useMergedTooltipProps';\nimport { useTooltipTrigger } from './useTooltipTrigger';\n\nexport const TooltipInGroup: FC<TooltipProps> = ({ ref, children, ...props }) => {\n const group = useContext(TooltipGroupApiContext);\n const triggerElRef = useRef<HTMLElement | null>(null);\n const item = useMergedTooltipProps(props);\n const trigger = useTooltipTrigger(children);\n\n const referenceNode = useMemo(() => {\n if (!isValidElement(trigger)) return trigger;\n\n const originalRef = (trigger as any).ref;\n const triggerProps: any = trigger.props || {};\n\n const setTriggerEl = (node: any) => {\n triggerElRef.current = node instanceof HTMLElement ? node : null;\n };\n\n return cloneElement(trigger as any, {\n ...triggerProps,\n onBlur: composeEventHandlers(triggerProps.onBlur, (e: any) => {\n group?.closeFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n onFocus: composeEventHandlers(triggerProps.onFocus, (e: any) => {\n group?.openFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (e: any) => {\n if (e?.key === 'Escape') group?.closeImmediately();\n }),\n onPointerEnter: composeEventHandlers(triggerProps.onPointerEnter, (e: any) => {\n group?.openFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n onPointerLeave: composeEventHandlers(triggerProps.onPointerLeave, (e: any) => {\n group?.closeFromTrigger(e.currentTarget as HTMLElement, item);\n }),\n ref: mergeRefs([originalRef, setTriggerEl, ref]),\n });\n }, [group, item, ref, trigger]);\n\n // Close when the trigger is swapped out or disconnected.\n useEffect(() => {\n return () => {\n if (!group) return;\n const el = triggerElRef.current;\n if (el && group.isActiveTrigger(el)) group.closeImmediately();\n };\n }, [group]);\n\n return referenceNode as ReactNode;\n};\n\nTooltipInGroup.displayName = 'TooltipInGroup';\n"],"mappings":";;;;;;;;;;AAqBA,MAAaA,kBAAoC,EAAE,KAAK,UAAU,GAAG,YAAY;CAC/E,MAAM,QAAQ,WAAW,uBAAuB;CAChD,MAAM,eAAe,OAA2B,KAAK;CACrD,MAAM,OAAO,sBAAsB,MAAM;CACzC,MAAM,UAAU,kBAAkB,SAAS;CAE3C,MAAM,gBAAgB,cAAc;AAClC,MAAI,CAAC,eAAe,QAAQ,CAAE,QAAO;EAErC,MAAM,cAAe,QAAgB;EACrC,MAAMC,eAAoB,QAAQ,SAAS,EAAE;EAE7C,MAAM,gBAAgB,SAAc;AAClC,gBAAa,UAAU,gBAAgB,cAAc,OAAO;;AAG9D,SAAO,aAAa,SAAgB;GAClC,GAAG;GACH,QAAQ,qBAAqB,aAAa,SAAS,MAAW;AAC5D,WAAO,iBAAiB,EAAE,eAA8B,KAAK;KAC7D;GACF,SAAS,qBAAqB,aAAa,UAAU,MAAW;AAC9D,WAAO,gBAAgB,EAAE,eAA8B,KAAK;KAC5D;GACF,WAAW,qBAAqB,aAAa,YAAY,MAAW;AAClE,QAAI,GAAG,QAAQ,SAAU,QAAO,kBAAkB;KAClD;GACF,gBAAgB,qBAAqB,aAAa,iBAAiB,MAAW;AAC5E,WAAO,gBAAgB,EAAE,eAA8B,KAAK;KAC5D;GACF,gBAAgB,qBAAqB,aAAa,iBAAiB,MAAW;AAC5E,WAAO,iBAAiB,EAAE,eAA8B,KAAK;KAC7D;GACF,KAAK,UAAU;IAAC;IAAa;IAAc;IAAI,CAAC;GACjD,CAAC;IACD;EAAC;EAAO;EAAM;EAAK;EAAQ,CAAC;AAG/B,iBAAgB;AACd,eAAa;AACX,OAAI,CAAC,MAAO;GACZ,MAAM,KAAK,aAAa;AACxB,OAAI,MAAM,MAAM,gBAAgB,GAAG,CAAE,OAAM,kBAAkB;;IAE9D,CAAC,MAAM,CAAC;AAEX,QAAO;;AAGT,eAAe,cAAc"}
|