Vito React app showing black page when started

I’m new to using Vito with react, this is my first app doing so.

I think I am doing everything as supposed but when I run it shows a black white page.

This is my main.jsx:

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.jsx";
import { CssBaseline, ThemeProvider, createTheme } from "@mui/material";

// Optional: Create a custom Material-UI theme
const theme = createTheme({
  palette: {
    primary: {
      main: "#1976d2", // Blue color for the app bar
    },
    background: {
      default: "#f5f5f5", // Light gray background
    },
  },
});

ReactDOM.createRoot(document.getElementById("root")).render(
  <React.StrictMode>
    <ThemeProvider theme={theme}>
      <CssBaseline />
      <App />
    </ThemeProvider>
  </React.StrictMode>
);

This is my App.jsx:

import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
import Home from "./pages/Home.jsx";
import ProjectDetail from "./pages/ProjectDetail.jsx";
import Contact from "./pages/Contact.jsx";

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/project/:id" element={<ProjectDetail />} />
        <Route path="/contact" element={<Contact />} />
      </Routes>
    </Router>
  );
}

export default App;

vite.config.js:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vite.dev/config/
export default defineConfig({
  plugins: [vue()],
})

All the pages are really simple, for example Home.jsx:

import { Grid, Container } from "@mui/material";
import { useEffect, useState } from "react";
import ProjectTile from "../components/ProjectTile.jsx";
import NavBar from "../components/AppBar.jsx";

export default function Home() {
  const [projects, setProjects] = useState([]);

  useEffect(() => {
    const fetchImages = () => {
      // Local image paths (adjust according to your folder structure)
      const imagePaths = [
        { id: "project1", title: "Project 1", description: "Project details here", image: "../assets/images/2000.jpg" },
        { id: "project2", title: "Project 2", description: "Project details here", image: "../assets/images/mountains.jpg" },
        { id: "project3", title: "Project 3", description: "Project details here", image: "../assets/images/galp.png" },
        { id: "project3", title: "Project 3", description: "Project details here", image: "../assets/images/fspt.png" },
        { id: "project3", title: "Project 3", description: "Project details here", image: "../assets/images/25_abril.jpg" },

      ];
      setProjects(imagePaths);
    };
    fetchImages();
  }, []);

  return (
    <>
      <NavBar />
      <Container sx={{ marginTop: 4 }}>
        <Grid container spacing={3}>
          {projects.map((project) => (
            <Grid item xs={12} sm={6} md={4} key={project.id}>
              <ProjectTile project={project} />
            </Grid>
          ))}
        </Grid>
      </Container>
    </>
  );
}

Index.html:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Jaime Ferreira</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.jsx"></script>
  </body>
</html>

And this is the browser inspect HTML code:

Next.js 15 SEO-friendly data fetching [closed]

Is my code correct in terms of SEO? What do you recommend?

I’m coding a news page. My version of Next.js: 15.1.6, my version of React: 19.0.0.

I’m not a professional developer, I hope I’m following the rules.

"use client";

