Files
video-gen/video-gen-admin/node_modules/@rc-component/table/lib/Cell/index.js
T
2026-05-25 17:08:18 +08:00

209 lines
7.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _context = require("@rc-component/context");
var _clsx = require("clsx");
var React = _interopRequireWildcard(require("react"));
var _TableContext = _interopRequireDefault(require("../context/TableContext"));
var _useRenderTimes = _interopRequireDefault(require("../hooks/useRenderTimes"));
var _useCellRender = _interopRequireDefault(require("./useCellRender"));
var _useHoverState = _interopRequireDefault(require("./useHoverState"));
var _util = require("@rc-component/util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
const getTitleFromCellRenderChildren = ({
ellipsis,
rowType,
children
}) => {
let title;
const ellipsisConfig = ellipsis === true ? {
showTitle: true
} : ellipsis;
if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {
if (typeof children === 'string' || typeof children === 'number') {
title = children.toString();
} else if ( /*#__PURE__*/React.isValidElement(children) && typeof children.props?.children === 'string') {
title = children.props?.children;
}
}
return title;
};
const Cell = props => {
if (process.env.NODE_ENV !== 'production') {
(0, _useRenderTimes.default)(props);
}
const {
component: Component,
children,
ellipsis,
scope,
// Style
prefixCls,
className,
style,
align,
// Value
record,
render,
dataIndex,
renderIndex,
shouldCellUpdate,
// Row
index,
rowType,
// Span
colSpan,
rowSpan,
// Fixed
fixStart,
fixEnd,
fixedStartShadow,
fixedEndShadow,
offsetFixedStartShadow,
offsetFixedEndShadow,
zIndex,
zIndexReverse,
// Private
appendNode,
additionalProps = {},
isSticky
} = props;
const cellPrefixCls = `${prefixCls}-cell`;
const {
allColumnsFixedLeft,
rowHoverable
} = (0, _context.useContext)(_TableContext.default, ['allColumnsFixedLeft', 'rowHoverable']);
// ====================== Value =======================
const [childNode, legacyCellProps] = (0, _useCellRender.default)(record, dataIndex, renderIndex, children, render, shouldCellUpdate);
// ====================== Fixed =======================
const fixedStyle = {};
const isFixStart = typeof fixStart === 'number' && !allColumnsFixedLeft;
const isFixEnd = typeof fixEnd === 'number' && !allColumnsFixedLeft;
const [showFixStartShadow, showFixEndShadow] = (0, _context.useContext)(_TableContext.default, ({
scrollInfo
}) => {
if (!isFixStart && !isFixEnd) {
return [false, false];
}
const [absScroll, scrollWidth] = scrollInfo;
const showStartShadow = (isFixStart && fixedStartShadow && absScroll) -
// For precision, we not show shadow by default which has better user experience.
offsetFixedStartShadow >= 1;
const showEndShadow = (isFixEnd && fixedEndShadow && scrollWidth - absScroll) -
// Same as above
offsetFixedEndShadow > 1;
return [showStartShadow, showEndShadow];
});
if (isFixStart) {
fixedStyle.insetInlineStart = fixStart;
fixedStyle['--z-offset'] = zIndex;
fixedStyle['--z-offset-reverse'] = zIndexReverse;
}
if (isFixEnd) {
fixedStyle.insetInlineEnd = fixEnd;
fixedStyle['--z-offset'] = zIndex;
fixedStyle['--z-offset-reverse'] = zIndexReverse;
}
// ================ RowSpan & ColSpan =================
const mergedColSpan = legacyCellProps?.colSpan ?? additionalProps.colSpan ?? colSpan ?? 1;
const mergedRowSpan = legacyCellProps?.rowSpan ?? additionalProps.rowSpan ?? rowSpan ?? 1;
// ====================== Hover =======================
const [hovering, onHover] = (0, _useHoverState.default)(index, mergedRowSpan);
const onMouseEnter = (0, _util.useEvent)(event => {
if (record) {
onHover(index, index + mergedRowSpan - 1);
}
additionalProps?.onMouseEnter?.(event);
});
const onMouseLeave = (0, _util.useEvent)(event => {
if (record) {
onHover(-1, -1);
}
additionalProps?.onMouseLeave?.(event);
});
// ====================== Render ======================
if (mergedColSpan === 0 || mergedRowSpan === 0) {
return null;
}
// >>>>> Title
const title = additionalProps.title ?? getTitleFromCellRenderChildren({
rowType,
ellipsis,
children: childNode
});
// >>>>> ClassName
const mergedClassName = (0, _clsx.clsx)(cellPrefixCls, className, {
// Fixed
[`${cellPrefixCls}-fix`]: isFixStart || isFixEnd,
[`${cellPrefixCls}-fix-start`]: isFixStart,
[`${cellPrefixCls}-fix-end`]: isFixEnd,
// Fixed shadow
[`${cellPrefixCls}-fix-start-shadow`]: fixedStartShadow,
[`${cellPrefixCls}-fix-start-shadow-show`]: fixedStartShadow && showFixStartShadow,
[`${cellPrefixCls}-fix-end-shadow`]: fixedEndShadow,
[`${cellPrefixCls}-fix-end-shadow-show`]: fixedEndShadow && showFixEndShadow,
[`${cellPrefixCls}-ellipsis`]: ellipsis,
[`${cellPrefixCls}-with-append`]: appendNode,
[`${cellPrefixCls}-fix-sticky`]: (isFixStart || isFixEnd) && isSticky,
[`${cellPrefixCls}-row-hover`]: !legacyCellProps && hovering
}, additionalProps.className, legacyCellProps?.className);
// >>>>> Style
const alignStyle = {};
if (align) {
alignStyle.textAlign = align;
}
// The order is important since user can overwrite style.
// For example ant-design/ant-design#51763
const mergedStyle = {
...legacyCellProps?.style,
...fixedStyle,
...alignStyle,
...additionalProps.style,
...style
};
// >>>>> Children Node
let mergedChildNode = childNode;
// Not crash if final `childNode` is not validate ReactNode
if (typeof mergedChildNode === 'object' && !Array.isArray(mergedChildNode) && ! /*#__PURE__*/React.isValidElement(mergedChildNode)) {
mergedChildNode = null;
}
if (ellipsis && (fixedStartShadow || fixedEndShadow)) {
mergedChildNode = /*#__PURE__*/React.createElement("span", {
className: `${cellPrefixCls}-content`
}, mergedChildNode);
}
return /*#__PURE__*/React.createElement(Component, _extends({}, legacyCellProps, additionalProps, {
className: mergedClassName,
style: mergedStyle
// A11y
,
title: title,
scope: scope
// Hover
,
onMouseEnter: rowHoverable ? onMouseEnter : undefined,
onMouseLeave: rowHoverable ? onMouseLeave : undefined
//Span
,
colSpan: mergedColSpan !== 1 ? mergedColSpan : null,
rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null
}), appendNode, mergedChildNode);
};
var _default = exports.default = /*#__PURE__*/React.memo(Cell);