{
  "version": 3,
  "sources": ["../../src/range-control/utils.ts"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useControlledState } from '../utils/hooks';\nimport { clamp } from '../utils/math';\n/**\n * A float supported clamp function for a specific value.\n *\n * @param value The value to clamp.\n * @param min   The minimum value.\n * @param max   The maximum value.\n *\n * @return A (float) number\n */\nexport function floatClamp(value, min, max) {\n  if (typeof value !== 'number') {\n    return null;\n  }\n  return parseFloat(`${clamp(value, min, max)}`);\n}\n\n/**\n * Hook to store a clamped value, derived from props.\n *\n * @param settings\n * @return The controlled value and the value setter.\n */\nexport function useControlledRangeValue(settings) {\n  const {\n    min,\n    max,\n    value: valueProp,\n    initial\n  } = settings;\n  const [state, setInternalState] = useControlledState(floatClamp(valueProp, min, max), {\n    initial: floatClamp(initial ?? null, min, max),\n    fallback: null\n  });\n  const setState = useCallback(nextValue => {\n    if (nextValue === null) {\n      setInternalState(null);\n    } else {\n      setInternalState(floatClamp(nextValue, min, max));\n    }\n  }, [min, max, setInternalState]);\n\n  // `state` can't be an empty string because we specified a fallback value of\n  // `null` in `useControlledState`\n  return [state, setState];\n}"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA4B;AAK5B,mBAAmC;AACnC,kBAAsB;AAUf,SAAS,WAAW,OAAO,KAAK,KAAK;AAC1C,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO,WAAW,OAAG,mBAAM,OAAO,KAAK,GAAG,CAAC,EAAE;AAC/C;AAQO,SAAS,wBAAwB,UAAU;AAChD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACF,IAAI;AACJ,QAAM,CAAC,OAAO,gBAAgB,QAAI,iCAAmB,WAAW,WAAW,KAAK,GAAG,GAAG;AAAA,IACpF,SAAS,WAAW,WAAW,MAAM,KAAK,GAAG;AAAA,IAC7C,UAAU;AAAA,EACZ,CAAC;AACD,QAAM,eAAW,4BAAY,eAAa;AACxC,QAAI,cAAc,MAAM;AACtB,uBAAiB,IAAI;AAAA,IACvB,OAAO;AACL,uBAAiB,WAAW,WAAW,KAAK,GAAG,CAAC;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,gBAAgB,CAAC;AAI/B,SAAO,CAAC,OAAO,QAAQ;AACzB;",
  "names": []
}
