{"version":3,"file":"static/js/8081.07549c69.chunk.js","mappings":"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","sources":["../node_modules/@chakra-ui/number-input/src/icons.tsx","../node_modules/@chakra-ui/utils/src/number.ts","../node_modules/@chakra-ui/counter/src/use-counter.ts","../node_modules/@chakra-ui/number-input/src/use-spinner.ts","../node_modules/@chakra-ui/hooks/src/use-interval.ts","../node_modules/@chakra-ui/number-input/src/utils.ts","../node_modules/@chakra-ui/number-input/src/use-number-input.ts","../node_modules/@chakra-ui/number-input/src/number-input.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Icon, IconProps } from \"@chakra-ui/icon\"\n\nexport const TriangleDownIcon: React.FC<IconProps> = (props) => (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z\"\n />\n </Icon>\n)\n\nexport const TriangleUpIcon: React.FC<IconProps> = (props) => (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z\"\n />\n </Icon>\n)\n","import { isNotNumber } from \"./assertion\"\nimport { warn } from \"./function\"\n\nexport const minSafeInteger = Number.MIN_SAFE_INTEGER || -9007199254740991\nexport const maxSafeInteger = Number.MAX_SAFE_INTEGER || 9007199254740991\n\nfunction toNumber(value: any) {\n const num = parseFloat(value)\n return isNotNumber(num) ? 0 : num\n}\n\n/**\n * Converts a value to a specific precision (or decimal points).\n *\n * Returns a string representing a number in fixed-point notation.\n *\n * @param value the value to convert\n * @param precision the precision or decimal points\n */\nexport function toPrecision(value: number, precision?: number) {\n let nextValue: string | number = toNumber(value)\n const scaleFactor = 10 ** (precision ?? 10)\n nextValue = Math.round(nextValue * scaleFactor) / scaleFactor\n return precision ? nextValue.toFixed(precision) : nextValue.toString()\n}\n\n/**\n * Counts the number of decimal places a number has\n *\n * @param value the decimal value to count\n */\nexport function countDecimalPlaces(value: number) {\n if (!Number.isFinite(value)) return 0\n\n let e = 1\n let p = 0\n while (Math.round(value * e) / e !== value) {\n e *= 10\n p += 1\n }\n return p\n}\n\n/**\n * Convert a value to percentage based on lower and upper bound values\n *\n * @param value the value in number\n * @param min the minimum value\n * @param max the maximum value\n */\nexport function valueToPercent(value: number, min: number, max: number) {\n return ((value - min) * 100) / (max - min)\n}\n\n/**\n * Calculate the value based on percentage, lower and upper bound values\n *\n * @param percent the percent value in decimals (e.g 0.6, 0.3)\n * @param min the minimum value\n * @param max the maximum value\n */\nexport function percentToValue(percent: number, min: number, max: number) {\n return (max - min) * percent + min\n}\n\n/**\n * Rounds a specific value to the next or previous step\n *\n * @param value the value to round\n * @param from the number that stepping started from\n * @param step the specified step\n */\nexport function roundValueToStep(value: number, from: number, step: number) {\n const nextValue = Math.round((value - from) / step) * step + from\n const precision = countDecimalPlaces(step)\n return toPrecision(nextValue, precision)\n}\n\n/**\n * Clamps a value to ensure it stays within the min and max range.\n *\n * @param value the value to clamp\n * @param min the minimum value\n * @param max the maximum value\n */\nexport function clampValue(value: number, min: number, max: number) {\n if (value == null) return value\n\n warn({\n condition: max < min,\n message: \"clamp: max cannot be less than min\",\n })\n\n return Math.min(Math.max(value, min), max)\n}\n","import { useCallbackRef, useControllableProp } from \"@chakra-ui/hooks\"\nimport {\n clampValue,\n countDecimalPlaces,\n maxSafeInteger,\n minSafeInteger,\n StringOrNumber,\n toPrecision,\n} from \"@chakra-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface UseCounterProps {\n /**\n * The callback fired when the value changes\n */\n onChange?(valueAsString: string, valueAsNumber: number): void\n /**\n * The number of decimal points used to round the value\n */\n precision?: number\n /**\n * The initial value of the counter. Should be less than `max` and greater than `min`\n */\n defaultValue?: StringOrNumber\n /**\n * The value of the counter. Should be less than `max` and greater than `min`\n */\n value?: StringOrNumber\n /**\n * The step used to increment or decrement the value\n * @default 1\n */\n step?: number\n /**\n * The minimum value of the counter\n * @default -Infinity\n */\n min?: number\n /**\n * The maximum value of the counter\n * @default Infinity\n */\n max?: number\n /**\n * This controls the value update behavior in general.\n *\n * - If `true` and you use the stepper or up/down arrow keys,\n * the value will not exceed the `max` or go lower than `min`\n *\n * - If `false`, the value will be allowed to go out of range.\n *\n * @default true\n */\n keepWithinRange?: boolean\n}\n\nexport function useCounter(props: UseCounterProps = {}) {\n const {\n onChange,\n precision: precisionProp,\n defaultValue,\n value: valueProp,\n step: stepProp = 1,\n min = minSafeInteger,\n max = maxSafeInteger,\n keepWithinRange = true,\n } = props\n\n const onChangeProp = useCallbackRef(onChange)\n\n const [valueState, setValue] = useState<StringOrNumber>(() => {\n if (defaultValue == null) return \"\"\n return cast(defaultValue, stepProp, precisionProp) ?? \"\"\n })\n\n /**\n * Because the component that consumes this hook can be controlled or uncontrolled\n * we'll keep track of that\n */\n const [isControlled, value] = useControllableProp(valueProp, valueState)\n\n const decimalPlaces = getDecimalPlaces(parse(value), stepProp)\n\n const precision = precisionProp ?? decimalPlaces\n\n const update = useCallback(\n (next: StringOrNumber) => {\n if (next === value) return\n if (!isControlled) {\n setValue(next.toString())\n }\n onChangeProp?.(next.toString(), parse(next))\n },\n [onChangeProp, isControlled, value],\n )\n\n // Function to clamp the value and round it to the precision\n const clamp = useCallback(\n (value: number) => {\n let nextValue = value\n\n if (keepWithinRange) {\n nextValue = clampValue(nextValue, min, max)\n }\n\n return toPrecision(nextValue, precision)\n },\n [precision, keepWithinRange, max, min],\n )\n\n const increment = useCallback(\n (step = stepProp) => {\n let next: StringOrNumber\n\n /**\n * Let's follow the native browser behavior for\n * scenarios where the input starts empty (\"\")\n */\n if (value === \"\") {\n /**\n * If `min` is set, native input, starts at the `min`.\n * Else, it starts at `step`\n */\n next = parse(step)\n } else {\n next = parse(value) + step\n }\n\n next = clamp(next as number)\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const decrement = useCallback(\n (step = stepProp) => {\n let next: StringOrNumber\n\n // Same thing here. We'll follow native implementation\n if (value === \"\") {\n next = parse(-step)\n } else {\n next = parse(value) - step\n }\n\n next = clamp(next as number)\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const reset = useCallback(() => {\n let next: StringOrNumber\n if (defaultValue == null) {\n next = \"\"\n } else {\n next = cast(defaultValue, stepProp, precisionProp) ?? min\n }\n update(next)\n }, [defaultValue, precisionProp, stepProp, update, min])\n\n const castValue = useCallback(\n (value: StringOrNumber) => {\n const nextValue = cast(value, stepProp, precision) ?? min\n update(nextValue)\n },\n [precision, stepProp, update, min],\n )\n\n const valueAsNumber = parse(value)\n\n /**\n * Common range checks\n */\n const isOutOfRange = valueAsNumber > max || valueAsNumber < min\n const isAtMax = valueAsNumber === max\n const isAtMin = valueAsNumber === min\n\n return {\n isOutOfRange,\n isAtMax,\n isAtMin,\n precision,\n value,\n valueAsNumber,\n update,\n reset,\n increment,\n decrement,\n clamp,\n cast: castValue,\n setValue,\n }\n}\n\nexport type UseCounterReturn = ReturnType<typeof useCounter>\n\nfunction parse(value: StringOrNumber) {\n return parseFloat(value.toString().replace(/[^\\w.-]+/g, \"\"))\n}\n\nfunction getDecimalPlaces(value: number, step: number) {\n return Math.max(countDecimalPlaces(step), countDecimalPlaces(value))\n}\n\nfunction cast(value: StringOrNumber, step: number, precision?: number) {\n const parsedValue = parse(value)\n if (Number.isNaN(parsedValue)) return undefined\n const decimalPlaces = getDecimalPlaces(parsedValue, step)\n return toPrecision(parsedValue, precision ?? decimalPlaces)\n}\n","import { useInterval, useUnmountEffect } from \"@chakra-ui/hooks\"\nimport { useCallback, useRef, useState } from \"react\"\n\n/**\n * When click and hold on a button - the speed of auto changing the value.\n */\nconst CONTINUOUS_CHANGE_INTERVAL = 50\n\n/**\n * When click and hold on a button - the delay before auto changing the value.\n */\nconst CONTINUOUS_CHANGE_DELAY = 300\n\ntype Action = \"increment\" | \"decrement\"\n\n/**\n * React hook used in the number input to spin its\n * value on long press of the spin buttons\n *\n * @param increment the function to increment\n * @param decrement the function to decrement\n */\nexport function useSpinner(increment: Function, decrement: Function) {\n /**\n * To keep incrementing/decrementing on press, we call that `spinning`\n */\n const [isSpinning, setIsSpinning] = useState(false)\n\n // This state keeps track of the action (\"increment\" or \"decrement\")\n const [action, setAction] = useState<Action | null>(null)\n\n // To increment the value the first time you mousedown, we call that `runOnce`\n const [runOnce, setRunOnce] = useState(true)\n\n // Store the timeout instance id in a ref, so we can clear the timeout later\n const timeoutRef = useRef<any>(null)\n\n // Clears the timeout from memory\n const removeTimeout = () => clearTimeout(timeoutRef.current)\n\n /**\n * useInterval hook provides a performant way to\n * update the state value at specific interval\n */\n useInterval(\n () => {\n if (action === \"increment\") {\n increment()\n }\n if (action === \"decrement\") {\n decrement()\n }\n },\n isSpinning ? CONTINUOUS_CHANGE_INTERVAL : null,\n )\n\n // Function to activate the spinning and increment the value\n const up = useCallback(() => {\n // increment the first fime\n if (runOnce) {\n increment()\n }\n\n // after a delay, keep incrementing at interval (\"spinning up\")\n timeoutRef.current = setTimeout(() => {\n setRunOnce(false)\n setIsSpinning(true)\n setAction(\"increment\")\n }, CONTINUOUS_CHANGE_DELAY)\n }, [increment, runOnce])\n\n // Function to activate the spinning and increment the value\n const down = useCallback(() => {\n // decrement the first fime\n if (runOnce) {\n decrement()\n }\n\n // after a delay, keep decrementing at interval (\"spinning down\")\n timeoutRef.current = setTimeout(() => {\n setRunOnce(false)\n setIsSpinning(true)\n setAction(\"decrement\")\n }, CONTINUOUS_CHANGE_DELAY)\n }, [decrement, runOnce])\n\n // Function to stop spinng (useful for mouseup, keyup handlers)\n const stop = useCallback(() => {\n setRunOnce(true)\n setIsSpinning(false)\n removeTimeout()\n }, [])\n\n /**\n * If the component unmounts while spinning,\n * let's clear the timeout as well\n */\n useUnmountEffect(removeTimeout)\n\n return { up, down, stop }\n}\n","import * as React from \"react\"\nimport { useCallbackRef } from \"./use-callback-ref\"\n\n/**\n * React Hook that provides a declarative `setInterval`\n *\n * @param callback the callback to execute at interval\n * @param delay the `setInterval` delay (in ms)\n */\nexport function useInterval(callback: () => void, delay: number | null) {\n const fn = useCallbackRef(callback)\n\n React.useEffect(() => {\n let intervalId: number | null = null\n const tick = () => fn()\n if (delay !== null) {\n intervalId = window.setInterval(tick, delay)\n }\n return () => {\n if (intervalId) {\n window.clearInterval(intervalId)\n }\n }\n }, [delay, fn])\n}\n","const FLOATING_POINT_REGEX = /^[Ee0-9+\\-.]$/\n\n/**\n * Determine if a character is a DOM floating point character\n * @see https://www.w3.org/TR/2012/WD-html-markup-20120329/datatypes.html#common.data.float\n */\nexport function isFloatingPointNumericCharacter(character: string) {\n return FLOATING_POINT_REGEX.test(character)\n}\n\n/**\n * Determine if the event is a valid numeric keyboard event.\n * We use this so we can prevent non-number characters in the input\n */\nexport function isValidNumericKeyboardEvent(event: React.KeyboardEvent) {\n if (event.key == null) return true\n\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey\n\n if (isModifierKey) {\n return true\n }\n\n const isSingleCharacterKey = event.key.length === 1\n\n if (!isSingleCharacterKey) {\n return true\n }\n\n return isFloatingPointNumericCharacter(event.key)\n}\n","import { useCounter, UseCounterProps } from \"@chakra-ui/counter\"\nimport {\n useBoolean,\n useCallbackRef,\n useEventListener,\n useSafeLayoutEffect,\n} from \"@chakra-ui/hooks\"\nimport {\n ariaAttr,\n callAllHandlers,\n focus,\n isBrowser,\n isNull,\n maxSafeInteger,\n minSafeInteger,\n StringOrNumber,\n normalizeEventKey,\n scheduleMicrotask,\n} from \"@chakra-ui/utils\"\nimport { mergeRefs, PropGetter, EventKeyMap } from \"@chakra-ui/react-utils\"\nimport * as React from \"react\"\nimport { useSpinner } from \"./use-spinner\"\nimport {\n isFloatingPointNumericCharacter,\n isValidNumericKeyboardEvent,\n} from \"./utils\"\n\nexport interface UseNumberInputProps extends UseCounterProps {\n /**\n * If `true`, the input will be focused as you increment\n * or decrement the value with the stepper\n *\n * @default true\n */\n focusInputOnChange?: boolean\n /**\n * This controls the value update when you blur out of the input.\n * - If `true` and the value is greater than `max`, the value will be reset to `max`\n * - Else, the value remains the same.\n *\n * @default true\n */\n clampValueOnBlur?: boolean\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input\n */\n getAriaValueText?(value: StringOrNumber): string\n /**\n * If `true`, the input will be in readonly mode\n */\n isReadOnly?: boolean\n /**\n * If `true`, the input will have `aria-invalid` set to `true`\n */\n isInvalid?: boolean\n /**\n * If `true`, the input will be disabled\n */\n isDisabled?: boolean\n isRequired?: boolean\n /**\n * The `id` to use for the number input field.\n */\n id?: string\n /**\n * The pattern used to check the <input> element's value against on form submission.\n *\n * @default\n * \"[0-9]*(.[0-9]+)?\"\n */\n pattern?: React.InputHTMLAttributes<any>[\"pattern\"]\n /**\n * Hints at the type of data that might be entered by the user. It also determines\n * the type of keyboard shown to the user on mobile devices\n *\n * @default\n * \"decimal\"\n */\n inputMode?: React.InputHTMLAttributes<any>[\"inputMode\"]\n /**\n * If `true`, the input's value will change based on mouse wheel\n */\n allowMouseWheel?: boolean\n /**\n * The HTML `name` attribute used for forms\n */\n name?: string\n \"aria-describedby\"?: string\n \"aria-label\"?: string\n \"aria-labelledby\"?: string\n onFocus?: React.FocusEventHandler<HTMLInputElement>\n onBlur?: React.FocusEventHandler<HTMLInputElement>\n}\n\nconst sanitize = (value: string) =>\n value.split(\"\").filter(isFloatingPointNumericCharacter).join(\"\")\n\n/**\n * React hook that implements the WAI-ARIA Spin Button widget\n * and used to create numeric input fields.\n *\n * It returns prop getters you can use to build your own\n * custom number inputs.\n *\n * @see WAI-ARIA https://www.w3.org/TR/wai-aria-practices-1.1/#spinbutton\n * @see Docs https://www.chakra-ui.com/useNumberInput\n * @see WHATWG https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number)\n */\nexport function useNumberInput(props: UseNumberInputProps = {}) {\n const {\n focusInputOnChange = true,\n clampValueOnBlur = true,\n keepWithinRange = true,\n min = minSafeInteger,\n max = maxSafeInteger,\n step: stepProp = 1,\n isReadOnly,\n isDisabled,\n isRequired,\n getAriaValueText,\n isInvalid,\n pattern = \"[0-9]*(.[0-9]+)?\",\n inputMode = \"decimal\",\n allowMouseWheel,\n id,\n onChange: _,\n precision,\n name,\n \"aria-describedby\": ariaDescBy,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n onFocus,\n onBlur,\n ...htmlProps\n } = props\n\n const onFocusProp = useCallbackRef(onFocus)\n const onBlurProp = useCallbackRef(onBlur)\n const getAriaValueTextProp = useCallbackRef(getAriaValueText)\n\n /**\n * Leverage the `useCounter` hook since it provides\n * the functionality to `increment`, `decrement` and `update`\n * counter values\n */\n const counter = useCounter(props)\n\n const {\n update: updateFn,\n increment: incrementFn,\n decrement: decrementFn,\n } = counter\n\n /**\n * Keep track of the focused state of the input,\n * so user can this to change the styles of the\n * `spinners`, maybe :)\n */\n const [isFocused, setFocused] = useBoolean()\n\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n /**\n * Sync state with uncontrolled form libraries like `react-hook-form`.\n */\n useSafeLayoutEffect(() => {\n if (!inputRef.current) return\n const notInSync = inputRef.current.value != counter.value\n if (notInSync) {\n counter.setValue(sanitize(inputRef.current.value))\n }\n }, [])\n\n const isInteractive = !(isReadOnly || isDisabled)\n\n const increment = React.useCallback(\n (step = stepProp) => {\n if (isInteractive) {\n incrementFn(step)\n }\n },\n [incrementFn, isInteractive, stepProp],\n )\n\n const decrement = React.useCallback(\n (step = stepProp) => {\n if (isInteractive) {\n decrementFn(step)\n }\n },\n [decrementFn, isInteractive, stepProp],\n )\n\n /**\n * Leverage the `useSpinner` hook to spin the input's value\n * when long press on the up and down buttons.\n *\n * This leverages `setInterval` internally\n */\n const spinner = useSpinner(increment, decrement)\n\n /**\n * The `onChange` handler filters out any character typed\n * that isn't floating point compatible.\n */\n const onChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n updateFn(sanitize(event.target.value))\n },\n [updateFn],\n )\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n /**\n * only allow valid numeric keys\n */\n if (!isValidNumericKeyboardEvent(event)) {\n event.preventDefault()\n }\n\n /**\n * Keyboard Accessibility\n *\n * We want to increase or decrease the input's value\n * based on if the user the arrow keys.\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-17\n */\n const stepFactor = getStepFactor(event) * stepProp\n\n const eventKey = normalizeEventKey(event)\n\n const keyMap: EventKeyMap = {\n ArrowUp: () => increment(stepFactor),\n ArrowDown: () => decrement(stepFactor),\n Home: () => updateFn(min),\n End: () => updateFn(max),\n }\n\n const action = keyMap[eventKey]\n\n if (action) {\n event.preventDefault()\n action(event)\n }\n },\n [updateFn, decrement, increment, max, min, stepProp],\n )\n\n const getStepFactor = <Event extends React.KeyboardEvent | React.WheelEvent>(\n event: Event,\n ) => {\n let ratio = 1\n if (event.metaKey || event.ctrlKey) {\n ratio = 0.1\n }\n if (event.shiftKey) {\n ratio = 10\n }\n return ratio\n }\n\n /**\n * If user would like to use a human-readable representation\n * of the value, rather than the value itself they can pass `getAriaValueText`\n *\n * @see https://www.w3.org/TR/wai-aria-practices-1.1/#wai-aria-roles-states-and-properties-18\n * @see https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext\n */\n const ariaValueText = React.useMemo(() => {\n const text = getAriaValueTextProp?.(counter.value)\n if (!isNull(text)) {\n return text\n }\n\n const defaultText = counter.value.toString()\n // empty string is an invalid ARIA attribute value\n return !defaultText ? undefined : defaultText\n }, [counter.value, getAriaValueTextProp])\n\n /**\n * Function that clamps the input's value on blur\n */\n const validateAndClamp = React.useCallback(() => {\n let next = counter.value as StringOrNumber\n\n if (next === \"\") return\n\n if (counter.valueAsNumber < min) {\n next = min\n }\n\n if (counter.valueAsNumber > max) {\n next = max\n }\n\n /**\n * `counter.cast` does 2 things:\n *\n * - sanitize the value by using parseFloat and some Regex\n * - used to round value to computed precision or decimal points\n */\n counter.cast(next)\n }, [counter, max, min])\n\n const onInputBlur = React.useCallback(() => {\n setFocused.off()\n\n if (clampValueOnBlur) {\n validateAndClamp()\n }\n }, [clampValueOnBlur, setFocused, validateAndClamp])\n\n const focusInput = React.useCallback(() => {\n if (focusInputOnChange) {\n focus(inputRef.current, { nextTick: true })\n }\n }, [focusInputOnChange])\n\n const spinUp = React.useCallback(\n (event: any) => {\n event.preventDefault()\n spinner.up()\n focusInput()\n },\n [focusInput, spinner],\n )\n\n const spinDown = React.useCallback(\n (event: any) => {\n event.preventDefault()\n spinner.down()\n focusInput()\n },\n [focusInput, spinner],\n )\n\n const pointerDown =\n isBrowser && !!document.documentElement.ontouchstart\n ? \"onTouchStart\"\n : \"onMouseDown\"\n\n useEventListener(\n \"wheel\",\n (event) => {\n const isInputFocused = document.activeElement === inputRef.current\n if (!allowMouseWheel || !isInputFocused) return\n\n event.preventDefault()\n\n const stepFactor = getStepFactor(event as any) * stepProp\n const direction = Math.sign(event.deltaY)\n\n if (direction === -1) {\n increment(stepFactor)\n } else if (direction === 1) {\n decrement(stepFactor)\n }\n },\n inputRef.current,\n )\n\n const getIncrementButtonProps: PropGetter = React.useCallback(\n (props = {}, ref = null) => {\n const disabled = isDisabled || (keepWithinRange && counter.isAtMax)\n return {\n ...props,\n ref,\n role: \"button\",\n tabIndex: -1,\n [pointerDown]: callAllHandlers(props[pointerDown], spinUp),\n onMouseUp: callAllHandlers(props.onMouseUp, spinner.stop),\n onMouseLeave: callAllHandlers(props.onMouseUp, spinner.stop),\n onTouchEnd: callAllHandlers(props.onTouchEnd, spinner.stop),\n disabled,\n \"aria-disabled\": ariaAttr(disabled),\n }\n },\n [\n pointerDown,\n counter.isAtMax,\n keepWithinRange,\n spinUp,\n spinner.stop,\n isDisabled,\n ],\n )\n\n const getDecrementButtonProps: PropGetter = React.useCallback(\n (props = {}, ref = null) => {\n const disabled = isDisabled || (keepWithinRange && counter.isAtMin)\n return {\n ...props,\n ref,\n role: \"button\",\n tabIndex: -1,\n [pointerDown]: callAllHandlers(props[pointerDown], spinDown),\n onMouseLeave: callAllHandlers(props.onMouseLeave, spinner.stop),\n onMouseUp: callAllHandlers(props.onMouseUp, spinner.stop),\n onTouchEnd: callAllHandlers(props.onTouchEnd, spinner.stop),\n disabled,\n \"aria-disabled\": ariaAttr(disabled),\n }\n },\n [\n pointerDown,\n counter.isAtMin,\n keepWithinRange,\n spinDown,\n spinner.stop,\n isDisabled,\n ],\n )\n\n const getInputProps: PropGetter<\n HTMLInputElement,\n Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"disabled\" | \"required\" | \"readOnly\"\n >\n > = React.useCallback(\n (props = {}, ref = null) => ({\n name,\n inputMode,\n type: \"text\",\n pattern,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescBy,\n id,\n disabled: isDisabled,\n ...props,\n readOnly: props.readOnly ?? isReadOnly,\n \"aria-readonly\": props.readOnly ?? isReadOnly,\n \"aria-required\": props.required ?? isRequired,\n required: props.required ?? isRequired,\n ref: mergeRefs(inputRef, ref),\n value: counter.value,\n role: \"spinbutton\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": Number.isNaN(counter.valueAsNumber)\n ? undefined\n : counter.valueAsNumber,\n \"aria-invalid\": ariaAttr(isInvalid ?? counter.isOutOfRange),\n \"aria-valuetext\": ariaValueText,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n onChange: callAllHandlers(props.onChange, onChange),\n onKeyDown: callAllHandlers(props.onKeyDown, onKeyDown),\n onFocus: callAllHandlers(props.onFocus, onFocusProp, () =>\n scheduleMicrotask(setFocused.on),\n ),\n onBlur: callAllHandlers(props.onBlur, onBlurProp, onInputBlur),\n }),\n [\n name,\n inputMode,\n pattern,\n ariaLabelledBy,\n ariaLabel,\n ariaDescBy,\n id,\n isDisabled,\n isRequired,\n isReadOnly,\n isInvalid,\n counter.value,\n counter.valueAsNumber,\n counter.isOutOfRange,\n min,\n max,\n ariaValueText,\n onChange,\n onKeyDown,\n onFocusProp,\n setFocused.on,\n onBlurProp,\n onInputBlur,\n ],\n )\n\n return {\n value: counter.value,\n valueAsNumber: counter.valueAsNumber,\n isFocused,\n isDisabled,\n isReadOnly,\n getIncrementButtonProps,\n getDecrementButtonProps,\n getInputProps,\n htmlProps,\n }\n}\n\nexport type UseNumberInputReturn = ReturnType<typeof useNumberInput>\n","import { useFormControlProps } from \"@chakra-ui/form-control\"\nimport {\n chakra,\n forwardRef,\n HTMLChakraProps,\n omitThemingProps,\n StylesProvider,\n ThemingProps,\n useMultiStyleConfig,\n useStyles,\n} from \"@chakra-ui/system\"\nimport { __DEV__, cx } from \"@chakra-ui/utils\"\nimport { createContext } from \"@chakra-ui/react-utils\"\nimport * as React from \"react\"\nimport { TriangleDownIcon, TriangleUpIcon } from \"./icons\"\nimport {\n useNumberInput,\n UseNumberInputProps,\n UseNumberInputReturn,\n} from \"./use-number-input\"\n\ninterface NumberInputContext extends Omit<UseNumberInputReturn, \"htmlProps\"> {}\n\n/**\n * React context used to communicate between components\n */\nconst [\n NumberInputProvider,\n useNumberInputContext,\n] = createContext<NumberInputContext>({\n name: \"NumberInputContext\",\n errorMessage:\n \"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within <NumberInput />\",\n})\n\ninterface InputOptions {\n /**\n * The border color when the input is focused. Use color keys in `theme.colors`\n * @example\n * focusBorderColor = \"blue.500\"\n */\n focusBorderColor?: string\n /**\n * The border color when the input is invalid. Use color keys in `theme.colors`\n * @example\n * errorBorderColor = \"red.500\"\n */\n errorBorderColor?: string\n /**\n * If `true`, the input element will span the full width of its parent\n *\n * @deprecated\n * This component defaults to 100% width,\n * please use the props `maxWidth` or `width` to configure\n */\n isFullWidth?: boolean\n}\n\nexport interface NumberInputProps\n extends UseNumberInputProps,\n ThemingProps<\"NumberInput\">,\n InputOptions,\n Omit<HTMLChakraProps<\"div\">, keyof UseNumberInputProps> {}\n\n/**\n * NumberInput\n *\n * React component that provides context and logic to all\n * number input sub-components.\n *\n * It renders a `div` by default.\n *\n * @see Docs http://chakra-ui.com/numberinput\n */\nexport const NumberInput = forwardRef<NumberInputProps, \"div\">((props, ref) => {\n const styles = useMultiStyleConfig(\"NumberInput\", props)\n\n const ownProps = omitThemingProps(props)\n const controlProps = useFormControlProps(ownProps)\n\n const { htmlProps, ...context } = useNumberInput(controlProps)\n const ctx = React.useMemo(() => context, [context])\n\n return (\n <NumberInputProvider value={ctx}>\n <StylesProvider value={styles}>\n <chakra.div\n {...htmlProps}\n ref={ref}\n className={cx(\"chakra-numberinput\", props.className)}\n __css={{\n position: \"relative\",\n zIndex: 0,\n ...styles.root,\n }}\n />\n </StylesProvider>\n </NumberInputProvider>\n )\n})\n\nif (__DEV__) {\n NumberInput.displayName = \"NumberInput\"\n}\n\nexport interface NumberInputStepperProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * NumberInputStepper\n *\n * React component used to group the increment and decrement\n * button spinners.\n *\n * It renders a `div` by default.\n *\n * @see Docs http://chakra-ui.com/components/number-input\n */\nexport const NumberInputStepper = forwardRef<NumberInputStepperProps, \"div\">(\n (props, ref) => {\n const styles = useStyles()\n return (\n <chakra.div\n aria-hidden\n ref={ref}\n {...props}\n __css={{\n display: \"flex\",\n flexDirection: \"column\",\n position: \"absolute\",\n top: \"0\",\n insetEnd: \"0px\",\n margin: \"1px\",\n height: \"calc(100% - 2px)\",\n zIndex: 1,\n ...styles.stepperGroup,\n }}\n />\n )\n },\n)\n\nif (__DEV__) {\n NumberInputStepper.displayName = \"NumberInputStepper\"\n}\n\nexport interface NumberInputFieldProps extends HTMLChakraProps<\"input\"> {}\n\n/**\n * NumberInputField\n *\n * React component that represents the actual `input` field\n * where users can type to edit numeric values.\n *\n * It renders an `input` by default and ensures only numeric\n * values can be typed.\n *\n * @see Docs http://chakra-ui.com/numberinput\n */\nexport const NumberInputField = forwardRef<NumberInputFieldProps, \"input\">(\n (props, ref) => {\n const { getInputProps } = useNumberInputContext()\n\n const input = getInputProps(props, ref)\n const styles = useStyles()\n\n return (\n <chakra.input\n {...input}\n className={cx(\"chakra-numberinput__field\", props.className)}\n __css={{\n width: \"100%\",\n ...styles.field,\n }}\n />\n )\n },\n)\n\nif (__DEV__) {\n NumberInputField.displayName = \"NumberInputField\"\n}\n\nexport const StyledStepper = chakra(\"div\", {\n baseStyle: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flex: 1,\n transition: \"all 0.3s\",\n userSelect: \"none\",\n cursor: \"pointer\",\n lineHeight: \"normal\",\n },\n})\n\nexport interface NumberDecrementStepperProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * NumberDecrementStepper\n *\n * React component used to decrement the number input's value\n *\n * It renders a `div` with `role=button` by default\n */\nexport const NumberDecrementStepper = forwardRef<\n NumberDecrementStepperProps,\n \"div\"\n>((props, ref) => {\n const styles = useStyles()\n const { getDecrementButtonProps } = useNumberInputContext()\n const decrement = getDecrementButtonProps(props, ref)\n\n return (\n <StyledStepper {...decrement} __css={styles.stepper}>\n {props.children ?? <TriangleDownIcon />}\n </StyledStepper>\n )\n})\n\nif (__DEV__) {\n NumberDecrementStepper.displayName = \"NumberDecrementStepper\"\n}\n\nexport interface NumberIncrementStepperProps extends HTMLChakraProps<\"div\"> {}\n\n/**\n * NumberIncrementStepper\n *\n * React component used to increment the number input's value\n *\n * It renders a `div` with `role=button` by default\n */\nexport const NumberIncrementStepper = forwardRef<\n NumberIncrementStepperProps,\n \"div\"\n>((props, ref) => {\n const { getIncrementButtonProps } = useNumberInputContext()\n const increment = getIncrementButtonProps(props, ref)\n const styles = useStyles()\n\n return (\n <StyledStepper {...increment} __css={styles.stepper}>\n {props.children ?? <TriangleUpIcon />}\n </StyledStepper>\n )\n})\n\nif (__DEV__) {\n NumberIncrementStepper.displayName = \"NumberIncrementStepper\"\n}\n"],"names":["TriangleDownIcon","props","React","Icon","_extends","viewBox","fill","d","TriangleUpIcon","minSafeInteger","Number","MIN_SAFE_INTEGER","maxSafeInteger","MAX_SAFE_INTEGER","toPrecision","value","precision","nextValue","num","parseFloat","isNotNumber","toNumber","scaleFactor","Math","round","toFixed","toString","countDecimalPlaces","isFinite","e","p","useCounter","onChange","precisionProp","defaultValue","valueProp","step","stepProp","min","max","keepWithinRange","onChangeProp","useCallbackRef","valueState","setValue","useState","_cast","cast","isControlled","useControllableProp","decimalPlaces","getDecimalPlaces","parse","update","useCallback","next","clamp","warn","condition","message","clampValue","increment","decrement","reset","_cast2","castValue","_cast3","valueAsNumber","isOutOfRange","isAtMax","isAtMin","replace","parsedValue","isNaN","CONTINUOUS_CHANGE_INTERVAL","CONTINUOUS_CHANGE_DELAY","useSpinner","isSpinning","setIsSpinning","action","setAction","runOnce","setRunOnce","timeoutRef","useRef","removeTimeout","clearTimeout","current","callback","delay","fn","intervalId","window","setInterval","tick","clearInterval","useInterval","up","setTimeout","down","stop","useUnmountEffect","FLOATING_POINT_REGEX","isFloatingPointNumericCharacter","character","test","sanitize","split","filter","join","useNumberInput","focusInputOnChange","clampValueOnBlur","isReadOnly","isDisabled","isRequired","getAriaValueText","isInvalid","pattern","inputMode","allowMouseWheel","id","name","ariaDescBy","ariaLabel","ariaLabelledBy","onFocus","onBlur","htmlProps","_objectWithoutPropertiesLoose","onFocusProp","onBlurProp","getAriaValueTextProp","counter","updateFn","incrementFn","decrementFn","isFocused","setFocused","useBoolean","inputRef","useSafeLayoutEffect","isInteractive","spinner","event","target","onKeyDown","key","ctrlKey","altKey","metaKey","length","isValidNumericKeyboardEvent","preventDefault","stepFactor","getStepFactor","ArrowUp","ArrowDown","Home","End","normalizeEventKey","ratio","shiftKey","ariaValueText","text","isNull","defaultText","undefined","validateAndClamp","onInputBlur","off","focusInput","focus","nextTick","spinUp","spinDown","pointerDown","isBrowser","document","documentElement","ontouchstart","useEventListener","isInputFocused","activeElement","direction","sign","deltaY","getIncrementButtonProps","ref","disabled","role","tabIndex","callAllHandlers","onMouseUp","onMouseLeave","onTouchEnd","ariaAttr","getDecrementButtonProps","getInputProps","_props$readOnly","_props$readOnly2","_props$required","_props$required2","type","readOnly","required","mergeRefs","autoComplete","autoCorrect","scheduleMicrotask","on","NumberInputProvider","useNumberInputContext","createContext","errorMessage","NumberInput","forwardRef","styles","useMultiStyleConfig","ownProps","omitThemingProps","_useNumberInput","useFormControlProps","context","ctx","StylesProvider","chakra","div","className","cx","__css","position","zIndex","root","__DEV__","displayName","NumberInputStepper","useStyles","display","flexDirection","top","insetEnd","margin","height","stepperGroup","NumberInputField","input","width","field","StyledStepper","baseStyle","justifyContent","alignItems","flex","transition","userSelect","cursor","lineHeight","NumberDecrementStepper","_props$children","stepper","children","NumberIncrementStepper","_props$children2"],"sourceRoot":""}