{"version":3,"sources":["../../source/react/Input.js"],"names":["React","useCallback","useRef","PropTypes","onChange","onInputChange","onCut","onInputCut","onPaste","onInputPaste","onKeyDown","onInputKeyDown","Input","ref","value","parse","format","InputComponent","inputComponent","rest","ownRef","_onChange","event","current","_onPaste","_onCut","_onKeyDown","isEmptyValue","text","forwardRef","propTypes","func","isRequired","elementType","type","string","defaultProps","undefined"],"mappings":"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","sourcesContent":["// This is just `./ReactInput.js` rewritten in Hooks.\r\n\r\nimport React, { useCallback, useRef } from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\nimport {\r\n\tonChange as onInputChange,\r\n\tonCut as onInputCut,\r\n\tonPaste as onInputPaste,\r\n\tonKeyDown as onInputKeyDown\r\n} from '../input control'\r\n\r\n// Usage:\r\n//\r\n// this.setState({ phone })}\r\n// \tparse={character => character}\r\n// \tformat={value => ({ text: value, template: 'xxxxxxxx' })}/>\r\n//\r\nfunction Input({\r\n\tvalue,\r\n\tparse,\r\n\tformat,\r\n\tinputComponent: InputComponent,\r\n\tonChange,\r\n\tonCut,\r\n\tonPaste,\r\n\tonKeyDown,\r\n\t...rest\r\n}, ref) {\r\n\tconst ownRef = useRef()\r\n\tref = ref || ownRef\r\n\tconst _onChange = useCallback((event) => {\r\n\t\treturn onInputChange(\r\n\t\t\tevent,\r\n\t\t\tref.current,\r\n\t\t\tparse,\r\n\t\t\tformat,\r\n\t\t\tonChange\r\n\t\t)\r\n\t}, [ref, parse, format, onChange])\r\n\r\n\tconst _onPaste = useCallback((event) => {\r\n\t\tif (onPaste) {\r\n\t\t\tonPaste(event)\r\n\t\t}\r\n\t\treturn onInputPaste(\r\n\t\t\tevent,\r\n\t\t\tref.current,\r\n\t\t\tparse,\r\n\t\t\tformat,\r\n\t\t\tonChange\r\n\t\t)\r\n\t}, [ref, parse, format, onChange, onPaste])\r\n\r\n\tconst _onCut = useCallback((event) => {\r\n\t\tif (onCut) {\r\n\t\t\tonCut(event)\r\n\t\t}\r\n\t\treturn onInputCut(\r\n\t\t\tevent,\r\n\t\t\tref.current,\r\n\t\t\tparse,\r\n\t\t\tformat,\r\n\t\t\tonChange\r\n\t\t)\r\n\t}, [ref, parse, format, onChange, onCut])\r\n\r\n\tconst _onKeyDown = useCallback((event) => {\r\n\t\tif (onKeyDown) {\r\n\t\t\tonKeyDown(event)\r\n\t\t}\r\n\t\treturn onInputKeyDown(\r\n\t\t\tevent,\r\n\t\t\tref.current,\r\n\t\t\tparse,\r\n\t\t\tformat,\r\n\t\t\tonChange\r\n\t\t)\r\n\t}, [ref, parse, format, onChange, onKeyDown])\r\n\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\nInput = React.forwardRef(Input)\r\n\r\nInput.propTypes = {\r\n\t// Parses a single characher of `` text.\r\n\tparse: PropTypes.func.isRequired,\r\n\r\n\t// Formats `value` into `` text.\r\n\tformat: PropTypes.func.isRequired,\r\n\r\n\t// Renders `` by default.\r\n\tinputComponent: PropTypes.elementType.isRequired,\r\n\r\n\t// `` `type` attribute.\r\n\ttype: PropTypes.string.isRequired,\r\n\r\n\t// Is parsed from text.\r\n\tvalue: PropTypes.string,\r\n\r\n\t// This handler is called each time `` text is changed.\r\n\tonChange: PropTypes.func.isRequired,\r\n\r\n\t// Passthrough\r\n\tonKeyDown: PropTypes.func,\r\n\tonCut: PropTypes.func,\r\n\tonPaste: PropTypes.func\r\n}\r\n\r\nInput.defaultProps = {\r\n\t// Renders `` by default.\r\n\tinputComponent: 'input',\r\n\r\n\t// `` `type` attribute.\r\n\ttype: 'text'\r\n}\r\n\r\nexport default Input\r\n\r\nfunction isEmptyValue(value) {\r\n\treturn value === undefined || value === null\r\n}"],"file":"Input.js"}