UNPKG

react-formal

Version:

Classy HTML form management for React

45 lines (44 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _BindingContext = require("./BindingContext"); function extractTargetValue(eventOrValue) { if (!eventOrValue || typeof eventOrValue !== 'object' || !('target' in eventOrValue)) return eventOrValue; const { type, value, checked, multiple, files } = eventOrValue.target; if (type === 'file') return multiple ? files : files && files[0]; if (/number|range/.test(type)) { let parsed = parseFloat(value); return isNaN(parsed) ? null : parsed; } return /checkbox|radio/.test(type) ? checked : value; } function useBinding(bindTo, mapValue = extractTargetValue) { const { updateBindingValue, getValue } = (0, _BindingContext.useBindingContext)(); const value = getValue(bindTo); const handleEvent = (0, _react.useCallback)((...args) => { let mapper = mapValue; if (typeof bindTo === 'string' && typeof mapValue !== 'object') { mapper = { [bindTo]: mapValue }; } if (mapper) { updateBindingValue(mapper, args); } }, [bindTo, mapValue, updateBindingValue]); return [value, handleEvent]; } var _default = useBinding; exports.default = _default;