Skeleton.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. var __create = Object.create;
  2. var __defProp = Object.defineProperty;
  3. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4. var __getOwnPropNames = Object.getOwnPropertyNames;
  5. var __getProtoOf = Object.getPrototypeOf;
  6. var __hasOwnProp = Object.prototype.hasOwnProperty;
  7. var __export = (target, all) => {
  8. for (var name2 in all)
  9. __defProp(target, name2, { get: all[name2], enumerable: true });
  10. };
  11. var __copyProps = (to, from, except, desc) => {
  12. if (from && typeof from === "object" || typeof from === "function") {
  13. for (let key of __getOwnPropNames(from))
  14. if (!__hasOwnProp.call(to, key) && key !== except)
  15. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  16. }
  17. return to;
  18. };
  19. var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  20. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  21. mod
  22. ));
  23. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  24. var stdin_exports = {};
  25. __export(stdin_exports, {
  26. default: () => stdin_default,
  27. skeletonProps: () => skeletonProps
  28. });
  29. module.exports = __toCommonJS(stdin_exports);
  30. var import_vue = require("vue");
  31. var import_vue2 = require("vue");
  32. var import_utils = require("../utils");
  33. var import_SkeletonTitle = __toESM(require("./SkeletonTitle"));
  34. var import_SkeletonAvatar = __toESM(require("./SkeletonAvatar"));
  35. var import_SkeletonParagraph = __toESM(require("./SkeletonParagraph"));
  36. const [name, bem] = (0, import_utils.createNamespace)("skeleton");
  37. const DEFAULT_LAST_ROW_WIDTH = "60%";
  38. const skeletonProps = {
  39. row: (0, import_utils.makeNumericProp)(0),
  40. round: Boolean,
  41. title: Boolean,
  42. titleWidth: import_utils.numericProp,
  43. avatar: Boolean,
  44. avatarSize: import_utils.numericProp,
  45. avatarShape: (0, import_utils.makeStringProp)("round"),
  46. loading: import_utils.truthProp,
  47. animate: import_utils.truthProp,
  48. rowWidth: {
  49. type: [Number, String, Array],
  50. default: import_SkeletonParagraph.DEFAULT_ROW_WIDTH
  51. }
  52. };
  53. var stdin_default = (0, import_vue2.defineComponent)({
  54. name,
  55. inheritAttrs: false,
  56. props: skeletonProps,
  57. setup(props, {
  58. slots,
  59. attrs
  60. }) {
  61. const renderAvatar = () => {
  62. if (props.avatar) {
  63. return (0, import_vue.createVNode)(import_SkeletonAvatar.default, {
  64. "avatarShape": props.avatarShape,
  65. "avatarSize": props.avatarSize
  66. }, null);
  67. }
  68. };
  69. const renderTitle = () => {
  70. if (props.title) {
  71. return (0, import_vue.createVNode)(import_SkeletonTitle.default, {
  72. "round": props.round,
  73. "titleWidth": props.titleWidth
  74. }, null);
  75. }
  76. };
  77. const getRowWidth = (index) => {
  78. const {
  79. rowWidth
  80. } = props;
  81. if (rowWidth === import_SkeletonParagraph.DEFAULT_ROW_WIDTH && index === +props.row - 1) {
  82. return DEFAULT_LAST_ROW_WIDTH;
  83. }
  84. if (Array.isArray(rowWidth)) {
  85. return rowWidth[index];
  86. }
  87. return rowWidth;
  88. };
  89. const renderRows = () => Array(+props.row).fill("").map((_, i) => (0, import_vue.createVNode)(import_SkeletonParagraph.default, {
  90. "key": i,
  91. "round": props.round,
  92. "rowWidth": (0, import_utils.addUnit)(getRowWidth(i))
  93. }, null));
  94. const renderContents = () => {
  95. if (slots.template) {
  96. return slots.template();
  97. }
  98. return (0, import_vue.createVNode)(import_vue.Fragment, null, [renderAvatar(), (0, import_vue.createVNode)("div", {
  99. "class": bem("content")
  100. }, [renderTitle(), renderRows()])]);
  101. };
  102. return () => {
  103. var _a;
  104. if (!props.loading) {
  105. return (_a = slots.default) == null ? void 0 : _a.call(slots);
  106. }
  107. return (0, import_vue.createVNode)("div", (0, import_vue.mergeProps)({
  108. "class": bem({
  109. animate: props.animate,
  110. round: props.round
  111. })
  112. }, attrs), [renderContents()]);
  113. };
  114. }
  115. });