import React, { useEffect, useState } from "react";
import AppContext from "../../particles/contexts/app-context";
import Header from "../../organisms/header";
import Footer from "../../organisms/footer";
import Hero from "../../organisms/hero/Hero";
import HomeAboutUs from "../../organisms/home-about-us/HomeAboutUs";
import HomeOurServices from "../../organisms/home-our-services/HomeOurServices";
import HomeCareers from "../../organisms/home-careers/HomeCareers";
import Newsroom from "../../organisms/newsroom/Newsroom";
import SlideSwitcher, {
  HomeSlide,
  homeSlides,
} from "../../molecules/home-slide-switcher/HomeSlideSwitcher";
import HomeTemplate from "../../templates/home";
import Head from "next/head";

const HomePage = ({ appData }: any) => {
  const [collapsed, setCollapsed] = useState(false);

  useEffect(() => {
    const elements: any = homeSlides.map((silde) => document.getElementById(silde.id));

    const observer = new IntersectionObserver(
      (entries) => {
        entries.forEach((entry) => {
          if (entry.isIntersecting) {
            if (entry.target.id !== HomeSlide.Hero) {
              setCollapsed(true);
            } else {
              setCollapsed(false);
            }
          }
        });
      },
      {
        threshold: 0.2,
      }
    );

    elements.forEach((element: any) => {
      observer.observe(element);
    });
  }, []);

  return (
    <AppContext.Provider value={appData}>
      <HomeTemplate header={<Header collapsed={collapsed} />} footer={<Footer />}>
        <Head>
          <title>BASS</title>
        </Head>

        <div className="max-xl:hidden">
          <SlideSwitcher />
        </div>

        <div
          id={HomeSlide.Hero}
          className="mt-[var(--header-height)] h-[calc(100vh-var(--header-height))] [scroll-snap-align:start]"
        >
          <Hero slider={appData.slider} />
        </div>

        <div
          id={HomeSlide.AboutUs}
          className="lg:h-[calc(100vh-var(--header-height))] max-lg:py-20 [scroll-snap-align:start]"
        >
          <HomeAboutUs
            years_no={appData.years_no}
            awards_no={appData.awards_no}
            clients_no={appData.clients_no}
            projects_no={appData.projects_no}
            aboutTitle={appData.aboutTitle}
            aboutShortDescription={appData.aboutShortDescription}
          />
        </div>

        <div className="lg:h-[calc(100vh-var(--header-height))] [scroll-snap-align:start]">
          <HomeOurServices
            title={appData.exploreServicesTitle}
            description={appData.exploreServicesParagraph}
            background={appData.servicesImage}
          />
        </div>

        <div className="lg:h-[calc(100vh-var(--header-height))] max-lg:pt-20 [scroll-snap-align:start]">
          <HomeCareers title={appData.careersTitle} description={appData.careersDescription} />
        </div>

        <div className="lg:h-[calc(100vh-var(--header-height))] max-lg:py-20 [scroll-snap-align:start]">
          <Newsroom data={appData.blogs} twitter={appData.twitter} />
        </div>
      </HomeTemplate>
    </AppContext.Provider>
  );
};

export default HomePage;
