add all frontend files

This commit is contained in:
2026-01-17 15:16:36 -05:00
parent ff16ae7858
commit e40287e4aa
25704 changed files with 1935289 additions and 0 deletions

4
node_modules/antd/es/float-button/BackTop.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import React from 'react';
import type { BackTopProps, FloatButtonRef } from './interface';
declare const BackTop: React.ForwardRefExoticComponent<BackTopProps & React.RefAttributes<FloatButtonRef>>;
export default BackTop;

102
node_modules/antd/es/float-button/BackTop.js generated vendored Normal file
View File

@@ -0,0 +1,102 @@
"use client";
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import React, { useContext, useEffect, useState } from 'react';
import VerticalAlignTopOutlined from "@ant-design/icons/es/icons/VerticalAlignTopOutlined";
import classNames from 'classnames';
import CSSMotion from 'rc-motion';
import { composeRef } from "rc-util/es/ref";
import getScroll from '../_util/getScroll';
import scrollTo from '../_util/scrollTo';
import throttleByAnimationFrame from '../_util/throttleByAnimationFrame';
import { ConfigContext } from '../config-provider';
import { useComponentConfig } from '../config-provider/context';
import FloatButtonGroupContext from './context';
import FloatButton, { floatButtonPrefixCls } from './FloatButton';
const defaultIcon = /*#__PURE__*/React.createElement(VerticalAlignTopOutlined, null);
const BackTop = /*#__PURE__*/React.forwardRef((props, ref) => {
var _a;
const {
backTopIcon: contextIcon
} = useComponentConfig('floatButton');
const {
prefixCls: customizePrefixCls,
className,
type = 'default',
shape = 'circle',
visibilityHeight = 400,
icon,
target,
onClick,
duration = 450
} = props,
restProps = __rest(props, ["prefixCls", "className", "type", "shape", "visibilityHeight", "icon", "target", "onClick", "duration"]);
const mergedIcon = (_a = icon !== null && icon !== void 0 ? icon : contextIcon) !== null && _a !== void 0 ? _a : defaultIcon;
const [visible, setVisible] = useState(visibilityHeight === 0);
const internalRef = React.useRef(null);
React.useImperativeHandle(ref, () => ({
nativeElement: internalRef.current
}));
const getDefaultTarget = () => {
var _a;
return ((_a = internalRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument) || window;
};
const handleScroll = throttleByAnimationFrame(e => {
const scrollTop = getScroll(e.target);
setVisible(scrollTop >= visibilityHeight);
});
useEffect(() => {
const getTarget = target || getDefaultTarget;
const container = getTarget();
handleScroll({
target: container
});
container === null || container === void 0 ? void 0 : container.addEventListener('scroll', handleScroll);
return () => {
handleScroll.cancel();
container === null || container === void 0 ? void 0 : container.removeEventListener('scroll', handleScroll);
};
}, [target]);
const scrollToTop = e => {
scrollTo(0, {
getContainer: target || getDefaultTarget,
duration
});
onClick === null || onClick === void 0 ? void 0 : onClick(e);
};
const {
getPrefixCls
} = useContext(ConfigContext);
const prefixCls = getPrefixCls(floatButtonPrefixCls, customizePrefixCls);
const rootPrefixCls = getPrefixCls();
const groupShape = useContext(FloatButtonGroupContext);
const mergedShape = groupShape || shape;
const contentProps = Object.assign({
prefixCls,
icon: mergedIcon,
type,
shape: mergedShape
}, restProps);
return /*#__PURE__*/React.createElement(CSSMotion, {
visible: visible,
motionName: `${rootPrefixCls}-fade`
}, ({
className: motionClassName
}, setRef) => (/*#__PURE__*/React.createElement(FloatButton, Object.assign({
ref: composeRef(internalRef, setRef)
}, contentProps, {
onClick: scrollToTop,
className: classNames(className, motionClassName)
}))));
});
if (process.env.NODE_ENV !== 'production') {
BackTop.displayName = 'BackTop';
}
export default BackTop;

14
node_modules/antd/es/float-button/FloatButton.d.ts generated vendored Normal file
View File

@@ -0,0 +1,14 @@
import React from 'react';
import type BackTop from './BackTop';
import type FloatButtonGroup from './FloatButtonGroup';
import type { FloatButtonElement, FloatButtonProps } from './interface';
import type PurePanel from './PurePanel';
export declare const floatButtonPrefixCls = "float-btn";
declare const InternalFloatButton: React.ForwardRefExoticComponent<FloatButtonProps & React.RefAttributes<FloatButtonElement>>;
type CompoundedComponent = typeof InternalFloatButton & {
Group: typeof FloatButtonGroup;
BackTop: typeof BackTop;
_InternalPanelDoNotUseOrYouWillBeFired: typeof PurePanel;
};
declare const FloatButton: CompoundedComponent;
export default FloatButton;

95
node_modules/antd/es/float-button/FloatButton.js generated vendored Normal file
View File

@@ -0,0 +1,95 @@
"use client";
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import React, { useContext } from 'react';
import classNames from 'classnames';
import omit from "rc-util/es/omit";
import convertToTooltipProps from '../_util/convertToTooltipProps';
import { useZIndex } from '../_util/hooks';
import { devUseWarning } from '../_util/warning';
import Badge from '../badge';
import { ConfigContext } from '../config-provider';
import useCSSVarCls from '../config-provider/hooks/useCSSVarCls';
import Tooltip from '../tooltip';
import FloatButtonGroupContext from './context';
import Content from './FloatButtonContent';
import useStyle from './style';
export const floatButtonPrefixCls = 'float-btn';
const InternalFloatButton = /*#__PURE__*/React.forwardRef((props, ref) => {
const {
prefixCls: customizePrefixCls,
className,
rootClassName,
style,
type = 'default',
shape = 'circle',
icon,
description,
tooltip,
htmlType = 'button',
badge = {}
} = props,
restProps = __rest(props, ["prefixCls", "className", "rootClassName", "style", "type", "shape", "icon", "description", "tooltip", "htmlType", "badge"]);
const {
getPrefixCls,
direction
} = useContext(ConfigContext);
const groupShape = useContext(FloatButtonGroupContext);
const prefixCls = getPrefixCls(floatButtonPrefixCls, customizePrefixCls);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);
const mergedShape = groupShape || shape;
const classString = classNames(hashId, cssVarCls, rootCls, prefixCls, className, rootClassName, `${prefixCls}-${type}`, `${prefixCls}-${mergedShape}`, {
[`${prefixCls}-rtl`]: direction === 'rtl'
});
// ============================ zIndex ============================
const [zIndex] = useZIndex('FloatButton', style === null || style === void 0 ? void 0 : style.zIndex);
const mergedStyle = Object.assign(Object.assign({}, style), {
zIndex
});
// 虽然在 ts 中已经 omit 过了,但是为了防止多余的属性被透传进来,这里再 omit 一遍,以防万一
const badgeProps = omit(badge, ['title', 'children', 'status', 'text']);
let buttonNode = /*#__PURE__*/React.createElement("div", {
className: `${prefixCls}-body`
}, /*#__PURE__*/React.createElement(Content, {
prefixCls: prefixCls,
description: description,
icon: icon
}));
if ('badge' in props) {
buttonNode = /*#__PURE__*/React.createElement(Badge, Object.assign({}, badgeProps), buttonNode);
}
// ============================ Tooltip ============================
const tooltipProps = convertToTooltipProps(tooltip);
if (tooltipProps) {
buttonNode = /*#__PURE__*/React.createElement(Tooltip, Object.assign({}, tooltipProps), buttonNode);
}
if (process.env.NODE_ENV !== 'production') {
const warning = devUseWarning('FloatButton');
process.env.NODE_ENV !== "production" ? warning(!(mergedShape === 'circle' && description), 'usage', 'supported only when `shape` is `square`. Due to narrow space for text, short sentence is recommended.') : void 0;
}
return wrapCSSVar(props.href ? (/*#__PURE__*/React.createElement("a", Object.assign({
ref: ref
}, restProps, {
className: classString,
style: mergedStyle
}), buttonNode)) : (/*#__PURE__*/React.createElement("button", Object.assign({
ref: ref
}, restProps, {
className: classString,
style: mergedStyle,
type: htmlType
}), buttonNode)));
});
const FloatButton = InternalFloatButton;
if (process.env.NODE_ENV !== 'production') {
FloatButton.displayName = 'FloatButton';
}
export default FloatButton;

