@lobehub/ui 5.23.5 → 5.24.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.
- package/es/Accordion/Accordion.mjs.map +1 -1
- package/es/Accordion/AccordionItem.mjs.map +1 -1
- package/es/Accordion/ArrowIcon.mjs.map +1 -1
- package/es/ActionIcon/ActionIcon.mjs.map +1 -1
- package/es/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
- package/es/Alert/Alert.mjs.map +1 -1
- package/es/Avatar/Avatar.mjs.map +1 -1
- package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
- package/es/Burger/Burger.mjs.map +1 -1
- package/es/Checkbox/Checkbox.mjs.map +1 -1
- package/es/Checkbox/CheckboxGroup.mjs.map +1 -1
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/CodeEditor/CodeEditor.mjs.map +1 -1
- package/es/Collapse/Collapse.mjs.map +1 -1
- package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
- package/es/ConfigProvider/index.mjs.map +1 -1
- package/es/ContextMenu/index.d.mts +2 -2
- package/es/ContextMenu/index.mjs +2 -2
- package/es/DraggablePanel/DraggablePanel.mjs.map +1 -1
- package/es/DraggablePanel/components/DraggablePanelHeader.mjs.map +1 -1
- package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
- package/es/Drawer/Drawer.mjs.map +1 -1
- package/es/Dropdown/Dropdown.mjs.map +1 -1
- package/es/EditableText/ControlInput.mjs.map +1 -1
- package/es/EditableText/EditableText.mjs.map +1 -1
- package/es/EditorSlashMenu/EditorSlashMenu.mjs.map +1 -1
- package/es/EditorSlashMenu/MenuItemRenderer.mjs.map +1 -1
- package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
- package/es/Empty/Empty.mjs.map +1 -1
- package/es/FileTypeIcon/FileTypeIcon.mjs.map +1 -1
- package/es/FileTypeIcon/components/FileIcon.mjs.map +1 -1
- package/es/FileTypeIcon/components/FolderIcon.mjs.map +1 -1
- package/es/FluentEmoji/FluentEmoji.mjs.map +1 -1
- package/es/Footer/Footer.mjs.map +1 -1
- package/es/Form/Form.mjs.map +1 -1
- package/es/Form/components/FormGroup.mjs.map +1 -1
- package/es/Form/components/FormSubmitFooter.mjs.map +1 -1
- package/es/Form/components/FormTitle.mjs.map +1 -1
- package/es/FormModal/FormModal.mjs.map +1 -1
- package/es/Freeze/Freeze.mjs.map +1 -1
- package/es/GroupAvatar/GroupAvatar.mjs.map +1 -1
- package/es/GuideCard/GuideCard.mjs.map +1 -1
- package/es/Header/Header.mjs.map +1 -1
- package/es/Highlighter/FullFeatured.mjs.map +1 -1
- package/es/Highlighter/Highlighter.mjs.map +1 -1
- package/es/Highlighter/LangSelect.mjs.map +1 -1
- package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
- package/es/Highlighter/SyntaxHighlighter/style.mjs +2 -2
- package/es/Highlighter/SyntaxHighlighter/style.mjs.map +1 -1
- package/es/Hotkey/Hotkey.mjs.map +1 -1
- package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
- package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
- package/es/HtmlPreview/Iframe.mjs.map +1 -1
- package/es/Icon/Icon.mjs.map +1 -1
- package/es/Image/Image.mjs.map +1 -1
- package/es/Image/components/Toolbar.mjs.map +1 -1
- package/es/Image/components/usePreview.mjs.map +1 -1
- package/es/Image/components/usePreviewGroup.mjs.map +1 -1
- package/es/ImageSelect/ImageSelect.mjs.map +1 -1
- package/es/Layout/Layout.mjs.map +1 -1
- package/es/List/List.mjs.map +1 -1
- package/es/List/ListItem/index.mjs.map +1 -1
- package/es/Markdown/Markdown.mjs.map +1 -1
- package/es/Markdown/SyntaxMarkdown/MarkdownRender.mjs.map +1 -1
- package/es/Markdown/SyntaxMarkdown/StreamdownRender.mjs.map +1 -1
- package/es/Markdown/SyntaxMarkdown/style.mjs.map +1 -1
- package/es/Markdown/components/CodeBlock.mjs.map +1 -1
- package/es/Markdown/components/Footnotes.mjs.map +1 -1
- package/es/Markdown/components/MarkdownTable/index.mjs.map +1 -1
- package/es/Markdown/components/SearchResultCards/SearchResultCard.mjs.map +1 -1
- package/es/Markdown/components/SearchResultCards/index.mjs.map +1 -1
- package/es/MaterialFileTypeIcon/MaterialFileTypeIcon.mjs.map +1 -1
- package/es/Menu/Menu.mjs.map +1 -1
- package/es/Mermaid/FullFeatured.mjs.map +1 -1
- package/es/Mermaid/Mermaid.mjs.map +1 -1
- package/es/Mermaid/SyntaxMermaid/MermaidFallback.mjs +35 -0
- package/es/Mermaid/SyntaxMermaid/MermaidFallback.mjs.map +1 -0
- package/es/Mermaid/SyntaxMermaid/MermaidSvg.mjs +52 -0
- package/es/Mermaid/SyntaxMermaid/MermaidSvg.mjs.map +1 -0
- package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs +13 -42
- package/es/Mermaid/SyntaxMermaid/StaticMermaid.mjs.map +1 -1
- package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs +13 -43
- package/es/Mermaid/SyntaxMermaid/StreamMermaid.mjs.map +1 -1
- package/es/Mermaid/SyntaxMermaid/prepareInlineSvg.mjs +52 -0
- package/es/Mermaid/SyntaxMermaid/prepareInlineSvg.mjs.map +1 -0
- package/es/Mermaid/SyntaxMermaid/prepareMermaidSvg.mjs +20 -0
- package/es/Mermaid/SyntaxMermaid/prepareMermaidSvg.mjs.map +1 -0
- package/es/Mermaid/SyntaxMermaid/style.mjs +11 -0
- package/es/Mermaid/SyntaxMermaid/style.mjs.map +1 -1
- package/es/Mermaid/const.mjs +10 -31
- package/es/Mermaid/const.mjs.map +1 -1
- package/es/Mermaid/index.d.mts +2 -1
- package/es/Mermaid/index.mjs +2 -1
- package/es/Mermaid/type.d.mts +2 -2
- package/es/Modal/Modal.mjs.map +1 -1
- package/es/Modal/ModalStackItem.mjs.map +1 -1
- package/es/Modal/RawModalStackItem.mjs.map +1 -1
- package/es/Modal/imperative.mjs.map +1 -1
- package/es/Modal/style.mjs.map +1 -1
- package/es/NeuralNetworkLoading/NeuralNetworkLoading.mjs.map +1 -1
- package/es/ScrollShadow/ScrollShadow.mjs.map +1 -1
- package/es/SearchBar/SearchBar.mjs.map +1 -1
- package/es/SideNav/SideNav.mjs.map +1 -1
- package/es/Skeleton/Skeleton.mjs.map +1 -1
- package/es/Skeleton/SkeletonParagraph.mjs.map +1 -1
- package/es/Skeleton/SkeletonTags.mjs.map +1 -1
- package/es/SliderWithInput/SliderWithInput.mjs.map +1 -1
- package/es/Snippet/Snippet.mjs.map +1 -1
- package/es/SortableList/SortableList.mjs.map +1 -1
- package/es/SortableList/components/SortableItem.mjs.map +1 -1
- package/es/Text/Text.mjs.map +1 -1
- package/es/ThemeProvider/ThemeProvider.mjs +1 -1
- package/es/ThemeProvider/ThemeProvider.mjs.map +1 -1
- package/es/ThemeSwitch/ThemeSwitch.mjs.map +1 -1
- package/es/Toc/Toc.mjs.map +1 -1
- package/es/Toc/TocMobile.mjs.map +1 -1
- package/es/Video/index.mjs.map +1 -1
- package/es/awesome/AuroraBackground/AuroraBackground.mjs.map +1 -1
- package/es/awesome/Features/FeatureItem.mjs.map +1 -1
- package/es/awesome/Giscus/Giscus.mjs.map +1 -1
- package/es/awesome/GradientButton/GradientButton.mjs.map +1 -1
- package/es/awesome/GridBackground/GridBackground.mjs.map +1 -1
- package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
- package/es/awesome/GridBackground/components/Grid.mjs.map +1 -1
- package/es/awesome/Hero/Hero.mjs.map +1 -1
- package/es/awesome/Spline/ParentSize.mjs.map +1 -1
- package/es/awesome/Spline/Spine.mjs.map +1 -1
- package/es/awesome/SpotlightCard/SpotlightCard.mjs.map +1 -1
- package/es/awesome/SpotlightCard/SpotlightCardItem.mjs.map +1 -1
- package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
- package/es/base-ui/AutoComplete/AutoComplete.mjs.map +1 -1
- package/es/base-ui/Button/Button.mjs.map +1 -1
- package/es/base-ui/Button/SplitButton.mjs.map +1 -1
- package/es/base-ui/Checkbox/Checkbox.mjs.map +1 -1
- package/es/base-ui/Checkbox/CheckboxGroup.mjs.map +1 -1
- package/es/base-ui/ContextMenu/ContextMenuHost.mjs.map +1 -1
- package/es/base-ui/ContextMenu/imperative.d.mts +2 -2
- package/es/base-ui/ContextMenu/index.d.mts +2 -2
- package/es/base-ui/ContextMenu/renderItems.mjs.map +1 -1
- package/es/base-ui/ContextMenu/store.d.mts +13 -1
- package/es/base-ui/ContextMenu/store.mjs +29 -4
- package/es/base-ui/ContextMenu/store.mjs.map +1 -1
- package/es/base-ui/DropdownMenu/DropdownMenu.mjs.map +1 -1
- package/es/base-ui/DropdownMenu/atoms.mjs.map +1 -1
- package/es/base-ui/DropdownMenu/renderItems.mjs.map +1 -1
- package/es/base-ui/DropdownMenu/sharedStyle.mjs +3 -0
- package/es/base-ui/DropdownMenu/sharedStyle.mjs.map +1 -1
- package/es/base-ui/FloatingPanel/FloatingPanel.mjs.map +1 -1
- package/es/base-ui/FloatingSheet/FloatingSheet.mjs.map +1 -1
- package/es/base-ui/FloatingSheet/FloatingSheetHeader.mjs.map +1 -1
- package/es/base-ui/Form/Form.mjs.map +1 -1
- package/es/base-ui/Form/components/FormField.mjs.map +1 -1
- package/es/base-ui/Form/components/FormGroup.mjs.map +1 -1
- package/es/base-ui/Form/components/FormSubmitFooter.mjs.map +1 -1
- package/es/base-ui/Form/components/FormTitle.mjs.map +1 -1
- package/es/base-ui/Input/Input.mjs.map +1 -1
- package/es/base-ui/Input/InputNumber.mjs.map +1 -1
- package/es/base-ui/Input/InputOTP.mjs.map +1 -1
- package/es/base-ui/Input/InputPassword.mjs.map +1 -1
- package/es/base-ui/Input/TextArea.mjs.map +1 -1
- package/es/base-ui/Input/style.d.mts +1 -1
- package/es/base-ui/Modal/Modal.mjs.map +1 -1
- package/es/base-ui/Modal/atoms.mjs.map +1 -1
- package/es/base-ui/Modal/imperative.mjs.map +1 -1
- package/es/base-ui/Popover/ArrowIcon.mjs.map +1 -1
- package/es/base-ui/Popover/PopoverGroup.mjs.map +1 -1
- package/es/base-ui/Popover/PopoverStandalone.mjs.map +1 -1
- package/es/base-ui/Popover/atoms.mjs.map +1 -1
- package/es/base-ui/Radio/Radio.mjs.map +1 -1
- package/es/base-ui/Radio/RadioGroup.mjs.map +1 -1
- package/es/base-ui/ScrollArea/ScrollArea.mjs.map +1 -1
- package/es/base-ui/Segmented/Segmented.mjs.map +1 -1
- package/es/base-ui/Select/Select.mjs.map +1 -1
- package/es/base-ui/Select/parts.mjs.map +1 -1
- package/es/base-ui/Select/renderOptions.mjs.map +1 -1
- package/es/base-ui/Slider/Slider.mjs.map +1 -1
- package/es/base-ui/Slider/SliderWithInput.mjs.map +1 -1
- package/es/base-ui/SubmenuArrowIcon.mjs.map +1 -1
- package/es/base-ui/Switch/Switch.mjs.map +1 -1
- package/es/base-ui/Switch/atoms.d.mts +3 -3
- package/es/base-ui/Switch/atoms.mjs +99 -50
- package/es/base-ui/Switch/atoms.mjs.map +1 -1
- package/es/base-ui/Switch/style.mjs +44 -1
- package/es/base-ui/Switch/style.mjs.map +1 -1
- package/es/base-ui/Switch/type.d.mts +3 -7
- package/es/base-ui/Tabs/Tabs.mjs.map +1 -1
- package/es/base-ui/Tabs/atoms.mjs.map +1 -1
- package/es/base-ui/Toast/Toast.mjs.map +1 -1
- package/es/base-ui/Toast/imperative.mjs.map +1 -1
- package/es/base-ui/Tooltip/ArrowIcon.mjs.map +1 -1
- package/es/base-ui/Tooltip/TooltipGroup.mjs.map +1 -1
- package/es/base-ui/Tooltip/TooltipStandalone.mjs.map +1 -1
- package/es/base-ui/index.d.mts +2 -2
- package/es/base-ui/index.mjs +2 -2
- package/es/brand/LobeChat/index.mjs.map +1 -1
- package/es/brand/LobeChatText/index.mjs.map +1 -1
- package/es/brand/LobeHub/index.mjs.map +1 -1
- package/es/brand/LobeHubText/index.mjs.map +1 -1
- package/es/brand/LogoThree/Loading.mjs.map +1 -1
- package/es/brand/LogoThree/LogoSpline.mjs.map +1 -1
- package/es/brand/LogoThree/index.mjs.map +1 -1
- package/es/brand/components/Divider.mjs.map +1 -1
- package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
- package/es/chat/ChatHeader/ChatHeader.mjs.map +1 -1
- package/es/chat/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
- package/es/chat/ChatInputArea/ChatInputArea.mjs.map +1 -1
- package/es/chat/ChatInputArea/components/ChatInputActionBar.mjs.map +1 -1
- package/es/chat/ChatInputArea/components/ChatSendButton.mjs.map +1 -1
- package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
- package/es/chat/ChatItem/components/Actions.mjs.map +1 -1
- package/es/chat/ChatItem/components/Avatar.mjs.map +1 -1
- package/es/chat/ChatItem/components/ErrorContent.mjs.map +1 -1
- package/es/chat/ChatItem/components/Loading.mjs.map +1 -1
- package/es/chat/ChatItem/components/MessageContent.mjs.map +1 -1
- package/es/chat/ChatItem/components/Title.mjs.map +1 -1
- package/es/chat/ChatList/ChatList.mjs.map +1 -1
- package/es/chat/ChatList/components/HistoryDivider.mjs.map +1 -1
- package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
- package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
- package/es/chat/LoadingDots/LoadingDots.mjs.map +1 -1
- package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
- package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
- package/es/color/ColorScales/ScaleRow.mjs.map +1 -1
- package/es/color/ColorScales/index.mjs.map +1 -1
- package/es/color/CssVar/ScaleRow.mjs.map +1 -1
- package/es/color/CssVar/VarRow.mjs.map +1 -1
- package/es/color/CssVar/index.mjs.map +1 -1
- package/es/hooks/useMarkdown/latex.mjs.map +1 -1
- package/es/hooks/useMarkdown/useMarkdownContent.mjs.map +1 -1
- package/es/hooks/useMermaid.mjs +80 -116
- package/es/hooks/useMermaid.mjs.map +1 -1
- package/es/hooks/useMermaidCdn.d.mts +10 -0
- package/es/hooks/useMermaidCdn.mjs +97 -0
- package/es/hooks/useMermaidCdn.mjs.map +1 -0
- package/es/hooks/useStreamMermaid.mjs +19 -70
- package/es/hooks/useStreamMermaid.mjs.map +1 -1
- package/es/icons/Auth0/components/Mono.mjs.map +1 -1
- package/es/icons/Authelia/components/Color.mjs.map +1 -1
- package/es/icons/Authelia/components/Mono.mjs.map +1 -1
- package/es/icons/Authentik/components/Color.mjs.map +1 -1
- package/es/icons/Authentik/components/Mono.mjs.map +1 -1
- package/es/icons/Casdoor/components/Color.mjs.map +1 -1
- package/es/icons/Casdoor/components/Mono.mjs.map +1 -1
- package/es/icons/Clerk/components/Color.mjs.map +1 -1
- package/es/icons/Clerk/components/Mono.mjs.map +1 -1
- package/es/icons/DingTalk/components/Color.mjs.map +1 -1
- package/es/icons/DingTalk/components/Mono.mjs.map +1 -1
- package/es/icons/Discord/components/Color.mjs.map +1 -1
- package/es/icons/Discord/components/Mono.mjs.map +1 -1
- package/es/icons/GoogleChat/components/Color.mjs.map +1 -1
- package/es/icons/GoogleChat/components/Mono.mjs.map +1 -1
- package/es/icons/IMessage/components/Color.mjs.map +1 -1
- package/es/icons/IMessage/components/Inner.mjs.map +1 -1
- package/es/icons/IMessage/components/Mono.mjs.map +1 -1
- package/es/icons/Lark/components/Color.mjs.map +1 -1
- package/es/icons/Lark/components/Mono.mjs.map +1 -1
- package/es/icons/Line/components/Color.mjs.map +1 -1
- package/es/icons/Line/components/Mono.mjs.map +1 -1
- package/es/icons/Logto/components/Color.mjs.map +1 -1
- package/es/icons/Logto/components/Mono.mjs.map +1 -1
- package/es/icons/MicrosoftEntra/components/Color.mjs.map +1 -1
- package/es/icons/MicrosoftEntra/components/Mono.mjs.map +1 -1
- package/es/icons/MicrosoftTeams/components/Color.mjs.map +1 -1
- package/es/icons/MicrosoftTeams/components/Mono.mjs.map +1 -1
- package/es/icons/NextAuth/components/Color.mjs.map +1 -1
- package/es/icons/NextAuth/components/Mono.mjs.map +1 -1
- package/es/icons/QQ/components/Color.mjs.map +1 -1
- package/es/icons/QQ/components/Mono.mjs.map +1 -1
- package/es/icons/Slack/components/Color.mjs.map +1 -1
- package/es/icons/Slack/components/Mono.mjs.map +1 -1
- package/es/icons/Telegram/components/Color.mjs.map +1 -1
- package/es/icons/Telegram/components/Inner.mjs.map +1 -1
- package/es/icons/Telegram/components/Mono.mjs.map +1 -1
- package/es/icons/WeChat/components/Color.mjs.map +1 -1
- package/es/icons/WeChat/components/Mono.mjs.map +1 -1
- package/es/icons/WhatsApp/components/Color.mjs.map +1 -1
- package/es/icons/WhatsApp/components/Mono.mjs.map +1 -1
- package/es/icons/Zitadel/components/Color.mjs.map +1 -1
- package/es/icons/Zitadel/components/Mono.mjs.map +1 -1
- package/es/index.d.mts +2 -2
- package/es/index.mjs +2 -2
- package/es/mdx/Callout/index.mjs.map +1 -1
- package/es/mdx/Cards/Card.mjs.map +1 -1
- package/es/mdx/FileTree/File.mjs.map +1 -1
- package/es/mdx/FileTree/Folder.mjs.map +1 -1
- package/es/mdx/Mdx/index.mjs.map +1 -1
- package/es/mdx/Tabs/Tab.mjs.map +1 -1
- package/es/mdx/Tabs/index.mjs.map +1 -1
- package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
- package/es/mdx/mdxComponents/Citation/index.mjs.map +1 -1
- package/es/mdx/mdxComponents/CodeBlock.mjs.map +1 -1
- package/es/mdx/mdxComponents/Link.mjs.map +1 -1
- package/es/mobile/ChatHeader/ChatHeader.mjs.map +1 -1
- package/es/mobile/ChatHeader/ChatHeaderTitle.mjs.map +1 -1
- package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
- package/es/mobile/TabBar/TabBar.mjs.map +1 -1
- package/es/storybook/StoryBook/index.mjs.map +1 -1
- package/package.json +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileTypeIcon.mjs","names":[],"sources":["../../src/FileTypeIcon/FileTypeIcon.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx, useThemeMode } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { Center } from '@/Flex';\n\nimport FileIcon from './components/FileIcon';\nimport FolderIcon from './components/FolderIcon';\nimport { styles } from './style';\nimport type { FileTypeIconProps } from './type';\n\nconst FileTypeIcon: FC<FileTypeIconProps> = ({\n icon,\n color,\n filetype,\n type = 'file',\n size = 48,\n style,\n variant,\n className,\n ref,\n ...rest\n}) => {\n const { isDarkMode } = useThemeMode();\n const isMono = variant === 'mono';\n\n const filetypeShort = useMemo(\n () => (filetype && filetype.length > 4 ? filetype.slice(0, 4) : filetype),\n [filetype],\n );\n\n const fontSize = useMemo(() => {\n if (filetypeShort && filetypeShort.length > 3) {\n return 24 / (4 + (filetypeShort.length - 3));\n }\n return 6;\n }, [filetypeShort]);\n\n const iconColor = useMemo(\n () =>\n isMono ? (isDarkMode ? cssVar.colorFill : cssVar.colorBgContainer) : color || cssVar.geekblue,\n [isMono, isDarkMode, color],\n );\n\n const content =\n type === 'file' ? (\n <FileIcon\n filetypeShort={filetypeShort}\n fontSize={fontSize}\n hasIcon={!!icon}\n iconColor={iconColor}\n isMono={isMono}\n size={size}\n {...rest}\n />\n ) : (\n <FolderIcon\n filetype={filetype}\n fontSize={fontSize}\n hasIcon={!!icon}\n iconColor={iconColor}\n isMono={isMono}\n size={size}\n {...rest}\n />\n );\n\n if (!icon) return content;\n\n return (\n <Center\n className={cx(styles.container, className)}\n flex={'none'}\n height={size}\n ref={ref}\n style={style}\n width={size}\n {...rest}\n >\n <div\n className={styles.inner}\n style={{\n fontSize: size / 2.4,\n top: type === 'file' ? '20%' : '16%',\n }}\n >\n {icon}\n </div>\n {content}\n </Center>\n );\n};\n\nFileTypeIcon.displayName = 'FileTypeIcon';\n\nexport default FileTypeIcon;\n"],"mappings":";;;;;;;;;AAYA,MAAM,gBAAuC,EAC3C,MACA,OACA,UACA,OAAO,QACP,OAAO,IACP,OACA,SACA,WACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,SAAS,YAAY;CAE3B,MAAM,gBAAgB,cACb,YAAY,SAAS,SAAS,IAAI,SAAS,MAAM,GAAG,CAAC,IAAI,UAChE,CAAC,QAAQ,CACX;CAEA,MAAM,WAAW,cAAc;EAC7B,IAAI,iBAAiB,cAAc,SAAS,GAC1C,OAAO,MAAM,KAAK,cAAc,SAAS;EAE3C,OAAO;CACT,GAAG,CAAC,aAAa,CAAC;CAElB,MAAM,YAAY,cAEd,SAAU,aAAa,OAAO,YAAY,OAAO,mBAAoB,SAAS,OAAO,UACvF;EAAC;EAAQ;EAAY;CAAK,CAC5B;CAEA,MAAM,UACJ,SAAS,SACP,oBAAC,UAAD;EACiB;EACL;EACV,SAAS,CAAC,CAAC;EACA;EACH;EACF;EACN,GAAI;CACL,CAAA,IAED,oBAAC,YAAD;EACY;EACA;EACV,SAAS,CAAC,CAAC;EACA;EACH;EACF;EACN,GAAI;CACL,CAAA;CAGL,IAAI,CAAC,MAAM,OAAO;CAElB,OACE,qBAAC,QAAD;EACE,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,MAAM;EACN,QAAQ;EACH;EACE;EACP,OAAO;EACP,GAAI;
|
|
1
|
+
{"version":3,"file":"FileTypeIcon.mjs","names":[],"sources":["../../src/FileTypeIcon/FileTypeIcon.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx, useThemeMode } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { Center } from '@/Flex';\n\nimport FileIcon from './components/FileIcon';\nimport FolderIcon from './components/FolderIcon';\nimport { styles } from './style';\nimport type { FileTypeIconProps } from './type';\n\nconst FileTypeIcon: FC<FileTypeIconProps> = ({\n icon,\n color,\n filetype,\n type = 'file',\n size = 48,\n style,\n variant,\n className,\n ref,\n ...rest\n}) => {\n const { isDarkMode } = useThemeMode();\n const isMono = variant === 'mono';\n\n const filetypeShort = useMemo(\n () => (filetype && filetype.length > 4 ? filetype.slice(0, 4) : filetype),\n [filetype],\n );\n\n const fontSize = useMemo(() => {\n if (filetypeShort && filetypeShort.length > 3) {\n return 24 / (4 + (filetypeShort.length - 3));\n }\n return 6;\n }, [filetypeShort]);\n\n const iconColor = useMemo(\n () =>\n isMono ? (isDarkMode ? cssVar.colorFill : cssVar.colorBgContainer) : color || cssVar.geekblue,\n [isMono, isDarkMode, color],\n );\n\n const content =\n type === 'file' ? (\n <FileIcon\n filetypeShort={filetypeShort}\n fontSize={fontSize}\n hasIcon={!!icon}\n iconColor={iconColor}\n isMono={isMono}\n size={size}\n {...rest}\n />\n ) : (\n <FolderIcon\n filetype={filetype}\n fontSize={fontSize}\n hasIcon={!!icon}\n iconColor={iconColor}\n isMono={isMono}\n size={size}\n {...rest}\n />\n );\n\n if (!icon) return content;\n\n return (\n <Center\n className={cx(styles.container, className)}\n flex={'none'}\n height={size}\n ref={ref}\n style={style}\n width={size}\n {...rest}\n >\n <div\n className={styles.inner}\n style={{\n fontSize: size / 2.4,\n top: type === 'file' ? '20%' : '16%',\n }}\n >\n {icon}\n </div>\n {content}\n </Center>\n );\n};\n\nFileTypeIcon.displayName = 'FileTypeIcon';\n\nexport default FileTypeIcon;\n"],"mappings":";;;;;;;;;AAYA,MAAM,gBAAuC,EAC3C,MACA,OACA,UACA,OAAO,QACP,OAAO,IACP,OACA,SACA,WACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,SAAS,YAAY;CAE3B,MAAM,gBAAgB,cACb,YAAY,SAAS,SAAS,IAAI,SAAS,MAAM,GAAG,CAAC,IAAI,UAChE,CAAC,QAAQ,CACX;CAEA,MAAM,WAAW,cAAc;EAC7B,IAAI,iBAAiB,cAAc,SAAS,GAC1C,OAAO,MAAM,KAAK,cAAc,SAAS;EAE3C,OAAO;CACT,GAAG,CAAC,aAAa,CAAC;CAElB,MAAM,YAAY,cAEd,SAAU,aAAa,OAAO,YAAY,OAAO,mBAAoB,SAAS,OAAO,UACvF;EAAC;EAAQ;EAAY;CAAK,CAC5B;CAEA,MAAM,UACJ,SAAS,SACP,oBAAC,UAAD;EACiB;EACL;EACV,SAAS,CAAC,CAAC;EACA;EACH;EACF;EACN,GAAI;CACL,CAAA,IAED,oBAAC,YAAD;EACY;EACA;EACV,SAAS,CAAC,CAAC;EACA;EACH;EACF;EACN,GAAI;CACL,CAAA;CAGL,IAAI,CAAC,MAAM,OAAO;CAElB,OACE,qBAAC,QAAD;EACE,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,MAAM;EACN,QAAQ;EACH;EACE;EACP,OAAO;EACP,GAAI;EAPN,UAAA,CASE,oBAAC,OAAD;GACE,WAAW,OAAO;GAClB,OAAO;IACL,UAAU,OAAO;IACjB,KAAK,SAAS,SAAS,QAAQ;GACjC;GAEC,UAAA;EACE,CAAA,GACJ,OACK;;AAEZ;AAEA,aAAa,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileIcon.mjs","names":[],"sources":["../../../src/FileTypeIcon/components/FileIcon.tsx"],"sourcesContent":["import { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport type { SvgProps } from '@/types';\n\nimport { styles } from '../style';\n\ninterface FileIconProps extends SvgProps {\n filetypeShort?: string;\n fontSize?: number;\n hasIcon?: boolean;\n iconColor?: string;\n isMono?: boolean;\n size?: number;\n}\n\nconst FileIcon: FC<FileIconProps> = ({\n size,\n isMono,\n hasIcon,\n iconColor,\n filetypeShort,\n className,\n fontSize,\n style,\n ...rest\n}) => {\n return (\n <svg\n className={cx(styles.icon, !hasIcon && className)}\n height={size}\n style={hasIcon ? undefined : style}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6H6z\" fill={iconColor} />\n <path\n d=\"M14 2l6 6h-4a2 2 0 01-2-2V2z\"\n fill={isMono ? cssVar.colorFill : '#fff'}\n fillOpacity=\".5\"\n />\n {filetypeShort && (\n <text\n fill={isMono ? cssVar.colorTextSecondary : '#fff'}\n fontSize={fontSize}\n fontWeight=\"bold\"\n textAnchor=\"middle\"\n x=\"50%\"\n y=\"70%\"\n >\n {filetypeShort.toUpperCase()}\n </text>\n )}\n <path\n d=\"M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6H6z\"\n fill={'transparent'}\n stroke={cssVar.colorFillSecondary}\n strokeWidth={0.5}\n />\n </svg>\n );\n};\n\nexport default FileIcon;\n"],"mappings":";;;;AAgBA,MAAM,YAA+B,EACnC,MACA,QACA,SACA,WACA,eACA,WACA,UACA,OACA,GAAG,WACC;CACJ,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,SAAS;EAChD,QAAQ;EACR,OAAO,UAAU,KAAA,IAAY;EAC7B,SAAQ;EACR,OAAO;EACP,OAAM;EACN,GAAI;
|
|
1
|
+
{"version":3,"file":"FileIcon.mjs","names":[],"sources":["../../../src/FileTypeIcon/components/FileIcon.tsx"],"sourcesContent":["import { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport type { SvgProps } from '@/types';\n\nimport { styles } from '../style';\n\ninterface FileIconProps extends SvgProps {\n filetypeShort?: string;\n fontSize?: number;\n hasIcon?: boolean;\n iconColor?: string;\n isMono?: boolean;\n size?: number;\n}\n\nconst FileIcon: FC<FileIconProps> = ({\n size,\n isMono,\n hasIcon,\n iconColor,\n filetypeShort,\n className,\n fontSize,\n style,\n ...rest\n}) => {\n return (\n <svg\n className={cx(styles.icon, !hasIcon && className)}\n height={size}\n style={hasIcon ? undefined : style}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6H6z\" fill={iconColor} />\n <path\n d=\"M14 2l6 6h-4a2 2 0 01-2-2V2z\"\n fill={isMono ? cssVar.colorFill : '#fff'}\n fillOpacity=\".5\"\n />\n {filetypeShort && (\n <text\n fill={isMono ? cssVar.colorTextSecondary : '#fff'}\n fontSize={fontSize}\n fontWeight=\"bold\"\n textAnchor=\"middle\"\n x=\"50%\"\n y=\"70%\"\n >\n {filetypeShort.toUpperCase()}\n </text>\n )}\n <path\n d=\"M6 2a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6H6z\"\n fill={'transparent'}\n stroke={cssVar.colorFillSecondary}\n strokeWidth={0.5}\n />\n </svg>\n );\n};\n\nexport default FileIcon;\n"],"mappings":";;;;AAgBA,MAAM,YAA+B,EACnC,MACA,QACA,SACA,WACA,eACA,WACA,UACA,OACA,GAAG,WACC;CACJ,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,SAAS;EAChD,QAAQ;EACR,OAAO,UAAU,KAAA,IAAY;EAC7B,SAAQ;EACR,OAAO;EACP,OAAM;EACN,GAAI;EAPN,UAAA;GASE,oBAAC,QAAD;IAAM,GAAE;IAA4D,MAAM;GAAY,CAAA;GACtF,oBAAC,QAAD;IACE,GAAE;IACF,MAAM,SAAS,OAAO,YAAY;IAClC,aAAY;GACb,CAAA;GACA,iBACC,oBAAC,QAAD;IACE,MAAM,SAAS,OAAO,qBAAqB;IACjC;IACV,YAAW;IACX,YAAW;IACX,GAAE;IACF,GAAE;IAED,UAAA,cAAc,YAAY;GACvB,CAAA;GAER,oBAAC,QAAD;IACE,GAAE;IACF,MAAM;IACN,QAAQ,OAAO;IACf,aAAa;GACd,CAAA;EACE;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderIcon.mjs","names":[],"sources":["../../../src/FileTypeIcon/components/FolderIcon.tsx"],"sourcesContent":["import { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport type { SvgProps } from '@/types';\n\nimport { styles } from '../style';\n\ninterface FolderIconProps extends SvgProps {\n filetype?: string;\n fontSize?: number;\n hasIcon?: boolean;\n iconColor?: string;\n isMono?: boolean;\n size?: number;\n}\n\nconst FolderIcon: FC<FolderIconProps> = ({\n size,\n isMono,\n hasIcon,\n iconColor,\n filetype,\n className,\n fontSize,\n style,\n ...rest\n}) => {\n return (\n <svg\n className={cx(styles.icon, !hasIcon && className)}\n height={size}\n style={hasIcon ? undefined : style}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.46 5.076l-.92-.752A1.446 1.446 0 008.626 4H3.429c-.38 0-.743.147-1.01.41A1.386 1.386 0 002 5.4v13.2c0 .371.15.727.418.99.268.262.632.41 1.01.41h17.143c.38 0 .743-.148 1.01-.41.268-.263.419-.619.419-.99V6.8c0-.371-.15-.727-.418-.99a1.444 1.444 0 00-1.01-.41h-9.198c-.334 0-.657-.115-.914-.324z\"\n fill={iconColor}\n stroke={cssVar.colorFillSecondary}\n strokeWidth={0.5}\n />\n {!hasIcon && filetype && (\n <text\n fill={isMono ? cssVar.colorTextSecondary : '#fff'}\n fontSize={fontSize}\n fontWeight=\"bold\"\n textAnchor=\"middle\"\n x=\"50%\"\n y=\"70%\"\n >\n {filetype.toUpperCase()}\n </text>\n )}\n </svg>\n );\n};\n\nexport default FolderIcon;\n"],"mappings":";;;;AAgBA,MAAM,cAAmC,EACvC,MACA,QACA,SACA,WACA,UACA,WACA,UACA,OACA,GAAG,WACC;CACJ,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,SAAS;EAChD,QAAQ;EACR,OAAO,UAAU,KAAA,IAAY;EAC7B,SAAQ;EACR,OAAO;EACP,OAAM;EACN,GAAI;
|
|
1
|
+
{"version":3,"file":"FolderIcon.mjs","names":[],"sources":["../../../src/FileTypeIcon/components/FolderIcon.tsx"],"sourcesContent":["import { cssVar, cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport type { SvgProps } from '@/types';\n\nimport { styles } from '../style';\n\ninterface FolderIconProps extends SvgProps {\n filetype?: string;\n fontSize?: number;\n hasIcon?: boolean;\n iconColor?: string;\n isMono?: boolean;\n size?: number;\n}\n\nconst FolderIcon: FC<FolderIconProps> = ({\n size,\n isMono,\n hasIcon,\n iconColor,\n filetype,\n className,\n fontSize,\n style,\n ...rest\n}) => {\n return (\n <svg\n className={cx(styles.icon, !hasIcon && className)}\n height={size}\n style={hasIcon ? undefined : style}\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.46 5.076l-.92-.752A1.446 1.446 0 008.626 4H3.429c-.38 0-.743.147-1.01.41A1.386 1.386 0 002 5.4v13.2c0 .371.15.727.418.99.268.262.632.41 1.01.41h17.143c.38 0 .743-.148 1.01-.41.268-.263.419-.619.419-.99V6.8c0-.371-.15-.727-.418-.99a1.444 1.444 0 00-1.01-.41h-9.198c-.334 0-.657-.115-.914-.324z\"\n fill={iconColor}\n stroke={cssVar.colorFillSecondary}\n strokeWidth={0.5}\n />\n {!hasIcon && filetype && (\n <text\n fill={isMono ? cssVar.colorTextSecondary : '#fff'}\n fontSize={fontSize}\n fontWeight=\"bold\"\n textAnchor=\"middle\"\n x=\"50%\"\n y=\"70%\"\n >\n {filetype.toUpperCase()}\n </text>\n )}\n </svg>\n );\n};\n\nexport default FolderIcon;\n"],"mappings":";;;;AAgBA,MAAM,cAAmC,EACvC,MACA,QACA,SACA,WACA,UACA,WACA,UACA,OACA,GAAG,WACC;CACJ,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,SAAS;EAChD,QAAQ;EACR,OAAO,UAAU,KAAA,IAAY;EAC7B,SAAQ;EACR,OAAO;EACP,OAAM;EACN,GAAI;EAPN,UAAA,CASE,oBAAC,QAAD;GACE,GAAE;GACF,MAAM;GACN,QAAQ,OAAO;GACf,aAAa;EACd,CAAA,GACA,CAAC,WAAW,YACX,oBAAC,QAAD;GACE,MAAM,SAAS,OAAO,qBAAqB;GACjC;GACV,YAAW;GACX,YAAW;GACX,GAAE;GACF,GAAE;GAED,UAAA,SAAS,YAAY;EAClB,CAAA,CAEL;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentEmoji.mjs","names":[],"sources":["../../src/FluentEmoji/FluentEmoji.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo, useState } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport { Center } from '@/Flex';\nimport Img from '@/Img';\n\nimport { styles } from './style';\nimport type { FluentEmojiProps } from './type';\nimport { genEmojiUrl } from './utils';\n\nconst FluentEmoji: FC<FluentEmojiProps> = ({\n emoji,\n className,\n style,\n type = '3d',\n size = 40,\n unoptimized,\n ref,\n ...rest\n}) => {\n const [loadingFail, setLoadingFail] = useState(false);\n const genCdnUrl = useCdnFn();\n\n const emojiUrl = useMemo(() => genEmojiUrl(emoji, type), [type, emoji]);\n\n if (type === 'raw' || !emojiUrl || loadingFail)\n return (\n <Center\n className={cx(styles.container, className)}\n flex={'none'}\n height={size}\n ref={ref}\n role={'img'}\n style={{ fontSize: size * 0.9, ...style }}\n width={size}\n {...rest}\n >\n {emoji}\n </Center>\n );\n\n return (\n <Img\n alt={emoji}\n className={className}\n height={size}\n loading={'lazy'}\n ref={ref}\n src={genCdnUrl(emojiUrl)}\n style={{ flex: 'none', ...style }}\n unoptimized={unoptimized}\n width={size}\n onError={() => setLoadingFail(true)}\n {...rest}\n />\n );\n};\n\nFluentEmoji.displayName = 'FluentEmoji';\n\nexport default FluentEmoji;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,eAAqC,EACzC,OACA,WACA,OACA,OAAO,MACP,OAAO,IACP,aACA,KACA,GAAG,WACC;CACJ,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CACpD,MAAM,YAAY,SAAS;CAE3B,MAAM,WAAW,cAAc,YAAY,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;CAEtE,IAAI,SAAS,SAAS,CAAC,YAAY,aACjC,OACE,oBAAC,QAAD;EACE,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,MAAM;EACN,QAAQ;EACH;EACL,MAAM;EACN,OAAO;GAAE,UAAU,OAAO;GAAK,GAAG;EAAM;EACxC,OAAO;EACP,GAAI;
|
|
1
|
+
{"version":3,"file":"FluentEmoji.mjs","names":[],"sources":["../../src/FluentEmoji/FluentEmoji.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo, useState } from 'react';\n\nimport { useCdnFn } from '@/ConfigProvider';\nimport { Center } from '@/Flex';\nimport Img from '@/Img';\n\nimport { styles } from './style';\nimport type { FluentEmojiProps } from './type';\nimport { genEmojiUrl } from './utils';\n\nconst FluentEmoji: FC<FluentEmojiProps> = ({\n emoji,\n className,\n style,\n type = '3d',\n size = 40,\n unoptimized,\n ref,\n ...rest\n}) => {\n const [loadingFail, setLoadingFail] = useState(false);\n const genCdnUrl = useCdnFn();\n\n const emojiUrl = useMemo(() => genEmojiUrl(emoji, type), [type, emoji]);\n\n if (type === 'raw' || !emojiUrl || loadingFail)\n return (\n <Center\n className={cx(styles.container, className)}\n flex={'none'}\n height={size}\n ref={ref}\n role={'img'}\n style={{ fontSize: size * 0.9, ...style }}\n width={size}\n {...rest}\n >\n {emoji}\n </Center>\n );\n\n return (\n <Img\n alt={emoji}\n className={className}\n height={size}\n loading={'lazy'}\n ref={ref}\n src={genCdnUrl(emojiUrl)}\n style={{ flex: 'none', ...style }}\n unoptimized={unoptimized}\n width={size}\n onError={() => setLoadingFail(true)}\n {...rest}\n />\n );\n};\n\nFluentEmoji.displayName = 'FluentEmoji';\n\nexport default FluentEmoji;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,eAAqC,EACzC,OACA,WACA,OACA,OAAO,MACP,OAAO,IACP,aACA,KACA,GAAG,WACC;CACJ,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CACpD,MAAM,YAAY,SAAS;CAE3B,MAAM,WAAW,cAAc,YAAY,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;CAEtE,IAAI,SAAS,SAAS,CAAC,YAAY,aACjC,OACE,oBAAC,QAAD;EACE,WAAW,GAAG,OAAO,WAAW,SAAS;EACzC,MAAM;EACN,QAAQ;EACH;EACL,MAAM;EACN,OAAO;GAAE,UAAU,OAAO;GAAK,GAAG;EAAM;EACxC,OAAO;EACP,GAAI;EAEH,UAAA;CACK,CAAA;CAGZ,OACE,oBAAC,KAAD;EACE,KAAK;EACM;EACX,QAAQ;EACR,SAAS;EACJ;EACL,KAAK,UAAU,QAAQ;EACvB,OAAO;GAAE,MAAM;GAAQ,GAAG;EAAM;EACnB;EACb,OAAO;EACP,eAAe,eAAe,IAAI;EAClC,GAAI;CACL,CAAA;AAEL;AAEA,YAAY,cAAc"}
|
package/es/Footer/Footer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.mjs","names":["Flexbox"],"sources":["../../src/Footer/Footer.tsx"],"sourcesContent":["'use client';\n\nimport RcFooter from 'rc-footer';\nimport { memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { FooterProps } from './type';\n\nconst Footer = memo<FooterProps>(\n ({ columns, bottom, theme, contentMaxWidth = 960, children, style, ...rest }) => {\n const isEmpty = !columns || columns?.length === 0;\n\n // Convert contentMaxWidth prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--footer-content-max-width': `${contentMaxWidth}px`,\n }),\n [contentMaxWidth],\n );\n\n return (\n <Flexbox\n as={'section'}\n className={styles.root}\n width={'100%'}\n style={{\n ...cssVariables,\n ...style,\n }}\n {...rest}\n >\n <RcFooter\n bottom={bottom}\n className={isEmpty ? styles.footerEmpty : styles.footer}\n columns={columns}\n theme={theme}\n />\n {children}\n </Flexbox>\n );\n },\n);\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n"],"mappings":";;;;;;;AAUA,MAAM,SAAS,MACZ,EAAE,SAAS,QAAQ,OAAO,kBAAkB,KAAK,UAAU,OAAO,GAAG,WAAW;CAC/E,MAAM,UAAU,CAAC,WAAW,SAAS,WAAW;CAGhD,MAAM,eAAe,eACZ,EACL,8BAA8B,GAAG,gBAAgB,IACnD,IACA,CAAC,eAAe,CAClB;CAEA,OACE,qBAACA,mBAAD;EACE,IAAI;EACJ,WAAW,OAAO;EAClB,OAAO;EACP,OAAO;GACL,GAAG;GACH,GAAG;EACL;EACA,GAAI;
|
|
1
|
+
{"version":3,"file":"Footer.mjs","names":["Flexbox"],"sources":["../../src/Footer/Footer.tsx"],"sourcesContent":["'use client';\n\nimport RcFooter from 'rc-footer';\nimport { memo, useMemo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { FooterProps } from './type';\n\nconst Footer = memo<FooterProps>(\n ({ columns, bottom, theme, contentMaxWidth = 960, children, style, ...rest }) => {\n const isEmpty = !columns || columns?.length === 0;\n\n // Convert contentMaxWidth prop to CSS variable\n const cssVariables = useMemo<Record<string, string>>(\n () => ({\n '--footer-content-max-width': `${contentMaxWidth}px`,\n }),\n [contentMaxWidth],\n );\n\n return (\n <Flexbox\n as={'section'}\n className={styles.root}\n width={'100%'}\n style={{\n ...cssVariables,\n ...style,\n }}\n {...rest}\n >\n <RcFooter\n bottom={bottom}\n className={isEmpty ? styles.footerEmpty : styles.footer}\n columns={columns}\n theme={theme}\n />\n {children}\n </Flexbox>\n );\n },\n);\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n"],"mappings":";;;;;;;AAUA,MAAM,SAAS,MACZ,EAAE,SAAS,QAAQ,OAAO,kBAAkB,KAAK,UAAU,OAAO,GAAG,WAAW;CAC/E,MAAM,UAAU,CAAC,WAAW,SAAS,WAAW;CAGhD,MAAM,eAAe,eACZ,EACL,8BAA8B,GAAG,gBAAgB,IACnD,IACA,CAAC,eAAe,CAClB;CAEA,OACE,qBAACA,mBAAD;EACE,IAAI;EACJ,WAAW,OAAO;EAClB,OAAO;EACP,OAAO;GACL,GAAG;GACH,GAAG;EACL;EACA,GAAI;EARN,UAAA,CAUE,oBAAC,UAAD;GACU;GACR,WAAW,UAAU,OAAO,cAAc,OAAO;GACxC;GACF;EACR,CAAA,GACA,QACM;;AAEb,CACF;AAEA,OAAO,cAAc"}
|
package/es/Form/Form.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.mjs","names":["Form","AntForm"],"sources":["../../src/Form/Form.tsx"],"sourcesContent":["'use client';\n\nimport { Form as AntForm } from 'antd';\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo, useCallback, useState } from 'react';\n\nimport FormFlatGroup from './components/FormFlatGroup';\nimport FormGroup from './components/FormGroup';\nimport FormItem from './components/FormItem';\nimport { FormProvider } from './components/FormProvider';\nimport { variants } from './style';\nimport type { FormGroupItemType, FormItemProps, FormProps } from './type';\n\nconst Form = memo<FormProps>(\n ({\n className,\n itemMinWidth,\n footer,\n form,\n items = [],\n children,\n itemsType = 'group',\n itemVariant,\n variant = 'borderless',\n classNames,\n styles: customStyles,\n gap,\n style,\n collapsible,\n defaultActiveKey,\n initialValues,\n activeKey,\n onCollapse,\n onFinish,\n ref,\n layout,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const [submitLoading, setSubmitLoading] = useState(false);\n\n const mapFlat = useCallback(\n (item: FormItemProps, itemIndex: number) => (\n <FormItem\n className={classNames?.item}\n divider={itemIndex !== 0}\n key={itemIndex}\n minWidth={itemMinWidth}\n style={customStyles?.item}\n variant={variant}\n {...item}\n />\n ),\n [itemMinWidth, variant, classNames, customStyles],\n );\n\n const mapTree = useCallback(\n (group: FormGroupItemType, groupIndex: number) => {\n const key = group?.key || groupIndex;\n return (\n <FormGroup\n active={activeKey && group?.key ? activeKey.includes(key) : undefined}\n className={classNames?.group}\n classNames={classNames}\n collapsible={isUndefined(group.collapsible) ? collapsible : group.collapsible}\n extra={group?.extra}\n icon={group?.icon}\n key={key}\n keyValue={key}\n style={customStyles?.group}\n styles={customStyles}\n title={group.title}\n variant={group?.variant || variant}\n defaultActive={\n defaultActiveKey && group?.key ? defaultActiveKey.includes(key) : group?.defaultActive\n }\n onCollapse={(active) => {\n let keys: (string | number)[] = activeKey || defaultActiveKey || [];\n keys = keys.filter((k) => k !== key);\n onCollapse?.(active ? [...keys, key] : keys);\n }}\n >\n {Array.isArray(group.children)\n ? group.children.filter((item) => !item.hidden).map((item, i) => mapFlat(item, i))\n : group.children}\n </FormGroup>\n );\n },\n [activeKey, collapsible, defaultActiveKey, onCollapse, variant, classNames, customStyles],\n );\n\n return (\n <FormProvider\n config={{\n form,\n initialValues,\n submitLoading,\n }}\n >\n <AntForm\n className={cx(variants({ variant }), className)}\n colon={false}\n form={form}\n initialValues={initialValues}\n layout={layout || (mobile ? 'vertical' : 'horizontal')}\n ref={ref}\n variant={itemVariant}\n style={{\n gap,\n ...style,\n }}\n onFinish={async (...finishProps) => {\n if (!onFinish) return;\n setSubmitLoading(true);\n await onFinish(...finishProps);\n setSubmitLoading(false);\n }}\n {...rest}\n >\n {items && items?.length > 0 ? (\n itemsType === 'group' ? (\n (items as FormGroupItemType[])?.map((item, i) => mapTree(item, i))\n ) : (\n <FormFlatGroup\n className={classNames?.group}\n style={customStyles?.group}\n variant={variant}\n >\n {(items as FormItemProps[])\n ?.filter((item) => !item.hidden)\n .map((item, i) => mapFlat(item, i))}\n </FormFlatGroup>\n )\n ) : undefined}\n {children}\n {footer}\n </AntForm>\n </FormProvider>\n );\n },\n);\n\nForm.displayName = 'Form';\n\nexport default Form;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,SAAO,MACV,EACC,WACA,cACA,QACA,MACA,QAAQ,CAAC,GACT,UACA,YAAY,SACZ,aACA,UAAU,cACV,YACA,QAAQ,cACR,KACA,OACA,aACA,kBACA,eACA,WACA,YACA,UACA,KACA,QACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CAExD,MAAM,UAAU,aACb,MAAqB,cACpB,oBAAC,UAAD;EACE,WAAW,YAAY;EACvB,SAAS,cAAc;EAEvB,UAAU;EACV,OAAO,cAAc;EACZ;EACT,GAAI;CACL,GALM,SAKN,GAEH;EAAC;EAAc;EAAS;EAAY;CAAY,CAClD;CAEA,MAAM,UAAU,aACb,OAA0B,eAAuB;EAChD,MAAM,MAAM,OAAO,OAAO;EAC1B,OACE,oBAAC,WAAD;GACE,QAAQ,aAAa,OAAO,MAAM,UAAU,SAAS,GAAG,IAAI,KAAA;GAC5D,WAAW,YAAY;GACX;GACZ,aAAa,YAAY,MAAM,WAAW,IAAI,cAAc,MAAM;GAClE,OAAO,OAAO;GACd,MAAM,OAAO;GAEb,UAAU;GACV,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO,MAAM;GACb,SAAS,OAAO,WAAW;GAC3B,eACE,oBAAoB,OAAO,MAAM,iBAAiB,SAAS,GAAG,IAAI,OAAO;GAE3E,aAAa,WAAW;IACtB,IAAI,OAA4B,aAAa,oBAAoB,CAAC;IAClE,OAAO,KAAK,QAAQ,MAAM,MAAM,GAAG;IACnC,aAAa,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,IAAI;GAC7C;
|
|
1
|
+
{"version":3,"file":"Form.mjs","names":["Form","AntForm"],"sources":["../../src/Form/Form.tsx"],"sourcesContent":["'use client';\n\nimport { Form as AntForm } from 'antd';\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo, useCallback, useState } from 'react';\n\nimport FormFlatGroup from './components/FormFlatGroup';\nimport FormGroup from './components/FormGroup';\nimport FormItem from './components/FormItem';\nimport { FormProvider } from './components/FormProvider';\nimport { variants } from './style';\nimport type { FormGroupItemType, FormItemProps, FormProps } from './type';\n\nconst Form = memo<FormProps>(\n ({\n className,\n itemMinWidth,\n footer,\n form,\n items = [],\n children,\n itemsType = 'group',\n itemVariant,\n variant = 'borderless',\n classNames,\n styles: customStyles,\n gap,\n style,\n collapsible,\n defaultActiveKey,\n initialValues,\n activeKey,\n onCollapse,\n onFinish,\n ref,\n layout,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const [submitLoading, setSubmitLoading] = useState(false);\n\n const mapFlat = useCallback(\n (item: FormItemProps, itemIndex: number) => (\n <FormItem\n className={classNames?.item}\n divider={itemIndex !== 0}\n key={itemIndex}\n minWidth={itemMinWidth}\n style={customStyles?.item}\n variant={variant}\n {...item}\n />\n ),\n [itemMinWidth, variant, classNames, customStyles],\n );\n\n const mapTree = useCallback(\n (group: FormGroupItemType, groupIndex: number) => {\n const key = group?.key || groupIndex;\n return (\n <FormGroup\n active={activeKey && group?.key ? activeKey.includes(key) : undefined}\n className={classNames?.group}\n classNames={classNames}\n collapsible={isUndefined(group.collapsible) ? collapsible : group.collapsible}\n extra={group?.extra}\n icon={group?.icon}\n key={key}\n keyValue={key}\n style={customStyles?.group}\n styles={customStyles}\n title={group.title}\n variant={group?.variant || variant}\n defaultActive={\n defaultActiveKey && group?.key ? defaultActiveKey.includes(key) : group?.defaultActive\n }\n onCollapse={(active) => {\n let keys: (string | number)[] = activeKey || defaultActiveKey || [];\n keys = keys.filter((k) => k !== key);\n onCollapse?.(active ? [...keys, key] : keys);\n }}\n >\n {Array.isArray(group.children)\n ? group.children.filter((item) => !item.hidden).map((item, i) => mapFlat(item, i))\n : group.children}\n </FormGroup>\n );\n },\n [activeKey, collapsible, defaultActiveKey, onCollapse, variant, classNames, customStyles],\n );\n\n return (\n <FormProvider\n config={{\n form,\n initialValues,\n submitLoading,\n }}\n >\n <AntForm\n className={cx(variants({ variant }), className)}\n colon={false}\n form={form}\n initialValues={initialValues}\n layout={layout || (mobile ? 'vertical' : 'horizontal')}\n ref={ref}\n variant={itemVariant}\n style={{\n gap,\n ...style,\n }}\n onFinish={async (...finishProps) => {\n if (!onFinish) return;\n setSubmitLoading(true);\n await onFinish(...finishProps);\n setSubmitLoading(false);\n }}\n {...rest}\n >\n {items && items?.length > 0 ? (\n itemsType === 'group' ? (\n (items as FormGroupItemType[])?.map((item, i) => mapTree(item, i))\n ) : (\n <FormFlatGroup\n className={classNames?.group}\n style={customStyles?.group}\n variant={variant}\n >\n {(items as FormItemProps[])\n ?.filter((item) => !item.hidden)\n .map((item, i) => mapFlat(item, i))}\n </FormFlatGroup>\n )\n ) : undefined}\n {children}\n {footer}\n </AntForm>\n </FormProvider>\n );\n },\n);\n\nForm.displayName = 'Form';\n\nexport default Form;\n"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,SAAO,MACV,EACC,WACA,cACA,QACA,MACA,QAAQ,CAAC,GACT,UACA,YAAY,SACZ,aACA,UAAU,cACV,YACA,QAAQ,cACR,KACA,OACA,aACA,kBACA,eACA,WACA,YACA,UACA,KACA,QACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CAExD,MAAM,UAAU,aACb,MAAqB,cACpB,oBAAC,UAAD;EACE,WAAW,YAAY;EACvB,SAAS,cAAc;EAEvB,UAAU;EACV,OAAO,cAAc;EACZ;EACT,GAAI;CACL,GALM,SAKN,GAEH;EAAC;EAAc;EAAS;EAAY;CAAY,CAClD;CAEA,MAAM,UAAU,aACb,OAA0B,eAAuB;EAChD,MAAM,MAAM,OAAO,OAAO;EAC1B,OACE,oBAAC,WAAD;GACE,QAAQ,aAAa,OAAO,MAAM,UAAU,SAAS,GAAG,IAAI,KAAA;GAC5D,WAAW,YAAY;GACX;GACZ,aAAa,YAAY,MAAM,WAAW,IAAI,cAAc,MAAM;GAClE,OAAO,OAAO;GACd,MAAM,OAAO;GAEb,UAAU;GACV,OAAO,cAAc;GACrB,QAAQ;GACR,OAAO,MAAM;GACb,SAAS,OAAO,WAAW;GAC3B,eACE,oBAAoB,OAAO,MAAM,iBAAiB,SAAS,GAAG,IAAI,OAAO;GAE3E,aAAa,WAAW;IACtB,IAAI,OAA4B,aAAa,oBAAoB,CAAC;IAClE,OAAO,KAAK,QAAQ,MAAM,MAAM,GAAG;IACnC,aAAa,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,IAAI;GAC7C;GAEC,UAAA,MAAM,QAAQ,MAAM,QAAQ,IACzB,MAAM,SAAS,QAAQ,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC,CAAC,IAC/E,MAAM;EACD,GAlBJ,GAkBI;CAEf,GACA;EAAC;EAAW;EAAa;EAAkB;EAAY;EAAS;EAAY;CAAY,CAC1F;CAEA,OACE,oBAAC,cAAD;EACE,QAAQ;GACN;GACA;GACA;EACF;EAEA,UAAA,qBAACC,MAAD;GACE,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC,GAAG,SAAS;GAC9C,OAAO;GACD;GACS;GACf,QAAQ,WAAW,SAAS,aAAa;GACpC;GACL,SAAS;GACT,OAAO;IACL;IACA,GAAG;GACL;GACA,UAAU,OAAO,GAAG,gBAAgB;IAClC,IAAI,CAAC,UAAU;IACf,iBAAiB,IAAI;IACrB,MAAM,SAAS,GAAG,WAAW;IAC7B,iBAAiB,KAAK;GACxB;GACA,GAAI;GAlBN,UAAA;IAoBG,SAAS,OAAO,SAAS,IACxB,cAAc,UACX,OAA+B,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC,CAAC,IAEjE,oBAAC,eAAD;KACE,WAAW,YAAY;KACvB,OAAO,cAAc;KACZ;KAEP,UAAA,OACE,QAAQ,SAAS,CAAC,KAAK,MAAM,CAAC,CAC/B,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC,CAAC;IACvB,CAAA,IAEf,KAAA;IACH;IACA;GACM;;CACG,CAAA;AAElB,CACF;AAEA,OAAK,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormGroup.mjs","names":["Flexbox"],"sources":["../../../src/Form/components/FormGroup.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo } from 'react';\n\nimport Collapse from '@/Collapse';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { groupStyles, titleVariants } from '../style';\nimport type { FormGroupProps } from '../type';\n\nconst FormGroup = memo<FormGroupProps>(\n ({\n className,\n icon,\n title,\n children,\n extra,\n variant = 'borderless',\n defaultActive = true,\n collapsible,\n active,\n keyValue = 'group',\n onCollapse,\n desc,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const styles = groupStyles;\n const isBorderless = variant === 'borderless';\n\n const defaultCollapsible = isUndefined(collapsible) ? !isBorderless : collapsible;\n\n const titleContent = (\n <Flexbox horizontal className={cx(titleVariants({ variant }), styles.titleMobile)} gap={8}>\n {icon && <Icon icon={icon} />}\n {title}\n </Flexbox>\n );\n\n if (mobile)\n return (\n <Flexbox className={className}>\n <Flexbox horizontal className={styles.mobileGroupHeader} justify={'space-between'}>\n {titleContent}\n {extra}\n </Flexbox>\n <div className={styles.mobileGroupBody}>{children}</div>\n </Flexbox>\n );\n\n return (\n <Collapse\n activeKey={isUndefined(active) ? undefined : active ? [keyValue] : []}\n className={className}\n collapsible={defaultCollapsible}\n defaultActiveKey={defaultActive ? [keyValue] : undefined}\n variant={variant}\n classNames={{\n header: isBorderless ? styles.titleBorderless : undefined,\n title: isBorderless ? styles.titleBorderless : undefined,\n }}\n items={[\n {\n children,\n desc,\n extra,\n icon,\n key: keyValue,\n label: title,\n },\n ]}\n onChange={(v) => onCollapse?.(v.length > 0)}\n {...rest}\n />\n );\n },\n);\n\nFormGroup.displayName = 'FormGroup';\n\nexport default FormGroup;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,MACf,EACC,WACA,MACA,OACA,UACA,OACA,UAAU,cACV,gBAAgB,MAChB,aACA,QACA,WAAW,SACX,YACA,MACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,SAAS;CACf,MAAM,eAAe,YAAY;CAEjC,MAAM,qBAAqB,YAAY,WAAW,IAAI,CAAC,eAAe;CAEtE,MAAM,eACJ,qBAACA,mBAAD;EAAS,YAAA;EAAW,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,OAAO,WAAW;EAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"FormGroup.mjs","names":["Flexbox"],"sources":["../../../src/Form/components/FormGroup.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { isUndefined } from 'es-toolkit/compat';\nimport { memo } from 'react';\n\nimport Collapse from '@/Collapse';\nimport { Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\n\nimport { groupStyles, titleVariants } from '../style';\nimport type { FormGroupProps } from '../type';\n\nconst FormGroup = memo<FormGroupProps>(\n ({\n className,\n icon,\n title,\n children,\n extra,\n variant = 'borderless',\n defaultActive = true,\n collapsible,\n active,\n keyValue = 'group',\n onCollapse,\n desc,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const styles = groupStyles;\n const isBorderless = variant === 'borderless';\n\n const defaultCollapsible = isUndefined(collapsible) ? !isBorderless : collapsible;\n\n const titleContent = (\n <Flexbox horizontal className={cx(titleVariants({ variant }), styles.titleMobile)} gap={8}>\n {icon && <Icon icon={icon} />}\n {title}\n </Flexbox>\n );\n\n if (mobile)\n return (\n <Flexbox className={className}>\n <Flexbox horizontal className={styles.mobileGroupHeader} justify={'space-between'}>\n {titleContent}\n {extra}\n </Flexbox>\n <div className={styles.mobileGroupBody}>{children}</div>\n </Flexbox>\n );\n\n return (\n <Collapse\n activeKey={isUndefined(active) ? undefined : active ? [keyValue] : []}\n className={className}\n collapsible={defaultCollapsible}\n defaultActiveKey={defaultActive ? [keyValue] : undefined}\n variant={variant}\n classNames={{\n header: isBorderless ? styles.titleBorderless : undefined,\n title: isBorderless ? styles.titleBorderless : undefined,\n }}\n items={[\n {\n children,\n desc,\n extra,\n icon,\n key: keyValue,\n label: title,\n },\n ]}\n onChange={(v) => onCollapse?.(v.length > 0)}\n {...rest}\n />\n );\n },\n);\n\nFormGroup.displayName = 'FormGroup';\n\nexport default FormGroup;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,MACf,EACC,WACA,MACA,OACA,UACA,OACA,UAAU,cACV,gBAAgB,MAChB,aACA,QACA,WAAW,SACX,YACA,MACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,SAAS;CACf,MAAM,eAAe,YAAY;CAEjC,MAAM,qBAAqB,YAAY,WAAW,IAAI,CAAC,eAAe;CAEtE,MAAM,eACJ,qBAACA,mBAAD;EAAS,YAAA;EAAW,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,OAAO,WAAW;EAAG,KAAK;EAAxF,UAAA,CACG,QAAQ,oBAAC,MAAD,EAAY,KAAO,CAAA,GAC3B,KACM;;CAGX,IAAI,QACF,OACE,qBAACA,mBAAD;EAAoB;EAApB,UAAA,CACE,qBAACA,mBAAD;GAAS,YAAA;GAAW,WAAW,OAAO;GAAmB,SAAS;GAAlE,UAAA,CACG,cACA,KACM;EACT,CAAA,GAAA,oBAAC,OAAD;GAAK,WAAW,OAAO;GAAkB;EAAc,CAAA,CAChD;;CAGb,OACE,oBAAC,UAAD;EACE,WAAW,YAAY,MAAM,IAAI,KAAA,IAAY,SAAS,CAAC,QAAQ,IAAI,CAAC;EACzD;EACX,aAAa;EACb,kBAAkB,gBAAgB,CAAC,QAAQ,IAAI,KAAA;EACtC;EACT,YAAY;GACV,QAAQ,eAAe,OAAO,kBAAkB,KAAA;GAChD,OAAO,eAAe,OAAO,kBAAkB,KAAA;EACjD;EACA,OAAO,CACL;GACE;GACA;GACA;GACA;GACA,KAAK;GACL,OAAO;EACT,CACF;EACA,WAAW,MAAM,aAAa,EAAE,SAAS,CAAC;EAC1C,GAAI;CACL,CAAA;AAEL,CACF;AAEA,UAAU,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormSubmitFooter.mjs","names":["formMessages","Button","Flexbox"],"sources":["../../../src/Form/components/FormSubmitFooter.tsx"],"sourcesContent":["'use client';\n\nimport { Form } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport isEqual from 'fast-deep-equal';\nimport { InfoIcon } from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport formMessages from '@/i18n/resources/en/form';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\nimport { useMotionComponent } from '@/MotionProvider';\n\nimport { submitFooterStyles } from '../style';\nimport { type FormSubmitFooterProps } from '../type';\nimport { useFormContext } from './FormProvider';\nimport { merge, removeUndefined } from './merge';\n\nconst FormSubmitFooter = memo<FormSubmitFooterProps>(\n ({\n enableReset = true,\n buttonProps,\n float,\n onReset,\n saveButtonProps,\n resetButtonProps,\n enableUnsavedWarning,\n children,\n texts,\n className,\n ...rest\n }) => {\n const Motion = useMotionComponent();\n const { form, initialValues, submitLoading } = useFormContext();\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const values = Form.useWatch([], form) || {};\n const { t } = useTranslation(formMessages);\n\n const styles = submitFooterStyles;\n\n const v = useMemo(() => removeUndefined(values), [values]);\n\n const initialV = useMemo(() => removeUndefined(initialValues), [initialValues]);\n\n const mergedV = useMemo(() => merge(initialV, v), [v, initialV]);\n\n useEffect(() => {\n setHasUnsavedChanges(!isEqual(mergedV, initialV));\n }, [mergedV, initialV, submitLoading]);\n\n const unsavedWarningText = texts?.unSavedWarning ?? t('form.unsavedWarning');\n const unsavedText = texts?.unSaved ?? t('form.unsavedChanges');\n const resetText = texts?.reset ?? t('form.reset');\n const submitText = texts?.submit ?? t('form.submit');\n\n const fn = (e: BeforeUnloadEvent) => {\n if (hasUnsavedChanges) {\n e.returnValue = unsavedWarningText;\n } else {\n delete e.returnValue;\n }\n };\n\n useEffect(() => {\n if (!enableUnsavedWarning) return;\n if (typeof window === 'undefined' || !hasUnsavedChanges) return;\n // 添加离开页面的提示\n window.addEventListener('beforeunload', fn);\n return () => window.removeEventListener('beforeunload', fn);\n }, [enableUnsavedWarning, hasUnsavedChanges, unsavedWarningText]);\n\n const content = (\n <>\n {(float || hasUnsavedChanges) && (\n <>\n <Icon\n color={cssVar.colorTextDescription}\n icon={InfoIcon}\n size={12}\n style={{ marginLeft: 8 }}\n />\n <span\n style={{\n color: cssVar.colorTextDescription,\n flex: 'none',\n fontSize: 12,\n marginRight: float ? 16 : 4,\n }}\n >\n {unsavedText}\n </span>\n </>\n )}\n {children}\n {enableReset && (float || hasUnsavedChanges) && (\n <Button\n htmlType=\"button\"\n shape={float ? 'round' : undefined}\n variant={'filled'}\n onClick={() => {\n onReset?.(v, initialV);\n form?.resetFields();\n }}\n {...buttonProps}\n {...resetButtonProps}\n >\n {resetText}\n </Button>\n )}\n <Button\n htmlType=\"submit\"\n loading={submitLoading}\n shape={float ? 'round' : undefined}\n type=\"primary\"\n {...buttonProps}\n {...saveButtonProps}\n >\n {submitText}\n </Button>\n </>\n );\n\n if (!float)\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.footer, className)}\n gap={8}\n justify={'flex-end'}\n {...rest}\n >\n {content}\n </Flexbox>\n );\n\n return (\n <Motion.div\n animate={hasUnsavedChanges ? 'visible' : 'hidden'}\n className={styles.floatFooter}\n initial={'hidden'}\n transition={{ duration: 0.1, ease: 'easeOut' }}\n variants={{\n hidden: {\n opacity: 0,\n x: '-50%',\n y: 20,\n },\n visible: {\n opacity: 1,\n x: '-50%',\n y: 0,\n },\n }}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n gap={8}\n justify={'center'}\n {...rest}\n >\n {content}\n </Flexbox>\n </Motion.div>\n );\n },\n);\n\nFormSubmitFooter.displayName = 'FormSubmitFooter';\n\nexport default FormSubmitFooter;\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,MAAM,mBAAmB,MACtB,EACC,cAAc,MACd,aACA,OACA,SACA,iBACA,kBACA,sBACA,UACA,OACA,WACA,GAAG,WACC;CACJ,MAAM,SAAS,mBAAmB;CAClC,MAAM,EAAE,MAAM,eAAe,kBAAkB,eAAe;CAC9D,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,KAAK;CAChE,MAAM,SAAS,KAAK,SAAS,CAAC,GAAG,IAAI,KAAK,CAAC;CAC3C,MAAM,EAAE,MAAM,eAAeA,YAAY;CAEzC,MAAM,SAAS;CAEf,MAAM,IAAI,cAAc,gBAAgB,MAAM,GAAG,CAAC,MAAM,CAAC;CAEzD,MAAM,WAAW,cAAc,gBAAgB,aAAa,GAAG,CAAC,aAAa,CAAC;CAE9E,MAAM,UAAU,cAAc,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;CAE/D,gBAAgB;EACd,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,CAAC;CAClD,GAAG;EAAC;EAAS;EAAU;CAAa,CAAC;CAErC,MAAM,qBAAqB,OAAO,kBAAkB,EAAE,qBAAqB;CAC3E,MAAM,cAAc,OAAO,WAAW,EAAE,qBAAqB;CAC7D,MAAM,YAAY,OAAO,SAAS,EAAE,YAAY;CAChD,MAAM,aAAa,OAAO,UAAU,EAAE,aAAa;CAEnD,MAAM,MAAM,MAAyB;EACnC,IAAI,mBACF,EAAE,cAAc;OAEhB,OAAO,EAAE;CAEb;CAEA,gBAAgB;EACd,IAAI,CAAC,sBAAsB;EAC3B,IAAI,OAAO,WAAW,eAAe,CAAC,mBAAmB;EAEzD,OAAO,iBAAiB,gBAAgB,EAAE;EAC1C,aAAa,OAAO,oBAAoB,gBAAgB,EAAE;CAC5D,GAAG;EAAC;EAAsB;EAAmB;CAAkB,CAAC;CAEhE,MAAM,UACJ,qBAAA,YAAA,EAAA,UAAA;GACI,SAAS,sBACT,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,MAAD;GACE,OAAO,OAAO;GACd,MAAM;GACN,MAAM;GACN,OAAO,EAAE,YAAY,EAAE;EACxB,CAAA,GACD,oBAAC,QAAD;GACE,OAAO;IACL,OAAO,OAAO;IACd,MAAM;IACN,UAAU;IACV,aAAa,QAAQ,KAAK;GAC5B;
|
|
1
|
+
{"version":3,"file":"FormSubmitFooter.mjs","names":["formMessages","Button","Flexbox"],"sources":["../../../src/Form/components/FormSubmitFooter.tsx"],"sourcesContent":["'use client';\n\nimport { Form } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport isEqual from 'fast-deep-equal';\nimport { InfoIcon } from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport formMessages from '@/i18n/resources/en/form';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\nimport { useMotionComponent } from '@/MotionProvider';\n\nimport { submitFooterStyles } from '../style';\nimport { type FormSubmitFooterProps } from '../type';\nimport { useFormContext } from './FormProvider';\nimport { merge, removeUndefined } from './merge';\n\nconst FormSubmitFooter = memo<FormSubmitFooterProps>(\n ({\n enableReset = true,\n buttonProps,\n float,\n onReset,\n saveButtonProps,\n resetButtonProps,\n enableUnsavedWarning,\n children,\n texts,\n className,\n ...rest\n }) => {\n const Motion = useMotionComponent();\n const { form, initialValues, submitLoading } = useFormContext();\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const values = Form.useWatch([], form) || {};\n const { t } = useTranslation(formMessages);\n\n const styles = submitFooterStyles;\n\n const v = useMemo(() => removeUndefined(values), [values]);\n\n const initialV = useMemo(() => removeUndefined(initialValues), [initialValues]);\n\n const mergedV = useMemo(() => merge(initialV, v), [v, initialV]);\n\n useEffect(() => {\n setHasUnsavedChanges(!isEqual(mergedV, initialV));\n }, [mergedV, initialV, submitLoading]);\n\n const unsavedWarningText = texts?.unSavedWarning ?? t('form.unsavedWarning');\n const unsavedText = texts?.unSaved ?? t('form.unsavedChanges');\n const resetText = texts?.reset ?? t('form.reset');\n const submitText = texts?.submit ?? t('form.submit');\n\n const fn = (e: BeforeUnloadEvent) => {\n if (hasUnsavedChanges) {\n e.returnValue = unsavedWarningText;\n } else {\n delete e.returnValue;\n }\n };\n\n useEffect(() => {\n if (!enableUnsavedWarning) return;\n if (typeof window === 'undefined' || !hasUnsavedChanges) return;\n // 添加离开页面的提示\n window.addEventListener('beforeunload', fn);\n return () => window.removeEventListener('beforeunload', fn);\n }, [enableUnsavedWarning, hasUnsavedChanges, unsavedWarningText]);\n\n const content = (\n <>\n {(float || hasUnsavedChanges) && (\n <>\n <Icon\n color={cssVar.colorTextDescription}\n icon={InfoIcon}\n size={12}\n style={{ marginLeft: 8 }}\n />\n <span\n style={{\n color: cssVar.colorTextDescription,\n flex: 'none',\n fontSize: 12,\n marginRight: float ? 16 : 4,\n }}\n >\n {unsavedText}\n </span>\n </>\n )}\n {children}\n {enableReset && (float || hasUnsavedChanges) && (\n <Button\n htmlType=\"button\"\n shape={float ? 'round' : undefined}\n variant={'filled'}\n onClick={() => {\n onReset?.(v, initialV);\n form?.resetFields();\n }}\n {...buttonProps}\n {...resetButtonProps}\n >\n {resetText}\n </Button>\n )}\n <Button\n htmlType=\"submit\"\n loading={submitLoading}\n shape={float ? 'round' : undefined}\n type=\"primary\"\n {...buttonProps}\n {...saveButtonProps}\n >\n {submitText}\n </Button>\n </>\n );\n\n if (!float)\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={cx(styles.footer, className)}\n gap={8}\n justify={'flex-end'}\n {...rest}\n >\n {content}\n </Flexbox>\n );\n\n return (\n <Motion.div\n animate={hasUnsavedChanges ? 'visible' : 'hidden'}\n className={styles.floatFooter}\n initial={'hidden'}\n transition={{ duration: 0.1, ease: 'easeOut' }}\n variants={{\n hidden: {\n opacity: 0,\n x: '-50%',\n y: 20,\n },\n visible: {\n opacity: 1,\n x: '-50%',\n y: 0,\n },\n }}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n gap={8}\n justify={'center'}\n {...rest}\n >\n {content}\n </Flexbox>\n </Motion.div>\n );\n },\n);\n\nFormSubmitFooter.displayName = 'FormSubmitFooter';\n\nexport default FormSubmitFooter;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormTitle.mjs","names":["Flexbox","styles"],"sources":["../../../src/Form/components/FormTitle.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Tag from '@/Tag';\n\nimport { titleStyles as styles } from '../style';\nimport type { FormTitleProps } from '../type';\n\nconst FormTitle: FC<FormTitleProps> = ({\n tag,\n title,\n desc,\n avatar,\n classNames,\n styles: customStyles,\n ...rest\n}) => {\n return (\n <Flexbox horizontal align={`center`} gap={8} {...rest}>\n {avatar}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={8}\n style={customStyles?.content}\n >\n <Flexbox\n align={'center'}\n className={cx(styles.title, classNames?.title)}\n direction={'horizontal'}\n gap={8}\n style={customStyles?.title}\n >\n {title}\n {tag && (\n <Tag className={classNames?.tag} style={customStyles?.tag}>\n {tag}\n </Tag>\n )}\n </Flexbox>\n {desc && (\n <small className={cx(styles.desc, classNames?.desc)} style={customStyles?.desc}>\n {desc}\n </small>\n )}\n </Flexbox>\n </Flexbox>\n );\n};\n\nFormTitle.displayName = 'FormTitle';\n\nexport default FormTitle;\n"],"mappings":";;;;;;;AAWA,MAAM,aAAiC,EACrC,KACA,OACA,MACA,QACA,YACA,QAAQ,cACR,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAU,KAAK;EAAG,GAAI;
|
|
1
|
+
{"version":3,"file":"FormTitle.mjs","names":["Flexbox","styles"],"sources":["../../../src/Form/components/FormTitle.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC } from 'react';\n\nimport { Flexbox } from '@/Flex';\nimport Tag from '@/Tag';\n\nimport { titleStyles as styles } from '../style';\nimport type { FormTitleProps } from '../type';\n\nconst FormTitle: FC<FormTitleProps> = ({\n tag,\n title,\n desc,\n avatar,\n classNames,\n styles: customStyles,\n ...rest\n}) => {\n return (\n <Flexbox horizontal align={`center`} gap={8} {...rest}>\n {avatar}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={8}\n style={customStyles?.content}\n >\n <Flexbox\n align={'center'}\n className={cx(styles.title, classNames?.title)}\n direction={'horizontal'}\n gap={8}\n style={customStyles?.title}\n >\n {title}\n {tag && (\n <Tag className={classNames?.tag} style={customStyles?.tag}>\n {tag}\n </Tag>\n )}\n </Flexbox>\n {desc && (\n <small className={cx(styles.desc, classNames?.desc)} style={customStyles?.desc}>\n {desc}\n </small>\n )}\n </Flexbox>\n </Flexbox>\n );\n};\n\nFormTitle.displayName = 'FormTitle';\n\nexport default FormTitle;\n"],"mappings":";;;;;;;AAWA,MAAM,aAAiC,EACrC,KACA,OACA,MACA,QACA,YACA,QAAQ,cACR,GAAG,WACC;CACJ,OACE,qBAACA,mBAAD;EAAS,YAAA;EAAW,OAAO;EAAU,KAAK;EAAG,GAAI;EAAjD,UAAA,CACG,QACD,qBAACA,mBAAD;GACE,WAAW,GAAGC,YAAO,SAAS,YAAY,OAAO;GACjD,KAAK;GACL,OAAO,cAAc;GAHvB,UAAA,CAKE,qBAACD,mBAAD;IACE,OAAO;IACP,WAAW,GAAGC,YAAO,OAAO,YAAY,KAAK;IAC7C,WAAW;IACX,KAAK;IACL,OAAO,cAAc;IALvB,UAAA,CAOG,OACA,OACC,oBAAC,KAAD;KAAK,WAAW,YAAY;KAAK,OAAO,cAAc;KACnD,UAAA;IACE,CAAA,CAEA;GACR,CAAA,GAAA,QACC,oBAAC,SAAD;IAAO,WAAW,GAAGA,YAAO,MAAM,YAAY,IAAI;IAAG,OAAO,cAAc;IACvE,UAAA;GACI,CAAA,CAEF;EACF,CAAA,CAAA;;AAEb;AAEA,UAAU,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormModal.mjs","names":["styles","staticStyles","Flexbox"],"sources":["../../src/FormModal/FormModal.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport Form from '@/Form';\nimport Modal from '@/Modal';\n\nimport { styles as staticStyles } from './style';\nimport type { FormModalProps } from './type';\n\nconst FormModal = memo<FormModalProps>(\n ({\n classNames = {},\n className,\n style,\n closable,\n styles = {},\n allowFullscreen,\n title,\n\n afterOpenChange,\n width,\n onCancel,\n centered,\n open,\n afterClose,\n destroyOnHidden,\n closeIcon,\n paddings,\n height,\n enableResponsive,\n zIndex,\n mask,\n getContainer,\n keyboard,\n focusTriggerAfterClose,\n forceRender,\n loading,\n footer,\n submitButtonProps,\n submitLoading,\n onFinish,\n submitText,\n variant = 'borderless',\n gap,\n onSubmit,\n children,\n ref,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const { form: formClassName, ...modalClassNames } = classNames;\n const { form: formStyle, ...modalStyles } =\n typeof styles === 'function' ? { form: undefined } : styles;\n\n return (\n <Modal\n afterClose={afterClose}\n afterOpenChange={afterOpenChange}\n allowFullscreen={allowFullscreen}\n centered={centered}\n className={className}\n classNames={modalClassNames}\n closable={closable}\n closeIcon={closeIcon}\n confirmLoading={submitLoading}\n destroyOnHidden={destroyOnHidden}\n enableResponsive={enableResponsive}\n focusTriggerAfterClose={focusTriggerAfterClose}\n footer={null}\n forceRender={forceRender}\n getContainer={getContainer}\n height={height}\n keyboard={keyboard}\n loading={loading}\n mask={mask}\n open={open}\n paddings={paddings}\n style={style}\n title={title}\n width={width}\n zIndex={zIndex}\n styles={\n typeof styles === 'function'\n ? styles\n : {\n ...modalStyles,\n body: {\n paddingTop: mobile ? 0 : undefined,\n ...modalStyles?.body,\n },\n }\n }\n onCancel={onCancel}\n >\n <Form\n className={cx(staticStyles.form, formClassName || '')}\n clearOnDestroy={destroyOnHidden}\n gap={gap || (variant === 'borderless' ? 24 : gap)}\n ref={ref}\n variant={variant}\n footer={\n <Flexbox horizontal align={'center'} className={staticStyles.footer} gap={8}>\n {footer || (\n <Button\n block\n htmlType=\"submit\"\n loading={submitLoading}\n type={'primary'}\n onClick={onSubmit}\n {...submitButtonProps}\n style={{\n flex: 1,\n ...submitButtonProps?.style,\n }}\n >\n {submitText || 'Submit'}\n </Button>\n )}\n </Flexbox>\n }\n style={{\n paddingBottom: 56,\n ...formStyle,\n }}\n styles={{\n title: { fontSize: 14 },\n }}\n onFinish={onFinish}\n {...rest}\n >\n {children}\n </Form>\n </Modal>\n );\n },\n);\n\nFormModal.displayName = 'FormModal';\n\nexport default FormModal;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,MACf,EACC,aAAa,CAAC,GACd,WACA,OACA,UACA,QAAA,WAAS,CAAC,GACV,iBACA,OAEA,iBACA,OACA,UACA,UACA,MACA,YACA,iBACA,WACA,UACA,QACA,kBACA,QACA,MACA,cACA,UACA,wBACA,aACA,SACA,QACA,mBACA,eACA,UACA,YACA,UAAU,cACV,KACA,UACA,UACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,EAAE,MAAM,eAAe,GAAG,oBAAoB;CACpD,MAAM,EAAE,MAAM,WAAW,GAAG,gBAC1B,OAAOA,aAAW,aAAa,EAAE,MAAM,KAAA,EAAU,IAAIA;CAEvD,OACE,oBAAC,OAAD;EACc;EACK;EACA;EACP;EACC;EACX,YAAY;EACF;EACC;EACX,gBAAgB;EACC;EACC;EACM;EACxB,QAAQ;EACK;EACC;EACN;EACE;EACD;EACH;EACA;EACI;EACH;EACA;EACA;EACC;EACR,QACE,OAAOA,aAAW,aACdA,WACA;GACE,GAAG;GACH,MAAM;IACJ,YAAY,SAAS,IAAI,KAAA;IACzB,GAAG,aAAa;GAClB;EACF;EAEI;
|
|
1
|
+
{"version":3,"file":"FormModal.mjs","names":["styles","staticStyles","Flexbox"],"sources":["../../src/FormModal/FormModal.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport Button from '@/Button';\nimport { Flexbox } from '@/Flex';\nimport Form from '@/Form';\nimport Modal from '@/Modal';\n\nimport { styles as staticStyles } from './style';\nimport type { FormModalProps } from './type';\n\nconst FormModal = memo<FormModalProps>(\n ({\n classNames = {},\n className,\n style,\n closable,\n styles = {},\n allowFullscreen,\n title,\n\n afterOpenChange,\n width,\n onCancel,\n centered,\n open,\n afterClose,\n destroyOnHidden,\n closeIcon,\n paddings,\n height,\n enableResponsive,\n zIndex,\n mask,\n getContainer,\n keyboard,\n focusTriggerAfterClose,\n forceRender,\n loading,\n footer,\n submitButtonProps,\n submitLoading,\n onFinish,\n submitText,\n variant = 'borderless',\n gap,\n onSubmit,\n children,\n ref,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n const { form: formClassName, ...modalClassNames } = classNames;\n const { form: formStyle, ...modalStyles } =\n typeof styles === 'function' ? { form: undefined } : styles;\n\n return (\n <Modal\n afterClose={afterClose}\n afterOpenChange={afterOpenChange}\n allowFullscreen={allowFullscreen}\n centered={centered}\n className={className}\n classNames={modalClassNames}\n closable={closable}\n closeIcon={closeIcon}\n confirmLoading={submitLoading}\n destroyOnHidden={destroyOnHidden}\n enableResponsive={enableResponsive}\n focusTriggerAfterClose={focusTriggerAfterClose}\n footer={null}\n forceRender={forceRender}\n getContainer={getContainer}\n height={height}\n keyboard={keyboard}\n loading={loading}\n mask={mask}\n open={open}\n paddings={paddings}\n style={style}\n title={title}\n width={width}\n zIndex={zIndex}\n styles={\n typeof styles === 'function'\n ? styles\n : {\n ...modalStyles,\n body: {\n paddingTop: mobile ? 0 : undefined,\n ...modalStyles?.body,\n },\n }\n }\n onCancel={onCancel}\n >\n <Form\n className={cx(staticStyles.form, formClassName || '')}\n clearOnDestroy={destroyOnHidden}\n gap={gap || (variant === 'borderless' ? 24 : gap)}\n ref={ref}\n variant={variant}\n footer={\n <Flexbox horizontal align={'center'} className={staticStyles.footer} gap={8}>\n {footer || (\n <Button\n block\n htmlType=\"submit\"\n loading={submitLoading}\n type={'primary'}\n onClick={onSubmit}\n {...submitButtonProps}\n style={{\n flex: 1,\n ...submitButtonProps?.style,\n }}\n >\n {submitText || 'Submit'}\n </Button>\n )}\n </Flexbox>\n }\n style={{\n paddingBottom: 56,\n ...formStyle,\n }}\n styles={{\n title: { fontSize: 14 },\n }}\n onFinish={onFinish}\n {...rest}\n >\n {children}\n </Form>\n </Modal>\n );\n },\n);\n\nFormModal.displayName = 'FormModal';\n\nexport default FormModal;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,MACf,EACC,aAAa,CAAC,GACd,WACA,OACA,UACA,QAAA,WAAS,CAAC,GACV,iBACA,OAEA,iBACA,OACA,UACA,UACA,MACA,YACA,iBACA,WACA,UACA,QACA,kBACA,QACA,MACA,cACA,UACA,wBACA,aACA,SACA,QACA,mBACA,eACA,UACA,YACA,UAAU,cACV,KACA,UACA,UACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CACjC,MAAM,EAAE,MAAM,eAAe,GAAG,oBAAoB;CACpD,MAAM,EAAE,MAAM,WAAW,GAAG,gBAC1B,OAAOA,aAAW,aAAa,EAAE,MAAM,KAAA,EAAU,IAAIA;CAEvD,OACE,oBAAC,OAAD;EACc;EACK;EACA;EACP;EACC;EACX,YAAY;EACF;EACC;EACX,gBAAgB;EACC;EACC;EACM;EACxB,QAAQ;EACK;EACC;EACN;EACE;EACD;EACH;EACA;EACI;EACH;EACA;EACA;EACC;EACR,QACE,OAAOA,aAAW,aACdA,WACA;GACE,GAAG;GACH,MAAM;IACJ,YAAY,SAAS,IAAI,KAAA;IACzB,GAAG,aAAa;GAClB;EACF;EAEI;EAEV,UAAA,oBAAC,MAAD;GACE,WAAW,GAAGC,OAAa,MAAM,iBAAiB,EAAE;GACpD,gBAAgB;GAChB,KAAK,QAAQ,YAAY,eAAe,KAAK;GACxC;GACI;GACT,QACE,oBAACC,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,WAAWD,OAAa;IAAQ,KAAK;IACvE,UAAA,UACC,oBAAC,QAAD;KACE,OAAA;KACA,UAAS;KACT,SAAS;KACT,MAAM;KACN,SAAS;KACT,GAAI;KACJ,OAAO;MACL,MAAM;MACN,GAAG,mBAAmB;KACxB;KAEC,UAAA,cAAc;IACT,CAAA;GAEH,CAAA;GAEX,OAAO;IACL,eAAe;IACf,GAAG;GACL;GACA,QAAQ,EACN,OAAO,EAAE,UAAU,GAAG,EACxB;GACU;GACV,GAAI;GAEH;EACG,CAAA;CACD,CAAA;AAEX,CACF;AAEA,UAAU,cAAc"}
|
package/es/Freeze/Freeze.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Freeze.mjs","names":[],"sources":["../../src/Freeze/Freeze.tsx"],"sourcesContent":["// @see https://barvian.me/react-exit-animations\n\n'use client';\n\nimport { Suspense, useLayoutEffect, useRef } from 'react';\n\nimport type { FreezeProps } from './type';\n\nconst infinitePromise = new Promise<never>(() => {});\nconst Suspend = () => {\n throw infinitePromise;\n};\n\nconst snapshotDisplays = (root: HTMLElement) => {\n const snapshot = new Map<HTMLElement, string>([[root, root.style.display]]);\n\n for (const element of root.querySelectorAll<HTMLElement>('*')) {\n snapshot.set(element, element.style.display);\n }\n\n return snapshot;\n};\n\nconst restoreDisplayIfSuspenseHidden = (element: HTMLElement, originalDisplay: string) => {\n if (element.style.display !== 'none') return;\n if (originalDisplay === 'none') return;\n\n element.style.display = originalDisplay;\n};\n\nconst restoreSuspenseHiddenDisplay = (snapshot: Map<HTMLElement, string>) => {\n for (const [element, originalDisplay] of snapshot) {\n restoreDisplayIfSuspenseHidden(element, originalDisplay);\n }\n};\n\nconst Freeze = ({ frozen, children }: FreezeProps) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const hasSnapshotRef = useRef(false);\n const displaySnapshotRef = useRef<Map<HTMLElement, string>>(new Map());\n\n const shouldSuspend = frozen && hasSnapshotRef.current;\n\n useLayoutEffect(() => {\n const content = contentRef.current;\n if (!content) return;\n\n if (!frozen) {\n displaySnapshotRef.current = snapshotDisplays(content);\n hasSnapshotRef.current = true;\n return;\n }\n\n if (!hasSnapshotRef.current) {\n displaySnapshotRef.current = snapshotDisplays(content);\n hasSnapshotRef.current = true;\n return;\n }\n\n restoreSuspenseHiddenDisplay(displaySnapshotRef.current);\n });\n\n useLayoutEffect(() => {\n if (!shouldSuspend) return;\n\n const snapshot = displaySnapshotRef.current;\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const element = mutation.target as HTMLElement;\n const originalDisplay = snapshot.get(element);\n if (originalDisplay === undefined) continue;\n\n restoreDisplayIfSuspenseHidden(element, originalDisplay);\n }\n });\n\n for (const element of snapshot.keys()) {\n observer.observe(element, { attributeFilter: ['style'], attributes: true });\n }\n\n restoreSuspenseHiddenDisplay(snapshot);\n\n return () => observer.disconnect();\n }, [shouldSuspend]);\n\n return (\n <Suspense fallback={null}>\n {shouldSuspend && <Suspend />}\n <div ref={contentRef} style={{ display: 'contents' }}>\n {children}\n </div>\n </Suspense>\n );\n};\n\nFreeze.displayName = 'Freeze';\n\nexport default Freeze;\n"],"mappings":";;;;AAQA,MAAM,kBAAkB,IAAI,cAAqB,CAAC,CAAC;AACnD,MAAM,gBAAgB;CACpB,MAAM;AACR;AAEA,MAAM,oBAAoB,SAAsB;CAC9C,MAAM,2BAAW,IAAI,IAAyB,CAAC,CAAC,MAAM,KAAK,MAAM,OAAO,CAAC,CAAC;CAE1E,KAAK,MAAM,WAAW,KAAK,iBAA8B,GAAG,GAC1D,SAAS,IAAI,SAAS,QAAQ,MAAM,OAAO;CAG7C,OAAO;AACT;AAEA,MAAM,kCAAkC,SAAsB,oBAA4B;CACxF,IAAI,QAAQ,MAAM,YAAY,QAAQ;CACtC,IAAI,oBAAoB,QAAQ;CAEhC,QAAQ,MAAM,UAAU;AAC1B;AAEA,MAAM,gCAAgC,aAAuC;CAC3E,KAAK,MAAM,CAAC,SAAS,oBAAoB,UACvC,+BAA+B,SAAS,eAAe;AAE3D;AAEA,MAAM,UAAU,EAAE,QAAQ,eAA4B;CACpD,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,qBAAqB,uBAAiC,IAAI,IAAI,CAAC;CAErE,MAAM,gBAAgB,UAAU,eAAe;CAE/C,sBAAsB;EACpB,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,SAAS;EAEd,IAAI,CAAC,QAAQ;GACX,mBAAmB,UAAU,iBAAiB,OAAO;GACrD,eAAe,UAAU;GACzB;EACF;EAEA,IAAI,CAAC,eAAe,SAAS;GAC3B,mBAAmB,UAAU,iBAAiB,OAAO;GACrD,eAAe,UAAU;GACzB;EACF;EAEA,6BAA6B,mBAAmB,OAAO;CACzD,CAAC;CAED,sBAAsB;EACpB,IAAI,CAAC,eAAe;EAEpB,MAAM,WAAW,mBAAmB;EACpC,MAAM,WAAW,IAAI,kBAAkB,cAAc;GACnD,KAAK,MAAM,YAAY,WAAW;IAChC,MAAM,UAAU,SAAS;IACzB,MAAM,kBAAkB,SAAS,IAAI,OAAO;IAC5C,IAAI,oBAAoB,KAAA,GAAW;IAEnC,+BAA+B,SAAS,eAAe;GACzD;EACF,CAAC;EAED,KAAK,MAAM,WAAW,SAAS,KAAK,GAClC,SAAS,QAAQ,SAAS;GAAE,iBAAiB,CAAC,OAAO;GAAG,YAAY;EAAK,CAAC;EAG5E,6BAA6B,QAAQ;EAErC,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,aAAa,CAAC;CAElB,OACE,qBAAC,UAAD;EAAU,UAAU;
|
|
1
|
+
{"version":3,"file":"Freeze.mjs","names":[],"sources":["../../src/Freeze/Freeze.tsx"],"sourcesContent":["// @see https://barvian.me/react-exit-animations\n\n'use client';\n\nimport { Suspense, useLayoutEffect, useRef } from 'react';\n\nimport type { FreezeProps } from './type';\n\nconst infinitePromise = new Promise<never>(() => {});\nconst Suspend = () => {\n throw infinitePromise;\n};\n\nconst snapshotDisplays = (root: HTMLElement) => {\n const snapshot = new Map<HTMLElement, string>([[root, root.style.display]]);\n\n for (const element of root.querySelectorAll<HTMLElement>('*')) {\n snapshot.set(element, element.style.display);\n }\n\n return snapshot;\n};\n\nconst restoreDisplayIfSuspenseHidden = (element: HTMLElement, originalDisplay: string) => {\n if (element.style.display !== 'none') return;\n if (originalDisplay === 'none') return;\n\n element.style.display = originalDisplay;\n};\n\nconst restoreSuspenseHiddenDisplay = (snapshot: Map<HTMLElement, string>) => {\n for (const [element, originalDisplay] of snapshot) {\n restoreDisplayIfSuspenseHidden(element, originalDisplay);\n }\n};\n\nconst Freeze = ({ frozen, children }: FreezeProps) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const hasSnapshotRef = useRef(false);\n const displaySnapshotRef = useRef<Map<HTMLElement, string>>(new Map());\n\n const shouldSuspend = frozen && hasSnapshotRef.current;\n\n useLayoutEffect(() => {\n const content = contentRef.current;\n if (!content) return;\n\n if (!frozen) {\n displaySnapshotRef.current = snapshotDisplays(content);\n hasSnapshotRef.current = true;\n return;\n }\n\n if (!hasSnapshotRef.current) {\n displaySnapshotRef.current = snapshotDisplays(content);\n hasSnapshotRef.current = true;\n return;\n }\n\n restoreSuspenseHiddenDisplay(displaySnapshotRef.current);\n });\n\n useLayoutEffect(() => {\n if (!shouldSuspend) return;\n\n const snapshot = displaySnapshotRef.current;\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const element = mutation.target as HTMLElement;\n const originalDisplay = snapshot.get(element);\n if (originalDisplay === undefined) continue;\n\n restoreDisplayIfSuspenseHidden(element, originalDisplay);\n }\n });\n\n for (const element of snapshot.keys()) {\n observer.observe(element, { attributeFilter: ['style'], attributes: true });\n }\n\n restoreSuspenseHiddenDisplay(snapshot);\n\n return () => observer.disconnect();\n }, [shouldSuspend]);\n\n return (\n <Suspense fallback={null}>\n {shouldSuspend && <Suspend />}\n <div ref={contentRef} style={{ display: 'contents' }}>\n {children}\n </div>\n </Suspense>\n );\n};\n\nFreeze.displayName = 'Freeze';\n\nexport default Freeze;\n"],"mappings":";;;;AAQA,MAAM,kBAAkB,IAAI,cAAqB,CAAC,CAAC;AACnD,MAAM,gBAAgB;CACpB,MAAM;AACR;AAEA,MAAM,oBAAoB,SAAsB;CAC9C,MAAM,2BAAW,IAAI,IAAyB,CAAC,CAAC,MAAM,KAAK,MAAM,OAAO,CAAC,CAAC;CAE1E,KAAK,MAAM,WAAW,KAAK,iBAA8B,GAAG,GAC1D,SAAS,IAAI,SAAS,QAAQ,MAAM,OAAO;CAG7C,OAAO;AACT;AAEA,MAAM,kCAAkC,SAAsB,oBAA4B;CACxF,IAAI,QAAQ,MAAM,YAAY,QAAQ;CACtC,IAAI,oBAAoB,QAAQ;CAEhC,QAAQ,MAAM,UAAU;AAC1B;AAEA,MAAM,gCAAgC,aAAuC;CAC3E,KAAK,MAAM,CAAC,SAAS,oBAAoB,UACvC,+BAA+B,SAAS,eAAe;AAE3D;AAEA,MAAM,UAAU,EAAE,QAAQ,eAA4B;CACpD,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,qBAAqB,uBAAiC,IAAI,IAAI,CAAC;CAErE,MAAM,gBAAgB,UAAU,eAAe;CAE/C,sBAAsB;EACpB,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,SAAS;EAEd,IAAI,CAAC,QAAQ;GACX,mBAAmB,UAAU,iBAAiB,OAAO;GACrD,eAAe,UAAU;GACzB;EACF;EAEA,IAAI,CAAC,eAAe,SAAS;GAC3B,mBAAmB,UAAU,iBAAiB,OAAO;GACrD,eAAe,UAAU;GACzB;EACF;EAEA,6BAA6B,mBAAmB,OAAO;CACzD,CAAC;CAED,sBAAsB;EACpB,IAAI,CAAC,eAAe;EAEpB,MAAM,WAAW,mBAAmB;EACpC,MAAM,WAAW,IAAI,kBAAkB,cAAc;GACnD,KAAK,MAAM,YAAY,WAAW;IAChC,MAAM,UAAU,SAAS;IACzB,MAAM,kBAAkB,SAAS,IAAI,OAAO;IAC5C,IAAI,oBAAoB,KAAA,GAAW;IAEnC,+BAA+B,SAAS,eAAe;GACzD;EACF,CAAC;EAED,KAAK,MAAM,WAAW,SAAS,KAAK,GAClC,SAAS,QAAQ,SAAS;GAAE,iBAAiB,CAAC,OAAO;GAAG,YAAY;EAAK,CAAC;EAG5E,6BAA6B,QAAQ;EAErC,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,aAAa,CAAC;CAElB,OACE,qBAAC,UAAD;EAAU,UAAU;EAApB,UAAA,CACG,iBAAiB,oBAAC,SAAD,CAAU,CAAA,GAC5B,oBAAC,OAAD;GAAK,KAAK;GAAY,OAAO,EAAE,SAAS,WAAW;GAChD;EACE,CAAA,CACG;;AAEd;AAEA,OAAO,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupAvatar.mjs","names":[],"sources":["../../src/GroupAvatar/GroupAvatar.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport Avatar from '@/Avatar';\nimport Block from '@/Block';\nimport Grid from '@/Grid';\n\nimport { variants } from './style';\nimport type { GroupAvatarProps } from './type';\n\nconst GroupAvatar: FC<GroupAvatarProps> = ({\n className,\n style,\n avatars = [],\n size = 32,\n grid = 2,\n cornerShape = 'square',\n avatarShape = 'square',\n ...rest\n}) => {\n const calcSize = useMemo(() => {\n const length = avatars.length;\n const isAutoGrid = grid === 'auto';\n const gridSize = isAutoGrid ? (length > 4 ? 3 : 2) : grid;\n const isCircle = cornerShape === 'circle';\n const avatarSize = Math.floor((size / gridSize) * (isCircle ? 0.65 : 0.75));\n const gapSize = Math.floor((size - avatarSize * gridSize) / (isCircle ? 6 : 4));\n\n return {\n avatarSize,\n gapSize,\n gridSize,\n gridWidth: avatarSize * gridSize + gapSize,\n maxItemWidth: avatarSize - 1,\n };\n }, [avatars, grid, size, cornerShape]);\n\n const calcAvatars = useMemo(\n () => avatars?.slice(0, calcSize.gridSize * calcSize.gridSize),\n [avatars, calcSize.gridSize],\n );\n\n const isSingle = calcAvatars?.length === 1;\n\n return (\n <Block\n align={'center'}\n className={cx(variants({ cornerShape }), className)}\n height={size}\n justify={'center'}\n style={style}\n width={size}\n {...rest}\n >\n <Grid\n gap={calcSize.gapSize}\n maxItemWidth={0}\n rows={calcSize.gridSize}\n width={calcSize.gridWidth}\n >\n {calcAvatars.map((item, index) => {\n if (typeof item === 'string')\n return (\n <Avatar\n avatar={item}\n key={index}\n shape={avatarShape}\n size={isSingle ? size * 0.8 : calcSize.avatarSize}\n />\n );\n return (\n <Avatar\n key={index}\n {...item}\n shape={avatarShape}\n size={isSingle ? size * 0.8 : calcSize.avatarSize}\n />\n );\n })}\n </Grid>\n </Block>\n );\n};\n\nexport default GroupAvatar;\n"],"mappings":";;;;;;;;;AAYA,MAAM,eAAqC,EACzC,WACA,OACA,UAAU,CAAC,GACX,OAAO,IACP,OAAO,GACP,cAAc,UACd,cAAc,UACd,GAAG,WACC;CACJ,MAAM,WAAW,cAAc;EAC7B,MAAM,SAAS,QAAQ;EAEvB,MAAM,WADa,SAAS,SACG,SAAS,IAAI,IAAI,IAAK;EACrD,MAAM,WAAW,gBAAgB;EACjC,MAAM,aAAa,KAAK,MAAO,OAAO,YAAa,WAAW,MAAO,IAAK;EAC1E,MAAM,UAAU,KAAK,OAAO,OAAO,aAAa,aAAa,WAAW,IAAI,EAAE;EAE9E,OAAO;GACL;GACA;GACA;GACA,WAAW,aAAa,WAAW;GACnC,cAAc,aAAa;EAC7B;CACF,GAAG;EAAC;EAAS;EAAM;EAAM;CAAW,CAAC;CAErC,MAAM,cAAc,cACZ,SAAS,MAAM,GAAG,SAAS,WAAW,SAAS,QAAQ,GAC7D,CAAC,SAAS,SAAS,QAAQ,CAC7B;CAEA,MAAM,WAAW,aAAa,WAAW;CAEzC,OACE,oBAAC,OAAD;EACE,OAAO;EACP,WAAW,GAAG,SAAS,EAAE,YAAY,CAAC,GAAG,SAAS;EAClD,QAAQ;EACR,SAAS;EACF;EACP,OAAO;EACP,GAAI;
|
|
1
|
+
{"version":3,"file":"GroupAvatar.mjs","names":[],"sources":["../../src/GroupAvatar/GroupAvatar.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport Avatar from '@/Avatar';\nimport Block from '@/Block';\nimport Grid from '@/Grid';\n\nimport { variants } from './style';\nimport type { GroupAvatarProps } from './type';\n\nconst GroupAvatar: FC<GroupAvatarProps> = ({\n className,\n style,\n avatars = [],\n size = 32,\n grid = 2,\n cornerShape = 'square',\n avatarShape = 'square',\n ...rest\n}) => {\n const calcSize = useMemo(() => {\n const length = avatars.length;\n const isAutoGrid = grid === 'auto';\n const gridSize = isAutoGrid ? (length > 4 ? 3 : 2) : grid;\n const isCircle = cornerShape === 'circle';\n const avatarSize = Math.floor((size / gridSize) * (isCircle ? 0.65 : 0.75));\n const gapSize = Math.floor((size - avatarSize * gridSize) / (isCircle ? 6 : 4));\n\n return {\n avatarSize,\n gapSize,\n gridSize,\n gridWidth: avatarSize * gridSize + gapSize,\n maxItemWidth: avatarSize - 1,\n };\n }, [avatars, grid, size, cornerShape]);\n\n const calcAvatars = useMemo(\n () => avatars?.slice(0, calcSize.gridSize * calcSize.gridSize),\n [avatars, calcSize.gridSize],\n );\n\n const isSingle = calcAvatars?.length === 1;\n\n return (\n <Block\n align={'center'}\n className={cx(variants({ cornerShape }), className)}\n height={size}\n justify={'center'}\n style={style}\n width={size}\n {...rest}\n >\n <Grid\n gap={calcSize.gapSize}\n maxItemWidth={0}\n rows={calcSize.gridSize}\n width={calcSize.gridWidth}\n >\n {calcAvatars.map((item, index) => {\n if (typeof item === 'string')\n return (\n <Avatar\n avatar={item}\n key={index}\n shape={avatarShape}\n size={isSingle ? size * 0.8 : calcSize.avatarSize}\n />\n );\n return (\n <Avatar\n key={index}\n {...item}\n shape={avatarShape}\n size={isSingle ? size * 0.8 : calcSize.avatarSize}\n />\n );\n })}\n </Grid>\n </Block>\n );\n};\n\nexport default GroupAvatar;\n"],"mappings":";;;;;;;;;AAYA,MAAM,eAAqC,EACzC,WACA,OACA,UAAU,CAAC,GACX,OAAO,IACP,OAAO,GACP,cAAc,UACd,cAAc,UACd,GAAG,WACC;CACJ,MAAM,WAAW,cAAc;EAC7B,MAAM,SAAS,QAAQ;EAEvB,MAAM,WADa,SAAS,SACG,SAAS,IAAI,IAAI,IAAK;EACrD,MAAM,WAAW,gBAAgB;EACjC,MAAM,aAAa,KAAK,MAAO,OAAO,YAAa,WAAW,MAAO,IAAK;EAC1E,MAAM,UAAU,KAAK,OAAO,OAAO,aAAa,aAAa,WAAW,IAAI,EAAE;EAE9E,OAAO;GACL;GACA;GACA;GACA,WAAW,aAAa,WAAW;GACnC,cAAc,aAAa;EAC7B;CACF,GAAG;EAAC;EAAS;EAAM;EAAM;CAAW,CAAC;CAErC,MAAM,cAAc,cACZ,SAAS,MAAM,GAAG,SAAS,WAAW,SAAS,QAAQ,GAC7D,CAAC,SAAS,SAAS,QAAQ,CAC7B;CAEA,MAAM,WAAW,aAAa,WAAW;CAEzC,OACE,oBAAC,OAAD;EACE,OAAO;EACP,WAAW,GAAG,SAAS,EAAE,YAAY,CAAC,GAAG,SAAS;EAClD,QAAQ;EACR,SAAS;EACF;EACP,OAAO;EACP,GAAI;EAEJ,UAAA,oBAAC,MAAD;GACE,KAAK,SAAS;GACd,cAAc;GACd,MAAM,SAAS;GACf,OAAO,SAAS;GAEf,UAAA,YAAY,KAAK,MAAM,UAAU;IAChC,IAAI,OAAO,SAAS,UAClB,OACE,oBAAC,QAAD;KACE,QAAQ;KAER,OAAO;KACP,MAAM,WAAW,OAAO,KAAM,SAAS;IACxC,GAHM,KAGN;IAEL,OACE,oBAAC,QAAD;KAEE,GAAI;KACJ,OAAO;KACP,MAAM,WAAW,OAAO,KAAM,SAAS;IACxC,GAJM,KAIN;GAEL,CAAC;EACG,CAAA;CACD,CAAA;AAEX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GuideCard.mjs","names":["Flexbox"],"sources":["../../src/GuideCard/GuideCard.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { X } from 'lucide-react';\nimport { memo, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Img from '@/Img';\n\nimport { styles, variants } from './style';\nimport type { GuideCardProps } from './type';\n\nconst GuideCard = memo<GuideCardProps>(\n ({\n cover,\n onClose,\n shadow,\n closable = true,\n afterClose,\n alt,\n className,\n title,\n desc,\n width,\n styles: customStyles,\n height,\n coverProps,\n variant = 'filled',\n closeIconProps,\n classNames,\n ref,\n ...rest\n }) => {\n const [show, setShow] = useState(true);\n const { isDarkMode } = useThemeMode();\n\n if (!show) return null;\n\n return (\n <Flexbox\n className={cx(variants({ isDarkMode, shadow, variant }), className)}\n ref={ref}\n {...rest}\n >\n {closable && (\n <ActionIcon\n size={'small'}\n {...closeIconProps}\n className={cx(styles.close, closeIconProps?.className)}\n icon={X}\n onClick={(e) => {\n setShow(false);\n onClose?.(e);\n afterClose?.();\n }}\n />\n )}\n {cover && (\n <Img\n alt={alt}\n className={cx(styles.cover, classNames?.cover)}\n height={height}\n src={cover}\n style={customStyles?.cover}\n width={width}\n {...coverProps}\n />\n )}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={8}\n style={customStyles?.content}\n >\n {title && <div className={styles.title}>{title}</div>}\n {desc && <div className={styles.desc}>{desc}</div>}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nGuideCard.displayName = 'GuideCard';\n\nexport default GuideCard;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,MACf,EACC,OACA,SACA,QACA,WAAW,MACX,YACA,KACA,WACA,OACA,MACA,OACA,QAAQ,cACR,QACA,YACA,UAAU,UACV,gBACA,YACA,KACA,GAAG,WACC;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,IAAI;CACrC,MAAM,EAAE,eAAe,aAAa;CAEpC,IAAI,CAAC,MAAM,OAAO;CAElB,OACE,qBAACA,mBAAD;EACE,WAAW,GAAG,SAAS;GAAE;GAAY;GAAQ;EAAQ,CAAC,GAAG,SAAS;EAC7D;EACL,GAAI;
|
|
1
|
+
{"version":3,"file":"GuideCard.mjs","names":["Flexbox"],"sources":["../../src/GuideCard/GuideCard.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { X } from 'lucide-react';\nimport { memo, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport { Flexbox } from '@/Flex';\nimport Img from '@/Img';\n\nimport { styles, variants } from './style';\nimport type { GuideCardProps } from './type';\n\nconst GuideCard = memo<GuideCardProps>(\n ({\n cover,\n onClose,\n shadow,\n closable = true,\n afterClose,\n alt,\n className,\n title,\n desc,\n width,\n styles: customStyles,\n height,\n coverProps,\n variant = 'filled',\n closeIconProps,\n classNames,\n ref,\n ...rest\n }) => {\n const [show, setShow] = useState(true);\n const { isDarkMode } = useThemeMode();\n\n if (!show) return null;\n\n return (\n <Flexbox\n className={cx(variants({ isDarkMode, shadow, variant }), className)}\n ref={ref}\n {...rest}\n >\n {closable && (\n <ActionIcon\n size={'small'}\n {...closeIconProps}\n className={cx(styles.close, closeIconProps?.className)}\n icon={X}\n onClick={(e) => {\n setShow(false);\n onClose?.(e);\n afterClose?.();\n }}\n />\n )}\n {cover && (\n <Img\n alt={alt}\n className={cx(styles.cover, classNames?.cover)}\n height={height}\n src={cover}\n style={customStyles?.cover}\n width={width}\n {...coverProps}\n />\n )}\n <Flexbox\n className={cx(styles.content, classNames?.content)}\n gap={8}\n style={customStyles?.content}\n >\n {title && <div className={styles.title}>{title}</div>}\n {desc && <div className={styles.desc}>{desc}</div>}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nGuideCard.displayName = 'GuideCard';\n\nexport default GuideCard;\n"],"mappings":";;;;;;;;;;AAaA,MAAM,YAAY,MACf,EACC,OACA,SACA,QACA,WAAW,MACX,YACA,KACA,WACA,OACA,MACA,OACA,QAAQ,cACR,QACA,YACA,UAAU,UACV,gBACA,YACA,KACA,GAAG,WACC;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,IAAI;CACrC,MAAM,EAAE,eAAe,aAAa;CAEpC,IAAI,CAAC,MAAM,OAAO;CAElB,OACE,qBAACA,mBAAD;EACE,WAAW,GAAG,SAAS;GAAE;GAAY;GAAQ;EAAQ,CAAC,GAAG,SAAS;EAC7D;EACL,GAAI;EAHN,UAAA;GAKG,YACC,oBAAC,YAAD;IACE,MAAM;IACN,GAAI;IACJ,WAAW,GAAG,OAAO,OAAO,gBAAgB,SAAS;IACrD,MAAM;IACN,UAAU,MAAM;KACd,QAAQ,KAAK;KACb,UAAU,CAAC;KACX,aAAa;IACf;GACD,CAAA;GAEF,SACC,oBAAC,KAAD;IACO;IACL,WAAW,GAAG,OAAO,OAAO,YAAY,KAAK;IACrC;IACR,KAAK;IACL,OAAO,cAAc;IACd;IACP,GAAI;GACL,CAAA;GAEH,qBAACA,mBAAD;IACE,WAAW,GAAG,OAAO,SAAS,YAAY,OAAO;IACjD,KAAK;IACL,OAAO,cAAc;IAHvB,UAAA,CAKG,SAAS,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAQ,UAAA;IAAW,CAAA,GACnD,QAAQ,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAO,UAAA;IAAU,CAAA,CAC1C;;EACF;;AAEb,CACF;AAEA,UAAU,cAAc"}
|
package/es/Header/Header.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.mjs","names":["Flexbox"],"sources":["../../src/Header/Header.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { HeaderProps } from './type';\n\nconst Header = memo<HeaderProps>(\n ({\n actionsClassName,\n navClassName,\n logoClassName,\n nav,\n logo,\n actions,\n actionsStyle,\n logoStyle,\n navStyle,\n className,\n children,\n ref,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n as={'section'}\n className={cx(styles.root, className)}\n distribution={'space-between'}\n ref={ref}\n width={'auto'}\n {...rest}\n >\n {mobile ? (\n <>\n <Flexbox className={actionsClassName} style={{ flex: 0, ...navStyle }}>\n {nav}\n {children}\n </Flexbox>\n <Flexbox\n horizontal\n className={cx(styles.left, logoClassName)}\n style={{ flex: 1, overflow: 'hidden', ...logoStyle }}\n >\n {logo}\n </Flexbox>\n <Flexbox className={actionsClassName} style={{ flex: 0, ...actionsStyle }}>\n {actions}\n </Flexbox>\n </>\n ) : (\n <>\n <Flexbox\n horizontal\n className={cx(styles.left, logoClassName)}\n style={{ flex: 0, ...logoStyle }}\n >\n {logo}\n </Flexbox>\n <Flexbox\n className={navClassName}\n style={{ flex: 1, marginLeft: 48, overflow: 'hidden', ...navStyle }}\n >\n {nav}\n {children}\n </Flexbox>\n <Flexbox\n horizontal\n className={cx(styles.right, actionsClassName)}\n flex={1}\n justify={'space-between'}\n style={actionsStyle}\n >\n <div />\n <Flexbox horizontal align={'center'} gap={8}>\n {actions}\n </Flexbox>\n </Flexbox>\n </>\n )}\n </Flexbox>\n );\n },\n);\n\nHeader.displayName = 'Header';\n\nexport default Header;\n"],"mappings":";;;;;;;AAUA,MAAM,SAAS,MACZ,EACC,kBACA,cACA,eACA,KACA,MACA,SACA,cACA,WACA,UACA,WACA,UACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CAEjC,OACE,oBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,IAAI;EACJ,WAAW,GAAG,OAAO,MAAM,SAAS;EACpC,cAAc;EACT;EACL,OAAO;EACP,GAAI;
|
|
1
|
+
{"version":3,"file":"Header.mjs","names":["Flexbox"],"sources":["../../src/Header/Header.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useResponsive } from 'antd-style';\nimport { memo } from 'react';\n\nimport { Flexbox } from '@/Flex';\n\nimport { styles } from './style';\nimport type { HeaderProps } from './type';\n\nconst Header = memo<HeaderProps>(\n ({\n actionsClassName,\n navClassName,\n logoClassName,\n nav,\n logo,\n actions,\n actionsStyle,\n logoStyle,\n navStyle,\n className,\n children,\n ref,\n ...rest\n }) => {\n const { mobile } = useResponsive();\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n as={'section'}\n className={cx(styles.root, className)}\n distribution={'space-between'}\n ref={ref}\n width={'auto'}\n {...rest}\n >\n {mobile ? (\n <>\n <Flexbox className={actionsClassName} style={{ flex: 0, ...navStyle }}>\n {nav}\n {children}\n </Flexbox>\n <Flexbox\n horizontal\n className={cx(styles.left, logoClassName)}\n style={{ flex: 1, overflow: 'hidden', ...logoStyle }}\n >\n {logo}\n </Flexbox>\n <Flexbox className={actionsClassName} style={{ flex: 0, ...actionsStyle }}>\n {actions}\n </Flexbox>\n </>\n ) : (\n <>\n <Flexbox\n horizontal\n className={cx(styles.left, logoClassName)}\n style={{ flex: 0, ...logoStyle }}\n >\n {logo}\n </Flexbox>\n <Flexbox\n className={navClassName}\n style={{ flex: 1, marginLeft: 48, overflow: 'hidden', ...navStyle }}\n >\n {nav}\n {children}\n </Flexbox>\n <Flexbox\n horizontal\n className={cx(styles.right, actionsClassName)}\n flex={1}\n justify={'space-between'}\n style={actionsStyle}\n >\n <div />\n <Flexbox horizontal align={'center'} gap={8}>\n {actions}\n </Flexbox>\n </Flexbox>\n </>\n )}\n </Flexbox>\n );\n },\n);\n\nHeader.displayName = 'Header';\n\nexport default Header;\n"],"mappings":";;;;;;;AAUA,MAAM,SAAS,MACZ,EACC,kBACA,cACA,eACA,KACA,MACA,SACA,cACA,WACA,UACA,WACA,UACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,cAAc;CAEjC,OACE,oBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,IAAI;EACJ,WAAW,GAAG,OAAO,MAAM,SAAS;EACpC,cAAc;EACT;EACL,OAAO;EACP,GAAI;EAEH,UAAA,SACC,qBAAA,YAAA,EAAA,UAAA;GACE,qBAACA,mBAAD;IAAS,WAAW;IAAkB,OAAO;KAAE,MAAM;KAAG,GAAG;IAAS;IAApE,UAAA,CACG,KACA,QACM;;GACT,oBAACA,mBAAD;IACE,YAAA;IACA,WAAW,GAAG,OAAO,MAAM,aAAa;IACxC,OAAO;KAAE,MAAM;KAAG,UAAU;KAAU,GAAG;IAAU;IAElD,UAAA;GACM,CAAA;GACT,oBAACA,mBAAD;IAAS,WAAW;IAAkB,OAAO;KAAE,MAAM;KAAG,GAAG;IAAa;IACrE,UAAA;GACM,CAAA;EACT,EAAA,CAAA,IAEF,qBAAA,YAAA,EAAA,UAAA;GACE,oBAACA,mBAAD;IACE,YAAA;IACA,WAAW,GAAG,OAAO,MAAM,aAAa;IACxC,OAAO;KAAE,MAAM;KAAG,GAAG;IAAU;IAE9B,UAAA;GACM,CAAA;GACT,qBAACA,mBAAD;IACE,WAAW;IACX,OAAO;KAAE,MAAM;KAAG,YAAY;KAAI,UAAU;KAAU,GAAG;IAAS;IAFpE,UAAA,CAIG,KACA,QACM;;GACT,qBAACA,mBAAD;IACE,YAAA;IACA,WAAW,GAAG,OAAO,OAAO,gBAAgB;IAC5C,MAAM;IACN,SAAS;IACT,OAAO;IALT,UAAA,CAOE,oBAAC,OAAD,CAAM,CAAA,GACN,oBAACA,mBAAD;KAAS,YAAA;KAAW,OAAO;KAAU,KAAK;KACvC,UAAA;IACM,CAAA,CACF;;EACT,EAAA,CAAA;CAEG,CAAA;AAEb,CACF;AAEA,OAAO,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FullFeatured.mjs","names":["Flexbox"],"sources":["../../src/Highlighter/FullFeatured.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName, getCodeLanguageFilename } from '@/Highlighter/const';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport LangSelect from './LangSelect';\nimport { bodyVariants, headerVariants, variants } from './style';\nimport { type HighlighterProps } from './type';\n\ninterface HeaderLanguageProps {\n allowChangeLanguage: boolean;\n displayName: string;\n fileName?: string;\n filetype: string;\n icon?: ReactNode;\n language: string;\n setLanguage?: (language: string) => void;\n showLanguage?: boolean;\n}\n\nconst HeaderLanguage = memo<HeaderLanguageProps>(\n ({\n allowChangeLanguage,\n displayName,\n fileName,\n filetype,\n icon,\n language,\n setLanguage,\n showLanguage,\n }) => {\n if (!showLanguage) return null;\n\n if (allowChangeLanguage && !fileName)\n return <LangSelect value={language.toLowerCase()} onSelect={setLanguage} />;\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={'languageTitle'}\n flex={1}\n gap={4}\n justify={'flex-start'}\n paddingInline={8}\n >\n {icon || (\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={filetype}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n )}\n <Text ellipsis fontSize={13}>\n {displayName}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.allowChangeLanguage === next.allowChangeLanguage &&\n prev.displayName === next.displayName &&\n prev.fileName === next.fileName &&\n prev.filetype === next.filetype &&\n prev.icon === next.icon &&\n prev.language === next.language &&\n prev.setLanguage === next.setLanguage &&\n prev.showLanguage === next.showLanguage,\n);\n\ninterface HighlighterFullFeaturedProps extends Omit<\n HighlighterProps,\n 'children' | 'bodyRender' | 'enableTransformer'\n> {\n content: string;\n setLanguage?: (language: string) => void;\n}\n\nexport const HighlighterFullFeatured = memo<HighlighterFullFeaturedProps & { children: ReactNode }>(\n ({\n content,\n language,\n setLanguage,\n showLanguage,\n className,\n classNames,\n styles: customStyles,\n style,\n allowChangeLanguage = false,\n fileName,\n icon,\n actionsRender,\n copyable,\n variant,\n shadow,\n wrap,\n defaultExpand = true,\n children,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n language,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, language, originalActions]);\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const filetype = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageFilename(language);\n }, [fileName, language]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n style={style}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(headerVariants({ variant }), classNames?.header)}\n justify={'space-between'}\n style={customStyles?.header}\n onClick={handleToggleExpand}\n >\n <HeaderLanguage\n allowChangeLanguage={allowChangeLanguage}\n displayName={displayName}\n fileName={fileName}\n filetype={filetype}\n icon={icon}\n language={language}\n setLanguage={setLanguage}\n showLanguage={showLanguage}\n />\n <Flexbox horizontal align={'center'} flex={'none'} gap={4} onClick={stopPropagation}>\n <Flexbox horizontal align={'center'} className={'panel-actions'} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n size={'small'}\n onClick={handleToggleExpand}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n className={cx(bodyVariants({ expand }), classNames?.body)}\n style={customStyles?.body}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default HighlighterFullFeatured;\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,MAAM,iBAAiB,MACpB,EACC,qBACA,aACA,UACA,UACA,MACA,UACA,aACA,mBACI;CACJ,IAAI,CAAC,cAAc,OAAO;CAE1B,IAAI,uBAAuB,CAAC,UAC1B,OAAO,oBAAC,YAAD;EAAY,OAAO,SAAS,YAAY;EAAG,UAAU;CAAc,CAAA;CAE5E,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW;EACX,MAAM;EACN,KAAK;EACL,SAAS;EACT,eAAe;
|
|
1
|
+
{"version":3,"file":"FullFeatured.mjs","names":["Flexbox"],"sources":["../../src/Highlighter/FullFeatured.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName, getCodeLanguageFilename } from '@/Highlighter/const';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport LangSelect from './LangSelect';\nimport { bodyVariants, headerVariants, variants } from './style';\nimport { type HighlighterProps } from './type';\n\ninterface HeaderLanguageProps {\n allowChangeLanguage: boolean;\n displayName: string;\n fileName?: string;\n filetype: string;\n icon?: ReactNode;\n language: string;\n setLanguage?: (language: string) => void;\n showLanguage?: boolean;\n}\n\nconst HeaderLanguage = memo<HeaderLanguageProps>(\n ({\n allowChangeLanguage,\n displayName,\n fileName,\n filetype,\n icon,\n language,\n setLanguage,\n showLanguage,\n }) => {\n if (!showLanguage) return null;\n\n if (allowChangeLanguage && !fileName)\n return <LangSelect value={language.toLowerCase()} onSelect={setLanguage} />;\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={'languageTitle'}\n flex={1}\n gap={4}\n justify={'flex-start'}\n paddingInline={8}\n >\n {icon || (\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={filetype}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n )}\n <Text ellipsis fontSize={13}>\n {displayName}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.allowChangeLanguage === next.allowChangeLanguage &&\n prev.displayName === next.displayName &&\n prev.fileName === next.fileName &&\n prev.filetype === next.filetype &&\n prev.icon === next.icon &&\n prev.language === next.language &&\n prev.setLanguage === next.setLanguage &&\n prev.showLanguage === next.showLanguage,\n);\n\ninterface HighlighterFullFeaturedProps extends Omit<\n HighlighterProps,\n 'children' | 'bodyRender' | 'enableTransformer'\n> {\n content: string;\n setLanguage?: (language: string) => void;\n}\n\nexport const HighlighterFullFeatured = memo<HighlighterFullFeaturedProps & { children: ReactNode }>(\n ({\n content,\n language,\n setLanguage,\n showLanguage,\n className,\n classNames,\n styles: customStyles,\n style,\n allowChangeLanguage = false,\n fileName,\n icon,\n actionsRender,\n copyable,\n variant,\n shadow,\n wrap,\n defaultExpand = true,\n children,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n language,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, language, originalActions]);\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const filetype = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageFilename(language);\n }, [fileName, language]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n style={style}\n {...rest}\n >\n <Flexbox\n horizontal\n align={'center'}\n className={cx(headerVariants({ variant }), classNames?.header)}\n justify={'space-between'}\n style={customStyles?.header}\n onClick={handleToggleExpand}\n >\n <HeaderLanguage\n allowChangeLanguage={allowChangeLanguage}\n displayName={displayName}\n fileName={fileName}\n filetype={filetype}\n icon={icon}\n language={language}\n setLanguage={setLanguage}\n showLanguage={showLanguage}\n />\n <Flexbox horizontal align={'center'} flex={'none'} gap={4} onClick={stopPropagation}>\n <Flexbox horizontal align={'center'} className={'panel-actions'} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n size={'small'}\n onClick={handleToggleExpand}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n className={cx(bodyVariants({ expand }), classNames?.body)}\n style={customStyles?.body}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default HighlighterFullFeatured;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Highlighter.mjs","names":["FullFeatured","Flexbox"],"sources":["../../src/Highlighter/Highlighter.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName } from '@/Highlighter/const';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport { styles, variants } from './style';\nimport SyntaxHighlighter from './SyntaxHighlighter';\nimport { type HighlighterProps } from './type';\n\nexport const Highlighter = memo<HighlighterProps>(\n ({\n animated,\n fullFeatured,\n actionIconSize,\n children,\n language = 'markdown',\n className,\n classNames,\n styles: customStyles,\n copyable = true,\n showLanguage = true,\n variant = 'filled',\n shadow,\n wrap,\n bodyRender,\n actionsRender,\n enableTransformer,\n theme,\n icon,\n fileName,\n allowChangeLanguage,\n defaultExpand = true,\n ...rest\n }) => {\n const [lang, setLang] = useState(language);\n\n // Safely handle children with boundary check\n const tirmedChildren = useMemo(() => {\n if (children === null || children === undefined) return '';\n if (typeof children !== 'string') {\n console.warn('Highlighter: children should be a string, received:', typeof children);\n return String(children);\n }\n return children.trim();\n }, [children]);\n\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton\n glass\n content={getCopyContent}\n size={actionIconSize || { blockSize: 28, size: 16 }}\n />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n language: lang,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, lang, originalActions, tirmedChildren]);\n\n const originalBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n enableTransformer={enableTransformer}\n language={lang?.toLowerCase()}\n theme={theme}\n variant={variant}\n style={{\n height: '100%',\n ...customStyles?.content,\n }}\n >\n {tirmedChildren}\n </SyntaxHighlighter>\n ),\n [\n animated,\n enableTransformer,\n lang,\n theme,\n tirmedChildren,\n variant,\n customStyles?.content,\n customStyles?.content,\n ],\n );\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const body = useMemo(() => {\n if (!bodyRender) return originalBody;\n return bodyRender({ content: tirmedChildren, language: lang, originalNode: originalBody });\n }, [bodyRender, lang, originalBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n allowChangeLanguage={allowChangeLanguage}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n icon={icon}\n language={language}\n setLanguage={setLang}\n shadow={shadow}\n showLanguage={showLanguage}\n styles={customStyles}\n variant={variant}\n wrap={wrap}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n {...rest}\n >\n <Flexbox horizontal align={'center'} className={styles.actions} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n {showLanguage && language && <Tag className={styles.lang}>{displayName}</Tag>}\n {body}\n </Flexbox>\n );\n },\n);\n\nHighlighter.displayName = 'Highlighter';\n\nexport default Highlighter;\n"],"mappings":";;;;;;;;;;;;AAeA,MAAa,cAAc,MACxB,EACC,UACA,cACA,gBACA,UACA,WAAW,YACX,WACA,YACA,QAAQ,cACR,WAAW,MACX,eAAe,MACf,UAAU,UACV,QACA,MACA,YACA,eACA,mBACA,OACA,MACA,UACA,qBACA,gBAAgB,MAChB,GAAG,WACC;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,QAAQ;CAGzC,MAAM,iBAAiB,cAAc;EACnC,IAAI,aAAa,QAAQ,aAAa,KAAA,GAAW,OAAO;EACxD,IAAI,OAAO,aAAa,UAAU;GAChC,QAAQ,KAAK,uDAAuD,OAAO,QAAQ;GACnF,OAAO,OAAO,QAAQ;EACxB;EACA,OAAO,SAAS,KAAK;CACvB,GAAG,CAAC,QAAQ,CAAC;CAEb,MAAM,iBAAiB,OAAO,cAAc;CAE5C,gBAAgB;EACd,eAAe,UAAU;CAC3B,GAAG,CAAC,cAAc,CAAC;CAEnB,MAAM,iBAAiB,kBAAkB,eAAe,SAAS,CAAC,CAAC;CAEnE,MAAM,kBAAkB,cAAc;EACpC,IAAI,CAAC,UAAU,OAAO;EACtB,OACE,oBAAC,YAAD;GACE,OAAA;GACA,SAAS;GACT,MAAM,kBAAkB;IAAE,WAAW;IAAI,MAAM;GAAG;EACnD,CAAA;CAEL,GAAG;EAAC;EAAgB;EAAU;CAAc,CAAC;CAE7C,MAAM,UAAU,cAAc;EAC5B,IAAI,CAAC,eAAe,OAAO;EAC3B,OAAO,cAAc;GACnB;GACA,SAAS;GACT,YAAY;GACZ,UAAU;GACV,cAAc;EAChB,CAAC;CACH,GAAG;EAAC;EAAgB;EAAe;EAAgB;EAAM;EAAiB;CAAc,CAAC;CAEzF,MAAM,eAAe,cAEjB,oBAAC,mBAAD;EACY;EACV,WAAW,YAAY;EACJ;EACnB,UAAU,MAAM,YAAY;EACrB;EACE;EACT,OAAO;GACL,QAAQ;GACR,GAAG,cAAc;EACnB;
|
|
1
|
+
{"version":3,"file":"Highlighter.mjs","names":["FullFeatured","Flexbox"],"sources":["../../src/Highlighter/Highlighter.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { getCodeLanguageDisplayName } from '@/Highlighter/const';\nimport Tag from '@/Tag';\n\nimport FullFeatured from './FullFeatured';\nimport { styles, variants } from './style';\nimport SyntaxHighlighter from './SyntaxHighlighter';\nimport { type HighlighterProps } from './type';\n\nexport const Highlighter = memo<HighlighterProps>(\n ({\n animated,\n fullFeatured,\n actionIconSize,\n children,\n language = 'markdown',\n className,\n classNames,\n styles: customStyles,\n copyable = true,\n showLanguage = true,\n variant = 'filled',\n shadow,\n wrap,\n bodyRender,\n actionsRender,\n enableTransformer,\n theme,\n icon,\n fileName,\n allowChangeLanguage,\n defaultExpand = true,\n ...rest\n }) => {\n const [lang, setLang] = useState(language);\n\n // Safely handle children with boundary check\n const tirmedChildren = useMemo(() => {\n if (children === null || children === undefined) return '';\n if (typeof children !== 'string') {\n console.warn('Highlighter: children should be a string, received:', typeof children);\n return String(children);\n }\n return children.trim();\n }, [children]);\n\n const copyContentRef = useRef(tirmedChildren);\n\n useEffect(() => {\n copyContentRef.current = tirmedChildren;\n }, [tirmedChildren]);\n\n const getCopyContent = useCallback(() => copyContentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return (\n <CopyButton\n glass\n content={getCopyContent}\n size={actionIconSize || { blockSize: 28, size: 16 }}\n />\n );\n }, [actionIconSize, copyable, getCopyContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize,\n content: tirmedChildren,\n getContent: getCopyContent,\n language: lang,\n originalNode: originalActions,\n });\n }, [actionIconSize, actionsRender, getCopyContent, lang, originalActions, tirmedChildren]);\n\n const originalBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n enableTransformer={enableTransformer}\n language={lang?.toLowerCase()}\n theme={theme}\n variant={variant}\n style={{\n height: '100%',\n ...customStyles?.content,\n }}\n >\n {tirmedChildren}\n </SyntaxHighlighter>\n ),\n [\n animated,\n enableTransformer,\n lang,\n theme,\n tirmedChildren,\n variant,\n customStyles?.content,\n customStyles?.content,\n ],\n );\n\n const displayName = useMemo(() => {\n if (fileName) return fileName;\n return getCodeLanguageDisplayName(language);\n }, [fileName, language]);\n\n const body = useMemo(() => {\n if (!bodyRender) return originalBody;\n return bodyRender({ content: tirmedChildren, language: lang, originalNode: originalBody });\n }, [bodyRender, lang, originalBody, tirmedChildren]);\n\n if (fullFeatured)\n return (\n <FullFeatured\n actionsRender={actionsRender}\n allowChangeLanguage={allowChangeLanguage}\n className={className}\n classNames={classNames}\n content={tirmedChildren}\n copyable={copyable}\n defaultExpand={defaultExpand}\n fileName={fileName}\n icon={icon}\n language={language}\n setLanguage={setLang}\n shadow={shadow}\n showLanguage={showLanguage}\n styles={customStyles}\n variant={variant}\n wrap={wrap}\n {...rest}\n >\n {body}\n </FullFeatured>\n );\n\n return (\n <Flexbox\n className={cx(variants({ shadow, variant, wrap }), className)}\n data-code-type=\"highlighter\"\n {...rest}\n >\n <Flexbox horizontal align={'center'} className={styles.actions} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n {showLanguage && language && <Tag className={styles.lang}>{displayName}</Tag>}\n {body}\n </Flexbox>\n );\n },\n);\n\nHighlighter.displayName = 'Highlighter';\n\nexport default Highlighter;\n"],"mappings":";;;;;;;;;;;;AAeA,MAAa,cAAc,MACxB,EACC,UACA,cACA,gBACA,UACA,WAAW,YACX,WACA,YACA,QAAQ,cACR,WAAW,MACX,eAAe,MACf,UAAU,UACV,QACA,MACA,YACA,eACA,mBACA,OACA,MACA,UACA,qBACA,gBAAgB,MAChB,GAAG,WACC;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,QAAQ;CAGzC,MAAM,iBAAiB,cAAc;EACnC,IAAI,aAAa,QAAQ,aAAa,KAAA,GAAW,OAAO;EACxD,IAAI,OAAO,aAAa,UAAU;GAChC,QAAQ,KAAK,uDAAuD,OAAO,QAAQ;GACnF,OAAO,OAAO,QAAQ;EACxB;EACA,OAAO,SAAS,KAAK;CACvB,GAAG,CAAC,QAAQ,CAAC;CAEb,MAAM,iBAAiB,OAAO,cAAc;CAE5C,gBAAgB;EACd,eAAe,UAAU;CAC3B,GAAG,CAAC,cAAc,CAAC;CAEnB,MAAM,iBAAiB,kBAAkB,eAAe,SAAS,CAAC,CAAC;CAEnE,MAAM,kBAAkB,cAAc;EACpC,IAAI,CAAC,UAAU,OAAO;EACtB,OACE,oBAAC,YAAD;GACE,OAAA;GACA,SAAS;GACT,MAAM,kBAAkB;IAAE,WAAW;IAAI,MAAM;GAAG;EACnD,CAAA;CAEL,GAAG;EAAC;EAAgB;EAAU;CAAc,CAAC;CAE7C,MAAM,UAAU,cAAc;EAC5B,IAAI,CAAC,eAAe,OAAO;EAC3B,OAAO,cAAc;GACnB;GACA,SAAS;GACT,YAAY;GACZ,UAAU;GACV,cAAc;EAChB,CAAC;CACH,GAAG;EAAC;EAAgB;EAAe;EAAgB;EAAM;EAAiB;CAAc,CAAC;CAEzF,MAAM,eAAe,cAEjB,oBAAC,mBAAD;EACY;EACV,WAAW,YAAY;EACJ;EACnB,UAAU,MAAM,YAAY;EACrB;EACE;EACT,OAAO;GACL,QAAQ;GACR,GAAG,cAAc;EACnB;EAEC,UAAA;CACgB,CAAA,GAErB;EACE;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;CAChB,CACF;CAEA,MAAM,cAAc,cAAc;EAChC,IAAI,UAAU,OAAO;EACrB,OAAO,2BAA2B,QAAQ;CAC5C,GAAG,CAAC,UAAU,QAAQ,CAAC;CAEvB,MAAM,OAAO,cAAc;EACzB,IAAI,CAAC,YAAY,OAAO;EACxB,OAAO,WAAW;GAAE,SAAS;GAAgB,UAAU;GAAM,cAAc;EAAa,CAAC;CAC3F,GAAG;EAAC;EAAY;EAAM;EAAc;CAAc,CAAC;CAEnD,IAAI,cACF,OACE,oBAACA,yBAAD;EACiB;EACM;EACV;EACC;EACZ,SAAS;EACC;EACK;EACL;EACJ;EACI;EACV,aAAa;EACL;EACM;EACd,QAAQ;EACC;EACH;EACN,GAAI;EAEH,UAAA;CACW,CAAA;CAGlB,OACE,qBAACC,mBAAD;EACE,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAS;EAAK,CAAC,GAAG,SAAS;EAC5D,kBAAe;EACf,GAAI;EAHN,UAAA;GAKE,oBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,WAAW,OAAO;IAAS,MAAM;IAAQ,KAAK;IAChF,UAAA;GACM,CAAA;GACR,gBAAgB,YAAY,oBAAC,KAAD;IAAK,WAAW,OAAO;IAAO,UAAA;GAAiB,CAAA;GAC3E;EACM;;AAEb,CACF;AAEA,YAAY,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LangSelect.mjs","names":["Flexbox"],"sources":["../../src/Highlighter/LangSelect.tsx"],"sourcesContent":["'use client';\n\nimport { Select, type SelectProps } from 'antd';\nimport { memo, useMemo } from 'react';\nimport { bundledLanguagesInfo } from 'shiki';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nexport const LangSelect = memo<Omit<SelectProps, 'options'>>(({ ...rest }) => {\n const options = useMemo(\n () => [\n {\n aliases: ['text', 'txt'],\n label: (\n <Flexbox horizontal align={'center'} gap={4}>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.txt`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n Plaintext\n </Text>\n </Flexbox>\n ),\n value: 'plaintext',\n },\n ...bundledLanguagesInfo.map((item) => ({\n aliases: item.aliases,\n label: (\n <Flexbox horizontal align={'center'} gap={4}>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.${item?.aliases?.[0] || item.id}`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n {item.name}\n </Text>\n </Flexbox>\n ),\n title: (item.aliases || [item.id])\n .filter(Boolean)\n .map((item) => `*.${item}`)\n .join(','),\n value: item.id,\n })),\n ],\n [],\n );\n\n return (\n <Select\n showSearch\n className={'languageTitle'}\n options={options}\n size={'small'}\n suffixIcon={false}\n variant={'borderless'}\n style={{\n maxWidth: 240,\n width: '100%',\n }}\n onClick={stopPropagation}\n {...rest}\n />\n );\n});\n\nexport default LangSelect;\n"],"mappings":";;;;;;;;;;AAWA,MAAa,aAAa,MAAoC,EAAE,GAAG,WAAW;CA+C5E,OACE,oBAAC,QAAD;EACE,YAAA;EACA,WAAW;EACX,SAlDY,cACR,CACJ;GACE,SAAS,CAAC,QAAQ,KAAK;GACvB,OACE,qBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,KAAK;
|
|
1
|
+
{"version":3,"file":"LangSelect.mjs","names":["Flexbox"],"sources":["../../src/Highlighter/LangSelect.tsx"],"sourcesContent":["'use client';\n\nimport { Select, type SelectProps } from 'antd';\nimport { memo, useMemo } from 'react';\nimport { bundledLanguagesInfo } from 'shiki';\n\nimport { Flexbox } from '@/Flex';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nexport const LangSelect = memo<Omit<SelectProps, 'options'>>(({ ...rest }) => {\n const options = useMemo(\n () => [\n {\n aliases: ['text', 'txt'],\n label: (\n <Flexbox horizontal align={'center'} gap={4}>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.txt`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n Plaintext\n </Text>\n </Flexbox>\n ),\n value: 'plaintext',\n },\n ...bundledLanguagesInfo.map((item) => ({\n aliases: item.aliases,\n label: (\n <Flexbox horizontal align={'center'} gap={4}>\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={`*.${item?.aliases?.[0] || item.id}`}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n <Text ellipsis fontSize={13}>\n {item.name}\n </Text>\n </Flexbox>\n ),\n title: (item.aliases || [item.id])\n .filter(Boolean)\n .map((item) => `*.${item}`)\n .join(','),\n value: item.id,\n })),\n ],\n [],\n );\n\n return (\n <Select\n showSearch\n className={'languageTitle'}\n options={options}\n size={'small'}\n suffixIcon={false}\n variant={'borderless'}\n style={{\n maxWidth: 240,\n width: '100%',\n }}\n onClick={stopPropagation}\n {...rest}\n />\n );\n});\n\nexport default LangSelect;\n"],"mappings":";;;;;;;;;;AAWA,MAAa,aAAa,MAAoC,EAAE,GAAG,WAAW;CA+C5E,OACE,oBAAC,QAAD;EACE,YAAA;EACA,WAAW;EACX,SAlDY,cACR,CACJ;GACE,SAAS,CAAC,QAAQ,KAAK;GACvB,OACE,qBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,KAAK;IAA1C,UAAA,CACE,oBAAC,sBAAD;KACE,qBAAqB;KACrB,UAAU;KACV,MAAM;KACN,MAAM;KACN,SAAS;IACV,CAAA,GACD,oBAAC,MAAD;KAAM,UAAA;KAAS,UAAU;KAAI,UAAA;IAEvB,CAAA,CACC;;GAEX,OAAO;EACT,GACA,GAAG,qBAAqB,KAAK,UAAU;GACrC,SAAS,KAAK;GACd,OACE,qBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,KAAK;IAA1C,UAAA,CACE,oBAAC,sBAAD;KACE,qBAAqB;KACrB,UAAU,KAAK,MAAM,UAAU,MAAM,KAAK;KAC1C,MAAM;KACN,MAAM;KACN,SAAS;IACV,CAAA,GACD,oBAAC,MAAD;KAAM,UAAA;KAAS,UAAU;KACtB,UAAA,KAAK;IACF,CAAA,CACC;;GAEX,QAAQ,KAAK,WAAW,CAAC,KAAK,EAAE,EAAA,CAC7B,OAAO,OAAO,CAAC,CACf,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,KAAK,GAAG;GACX,OAAO,KAAK;EACd,EAAE,CACJ,GACA,CAAC,CAOgB;EACf,MAAM;EACN,YAAY;EACZ,SAAS;EACT,OAAO;GACL,UAAU;GACV,OAAO;EACT;EACA,SAAS;EACT,GAAI;CACL,CAAA;AAEL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamRenderer.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/StreamRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { getTokenStyleObject } from '@shikijs/core';\nimport { cx } from 'antd-style';\nimport type { CSSProperties } from 'react';\nimport { memo } from 'react';\nimport type { BuiltinTheme, ThemedToken } from 'shiki';\n\nimport { useStreamHighlight } from '@/hooks/useStreamHighlight';\n\ninterface StreamRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\nconst normalizeStyleKeys = (style: Record<string, string | number>): CSSProperties => {\n const normalized: CSSProperties = {};\n Object.entries(style).forEach(([key, value]) => {\n const normalizedKey = key.replaceAll(/-([a-z])/g, (_, char) => char.toUpperCase());\n (normalized as Record<string, string | number>)[normalizedKey] = value;\n });\n return normalized;\n};\n\nconst getTokenInlineStyle = (token: ThemedToken): CSSProperties => {\n const rawStyle = token.htmlStyle || getTokenStyleObject(token);\n const baseStyle = normalizeStyleKeys(rawStyle);\n return { ...baseStyle, whiteSpace: 'pre' };\n};\n\nconst TokenSpan = memo(\n ({ token }: { token: ThemedToken }) => {\n return (\n <span key={token.content} style={getTokenInlineStyle(token)}>\n {token.content}\n </span>\n );\n },\n (prev, next) => prev.token === next.token,\n);\n\nconst TokenLine = memo(\n ({ line }: { line: ThemedToken[] }) => {\n if (!line.length) {\n return (\n <span className=\"line\">\n <span style={{ whiteSpace: 'pre' }}>{'\\u00A0'}</span>\n </span>\n );\n }\n\n return (\n <span className=\"line\">\n {line.map((token, tokenIndex) => (\n <TokenSpan key={`token-${tokenIndex}`} token={token} />\n ))}\n </span>\n );\n },\n (prev, next) => prev.line === next.line,\n);\n\nconst StreamRenderer = memo<StreamRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const streaming = useStreamHighlight(safeChildren, {\n enableTransformer,\n language,\n streaming: true,\n theme,\n });\n\n const lines = streaming?.lines;\n const preStyle = streaming?.preStyle;\n\n if (!lines || lines.length === 0) {\n return (\n <div className={fallbackClassName} dir=\"ltr\" style={style}>\n <pre>\n <code>{safeChildren}</code>\n </pre>\n </div>\n );\n }\n\n return (\n <div className={className} dir=\"ltr\" style={style}>\n <pre className={cx('shiki', theme)} style={preStyle} tabIndex={0}>\n <code style={{ display: 'flex', flexDirection: 'column', whiteSpace: 'pre' }}>\n {lines.map((line, index) => (\n <TokenLine key={`line-${index}`} line={line} />\n ))}\n </code>\n </pre>\n </div>\n );\n },\n);\n\nStreamRenderer.displayName = 'StreamRenderer';\n\nexport default StreamRenderer;\n"],"mappings":";;;;;;;AAoBA,MAAM,sBAAsB,UAA0D;CACpF,MAAM,aAA4B,CAAC;CACnC,OAAO,QAAQ,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAC9C,MAAM,gBAAgB,IAAI,WAAW,cAAc,GAAG,SAAS,KAAK,YAAY,CAAC;EACjF,WAAgD,iBAAiB;CACnE,CAAC;CACD,OAAO;AACT;AAEA,MAAM,uBAAuB,UAAsC;CACjE,MAAM,WAAW,MAAM,aAAa,oBAAoB,KAAK;CAE7D,OAAO;EAAE,GADS,mBAAmB,QACjB;EAAG,YAAY;CAAM;AAC3C;AAEA,MAAM,YAAY,MACf,EAAE,YAAoC;CACrC,OACE,oBAAC,QAAD;EAA0B,OAAO,oBAAoB,KAAK;
|
|
1
|
+
{"version":3,"file":"StreamRenderer.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/StreamRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { getTokenStyleObject } from '@shikijs/core';\nimport { cx } from 'antd-style';\nimport type { CSSProperties } from 'react';\nimport { memo } from 'react';\nimport type { BuiltinTheme, ThemedToken } from 'shiki';\n\nimport { useStreamHighlight } from '@/hooks/useStreamHighlight';\n\ninterface StreamRendererProps {\n children: string;\n className?: string;\n enableTransformer?: boolean;\n fallbackClassName?: string;\n language: string;\n style?: CSSProperties;\n theme?: BuiltinTheme;\n}\n\nconst normalizeStyleKeys = (style: Record<string, string | number>): CSSProperties => {\n const normalized: CSSProperties = {};\n Object.entries(style).forEach(([key, value]) => {\n const normalizedKey = key.replaceAll(/-([a-z])/g, (_, char) => char.toUpperCase());\n (normalized as Record<string, string | number>)[normalizedKey] = value;\n });\n return normalized;\n};\n\nconst getTokenInlineStyle = (token: ThemedToken): CSSProperties => {\n const rawStyle = token.htmlStyle || getTokenStyleObject(token);\n const baseStyle = normalizeStyleKeys(rawStyle);\n return { ...baseStyle, whiteSpace: 'pre' };\n};\n\nconst TokenSpan = memo(\n ({ token }: { token: ThemedToken }) => {\n return (\n <span key={token.content} style={getTokenInlineStyle(token)}>\n {token.content}\n </span>\n );\n },\n (prev, next) => prev.token === next.token,\n);\n\nconst TokenLine = memo(\n ({ line }: { line: ThemedToken[] }) => {\n if (!line.length) {\n return (\n <span className=\"line\">\n <span style={{ whiteSpace: 'pre' }}>{'\\u00A0'}</span>\n </span>\n );\n }\n\n return (\n <span className=\"line\">\n {line.map((token, tokenIndex) => (\n <TokenSpan key={`token-${tokenIndex}`} token={token} />\n ))}\n </span>\n );\n },\n (prev, next) => prev.line === next.line,\n);\n\nconst StreamRenderer = memo<StreamRendererProps>(\n ({ children, className, enableTransformer, fallbackClassName, language, style, theme }) => {\n // Safely handle empty or invalid children\n const safeChildren = children ?? '';\n\n const streaming = useStreamHighlight(safeChildren, {\n enableTransformer,\n language,\n streaming: true,\n theme,\n });\n\n const lines = streaming?.lines;\n const preStyle = streaming?.preStyle;\n\n if (!lines || lines.length === 0) {\n return (\n <div className={fallbackClassName} dir=\"ltr\" style={style}>\n <pre>\n <code>{safeChildren}</code>\n </pre>\n </div>\n );\n }\n\n return (\n <div className={className} dir=\"ltr\" style={style}>\n <pre className={cx('shiki', theme)} style={preStyle} tabIndex={0}>\n <code style={{ display: 'flex', flexDirection: 'column', whiteSpace: 'pre' }}>\n {lines.map((line, index) => (\n <TokenLine key={`line-${index}`} line={line} />\n ))}\n </code>\n </pre>\n </div>\n );\n },\n);\n\nStreamRenderer.displayName = 'StreamRenderer';\n\nexport default StreamRenderer;\n"],"mappings":";;;;;;;AAoBA,MAAM,sBAAsB,UAA0D;CACpF,MAAM,aAA4B,CAAC;CACnC,OAAO,QAAQ,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EAC9C,MAAM,gBAAgB,IAAI,WAAW,cAAc,GAAG,SAAS,KAAK,YAAY,CAAC;EACjF,WAAgD,iBAAiB;CACnE,CAAC;CACD,OAAO;AACT;AAEA,MAAM,uBAAuB,UAAsC;CACjE,MAAM,WAAW,MAAM,aAAa,oBAAoB,KAAK;CAE7D,OAAO;EAAE,GADS,mBAAmB,QACjB;EAAG,YAAY;CAAM;AAC3C;AAEA,MAAM,YAAY,MACf,EAAE,YAAoC;CACrC,OACE,oBAAC,QAAD;EAA0B,OAAO,oBAAoB,KAAK;EACvD,UAAA,MAAM;CACH,GAFK,MAAM,OAEX;AAEV,IACC,MAAM,SAAS,KAAK,UAAU,KAAK,KACtC;AAEA,MAAM,YAAY,MACf,EAAE,WAAoC;CACrC,IAAI,CAAC,KAAK,QACR,OACE,oBAAC,QAAD;EAAM,WAAU;EACd,UAAA,oBAAC,QAAD;GAAM,OAAO,EAAE,YAAY,MAAM;GAAI,UAAA;EAAe,CAAA;CAChD,CAAA;CAIV,OACE,oBAAC,QAAD;EAAM,WAAU;EACb,UAAA,KAAK,KAAK,OAAO,eAChB,oBAAC,WAAD,EAA8C,MAAQ,GAAtC,SAAS,YAA6B,CACvD;CACG,CAAA;AAEV,IACC,MAAM,SAAS,KAAK,SAAS,KAAK,IACrC;AAEA,MAAM,iBAAiB,MACpB,EAAE,UAAU,WAAW,mBAAmB,mBAAmB,UAAU,OAAO,YAAY;CAEzF,MAAM,eAAe,YAAY;CAEjC,MAAM,YAAY,mBAAmB,cAAc;EACjD;EACA;EACA,WAAW;EACX;CACF,CAAC;CAED,MAAM,QAAQ,WAAW;CACzB,MAAM,WAAW,WAAW;CAE5B,IAAI,CAAC,SAAS,MAAM,WAAW,GAC7B,OACE,oBAAC,OAAD;EAAK,WAAW;EAAmB,KAAI;EAAa;EAClD,UAAA,oBAAC,OAAD,EAAA,UACE,oBAAC,QAAD,EAAA,UAAO,aAAmB,CAAA,EACvB,CAAA;CACF,CAAA;CAIT,OACE,oBAAC,OAAD;EAAgB;EAAW,KAAI;EAAa;EAC1C,UAAA,oBAAC,OAAD;GAAK,WAAW,GAAG,SAAS,KAAK;GAAG,OAAO;GAAU,UAAU;GAC7D,UAAA,oBAAC,QAAD;IAAM,OAAO;KAAE,SAAS;KAAQ,eAAe;KAAU,YAAY;IAAM;IACxE,UAAA,MAAM,KAAK,MAAM,UAChB,oBAAC,WAAD,EAAuC,KAAO,GAA9B,QAAQ,OAAsB,CAC/C;GACG,CAAA;EACH,CAAA;CACF,CAAA;AAET,CACF;AAEA,eAAe,cAAc"}
|
|
@@ -6,14 +6,14 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
6
6
|
return {
|
|
7
7
|
animated: css`
|
|
8
8
|
.animate-fade-in,
|
|
9
|
-
.katex-html > .base,
|
|
9
|
+
.katex-html > .katex-base,
|
|
10
10
|
span.line > span,
|
|
11
11
|
code:not(:has(span.line)) {
|
|
12
12
|
opacity: 1;
|
|
13
13
|
animation: ${fadeIn} 1s ease-in-out;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
/* 只对 .base 级别的 span 应用流式动画,不要穿透到内部 */
|
|
16
|
+
/* 只对 .katex-base 级别的 span 应用流式动画,不要穿透到内部 */
|
|
17
17
|
.katex-display .katex-html span {
|
|
18
18
|
mask: none !important;
|
|
19
19
|
animation: none !important;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/style.ts"],"sourcesContent":["import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { fadeIn } from '@/styles/animations';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n animated: css`\n .animate-fade-in,\n .katex-html > .base,\n span.line > span,\n code:not(:has(span.line)) {\n opacity: 1;\n animation: ${fadeIn} 1s ease-in-out;\n }\n\n /* 只对 .base 级别的 span 应用流式动画,不要穿透到内部 */\n .katex-display .katex-html span {\n mask: none !important;\n animation: none !important;\n }\n `,\n\n noBackground: css`\n pre {\n background: transparent !important;\n }\n `,\n\n noPadding: css`\n pre {\n padding: 0;\n }\n `,\n\n padding: css`\n pre {\n padding: 16px;\n }\n `,\n root: css`\n direction: ltr;\n margin: 0;\n padding: 0;\n text-align: start;\n\n pre {\n overflow-x: auto;\n margin: 0;\n }\n `,\n shiki: cx(\n 'ant-highlighter-highlighter-shiki',\n css`\n pre {\n user-select: none;\n\n code {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n .line {\n user-select: text;\n\n display: block;\n\n width: calc(100% + 32px);\n margin-block: 0;\n margin-inline: -16px;\n padding-block: 0;\n padding-inline: 16px;\n }\n }\n\n &.has-focused {\n .line:not(.focused) {\n opacity: 0.5;\n }\n }\n\n .highlighted {\n background: ${cssVar.colorFillTertiary};\n\n &.warning {\n background: ${cssVar.colorWarningBg};\n }\n\n &.error {\n background: ${cssVar.colorErrorBg};\n }\n }\n\n .highlighted-word {\n padding-block: 0.1em;\n padding-inline: 0.2em;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n }\n\n .diff {\n &.remove {\n background: ${cssVar.colorErrorBg};\n\n &::before {\n content: '-';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorErrorText};\n }\n }\n\n &.add {\n background: ${cssVar.colorSuccessBg};\n\n &::before {\n content: '+';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorSuccessText};\n }\n }\n }\n }\n `,\n ),\n unshiki: css`\n color: ${cssVar.colorTextDescription};\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n animated: false,\n shiki: true,\n showBackground: false,\n variant: 'borderless',\n },\n\n variants: {\n shiki: {\n false: styles.unshiki,\n true: styles.shiki,\n },\n showBackground: {\n false: styles.noBackground,\n true: null,\n },\n animated: {\n true: styles.animated,\n false: null,\n },\n variant: {\n filled: styles.padding,\n outlined: styles.padding,\n borderless: styles.noPadding,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,aAAa;CAC5D,OAAO;EACL,UAAU,GAAG;;;;;;qBAMI,OAAO;;;;;;;;;EAUxB,cAAc,GAAG;;;;;EAMjB,WAAW,GAAG;;;;;EAMd,SAAS,GAAG;;;;;EAKZ,MAAM,GAAG;;;;;;;;;;;EAWT,OAAO,GACL,qCACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6BiB,OAAO,kBAAkB;;;4BAGvB,OAAO,eAAe;;;;4BAItB,OAAO,aAAa;;;;;;;gCAOhB,OAAO,qBAAqB;6BAC/B,OAAO,aAAa;;0BAEvB,OAAO,kBAAkB;;;;;4BAKvB,OAAO,aAAa;;;;;;;;;;yBAUvB,OAAO,eAAe;;;;;4BAKnB,OAAO,eAAe;;;;;;;;;;yBAUzB,OAAO,iBAAiB;;;;;OAM7C;EACA,SAAS,GAAG;eACD,OAAO,qBAAqB;;CAEzC;AACF,CAAC;AAED,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,UAAU;EACV,OAAO;EACP,gBAAgB;EAChB,SAAS;CACX;CAEA,UAAU;EACR,OAAO;GACL,OAAO,OAAO;GACd,MAAM,OAAO;EACf;EACA,gBAAgB;GACd,OAAO,OAAO;GACd,MAAM;EACR;EACA,UAAU;GACR,MAAM,OAAO;GACb,OAAO;EACT;EACA,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;EACrB;CACF;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/Highlighter/SyntaxHighlighter/style.ts"],"sourcesContent":["import { createStaticStyles, cx } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nimport { fadeIn } from '@/styles/animations';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n return {\n animated: css`\n .animate-fade-in,\n .katex-html > .katex-base,\n span.line > span,\n code:not(:has(span.line)) {\n opacity: 1;\n animation: ${fadeIn} 1s ease-in-out;\n }\n\n /* 只对 .katex-base 级别的 span 应用流式动画,不要穿透到内部 */\n .katex-display .katex-html span {\n mask: none !important;\n animation: none !important;\n }\n `,\n\n noBackground: css`\n pre {\n background: transparent !important;\n }\n `,\n\n noPadding: css`\n pre {\n padding: 0;\n }\n `,\n\n padding: css`\n pre {\n padding: 16px;\n }\n `,\n root: css`\n direction: ltr;\n margin: 0;\n padding: 0;\n text-align: start;\n\n pre {\n overflow-x: auto;\n margin: 0;\n }\n `,\n shiki: cx(\n 'ant-highlighter-highlighter-shiki',\n css`\n pre {\n user-select: none;\n\n code {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n .line {\n user-select: text;\n\n display: block;\n\n width: calc(100% + 32px);\n margin-block: 0;\n margin-inline: -16px;\n padding-block: 0;\n padding-inline: 16px;\n }\n }\n\n &.has-focused {\n .line:not(.focused) {\n opacity: 0.5;\n }\n }\n\n .highlighted {\n background: ${cssVar.colorFillTertiary};\n\n &.warning {\n background: ${cssVar.colorWarningBg};\n }\n\n &.error {\n background: ${cssVar.colorErrorBg};\n }\n }\n\n .highlighted-word {\n padding-block: 0.1em;\n padding-inline: 0.2em;\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: ${cssVar.borderRadius};\n\n background: ${cssVar.colorFillTertiary};\n }\n\n .diff {\n &.remove {\n background: ${cssVar.colorErrorBg};\n\n &::before {\n content: '-';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorErrorText};\n }\n }\n\n &.add {\n background: ${cssVar.colorSuccessBg};\n\n &::before {\n content: '+';\n\n position: absolute;\n inset-inline-start: 4px;\n\n display: inline-block;\n\n color: ${cssVar.colorSuccessText};\n }\n }\n }\n }\n `,\n ),\n unshiki: css`\n color: ${cssVar.colorTextDescription};\n `,\n };\n});\n\nexport const variants = cva(styles.root, {\n defaultVariants: {\n animated: false,\n shiki: true,\n showBackground: false,\n variant: 'borderless',\n },\n\n variants: {\n shiki: {\n false: styles.unshiki,\n true: styles.shiki,\n },\n showBackground: {\n false: styles.noBackground,\n true: null,\n },\n animated: {\n true: styles.animated,\n false: null,\n },\n variant: {\n filled: styles.padding,\n outlined: styles.padding,\n borderless: styles.noPadding,\n },\n },\n});\n"],"mappings":";;;;AAKA,MAAa,SAAS,oBAAoB,EAAE,KAAK,aAAa;CAC5D,OAAO;EACL,UAAU,GAAG;;;;;;qBAMI,OAAO;;;;;;;;;EAUxB,cAAc,GAAG;;;;;EAMjB,WAAW,GAAG;;;;;EAMd,SAAS,GAAG;;;;;EAKZ,MAAM,GAAG;;;;;;;;;;;EAWT,OAAO,GACL,qCACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6BiB,OAAO,kBAAkB;;;4BAGvB,OAAO,eAAe;;;;4BAItB,OAAO,aAAa;;;;;;;gCAOhB,OAAO,qBAAqB;6BAC/B,OAAO,aAAa;;0BAEvB,OAAO,kBAAkB;;;;;4BAKvB,OAAO,aAAa;;;;;;;;;;yBAUvB,OAAO,eAAe;;;;;4BAKnB,OAAO,eAAe;;;;;;;;;;yBAUzB,OAAO,iBAAiB;;;;;OAM7C;EACA,SAAS,GAAG;eACD,OAAO,qBAAqB;;CAEzC;AACF,CAAC;AAED,MAAa,WAAW,IAAI,OAAO,MAAM;CACvC,iBAAiB;EACf,UAAU;EACV,OAAO;EACP,gBAAgB;EAChB,SAAS;CACX;CAEA,UAAU;EACR,OAAO;GACL,OAAO,OAAO;GACd,MAAM,OAAO;EACf;EACA,gBAAgB;GACd,OAAO,OAAO;GACd,MAAM;EACR;EACA,UAAU;GACR,MAAM,OAAO;GACb,OAAO;EACT;EACA,SAAS;GACP,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YAAY,OAAO;EACrB;CACF;AACF,CAAC"}
|
package/es/Hotkey/Hotkey.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hotkey.mjs","names":["Flexbox"],"sources":["../../src/Hotkey/Hotkey.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n ArrowBigUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowRightToLineIcon,\n ArrowUpIcon,\n ChevronUpIcon,\n Command,\n CornerDownLeftIcon,\n Delete,\n Grid2X2Icon,\n MouseIcon,\n Option,\n SpaceIcon,\n} from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport LeftClickIcon from '@/icons/lucideExtra/LeftClickIcon';\nimport LeftDoubleClickIcon from '@/icons/lucideExtra/LeftDoubleClickIcon';\nimport RightClickIcon from '@/icons/lucideExtra/RightClickIcon';\nimport RightDoubleClickIcon from '@/icons/lucideExtra/RightDoubleClickIcon';\n\nimport { KeyMapEnum } from './const';\nimport { variants } from './style';\nimport type { HotkeyProps } from './type';\nimport { checkIsAppleDevice, splitKeysByPlus, startCase } from './utils';\n\nconst mappingKey = (isAppleDevice: boolean) => ({\n [KeyMapEnum.Alt]: isAppleDevice ? <Icon icon={Option} size={{ size: '0.95em' }} /> : 'Alt',\n [KeyMapEnum.Backspace]: isAppleDevice ? <Icon icon={Delete} /> : 'Backspace',\n [KeyMapEnum.CommandOrControl]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n 'Ctrl'\n ),\n [KeyMapEnum.Ctrl]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Control]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Down]: <Icon icon={ArrowDownIcon} />,\n [KeyMapEnum.Enter]: isAppleDevice ? <Icon icon={CornerDownLeftIcon} /> : 'Enter',\n [KeyMapEnum.LeftClick]: <Icon icon={LeftClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Left]: <Icon icon={ArrowLeftIcon} />,\n [KeyMapEnum.Meta]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n <Icon icon={Grid2X2Icon} />\n ),\n [KeyMapEnum.MiddleClick]: <Icon icon={MouseIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Mod]: isAppleDevice ? <Icon icon={Command} size={{ size: '0.95em' }} /> : 'Ctrl',\n [KeyMapEnum.RightClick]: (\n <Icon icon={RightClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.RightDoubleClick]: (\n <Icon icon={RightDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.LeftDoubleClick]: (\n <Icon icon={LeftDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.Right]: <Icon icon={ArrowRightIcon} />,\n [KeyMapEnum.Shift]: isAppleDevice ? (\n <Icon icon={ArrowBigUpIcon} size={{ size: '1.15em', strokeWidth: 1.75 }} />\n ) : (\n 'Shift'\n ),\n [KeyMapEnum.Space]: <Icon icon={SpaceIcon} />,\n [KeyMapEnum.Tab]: isAppleDevice ? <Icon icon={ArrowRightToLineIcon} /> : 'Tab',\n [KeyMapEnum.Up]: <Icon icon={ArrowUpIcon} />,\n [KeyMapEnum.Comma]: ',',\n [KeyMapEnum.Period]: '.',\n [KeyMapEnum.Slash]: '?',\n [KeyMapEnum.Semicolon]: ';',\n [KeyMapEnum.Quote]: \"'\",\n [KeyMapEnum.Backquote]: '`',\n [KeyMapEnum.Backslash]: '\\\\',\n [KeyMapEnum.BracketLeft]: '[',\n [KeyMapEnum.BracketRight]: ']',\n [KeyMapEnum.Minus]: '-',\n [KeyMapEnum.Equal]: '+',\n});\n\nconst Hotkey = memo<HotkeyProps>(\n ({\n variant = 'filled',\n classNames,\n styles: customStyles,\n keys,\n inverseTheme,\n isApple,\n compact,\n className,\n style,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const isBorderless = variant === 'borderless';\n const [keysGroup, setKeysGroup] = useState(() => splitKeysByPlus(keys));\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n\n useEffect(() => {\n const newValue = splitKeysByPlus(keys);\n setKeysGroup(newValue);\n }, [keys]);\n\n const mapping: Record<string, any> = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n gap={isBorderless ? 6 : 2}\n style={style}\n {...rest}\n >\n {compact || isBorderless ? (\n <Center\n horizontal\n as={'kbd'}\n gap={6}\n style={customStyles?.kbdStyle}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n >\n {keysGroup.map((key, index) => (\n <div key={index}>{mapping[key] ?? startCase(key)}</div>\n ))}\n </Center>\n ) : (\n keysGroup.map((key, index) => (\n <Center\n as={'kbd'}\n key={index}\n style={customStyles?.kbdStyle}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n >\n {mapping[key] ?? startCase(key)}\n </Center>\n ))\n )}\n </Flexbox>\n );\n },\n);\n\nHotkey.displayName = 'Hotkey';\n\nexport default Hotkey;\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Hotkey.mjs","names":["Flexbox"],"sources":["../../src/Hotkey/Hotkey.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport {\n ArrowBigUpIcon,\n ArrowDownIcon,\n ArrowLeftIcon,\n ArrowRightIcon,\n ArrowRightToLineIcon,\n ArrowUpIcon,\n ChevronUpIcon,\n Command,\n CornerDownLeftIcon,\n Delete,\n Grid2X2Icon,\n MouseIcon,\n Option,\n SpaceIcon,\n} from 'lucide-react';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport { Center, Flexbox } from '@/Flex';\nimport Icon from '@/Icon';\nimport LeftClickIcon from '@/icons/lucideExtra/LeftClickIcon';\nimport LeftDoubleClickIcon from '@/icons/lucideExtra/LeftDoubleClickIcon';\nimport RightClickIcon from '@/icons/lucideExtra/RightClickIcon';\nimport RightDoubleClickIcon from '@/icons/lucideExtra/RightDoubleClickIcon';\n\nimport { KeyMapEnum } from './const';\nimport { variants } from './style';\nimport type { HotkeyProps } from './type';\nimport { checkIsAppleDevice, splitKeysByPlus, startCase } from './utils';\n\nconst mappingKey = (isAppleDevice: boolean) => ({\n [KeyMapEnum.Alt]: isAppleDevice ? <Icon icon={Option} size={{ size: '0.95em' }} /> : 'Alt',\n [KeyMapEnum.Backspace]: isAppleDevice ? <Icon icon={Delete} /> : 'Backspace',\n [KeyMapEnum.CommandOrControl]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n 'Ctrl'\n ),\n [KeyMapEnum.Ctrl]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Control]: isAppleDevice ? <Icon icon={ChevronUpIcon} /> : 'Ctrl',\n [KeyMapEnum.Down]: <Icon icon={ArrowDownIcon} />,\n [KeyMapEnum.Enter]: isAppleDevice ? <Icon icon={CornerDownLeftIcon} /> : 'Enter',\n [KeyMapEnum.LeftClick]: <Icon icon={LeftClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Left]: <Icon icon={ArrowLeftIcon} />,\n [KeyMapEnum.Meta]: isAppleDevice ? (\n <Icon icon={Command} size={{ size: '0.95em' }} />\n ) : (\n <Icon icon={Grid2X2Icon} />\n ),\n [KeyMapEnum.MiddleClick]: <Icon icon={MouseIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />,\n [KeyMapEnum.Mod]: isAppleDevice ? <Icon icon={Command} size={{ size: '0.95em' }} /> : 'Ctrl',\n [KeyMapEnum.RightClick]: (\n <Icon icon={RightClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.RightDoubleClick]: (\n <Icon icon={RightDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.LeftDoubleClick]: (\n <Icon icon={LeftDoubleClickIcon} size={{ size: '1.2em', strokeWidth: 1.75 }} />\n ),\n [KeyMapEnum.Right]: <Icon icon={ArrowRightIcon} />,\n [KeyMapEnum.Shift]: isAppleDevice ? (\n <Icon icon={ArrowBigUpIcon} size={{ size: '1.15em', strokeWidth: 1.75 }} />\n ) : (\n 'Shift'\n ),\n [KeyMapEnum.Space]: <Icon icon={SpaceIcon} />,\n [KeyMapEnum.Tab]: isAppleDevice ? <Icon icon={ArrowRightToLineIcon} /> : 'Tab',\n [KeyMapEnum.Up]: <Icon icon={ArrowUpIcon} />,\n [KeyMapEnum.Comma]: ',',\n [KeyMapEnum.Period]: '.',\n [KeyMapEnum.Slash]: '?',\n [KeyMapEnum.Semicolon]: ';',\n [KeyMapEnum.Quote]: \"'\",\n [KeyMapEnum.Backquote]: '`',\n [KeyMapEnum.Backslash]: '\\\\',\n [KeyMapEnum.BracketLeft]: '[',\n [KeyMapEnum.BracketRight]: ']',\n [KeyMapEnum.Minus]: '-',\n [KeyMapEnum.Equal]: '+',\n});\n\nconst Hotkey = memo<HotkeyProps>(\n ({\n variant = 'filled',\n classNames,\n styles: customStyles,\n keys,\n inverseTheme,\n isApple,\n compact,\n className,\n style,\n ...rest\n }) => {\n const { isDarkMode } = useThemeMode();\n const isBorderless = variant === 'borderless';\n const [keysGroup, setKeysGroup] = useState(() => splitKeysByPlus(keys));\n const isAppleDevice = useMemo(() => checkIsAppleDevice(isApple), [isApple]);\n\n useEffect(() => {\n const newValue = splitKeysByPlus(keys);\n setKeysGroup(newValue);\n }, [keys]);\n\n const mapping: Record<string, any> = useMemo(() => mappingKey(isAppleDevice), [isAppleDevice]);\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={className}\n gap={isBorderless ? 6 : 2}\n style={style}\n {...rest}\n >\n {compact || isBorderless ? (\n <Center\n horizontal\n as={'kbd'}\n gap={6}\n style={customStyles?.kbdStyle}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n >\n {keysGroup.map((key, index) => (\n <div key={index}>{mapping[key] ?? startCase(key)}</div>\n ))}\n </Center>\n ) : (\n keysGroup.map((key, index) => (\n <Center\n as={'kbd'}\n key={index}\n style={customStyles?.kbdStyle}\n className={cx(\n variants({ inverseTheme, isDarkMode, variant }),\n classNames?.kbdClassName,\n )}\n >\n {mapping[key] ?? startCase(key)}\n </Center>\n ))\n )}\n </Flexbox>\n );\n },\n);\n\nHotkey.displayName = 'Hotkey';\n\nexport default Hotkey;\n"],"mappings":"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"}
|