Dashboard sipadu mbip
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

hook.js 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  4. exports.__esModule = true;
  5. exports.useUncontrolledProp = useUncontrolledProp;
  6. exports.default = useUncontrolled;
  7. var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
  9. var _react = require("react");
  10. var Utils = _interopRequireWildcard(require("./utils"));
  11. function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
  12. function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
  13. function useUncontrolledProp(propValue, defaultValue, handler) {
  14. var wasPropRef = (0, _react.useRef)(propValue !== undefined);
  15. var _useState = (0, _react.useState)(defaultValue),
  16. stateValue = _useState[0],
  17. setState = _useState[1];
  18. var isProp = propValue !== undefined;
  19. var wasProp = wasPropRef.current;
  20. wasPropRef.current = isProp;
  21. /**
  22. * If a prop switches from controlled to Uncontrolled
  23. * reset its value to the defaultValue
  24. */
  25. if (!isProp && wasProp && stateValue !== defaultValue) {
  26. setState(defaultValue);
  27. }
  28. return [isProp ? propValue : stateValue, (0, _react.useCallback)(function (value) {
  29. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  30. args[_key - 1] = arguments[_key];
  31. }
  32. if (handler) handler.apply(void 0, [value].concat(args));
  33. setState(value);
  34. }, [handler])];
  35. }
  36. function useUncontrolled(props, config) {
  37. return Object.keys(config).reduce(function (result, fieldName) {
  38. var _extends2;
  39. var _ref = result,
  40. defaultValue = _ref[Utils.defaultKey(fieldName)],
  41. propsValue = _ref[fieldName],
  42. rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));
  43. var handlerName = config[fieldName];
  44. var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),
  45. value = _useUncontrolledProp[0],
  46. handler = _useUncontrolledProp[1];
  47. return (0, _extends3.default)({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));
  48. }, props);
  49. }