View File

@@ -0,0 +1,4 @@
import React from 'react';
import type { FloatButtonContentProps } from './interface';
declare const _default: React.NamedExoticComponent<FloatButtonContentProps>;
export default _default;

View File

@@ -0,0 +1,33 @@
"use client";
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import React, { memo } from 'react';
import FileTextOutlined from "@ant-design/icons/es/icons/FileTextOutlined";
import classNames from 'classnames';
const FloatButtonContent = props => {
const {
icon,
description,
prefixCls,
className
} = props,
rest = __rest(props, ["icon", "description", "prefixCls", "className"]);
const defaultElement = /*#__PURE__*/React.createElement("div", {
className: `${prefixCls}-icon`
}, /*#__PURE__*/React.createElement(FileTextOutlined, null));
return /*#__PURE__*/React.createElement("div", Object.assign({}, rest, {
className: classNames(className, `${prefixCls}-content`)
}), icon || description ? (/*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.createElement("div", {
className: `${prefixCls}-icon`
}, icon), description && /*#__PURE__*/React.createElement("div", {
className: `${prefixCls}-description`
}, description))) : defaultElement);
};
export default /*#__PURE__*/memo(FloatButtonContent);

View File

@@ -0,0 +1,4 @@
import React from 'react';
import type { FloatButtonGroupProps } from './interface';
declare const FloatButtonGroup: React.FC<Readonly<FloatButtonGroupProps>>;
export default FloatButtonGroup;

148
node_modules/antd/es/float-button/FloatButtonGroup.js generated vendored Normal file
View File

