{"version":3,"sources":["store/api.js","store/memes.js","store/users.js","store/entities.js","store/reducer.js","store/middleware/api.js","store/middleware/toast.js","components/Meme.jsx","components/MemeList.jsx","images/originals/pingvini1.jpg","images/originals/pingvini2.jpg","images/originals/jdoba.jpg","images/originals/stiklici.jpg","images/podcast.jpg","pages/HomePage.jsx","pages/SignUpPage.jsx","pages/LoginPage.jsx","images/photo-video.svg","pages/SubmitPage.jsx","pages/MemePage.jsx","images/wv-logo.png","components/Header.jsx","images/wv-logo-text.png","components/Footer.jsx","App.js","store/configureStore.js","reportWebVitals.js","index.js"],"names":["apiCallBegan","createAction","apiCallSuccess","apiCallFailed","slice","createSlice","name","initialState","list","selectedMeme","loading","hasMore","lastMemeId","reducers","memesLoadingStart","state","action","memesLoadingEnd","selectedMemeReceived","payload","memesReceived","memes","memesReceivedMore","memeCreated","memesReceivedRandom","actions","loadMemes","dispatch","url","onStart","type","onSuccess","onError","currentUser","loadingStart","loadingEnd","loginSuccess","signUpSuccess","signOutSuccess","setAuthToken","createSelector","entities","users","token","rememberMe","axios","headers","common","sessionStorage","setItem","localStorage","combineReducers","memesReducer","usersReducer","entitiesReducer","api","_ref","next","async","dispatchAll","Array","isArray","i","length","method","data","request","baseURL","then","response","catch","error","errorPayload","status","toast","store","message","toastify","dismiss","position","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","progress","undefined","theme","Meme","props","playContent","setPlayContent","useState","moment","locale","meme","_jsxs","className","children","sensitiveContent","format","_jsx","cover","_Fragment","controls","autoPlay","playsInline","src","content","onClick","alt","description","avatar","username","utc","dateCreated","local","fromNow","MemeList","orderBy","setOrderBy","useDispatch","useSelector","useEffect","orderByLatestClicked","orderByRandomClicked","console","log","map","id","loadMoreMemesClicked","arguments","loadMoreMemes","HomePage","style","maxWidth","Row","Col","sm","href","target","rel","PodcastBanner","width","marginBottom","Link","to","OriginalsPingvini","OriginalsPingvini2","OriginalsJebenoDoba","OriginalsStiklici","HomePageRoute","SignUpPage","_errors$username","_errors$email","passwordVisible","setPasswordVisible","passwordHasMinLength","setPasswordHasMinLength","passwordContainsUppercase","setPasswordContainsUppercase","passwordContainsLowercase","setPasswordContainsLowercase","passwordContainsNumber","setPasswordContainsNumber","passwordContainsSpecialChar","setPasswordContainsSpecialChar","navigate","useNavigate","validation","yup","required","email","password","min","register","handleSubmit","formState","errors","useForm","resolver","yupResolver","Container","LoginPageRoute","Form","onSubmit","signUp","confirmPassword","FloatingLabel","controlId","label","Control","autoFocus","placeholder","Text","InputGroup","onChange","e","value","containsNumber","test","containsLowercase","toUpperCase","containsUppercase","toLowerCase","specialChars","specialCharFound","forEach","c","includes","Button","variant","onTogglePasswordVisible","disabled","SignUpPageRoute","LoginPage","_errors$usernameOrEma","_errors$password","usernameOrEmail","getValues","login","Check","size","SubmitPage","_errors$description","progressVisible","setProgressVisible","mediaContainerVisible","setMediaContainerVisible","setProgress","dragActive","setDragActive","mediaContainerId","setMediaContainerId","mediaContainerFormat","setMediaContainerFormat","hiddenFileInput","React","useRef","handleDrag","preventDefault","stopPropagation","upload","file","formData","FormData","append","onUploadProgress","progressEvent","Math","floor","loaded","total","success","_errorPayload$data","startsWith","onDragEnter","onDragLeave","onDragOver","onDrop","dataTransfer","files","PhotoVideoIcon","event","current","click","ref","display","ProgressBar","animated","now","Group","SubmitPageRoute","MemePage","searchParams","useSearchParams","memeId","get","str","code","len","charCodeAt","isValidMemeId","loadMeme","md","Header","Navbar","bg","expand","Brand","WVLogo","height","Toggle","Collapse","Nav","window","location","Item","onSignOut","Footer","setLocale","mixed","default","string","max","configureStore","reducer","middleware","getDefaultMiddleware","authToken","getItem","App","Provider","BrowserRouter","Routes","Route","path","element","exact","ToastContainer","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.86a20c37.chunk.js","sourcesContent":["import { createAction } from \"@reduxjs/toolkit\";\n\nexport const apiCallBegan = createAction(\"api/callBegan\");\nexport const apiCallSuccess = createAction(\"api/callSuccess\");\nexport const apiCallFailed = createAction(\"api/callFailed\");\n","\n// import { useSelector } from \"react-redux\";\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport { apiCallBegan } from \"./api\";\n\nconst slice = createSlice({\n name: \"memes\", // Entity name\n initialState: {\n list: [],\n selectedMeme: null,\n loading: false,\n hasMore: false,\n lastMemeId: null,\n },\n reducers: { // Event Handlers\n memesLoadingStart: (state, action) => {\n state.loading = true;\n },\n\n memesLoadingEnd: (state, action) => {\n state.loading = false;\n },\n\n selectedMemeReceived: (state, action) => {\n state.selectedMeme = action.payload;\n state.loading = false;\n },\n\n memesReceived: (state, action) => {\n state.list = action.payload.memes;\n state.hasMore = action.payload.hasMore;\n state.lastMemeId = action.payload.lastMemeId;\n state.loading = false;\n },\n\n memesReceivedMore: (state, action) => {\n state.list = [...state.list, ...action.payload.memes];\n state.hasMore = action.payload.hasMore;\n state.lastMemeId = action.payload.lastMemeId;\n state.loading = false;\n },\n\n memeCreated: (state, action) => {\n state.loading = false;\n },\n\n memesReceivedRandom: (state, action) => {\n state.list = action.payload.memes;\n state.hasMore = true;\n state.lastMemeId = 'random';\n state.loading = false;\n }\n }\n});\n\nexport const {\n memesLoadingStart,\n memesLoadingEnd,\n selectedMemeReceived,\n memesReceived,\n memesReceivedMore,\n memeCreated,\n memesReceivedRandom,\n} = slice.actions;\nexport default slice.reducer;\n\n// Action Creators (Events)\n\nexport const loadMemes = () => (dispatch) => {\n return dispatch(\n apiCallBegan({\n url: \"/memes\",\n onStart: memesLoadingStart.type,\n onSuccess: memesReceived.type,\n onError: memesLoadingEnd.type\n })\n );\n};\n\nexport const loadMoreMemes = (lastMemeId = \"\") => (dispatch) => {\n console.log(\"load more\");\n return dispatch(\n apiCallBegan({\n url: \"/memes?lastMemeId=\" + lastMemeId,\n onStart: memesLoadingStart.type,\n onSuccess: memesReceivedMore.type,\n onError: memesLoadingEnd.type\n })\n );\n};\n\nexport const loadRandomMemes = () => (dispatch) => {\n console.log(\"load random\");\n return dispatch(\n apiCallBegan({\n url: \"/memes?lastMemeId=random\",\n onStart: memesLoadingStart.type,\n onSuccess: memesReceivedRandom.type,\n onError: memesLoadingEnd.type\n })\n );\n}\n\nexport const loadMeme = (memeId) => (dispatch) => {\n return dispatch(\n apiCallBegan({\n url: \"/memes/\" + memeId,\n onStart: memesLoadingStart.type,\n onSuccess: selectedMemeReceived.type,\n onError: memesLoadingEnd.type\n })\n );\n};\n\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { createSelector } from \"reselect\";\nimport { apiCallBegan } from \"./api\";\nimport * as axios from 'axios';\n\nconst slice = createSlice({\n name: \"users\", // Entity name\n initialState: {\n currentUser: null,\n loading: false\n },\n reducers: { // Event Handlers\n loadingStart: (state, action) => {\n state.loading = true;\n },\n\n loadingEnd: (state, action) => {\n state.loading = false;\n },\n\n loginSuccess: (state, action) => {\n state.currentUser = action.payload;\n state.loading = false;\n },\n\n signUpSuccess: (state, action) => {\n state.currentUser = action.payload;\n state.loading = false;\n },\n\n signOutSuccess: (state, action) => {\n setAuthToken('', false);\n \n state.currentUser = null;\n state.loading = false;\n },\n }\n});\n\nexport const {\n loadingStart,\n loadingEnd,\n loginSuccess,\n signUpSuccess,\n signOutSuccess,\n} = slice.actions;\nexport default slice.reducer;\n\n// Action Creators (Events)\n\nexport const getCurrentUser = createSelector(\n state => state.entities.users,\n users => users.currentUser\n);\n\nexport const login = (usernameOrEmail, password) => (dispatch) => {\n return dispatch(\n apiCallBegan({\n url: \"/users/signin\",\n method: \"POST\",\n data: {\n username: usernameOrEmail,\n password: password,\n },\n onStart: loadingStart.type,\n onSuccess: loginSuccess.type,\n onError: loadingEnd.type\n })\n );\n};\n\nexport const signUp = (username, email, password) => (dispatch) => {\n return dispatch(\n apiCallBegan({\n url: \"/users/signup\",\n method: \"POST\",\n data: {\n username: username,\n email: email,\n password: password,\n confirmPassword: password\n },\n onStart: loadingStart.type,\n onSuccess: signUpSuccess.type,\n onError: loadingEnd.type\n })\n );\n}\n\nexport const signOut = () => (dispatch) => {\n return dispatch(\n apiCallBegan({\n url: \"/users/signout\",\n method: \"POST\",\n data: null,\n onStart: loadingStart.type,\n onSuccess: signOutSuccess.type,\n onError: loadingEnd.type\n })\n );\n}\n\nexport const setAuthToken = (token, rememberMe) => {\n axios.defaults.headers.common['Authorization'] = (token === null || token === '') ? '' : 'Bearer ' + token;\n\n sessionStorage.setItem('authToken', token);\n\n if (rememberMe) {\n localStorage.setItem('authToken', token);\n } else {\n localStorage.setItem('authToken', '');\n }\n};","import { combineReducers } from \"redux\";\nimport memesReducer from \"./memes\";\nimport usersReducer from \"./users\";\n\nexport default combineReducers({\n memes: memesReducer,\n users: usersReducer,\n});\n","import { combineReducers } from \"redux\";\nimport entitiesReducer from \"./entities\";\n\nexport default combineReducers({\n entities: entitiesReducer\n});\n","import axios from \"axios\";\nimport * as actions from \"../api\";\n\nconst api = ({ dispatch }) => next => async action => {\n \n if (action.type !== actions.apiCallBegan.type) return next(action);\n\n\n const dispatchAll = (reducers, payload) => {\n if (Array.isArray(reducers)) {\n for (var i = 0; i < reducers.length; i++) {\n dispatch({ type: reducers[i], payload });\n }\n } else {\n dispatch({ type: reducers, payload });\n }\n }\n\n const { url, method, data, onStart, onSuccess, onError } = action.payload;\n\n if (onStart) {\n dispatchAll(onStart);\n }\n\n await axios.request({\n baseURL: \"https://api.wrbavorks.com/v1\",\n url,\n method,\n data\n }).then(function (response) {\n // General\n dispatch(actions.apiCallSuccess(response.data));\n // Specific\n if (onSuccess) {\n dispatchAll(onSuccess, response.data);\n }\n }).catch(function (error) {\n const errorPayload = error.response ? { status: error.response.status, data: error.response.data } : { status: null, data: null };\n // General\n dispatch(actions.apiCallFailed(errorPayload));\n // Specific\n if (onError) {\n dispatchAll(onError, errorPayload);\n }\n });\n\n next(action);\n};\n\nexport default api;\n","import { toast as toastify } from 'react-toastify';\nimport * as actions from \"../api\";\n\nconst toast = store => next => action => {\n if (action.type === actions.apiCallFailed.type && action.payload && action.payload.data && action.payload.data.message) {\n toastify.dismiss();\n toastify.error(action.payload.data.message, {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\"\n });\n }\n \n return next(action);\n};\n\nexport default toast;\n","import React, { useState } from \"react\";\nimport moment from 'moment';\nimport 'moment/locale/hr';\n\nconst Meme = (props) => {\n const [playContent, setPlayContent] = useState(false);\n moment().locale('hr');\n\n var meme = props.meme;\n\n return (\n
\n {meme.sensitiveContent && (🫣 {meme.format === 'video/mp4' ? 'EKSPLICITNI VIDEO' : 'EKSPLICITNA SLIKA'})}\n
\n {meme.cover != null ? (\n <>\n {playContent ? (\n <>\n {meme.format === 'video/mp4' && (\n \n )}\n \n ) : (\n
setPlayContent(true)}>\n \"\"\n
\n )}\n \n ) : (\n <>\n {meme.sensitiveContent && !playContent ? (\n
setPlayContent(true)}>\n \"\"\n
\n ) : (\n \"\"\n )}\n \n )}\n
\n {meme.description && {meme.description}}\n
\n \"\"\n {meme.username}\n {moment.utc(meme.dateCreated, \"YYYY-MM-DDTHH:mm:ss\").local().fromNow()}\n
\n
\n );\n};\n\nexport default Meme;","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { loadMemes, loadMoreMemes, loadRandomMemes } from \"../store/memes\";\nimport moment from 'moment';\nimport 'moment/locale/hr';\nimport Meme from \"./Meme\";\n\nexport const MemeList = (props) => {\n const [orderBy, setOrderBy] = useState('latest');\n const dispatch = useDispatch();\n moment().locale('hr');\n\n const memes = useSelector(state => state.entities.memes);\n \n useEffect(() => {\n dispatch(loadMemes());\n }, [dispatch]);\n\n const loadMoreMemesClicked = () => {\n dispatch(loadMoreMemes(orderBy === 'random' ? 'random' : memes.lastMemeId));\n }\n\n const orderByLatestClicked = () => {\n setOrderBy('latest');\n dispatch(loadMemes());\n }\n\n const orderByRandomClicked = () => {\n setOrderBy('random');\n dispatch(loadRandomMemes());\n }\n\n return (\n <>\n
\n Poredaj po:\n \n \n
\n {memes.list.map((meme) => (\n \n ))}\n {memes.loading && (
Učitavanje...
)}\n {memes.hasMore && (\n \n )}\n \n );\n};\n","export default __webpack_public_path__ + \"static/media/pingvini1.32c95ef1.jpg\";","export default __webpack_public_path__ + \"static/media/pingvini2.df58aef2.jpg\";","export default __webpack_public_path__ + \"static/media/jdoba.3cb0595a.jpg\";","export default __webpack_public_path__ + \"static/media/stiklici.74d47f1a.jpg\";","export default __webpack_public_path__ + \"static/media/podcast.9c0707d8.jpg\";","import React from \"react\";\nimport { MemeList } from \"../components/MemeList\"\nimport { Link } from 'react-router-dom';\n\n// Bootstrap\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\n\nimport OriginalsPingvini from \"../images/originals/pingvini1.jpg\";\nimport OriginalsPingvini2 from \"../images/originals/pingvini2.jpg\";\nimport OriginalsJebenoDoba from \"../images/originals/jdoba.jpg\";\nimport OriginalsStiklici from \"../images/originals/stiklici.jpg\";\nimport PodcastBanner from \"../images/podcast.jpg\";\n\nexport const HomePage = () => {\n // const [memeType, setMemeType] = useState('all');\n\n return (\n
\n \n \n {/*
\n

Memovi

\n \n \n \n \n \n \n
*/}\n \n \n \n {/*
\n
\n Prati nas\n
\n
*/}\n \n \"\"\n \n
\n
\n WrbaVorks Originals\n
\n \n \"\"\n Pingvini sa Madagascara - Božićna avantura\n \n \n \"\"\n Pingvini sa Madagascara - Pingvini uzvraćaju udarac\n \n \n \"\"\n Jebeno doba\n \n \n \"\"\n Štiklići\n \n
\n \n
\n
\n );\n};\n\nexport const HomePageRoute = \"/\";\n","import React, { useEffect, useState } from \"react\";\nimport { Link } from 'react-router-dom';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from \"yup\";\nimport { useNavigate } from 'react-router-dom';\n\n// Bootstrap\nimport Form from 'react-bootstrap/Form';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Button from 'react-bootstrap/Button';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Container from 'react-bootstrap/Container';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\n\n// Actions\nimport { signUp, setAuthToken } from \"../store/users\";\n\n// Routes\nimport { HomePageRoute } from \"./HomePage\";\nimport { LoginPageRoute } from \"./LoginPage\";\n\nexport const SignUpPage = () => {\n const [passwordVisible, setPasswordVisible] = useState(false);\n const [passwordHasMinLength, setPasswordHasMinLength] = useState(false);\n const [passwordContainsUppercase, setPasswordContainsUppercase] = useState(false);\n const [passwordContainsLowercase, setPasswordContainsLowercase] = useState(false);\n const [passwordContainsNumber, setPasswordContainsNumber] = useState(false);\n const [passwordContainsSpecialChar, setPasswordContainsSpecialChar] = useState(false);\n\n const dispatch = useDispatch();\n var navigate = useNavigate();\n\n const users = useSelector(state => state.entities.users);\n\n const validation = yup.object({\n username: yup.string().required(),\n email: yup.string().email().required(),\n password: yup.string().required().min(8),\n }).required();\n\n const { register, handleSubmit, formState: { errors } } = useForm({\n resolver: yupResolver(validation)\n });\n\n const onSubmit = (data) => {\n dispatch(signUp(data.username, data.email, data.password));\n };\n\n const onTogglePasswordVisible = () => {\n setPasswordVisible(!passwordVisible);\n };\n\n const onPasswordChanged = (e) => {\n const { value } = e.target;\n\n const containsNumber = /\\d/.test(value);\n const containsLowercase = value.toUpperCase() !== value;\n const containsUppercase = value.toLowerCase() !== value;\n const specialChars = ['~', '!', '@', '#', '$', '%', '^', '&', '*', '_', '-', '+', '=', '`', '|', '\\\\', '(', ')', '{', '}', '[', ']', ':', ';', '\"', '\\'', '<', '>', ',', '.', '?', '/'];\n let specialCharFound = false;\n\n [...value].forEach(c => {\n if (specialChars.includes(c)) {\n specialCharFound = true;\n }\n });\n\n setPasswordContainsSpecialChar(specialCharFound);\n setPasswordContainsUppercase(containsUppercase);\n setPasswordContainsLowercase(containsLowercase);\n setPasswordContainsNumber(containsNumber);\n setPasswordHasMinLength(value.length >= 8);\n };\n\n useEffect(() => {\n if (users.currentUser) {\n setAuthToken(users.currentUser.token);\n navigate(HomePageRoute);\n }\n }, [users, navigate]);\n\n return (\n \n \n \n
\n
\n
\n

