Skeleton.js 3.2 KB

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