function VideoGallery() {
  const { lastArtSpaceNews, loading, error } = gnArtSpace();

  return (
    <div className="video-gallery">
      <div className="video-gallery-in">
        <h3 className="video-gallery-title">
          Art Title
        </h3>

        <div className="gallery">
          {lastArtSpaceNews.map((news, index) => (
            <div
              key={index}
              className={`video-gallery-videos video-gallery-${index}`}
            >
              <div className="vg-image">
                <Image
                  src={news?.image_url || "/as-logo.png"}
                  fill
                  style={{ objectFit: "cover", objectPosition: "top" }}
                  alt={news.title || "Art News"}
                />
              </div>
              <div className="vg-title">
                <h3>{news.title}</h3>
                <p className="video-gallery-video-subtitle">
                  {index === 0 ? news.summary : null}
                </p>
              ....
  );
}

export default VideoGallery;

Fade out background image effect on clicking the left and right arrows in elementor

how to develop the fade out effect in elementor on clicking the left and right arrows. How can i get that effect through the implementation of external css and js code?
I have been trying hard to resolve this issue but I am unable to do that.

I am trying to resolve the problem and I have tried working on the CSS part but I have no idea on how the JS Part works. It would be better if that one thing is clearly explained. I am looking for a positive response and please update me as I am having my deadline very close.

How do I connect the code that I write to an open API so that it runs automatically? [closed]

My company has recently purchased a system that has a developer API available, and we’re receiving requests for some functionality to be automated.

I am not a developer and am not familiar with the configuration of these things. Clicking into the API settings in the system gives me an option to ‘create an app’, but I am not sure where to put the app, if that makes sense.

If there were a box that said ‘write the code here’, I could do it. But I have no experience outside of that.

I understand that the code needs to be running on some sort of server, right? I’m looking for a way to stand this up on my end with no paid developer tools available. I am not trying to write something on my local machine that runs when I click a button – I think I could figure that out. I need something that is constantly running and waiting to be triggered. Thanks in advance.

Is there anyway to control the snap animation using Svelte or TailwindCSS?

I have a snap-y snap-mandatory overflow-y-scroll container with several items inside. The snap is working, but I don’t like how the snap is animated.

Is there any way to control the animation of the snap?

I had hoped that transitions might offer some control over this, but (unless I’m misunderstanding something) it seems that transitions are really meant for items entering or leaving the DOM.

I’m using Svelte and TailwindCSS; so, if either of these libraries provide an easy way of doing this, please let me know. If it’s only possible to achieve this by writing something from scratch, I’ll probably just leave it be.

React – How to overwrite a current character inside input box (OTP inputs) when it is already full?

I am trying to create an input box for a timer/OTP styled input.

How to overwrite a current character inside input box w length 1 (OTP inputs) when it is already full?

My problem is that the input is length 1, and we move the cursor/focus to the next only after catching a single character… but once a char is filled, you have to manually backspace and delete the char and then you can refill…

currently inside input box(0) but since it is already filled, I can’t overwrite it

import { useRef, useState } from 'react'

function App() {
    const [time, setTime] = useState(null);
    const [running, setRunning] = useState(false);
    const [editState, setEditState] = useState(false);
    const [hms, setHms] = useState(Array(6).fill(0));
    const inputs = useRef([]);

    const handleChange = (e, idx) => {
        const {value} = e.target;
        if (value.match(/^d$/)) {
            const newHms = [...hms];
            newHms[idx] = value;
            setHms(newHms);

            if (idx < 6) {
                inputs.current[idx+1].focus();
            }

            if (value === '') {
                if (idx > 0) {
                    inputs.current[idx - 1].focus();
                }
            }
        }
    }

    const handleKeyDown = (e, idx) => {
        if (e.key === 'Backspace') {
            if (hms[idx] != '') {
                const newHms = [...hms];
                newHms[idx] = '';
                setHms(newHms);
                return;
            }

            if (idx > 0) {
                inputs.current[idx - 1].focus();
            }
        }
    }
    return (
        <>
            <div id='root' style={{backgroundColor: "#e3b23c", width:"400px", height:"400px"}}>
                {true && <div>
                    {
                        hms.map((_, idx) => {
                            return (
                                <span>
                                    <input
                                        key={idx}
                                        type='text'
                                        maxLength="1"
                                        value={hms[idx]}
                                        onKeyDown={(e) => handleKeyDown(e, idx)}
                                        onChange={(e) => handleChange(e, idx)}
                                        ref={(el) => (inputs.current[idx] = el)}
                                        style={{width: '40px',
                                            height: '40px',
                                            margin: '0 5px',
                                            textAlign: 'center',
                                            fontSize: '18px',
                                            border: '1px solid #ccc',
                                            borderRadius: '4px'}
                                        }
                                        ></input>
                                        {(idx == 1 || idx == 3) && <span style={{
                                            fontWeight: 600,
                                            fontSize: "30px"
                                        }}>:</span>}
                                </span>
                            );
                        })
                    }
                </div>}
                <div>
                    Hours : Minutes : Seconds
                </div>
            </div>
        </>
    )
}
export default App

Script for Infinite Craft [closed]

yo gng, this isn’t really a question but i just want a script for infinite craft bc im lazy af and if you can please script it for me, the violentmonkey script has to fastly choose two random items you have and combine them and i want it to be fast so i get new items succesfully. It can even be in python but idk what app it has to be for python to run on things in your pc

i tried asking deepseek, i asked for the violentmonkey extension because of its updated knowledge and it didnt get it right, i expected it to work but i dont know about all of the web developing stuff to automatically do things

Excel Sharepoint TypeScript : how to change a text if a cell is not empty on this date?

This is my first question here so sorry if it’s not clear enough.
I used to do VBA script but since we have some excel files that are on sharepoint, I do not find a way to achieve the same thing with typescript (or javascript?).

I have a file that show all our pick-up trucks and on which project they are at the moment.
I have a column that quickly shows if a truck is available or not depending on the date.
All columns have a date. I have attached a screenshot.

File image

After searching on the internet for anwsers on how to adapt my VBA script to TypeScript (or javascript?) I tried to frankencode this :

`function main(workbook: ExcelScript.Workbook){
//get active worksheet
let sheet = workbook.getActiveWorksheet();
let namesRange: ExcelScript.Range = workbook.getActiveWorksheet().getRange(“A1”);
let rowCount: number = namesRange.getRowCount();
let colCount: number = namesRange.getColumnCount();
let vals: string[][] = namesRange.getValues() as string[][];
let text1: “Disponible”;
let text2: “Indisponible”;

    for (let i = 4; i < colCount; i++){
      //loop through columns
      let a= 1;
      let b = 4;
      let today = new Date().toLocaleDateString("fr-CA");
      //sets now value as the cell with current date
      if (vals[a][i] = today) {
        // when the loop gets to current date then
      for (let j = 6; j<rowCount; j++){
          //loop through rows
            if(vals[j][i] === ""){
              //if cells is empty, then it is available
              sheet.getRangeByIndexes(j,b,1,1).setValue(text1) 
              //writes Available in the correct row, forth column
            } else sheet.getRangeByIndexes(j, b,1,1).setValue(text2)
            //if the cell is not empty, then write Not Available in correct row, forth column


            }

          }

      }
        

      }

`

The code runs without bugs. But also it does not seems to work properly.
What it is supposed to do is run a loop in the columns until it hits the current date. Then, loop through the rows to see if something is written for that pick-up that day. If the cell is empty, then it’s available and change the text in a specific cell to say so and non available if the cell is not empty.

Thank you, and I wish you all a good day

JS part of glide.js does not work properly

Hello I am trying again with my question with better phrasing. To put simply, when I run the code without JS part of glide:

<script>
    new Glide('.glide').mount()
</script>

The slides of the slider are visible. However, once above mentioned is inserted the whole part named “Projects” -containing slides disappears. Here is HTML and CSS. Can someone please give me some insights into this problem?
I had very similar problem using also Swiper.js.

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!--arrow symbol-->
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&icon_names=arrow_forward" />
    
    <title>Document</title>
    
    <link rel="stylesheet" href="actual_styles_without_mental_slider.css">
    <link rel="stylesheet" href="css/glide.core.min.css"

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Quicksand:[email protected]&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<!--core css-->
<link rel="stylesheet" href="node_modules/@glidejs/glide/dist/css/glide.core.min.css">
<link rel="stylesheet" href="node_modules/@glidejs/glide/dist/css/glide.theme.min.css">

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</head>
    <header>
    <nav class="navbar"></nav>
    <div class="navbar">
        <div class="logo" <a href="logo"></a>
            <div class="letter">(s)</div>logo</a></div>
            <ul class="links">
                <li><a href="#about">About Me</a></li>
                <li><a href="#projects">Projects</a></li>
                <li><a href="#hobbies">Hobbies</a></li>
                <li><a href="#contact">Contact Me</a></li>
            </ul>
            <div class="toggle_btn">
                <i class="fa fa-bars"></i>
            </div>
    </div>
    <div class="dropdown_menu">
        <li><a href="#about">About Me</a></li>
        <li><a href="#projects">Projects</a></li>
        <li><a href="#hobbies">Hobbies</a></li>
        <li><a href="#contact">Contact Me</a></li>
    </div>
        </nav>
</header>
<body>
    <div class="fakenav"></div>
<div class="content">
<section id="about">
    <img class="photo"
         src="photo.jpg"
         alt="picture of Sara">
         <div class="bio">
         <h3> <div class="hi">Hello!</div>Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.Lorem ipsum.</h3>
        </div>
</section>

<section id="projects">
    <div class="container">
    <div class="glide">
        <div class="glide_track" data-glide-el="track">
            <ul class="glide_slides">
                <li class="glide-slide">
                 <a href="link" class="card-link">
                    <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                    <p class="badge">badge</p>
                    <h1 class="card-title"> Description.</h1>
                    <button class="card-button material-symbols-outlined">arrow_forward</button>
                 </a>
                </li>

                <li class="glide-slide">
                    <a href="link" class="card-link">
                       <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                       <p class="badge">badge</p>
                       <h1 class="card-title"> Description.</h1>
                       <button class="card-button material-symbols-outlined">arrow_forward</button>
                    </a>
                   </li>

                   <li class="glide-slide">
                    <a href="link" class="card-link">
                       <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                       <p class="badge">badge</p>
                       <h1 class="card-title"> Description.</h1>
                       <button class="card-button material-symbols-outlined">arrow_forward</button>
                    </a>
                   </li>

                   <li class="glide-slide">
                    <a href="link" class="card-link">
                       <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                       <p class="badge">badge</p>
                       <h1 class="card-title"> Description.</h1>
                       <button class="card-button material-symbols-outlined">arrow_forward</button>
                    </a>
                   </li>
                   <li class="glide-slide">
                    <a href="link" class="card-link">
                       <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                       <p class="badge">badge</p>
                       <h1 class="card-title"> Description.</h1>
                       <button class="card-button material-symbols-outlined">arrow_forward</button>
                    </a>
                   </li>
                   <li class="glide-slide">
                    <a href="link" class="card-link">
                       <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                       <p class="badge">badge</p>
                       <h1 class="card-title"> Description.</h1>
                       <button class="card-button material-symbols-outlined">arrow_forward</button>
                    </a>
                   </li>
                   <li class="glide-slide">
                    <a href="link" class="card-link">
                       <img src="pic1.jpg" alt="two bears on boats in sea" class="card-image">
                       <p class="badge">badge</p>
                       <h1 class="card-title"> Description.</h1>
                       <button class="card-button material-symbols-outlined">arrow_forward</button>
                    </a>
                   </li>
                
            </ul>
        </div>
       <div class="glide__arrows" data-glide-el="controls">
            <button class="glide__arrow glide__arrow--left" data-glide-dir="<"><</button>
            <button class="glide__arrow glide__arrow--right" data-glide-dir=">">></button>
        </div>
    </div>
</div>
</section>

<section id="hobbies">
    <h1></h1>
</section>

<section id="contact">
    <h1>Contact Me</h1>
</section>
</div>
<script defer>
    const toggleBtn = document.querySelector('.toggle_btn')
    const toggleBtnIcon = document.querySelector('.toggle_btn i')
    const dropDownMenu = document.querySelector('.dropdown_menu')

    toggleBtn.onclick = function () {
        dropDownMenu.classList.toggle('open')
        const isOpen = dropDownMenu.classList.contains('open')

        toggleBtnIcon.classList = isOpen
        ? 'fa fa-close'
        : 'fa fa-bars'
    }
</script>
<script src="https://cdn.jsdelivr.net/npm/@glidejs/glide"></script>
<script>
    new Glide('.glide').mount()
</script>
</body>
</html>

CSS:

body {    
    height: 100vh;
    font-family: "Poiret One", sans-serif;
    font-weight: 400;
    font-style: normal;
    background-color:#ffede8;
    margin-left: 0;
    margin-right: 0;
    background-image: url(Hero4 01 Artboard 1.svg);
    background-repeat: no-repeat;
  }
  * {
      margin:0px;
  }
  header {
      position: relative;
      width: 100%;
      background-color: rgba(0,0,0,.8);
  }
  nav.navbar {
      height: 0px;
  }
  ul.links {
      padding: 0px;
  }
  .navbar {
      width: 100%;
      height: 70px;
      display:flex !important;
      justify-content: center !important;
      align-items: center !important;
      justify-content: space-around !important;
      padding-top: 0px;
      position: fixed;
      z-index: +1;
  }
  .logo .links .toggle_btn {
      padding-bottom: 50px;
  }
  li {
      list-style: none;
  }
  a {
      text-decoration: none;
      color: #ffede8 ;
      font-size: 1.5rem;
  }
  a:hover {
      color:#f1efde;
  }
  
  .logo {
      font-size: 1.5rem;
      font-weight: bold;
      display: flex;
      color:#ffede8;
  }
  .letter {
      color:#ffede8;
      letter-spacing: 3.5px;
      text-shadow: 2px 1px 3px rgba(194, 182, 188, 0.8);
  }
  .logo:hover {
      text-shadow: 3px 3px 8px #d6c3bb;
  }
  .navbar .links {
      display: flex;
      gap: 8rem;
  }
  .dropdown_menu {
      position: absolute;
      right: 2rem;
      top: 70px;
      width: 300px;
      height: 0;
      background: rgba(0, 0, 0, 0.6);
      backdrop-filter: blur(15px);
      border-radius: 10px;
      overflow: hidden;
      display: block;
      transition: height .2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      margin-top: 1px;
  }
  .dropdown_menu.open {
      height: 220px;
      padding-top: 10px;
      padding-bottom: 10;
  }
  .dropdown_menu li {
      padding: 0.7rem;
      display: flex;
      align-items: center;
      justify-content: center;
  }
  
  .toggle_btn {
      color:#280f0a;
      font-size: 1.5rem;
      cursor:pointer;
      display: inline-block;
  }
  .navbar-brand {
      display: inline-block;
      justify-content: center;
      transition: scale 0.2 ease;
  } 
  .navbar-brand:hover {
   scale:1.2;
  }
  .navbar-brand:active {
      scale: 0.95;
  }
  .fakenav {
      position: fixed;
      height: 70px;
      width: 100%;
      margin: 0px;
      padding: 0px;
      background-color: rgba(0, 0, 0, 0.6);
      
  }
  
  #about,
  #projects,
  #hobbies,
  #contact {
      height: 700px;
  }
  .content {
      padding-top: 70px;
  }
  #about {
      margin-top: 550px;
      width: 100%;
      display: flex;
      justify-content: center;
      align-items: center;
  
   } 
  
  .photo {
      width: 30em;
      border-radius: 100%;
      margin: 50px 100px;
      border-right: 10px groove #8c837c;
      border-top: 10px groove #c9c1b6;
      border-bottom: 10px groove #c9c1b6;
      border-left: 10px groove #8c837c;
  }
  .bio {
      width: 15em;
      height: 100%;
      font-size: 1.5em;
      margin: 0px 100px;
      display: flex;
      flex-direction: column;
      justify-content: center;
      line-height: 1.7em;
      color: #233220;
      
  }
  .hi {
      color: #8c837c;
      font-size: 1.2em;
  }

  .container {
    margin-top: 200px;
    padding: 0;
    box-sizing: border-box;
  }

  .glide {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    box-sizing: border-box;
 }
 .glide_slides .glide-slide {
    list-style: none;
  }
 .glide_slides .glide-slide .card-link {
    width:400px;
    height: 45vh;
    display: block;
    background-color: rgba(238, 228, 237, 0.4);
    padding: 18px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 10px rgba(64, 51, 51, 0.2);
    border: 2px solid transparent;
    transition: 0.2 ease;
}
.glide_slides .glide-slide .card-link:hover {
    box-shadow: 0 20px 20px rgba(64, 51, 51, 0.2);
}
.glide_slides .card-link .card-image {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: 10px;
}

.glide_slides .card-link .badge {
    color: rgb(236, 224, 223);
    margin: 16px 0 18px;
    padding: 8px 16px;
    font-size: 1rem;
    background: #674f4f;
    width: fit-content;
    border-radius: 50px;
}
.glide_slides .card-link .card-title {
    font-size:1em;
    color: #674f4f;
}

.glide_slides .card-link .card-button {
    height: 35px;
    width: 35px;
    border-radius: 50%;
    color: #674f4f;
    margin: 10px 0 5px;
    border: 1px solid #674f4f;
    background: none;
    cursor: pointer;
    transform: rotate(-45deg);
    background-color: #f5e1e1;
    transition: 0.4 ease;
}
.glide_slides .card-link:hover .card-button {
    color: rgb(236, 224, 223);
    background: #674f4f;
}

  
  @media (min-width: 1441px) {
      .navbar {
      width: 100%; 
      }
      .dropdown_menu {
          display: none;
      }
      .toggle_btn {
          display: none;
      }
  }
  @media (min-width: 1280px) and (max-width: 1440px) {
      .navbar {
      width: 100%; 
      }
      .dropdown_menu {
          display: none;
      }
      .toggle_btn {
          display: none;
      }
  }
  @media (min-width: 1024px) and (max-width: 1279px) {
      .navbar {
      width: 100%; 
      }
      .dropdown_menu {
          display: none;
      }
      .toggle_btn {
          display: none;
      }
  }
  @media (min-width: 768px) and (max-width: 1023px) {
      .navbar {
      width: 100%; }
      .navbar .links {
          display: none;
      }
  }
  @media (min-width: 481px) and (max-width: 767px) {
      .navbar {
      width: 100%; }
      .navbar .links {
          display: none;
      }
  }
  
  @media (max-width: 480px) {
      .navbar {
      width: 100%; 
      }
      .navbar .links {
          display: none;
      }
  }

Web Augmented Reality

I’m trying to create a website where users can follow augmented reality (AR) arrows to reach a specified destination. The requirement is that it should work on both Android and iOS, and I’d like to rely on real-world coordinates or mapping data rather than just markers.

I’m new to AR development and not sure where to start. I’ve heard of libraries like AR.js, A-Frame, and perhaps using the WebXR API, but I’m unsure how to incorporate location-based or GPS-based features to render arrows in the correct positions.

Goal: Web-based AR navigation (no native apps)
Platforms: Must work on iOS and Android
Features: Display arrows in real-world space, guiding users to a destination via geolocation

I’m using AR.js for a location-based AR project, but I’m having trouble placing 3D objects at real GPS coordinates. Even when I specify latitude/longitude, the 3D model appears stuck to my camera view rather than being positioned in the real-world location.

Svelte child component props doesn’t update on parent state change

Parent component:

<script>
    import Child from "./Child.svelte"
    import { onMount } from "svelte";
    import apireq from "./api.js";
    
    let items = $state.raw([]);

    let splitItems = $derived(items.splice(0, 5));

    onMount(() => {
        apireq().then(v => items = v)
    })
</script>
<h1>item count in parent {items.length}</h1>
<Child items={splitItems} />

Child component

<script>
  let props = $props();
  let { items} = props;
</script>

item count in child:
<div>{items.length}</div>

Child component does not update after the api request.. Still shows 0 count
Parent does update.

I tried with both $state and $state.raw. But i don’t want full reactivity because its a large array, and reactivity on assign should be enough

This used to be so simple in svelte 4, but in 5 nothing works as expected 🙁

Problems with grid alignment and uniform size with chrome (works in firefox)

I’m building a weekly scheduler (calendar) and have been experiencing alignment issues with the rows in Chrome (it works fine in Firefox). I’m using vanilla JavaScript, HTML, and CSS.

There are two types of events in the calendar: full-day events, which don’t have a specific hour and appear at the top, and normal events, which can span one or multiple days.

When there are no events, the calendar displays correctly. However, when multiple events are added, the height of some grid cells becomes irregular (while the width remains consistent). Additionally, adding only full-day events—or a large number of them—also causes irregular cell heights, which doesn’t make sense since this type of event are in a different element.

Events that overlap within the same grid stack horizontally.
Here is the HTML of the page:

<div class="weekly-calendar">
<div class="parte-arriba">
<div class="day-header"></div>
<div class="day-header day-2024-11-11"><span>lun 11</span></div>
<div class="day-header day-2024-11-12"><span>mar 12</span></div>
<div class="day-header day-2024-11-13"><span>mié 13</span></div>
<div class="day-header day-2024-11-14"><span>jue 14</span></div>
<div class="day-header day-2024-11-15"><span>vie 15</span></div>
<div class="day-header day-2024-11-16"><span>sáb 16</span></div>
<div class="day-header day-2024-11-17"><span>dom 17</span></div>
<div style="grid-area: 2 / 1 / 3 / 2; background-color: var(--surface1);"></div>
<div class="full-day">
<div class="event event--2 full-day-event event--peach" title="Event 2.1"
                                style="grid-column: 1 / 8; position: relative; border-radius: 0px;"><span
                                        class="event-text">Event 2.1</span></div>
<div class="event event--2 full-day-event event--yellow" title="Event 2.3"
                                style="grid-column: 1 / 8; position: relative; border-radius: 0px;"><span
                                        class="event-text">Event 2.3</span></div>
</div>
</div>
<div class="parte-abajo">
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">0:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">1:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">2:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">3:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">4:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">5:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">6:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">7:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">8:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">9:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">10:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">11:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">12:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">13:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">14:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">15:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">16:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">17:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">18:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">19:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">20:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">21:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">22:00</span></div>
<div class="hour-label" style="grid-row-end: span 12;"><span class="hour-text">23:00</span></div>
<div class="day-container day-container--2024-11-11"
                        style="grid-column: 2 / 3; grid-template-rows: repeat(288, minmax(1px, 1fr));">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
<div class="event event--4 event--green" title="Event 4"
                                style="grid-area: 157 / 1 / 289 / 2; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px;">
<div class="event_color"
                                        style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0px;"></div>
<span class="event-hour-text" style="margin-right: 0.2rem;">13:00</span><span
                                        class="event-text" style="font-weight: bold;">Event 4</span>
</div>
<div class="event event--5 event--maroon" title="Event 5"
                                style="grid-area: 73 / 2 / 289 / 3; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px;">
<div class="event_color"
                                        style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0px;"></div>
<span class="event-hour-text" style="margin-right: 0.2rem;">06:00</span><span
                                        class="event-text" style="font-weight: bold;">Event 5</span>
</div>
</div>
<div class="day-container day-container--2024-11-12"
                        style="grid-column: 3 / 4; grid-template-rows: repeat(288, minmax(1px, 1fr));">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
<div class="event event--4 event--green" title="Event 4"
                                style="grid-area: 1 / 1 / 289 / 2; border-radius: 0px;">
<div class="event_color" style="border-radius: 0px;"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">00:00</span><span class="event-text"
                                        style="font-weight: bold;">Event 4</span>
</div>
<div class="event event--5 event--maroon" title="Event 5"
                                style="border-top-left-radius: 0px; border-top-right-radius: 0px; grid-area: 1 / 2 / 85 / 3;">
<div class="event_color"
                                        style="border-top-left-radius: 0px; border-top-right-radius: 0px;"></div><span
                                        class="event-hour-text" style="margin-right: 0.2rem;">00:00</span><span
                                        class="event-text" style="font-weight: bold;">Event 5</span>
</div>
<div class="event event--11 event--sky" title="Event 11" style="grid-area: 13 / 3 / 73 / 4;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">01:00</span><span class="event-text"
                                        style="font-weight: bold;">Event 11</span>
</div>
<div class="event event--11 event--pink" title="Event 11xx" style="grid-area: 13 / 4 / 49 / 5;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">01:00</span><span class="event-text"
                                        style="font-weight: bold;">Event 11xx</span>
</div>
<div class="event eventu--11 event--blue" title="Event uu" style="grid-area: 73 / 3 / 109 / 5;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">06:00</span><span class="event-text"
                                        style="font-weight: bold;">Event uu</span>
</div>
<div class="event event--13 event--pink" title="Event 13" style="grid-area: 101 / 2 / 133 / 3;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">08:20</span><span class="event-text"
                                        style="font-weight: bold;">Event 13</span>
</div>
<div class="event event--13 event--blue" title="Event 13x"
                                style="grid-area: 137 / 2 / 157 / 5;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">11:20</span><span class="event-text"
                                        style="font-weight: bold;">Event 13x</span>
</div>
<div class="event eventu--11 event--pink" title="Event oo"
                                style="grid-area: 109 / 3 / 111 / 5;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">09:00</span><span class="event-text"
                                        style="font-weight: bold;">Event oo</span>
</div>
</div>
<div class="day-container day-container--2024-11-13"
                        style="grid-column: 4 / 5; grid-template-rows: repeat(288, minmax(1px, 1fr));">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
<div class="event event--4 event--green" title="Event 4"
                                style="border-top-left-radius: 0px; border-top-right-radius: 0px; grid-area: 1 / 1 / 169 / 2;">
<div class="event_color"
                                        style="border-top-left-radius: 0px; border-top-right-radius: 0px;"></div><span
                                        class="event-hour-text" style="margin-right: 0.2rem;">00:00</span><span
                                        class="event-text" style="font-weight: bold;">Event 4</span>
</div>
</div>
<div class="day-container day-container--2024-11-14"
                        style="grid-column: 5 / 6; grid-template-rows: repeat(288, minmax(1px, 1fr));">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
</div>
<div class="day-container day-container--2024-11-15"
                        style="grid-column: 6 / 7; grid-template-rows: repeat(288, minmax(1px, 1fr));">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
<div class="event event--12 event--blue" title="Event 12"
                                style="grid-area: 193 / 1 / 289 / 2; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px;">
<div class="event_color"
                                        style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0px;"></div>
<span class="event-hour-text" style="margin-right: 0.2rem;">16:00</span><span
                                        class="event-text" style="font-weight: bold;">Event 12</span>
</div>
<div class="event event--6 event--blue" title="Event 6" style="grid-area: 97 / 1 / 181 / 2;">
<div class="event_color"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">08:00</span><span class="event-text"
                                        style="font-weight: bold;">Event 6</span>
</div>
</div>
<div class="day-container day-container--2024-11-16"
                        style="grid-column: 7 / 8; grid-template-rows: repeat(288, minmax(1px, 1fr));">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
<div class="event event--12 event--blue" title="Event 12"
                                style="grid-area: 1 / 1 / 289 / 2; border-radius: 0px;">
<div class="event_color" style="border-radius: 0px;"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">00:00</span><span class="event-text"
                                        style="font-weight: bold;">Event 12</span>
</div>
</div>
<div class="day-container day-container--2024-11-17"
                        style="grid-column: 8 / 9; grid-template-rows: repeat(288, minmax(1px, 1fr)); border-bottom-right-radius: 10px;">
<div class="hour" style="grid-row: 1 / 13;"></div>
<div class="hour" style="grid-row: 13 / 25;"></div>
<div class="hour" style="grid-row: 25 / 37;"></div>
<div class="hour" style="grid-row: 37 / 49;"></div>
<div class="hour" style="grid-row: 49 / 61;"></div>
<div class="hour" style="grid-row: 61 / 73;"></div>
<div class="hour" style="grid-row: 73 / 85;"></div>
<div class="hour" style="grid-row: 85 / 97;"></div>
<div class="hour" style="grid-row: 97 / 109;"></div>
<div class="hour" style="grid-row: 109 / 121;"></div>
<div class="hour" style="grid-row: 121 / 133;"></div>
<div class="hour" style="grid-row: 133 / 145;"></div>
<div class="hour" style="grid-row: 145 / 157;"></div>
<div class="hour" style="grid-row: 157 / 169;"></div>
<div class="hour" style="grid-row: 169 / 181;"></div>
<div class="hour" style="grid-row: 181 / 193;"></div>
<div class="hour" style="grid-row: 193 / 205;"></div>
<div class="hour" style="grid-row: 205 / 217;"></div>
<div class="hour" style="grid-row: 217 / 229;"></div>
<div class="hour" style="grid-row: 229 / 241;"></div>
<div class="hour" style="grid-row: 241 / 253;"></div>
<div class="hour" style="grid-row: 253 / 265;"></div>
<div class="hour" style="grid-row: 265 / 277;"></div>
<div class="hour" style="grid-row: 277 / 289;"></div>
<div class="event event--12 event--blue" title="Event 12"
                                style="border-radius: 0px; grid-area: 1 / 1 / 289 / 2;">
<div class="event_color" style="border-radius: 0px;"></div><span class="event-hour-text"
                                        style="margin-right: 0.2rem;">00:00</span><span class="event-text"
                                        style="font-weight: bold;">Event 12</span>
</div>
</div>
</div>

I’ve tried modifying the display options (flex, grid, contents, etc.) and changing the way elements are appended.

Frida findExportByName with null library

In frida what is the difference between

Module.findExportByName("libssl.so","SSL_CTX_set_keylog_callback")

And

Module.findExportByName(null , "SSL_CTX_set_keylog_callback")

The first one return a valid pointer and the second one return null pointer.

Video Texture Not Displaying on iPhone Model in React Three Fiber (R3F)

I am working on a React Three Fiber (R3F) project where I want to display a video texture on an iPhone model. The scene is using @react-three/fiber, @react-three/drei, and GSAP for animations. However, the video is not rendering on the iPhone screen

I am passing a videoPath to the Iphone component, where it should be applied as a THREE.VideoTexture on the iPhone screen mesh. The video file is valid, but it’s not being displayed.

import React, { useRef, useEffect } from 'react'
 import { useGLTF, useVideoTexture } from '@react-three/drei'
import * as THREE from 'three'

const Iphone = ({ videoPath = "/textures/project/project2.mp4", ...props }) => {
 const { nodes, materials } = useGLTF('/models/iphone_16_pro_max.glb')

 // Simple video texture setup - exactly like DemoComputer
const txt = useVideoTexture(videoPath);

 // Simple texture flip - exactly like DemoComputer
 useEffect(() => {
     if (txt) {
    txt.flipY = false;
   }
 }, [txt]);

 return (
   <group {...props} dispose={null}>
    <group 
    scale={0.6}
    position={[0, 2, 0]}
    rotation={[0, -Math.PI / 4, 0]}
  >
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.tsgyTKhpolCmwxx.geometry}
      material={materials.zwnVxbhBDHZGbPo}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.hrZaEjXDmCILobU.geometry}
      material={materials.oOhSzasUKHWsREs}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.FQKfFqYNHmEzeuY.geometry}
      material={materials.QJGVimEibrVPDgl}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.pdMvCmwpeAkoCeW.geometry}
      material={materials.NGOEZCWBESexLKh}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.vrzjTiKmYLopiPd.geometry}
      material={materials.MEVjMzJTEhaZcvs}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.CvkOWHzrmzebcZJ.geometry}
      material={materials.wfnrEKgaVfvfqWK}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.yOTKiDjiYXuWNiO.geometry}
      material={materials.YhUwbOowNtzQZLe}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.SxLfbtOduXylABk.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.EnNAOSEIVaSuWpJ.geometry}
      material={materials.OFXHprQRYzLWhkt}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ADonefYsvcXtKpH.geometry}
      material={materials.DLNsJhTsXOXyRyv}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.UspOjqRKFOpussq.geometry}
      material={materials.QuZEQXUCMTTVBxj}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.aDyEHhQqdNXAeLZ.geometry}
      material={materials.ZNHJVGKIjNrOzRW}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.LECZwtQBUgZPmjO.geometry}
      material={materials.lWXWjvFkxQFrEJb}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.rXCYEDOsegyAmTC.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.lVTCqEXnpZgSitt.geometry}
      material={materials.ZNHJVGKIjNrOzRW}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ddADWAcmaIWGMJg.geometry}
      material={materials.rxSuxQqIANGRHiz}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.TqpalCjrkLgzLpV.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ZSqPKeYlKPxNEWB.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.IdYmieSpbujhCxc.geometry}
      material={materials.IBHMPqMUMTOtrsI}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.TUsusthksXuZbdf.geometry}
      material={materials.IBHMPqMUMTOtrsI}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.PKOrlrAAsMwBNrS.geometry}
      material={materials.vXjtXBPImOlMFxP}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.EcAdhMVXbAtIiex.geometry}
      material={materials.dFvoMIRCoaDUnbM}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.YweGVzDlCDdQbSP.geometry}
      material={materials.UkyZxgsBKiwdZzy}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ZRtlLQRpMvpEADx.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.wDBHeqowZtDZGth.geometry}
      material={materials.qIXaGTQgppLzNuS}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.OHcIOEYzhYtjZfD.geometry}
      material={materials.qnEUnGQjuQXNKxN}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.vQAdhEOTkzywBVs.geometry}
      material={materials.ZNHJVGKIjNrOzRW}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.geXCrkUTdpsOETR.geometry}
      material={materials.ijukKFNnAiQVUgK}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.dpTdOHwevMCzFCc.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.yzVrQWTbOqmJlir.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.EhaagtpNhMohbPJ.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.EVXmPvIzEklwlrA.geometry}
      material={materials.CQUuMVcFqmaZHvO}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ctvWVgnrlOtlGZG.geometry}
      material={materials.UuNCqMhYjxSulgC}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.chNeXxuoZrzIryy.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.pFTrDqfkYaVRCGU.geometry}
      material={materials.DLNsJhTsXOXyRyv}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.bVbdLUyDrkGwXtx.geometry}
      material={materials.lWXWjvFkxQFrEJb}
    />
    <mesh
      name="iphone-screen"
      geometry={nodes.vMoesygglprJqFc.geometry}
      position={[0, 0, 0.001]}>
      <meshBasicMaterial 
        map={txt} 
        toneMapped={false}
      />
    </mesh>
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.DYVTLtqMHTsYIjj.geometry}
      material={materials.iHjXNCbUYNhbbsZ}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.isWRMwSjKGqbTVD.geometry}
      material={materials.kBKcxpwXdiSGtcj}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.PTNFFQQRBkFUtRF.geometry}
      material={materials.awGbShLpHNnWFsk}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.uIYCqblZmuXPYYI.geometry}
      material={materials.MEVjMzJTEhaZcvs}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.MdAxmZRZiXvBTSO.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.TfdHbcSiQvZFjbF.geometry}
      material={materials.gjhXpiTpQEgCxGd}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.mNqQyZjhwWciNUh.geometry}
      material={materials.ZNHJVGKIjNrOzRW}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ylWRHNdlCRPqtsy.geometry}
      material={materials.qIXaGTQgppLzNuS}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.tJNZWjOtMfbyhUT.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.kIZQXPmeDWRVqtz.geometry}
      material={materials.nbOnQEWaQWgFLwI}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.vaipIEiiaMhzzbv.geometry}
      material={materials.YhUwbOowNtzQZLe}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.YonvKvLHVPxiPhx.geometry}
      material={materials.qnEUnGQjuQXNKxN}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.AahIxhydztcJZuH.geometry}
      material={materials.awGbShLpHNnWFsk}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.EdYbTyFeZQnIeQC.geometry}
      material={materials.MEVjMzJTEhaZcvs}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.YZBECLUDGvviBZT.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.iyxIOoaWPPUHmJl.geometry}
      material={materials.gjhXpiTpQEgCxGd}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.fevtYqSltnPKyZr.geometry}
      material={materials.ZNHJVGKIjNrOzRW}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.aeMcXvvBPXEDaTv.geometry}
      material={materials.qIXaGTQgppLzNuS}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.yLDQEQsvcAPyhgS.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.fosjWHinlvDIxtE.geometry}
      material={materials.nbOnQEWaQWgFLwI}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.NUhDlFXZPjCanRE.geometry}
      material={materials.YhUwbOowNtzQZLe}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.LDqFywaUpScBDDA.geometry}
      material={materials.PqWcJHzUvFhVflS}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.rXKKjlYsSVqMAUK.geometry}
      material={materials.qnEUnGQjuQXNKxN}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.uhddvjVCxhzvtwR.geometry}
      material={materials.awGbShLpHNnWFsk}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.fFmXVXqSRBWQVTj.geometry}
      material={materials.MEVjMzJTEhaZcvs}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.cfEKqTzNqGyraVw.geometry}
      material={materials.QBlENhkjcaLJepA}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.OygdxdbWLzGYnuM.geometry}
      material={materials.gjhXpiTpQEgCxGd}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.KrJOUieSuKotJJa.geometry}
      material={materials.ZNHJVGKIjNrOzRW}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.CgYEYEEkhDTpxZQ.geometry}
      material={materials.qIXaGTQgppLzNuS}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.ulyoGeNTOIAWLTN.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.nhhtQijpvnjtShG.geometry}
      material={materials.nbOnQEWaQWgFLwI}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.xFqjNekJnblRPew.geometry}
      material={materials.YhUwbOowNtzQZLe}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.yHbaUiTFREbQPQg.geometry}
      material={materials.qnEUnGQjuQXNKxN}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.uRBXhKNBBqOjQFP.geometry}
      material={materials.YoSpklWOdWUJsej}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.vfYbiNrpnUCSaOM.geometry}
      material={materials.qGllEwRHParppQH}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.KqTqIZqDmnQdXvh.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.UbWNRcuQqVxCOmc.geometry}
      material={materials.vWGShIUIFDWIHYr}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.fmzdNzuJtyiMbFm.geometry}
      material={materials.YhUwbOowNtzQZLe}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.XbslRiSRaHJtuKi.geometry}
      material={materials.rxSuxQqIANGRHiz}
    />
    <mesh
      castShadow
      receiveShadow
      geometry={nodes.hzKXTKhgVdRyxai.geometry}
      material={materials.QuZEQXUCMTTVBxj}
     />
    </group>
  </group>
  )
 }

  useGLTF.preload('/models/iphone_16_pro_max.glb')
  export default Iphone;