@@ -0,0 +1,148 @@
"use client";
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import React from 'react';
import CloseOutlined from "@ant-design/icons/es/icons/CloseOutlined";
import FileTextOutlined from "@ant-design/icons/es/icons/FileTextOutlined";
import classNames from 'classnames';
import CSSMotion from 'rc-motion';
import useEvent from "rc-util/es/hooks/useEvent";
import useMergedState from "rc-util/es/hooks/useMergedState";
import { useZIndex } from '../_util/hooks';
import { devUseWarning } from '../_util/warning';
import { useComponentConfig } from '../config-provider/context';
import useCSSVarCls from '../config-provider/hooks/useCSSVarCls';
import { FloatButtonGroupProvider } from './context';
import FloatButton, { floatButtonPrefixCls } from './FloatButton';
import useStyle from './style';
const FloatButtonGroup = props => {
var _a;
const {
prefixCls: customizePrefixCls,
className,
style,
shape = 'circle',
type = 'default',
placement = 'top',
icon = /*#__PURE__*/React.createElement(FileTextOutlined, null),
closeIcon,
description,
trigger,
children,
onOpenChange,
open: customOpen,
onClick: onTriggerButtonClick
} = props,
floatButtonProps = __rest(props, ["prefixCls", "className", "style", "shape", "type", "placement", "icon", "closeIcon", "description", "trigger", "children", "onOpenChange", "open", "onClick"]);
const {
direction,
getPrefixCls,
closeIcon: contextCloseIcon
} = useComponentConfig('floatButtonGroup');
const mergedCloseIcon = (_a = closeIcon !== null && closeIcon !== void 0 ? closeIcon : contextCloseIcon) !== null && _a !== void 0 ? _a : /*#__PURE__*/React.createElement(CloseOutlined, null);
const prefixCls = getPrefixCls(floatButtonPrefixCls, customizePrefixCls);
const rootCls = useCSSVarCls(prefixCls);
const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);
const groupPrefixCls = `${prefixCls}-group`;
const isMenuMode = trigger && ['click', 'hover'].includes(trigger);
const isValidPlacement = placement && ['top', 'left', 'right', 'bottom'].includes(placement);
const groupCls = classNames(groupPrefixCls, hashId, cssVarCls, rootCls, className, {
[`${groupPrefixCls}-rtl`]: direction === 'rtl',
[`${groupPrefixCls}-${shape}`]: shape,
[`${groupPrefixCls}-${shape}-shadow`]: !isMenuMode,
[`${groupPrefixCls}-${placement}`]: isMenuMode && isValidPlacement // 只有菜单模式才支持弹出方向
});
// ============================ zIndex ============================
const [zIndex] = useZIndex('FloatButton', style === null || style === void 0 ? void 0 : style.zIndex);
const mergedStyle = Object.assign(Object.assign({}, style), {
zIndex
});
const wrapperCls = classNames(hashId, `${groupPrefixCls}-wrap`);
const [open, setOpen] = useMergedState(false, {
value: customOpen
});
const floatButtonGroupRef = React.useRef(null);
// ========================== Open ==========================
const hoverTrigger = trigger === 'hover';
const clickTrigger = trigger === 'click';
const triggerOpen = useEvent(nextOpen => {
if (open !== nextOpen) {
setOpen(nextOpen);
onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
}
});
// ===================== Trigger: Hover =====================
const onMouseEnter = () => {
if (hoverTrigger) {
triggerOpen(true);
}
};
const onMouseLeave = () => {
if (hoverTrigger) {
triggerOpen(false);
}
};
// ===================== Trigger: Click =====================
const onInternalTriggerButtonClick = e => {
if (clickTrigger) {
triggerOpen(!open);
}
onTriggerButtonClick === null || onTriggerButtonClick === void 0 ? void 0 : onTriggerButtonClick(e);
};
React.useEffect(() => {
if (clickTrigger) {
const onDocClick = e => {
var _a;
// Skip if click on the group
if ((_a = floatButtonGroupRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) {
return;
}
triggerOpen(false);
};
document.addEventListener('click', onDocClick, {
capture: true
});
return () => document.removeEventListener('click', onDocClick, {
capture: true
});
}
}, [clickTrigger]);
// ======================== Warning =========================
if (process.env.NODE_ENV !== 'production') {
const warning = devUseWarning('FloatButton.Group');
process.env.NODE_ENV !== "production" ? warning(!('open' in props) || !!trigger, 'usage', '`open` need to be used together with `trigger`') : void 0;
}
// ========================= Render =========================
return wrapCSSVar(/*#__PURE__*/React.createElement(FloatButtonGroupProvider, {
value: shape
}, /*#__PURE__*/React.createElement("div", {
ref: floatButtonGroupRef,
className: groupCls,
style: mergedStyle,
// Hover trigger
onMouseEnter: onMouseEnter,
onMouseLeave: onMouseLeave
}, isMenuMode ? (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CSSMotion, {
visible: open,
motionName: `${groupPrefixCls}-wrap`
}, ({
className: motionClassName
}) => (/*#__PURE__*/React.createElement("div", {
className: classNames(motionClassName, wrapperCls)
}, children))), /*#__PURE__*/React.createElement(FloatButton, Object.assign({
type: type,
icon: open ? mergedCloseIcon : icon,
description: description,
"aria-label": props['aria-label'],
className: `${groupPrefixCls}-trigger`,
onClick: onInternalTriggerButtonClick
}, floatButtonProps)))) : children)));
};
export default FloatButtonGroup;

