CosmickVisions commited on
Commit
25fc1d4
·
verified ·
1 Parent(s): e43947d

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +40 -21
index.html CHANGED
@@ -4,7 +4,7 @@
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Video Gallery with React</title>
7
- <!-- CSS -->
8
  <style>
9
  body {
10
  font-family: Arial, sans-serif;
@@ -49,6 +49,8 @@
49
  margin: 0;
50
  }
51
  </style>
 
 
52
  </head>
53
  <body>
54
  <!-- Root div for React -->
@@ -58,14 +60,13 @@
58
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
59
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
60
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
61
- <!-- Instagram Embed Script -->
62
- <script async src="//www.instagram.com/embed.js"></script>
63
 
64
  <!-- React App Script -->
65
  <script type="text/babel">
66
- const { useState } = React;
 
67
  const App = () => {
68
- // Instagram video data
69
  const videos = [
70
  { src: 'https://www.instagram.com/reel/DHIpd-9uzUc/', tag: 'travel' },
71
  { src: 'https://www.instagram.com/reel/DFqmJKuhcfy/', tag: 'tech' },
@@ -73,13 +74,30 @@
73
  { src: 'https://www.instagram.com/reel/CUYCIzMJGv-/', tag: 'travel' },
74
  { src: 'https://www.instagram.com/reel/DFms5N5OG7L/', tag: 'tech' },
75
  ];
76
- // State for filter
77
  const [filter, setFilter] = useState('all');
78
- // Filter videos based on tag
79
  const filteredVideos = filter === 'all'
80
  ? videos
81
  : videos.filter(video => video.tag === filter);
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  return (
84
  <div>
85
  <header>
@@ -100,20 +118,20 @@
100
  data-instgrm-permalink={video.src}
101
  data-instgrm-captioned
102
  data-instgrm-version="14"
103
- style={{
104
- background: '#FFF',
105
- border: 0,
106
- borderRadius: '3px',
107
- boxShadow: '0 0 1px 0 rgba(0,0,0,0.5), 0 1px 10px 0 rgba(0,0,0,0.15)',
108
- margin: '1px',
109
- maxWidth: '540px',
110
- minWidth: '326px',
111
- padding: 0,
112
- width: '99.375%',
113
- width: '-webkit-calc(100% - 2px)',
114
- width: 'calc(100% - 2px)'
115
  }}
116
- />
117
  <p>{video.src.split('/')[4]}</p>
118
  </div>
119
  ))}
@@ -122,7 +140,8 @@
122
  </div>
123
  );
124
  };
125
- // Render the React app
 
126
  ReactDOM.render(<App />, document.getElementById('root'));
127
  </script>
128
  </body>
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>Video Gallery with React</title>
7
+ <!-- CSS for styling -->
8
  <style>
9
  body {
10
  font-family: Arial, sans-serif;
 
49
  margin: 0;
50
  }
51
  </style>
52
+ <!-- Instagram Embed Script -->
53
+ <script async src="https://www.instagram.com/embed.js"></script>
54
  </head>
55
  <body>
56
  <!-- Root div for React -->
 
60
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
61
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
62
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
 
 
63
 
64
  <!-- React App Script -->
65
  <script type="text/babel">
66
+ const { useState, useEffect } = React;
67
+
68
  const App = () => {
69
+ // Video data
70
  const videos = [
71
  { src: 'https://www.instagram.com/reel/DHIpd-9uzUc/', tag: 'travel' },
72
  { src: 'https://www.instagram.com/reel/DFqmJKuhcfy/', tag: 'tech' },
 
74
  { src: 'https://www.instagram.com/reel/CUYCIzMJGv-/', tag: 'travel' },
75
  { src: 'https://www.instagram.com/reel/DFms5N5OG7L/', tag: 'tech' },
76
  ];
77
+
78
  const [filter, setFilter] = useState('all');
 
79
  const filteredVideos = filter === 'all'
80
  ? videos
81
  : videos.filter(video => video.tag === filter);
82
 
83
+ // Ensure Instagram embeds are processed after rendering
84
+ useEffect(() => {
85
+ // Check if the Instagram embed script is loaded
86
+ if (window.instgrm && window.instgrm.Embeds) {
87
+ window.instgrm.Embeds.process();
88
+ } else {
89
+ // If the script isn't loaded yet, wait for it
90
+ const checkScript = setInterval(() => {
91
+ if (window.instgrm && window.instgrm.Embeds) {
92
+ window.instgrm.Embeds.process();
93
+ clearInterval(checkScript);
94
+ }
95
+ }, 100);
96
+ // Cleanup interval on unmount
97
+ return () => clearInterval(checkScript);
98
+ }
99
+ }, [filteredVideos]); // Re-run when filteredVideos changes
100
+
101
  return (
102
  <div>
103
  <header>
 
118
  data-instgrm-permalink={video.src}
119
  data-instgrm-captioned
120
  data-instgrm-version="14"
121
+ style={{
122
+ background: '#FFF',
123
+ border: 0,
124
+ borderRadius: '3px',
125
+ boxShadow: '0 0 1px 0 rgba(0,0,0,0.5), 0 1px 10px 0 rgba(0,0,0,0.15)',
126
+ margin: '1px',
127
+ maxWidth: '540px',
128
+ minWidth: '326px',
129
+ padding: 0,
130
+ width: '99.375%',
131
+ WebkitWidth: 'calc(100% - 2px)',
132
+ width: 'calc(100% - 2px)'
133
  }}
134
+ ></blockquote>
135
  <p>{video.src.split('/')[4]}</p>
136
  </div>
137
  ))}
 
140
  </div>
141
  );
142
  };
143
+
144
+ // Render the app
145
  ReactDOM.render(<App />, document.getElementById('root'));
146
  </script>
147
  </body>