Registracija

\n
\n \n Već imaš korisnički račun?{' '}\n Prijavi se →\n \n
\n \n \n \n {errors.username?.message}\n {/* \n Email:\n \n {errors.email?.message}\n */}\n\n \n \n \n {errors.email?.message}\n {/* \n Email:\n \n {errors.email?.message}\n */}\n\n \n \n \n \n \n \n {/* \n Lozinka:\n \n \n \n \n {errors.password?.message}\n */}\n\n \n Minimalni zahtjevi lozinke:\n Mora sadržavati minimalno 8 znakova\n Mora sadržavati:\n Velika slova (A-Ž)\n Mala slova (a-ž)\n Brojeve (0-9)\n Posebne znakove:
({'~!@#$%^&*_-+=`|\\\\(){}[]:;\"\\'<>,.?/'})
\n
\n\n
\n \n
\n \n
\n
\n \n
\n
\n );\n};\n\nexport const SignUpPageRoute = \"/users/signup\";\n","import React, { useEffect } from \"react\";\nimport { Link } from 'react-router-dom';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from \"yup\";\nimport { useNavigate } from 'react-router-dom';\nimport { HomePageRoute } from \"./HomePage\";\n\n// Bootstrap\nimport Form from 'react-bootstrap/Form';\nimport Button from 'react-bootstrap/Button';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Container from 'react-bootstrap/Container';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\n\n// Actions\nimport { login, setAuthToken } from \"../store/users\";\n\n// Routes\nimport { SignUpPageRoute } from '../pages/SignUpPage';\n\nexport const LoginPage = () => {\n const dispatch = useDispatch();\n var navigate = useNavigate();\n\n const users = useSelector(state => state.entities.users);\n\n const validation = yup.object({\n usernameOrEmail: yup.string().required(),\n password: yup.string().required().min(8),\n }).required();\n\n const { register, getValues, handleSubmit, formState: { errors } } = useForm({\n resolver: yupResolver(validation)\n });\n\n const onSubmit = (data) => {\n dispatch(login(data.usernameOrEmail, data.password));\n };\n\n useEffect(() => {\n if (users.currentUser) {\n setAuthToken(users.currentUser.token, getValues(\"rememberMe\"));\n navigate(HomePageRoute);\n }\n }, [users, navigate, getValues]);\n\n return (\n \n \n \n
\n
\n
\n

