@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
JavaScript
"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