import { c as _c } from "react/compiler-runtime";
import { memo, useCallback, useState } from "react";
import TextBox from "./TextBox";
export default memo(function NumberInputBox(props) {
  const $ = _c(15);
  const [value, setValue] = useState("");
  const onChangeParent = props.onChange;
  const {
    integerOnly,
    min,
    max
  } = props;
  let t0;
  if ($[0] !== integerOnly || $[1] !== max || $[2] !== min || $[3] !== onChangeParent) {
    t0 = v => {
      setValue(v);
      const value_0 = v.replaceAll(/\./g, "").replaceAll(",", ".");
      const numberValue = Number(value_0);
      if (min !== undefined && numberValue < min || max !== undefined && numberValue > max || Number.isNaN(numberValue) || !Number.isFinite(numberValue)) {
        onChangeParent?.(undefined);
        return;
      }
      if (integerOnly && !Number.isSafeInteger(numberValue)) {
        onChangeParent?.(undefined);
        return;
      }
      onChangeParent?.(numberValue);
    };
    $[0] = integerOnly;
    $[1] = max;
    $[2] = min;
    $[3] = onChangeParent;
    $[4] = t0;
  } else {
    t0 = $[4];
  }
  const onChange = t0;
  let t1;
  if ($[5] !== integerOnly) {
    t1 = input => {
      if (!input) {
        return;
      }
      const handler = e => {
        const content = e.data;
        if (!content || !e.inputType.startsWith("insert")) {
          return;
        }
        if (integerOnly && !/^[-0-9]*$/.test(content) || !/^[-0-9,]*$/.test(content)) {
          e.preventDefault();
        }
      };
      input.addEventListener("beforeinput", handler);
      return () => input.removeEventListener("beforeinput", handler);
    };
    $[5] = integerOnly;
    $[6] = t1;
  } else {
    t1 = $[6];
  }
  let t2;
  if ($[7] !== value) {
    t2 = value?.toString();
    $[7] = value;
    $[8] = t2;
  } else {
    t2 = $[8];
  }
  const t3 = integerOnly ? "[-0-9]*" : "[-0-9,]*";
  let t4;
  if ($[9] !== onChange || $[10] !== props || $[11] !== t1 || $[12] !== t2 || $[13] !== t3) {
    t4 = <TextBox ref={t1} {...props} min={undefined} max={undefined} onChange={onChange} value={t2} pattern={t3} inputMode="numeric" />;
    $[9] = onChange;
    $[10] = props;
    $[11] = t1;
    $[12] = t2;
    $[13] = t3;
    $[14] = t4;
  } else {
    t4 = $[14];
  }
  return t4;
});
//# sourceMappingURL=NumberInputBox.jsx.map