UNPKG

@linkdesign/screen

Version:

屏组件库,但使用场景又不局限于屏。主要用于BI、大盘和屏

248 lines (245 loc) 9.78 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _context = _interopRequireDefault(require("../context")); var _excluded = ["endVal"]; function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } var _require = require('countup.js'), CoUp = _require.CountUp; var CountUp = /*#__PURE__*/function (_Component) { (0, _inheritsLoose2["default"])(CountUp, _Component); function CountUp() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _Component.call.apply(_Component, [this].concat(args)) || this; _this.instance = void 0; _this.timeoutId = void 0; _this.containerRef = /*#__PURE__*/_react["default"].createRef(); _this.checkProps = function (updatedProps) { var _this$props = _this.props, startVal = _this$props.startVal, suffix = _this$props.suffix, prefix = _this$props.prefix, redraw = _this$props.redraw, duration = _this$props.duration, separator = _this$props.separator, decimalPlaces = _this$props.decimalPlaces, decimal = _this$props.decimal; var hasPropsChanged = duration !== updatedProps.duration || startVal !== updatedProps.startVal || suffix !== updatedProps.suffix || prefix !== updatedProps.prefix || separator !== updatedProps.separator || decimalPlaces !== updatedProps.decimalPlaces || decimal !== updatedProps.decimal; return hasPropsChanged || redraw; }; _this.createInstance = function () { var _this$props2 = _this.props, endVal = _this$props2.endVal, others = (0, _objectWithoutPropertiesLoose2["default"])(_this$props2, _excluded); // if (typeof this.props.children === 'function') { // // Warn when user didn't use containerRef at all // warning( // this.containerRef.current && // (this.containerRef.current instanceof HTMLElement || // this.containerRef.current instanceof SVGTextElement || // this.containerRef.current instanceof SVGTSpanElement), // `Couldn't find attached element to hook the CountUp instance into! Try to attach "containerRef" from the render prop to a an HTMLElement, eg. <span ref={containerRef} />.`, // ); // } // @ts-ignore return new CoUp(_this.containerRef.current, endVal, others); }; _this.pauseResume = function () { var _assertThisInitialize = (0, _assertThisInitialized2["default"])(_this), reset = _assertThisInitialize.reset, start = _assertThisInitialize.restart, update = _assertThisInitialize.update; var onPauseResume = _this.props.onPauseResume; _this.instance.pauseResume(); onPauseResume({ reset: reset, start: start, update: update }); }; _this.reset = function () { var _assertThisInitialize2 = (0, _assertThisInitialized2["default"])(_this), pauseResume = _assertThisInitialize2.pauseResume, start = _assertThisInitialize2.restart, update = _assertThisInitialize2.update; var onReset = _this.props.onReset; _this.instance.reset(); onReset({ pauseResume: pauseResume, start: start, update: update }); }; _this.restart = function () { _this.reset(); _this.start(); }; _this.start = function () { var _assertThisInitialize3 = (0, _assertThisInitialized2["default"])(_this), pauseResume = _assertThisInitialize3.pauseResume, reset = _assertThisInitialize3.reset, start = _assertThisInitialize3.restart, update = _assertThisInitialize3.update; var _this$props3 = _this.props, delay = _this$props3.delay, onEnd = _this$props3.onEnd, onStart = _this$props3.onStart; var run = function run() { return _this.instance.start(function () { return onEnd({ pauseResume: pauseResume, reset: reset, start: start, update: update }); }); }; if (delay > 0) { _this.timeoutId = setTimeout(run, delay * 1000); } else { run(); } onStart({ pauseResume: pauseResume, reset: reset, update: update }); }; _this.update = function (newEnd) { var _assertThisInitialize4 = (0, _assertThisInitialized2["default"])(_this), pauseResume = _assertThisInitialize4.pauseResume, reset = _assertThisInitialize4.reset, start = _assertThisInitialize4.restart; var onUpdate = _this.props.onUpdate; _this.instance.update(newEnd); onUpdate({ pauseResume: pauseResume, reset: reset, start: start }); }; return _this; } var _proto = CountUp.prototype; _proto.componentDidMount = function componentDidMount() { var _this$props4 = this.props, children = _this$props4.children, delay = _this$props4.delay; this.instance = this.createInstance(); if (typeof children === 'function' && delay !== 0) return; this.start(); }; _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) { var endVal = this.props.endVal; return this.checkProps(nextProps) || endVal !== nextProps.endVal; }; _proto.componentDidUpdate = function componentDidUpdate(prevProps) { var _this$props5 = this.props, endVal = _this$props5.endVal, fromPreserveVal = _this$props5.fromPreserveVal; if (this.checkProps(prevProps)) { this.instance.reset(); this.instance = this.createInstance(); this.start(); } if (endVal !== prevProps.endVal) { if (!fromPreserveVal) { this.instance.reset(); } this.instance.update(endVal); } }; _proto.componentWillUnmount = function componentWillUnmount() { if (this.timeoutId) { clearTimeout(this.timeoutId); } this.instance.reset(); }; _proto.render = function render() { var _cssPrefix = this.context._cssPrefix; var _this$props6 = this.props, children = _this$props6.children, className = _this$props6.className, style = _this$props6.style; var containerRef = this.containerRef, pauseResume = this.pauseResume, reset = this.reset, restart = this.restart, update = this.update; if (typeof children === 'function') { return children({ countUpRef: containerRef, pauseResume: pauseResume, reset: reset, start: restart, update: update }); } return /*#__PURE__*/_react["default"].createElement("span", { className: (0, _classnames["default"])(_cssPrefix + "count-up-wrapper", className), style: style // @ts-ignore , ref: containerRef }); }; return CountUp; }(_react.Component); CountUp.propTypes = { startVal: _propTypes["default"].number, endVal: _propTypes["default"].number.isRequired, decimalPlaces: _propTypes["default"].number, duration: _propTypes["default"].number, useGrouping: _propTypes["default"].bool, useEasing: _propTypes["default"].bool, smartEasingThreshold: _propTypes["default"].number, smartEasingAmount: _propTypes["default"].number, separator: _propTypes["default"].string, decimal: _propTypes["default"].string, delay: _propTypes["default"].number, prefix: _propTypes["default"].string, suffix: _propTypes["default"].string, redraw: _propTypes["default"].bool, fromPreserveVal: _propTypes["default"].bool, onStart: _propTypes["default"].func, onEnd: _propTypes["default"].func, onPauseResume: _propTypes["default"].func, onReset: _propTypes["default"].func, onUpdate: _propTypes["default"].func }; CountUp.defaultProps = { startVal: 0, decimalPlaces: 0, duration: 2, useGrouping: true, useEasing: true, smartEasingThreshold: 999, smartEasingAmount: 333, separator: ',', decimal: '.', delay: 0, prefix: '', suffix: '', redraw: false, fromPreserveVal: false, // easingFn: null, // formattingFn: null, onStart: function onStart() {}, onEnd: function onEnd() {}, onPauseResume: function onPauseResume() {}, onReset: function onReset() {}, onUpdate: function onUpdate() {} }; CountUp.contextType = _context["default"]; var _default = exports["default"] = CountUp;