| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";var _excluded = ["class", "style"];import { createVNode as _createVNode } from "vue";import { inject, cloneVNode, isVNode, defineComponent, nextTick } from 'vue';import debounce from 'lodash-es/debounce';import PropTypes from '../_util/vue-types';import { getComponent, getSlot } from '../_util/props-util';import initDefaultProps from '../_util/props-util/initDefaultProps';import { defaultConfigProvider } from '../config-provider';export var spinProps = function spinProps() {  return {    prefixCls: String,    spinning: {      type: Boolean,      default: undefined    },    size: String,    wrapperClassName: String,    tip: PropTypes.any,    delay: Number,    indicator: PropTypes.any  };};// Render indicatorvar defaultIndicator = null;function shouldDelay(spinning, delay) {  return !!spinning && !!delay && !isNaN(Number(delay));}export function setDefaultIndicator(Content) {  var Indicator = Content.indicator;  defaultIndicator = typeof Indicator === 'function' ? Indicator : function () {    return _createVNode(Indicator, null, null);  };}export default defineComponent({  compatConfig: {    MODE: 3  },  name: 'ASpin',  inheritAttrs: false,  props: initDefaultProps(spinProps(), {    size: 'default',    spinning: true,    wrapperClassName: ''  }),  setup: function setup() {    return {      originalUpdateSpinning: null,      configProvider: inject('configProvider', defaultConfigProvider)    };  },  data: function data() {    var spinning = this.spinning,      delay = this.delay;    var shouldBeDelayed = shouldDelay(spinning, delay);    return {      sSpinning: spinning && !shouldBeDelayed    };  },  created: function created() {    this.originalUpdateSpinning = this.updateSpinning;    this.debouncifyUpdateSpinning(this.$props);  },  mounted: function mounted() {    this.updateSpinning();  },  updated: function updated() {    var _this = this;    nextTick(function () {      _this.debouncifyUpdateSpinning();      _this.updateSpinning();    });  },  beforeUnmount: function beforeUnmount() {    this.cancelExistingSpin();  },  methods: {    debouncifyUpdateSpinning: function debouncifyUpdateSpinning(props) {      var _ref = props || this.$props,        delay = _ref.delay;      if (delay) {        this.cancelExistingSpin();        this.updateSpinning = debounce(this.originalUpdateSpinning, delay);      }    },    updateSpinning: function updateSpinning() {      var spinning = this.spinning,        sSpinning = this.sSpinning;      if (sSpinning !== spinning) {        this.sSpinning = spinning;      }    },    cancelExistingSpin: function cancelExistingSpin() {      var updateSpinning = this.updateSpinning;      if (updateSpinning && updateSpinning.cancel) {        updateSpinning.cancel();      }    },    renderIndicator: function renderIndicator(prefixCls) {      var dotClassName = "".concat(prefixCls, "-dot");      var indicator = getComponent(this, 'indicator');      // should not be render default indicator when indicator value is null      if (indicator === null) {        return null;      }      if (Array.isArray(indicator)) {        indicator = indicator.length === 1 ? indicator[0] : indicator;      }      if (isVNode(indicator)) {        return cloneVNode(indicator, {          class: dotClassName        });      }      if (defaultIndicator && isVNode(defaultIndicator())) {        return cloneVNode(defaultIndicator(), {          class: dotClassName        });      }      return _createVNode("span", {        "class": "".concat(dotClassName, " ").concat(prefixCls, "-dot-spin")      }, [_createVNode("i", {        "class": "".concat(prefixCls, "-dot-item")      }, null), _createVNode("i", {        "class": "".concat(prefixCls, "-dot-item")      }, null), _createVNode("i", {        "class": "".concat(prefixCls, "-dot-item")      }, null), _createVNode("i", {        "class": "".concat(prefixCls, "-dot-item")      }, null)]);    }  },  render: function render() {    var _this$$slots$tip, _this$$slots, _spinClassName;    var _this$$props = this.$props,      size = _this$$props.size,      customizePrefixCls = _this$$props.prefixCls,      _this$$props$tip = _this$$props.tip,      tip = _this$$props$tip === void 0 ? (_this$$slots$tip = (_this$$slots = this.$slots).tip) === null || _this$$slots$tip === void 0 ? void 0 : _this$$slots$tip.call(_this$$slots) : _this$$props$tip,      wrapperClassName = _this$$props.wrapperClassName;    var _this$$attrs = this.$attrs,      cls = _this$$attrs.class,      style = _this$$attrs.style,      divProps = _objectWithoutProperties(_this$$attrs, _excluded);    var _this$configProvider = this.configProvider,      getPrefixCls = _this$configProvider.getPrefixCls,      direction = _this$configProvider.direction;    var prefixCls = getPrefixCls('spin', customizePrefixCls);    var sSpinning = this.sSpinning;    var spinClassName = (_spinClassName = {}, _defineProperty(_spinClassName, prefixCls, true), _defineProperty(_spinClassName, "".concat(prefixCls, "-sm"), size === 'small'), _defineProperty(_spinClassName, "".concat(prefixCls, "-lg"), size === 'large'), _defineProperty(_spinClassName, "".concat(prefixCls, "-spinning"), sSpinning), _defineProperty(_spinClassName, "".concat(prefixCls, "-show-text"), !!tip), _defineProperty(_spinClassName, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _defineProperty(_spinClassName, cls, !!cls), _spinClassName);    var spinElement = _createVNode("div", _objectSpread(_objectSpread({}, divProps), {}, {      "style": style,      "class": spinClassName    }), [this.renderIndicator(prefixCls), tip ? _createVNode("div", {      "class": "".concat(prefixCls, "-text")    }, [tip]) : null]);    var children = getSlot(this);    if (children && children.length) {      var _containerClassName;      var containerClassName = (_containerClassName = {}, _defineProperty(_containerClassName, "".concat(prefixCls, "-container"), true), _defineProperty(_containerClassName, "".concat(prefixCls, "-blur"), sSpinning), _containerClassName);      return _createVNode("div", {        "class": ["".concat(prefixCls, "-nested-loading"), wrapperClassName]      }, [sSpinning && _createVNode("div", {        "key": "loading"      }, [spinElement]), _createVNode("div", {        "class": containerClassName,        "key": "container"      }, [children])]);    }    return spinElement;  }});
 |