Skeleton.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. // If the importer is in node compatibility mode or this is not an ESM
  21. // file that has been converted to a CommonJS file using a Babel-
  22. // compatible transform (i.e. "__esModule" has not been set), then set
  23. // "default" to the CommonJS "module.exports" for node compatibility.
  24. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  25. mod
  26. ));
  27. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  28. var stdin_exports = {};
  29. __export(stdin_exports, {
  30. default: () => stdin_default,
  31. skeletonProps: () => skeletonProps
  32. });
  33. module.exports = __toCommonJS(stdin_exports);
  34. var import_vue = require("vue");
  35. var import_utils = require("../utils");
  36. var import_skeleton_title = __toESM(require("../skeleton-title"));
  37. var import_skeleton_avatar = __toESM(require("../skeleton-avatar"));
  38. var import_skeleton_paragraph = __toESM(require("../skeleton-paragraph"));
  39. const [name, bem] = (0, import_utils.createNamespace)("skeleton");
  40. const DEFAULT_LAST_ROW_WIDTH = "60%";
  41. const skeletonProps = {
  42. row: (0, import_utils.makeNumericProp)(0),
  43. round: Boolean,
  44. title: Boolean,
  45. titleWidth: import_utils.numericProp,
  46. avatar: Boolean,
  47. avatarSize: import_utils.numericProp,
  48. avatarShape: (0, import_utils.makeStringProp)("round"),
  49. loading: import_utils.truthProp,
  50. animate: import_utils.truthProp,
  51. rowWidth: {
  52. type: [Number, String, Array],
  53. default: import_skeleton_paragraph.DEFAULT_ROW_WIDTH
  54. }
  55. };
  56. var stdin_default = (0, import_vue.defineComponent)({
  57. name,
  58. inheritAttrs: false,
  59. props: skeletonProps,
  60. setup(props, {
  61. slots,
  62. attrs
  63. }) {
  64. const renderAvatar = () => {
  65. if (props.avatar) {
  66. return (0, import_vue.createVNode)(import_skeleton_avatar.default, {
  67. "avatarShape": props.avatarShape,
  68. "avatarSize": props.avatarSize
  69. }, null);
  70. }
  71. };
  72. const renderTitle = () => {
  73. if (props.title) {
  74. return (0, import_vue.createVNode)(import_skeleton_title.default, {
  75. "round": props.round,
  76. "titleWidth": props.titleWidth
  77. }, null);
  78. }
  79. };
  80. const getRowWidth = (index) => {
  81. const {
  82. rowWidth
  83. } = props;
  84. if (rowWidth === import_skeleton_paragraph.DEFAULT_ROW_WIDTH && index === +props.row - 1) {
  85. return DEFAULT_LAST_ROW_WIDTH;
  86. }
  87. if (Array.isArray(rowWidth)) {
  88. return rowWidth[index];
  89. }
  90. return rowWidth;
  91. };
  92. const renderRows = () => Array(+props.row).fill("").map((_, i) => (0, import_vue.createVNode)(import_skeleton_paragraph.default, {
  93. "key": i,
  94. "round": props.round,
  95. "rowWidth": (0, import_utils.addUnit)(getRowWidth(i))
  96. }, null));
  97. const renderContents = () => {
  98. if (slots.template) {
  99. return slots.template();
  100. }
  101. return (0, import_vue.createVNode)(import_vue.Fragment, null, [renderAvatar(), (0, import_vue.createVNode)("div", {
  102. "class": bem("content")
  103. }, [renderTitle(), renderRows()])]);
  104. };
  105. return () => {
  106. var _a;
  107. if (!props.loading) {
  108. return (_a = slots.default) == null ? void 0 : _a.call(slots);
  109. }
  110. return (0, import_vue.createVNode)("div", (0, import_vue.mergeProps)({
  111. "class": bem({
  112. animate: props.animate,
  113. round: props.round
  114. })
  115. }, attrs), [renderContents()]);
  116. };
  117. }
  118. });