fenextjs-component
Version:
38 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Counter = void 0;
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const NumberCount_1 = require("fenextjs-functions/cjs/parse/NumberCount");
const fenextjs_functions_1 = require("fenextjs-functions");
const fenextjs_hook_1 = require("fenextjs-hook");
const Counter = ({ className = "", classNameNumber = "", classNameText = "", number = 0, text = undefined, time = 1000, decimal = 2, parseNumber = NumberCount_1.parseNumberCount, ...props }) => {
const { _t } = (0, fenextjs_hook_1.use_T)({ ...props });
const [numberShow, setNumberShow] = (0, react_1.useState)(0);
const onIncrementeNumber = async () => {
const dis = number - numberShow;
const inc = dis / (time / 50);
for (let i = 0; i < Math.abs(dis); i += Math.abs(inc)) {
setNumberShow((pre) => pre + inc);
await (0, fenextjs_functions_1.sleep)(50);
}
setNumberShow(number);
};
(0, react_1.useEffect)(() => {
onIncrementeNumber();
}, [number]);
const formatNumber = (n) => {
if (n % 1 === 0) {
return n;
}
return parseFloat(n.toFixed(decimal));
};
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { className: `fenext-counter ${className} ` },
text && (react_1.default.createElement("div", { className: `fenext-counter-text ${classNameText} ` }, _t(text))),
react_1.default.createElement("div", { className: `fenext-counter-number ${classNameNumber} ` },
react_1.default.createElement("span", { className: `fenext-counter-number-rel ` }, parseNumber(formatNumber(number))),
react_1.default.createElement("span", { className: `fenext-counter-number-abs ` }, parseNumber(formatNumber(numberShow)))))));
};
exports.Counter = Counter;
//# sourceMappingURL=index.js.map