Prijava

\n
\n \n Nemaš korisnički račun?{' '}\n Pridruži nam se →\n \n
\n \n \n \n {errors.usernameOrEmail?.message}\n {/* \n Korisničko ime ili email:\n \n {errors.usernameOrEmail?.message}\n */}\n\n \n \n \n {errors.password?.message}\n {/* \n Lozinka:\n \n {errors.password?.message}\n */}\n
\n \n
\n\n
\n \n
\n \n
\n
\n \n
\n
\n );\n};\n\nexport const LoginPageRoute = \"/users/login\";\n","export default __webpack_public_path__ + \"static/media/photo-video.0dc069dc.svg\";","import React, { useState, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useForm } from \"react-hook-form\";\nimport { useNavigate } from 'react-router-dom';\nimport axios from \"axios\";\nimport { toast as toastify } from 'react-toastify';\n\nimport PhotoVideoIcon from \"../images/photo-video.svg\";\n\n// Bootstrap\nimport Container from 'react-bootstrap/Container';\nimport ProgressBar from 'react-bootstrap/ProgressBar';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Form from 'react-bootstrap/Form';\nimport Button from 'react-bootstrap/Button';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\n\n// Routes\nimport { HomePageRoute } from './HomePage'\n\nexport const SubmitPage = () => {\n // const dispatch = useDispatch();\n const [progressVisible, setProgressVisible] = useState(false);\n const [mediaContainerVisible, setMediaContainerVisible] = useState(false);\n const [progress, setProgress] = useState(0);\n const [dragActive, setDragActive] = useState(false);\n const [mediaContainerId, setMediaContainerId] = useState('');\n const [mediaContainerFormat, setMediaContainerFormat] = useState('');\n\n const currentUser = useSelector(state => state.entities.users.currentUser);\n var navigate = useNavigate();\n const hiddenFileInput = React.useRef(null);\n\n\n useEffect(() => {\n if (!currentUser) {\n navigate(HomePageRoute)\n }\n }, [currentUser, navigate]);\n\n\n const { register, handleSubmit, formState: { errors } } = useForm({ });\n\n const onSubmit = (data) => {\n axios.request({\n url: \"https://api.wrbavorks.com/v1/memes\",\n method: \"POST\",\n data: {\n description: data.description,\n mediaContainerId: mediaContainerId,\n sensitiveContent: data.sensitiveContent\n }\n }).then(function (response) {\n if (response.status === 200) {\n toastify.dismiss();\n toastify.success(\"Tvoj meme je kreiran!\", {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\"\n });\n \n navigate(HomePageRoute);\n }\n }).catch(function (error) {\n const errorPayload = error.response ? { status: error.response.status, data: error.response.data } : { status: null, data: null };\n \n toastify.dismiss();\n toastify.error(errorPayload.data?.message, {\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"colored\"\n });\n });\n };\n\n const handleClick = event => {\n hiddenFileInput.current.click();\n };\n\n const handleFile = (e) => {\n if (e.target.files && e.target.files[0])\n {\n upload(e.target.files[0]);\n }\n }\n\n const handleDrag = function(e) {\n e.preventDefault();\n e.stopPropagation();\n if (e.type === \"dragenter\" || e.type === \"dragover\") {\n setDragActive(true);\n } else if (e.type === \"dragleave\") {\n setDragActive(false);\n }\n };\n\n const handleDrop = function(e) {\n e.preventDefault();\n e.stopPropagation();\n setDragActive(false);\n if (e.dataTransfer.files && e.dataTransfer.files[0]) {\n upload(e.dataTransfer.files[0]);\n }\n };\n\n const upload = (file) => {\n let formData = new FormData();\n formData.append(\"file\", file);\n\n setProgressVisible(true);\n\n axios.request({\n url: \"https://api.wrbavorks.com/v1/media-containers\",\n method: \"POST\",\n data: formData,\n headers: { \"Content-Type\": \"multipart/form-data\" },\n onUploadProgress: (progressEvent) => {\n setProgress(Math.floor((progressEvent.loaded / progressEvent.total) * 100));\n }\n }).then(function (response) {\n console.log('RESPONSE', response);\n\n if (response.data && response.data.mediaContainerId)\n {\n setMediaContainerId(response.data.mediaContainerId);\n setMediaContainerFormat(response.data.format);\n }\n\n setProgressVisible(false);\n setProgress(0);\n setMediaContainerVisible(true);\n // ...\n }).catch(function (error) {\n console.log('ERROR', error);\n setProgressVisible(false);\n setProgress(0);\n // ...\n });\n }\n\n return (\n \n \n \n
\n
\n
\n