12
node_modules/antd/es/float-button/PurePanel.d.ts generated vendored Normal file
View File

@@ -0,0 +1,12 @@
import * as React from 'react';
import type { FloatButtonGroupProps, FloatButtonProps } from './interface';
export interface PureFloatButtonProps extends Omit<FloatButtonProps, 'target'> {
backTop?: boolean;
}
export interface PurePanelProps extends PureFloatButtonProps, Omit<FloatButtonGroupProps, 'children'> {
/** Convert to FloatGroup when configured */
items?: PureFloatButtonProps[];
}
/** @private Internal Component. Do not use in your production. */
declare const PurePanel: React.FC<PurePanelProps>;
export default PurePanel;

53
node_modules/antd/es/float-button/PurePanel.js generated vendored Normal file
View File

@@ -0,0 +1,53 @@
"use client";
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
/* eslint-disable react/no-array-index-key */
import * as React from 'react';
import classNames from 'classnames';
import { ConfigContext } from '../config-provider';
import BackTop from './BackTop';
import FloatButton, { floatButtonPrefixCls } from './FloatButton';
import FloatButtonGroup from './FloatButtonGroup';
const PureFloatButton = _a => {
var {
backTop
} = _a,
props = __rest(_a, ["backTop"]);
return backTop ? /*#__PURE__*/React.createElement(BackTop, Object.assign({}, props, {
visibilityHeight: 0
})) : /*#__PURE__*/React.createElement(FloatButton, Object.assign({}, props));
};
/** @private Internal Component. Do not use in your production. */
const PurePanel = _a => {
var {
className,
items
} = _a,
props = __rest(_a, ["className", "items"]);
const {
prefixCls: customizePrefixCls
} = props;
const {
getPrefixCls
} = React.useContext(ConfigContext);
const prefixCls = getPrefixCls(floatButtonPrefixCls, customizePrefixCls);
const pureCls = `${prefixCls}-pure`;
if (items) {
return /*#__PURE__*/React.createElement(FloatButtonGroup, Object.assign({
className: classNames(className, pureCls)
}, props), items.map((item, index) => (/*#__PURE__*/React.createElement(PureFloatButton, Object.assign({
key: index
}, item)))));
}
return /*#__PURE__*/React.createElement(PureFloatButton, Object.assign({
className: classNames(className, pureCls)
}, props));
};
export default PurePanel;

5
node_modules/antd/es/float-button/context.d.ts generated vendored Normal file
View File

@@ -0,0 +1,5 @@
import React from 'react';
import type { FloatButtonShape } from './interface';
declare const FloatButtonGroupContext: React.Context<FloatButtonShape | undefined>;
export declare const FloatButtonGroupProvider: React.Provider<FloatButtonShape | undefined>;
export default FloatButtonGroupContext;

6
node_modules/antd/es/float-button/context.js generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import React from 'react';
const FloatButtonGroupContext = /*#__PURE__*/React.createContext(undefined);
export const {
Provider: FloatButtonGroupProvider
} = FloatButtonGroupContext;
export default FloatButtonGroupContext;

2
node_modules/antd/es/float-button/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,2 @@
import FloatButton from './FloatButton';
export default FloatButton;

10
node_modules/antd/es/float-button/index.js generated vendored Normal file
View File

@@ -0,0 +1,10 @@
"use client";
import BackTop from './BackTop';
import FloatButton from './FloatButton';
import FloatButtonGroup from './FloatButtonGroup';
import PurePanel from './PurePanel';
FloatButton.BackTop = BackTop;
FloatButton.Group = FloatButtonGroup;
FloatButton._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;
export default FloatButton;

58
node_modules/antd/es/float-button/interface.d.ts generated vendored Normal file
View File

