diff --git a/.firebase/hosting.YnVpbGQ.cache b/.firebase/hosting.YnVpbGQ.cache
index a505576..5f882ba 100644
--- a/.firebase/hosting.YnVpbGQ.cache
+++ b/.firebase/hosting.YnVpbGQ.cache
@@ -1,28 +1,28 @@
-asset-manifest.json,1696910177420,23a9e8dd7d4a336aac437b8f47b24e61797b04eb925596ea8b77dff587e765a8
-favicon-16x16.png,1696910166270,d8f2b2a2997ab1e4378320038b0f0942d7925f62bd3ff947f860635ca4b236fa
-favicon-32x32.png,1696910166270,02bf6c3a31198f9e6cff9e039cc753899daff4fa31efec72681e13ccac79ffe4
-index.html,1696910177420,61ae662be6fa29e2cf15004bed31350fcc3a3e2a2139e5eae7007288f19f2e93
-apple-touch-icon.png,1696910166268,cc447d7d0bde355ed4b3abff1fa078315814e690918d7091007ac19024d31d44
-logo192.png,1696910166271,daa73c437f8704bda6f0653811043231421e29fac90a1a3567a719f27a861f5c
-manifest.json,1696910166272,9731cc6e32f7d0fd1d74b8523d8c1865a257f4b2eb93d473fdd013ded6632475
-avatar-red.jpeg,1696910166268,4ee3c9d691fa927c844612623c3f36792aa135e37ef8e4d1fcf72c69730007b8
-favicon.ico,1696910166271,379df450a7b0d1bf72ac2a2395e74bb9546db1b5027d886a57664f80467a25b7
-avatar-blue.jpeg,1696910166268,e0571406a1c75b619cf91e9ca2ad19db738da1f5d9a95ea24860904bc58078e6
-netflix-gpt.png,1696910166273,8628ef9600fc5393af99193616fd2ea4ef43e2afc4719a2b131b71f6604dafd8
-ngpt-white-300x71.png,1696910166276,6528a56a48066a036a5c137d979f85f5ad0f45705e7ac1f45b1992223a11c4bd
-ngpt-red-300x71.png,1696910166276,399b622ac994919271ea1cb3a332fd9843a0329b4c0ad8a8329c4d2b193d8009
-robots.txt,1696910166279,391d14b3c2f8c9143a27a28c7399585142228d4d1bdbe2c87ac946de411fa9a2
-site.webmanifest,1696910166279,438eab4e1bab8df855faa047301dcd8cce4c8a815a1527502b0efc2270ad77fd
-no_movie_poster.png,1696910166277,540d98a5e9930611d710b8ea1bc0a2a2cf9a341efcdfcfb59c8587871593dc9a
-static/js/787.8e11e584.chunk.js,1696910177434,0e4f804981c1a7cbe1d871d33e7bf989a0a6a7d6613822dbdc8a0916ca1c881f
-static/css/main.908f39ad.css,1696910177434,86db7723228a0f3ba97b23f4175a99a4a6010f7c76f67b630fd96335e5ddfa0c
-static/js/787.8e11e584.chunk.js.map,1696910177434,bd58d13d5312bd6291f66aa7538000a654dd2fc48099fae2b81e911c21d11c4e
-static/css/main.908f39ad.css.map,1696910177434,84e28280222521c9a07f83aaca1e1aa4f166870f69ed2fa398b5d6fee1a465d4
-static/js/main.c258293b.js.LICENSE.txt,1696910177434,1e9cdbdefa0af9c4dcdf74584b25a2b90591426ea3bdb859e82fa9b7cd7eef30
-ngpt-red-300x71-01.png,1696910166276,799d627332c55893f0e1d9d6666a30395d32c0f057f43ad00679a0115b330e2d
-logo512.png,1696910166272,33ce2e3312132c09602b877fdafbdf1fff6e682e7284a85a49fcf40d1e7f4f79
-blur.png,1696910166270,91f54c319a44963b23c916c738bd378fe8459857f4d53412399cb775651fc0c3
-poster-bg.jpeg,1696910166278,936849e45414ed194173b19a88ccf787b6be7ede0cd2197fecf36ea250c077e0
-static/js/main.c258293b.js,1696910177434,a55f4ea3578810f705860a824063dfa3b7c9a5211847b46abc0b5859fdee20f6
-netflix-gpt.psd,1696910166274,72ed367082d38c4b7c6459855360e6ad58276b2120001e63fc4c3e6fd0fa0042
-static/js/main.c258293b.js.map,1696910177434,13fa707768659590670a18225bf70ae3f998b771c2065ec642c2c1bf13ef62e2
+apple-touch-icon.png,1696993762322,cc447d7d0bde355ed4b3abff1fa078315814e690918d7091007ac19024d31d44
+favicon-16x16.png,1696993762325,d8f2b2a2997ab1e4378320038b0f0942d7925f62bd3ff947f860635ca4b236fa
+asset-manifest.json,1696993772897,ba9f2e8849c0a06d846fbdbb72990dff8b852c1bb7680a178da9a21311b6562f
+favicon-32x32.png,1696993762326,02bf6c3a31198f9e6cff9e039cc753899daff4fa31efec72681e13ccac79ffe4
+index.html,1696993772897,d3f6017a3444e78acdd281c546c6e640552aef50e5e2fa5642975b6b91e863c7
+manifest.json,1696993762328,9731cc6e32f7d0fd1d74b8523d8c1865a257f4b2eb93d473fdd013ded6632475
+logo192.png,1696993762326,daa73c437f8704bda6f0653811043231421e29fac90a1a3567a719f27a861f5c
+avatar-blue.jpeg,1696993762322,e0571406a1c75b619cf91e9ca2ad19db738da1f5d9a95ea24860904bc58078e6
+netflix-gpt.png,1696993762328,8628ef9600fc5393af99193616fd2ea4ef43e2afc4719a2b131b71f6604dafd8
+avatar-red.jpeg,1696993762322,4ee3c9d691fa927c844612623c3f36792aa135e37ef8e4d1fcf72c69730007b8
+favicon.ico,1696993762326,379df450a7b0d1bf72ac2a2395e74bb9546db1b5027d886a57664f80467a25b7
+robots.txt,1696993762333,391d14b3c2f8c9143a27a28c7399585142228d4d1bdbe2c87ac946de411fa9a2
+ngpt-red-300x71.png,1696993762331,399b622ac994919271ea1cb3a332fd9843a0329b4c0ad8a8329c4d2b193d8009
+site.webmanifest,1696993762333,438eab4e1bab8df855faa047301dcd8cce4c8a815a1527502b0efc2270ad77fd
+ngpt-white-300x71.png,1696993762331,6528a56a48066a036a5c137d979f85f5ad0f45705e7ac1f45b1992223a11c4bd
+static/js/787.8e11e584.chunk.js,1696993772912,0e4f804981c1a7cbe1d871d33e7bf989a0a6a7d6613822dbdc8a0916ca1c881f
+no_movie_poster.png,1696993762332,540d98a5e9930611d710b8ea1bc0a2a2cf9a341efcdfcfb59c8587871593dc9a
+static/js/787.8e11e584.chunk.js.map,1696993772912,bd58d13d5312bd6291f66aa7538000a654dd2fc48099fae2b81e911c21d11c4e
+static/js/main.211f3e99.js.LICENSE.txt,1696993772910,1e9cdbdefa0af9c4dcdf74584b25a2b90591426ea3bdb859e82fa9b7cd7eef30
+static/css/main.3e145f70.css,1696993772910,fb280359d7ece724641fffbf7579475d85445d54fde70b81ea9d552dab963a51
+static/css/main.3e145f70.css.map,1696993772912,4693a90099c6732aadaf3d62b517f0cf41d7e873a4ef134ee0464b2afbb97347
+ngpt-red-300x71-01.png,1696993762330,799d627332c55893f0e1d9d6666a30395d32c0f057f43ad00679a0115b330e2d
+logo512.png,1696993762327,33ce2e3312132c09602b877fdafbdf1fff6e682e7284a85a49fcf40d1e7f4f79
+blur.png,1696993762325,91f54c319a44963b23c916c738bd378fe8459857f4d53412399cb775651fc0c3
+poster-bg.jpeg,1696993762333,936849e45414ed194173b19a88ccf787b6be7ede0cd2197fecf36ea250c077e0
+static/js/main.211f3e99.js,1696993772910,ec7d91dffa9d16485772ae7671143c7ab9e80203ea4f0d357ffee1c34005453e
+netflix-gpt.psd,1696993762330,72ed367082d38c4b7c6459855360e6ad58276b2120001e63fc4c3e6fd0fa0042
+static/js/main.211f3e99.js.map,1696993772910,09b0d29024588dd7b847c836aee1d38013fd89ed7704fa787e57c3e07f231860
diff --git a/src/components/MovieCard.js b/src/components/MovieCard.js
index 8c449c5..20e3aea 100644
--- a/src/components/MovieCard.js
+++ b/src/components/MovieCard.js
@@ -10,33 +10,46 @@ import { NO_POSTER } from "../utils/constants";
const MovieCard = ({ data }) => {
const [isLargeScreen, setIsLargeScreen] = useState(false);
const [hovered, setHovered] = useState(false);
- const cardRef = useRef(null);
const [centerPosition, setCenterPosition] = useState({ left: 0, right: 0, top: 0, bottom: 0 });
+
const handleHover = () => {
- setHovered(true);
- const triggerRect = cardRef.current.getBoundingClientRect();
- const offsetFromTop = triggerRect.top + window.scrollY;
- const positionFromRight = window.innerWidth - triggerRect.right;
- setCenterPosition({
- left: triggerRect.left,
- right: positionFromRight,
- top: offsetFromTop,
- bottom: offsetFromTop,
- });
+ if (data !== null) {
+ clearTimeout(hoverTimeout);
+
+ hoverTimeout = setTimeout(() => {
+ setHovered(true);
+ if (cardRef.current) {
+ const triggerRect = cardRef.current.getBoundingClientRect();
+ const offsetFromTop = triggerRect.top + window.scrollY;
+ const positionFromRight = window.innerWidth - triggerRect.right;
+ setCenterPosition({
+ left: triggerRect.left,
+ right: positionFromRight,
+ top: offsetFromTop,
+ bottom: offsetFromTop,
+ });
+ }
+ }, 1000);
+ }
};
const handleLeave = () => {
+ clearTimeout(hoverTimeout);
setHovered(false);
};
- const handleResize = () => {
- setIsLargeScreen(window.innerWidth > 1024);
- };
+ let hoverTimeout;
+ const cardRef = useRef(null);
useEffect(() => {
- handleResize();
+ const handleResize = () => {
+ setIsLargeScreen(window.innerWidth > 1024);
+ };
+
window.addEventListener('resize', handleResize);
+ handleResize(); // Initialize isLargeScreen
+
return () => {
window.removeEventListener('resize', handleResize);
};
@@ -79,6 +92,19 @@ const MovieCard = ({ data }) => {
);
};
+export const WithTrending = (MovieCard) => {
+ return (props) => {
+ const { index } = props;
+ return (
+
+ )
+ }
+}
export default MovieCard;
diff --git a/src/components/MovieCardHover.js b/src/components/MovieCardHover.js
index 2fbce2c..12d4b0f 100644
--- a/src/components/MovieCardHover.js
+++ b/src/components/MovieCardHover.js
@@ -6,7 +6,8 @@ import { LazyLoadImage } from "react-lazy-load-image-component";
const MovieCardHover = ({ data, centerPosition, hovered }) => {
const { id, title, poster_path, backdrop_path, release_date } = data;
- const releaseYear = release_date.split("-")[0];
+
+ const releaseYear = release_date && release_date.split("-")[0];
let safeTranslateX = '-82px';
let safeTranslateY = '-50px';
@@ -30,7 +31,7 @@ const MovieCardHover = ({ data, centerPosition, hovered }) => {
>
-
+
{
-
+
play_arrow