| {"version":3,"sources":["crud/User.jsx","crud/Logger.jsx","tools/utils.js","crud/UsersCRUD.jsx","App.js","reportWebVitals.js","index.js"],"names":["DEFAULT_USER","id","name","email","username","password","User","React","_ref","user","onUpdate","onDelete","localUser","setUser","wasEdited","setWasEdited","onChange","_ref2","target","value","prev","[object Object]","updateUser","deleteUser","Tr","key","className","Td","type","disabled","onClick","Logger","memo","lines","createElement","map","index","line","isError","AXIOS_CONFIG","headers","Content-Type","createRequest","action","axios","post","window","__API_URL__","getAPIParams","task","then","data","makeAxiosRequest","create","update","delete","readall","Date","prototype","timeNow","this","getHours","getMinutes","getSeconds","CrudTable","includeHeader","children","Table","Thead","Th","Tbody","UsersCRUD","users","setUsers","useState","addLogLine","useLines","setLines","useCallback","arguments","length","undefined","concat","slice","useEffect","async","u","e","filter","renderedUsers","useMemo","App","reportWebVitals","onPerfEntry","Function","__webpack_require__","bind","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","createRoot","document","getElementById","render"],"mappings":"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","file":"static/js/main.dc560686.chunk.js","sourcesContent":["import * as React from \"react\";\nimport { Tr, Td } from 'react-super-responsive-table';\nimport 'react-super-responsive-table/dist/SuperResponsiveTableStyle.css';\n\nexport const DEFAULT_USER = {\n  id: \"\",\n  name: \"\",\n  email: \"\",\n  username: \"\",\n  password: \"\",\n};\n\nexport const User = React.memo(({ user, onUpdate, onDelete }) => {\n  const [localUser, setUser] = React.useState({ ...user });\n  const [wasEdited, setWasEdited] = React.useState(false);\n\n  React.useEffect(() => {\n    setUser({ ...user });\n  }, [user]);\n\n  const onChange = React.useCallback(({ target: { value, name } }) => {\n    setWasEdited(true);\n    setUser((prev) => ({ ...prev, [name]: value }));\n  }, []);\n\n  const updateUser = React.useCallback(() => {\n    onUpdate(localUser);\n    setWasEdited(false);\n    if (!user.id) {\n      setUser(DEFAULT_USER);\n    }\n  }, [onUpdate, localUser, user.id]);\n\n  const deleteUser = React.useCallback(() => {\n    onDelete(localUser);\n  }, [localUser, onDelete]);\n\n  return (\n    \n    <Tr\n      key={user.id || \"createUser\"}\n      className={wasEdited && user.id ? \"edited\" : \"\"}\n    >\n      {user.id ? <Td>{localUser.id}</Td> : <Td>New user</Td>}\n      <Td>\n        <input\n          type=\"text\"\n          name=\"name\"\n          value={localUser.name}\n          onChange={onChange}\n        />\n      </Td>\n      <Td>\n        <input\n          type=\"text\"\n          name=\"email\"\n          value={localUser.email}\n          onChange={onChange}\n        />\n      </Td>\n      <Td>\n        <input\n          type=\"text\"\n          name=\"username\"\n          value={localUser.username}\n          onChange={onChange}\n        />\n      </Td>\n      <Td>\n        <input\n          type=\"password\"\n          name=\"password\"\n          value={localUser.password}\n          onChange={onChange}\n        />\n      </Td>\n      {user.id && (\n        <Td>\n          <button disabled={!wasEdited ? \"disabled\" : \"\"} onClick={updateUser}>\n            Update\n          </button>\n          <button onClick={deleteUser}>Delete</button>\n        </Td>\n      )}\n      {!user.id && (\n        <Td>\n          <button disabled={!wasEdited ? \"disabled\" : \"\"} onClick={updateUser}>\n            Create\n          </button>\n        </Td>\n      )}\n    </Tr>\n      \n  );\n});\n","import React from \"react\";\n\nconst LOGGER_LINES_LENGTH = 10;\n\nexport const useLines = () => {\n  const [lines, setLines] = React.useState([]);\n  const addLogLine = React.useCallback(\n    (line, isError = false) =>\n      setLines((lines) =>\n        [...lines, { line: `${new Date().timeNow()} ${line}`, isError }].slice(\n          -LOGGER_LINES_LENGTH\n        )\n      ),\n    []\n  );\n  return { lines, addLogLine };\n};\n\nexport const Logger = React.memo(({ lines }) => {\n  return (\n    <ul>\n      {lines.map(({ line, isError }, index) => (\n        <li key={index} className={isError ? \"error\" : \"\"}>\n          <code>{line}</code>\n        </li>\n      ))}\n    </ul>\n  );\n});\n","/*\n *   Copyright (c) 2024 BitsHost\n *   All rights reserved.\n\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\n\nimport axios from 'axios';\n//import { axios } from \"./axios-mock\";\n\nexport const getAPIParams = (user, action) => {\n  switch (action) {\n    case \"create\":\n      return {\n        task: \"create\",\n        name: user[\"name\"],\n        email: user[\"email\"],\n        username: user[\"username\"],\n        password: user[\"password\"],\n      };\n    case \"update\":\n      return {\n        task: \"update\",\n        id: user[\"id\"],\n        name: user[\"name\"],\n        email: user[\"email\"],\n        username: user[\"username\"],\n        password: user[\"password\"],\n      };\n    case \"delete\":\n      return {\n        task: \"delete\",\n        id: user[\"id\"],\n      };\n    case \"readall\":\n      return {\n        task: \"readall\",\n      };\n    default:\n      return {\n        task: \"readall\",\n      };\n  }\n};\n\nexport const AXIOS_CONFIG = {\n  headers: {\n    \"Content-Type\": \"application/x-www-form-urlencoded\",\n  },\n};\n\nconst createRequest = (user, action) =>\n  axios\n    .post(window.__API_URL__, getAPIParams(user, action), AXIOS_CONFIG)\n    .then(({ data }) => data);\n\nexport const makeAxiosRequest = (user) => ({\n  create: () => createRequest(user, \"create\"),\n  update: () => createRequest(user, \"update\"),\n  delete: () => createRequest(user, \"delete\"),\n  readall: () => createRequest(user, \"readall\"),\n});\n\n\nDate.prototype.timeNow = function () {\n  return (\n    (this.getHours() < 10 ? \"0\" : \"\") +\n    this.getHours() +\n    \":\" +\n    (this.getMinutes() < 10 ? \"0\" : \"\") +\n    this.getMinutes() +\n    \":\" +\n    (this.getSeconds() < 10 ? \"0\" : \"\") +\n    this.getSeconds()\n  );\n \n};\n ","import React, { useEffect } from \"react\";\r\nimport { User, DEFAULT_USER } from \"./User\";\r\nimport { Logger, useLines } from \"./Logger\";\r\nimport { makeAxiosRequest } from \"../tools/utils\";\r\n//import Table  from 'react-bootstrap/Table';\r\n//import { Table } from 'react-bootstrap';\r\nimport { Table, Thead, Tbody, Tr, Th } from 'react-super-responsive-table';\r\nimport 'react-super-responsive-table/dist/SuperResponsiveTableStyle.css';\r\n\r\nconst UsersCRUD = () => {\r\n  const [users, setUsers] = React.useState([]);\r\n  const { lines, addLogLine } = useLines();\r\n\r\n  useEffect(() => {\r\n    makeAxiosRequest({})\r\n      .readall()\r\n      .then((users) => {\r\n        setUsers(users);\r\n        addLogLine(`Read ${users.length} users`);\r\n      });\r\n  }, [addLogLine]);\r\n\r\n  const onUpdate = React.useCallback(\r\n    async (user) => {\r\n      if (user.id) {\r\n        try {\r\n          user = await makeAxiosRequest(user).update();\r\n          setUsers((users) => users.map((u) => (u.id === user.id ? user : u)));\r\n          addLogLine(`Updated user ${user.id}`);\r\n        } catch (e) {\r\n          setUsers((users) =>\r\n            users.map((u) => (u.id === user.id ? { ...u } : u))\r\n          );\r\n          addLogLine(`Error updating user ${user.id}`, true);\r\n        }\r\n      } else {\r\n        user = await makeAxiosRequest(user).create();\r\n        setUsers((users) => [...users, user]);\r\n        addLogLine(`Created user ${user.id}`);\r\n      }\r\n    },\r\n    [addLogLine]\r\n  );\r\n\r\n  const onDelete = React.useCallback(\r\n    async (user) => {\r\n      user = await makeAxiosRequest(user).delete();\r\n      setUsers((users) => users.filter((u) => u.id !== user.id));\r\n      addLogLine(`Deleted user ${user.id}`);\r\n    },\r\n    [addLogLine]\r\n  );\r\n\r\n  const renderedUsers = React.useMemo(\r\n    () =>\r\n      users.map((user) => (\r\n        <User\r\n          user={user}\r\n          key={user.id}\r\n          onUpdate={onUpdate}\r\n          onDelete={onDelete}\r\n        />\r\n      )),\r\n    [users, onUpdate, onDelete]\r\n  );\r\n\r\n  return (\r\n    <div className=\"container\">\r\n      <div className=\"crud\">\r\n        <CrudTable>\r\n          <User user={DEFAULT_USER} onUpdate={onUpdate}></User>\r\n        </CrudTable>\r\n        <CrudTable includeHeader={true}>{renderedUsers}</CrudTable>\r\n        <div className=\"logger\">\r\n          <Logger lines={lines}></Logger>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n  );\r\n};\r\n\r\nconst CrudTable = ({ includeHeader, children }) => (\r\n\r\n  <div>\r\n    <Table className=\"user-table\">\r\n\r\n      {includeHeader && (\r\n        <Thead>\r\n          <Tr>\r\n            <Th>ID</Th>\r\n            <Th>Name</Th>\r\n            <Th>Email</Th>\r\n            <Th>Username</Th>\r\n            <Th>Password</Th>\r\n            <Th>Actions</Th>\r\n          </Tr>\r\n        </Thead>\r\n      )}\r\n      <Tbody>{children}</Tbody>\r\n    </Table>\r\n  </div>\r\n\r\n);\r\n\r\nexport default UsersCRUD;\r\n","/*\n *   Copyright (c) 2024\n *   All rights reserved.\n\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\n\nimport React from 'react';\n//import Instructions from './Instructions.js';\n//import Button from './Button.js';\n//import Gallery from './Gallery';\n//import Form from './Form.js';\n//import MyForm from './Forma.js';\n//import CRUDComponent from './Crud.js';\n//import UserCrudComponent from './Crudn.js';\nimport UsersCRUD from \"./crud/UsersCRUD\";\nimport './App.css';\n\nwindow.__API_URL__ = \"http://localhost/upMVC-DEV/apiUsers\";\n\n\nfunction App() {\n // const greeting = \"greeting\";\n  const displayAction = false;\n  return (\n    <div >\n      {displayAction && <p>I am writing JSX</p>}\n    <div> <UsersCRUD /></div>\n    </div>\n  )\n}\n\nexport default App;","const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","/*\n *   Copyright (c) 2024 \n *   All rights reserved.\n\n *   Permission is hereby granted, free of charge, to any person obtaining a copy\n *   of this software and associated documentation files (the \"Software\"), to deal\n *   in the Software without restriction, including without limitation the rights\n *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *   copies of the Software, and to permit persons to whom the Software is\n *   furnished to do so, subject to the following conditions:\n\n *   The above copyright notice and this permission notice shall be included in all\n *   copies or substantial portions of the Software.\n\n *   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *   SOFTWARE.\n */\n\n\nimport React from 'react';\nimport ReactDOM from 'react-dom/client';\n//import './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  //<React.StrictMode>\n    <App />\n // </React.StrictMode>\n);\n\n\nreportWebVitals();\n"],"sourceRoot":""}
 |