@@ -0,0 +1,58 @@
import type React from 'react';
import type { BadgeProps } from '../badge';
import type { ButtonHTMLType } from '../button';
import type { TooltipProps } from '../tooltip';
export type FloatButtonElement = HTMLAnchorElement & HTMLButtonElement;
export interface FloatButtonRef {
nativeElement: FloatButtonElement | null;
}
export type FloatButtonType = 'default' | 'primary';
export type FloatButtonShape = 'circle' | 'square';
export type FloatButtonGroupTrigger = 'click' | 'hover';
export type FloatButtonBadgeProps = Omit<BadgeProps, 'status' | 'text' | 'title' | 'children'>;
export interface FloatButtonProps extends React.DOMAttributes<FloatButtonElement> {
prefixCls?: string;
className?: string;
rootClassName?: string;
style?: React.CSSProperties;
icon?: React.ReactNode;
description?: React.ReactNode;
type?: FloatButtonType;
shape?: FloatButtonShape;
tooltip?: React.ReactNode | TooltipProps;
href?: string;
target?: React.HTMLAttributeAnchorTarget;
badge?: FloatButtonBadgeProps;
/**
* @since 5.21.0
* @default button
*/
htmlType?: ButtonHTMLType;
'aria-label'?: React.HtmlHTMLAttributes<HTMLElement>['aria-label'];
disabled?: boolean;
}
export interface FloatButtonContentProps extends React.DOMAttributes<HTMLDivElement> {
className?: string;
icon?: FloatButtonProps['icon'];
description?: FloatButtonProps['description'];
prefixCls: FloatButtonProps['prefixCls'];
}
export interface FloatButtonGroupProps extends FloatButtonProps {
children: React.ReactNode;
trigger?: FloatButtonGroupTrigger;
open?: boolean;
closeIcon?: React.ReactNode;
placement?: 'top' | 'left' | 'right' | 'bottom';
onOpenChange?: (open: boolean) => void;
}
export interface BackTopProps extends Omit<FloatButtonProps, 'target'> {
visibilityHeight?: number;
onClick?: React.MouseEventHandler<FloatButtonElement>;
target?: () => HTMLElement | Window | Document;
prefixCls?: string;
children?: React.ReactNode;
className?: string;
rootClassName?: string;
style?: React.CSSProperties;
duration?: number;
}

1
node_modules/antd/es/float-button/interface.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export {};

68
node_modules/antd/es/float-button/style/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,68 @@
import type { FullToken, GetDefaultToken } from '../../theme/internal';
/** Component only token. Which will handle additional calculation of alias token */
export interface ComponentToken {
}
/**
* @desc FloatButton 组件的 Token
* @descEN Token for FloatButton component
*/
export type FloatButtonToken = FullToken<'FloatButton'> & {
/**
* @desc FloatButton 颜色
* @descEN Color of FloatButton
*/
floatButtonColor: string;
/**
* @desc FloatButton 背景颜色
* @descEN Background color of FloatButton
*/
floatButtonBackgroundColor: string;
/**
* @desc FloatButton 悬停背景颜色
* @descEN Hover background color of FloatButton
*/
floatButtonHoverBackgroundColor: string;
/**
* @desc FloatButton 字体大小
* @descEN Font size of FloatButton
*/
floatButtonFontSize: number;
/**
* @desc FloatButton 尺寸
* @descEN Size of FloatButton
*/
floatButtonSize: number;
/**
* @desc FloatButton 图标尺寸
* @descEN Icon size of FloatButton
*/
floatButtonIconSize: number | string;
/**
* @desc FloatButton 主体尺寸
* @descEN Body size of FloatButton
*/
floatButtonBodySize: number | string;
/**
* @desc FloatButton 主体内间距
* @descEN Body padding of FloatButton
*/
floatButtonBodyPadding: number;
/**
* @desc 徽标偏移量
* @descEN Offset of badge
*/
badgeOffset: number | string;
/**
* @desc FloatButton 底部内边距
* @descEN Bottom inset of FloatButton
*/
floatButtonInsetBlockEnd: number;
/**
* @desc FloatButton 右侧内边距
* @descEN Right inset of FloatButton
*/
floatButtonInsetInlineEnd: number;
};
export declare const prepareComponentToken: GetDefaultToken<'FloatButton'>;
declare const _default: (prefixCls: string, rootCls?: string) => readonly [(node: React.ReactElement) => React.ReactElement, string, string];
export default _default;

397
node_modules/antd/es/float-button/style/index.js generated vendored Normal file
View File

