New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-use-controllable-state

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-use-controllable-state - npm Package Compare versions

Comparing version 0.0.6 to 0.0.7

2

dist/index.js

@@ -18,2 +18,2 @@ "use strict";

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGFibGVTdGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztlQUllQSwwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRyb2xsYWJsZVN0YXRlIH0gZnJvbSAnLi91c2VDb250cm9sbGFibGVTdGF0ZSdcblxuZXhwb3J0IHsgdXNlQ29udHJvbGxhYmxlU3RhdGUgfVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb250cm9sbGFibGVTdGF0ZTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGFibGVTdGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztlQUllQSwwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRyb2xsYWJsZVN0YXRlIH0gZnJvbSAnLi91c2VDb250cm9sbGFibGVTdGF0ZSc7XG5cbmV4cG9ydCB7IHVzZUNvbnRyb2xsYWJsZVN0YXRlIH1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ29udHJvbGxhYmxlU3RhdGU7XG4iXX0=
import { Dispatch, SetStateAction } from 'react';
/**
* @usage
* - value ✓ changeHandler ✓:
* The state of value is lifted up in parent component and is passed as a prop. Change requests are also handled
* in parent component. Useful when parent component needs to intercept value changes (validation for example).
*
* - value ✓ changeHandler ✗:
* value is controlled (forced), and it's independent of normal change mechanism provided by the component.
* not so common use case. A readonly control is an example of such usage.
*
* - value ✗ changeHandler ✓:
* user just wants to get informed of changes. The value is kept
* as a local state in component itself, and parent component just needs to react to its changes.
* changeHandler here is a mere callback, it can't control value in any way.
*
* - value ✗ changeHandler ✗:
* State is handled inside component.
* common use cases are for components such as a zippy, a tab view, a window, when you just want the UI functionality
* but you don't care about its state.
*
* @param value
* @param changeHandler
* @param initialValue
* @param valueRef
*/
export declare function useControllableState<T>(value: T | undefined, changeHandler: Dispatch<SetStateAction<T>> | undefined, initialValue: T | (() => T)): [T, Dispatch<SetStateAction<T>>];

@@ -43,2 +43,4 @@ "use strict";

