import { w as withInstall } from "../badge/index2.js"; import { defineComponent, ref, computed, watch, onMounted, openBlock, createElementBlock, Fragment, renderSlot, createElementVNode, toDisplayString, unref } from "vue"; import { T as TransitionPresets, e as useTransition } from "../_chunks/@vueuse/index.js"; const __default__ = { name: "LayCountUp" }; const _sfc_main = defineComponent({ ...__default__, props: { startVal: { default: 0 }, endVal: { default: 0 }, decimal: { default: "." }, decimalPlaces: { default: 0 }, useGrouping: { type: Boolean, default: true }, separator: { default: "," }, autoplay: { type: Boolean, default: true }, useEasing: { type: Boolean, default: true }, easingFn: { default: TransitionPresets.easeInOutCubic }, duration: { default: 2e3 }, prefix: { default: "" }, suffix: { default: "" } }, setup(__props, { expose }) { const props = __props; let localStartVal = ref(props.startVal); const isNumber = (val) => !isNaN(parseFloat(val)); const formatNumber = (num) => { if (typeof num != "number") return "0"; num = num.toFixed(props.decimalPlaces); num += ""; const x = num.split("."); let x1 = x[0]; const x2 = x.length > 1 ? props.decimal + x[1] : ""; const rgx = /(\d+)(\d{3})/; if (props.useGrouping && props.separator && !isNumber(props.separator)) { while (rgx.test(x1)) { x1 = x1.replace(rgx, "$1" + props.separator + "$2"); } } return props.prefix + x1 + x2 + props.suffix; }; const printVal = useTransition(localStartVal, { delay: 0, duration: props.duration, disabled: !props.useEasing, transition: typeof props.easingFn === "string" ? TransitionPresets[props.easingFn] : props.easingFn }); const displayValue = computed(() => formatNumber(printVal.value)); const start = function() { localStartVal.value = props.endVal; }; watch(() => props.endVal, () => { if (props.autoplay) { localStartVal.value = props.endVal; } }); onMounted(() => { if (props.autoplay) { start(); } }); expose({ start }); return (_ctx, _cache) => { return openBlock(), createElementBlock(Fragment, null, [ renderSlot(_ctx.$slots, "prefix"), createElementVNode("span", null, toDisplayString(unref(displayValue)), 1), renderSlot(_ctx.$slots, "suffix") ], 64); }; } }); const component = withInstall(_sfc_main); export { component as default };