@@ -0,0 +1,397 @@
import { unit } from '@ant-design/cssinjs';
import { resetComponent } from '../../style';
import { initFadeMotion } from '../../style/motion/fade';
import { genStyleHooks, mergeToken } from '../../theme/internal';
import getOffset from '../util';
import floatButtonGroupMotion from './keyframes';
// ============================== Group ==============================
const floatButtonGroupStyle = token => {
const {
antCls,
componentCls,
floatButtonSize,
margin,
borderRadiusLG,
borderRadiusSM,
badgeOffset,
floatButtonBodyPadding,
zIndexPopupBase,
calc
} = token;
const groupPrefixCls = `${componentCls}-group`;
return {
[groupPrefixCls]: Object.assign(Object.assign({}, resetComponent(token)), {
zIndex: zIndexPopupBase,
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
border: 'none',
position: 'fixed',
height: 'auto',
boxShadow: 'none',
minWidth: floatButtonSize,
minHeight: floatButtonSize,
insetInlineEnd: token.floatButtonInsetInlineEnd,
bottom: token.floatButtonInsetBlockEnd,
borderRadius: borderRadiusLG,
[`${groupPrefixCls}-wrap`]: {
zIndex: -1,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
position: 'absolute'
},
[`&${groupPrefixCls}-rtl`]: {
direction: 'rtl'
},
[componentCls]: {
position: 'static'
}
}),
[`${groupPrefixCls}-top > ${groupPrefixCls}-wrap`]: {
flexDirection: 'column',
top: 'auto',
bottom: calc(floatButtonSize).add(margin).equal(),
'&::after': {
content: '""',
position: 'absolute',
width: '100%',
height: margin,
bottom: calc(margin).mul(-1).equal()
}
},
[`${groupPrefixCls}-bottom > ${groupPrefixCls}-wrap`]: {
flexDirection: 'column',
top: calc(floatButtonSize).add(margin).equal(),
bottom: 'auto',
'&::after': {
content: '""',
position: 'absolute',
width: '100%',
height: margin,
top: calc(margin).mul(-1).equal()
}
},
[`${groupPrefixCls}-right > ${groupPrefixCls}-wrap`]: {
flexDirection: 'row',
left: {
_skip_check_: true,
value: calc(floatButtonSize).add(margin).equal()
},
right: {
_skip_check_: true,
value: 'auto'
},
'&::after': {
content: '""',
position: 'absolute',
width: margin,
height: '100%',
left: {
_skip_check_: true,
value: calc(margin).mul(-1).equal()
}
}
},
[`${groupPrefixCls}-left > ${groupPrefixCls}-wrap`]: {
flexDirection: 'row',
left: {
_skip_check_: true,
value: 'auto'
},
right: {
_skip_check_: true,
value: calc(floatButtonSize).add(margin).equal()
},
'&::after': {
content: '""',
position: 'absolute',
width: margin,
height: '100%',
right: {
_skip_check_: true,
value: calc(margin).mul(-1).equal()
}
}
},
[`${groupPrefixCls}-circle`]: {
gap: margin,
[`${groupPrefixCls}-wrap`]: {
gap: margin
}
},
[`${groupPrefixCls}-square`]: {
[`${componentCls}-square`]: {
padding: 0,
borderRadius: 0,
[`&${groupPrefixCls}-trigger`]: {
borderRadius: borderRadiusLG
},
'&:first-child': {
borderStartStartRadius: borderRadiusLG,
borderStartEndRadius: borderRadiusLG
},
'&:last-child': {
borderEndStartRadius: borderRadiusLG,
borderEndEndRadius: borderRadiusLG
},
'&:not(:last-child)': {
borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`
},
[`${antCls}-badge`]: {
[`${antCls}-badge-count`]: {
top: calc(calc(floatButtonBodyPadding).add(badgeOffset)).mul(-1).equal(),
insetInlineEnd: calc(calc(floatButtonBodyPadding).add(badgeOffset)).mul(-1).equal()
}
}
},
[`${groupPrefixCls}-wrap`]: {
borderRadius: borderRadiusLG,
boxShadow: token.boxShadowSecondary,
[`${componentCls}-square`]: {
boxShadow: 'none',
borderRadius: 0,
padding: floatButtonBodyPadding,
[`${componentCls}-body`]: {
width: token.floatButtonBodySize,
height: token.floatButtonBodySize,
borderRadius: borderRadiusSM
}
}
}
},
[`${groupPrefixCls}-top > ${groupPrefixCls}-wrap, ${groupPrefixCls}-bottom > ${groupPrefixCls}-wrap`]: {
[`> ${componentCls}-square`]: {
'&:first-child': {
borderStartStartRadius: borderRadiusLG,
borderStartEndRadius: borderRadiusLG
},
'&:last-child': {
borderEndStartRadius: borderRadiusLG,
borderEndEndRadius: borderRadiusLG
},
'&:not(:last-child)': {
borderBottom: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`
}
}
},
[`${groupPrefixCls}-left > ${groupPrefixCls}-wrap, ${groupPrefixCls}-right > ${groupPrefixCls}-wrap`]: {
[`> ${componentCls}-square`]: {
'&:first-child': {
borderStartStartRadius: borderRadiusLG,
borderEndStartRadius: borderRadiusLG
},
'&:last-child': {
borderStartEndRadius: borderRadiusLG,
borderEndEndRadius: borderRadiusLG
},
'&:not(:last-child)': {
borderBottom: 'none',
borderInlineEnd: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`
}
}
},
[`${groupPrefixCls}-circle-shadow`]: {
boxShadow: 'none'
},
[`${groupPrefixCls}-square-shadow`]: {
boxShadow: token.boxShadowSecondary,
[`${componentCls}-square`]: {
boxShadow: 'none',
padding: floatButtonBodyPadding,
[`${componentCls}-body`]: {
width: token.floatButtonBodySize,
height: token.floatButtonBodySize,
borderRadius: borderRadiusSM
}
}
}
};
};
// ============================== Shared ==============================
const sharedFloatButtonStyle = token => {
const {
antCls,
componentCls,
floatButtonBodyPadding,
floatButtonIconSize,
floatButtonSize,
borderRadiusLG,
badgeOffset,
dotOffsetInSquare,
dotOffsetInCircle,
zIndexPopupBase,
calc
} = token;
return {
[componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {
border: 'none',
position: 'fixed',
cursor: 'pointer',
zIndex: zIndexPopupBase,
// Do not remove the 'display: block' here.
// Deleting it will cause marginBottom to become ineffective.
// Ref: https://github.com/ant-design/ant-design/issues/44700
display: 'block',
width: floatButtonSize,
height: floatButtonSize,
insetInlineEnd: token.floatButtonInsetInlineEnd,
bottom: token.floatButtonInsetBlockEnd,
boxShadow: token.boxShadowSecondary,
// Pure Panel
'&-pure': {
position: 'relative',
inset: 'auto'
},
'&:empty': {
display: 'none'
},
[`${antCls}-badge`]: {
width: '100%',
height: '100%',
[`${antCls}-badge-count`]: {
transform: 'translate(0, 0)',
transformOrigin: 'center',
top: calc(badgeOffset).mul(-1).equal(),
insetInlineEnd: calc(badgeOffset).mul(-1).equal()
}
},
[`${componentCls}-body`]: {
width: '100%',
height: '100%',
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
transition: `all ${token.motionDurationMid}`,
[`${componentCls}-content`]: {
overflow: 'hidden',
textAlign: 'center',
minHeight: floatButtonSize,
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
padding: `${unit(calc(floatButtonBodyPadding).div(2).equal())} ${unit(floatButtonBodyPadding)}`,
[`${componentCls}-icon`]: {
textAlign: 'center',
margin: 'auto',
width: floatButtonIconSize,
fontSize: floatButtonIconSize,
lineHeight: 1
}
}
}
}),
[`${componentCls}-rtl`]: {
direction: 'rtl'
},
[`${componentCls}-circle`]: {
height: floatButtonSize,
borderRadius: '50%',
[`${antCls}-badge`]: {
[`${antCls}-badge-dot`]: {
top: dotOffsetInCircle,
insetInlineEnd: dotOffsetInCircle
}
},
[`${componentCls}-body`]: {
borderRadius: '50%'
}
},
[`${componentCls}-square`]: {
height: 'auto',
minHeight: floatButtonSize,
borderRadius: borderRadiusLG,
[`${antCls}-badge`]: {
[`${antCls}-badge-dot`]: {
top: dotOffsetInSquare,
insetInlineEnd: dotOffsetInSquare
}
},
[`${componentCls}-body`]: {
height: 'auto',
borderRadius: borderRadiusLG
}
},
[`${componentCls}-default`]: {
backgroundColor: token.floatButtonBackgroundColor,
transition: `background-color ${token.motionDurationMid}`,
[`${componentCls}-body`]: {
backgroundColor: token.floatButtonBackgroundColor,
transition: `background-color ${token.motionDurationMid}`,
'&:hover': {
backgroundColor: token.colorFillContent
},
[`${componentCls}-content`]: {
[`${componentCls}-icon`]: {
color: token.colorText
},
[`${componentCls}-description`]: {
display: 'flex',
alignItems: 'center',
lineHeight: unit(token.fontSizeLG),
color: token.colorText,
fontSize: token.fontSizeSM
}
}
}
},
[`${componentCls}-primary`]: {
backgroundColor: token.colorPrimary,
[`${componentCls}-body`]: {
backgroundColor: token.colorPrimary,
transition: `background-color ${token.motionDurationMid}`,
'&:hover': {
backgroundColor: token.colorPrimaryHover
},
[`${componentCls}-content`]: {
[`${componentCls}-icon`]: {
color: token.colorTextLightSolid
},
[`${componentCls}-description`]: {
display: 'flex',
alignItems: 'center',
lineHeight: unit(token.fontSizeLG),
color: token.colorTextLightSolid,
fontSize: token.fontSizeSM
}
}
}
}
};
};
// ============================== Export ==============================
export const prepareComponentToken = token => ({
dotOffsetInCircle: getOffset(token.controlHeightLG / 2),
dotOffsetInSquare: getOffset(token.borderRadiusLG)
});
export default genStyleHooks('FloatButton', token => {
const {
colorTextLightSolid,
colorBgElevated,
controlHeightLG,
marginXXL,
marginLG,
fontSize,
fontSizeIcon,
controlItemBgHover,
paddingXXS,
calc
} = token;
const floatButtonToken = mergeToken(token, {
floatButtonBackgroundColor: colorBgElevated,
floatButtonColor: colorTextLightSolid,
floatButtonHoverBackgroundColor: controlItemBgHover,
floatButtonFontSize: fontSize,
floatButtonIconSize: calc(fontSizeIcon).mul(1.5).equal(),
floatButtonSize: controlHeightLG,
floatButtonInsetBlockEnd: marginXXL,
floatButtonInsetInlineEnd: marginLG,
floatButtonBodySize: calc(controlHeightLG).sub(calc(paddingXXS).mul(2)).equal(),
// 这里的 paddingXXS 是简写,完整逻辑是 (controlHeightLG - (controlHeightLG - paddingXXS * 2)) / 2,
floatButtonBodyPadding: paddingXXS,
badgeOffset: calc(paddingXXS).mul(1.5).equal()
});
return [floatButtonGroupStyle(floatButtonToken), sharedFloatButtonStyle(floatButtonToken), initFadeMotion(token), floatButtonGroupMotion(floatButtonToken)];
}, prepareComponentToken);

View File

@@ -0,0 +1,7 @@
import type { FloatButtonToken } from '.';
declare const floatButtonGroupMotion: (token: FloatButtonToken) => {
[x: string]: {
[x: string]: import("@ant-design/cssinjs").CSSObject;
};
}[];
export default floatButtonGroupMotion;

128
node_modules/antd/es/float-button/style/keyframes.js generated vendored Normal file
View File

@@ -0,0 +1,128 @@
import { Keyframes, unit } from '@ant-design/cssinjs';
import { initMotion } from '../../style/motion/motion';
const floatButtonGroupMotion = token => {
const {
componentCls,
floatButtonSize,
motionDurationSlow,
motionEaseInOutCirc,
calc
} = token;
const moveTopIn = new Keyframes('antFloatButtonMoveTopIn', {
'0%': {
transform: `translate3d(0, ${unit(floatButtonSize)}, 0)`,
transformOrigin: '0 0',
opacity: 0
},
'100%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
}
});
const moveTopOut = new Keyframes('antFloatButtonMoveTopOut', {
'0%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
},
'100%': {
transform: `translate3d(0, ${unit(floatButtonSize)}, 0)`,
transformOrigin: '0 0',
opacity: 0
}
});
const moveRightIn = new Keyframes('antFloatButtonMoveRightIn', {
'0%': {
transform: `translate3d(${unit(calc(floatButtonSize).mul(-1).equal())}, 0, 0)`,
transformOrigin: '0 0',
opacity: 0
},
'100%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
}
});
const moveRightOut = new Keyframes('antFloatButtonMoveRightOut', {
'0%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
},
'100%': {
transform: `translate3d(${unit(calc(floatButtonSize).mul(-1).equal())}, 0, 0)`,
transformOrigin: '0 0',
opacity: 0
}
});
const moveBottomIn = new Keyframes('antFloatButtonMoveBottomIn', {
'0%': {
transform: `translate3d(0, ${unit(calc(floatButtonSize).mul(-1).equal())}, 0)`,
transformOrigin: '0 0',
opacity: 0
},
'100%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
}
});
const moveBottomOut = new Keyframes('antFloatButtonMoveBottomOut', {
'0%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
},
'100%': {
transform: `translate3d(0, ${unit(calc(floatButtonSize).mul(-1).equal())}, 0)`,
transformOrigin: '0 0',
opacity: 0
}
});
const moveLeftIn = new Keyframes('antFloatButtonMoveLeftIn', {
'0%': {
transform: `translate3d(${unit(floatButtonSize)}, 0, 0)`,
transformOrigin: '0 0',
opacity: 0
},
'100%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
}
});
const moveLeftOut = new Keyframes('antFloatButtonMoveLeftOut', {
'0%': {
transform: 'translate3d(0, 0, 0)',
transformOrigin: '0 0',
opacity: 1
},
'100%': {
transform: `translate3d(${unit(floatButtonSize)}, 0, 0)`,
transformOrigin: '0 0',
opacity: 0
}
});
const groupPrefixCls = `${componentCls}-group`;
return [{
[groupPrefixCls]: {
[`&${groupPrefixCls}-top ${groupPrefixCls}-wrap`]: initMotion(`${groupPrefixCls}-wrap`, moveTopIn, moveTopOut, motionDurationSlow, true),
[`&${groupPrefixCls}-bottom ${groupPrefixCls}-wrap`]: initMotion(`${groupPrefixCls}-wrap`, moveBottomIn, moveBottomOut, motionDurationSlow, true),
[`&${groupPrefixCls}-left ${groupPrefixCls}-wrap`]: initMotion(`${groupPrefixCls}-wrap`, moveLeftIn, moveLeftOut, motionDurationSlow, true),
[`&${groupPrefixCls}-right ${groupPrefixCls}-wrap`]: initMotion(`${groupPrefixCls}-wrap`, moveRightIn, moveRightOut, motionDurationSlow, true)
}
}, {
[`${groupPrefixCls}-wrap`]: {
[`&${groupPrefixCls}-wrap-enter, &${groupPrefixCls}-wrap-appear`]: {
opacity: 0,
animationTimingFunction: motionEaseInOutCirc
},
[`&${groupPrefixCls}-wrap-leave`]: {
opacity: 1,
animationTimingFunction: motionEaseInOutCirc
}
}
}];
};
export default floatButtonGroupMotion;

2
node_modules/antd/es/float-button/util.d.ts generated vendored Normal file
View File

@@ -0,0 +1,2 @@
declare const getOffset: (radius: number) => number;
export default getOffset;

9
node_modules/antd/es/float-button/util.js generated vendored Normal file
View File

@@ -0,0 +1,9 @@
const getOffset = radius => {
if (radius === 0) {
return 0;
}
// 如果要考虑通用性,这里应该用三角函数 Math.sin(45)
// 但是这个场景比较特殊,始终是等腰直角三角形,所以直接用 Math.sqrt() 开方即可
return radius - Math.sqrt(Math.pow(radius, 2) / 2);
};
export default getOffset;