UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

90 lines (86 loc) 2.74 kB
"use client"; const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs'); const require_dom = require('../../utils/dom.cjs'); const require_ref = require('../../utils/ref.cjs'); const require_utils_index = require('../../utils/index.cjs'); const require_i18n_provider = require('../../providers/i18n-provider/i18n-provider.cjs'); const require_use_spinner = require('./use-spinner.cjs'); let react = require("react"); react = require_rolldown_runtime.__toESM(react); //#region src/components/number-input/use-number-counter.ts const useNumberCounter = ({ decrement, disabled, increment, keepWithinRange, max, min,...rest }) => { const incrementRef = (0, react.useRef)(null); const decrementRef = (0, react.useRef)(null); const { down, spinning, stop, up } = require_use_spinner.useSpinner({ decrement, increment }); const { t } = require_i18n_provider.useI18n("numberInput"); require_dom.useAttributeObserver(incrementRef, ["disabled"], spinning, stop); require_dom.useAttributeObserver(decrementRef, ["disabled"], spinning, stop); const getButtonProps = (0, react.useCallback)((props = {}) => ({ type: "button", disabled, tabIndex: -1, ...rest, ...props, onPointerLeave: (0, require_utils_index.utils_exports.handlerAll)(props.onPointerLeave, stop), onPointerUp: (0, require_utils_index.utils_exports.handlerAll)(props.onPointerUp, stop) }), [ rest, disabled, stop ]); const getIncrementProps = (0, react.useCallback)(({ ref,...props } = {}) => { const trulyDisabled = disabled || keepWithinRange && max; return { ref: require_ref.mergeRefs(ref, incrementRef), "aria-label": t("Increase"), ...getButtonProps({ disabled: trulyDisabled, ...props }), onPointerDown: (0, require_utils_index.utils_exports.handlerAll)(props.onPointerDown, (ev) => { if (ev.button !== 0 || trulyDisabled) return; ev.preventDefault(); up(); }) }; }, [ getButtonProps, disabled, keepWithinRange, max, up, t ]); return { getDecrementProps: (0, react.useCallback)(({ ref,...props } = {}) => { const trulyDisabled = disabled || keepWithinRange && min; return { ref: require_ref.mergeRefs(ref, decrementRef), "aria-label": t("Decrease"), ...getButtonProps({ disabled: trulyDisabled, ...props }), onPointerDown: (0, require_utils_index.utils_exports.handlerAll)(props.onPointerDown, (ev) => { if (ev.button !== 0 || trulyDisabled) return; ev.preventDefault(); down(); }) }; }, [ getButtonProps, disabled, keepWithinRange, min, down, t ]), getIncrementProps }; }; //#endregion exports.useNumberCounter = useNumberCounter; //# sourceMappingURL=use-number-counter.cjs.map