Skeleton.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var React = _interopRequireWildcard(require("react"));
  10. var _classnames = _interopRequireDefault(require("classnames"));
  11. var _context = require("../config-provider/context");
  12. var _Avatar = _interopRequireDefault(require("./Avatar"));
  13. var _Button = _interopRequireDefault(require("./Button"));
  14. var _Element = _interopRequireDefault(require("./Element"));
  15. var _Image = _interopRequireDefault(require("./Image"));
  16. var _Input = _interopRequireDefault(require("./Input"));
  17. var _Node = _interopRequireDefault(require("./Node"));
  18. var _Paragraph = _interopRequireDefault(require("./Paragraph"));
  19. var _style = _interopRequireDefault(require("./style"));
  20. var _Title = _interopRequireDefault(require("./Title"));
  21. function getComponentProps(prop) {
  22. if (prop && typeof prop === 'object') {
  23. return prop;
  24. }
  25. return {};
  26. }
  27. function getAvatarBasicProps(hasTitle, hasParagraph) {
  28. if (hasTitle && !hasParagraph) {
  29. // Square avatar
  30. return {
  31. size: 'large',
  32. shape: 'square'
  33. };
  34. }
  35. return {
  36. size: 'large',
  37. shape: 'circle'
  38. };
  39. }
  40. function getTitleBasicProps(hasAvatar, hasParagraph) {
  41. if (!hasAvatar && hasParagraph) {
  42. return {
  43. width: '38%'
  44. };
  45. }
  46. if (hasAvatar && hasParagraph) {
  47. return {
  48. width: '50%'
  49. };
  50. }
  51. return {};
  52. }
  53. function getParagraphBasicProps(hasAvatar, hasTitle) {
  54. const basicProps = {};
  55. // Width
  56. if (!hasAvatar || !hasTitle) {
  57. basicProps.width = '61%';
  58. }
  59. // Rows
  60. if (!hasAvatar && hasTitle) {
  61. basicProps.rows = 3;
  62. } else {
  63. basicProps.rows = 2;
  64. }
  65. return basicProps;
  66. }
  67. const Skeleton = props => {
  68. const {
  69. prefixCls: customizePrefixCls,
  70. loading,
  71. className,
  72. rootClassName,
  73. style,
  74. children,
  75. avatar = false,
  76. title = true,
  77. paragraph = true,
  78. active,
  79. round
  80. } = props;
  81. const {
  82. getPrefixCls,
  83. direction,
  84. className: contextClassName,
  85. style: contextStyle
  86. } = (0, _context.useComponentConfig)('skeleton');
  87. const prefixCls = getPrefixCls('skeleton', customizePrefixCls);
  88. const [wrapCSSVar, hashId, cssVarCls] = (0, _style.default)(prefixCls);
  89. if (loading || !('loading' in props)) {
  90. const hasAvatar = !!avatar;
  91. const hasTitle = !!title;
  92. const hasParagraph = !!paragraph;
  93. // Avatar
  94. let avatarNode;
  95. if (hasAvatar) {
  96. const avatarProps = Object.assign(Object.assign({
  97. prefixCls: `${prefixCls}-avatar`
  98. }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));
  99. // We direct use SkeletonElement as avatar in skeleton internal.
  100. avatarNode = /*#__PURE__*/React.createElement("div", {
  101. className: `${prefixCls}-header`
  102. }, /*#__PURE__*/React.createElement(_Element.default, Object.assign({}, avatarProps)));
  103. }
  104. let contentNode;
  105. if (hasTitle || hasParagraph) {
  106. // Title
  107. let $title;
  108. if (hasTitle) {
  109. const titleProps = Object.assign(Object.assign({
  110. prefixCls: `${prefixCls}-title`
  111. }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));
  112. $title = /*#__PURE__*/React.createElement(_Title.default, Object.assign({}, titleProps));
  113. }
  114. // Paragraph
  115. let paragraphNode;
  116. if (hasParagraph) {
  117. const paragraphProps = Object.assign(Object.assign({
  118. prefixCls: `${prefixCls}-paragraph`
  119. }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));
  120. paragraphNode = /*#__PURE__*/React.createElement(_Paragraph.default, Object.assign({}, paragraphProps));
  121. }
  122. contentNode = /*#__PURE__*/React.createElement("div", {
  123. className: `${prefixCls}-content`
  124. }, $title, paragraphNode);
  125. }
  126. const cls = (0, _classnames.default)(prefixCls, {
  127. [`${prefixCls}-with-avatar`]: hasAvatar,
  128. [`${prefixCls}-active`]: active,
  129. [`${prefixCls}-rtl`]: direction === 'rtl',
  130. [`${prefixCls}-round`]: round
  131. }, contextClassName, className, rootClassName, hashId, cssVarCls);
  132. return wrapCSSVar(/*#__PURE__*/React.createElement("div", {
  133. className: cls,
  134. style: Object.assign(Object.assign({}, contextStyle), style)
  135. }, avatarNode, contentNode));
  136. }
  137. return children !== null && children !== void 0 ? children : null;
  138. };
  139. Skeleton.Button = _Button.default;
  140. Skeleton.Avatar = _Avatar.default;
  141. Skeleton.Input = _Input.default;
  142. Skeleton.Image = _Image.default;
  143. Skeleton.Node = _Node.default;
  144. if (process.env.NODE_ENV !== 'production') {
  145. Skeleton.displayName = 'Skeleton';
  146. }
  147. var _default = exports.default = Skeleton;