App.tsx 1018 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { ChangeEventHandler, useState } from 'react'
  2. import './App.css'
  3. function replaceImport(str: string): string {
  4. const regex = /import {[\s\n]*([^}]+)[\s\n]*} from 'reactstrap';/;
  5. return str.replace(regex, (_match, group: string) => {
  6. const modules = group
  7. .split(',')
  8. .map(mod => mod.trim())
  9. .filter(mod => mod.length > 0)
  10. return modules.map((mod) => {
  11. return `import ${mod} from 'reactstrap/es/${mod}';`
  12. }).join('\n')
  13. });
  14. }
  15. function App() {
  16. const [output, setOutput] = useState('');
  17. const changeHandler: ChangeEventHandler<HTMLTextAreaElement> = (e): void => {
  18. const { value } = e.target;
  19. const replacedValue = replaceImport(value);
  20. setOutput(replacedValue);
  21. }
  22. return (
  23. <>
  24. <h1>Input</h1>
  25. <div className="card">
  26. <textarea rows={5} onChange={changeHandler} />
  27. </div>
  28. <h1>Output</h1>
  29. <div className="card">
  30. <textarea rows={5} value={output} />
  31. </div>
  32. </>
  33. )
  34. }
  35. export default App