{
  "version": 3,
  "sources": ["../../../src/utils/hooks/use-controlled-value.ts"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback, useState } from '@wordpress/element';\n/**\n * Simplified and improved implementation of useControlledState.\n *\n * @param props\n * @param props.defaultValue\n * @param props.value\n * @param props.onChange\n * @return The controlled value and the value setter.\n */\nexport function useControlledValue({\n  defaultValue,\n  onChange,\n  value: valueProp\n}) {\n  const hasValue = typeof valueProp !== 'undefined';\n  const initialValue = hasValue ? valueProp : defaultValue;\n  const [state, setState] = useState(initialValue);\n  const value = hasValue ? valueProp : state;\n  const uncontrolledSetValue = useCallback((nextValue, ...args) => {\n    setState(nextValue);\n    onChange?.(nextValue, ...args);\n  }, [onChange]);\n  let setValue;\n  if (hasValue && typeof onChange === 'function') {\n    // Controlled mode.\n    setValue = onChange;\n  } else if (!hasValue && typeof onChange === 'function') {\n    // Uncontrolled mode, plus forwarding to the onChange prop.\n    setValue = uncontrolledSetValue;\n  } else {\n    // Uncontrolled mode, only update internal state.\n    setValue = setState;\n  }\n  return [value, setValue];\n}"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAsC;AAU/B,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AACT,GAAG;AACD,QAAM,WAAW,OAAO,cAAc;AACtC,QAAM,eAAe,WAAW,YAAY;AAC5C,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAAS,YAAY;AAC/C,QAAM,QAAQ,WAAW,YAAY;AACrC,QAAM,2BAAuB,4BAAY,CAAC,cAAc,SAAS;AAC/D,aAAS,SAAS;AAClB,eAAW,WAAW,GAAG,IAAI;AAAA,EAC/B,GAAG,CAAC,QAAQ,CAAC;AACb,MAAI;AACJ,MAAI,YAAY,OAAO,aAAa,YAAY;AAE9C,eAAW;AAAA,EACb,WAAW,CAAC,YAAY,OAAO,aAAa,YAAY;AAEtD,eAAW;AAAA,EACb,OAAO;AAEL,eAAW;AAAA,EACb;AACA,SAAO,CAAC,OAAO,QAAQ;AACzB;",
  "names": []
}