Kreiraj novi meme

\n
\n
\n {mediaContainerVisible ? (\n
\n {\n mediaContainerFormat.startsWith('video') ?\n (\n <>\n \n \n )\n :\n (\n <>\n \"\"\n \n )\n }\n
\n ) : (\n
\n \n \"\"\n Odaberite sliku ili video za upload\n \n \n \n \n \n Podržavamo JPG, PNG, GIF, WEBP i MP4 datoteke\n \n
\n )}\n\n \n \n \n {errors.description?.message}\n\n \n \n \n
\n \n
\n \n
\n
\n \n
\n
\n );\n};\n\nexport const SubmitPageRoute = \"/submit\";\n","import React, { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { loadMeme } from \"../store/memes\";\nimport { Link, useSearchParams } from \"react-router-dom\";\n\n// Bootstrap\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\n\nimport OriginalsPingvini from \"../images/originals/pingvini1.jpg\";\nimport OriginalsPingvini2 from \"../images/originals/pingvini2.jpg\";\nimport OriginalsJebenoDoba from \"../images/originals/jdoba.jpg\";\nimport OriginalsStiklici from \"../images/originals/stiklici.jpg\";\nimport Meme from \"../components/Meme\";\n\nexport const MemePage = () => {\n const dispatch = useDispatch();\n const [searchParams] = useSearchParams();\n const memeId = searchParams.get(\"m\");\n\n const isValidMemeId = (str) => {\n if (str.length !== 26)\n return false;\n\n let code, i, len;\n \n for (i = 0, len = str.length; i < len; i++) {\n code = str.charCodeAt(i);\n if (!(code > 47 && code < 58) && // numeric (0-9)\n !(code > 96 && code < 123)) { // lower alpha (a-z)\n return false;\n }\n }\n return true;\n };\n\n const meme = useSelector(state => state.entities.memes.selectedMeme);\n const loading = useSelector(state => state.entities.memes.loading);\n \n useEffect(() => {\n if (!isValidMemeId(memeId))\n return (<>);\n\n dispatch(loadMeme(memeId));\n }, [dispatch, memeId]);\n\n return (\n
\n \n \n {loading && ()}\n {meme && loading === false && ( )}\n \n \n
\n
\n WrbaVorks Originals\n
\n \n \"\"\n Pingvini sa Madagascara - Božićna avantura\n \n \n \"\"\n Pingvini sa Madagascara - Pingvini uzvraćaju udarac\n \n \n \"\"\n Jebeno doba\n \n \n \"\"\n Štiklići\n \n
\n \n
\n
\n );\n};\n\nexport const MemePageRoute = \"/meme\";\n","export default __webpack_public_path__ + \"static/media/wv-logo.5cf1053f.png\";","import React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from 'react-router-dom';\n\n// Bootstrap\nimport Navbar from 'react-bootstrap/Navbar';\n// import Container from 'react-bootstrap/Container';\nimport Nav from 'react-bootstrap/Nav';\nimport Button from 'react-bootstrap/Button';\n\n// Routes\nimport { HomePageRoute } from \"../pages/HomePage\";\n// import { OurWorkPageRoute } from \"../pages/OurWorkPage\";\n// import { AboutPageRoute } from \"../pages/AboutPage\";\nimport { LoginPageRoute } from \"../pages/LoginPage\";\nimport { SignUpPageRoute } from \"../pages/SignUpPage\";\nimport { SubmitPageRoute } from \"../pages/SubmitPage\";\n\nimport WVLogo from \"../images/wv-logo.png\";\nimport WVLogoText from \"../images/wv-logo-text.png\";\n\nimport { signOut } from \"../store/users\";\n\nexport const Header = () => {\n const dispatch = useDispatch();\n var navigate = useNavigate();\n const currentUser = useSelector(state => state.entities.users.currentUser);\n\n const onSignOut = () => {\n dispatch(signOut());\n };\n\n return (\n \n navigate(HomePageRoute)}>\n \"WrbaVorks\"\n \"WrbaVorks\"\n \n \n \n \n \n \n );\n};\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU8AAAAnCAYAAACPHcpxAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAABI5pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMzNTwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+Mzk8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg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\"","import React from \"react\";\n// import { Link } from 'react-router-dom';\n\n// Bootstrap\n// import Container from 'react-bootstrap/Container';\n\n// Routes\n// import { TermsPageRoute } from '../pages/TermsPage';\n// import { PrivacyPageRoute } from '../pages/PrivacyPage';\n\nexport const Footer = () => {\n return (\n
\n \n WrbaVorks 2024 − v1.0.10\n \n
\n );\n};\n","import axios from \"axios\";\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'react-toastify/dist/ReactToastify.css';\nimport configureStore from \"./store/configureStore\";\nimport { Provider } from \"react-redux\";\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport { setLocale } from 'yup';\nimport { ToastContainer } from 'react-toastify';\nimport { loginSuccess, setAuthToken } from './store/users'\n\n// Bootstrap\n\n// Pages\nimport { HomePage, HomePageRoute } from './pages/HomePage';\n// import { OurWorkPage, OurWorkPageRoute } from './pages/OurWorkPage';\n// import { AboutPage, AboutPageRoute } from './pages/AboutPage';\nimport { LoginPage, LoginPageRoute } from './pages/LoginPage';\nimport { SignUpPage, SignUpPageRoute } from './pages/SignUpPage';\n// import { TermsPage, TermsPageRoute } from './pages/TermsPage';\n// import { PrivacyPage, PrivacyPageRoute } from './pages/PrivacyPage';\nimport { SubmitPage, SubmitPageRoute } from './pages/SubmitPage';\nimport { MemePage, MemePageRoute} from './pages/MemePage';\n\n// Components\nimport { Header } from './components/Header';\nimport { Footer } from './components/Footer';\n\n// Translate Yup\nsetLocale({\n mixed: {\n default: 'Neispravno.',\n required: 'Obavezno polje.'\n },\n string: {\n // eslint-disable-next-line\n min: 'Minimalno ${min} znakova.',\n // eslint-disable-next-line\n max: 'Maksimalno ${max} znakova.',\n email: 'Neispravan format e-maila.',\n },\n});\n\n// Store\nconst store = configureStore();\n\n// Login\nlet authToken = sessionStorage.getItem(\"authToken\");\n\nif (authToken === null || authToken === \"null\" || authToken === \"\") {\n authToken = localStorage.getItem(\"authToken\");\n}\n\nif (authToken) {\n axios.request({\n url: \"https://api.wrbavorks.com/v1/users/profile\",\n method: \"GET\",\n headers: { \"Authorization\": \"Bearer \" + authToken }\n }).then(function (response) {\n if (response.status === 200) {\n setAuthToken(authToken);\n store.dispatch({ type: loginSuccess.type, payload: response.data });\n }\n });\n}\n\nfunction App() {\n return (\n \n \n
\n \n } exact />\n {/* } exact /> */}\n {/* } exact /> */}\n } exact />\n } exact />\n {/* } exact /> */}\n {/* } exact /> */}\n } exact />\n } exact />\n \n