@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
129 lines (127 loc) • 6.17 kB
JavaScript
'use client';
var _excluded = ["as", "className", "children", "style", "type", "disabled", "strong", "italic", "underline", "delete", "fontSize", "mark", "code", "color", "weight", "ellipsis"];
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import { cva } from 'class-variance-authority';
import { memo, useMemo } from 'react';
import Tooltip from "../Tooltip";
import { useStyles } from "./styles";
import { jsx as _jsx } from "react/jsx-runtime";
var Text = /*#__PURE__*/memo(function (_ref) {
var _ref$as = _ref.as,
Container = _ref$as === void 0 ? 'div' : _ref$as,
className = _ref.className,
children = _ref.children,
style = _ref.style,
type = _ref.type,
disabled = _ref.disabled,
strong = _ref.strong,
italic = _ref.italic,
underline = _ref.underline,
deleteStyle = _ref.delete,
fontSize = _ref.fontSize,
mark = _ref.mark,
code = _ref.code,
color = _ref.color,
weight = _ref.weight,
ellipsis = _ref.ellipsis,
rest = _objectWithoutProperties(_ref, _excluded);
var _useStyles = useStyles(),
styles = _useStyles.styles,
cx = _useStyles.cx;
var variants = useMemo(function () {
return cva(styles.text, {
defaultVariants: {},
variants: {
as: {
h1: styles.h1,
h2: styles.h2,
h3: styles.h3,
h4: styles.h4,
h5: styles.h5,
p: styles.p
},
code: {
true: styles.code
},
delete: {
true: styles.delete
},
disabled: {
true: styles.disabled
},
ellipsis: {
multi: styles.ellipsisMulti,
true: styles.ellipsis
},
italic: {
true: styles.italic
},
mark: {
true: styles.mark
},
strong: {
true: styles.strong
},
type: {
danger: styles.danger,
info: styles.info,
secondary: styles.secondary,
success: styles.success,
warning: styles.warning
},
underline: {
true: styles.underline
}
}
});
}, [styles]);
var textStyle = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, color && {
color: color
}), weight && {
fontWeight: weight
}), _typeof(ellipsis) === 'object' && ellipsis.rows && {
WebkitLineClamp: ellipsis.rows
}), fontSize && {
fontSize: fontSize
}), style);
var content = /*#__PURE__*/_jsx(Container, _objectSpread(_objectSpread({
className: cx(variants({
as: ['h1', 'h2', 'h3', 'h4', 'h5', 'p'].includes(Container) ? Container : undefined,
code: code,
delete: deleteStyle,
disabled: disabled,
ellipsis: ellipsis ? _typeof(ellipsis) === 'object' && ellipsis.rows ? 'multi' : true : undefined,
italic: italic,
mark: mark,
strong: strong,
type: type,
underline: underline
}), className),
style: textStyle
}, rest), {}, {
children: children
}));
// 处理带有 tooltip 的省略
if (ellipsis && _typeof(ellipsis) === 'object' && ellipsis.tooltip) {
var _ellipsis$tooltip;
var title = typeof ellipsis.tooltip === 'string' ? ellipsis.tooltip : children;
if (_typeof(ellipsis.tooltip) === 'object') return /*#__PURE__*/_jsx(Tooltip, _objectSpread(_objectSpread({}, ellipsis.tooltip), {}, {
title: ((_ellipsis$tooltip = ellipsis.tooltip) === null || _ellipsis$tooltip === void 0 ? void 0 : _ellipsis$tooltip.title) || title,
children: content
}));
return /*#__PURE__*/_jsx(Tooltip, {
title: title,
children: content
});
}
return content;
});
Text.displayName = 'Text';
export default Text;