*/
var warnedUserForModeRegression = false;
function useControllableState(value, changeHandler, initialValue) {

@@ -53,3 +55,9 @@ var _useState = (0, _react.useState)(initialValue),

if (isControlled !== wasControlled) {}
if (isControlled !== wasControlled) {
//TODO: maybe use invariant npm package
if (process.env.NODE_ENV !== 'production' && !warnedUserForModeRegression) {
warnedUserForModeRegression = true;
console.warn('[useControllableState] WARNING: control mode is changed from controlled to uncontrolled or vice versa.');
}
}

@@ -78,2 +86,2 @@ var effectiveValue = isControlled ? value : stateValue;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VDb250cm9sbGFibGVTdGF0ZS50cyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGFibGVTdGF0ZSIsInZhbHVlIiwiY2hhbmdlSGFuZGxlciIsImluaXRpYWxWYWx1ZSIsInN0YXRlVmFsdWUiLCJzZXRTdGF0ZSIsIndhc0NvbnRyb2xsZWQiLCJ1c2VQcmV2aW91cyIsInVuZGVmaW5lZCIsImlzQ29udHJvbGxlZCIsImVmZmVjdGl2ZVZhbHVlIiwidXBkYXRlIiwibmV3VmFsdWUiLCJpc0Z1bmN0aW9uIiwicmVmIiwiY3VycmVudCIsImEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJPLFNBQVNBLG9CQUFULENBQ0xDLEtBREssRUFFTEMsYUFGSyxFQUdMQyxZQUhLLEVBSzRCO0FBQUEsa0JBQ0YscUJBQVNBLFlBQVQsQ0FERTtBQUFBO0FBQUEsTUFDMUJDLFVBRDBCO0FBQUEsTUFDZEMsUUFEYzs7QUFFakMsTUFBTUMsYUFBYSxHQUFHQyxXQUFXLENBQUNOLEtBQUQsQ0FBWCxLQUF1Qk8sU0FBN0M7QUFDQSxNQUFNQyxZQUFZLEdBQUdSLEtBQUssS0FBS08sU0FBL0I7O0FBQ0EsTUFBR0MsWUFBWSxLQUFLSCxhQUFwQixFQUFrQyxDQUVqQzs7QUFDRCxNQUFNSSxjQUFjLEdBQUdELFlBQVksR0FBR1IsS0FBSCxHQUFXRyxVQUE5QztBQUNBLFNBQU8sQ0FBQ00sY0FBRCxFQUFpQix3QkFBWSxVQUFDQyxNQUFELEVBQVk7QUFDOUNOLElBQUFBLFFBQVEsQ0FBQ00sTUFBRCxDQUFSO0FBQ0EsUUFBTUMsUUFBUSxHQUFHQyxVQUFVLENBQUNGLE1BQUQsQ0FBVixHQUFxQkEsTUFBTSxDQUFDRCxjQUFELENBQTNCLEdBQThDQyxNQUEvRDs7QUFFQSxRQUFJVCxhQUFKLEVBQW1CO0FBQ2pCQSxNQUFBQSxhQUFhLENBQUNVLFFBQUQsQ0FBYjtBQUNEO0FBQ0YsR0FQdUIsRUFPckIsQ0FBQ1YsYUFBRCxDQVBxQixDQUFqQixDQUFQO0FBUUQ7O0FBR0QsU0FBU0ssV0FBVCxDQUFxQk4sS0FBckIsRUFBNEI7QUFDMUIsTUFBTWEsR0FBRyxHQUFHLG1CQUFPLElBQVAsQ0FBWjtBQUNBLHdCQUFVLFlBQU07QUFDZEEsSUFBQUEsR0FBRyxDQUFDQyxPQUFKLEdBQWNkLEtBQWQ7QUFDRCxHQUZEO0FBR0EsU0FBT2EsR0FBRyxDQUFDQyxPQUFYO0FBQ0Q7O0FBRUQsU0FBU0YsVUFBVCxDQUF1QkcsQ0FBdkIsRUFBeUU7QUFDdkUsU0FBTyxPQUFPQSxDQUFQLEtBQWEsVUFBcEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBAdXNhZ2VcbiAqICAtIHZhbHVlIOKckyAgIGNoYW5nZUhhbmRsZXIg4pyTOlxuICogIFRoZSBzdGF0ZSBvZiB2YWx1ZSBpcyBsaWZ0ZWQgdXAgaW4gcGFyZW50IGNvbXBvbmVudCBhbmQgaXMgcGFzc2VkIGFzIGEgcHJvcC4gQ2hhbmdlIHJlcXVlc3RzIGFyZSBhbHNvIGhhbmRsZWRcbiAqICBpbiBwYXJlbnQgY29tcG9uZW50LiBVc2VmdWwgd2hlbiBwYXJlbnQgY29tcG9uZW50IG5lZWRzIHRvIGludGVyY2VwdCB2YWx1ZSBjaGFuZ2VzICh2YWxpZGF0aW9uIGZvciBleGFtcGxlKS5cbiAqXG4gKiAgLSB2YWx1ZSDinJMgICBjaGFuZ2VIYW5kbGVyIOKclzpcbiAqICB2YWx1ZSBpcyBjb250cm9sbGVkIChmb3JjZWQpLCBhbmQgaXQncyBpbmRlcGVuZGVudCBvZiBub3JtYWwgY2hhbmdlIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgY29tcG9uZW50LlxuICogIG5vdCBzbyBjb21tb24gdXNlIGNhc2UuIEEgcmVhZG9ubHkgY29udHJvbCBpcyBhbiBleGFtcGxlIG9mIHN1Y2ggdXNhZ2UuXG4gKlxuICogIC0gdmFsdWUg4pyXICAgY2hhbmdlSGFuZGxlciDinJM6XG4gKiAgdXNlciBqdXN0IHdhbnRzIHRvIGdldCBpbmZvcm1lZCBvZiBjaGFuZ2VzLiBUaGUgdmFsdWUgaXMga2VwdFxuICogIGFzIGEgbG9jYWwgc3RhdGUgaW4gY29tcG9uZW50IGl0c2VsZiwgYW5kIHBhcmVudCBjb21wb25lbnQganVzdCBuZWVkcyB0byByZWFjdCB0byBpdHMgY2hhbmdlcy5cbiAqICBjaGFuZ2VIYW5kbGVyIGhlcmUgaXMgYSBtZXJlIGNhbGxiYWNrLCBpdCBjYW4ndCBjb250cm9sIHZhbHVlIGluIGFueSB3YXkuXG4gKlxuICogIC0gdmFsdWUg4pyXICAgY2hhbmdlSGFuZGxlciDinJc6XG4gKiAgU3RhdGUgaXMgaGFuZGxlZCBpbnNpZGUgY29tcG9uZW50LlxuICogIGNvbW1vbiB1c2UgY2FzZXMgYXJlIGZvciBjb21wb25lbnRzIHN1Y2ggYXMgYSB6aXBweSwgYSB0YWIgdmlldywgYSB3aW5kb3csIHdoZW4geW91IGp1c3Qgd2FudCB0aGUgVUkgZnVuY3Rpb25hbGl0eVxuICogIGJ1dCB5b3UgZG9uJ3QgY2FyZSBhYm91dCBpdHMgc3RhdGUuXG4gKlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gY2hhbmdlSGFuZGxlclxuICogQHBhcmFtIGluaXRpYWxWYWx1ZVxuICogQHBhcmFtIHZhbHVlUmVmXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRyb2xsYWJsZVN0YXRlPFQ+KFxuICB2YWx1ZTogVCB8IHVuZGVmaW5lZCxcbiAgY2hhbmdlSGFuZGxlcjogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248VD4+IHwgdW5kZWZpbmVkLFxuICBpbml0aWFsVmFsdWU6IFQgfCAoKCkgPT4gVCksXG4pOlxuICBbVCwgRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248VD4+XSB7XG4gIGNvbnN0IFtzdGF0ZVZhbHVlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCB3YXNDb250cm9sbGVkID0gdXNlUHJldmlvdXModmFsdWUpID09PSB1bmRlZmluZWQ7XG4gIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIGlmKGlzQ29udHJvbGxlZCAhPT0gd2FzQ29udHJvbGxlZCl7XG5cbiAgfVxuICBjb25zdCBlZmZlY3RpdmVWYWx1ZSA9IGlzQ29udHJvbGxlZCA/IHZhbHVlIDogc3RhdGVWYWx1ZTtcbiAgcmV0dXJuIFtlZmZlY3RpdmVWYWx1ZSwgdXNlQ2FsbGJhY2soKHVwZGF0ZSkgPT4ge1xuICAgIHNldFN0YXRlKHVwZGF0ZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBpc0Z1bmN0aW9uKHVwZGF0ZSkgPyB1cGRhdGUoZWZmZWN0aXZlVmFsdWUpIDogdXBkYXRlO1xuXG4gICAgaWYgKGNoYW5nZUhhbmRsZXIpIHtcbiAgICAgIGNoYW5nZUhhbmRsZXIobmV3VmFsdWUpO1xuICAgIH1cbiAgfSwgW2NoYW5nZUhhbmRsZXJdKV07XG59XG5cblxuZnVuY3Rpb24gdXNlUHJldmlvdXModmFsdWUpIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb248Uz4oYTogU2V0U3RhdGVBY3Rpb248Uz4pOiBhIGlzICgocHJldlN0YXRlOiBTKSA9PiBTKSB7XG4gIHJldHVybiB0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJztcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VDb250cm9sbGFibGVTdGF0ZS50cyJdLCJuYW1lcyI6WyJ3YXJuZWRVc2VyRm9yTW9kZVJlZ3Jlc3Npb24iLCJ1c2VDb250cm9sbGFibGVTdGF0ZSIsInZhbHVlIiwiY2hhbmdlSGFuZGxlciIsImluaXRpYWxWYWx1ZSIsInN0YXRlVmFsdWUiLCJzZXRTdGF0ZSIsIndhc0NvbnRyb2xsZWQiLCJ1c2VQcmV2aW91cyIsInVuZGVmaW5lZCIsImlzQ29udHJvbGxlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNvbnNvbGUiLCJ3YXJuIiwiZWZmZWN0aXZlVmFsdWUiLCJ1cGRhdGUiLCJuZXdWYWx1ZSIsImlzRnVuY3Rpb24iLCJyZWYiLCJjdXJyZW50IiwiYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkEsSUFBSUEsMkJBQTJCLEdBQUcsS0FBbEM7O0FBRU8sU0FBU0Msb0JBQVQsQ0FDTEMsS0FESyxFQUVMQyxhQUZLLEVBR0xDLFlBSEssRUFLNEI7QUFBQSxrQkFDRixxQkFBU0EsWUFBVCxDQURFO0FBQUE7QUFBQSxNQUMxQkMsVUFEMEI7QUFBQSxNQUNkQyxRQURjOztBQUVqQyxNQUFNQyxhQUFhLEdBQUdDLFdBQVcsQ0FBQ04sS0FBRCxDQUFYLEtBQXVCTyxTQUE3QztBQUNBLE1BQU1DLFlBQVksR0FBR1IsS0FBSyxLQUFLTyxTQUEvQjs7QUFDQSxNQUFJQyxZQUFZLEtBQUtILGFBQXJCLEVBQW9DO0FBQ2xDO0FBQ0EsUUFBR0ksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBekIsSUFBeUMsQ0FBQ2IsMkJBQTdDLEVBQXlFO0FBQ3ZFQSxNQUFBQSwyQkFBMkIsR0FBRyxJQUE5QjtBQUNBYyxNQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRSx3R0FERjtBQUVEO0FBQ0Y7O0FBQ0QsTUFBTUMsY0FBYyxHQUFHTixZQUFZLEdBQUdSLEtBQUgsR0FBV0csVUFBOUM7QUFDQSxTQUFPLENBQUNXLGNBQUQsRUFBaUIsd0JBQVksVUFBQ0MsTUFBRCxFQUFZO0FBQzlDWCxJQUFBQSxRQUFRLENBQUNXLE1BQUQsQ0FBUjtBQUNBLFFBQU1DLFFBQVEsR0FBR0MsVUFBVSxDQUFDRixNQUFELENBQVYsR0FBcUJBLE1BQU0sQ0FBQ0QsY0FBRCxDQUEzQixHQUE4Q0MsTUFBL0Q7O0FBRUEsUUFBSWQsYUFBSixFQUFtQjtBQUNqQkEsTUFBQUEsYUFBYSxDQUFDZSxRQUFELENBQWI7QUFDRDtBQUNGLEdBUHVCLEVBT3JCLENBQUNmLGFBQUQsQ0FQcUIsQ0FBakIsQ0FBUDtBQVFEOztBQUdELFNBQVNLLFdBQVQsQ0FBcUJOLEtBQXJCLEVBQTRCO0FBQzFCLE1BQU1rQixHQUFHLEdBQUcsbUJBQU8sSUFBUCxDQUFaO0FBQ0Esd0JBQVUsWUFBTTtBQUNkQSxJQUFBQSxHQUFHLENBQUNDLE9BQUosR0FBY25CLEtBQWQ7QUFDRCxHQUZEO0FBR0EsU0FBT2tCLEdBQUcsQ0FBQ0MsT0FBWDtBQUNEOztBQUVELFNBQVNGLFVBQVQsQ0FBdUJHLENBQXZCLEVBQXlFO0FBQ3ZFLFNBQU8sT0FBT0EsQ0FBUCxLQUFhLFVBQXBCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24sIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbi8qKlxuICogQHVzYWdlXG4gKiAgLSB2YWx1ZSDinJMgICBjaGFuZ2VIYW5kbGVyIOKckzpcbiAqICBUaGUgc3RhdGUgb2YgdmFsdWUgaXMgbGlmdGVkIHVwIGluIHBhcmVudCBjb21wb25lbnQgYW5kIGlzIHBhc3NlZCBhcyBhIHByb3AuIENoYW5nZSByZXF1ZXN0cyBhcmUgYWxzbyBoYW5kbGVkXG4gKiAgaW4gcGFyZW50IGNvbXBvbmVudC4gVXNlZnVsIHdoZW4gcGFyZW50IGNvbXBvbmVudCBuZWVkcyB0byBpbnRlcmNlcHQgdmFsdWUgY2hhbmdlcyAodmFsaWRhdGlvbiBmb3IgZXhhbXBsZSkuXG4gKlxuICogIC0gdmFsdWUg4pyTICAgY2hhbmdlSGFuZGxlciDinJc6XG4gKiAgdmFsdWUgaXMgY29udHJvbGxlZCAoZm9yY2VkKSwgYW5kIGl0J3MgaW5kZXBlbmRlbnQgb2Ygbm9ybWFsIGNoYW5nZSBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIGNvbXBvbmVudC5cbiAqICBub3Qgc28gY29tbW9uIHVzZSBjYXNlLiBBIHJlYWRvbmx5IGNvbnRyb2wgaXMgYW4gZXhhbXBsZSBvZiBzdWNoIHVzYWdlLlxuICpcbiAqICAtIHZhbHVlIOKclyAgIGNoYW5nZUhhbmRsZXIg4pyTOlxuICogIHVzZXIganVzdCB3YW50cyB0byBnZXQgaW5mb3JtZWQgb2YgY2hhbmdlcy4gVGhlIHZhbHVlIGlzIGtlcHRcbiAqICBhcyBhIGxvY2FsIHN0YXRlIGluIGNvbXBvbmVudCBpdHNlbGYsIGFuZCBwYXJlbnQgY29tcG9uZW50IGp1c3QgbmVlZHMgdG8gcmVhY3QgdG8gaXRzIGNoYW5nZXMuXG4gKiAgY2hhbmdlSGFuZGxlciBoZXJlIGlzIGEgbWVyZSBjYWxsYmFjaywgaXQgY2FuJ3QgY29udHJvbCB2YWx1ZSBpbiBhbnkgd2F5LlxuICpcbiAqICAtIHZhbHVlIOKclyAgIGNoYW5nZUhhbmRsZXIg4pyXOlxuICogIFN0YXRlIGlzIGhhbmRsZWQgaW5zaWRlIGNvbXBvbmVudC5cbiAqICBjb21tb24gdXNlIGNhc2VzIGFyZSBmb3IgY29tcG9uZW50cyBzdWNoIGFzIGEgemlwcHksIGEgdGFiIHZpZXcsIGEgd2luZG93LCB3aGVuIHlvdSBqdXN0IHdhbnQgdGhlIFVJIGZ1bmN0aW9uYWxpdHlcbiAqICBidXQgeW91IGRvbid0IGNhcmUgYWJvdXQgaXRzIHN0YXRlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIGNoYW5nZUhhbmRsZXJcbiAqIEBwYXJhbSBpbml0aWFsVmFsdWVcbiAqIEBwYXJhbSB2YWx1ZVJlZlxuICovXG5cbmxldCB3YXJuZWRVc2VyRm9yTW9kZVJlZ3Jlc3Npb24gPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRyb2xsYWJsZVN0YXRlPFQ+KFxuICB2YWx1ZTogVCB8IHVuZGVmaW5lZCxcbiAgY2hhbmdlSGFuZGxlcjogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248VD4+IHwgdW5kZWZpbmVkLFxuICBpbml0aWFsVmFsdWU6IFQgfCAoKCkgPT4gVCksXG4pOlxuICBbVCwgRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248VD4+XSB7XG4gIGNvbnN0IFtzdGF0ZVZhbHVlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCB3YXNDb250cm9sbGVkID0gdXNlUHJldmlvdXModmFsdWUpID09PSB1bmRlZmluZWQ7XG4gIGNvbnN0IGlzQ29udHJvbGxlZCA9IHZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIGlmIChpc0NvbnRyb2xsZWQgIT09IHdhc0NvbnRyb2xsZWQpIHtcbiAgICAvL1RPRE86IG1heWJlIHVzZSBpbnZhcmlhbnQgbnBtIHBhY2thZ2VcbiAgICBpZihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF3YXJuZWRVc2VyRm9yTW9kZVJlZ3Jlc3Npb24pe1xuICAgICAgd2FybmVkVXNlckZvck1vZGVSZWdyZXNzaW9uID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1t1c2VDb250cm9sbGFibGVTdGF0ZV0gV0FSTklORzogY29udHJvbCBtb2RlIGlzIGNoYW5nZWQgZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCBvciB2aWNlIHZlcnNhLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBlZmZlY3RpdmVWYWx1ZSA9IGlzQ29udHJvbGxlZCA/IHZhbHVlIDogc3RhdGVWYWx1ZTtcbiAgcmV0dXJuIFtlZmZlY3RpdmVWYWx1ZSwgdXNlQ2FsbGJhY2soKHVwZGF0ZSkgPT4ge1xuICAgIHNldFN0YXRlKHVwZGF0ZSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBpc0Z1bmN0aW9uKHVwZGF0ZSkgPyB1cGRhdGUoZWZmZWN0aXZlVmFsdWUpIDogdXBkYXRlO1xuXG4gICAgaWYgKGNoYW5nZUhhbmRsZXIpIHtcbiAgICAgIGNoYW5nZUhhbmRsZXIobmV3VmFsdWUpO1xuICAgIH1cbiAgfSwgW2NoYW5nZUhhbmRsZXJdKV07XG59XG5cblxuZnVuY3Rpb24gdXNlUHJldmlvdXModmFsdWUpIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb248Uz4oYTogU2V0U3RhdGVBY3Rpb248Uz4pOiBhIGlzICgocHJldlN0YXRlOiBTKSA9PiBTKSB7XG4gIHJldHVybiB0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJztcbn1cbiJdfQ==
{
"name": "react-use-controllable-state",
"version": "0.0.6",
"version": "0.0.7",
"description": "React hook for using controllable state",

@@ -41,2 +41,3 @@ "main": "dist/index.js",

"@types/mocha": "^5.2.6",
"@types/node": "^11.9.5",
"@types/react": "^16.7.22",

@@ -71,5 +72,4 @@ "@types/react-dom": "^16.8.2",

"husky": {
"hooks": {
}
"hooks": {}
}
}

@@ -1,2 +0,2 @@

import { useControllableState } from './useControllableState'
import { useControllableState } from './useControllableState';

@@ -3,0 +3,0 @@ export { useControllableState }

@@ -29,2 +29,4 @@ import { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react';

let warnedUserForModeRegression = false;
export function useControllableState<T>(

@@ -39,4 +41,9 @@ value: T | undefined,

const isControlled = value !== undefined;
if(isControlled !== wasControlled){
if (isControlled !== wasControlled) {
//TODO: maybe use invariant npm package
if(process.env.NODE_ENV !== 'production' && !warnedUserForModeRegression){
warnedUserForModeRegression = true;
console.warn(
'[useControllableState] WARNING: control mode is changed from controlled to uncontrolled or vice versa.');
}
}

@@ -43,0 +50,0 @@ const effectiveValue = isControlled ? value : stateValue;

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc