{"version":3,"sources":["components/MoviesContainer/MovieItem/MovieItem.module.css","components/MovieModal/MovieModal.module.css","components/MoviesContainer/MoviesTopBar/MoviesTopBar.module.css","components/Footer/Footer.module.css","components/SearchContainer/SearchContainer.module.css","components/SearchContainer/Input/Input.module.css","components/Page404/Page404.module.css","components/SearchContainer/Checkbox/Checkbox.module.css","components/Header/Header.module.css","components/Loader/Loader.module.css","components/Button/Button.module.css","components/MoviesContainer/MoviesContainer.module.css","store/action.ts","components/SearchContainer/Input/Input.tsx","components/Button/Button.tsx","components/SearchContainer/Checkbox/Checkbox.tsx","components/SearchContainer/index.ts","components/SearchContainer/SearchContainer.tsx","components/Header/index.ts","components/Header/Header.tsx","assets/img/defaultImg.jpg","components/MovieModal/MovieModal.tsx","components/MoviesContainer/MovieItem/index.ts","components/MoviesContainer/MovieItem/MovieItem.tsx","components/MoviesContainer/MoviesTopBar/index.ts","components/MoviesContainer/MoviesTopBar/MoviesTopBar.tsx","components/Button/index.ts","components/Loader/index.ts","components/Loader/Loader.tsx","components/MoviesContainer/index.ts","components/MoviesContainer/MoviesContainer.tsx","components/Footer/index.ts","components/Footer/Footer.tsx","components/MainPage/index.ts","components/MainPage/MainPage.tsx","components/Page404/index.ts","components/Page404/Page404.tsx","App.tsx","store/MovieReducer.tsx","store/index.ts","index.tsx"],"names":["module","exports","MovieFilter","SearchFilter","MovieActionType","Input","value","handleChange","handleInputIcon","isActive","className","style","InputRow","htmlFor","id","type","placeholder","onChange","searchIcon","onClick","Button","name","handleClick","searchBtn","Checkbox","isChecked","handleCheckbox","container","checked","checkmark","fetchMovies","limit","dispatch","FETCH_MOVIES","fetch","then","response","json","movies","FETCH_MOVIES_SUCCESS","payload","data","catch","error","console","log","SearchContainer","useSelector","state","searchFilter","moviesLimit","useState","inputWord","setInputWord","setIsActive","useDispatch","useCallback","filter","FILTER_SEARCH_MOVIES","setSearchFilterMovie","sendSearchWordToStore","word","SET_SEARCH_WORD","event","target","SearchOptions","SearchBy","SearchByCheckboxes","Object","values","map","filterName","Header","HeaderName","HeaderTitle","cx","bind","MovieModal","movie","isHidden","handleModal","isImgError","hidden","ModalInfo","backgroundImage","fallback","poster_path","ModalClose","MovieTitle","title","genres","join","MovieDescr","overview","MovieBudget","budget","MovieItem","setIsHidden","setIsImgError","navigate","useNavigate","MovieImg","src","alt","onError","currentTarget","MovieRate","vote_average","MovieInfo","MovieYear","release_date","split","MovieGenre","MovieLink","to","MoviesTopBar","foundMovie","movieFilter","SET_MOVIE_FILTER","setMovieFilter","MovieResultsRow","MovieFound","MovieSortBtn","MovieSortBtnCheckboxes","item","Loader","LoaderText","Box","sx","width","margin","LinearProgress","color","backgroundColor","MoviesContainer","loading","searchWord","filteredMovies","length","toLowerCase","includes","some","genre","sort","a","b","useEffect","setLimit","SET_MOVIES_LIMIT","MovieContainer","index","Footer","FooterCopyright","FooterGithub","href","rel","GithubLink","height","viewBox","version","fillRule","d","MainPage","Page404","PageWrapper","Page","MainPageLink","App","element","path","initialState","Title","RATING","RootReducer","combineReducers","action","store","createStore","composeWithDevTools","applyMiddleware","thunk","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.ca10518c.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"MovieItem\":\"MovieItem_MovieItem__2QK3c\",\"MovieImg\":\"MovieItem_MovieImg__3U0ZR\",\"MovieRate\":\"MovieItem_MovieRate__1KDGr\",\"MovieInfo\":\"MovieItem_MovieInfo__cyCJN\",\"MovieTitle\":\"MovieItem_MovieTitle__1ilAf\",\"MovieYear\":\"MovieItem_MovieYear__3tYHu\",\"MovieGenre\":\"MovieItem_MovieGenre__3A5kW\",\"MovieLink\":\"MovieItem_MovieLink__hrZbx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MovieModal\":\"MovieModal_MovieModal__17rov\",\"hidden\":\"MovieModal_hidden__umwm3\",\"ModalInfo\":\"MovieModal_ModalInfo__2ze2o\",\"MovieDescr\":\"MovieModal_MovieDescr__1PivF\",\"ModalClose\":\"MovieModal_ModalClose__2s7Fa\",\"MovieBudget\":\"MovieModal_MovieBudget__1lcXX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MovieResultsRow\":\"MoviesTopBar_MovieResultsRow__39uPG\",\"MovieSortBtn\":\"MoviesTopBar_MovieSortBtn__3RHXJ\",\"MovieSortBtnCheckboxes\":\"MoviesTopBar_MovieSortBtnCheckboxes__duUYt\",\"MovieFound\":\"MoviesTopBar_MovieFound__1D0NI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Footer\":\"Footer_Footer__238hM\",\"FooterGithub\":\"Footer_FooterGithub__2GdkA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SearchOptions\":\"SearchContainer_SearchOptions__3oNOi\",\"SearchBy\":\"SearchContainer_SearchBy__1GjgA\",\"SearchByCheckboxes\":\"SearchContainer_SearchByCheckboxes__E2a3F\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"InputRow\":\"Input_InputRow__3WBUn\",\"Input\":\"Input_Input__1RoCD\",\"searchIcon\":\"Input_searchIcon__3Fy1G\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PageWrapper\":\"Page404_PageWrapper__3OwjD\",\"Page\":\"Page404_Page__2E2wh\",\"MainPageLink\":\"Page404_MainPageLink__3Te-N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Checkbox_container__34H8h\",\"checkmark\":\"Checkbox_checkmark__211lQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"HeaderName\":\"Header_HeaderName__2oNMU\",\"HeaderTitle\":\"Header_HeaderTitle__1y0Kg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Loader\":\"Loader_Loader__17sQZ\",\"LoaderText\":\"Loader_LoaderText__R589P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchBtn\":\"Button_searchBtn__3kq3q\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"MovieContainer\":\"MoviesContainer_MovieContainer__1VuGT\"};","import {Dispatch} from \"react\"\nimport {Movie, MovieData} from 'types/types'\nimport {Action} from 'redux'\n\nexport enum MovieFilter {\n RELEASE_DATE = 'release date',\n RATING = 'rating'\n}\n\nexport enum SearchFilter {\n Title = 'Title', \n Genre = 'Genre'\n}\n\nexport enum MovieActionType {\n FETCH_MOVIES = 'FETCH_MOVIES',\n FETCH_MOVIES_SUCCESS = 'FETCH_MOVIES_SUCCESS',\n FILTER_SEARCH_MOVIES = \"FILTER_SEARCH_MOVIES\",\n SET_SEARCH_WORD = \"SET_SEARCH_WORD\",\n SET_MOVIE_FILTER = \"SET_MOVIE_FILTER\",\n SET_MOVIES_LIMIT = \"SET_MOVIES_LIMIT\",\n}\n\nexport type ActionPayload = {\n type: TypeAction;\n payload: TypePayload;\n}\n\nexport type FetchMovieAction = Action;\nexport type FetchSuccessMovieAction = ActionPayload;\nexport type SetFilterSearchMovieAction = ActionPayload;\nexport type SetSearchWordMovieAction = ActionPayload;\nexport type SetFilterMovieAction = ActionPayload;\nexport type SetMoviesLimitAction = ActionPayload;\n\nexport type MovieAction = FetchMovieAction\n | FetchSuccessMovieAction\n | SetFilterSearchMovieAction\n | SetSearchWordMovieAction\n | SetFilterMovieAction\n | SetMoviesLimitAction;\n\nexport const fetchMovies = (limit: number) => {\n return (dispatch: Dispatch) => {\n dispatch({type: MovieActionType.FETCH_MOVIES})\n fetch(`https://reactjs-cdp.herokuapp.com/movies?limit=${limit}`)\n .then((response):Promise => response.json())\n .then( movies => {\n dispatch({type: MovieActionType.FETCH_MOVIES_SUCCESS, payload: movies.data})\n }).catch(error => {\n console.log(error);\n })\n }\n}\n\nexport const setSearchFilterMovie = (filter: SearchFilter): SetFilterSearchMovieAction => ({\n type: MovieActionType.FILTER_SEARCH_MOVIES,\n payload: filter\n})\n\nexport const setSearchWord = (word: string): SetSearchWordMovieAction => ({\n type: MovieActionType.SET_SEARCH_WORD,\n payload: word\n})\n\nexport const setMovieFilter = (filter: MovieFilter): SetFilterMovieAction => ({\n type: MovieActionType.SET_MOVIE_FILTER,\n payload: filter\n})\n\nexport const setMoviesLimit = (limit: number): SetMoviesLimitAction => ({\n type: MovieActionType.SET_MOVIES_LIMIT,\n payload: limit\n})\n","import React, {FC} from 'react'\nimport style from './Input.module.css'\nimport {useSelector, useDispatch} from 'react-redux'\nimport SearchIcon from '@mui/icons-material/Search';\nimport ClearIcon from '@mui/icons-material/Clear';\n\ninterface MyProps {\n value: string,\n handleChange: (event: React.ChangeEvent) => void;\n isActive: boolean;\n handleInputIcon: () => void;\n} \n\nconst Input: FC = ({value, handleChange, handleInputIcon, isActive}) => {\n\n return (\n
\n \n \n
\n );\n};\n\nexport default Input","import React, {FC} from 'react'\nimport style from './Button.module.css'\n\ninterface MyProps {\n name: string;\n handleClick: () => void;\n}\nconst Button: FC = ({name, handleClick}) => {\n return (\n \n );\n};\n\nexport default Button; ","import React, {FC, useState} from 'react';\nimport style from './Checkbox.module.css'\n\ninterface MyProps {\n name: string;\n isChecked: boolean;\n handleCheckbox: (event: React.ChangeEvent) => void;\n}\nconst Checkbox:FC = ({name, isChecked, handleCheckbox}) => {\n \n return (\n
\n \n
\n );\n};\n\nexport default Checkbox;","import SearchContainer from './SearchContainer';\nexport default SearchContainer;","import React, {useState, useCallback} from 'react';\nimport style from './SearchContainer.module.css';\nimport Input from './Input/Input'\nimport Button from '../Button/Button'\nimport Checkbox from './Checkbox/Checkbox'\nimport {SearchFilter, setSearchFilterMovie, setSearchWord, fetchMovies} from 'store/action'\nimport { useSelector, useDispatch } from 'react-redux'\nimport {RootState} from 'store'\n\n\nconst SearchContainer = () => {\n const {searchFilter, moviesLimit} = useSelector( (state: RootState) => state.movies);\n const [inputWord, setInputWord] = useState('');\n const [isActive, setIsActive] = useState(false);\n\n const dispatch = useDispatch();\n\n const handleCheckbox = useCallback((filter: SearchFilter) => {\n dispatch(setSearchFilterMovie(filter))\n }, [dispatch]);\n \n\n const handleSearchWord = (event: React.ChangeEvent ) => {\n setIsActive(true);\n setInputWord(event.target.value);\n }\n\n const sendSearchWordToStore = useCallback(() => {\n dispatch(setSearchWord(inputWord));\n dispatch(fetchMovies(moviesLimit));\n }, [dispatch, inputWord, moviesLimit])\n\n const handleInputIcon = useCallback(() => {\n if(isActive) {\n setInputWord('');\n setIsActive(false);\n } else {\n return;\n }\n }, [setInputWord, setIsActive, isActive])\n\n return (\n
\n \n
\n
search by\n
\n {\n Object.values(SearchFilter).map(filterName => \n handleCheckbox(filterName)}\n />)\n }\n
\n
\n
\n
\n );\n};\n\nexport default SearchContainer;","import Header from './Header';\nexport default Header;","import React from 'react';\nimport style from './Header.module.css'\n\nconst Header = () => {\n return (\n
\n

Movies Search Resource

\n

Find your movie

\n
\n );\n};\n\nexport default Header;","export default __webpack_public_path__ + \"static/media/defaultImg.e20282a0.jpg\";","import React, {FC} from 'react';\nimport {Movie} from 'types/types'\nimport style from './MovieModal.module.css'\nimport className from 'classnames/bind'\nimport fallback from 'assets/img/defaultImg.jpg'\n\nconst cx = className.bind(style);\n\ninterface ModalProps {\n movie: Movie;\n isHidden: boolean;\n handleModal: () => void;\n isImgError: boolean;\n}\n\nconst MovieModal:FC = ({movie, isHidden, handleModal, isImgError}) => {\n return (\n
\n
\n
X
\n

{movie.title}

\n

{movie.genres.join(', ')}

\n

{movie.overview}

\n
Budget ${movie.budget}
\n
\n
\n );\n};\n\nexport default MovieModal;\n\n","import MovieItem from './MovieItem'\nexport default MovieItem","import React, {FC, useState, useCallback} from 'react';\nimport {Movie} from 'types/types'\nimport style from './MovieItem.module.css'\nimport MovieModal from '../../MovieModal/MovieModal'\nimport fallback from 'assets/img/defaultImg.jpg'\nimport {Link, useNavigate} from 'react-router-dom'\n\ninterface MyProps {\n movie: Movie;\n}\nconst MovieItem:FC = ({movie}) => {\n const [isHidden, setIsHidden] = useState(true);\n const [isImgError, setIsImgError] = useState(false);\n let navigate = useNavigate();\n\n const handleModal = useCallback( () => {\n setIsHidden(!isHidden);\n if (!isHidden) {\n navigate('/movies');\n }\n },[isHidden, setIsHidden, navigate])\n\n const handlerImageError = ( event: React.SyntheticEvent) => {\n setIsImgError(true);\n event.currentTarget.src = fallback;\n };\n\n return (\n \n
\n
\n {movie.title}\n\n
{movie.vote_average}
\n
\n
\n
{movie.title}
\n
{movie.release_date.split('-')[0]}
\n
\n
{\n movie.genres.join(', ')\n }
\n\n to movie detailes... \n \n
\n );\n};\n\nexport default MovieItem;\n\n","import MoviesTopBar from './MoviesTopBar'\nexport default MoviesTopBar;","import React, {FC, useCallback} from 'react';\nimport { MovieFilter, setMovieFilter } from 'store/action';\nimport style from './MoviesTopBar.module.css'\nimport Checkbox from '../../SearchContainer/Checkbox/Checkbox'\nimport {useSelector, useDispatch} from 'react-redux'\nimport {RootState} from 'store'\n\ninterface MyProps {\n foundMovie: number\n}\nconst MoviesTopBar: FC = ({foundMovie}) => {\n const {movieFilter} = useSelector((state: RootState) => state.movies);\n const dispatch = useDispatch();\n\n const handleCheckbox = useCallback((filter: MovieFilter) => {\n dispatch(setMovieFilter(filter))\n }, [dispatch]);\n\n return (\n
\n

{foundMovie} movies found

\n
\n Sort by \n
\n {Object.values(MovieFilter).map(item => \n handleCheckbox(item)}/>\n )}\n
\n \n
\n
\n );\n};\n\nexport default MoviesTopBar;\n\n\n","import Button from './Button'\nexport default Button;","import Loader from './Loader'\nexport default Loader","import React from 'react';\nimport Box from '@mui/material/Box';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport style from './Loader.module.css'\n\nconst Loader = () => {\n return (\n
\n
is loading ...
\n \n \n \n \n
\n );\n};\n\nexport default Loader;","import MoviesContainer from './MoviesContainer';\nexport default MoviesContainer;","import React, {useEffect, useCallback, useState} from 'react';\nimport MovieItem from './MovieItem'\nimport style from './MoviesContainer.module.css'\nimport MoviesTopBar from './MoviesTopBar'\nimport {RootState} from 'store/index'\nimport {useSelector, useDispatch} from 'react-redux'\nimport {fetchMovies, setMoviesLimit} from 'store/action'\nimport Button from 'components/Button'\nimport Loader from 'components/Loader'\n\n\nconst MoviesContainer = () => {\n const {movies, loading, searchFilter, searchWord, movieFilter, moviesLimit} = useSelector((state: RootState) => state.movies);\n const dispatch = useDispatch();\n\n const filteredMovies = (searchWord.length === 0) ? [] : movies.filter( movie => {\n if(searchFilter === \"Title\") {\n return movie.title.toLowerCase().includes(searchWord.toLowerCase());\n } else {\n return movie.genres.some(genre => genre.toLowerCase().includes(searchWord.toLowerCase()) );\n }\n });\n\n if(movieFilter === \"rating\") {\n filteredMovies.sort((a, b) => b.vote_average - a.vote_average);\n }\n if(movieFilter === \"release date\") {\n filteredMovies.sort((a, b) => +b.release_date.split('-')[0] - +a.release_date.split('-')[0]);\n }\n\n useEffect( () => {\n dispatch(fetchMovies(moviesLimit));\n }, [dispatch, moviesLimit]);\n\n const setLimit = useCallback(() => {\n dispatch(setMoviesLimit(moviesLimit+10));\n }, [dispatch, moviesLimit])\n\n return (\n
\n {\n !loading ? (\n <>\n \n
\n {filteredMovies.map((movie, index) => ) }\n
\n { (filteredMovies.length > 0) &&
\n );\n};\n\nexport default MoviesContainer;","import Footer from './Footer'\nexport default Footer;","import React from 'react';\nimport style from './Footer.module.css'\n\nconst Footer = () => {\n return (\n
\n
\n Copiright © 2021\n
\n
\n \n \n \n
\n
\n );\n};\n\nexport default Footer;","import MainPage from './MainPage'\n\nexport default MainPage","import React from 'react'\nimport SearchContainer from '../SearchContainer'\nimport Header from '../Header'\nimport MoviesContainer from '../MoviesContainer'\nimport Footer from '../Footer'\nimport {Outlet} from 'react-router-dom'\n\nconst MainPage = () => {\n return (\n
\n
\n \n \n
\n \n
\n )\n}\n\nexport default MainPage","import Page404 from './Page404'\nexport default Page404 ","import React from 'react';\nimport {Link} from 'react-router-dom'\nimport style from './Page404.module.css'\n\n\nconst Page404 = () => {\n return (\n
\n
Page not found
\n Back to Main Page\n
\n );\n};\n\nexport default Page404;","import React from 'react';\nimport './App.css';\nimport MainPage from './components/MainPage'\n\nimport {BrowserRouter as Router,\n Routes,\n Route } from 'react-router-dom'\nimport Page404 from 'components/Page404'\n\nfunction App() {\n return (\n \n
\n \n }/>\n }>\n \n \n }/>\n \n
\n
\n \n );\n}\n\nexport default App;\n","import {Movie} from 'types/types'\nimport {MovieAction, MovieActionType, SearchFilter, MovieFilter} from './action'\n\ntype State = {\n movies: Movie[],\n loading: boolean,\n error: string,\n searchFilter: SearchFilter,\n movieFilter: MovieFilter,\n searchWord: string,\n moviesLimit: number,\n}\n\nconst initialState: State = {\n movies: [],\n loading: false,\n error: '',\n searchFilter: SearchFilter.Title,\n movieFilter: MovieFilter.RATING,\n searchWord: '',\n moviesLimit: 50,\n}\n\nexport const MoiveReducer = (state: State = initialState, action: MovieAction): State => {\n switch(action.type) {\n case MovieActionType.FETCH_MOVIES: {\n return {\n ...state,\n movies: [],\n loading: true,\n }\n }\n case MovieActionType.FETCH_MOVIES_SUCCESS: {\n return {\n ...state,\n movies: [...action.payload],\n loading: false\n }\n }\n case MovieActionType.FILTER_SEARCH_MOVIES: {\n return {\n ...state,\n searchFilter: action.payload\n }\n }\n case MovieActionType.SET_MOVIE_FILTER: {\n return {\n ...state,\n movieFilter: action.payload\n }\n }\n case MovieActionType.SET_SEARCH_WORD: {\n return {\n ...state,\n searchWord: action.payload\n }\n }\n case MovieActionType.SET_MOVIES_LIMIT: {\n return {\n ...state,\n moviesLimit: action.payload\n }\n }\n }\n return state;\n}","import {createStore, applyMiddleware, combineReducers} from 'redux'\nimport {MoiveReducer} from './MovieReducer'\nimport {composeWithDevTools} from 'redux-devtools-extension'\nimport thunk from 'redux-thunk'\n\n\n\nexport const RootReducer = combineReducers({\n movies: MoiveReducer,\n})\n\nexport type RootState = ReturnType;\n\nexport const store = createStore(RootReducer, composeWithDevTools(applyMiddleware(thunk)));","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport {Provider} from 'react-redux'\nimport {store} from 'store'\n\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\n"],"sourceRoot":""}