{"version":3,"sources":["AppTopBar.jsx","api/imageApi.jsx","constants.js","PublicPhotosComponent/PublicPhotosComponent.jsx","StatsComponent/StatsComponent.jsx","UploadPhotoModal/UploadPhotoModal.jsx","App.jsx","reportWebVitals.js","index.jsx"],"names":["AppTopBar","props","Box","sx","flexGrow","AppBar","position","Toolbar","variant","Tooltip","title","IconButton","edge","color","mr","onClick","window","location","replace","OnUploadClick","Typography","component","children","api","axios","create","getPublicPhotoIds","a","get","res","data","uploadPhoto","formData","token","post","baseURL","Gallery","useState","photoLinks","setPhotoLinks","useEffect","then","photoIds","map","photoId","style","marginLeft","marginRight","marginTop","image","index","src","loading","alt","width","height","StatsComponent","page","setPage","rowsPerPage","setRowsPerPage","tableContent","setTableContent","tableHeaders","setTableHeaders","useParams","uploadAdminData","adminData","columns","id","Object","keys","label","values","minWidth","align","Fragment","Paper","overflow","TableContainer","maxHeight","Table","stickyHeader","TableHead","TableRow","column","TableCell","TableBody","slice","row","_index","hover","role","tabIndex","value","format","TablePagination","rowsPerPageOptions","count","length","onPageChange","event","newPage","onRowsPerPageChange","target","UploadPhotoModal","file","setFile","linkToFile","setLinkToFile","isUploadDisabled","setIsUploadDisabled","photoUploadedUrl","setPhotoUploadedUrl","uploadResultTitle","setUploadResultTitle","href","split","pop","handleUpload","FormData","append","uploadedPhotoGuid","resultTitle","Input","styled","display","Dialog","open","isVisible","onClose","SetModalStatus","DialogTitle","DialogContent","minHeight","DialogContentText","trim","CardMedia","DialogActions","htmlFor","type","onChange","e","URL","createObjectURL","files","Button","disabled","flexDirection","copy","marginBottom","paddingLeft","App","showUploadModal","path","element","val","isPublicPage","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.f6c4c9d6.chunk.js","sourcesContent":["import * as React from \"react\";\r\nimport AppBar from \"@mui/material/AppBar\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Toolbar from \"@mui/material/Toolbar\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport UploadIcon from \"@mui/icons-material/Upload\";\r\nimport HomeIcon from \"@mui/icons-material/Home\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\n\r\nexport default function AppTopBar(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n window.location.replace(\"/\");\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Фотографии\r\n \r\n \r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n","import axios from \"axios\";\r\n\r\nconst api = axios.create();\r\n\r\n// interface IUploadPhotoData {\r\n// uploadedPhotoGuid: string;\r\n// resultTitle: string;\r\n// }\r\n\r\nexport const getPublicPhotoIds = async () => {\r\n var res = await api.get(\"photo/refs\");\r\n return res.data;\r\n};\r\n\r\nexport const uploadPhoto = async (formData, token) => {\r\n return await api.post(\r\n `photo/upload${token ? `?token=${token}` : ''}`,\r\n formData\r\n );\r\n};\r\n","export const baseURL = \"http://photosharing.ru\"","import { getPublicPhotoIds } from \"../api/imageApi\";\r\nimport { useState, useEffect } from \"react\";\r\nimport { baseURL } from \"../constants\";\r\nimport React from \"react\";\r\n\r\nexport default function Gallery() {\r\n const [photoLinks, setPhotoLinks] = useState([]);\r\n useEffect(() => {\r\n getPublicPhotoIds().then((photoIds) =>\r\n setPhotoLinks(photoIds.map((photoId) => `${baseURL}/photo/${photoId}`))\r\n );\r\n }, []);\r\n return (\r\n
\r\n {photoLinks.map((image, index) => (\r\n \r\n ))}\r\n
\r\n );\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TablePagination from \"@mui/material/TablePagination\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport axios from \"axios\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport React from \"react\";\r\n\r\nexport default function StatsComponent() {\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [tableContent, setTableContent] = useState([{}]);\r\n const [tableHeaders, setTableHeaders] = useState({});\r\n const token = useParams().token;\r\n\r\n useEffect(() => {\r\n uploadAdminData().then((adminData) => {\r\n setTableContent(adminData.data.data);\r\n setTableHeaders(adminData.data.tableHeaders);\r\n });\r\n }, []);\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (\r\n event\r\n ) => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n };\r\n\r\n const uploadAdminData = async () => {\r\n return await axios.get(\r\n `getall?token=${token}`\r\n );\r\n };\r\n\r\n var columns = [\r\n {\r\n id: Object.keys(tableHeaders)[0],\r\n label: Object.values(tableHeaders)[0],\r\n minWidth: 170,\r\n },\r\n {\r\n id: Object.keys(tableHeaders)[1],\r\n label: Object.values(tableHeaders)[1],\r\n minWidth: 100,\r\n },\r\n {\r\n id: Object.keys(tableHeaders)[2],\r\n label: Object.values(tableHeaders)[2],\r\n minWidth: 170,\r\n align: \"right\",\r\n },\r\n {\r\n id: Object.keys(tableHeaders)[3],\r\n label: Object.values(tableHeaders)[3],\r\n minWidth: 170,\r\n align: \"right\",\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {columns.map((column) => (\r\n \r\n {column.label}\r\n \r\n ))}\r\n \r\n \r\n \r\n {tableContent\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map((row, _index) => {\r\n return (\r\n \r\n {columns.map((column) => {\r\n const value = row[column.id];\r\n return (\r\n \r\n {column.format && typeof value === \"number\"\r\n ? column.format(value)\r\n : value}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n );\r\n}\r\n","import { CardMedia, IconButton, Box } from \"@mui/material\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { useState, useEffect } from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport { uploadPhoto } from \"../api/imageApi\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogContentText from \"@mui/material/DialogContentText\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport React from \"react\";\r\nimport copy from \"copy-to-clipboard\";\r\nimport ContentCopyIcon from \"@mui/icons-material/ContentCopy\";\r\nimport { baseURL } from \"../constants\";\r\n\r\nexport default function UploadPhotoModal(props) {\r\n const [file, setFile] = useState(\"\");\r\n const [linkToFile, setLinkToFile] = useState(\"\");\r\n const [isUploadDisabled, setIsUploadDisabled] = useState(true);\r\n const [photoUploadedUrl, setPhotoUploadedUrl] = useState(\"\");\r\n const [uploadResultTitle, setUploadResultTitle] = useState(\"\");\r\n\r\n const token = window.location.href.split(\"/\").pop();\r\n\r\n const resetModal = () => {\r\n props.SetModalStatus(false);\r\n setIsUploadDisabled(true);\r\n setFile(\"\");\r\n setLinkToFile(\"\");\r\n setPhotoUploadedUrl(\"\");\r\n };\r\n\r\n const handleChoosePhoto = (e) => {\r\n let linkToFile = URL.createObjectURL(e.target.files[0]);\r\n setFile(e.target.files[0]);\r\n setLinkToFile(linkToFile);\r\n setIsUploadDisabled(false);\r\n };\r\n const handleUpload = async () => {\r\n const formData = new FormData();\r\n formData.append(\"photo\", file, file);\r\n uploadPhoto(formData, token).then((res) => {\r\n setPhotoUploadedUrl(`${baseURL}/photo/${res.data.uploadedPhotoGuid}`);\r\n setUploadResultTitle(res.data.resultTitle);\r\n });\r\n };\r\n\r\n const Input = styled(\"input\")({\r\n display: \"none\",\r\n });\r\n\r\n useEffect(() => {}, []);\r\n return (\r\n resetModal()}>\r\n {photoUploadedUrl.length === 0 && (\r\n \r\n Новая фотография\r\n \r\n \r\n \r\n {linkToFile.trim().length > 0 && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {photoUploadedUrl.length > 0 && (\r\n \r\n \r\n copy(photoUploadedUrl)}\r\n style={{ marginRight: \"3%\", marginLeft: \"auto\" }}\r\n >\r\n \r\n \r\n {uploadResultTitle}\r\n \r\n \r\n {photoUploadedUrl}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import \"./App.css\";\nimport AppTopBar from \"./AppTopBar\";\nimport PublicPhotosComponent from \"./PublicPhotosComponent/PublicPhotosComponent\";\nimport { useState } from \"react\";\nimport StatsComponent from \"./StatsComponent/StatsComponent\";\nimport { BrowserRouter as Router, Route, Routes } from \"react-router-dom\";\nimport React from \"react\";\nimport UploadPhotoModal from \"./UploadPhotoModal/UploadPhotoModal\";\n\nfunction App() {\n const [showUploadModal, OnUploadClick] = useState(false);\n return (\n \n \n OnUploadClick(!showUploadModal)}>\n \n } />\n } />\n \n \n OnUploadClick(val)}\n isPublicPage={true}\n />\n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst 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","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}