import React from 'react';
import { StaticQuery, graphql } from 'gatsby';
import { ProductCard, Grid } from './ProductCard';
import { shuffle } from 'weighted-shuffle';
import styled from '@emotion/styled';
import { css } from '@emotion/react';
import Tippy from '@tippyjs/react';
import 'tippy.js/dist/tippy.css'; // optional

const pickRandom = (array, n) =>
  shuffle(array.map(({ probability, ...p }) => [p, probability]))
    .slice(-n)
    .map(([x]) => x);

const products = [
  {
    title: 'Usetiful',
    description: 'User onboarding and product adoption made simple',
    image: '../images/affiliates/usetiful.jpg',
    url: 'https://www.usetiful.com/',
    probability: 1,
  },
  {
    title: 'Modern Treasury',
    description: 'The one place to keep a business’s money flowing',
    image: '../images/affiliates/modern-treasury.jpg',
    url: 'https://www.moderntreasury.com/',
    probability: 1,
  },
  // {
  //   title: 'Material Dashboard PRO',
  //   description: 'Premium Bootstrap 4 Material Admin - $49',
  //   image: '../images/affiliates/opt_mdp_thumbnail.jpg',
  //   url:
  //     'https://www.creative-tim.com/product/material-dashboard-pro?ref=popper.js.org',
  //   probability: 1,
  // },
  // {
  //   title: 'Now UI Dashboard PRO',
  //   description: 'Premium Bootstrap 4 Admin - $49',
  //   image: '../images/affiliates/now-ui-dashboard-pro.jpg',
  //   url:
  //     'https://www.creative-tim.com/product/now-ui-dashboard-pro?ref=popper.js.org',
  //   probability: 1,
  // },
  // {
  //   title: 'Light Bootstrap Dashboard React PRO',
  //   description: 'Premium Bootstrap React Admin Template - $49',
  //   image: '../images/affiliates/light-bootstrap-dashboard-react.jpg',
  //   url:
  //     'https://www.creative-tim.com/product/light-bootstrap-dashboard-pro-react?ref=popper.js.org',
  //   probability: 1,
  // },
  // {
  //   title: 'NextJS Material Kit PRO',
  //   description: 'Premium NextJS Material-UI Kit - $119',
  //   image: '../images/affiliates/nextjs-material-kit-pro.jpg',
  //   url:
  //     'https://www.creative-tim.com/product/nextjs-material-kit-pro?ref=popper.js.org',
  //   probability: 1,
  // },
  // {
  //   title: 'Tailwind Starter Kit',
  //   description: 'A beautiful extension for TailwindCSS - FREE',
  //   image: '../images/affiliates/opt_tsp_tailwindcss_thumbnail.jpg',
  //   url:
  //     'https://www.creative-tim.com/learning-lab/tailwind-starter-kit/presentation?ref=popper.js.org',
  //   probability: 1,
  // },
  // {
  //   title: 'MDB 5 UI Kit',
  //   description: `500+ components, free templates, simple installation - MIT license`,
  //   image: '../images/affiliates/BannerMDB-mini.jpg',
  //   xlImage: '../images/affiliates/BannerMDB.jpg',
  //   url: 'https://mdbootstrap.com/docs/standard/?utm_ref_id=26974',
  //   probability: 2,
  // },
  // {
  //   title: 'Free Bootstrap 5 KIT',
  //   description: '500+ components, free templates, Material Design 2.0',
  //   image: '../images/affiliates/mdb-standard.jpg',
  //   url: 'https://mdbootstrap.com/docs/standard/?utm_ref_id=26974',
  //   probability: 3,
  // },
  // {
  //   title: 'Free Angular Bootstrap 5 Kit',
  //   description: '500+ components, free templates, Material Design 2.0',
  //   image: '../images/affiliates/mdb-angular.jpg',
  //   url: 'https://mdbootstrap.com/docs/b5/angular/?utm_ref_id=26974',
  //   probability: 1,
  // },
  // {
  //   title: 'Free React Bootstrap 5 Kit',
  //   description: '500+ components, free templates, Material Design 2.0',
  //   image: '../images/affiliates/mdb-react.jpg',
  //   url: 'https://mdbootstrap.com/docs/b5/react/?utm_ref_id=26974',
  //   probability: 1,
  // },
  // {
  //   title: 'Free Vue Bootstrap 5 Kit',
  //   description: '500+ components, free templates, Material Design 2.0',
  //   image: '../images/affiliates/mdb-vue.jpg',
  //   url: 'https://mdbootstrap.com/docs/b5/vue/?utm_ref_id=26974',
  //   probability: 1,
  // },
];

const MINI_SPONSORS = [
  {
    logo: require('../images/logos/sponsors/mobilemall.svg'),
    label: 'Mobile Mall - Mobile Phone Prices in Pakistan',
    url: 'https://mobilemall.pk/',
  },
  {
    logo: require('../images/logos/sponsors/coupontoaster.svg'),
    label: 'Coupontoaster - Discount and Coupon Codes',
    url: 'https://coupontoaster.com/',
  },
  {
    logo: require('../images/logos/sponsors/celltrackingapps.svg'),
    label: 'Cell Tracking Apps - Parental Control Software Review Website',
    url: 'http://celltrackingapps.com/',
  },
  {
    logo: require('../images/logos/sponsors/techbuy.svg'),
    label: 'wazirx referral code',
    url: 'https://techbuy.in/wazirx-referral-code/',
  },
  {
    logo: require('../images/logos/sponsors/dpcoupon.svg'),
    label: 'dpcoupon - coupon codes and discounts',
    url: 'https://www.dpcoupon.com/',
  },
  {
    logo: require('../images/logos/sponsors/ggc.svg'),
    label: 'ggc - espionner un téléphone Android iPhone Pour Control Parental',
    url: 'https://www.global-gsm-control.com/',
  },
  {
    logo: require('../images/logos/sponsors/livingfeeds.svg'),
    label: 'Living Feeds',
    url: 'https://livingfeeds.com/',
  },
  {
    logo: require('../images/logos/sponsors/bestforandroid.svg'),
    label: 'Best Android Apps, Downloads & How to Guides',
    url: 'https://bestforandroid.com/',
  },
  {
    logo: require('../images/logos/sponsors/titanam.svg'),
    label: 'Titan Asset Management',
    url: 'https://titanam.co.uk/',
  },
  {
    logo: require('../images/logos/sponsors/dailycontributors.svg'),
    label: 'Dailycontributors Blog',
    url: 'https://dailycontributors.com',
  },
];

const random = products.slice(0, 3);
const bigOne = random.find((x) => x.xlImage != null);

const MiniSponsor = styled((props) => (
  <Tippy content={props.alt}>
    <a
      css={css`
        display: block;
      `}
      href={props.href}
      target="_blank"
      className={props.className}
      rel="noopener noreferrer"
    >
      <img src={props.src} alt={props.alt} width="40" height="40" />
    </a>
  </Tippy>
))`
  opacity: 0.2;
  transition: opacity 0.2s ease-in-out;
  &:hover {
    opacity: 1;
  }
  img {
    height: 40px;
    margin: 10px;
  }
`;

export const Sponsors = () => {
  if (typeof window === 'undefined') {
    return null;
  }

  return (
    <>
      <StaticQuery
        query={graphql`
          query getAllImages {
            allImageSharp {
              edges {
                node {
                  id
                  fluid {
                    src
                    srcSet
                    srcWebp
                    srcSetWebp
                    base64
                    aspectRatio
                    originalImg
                    originalName
                    sizes
                  }
                }
              }
            }
          }
        `}
        render={(data) => {
          if (
            typeof window !== 'undefined' &&
            window.innerWidth > 600 &&
            bigOne
          ) {
            const edge = data.allImageSharp.edges.find((edge) =>
              bigOne.xlImage.includes(edge.node.fluid.originalName)
            );
            return (
              <ProductCard
                title={bigOne.title}
                description={bigOne.description}
                fluid={edge.node.fluid}
                url={bigOne.url}
              />
            );
          } else {
            return (
              <Grid>
                {random.map(({ title, description, image, url }) => {
                  const edge = data.allImageSharp.edges.find((edge) =>
                    image.includes(edge.node.fluid.originalName)
                  );
                  if (edge == null) return null;
                  return (
                    <ProductCard
                      title={title}
                      description={description}
                      fluid={edge.node.fluid}
                      url={url}
                    />
                  );
                })}
              </Grid>
            );
          }
        }}
      />

      <div style={{ height: '2em' }} />

      <div
        css={css`
          display: flex;
          justify-content: center;
          flex-wrap: wrap;
        `}
      >
        {MINI_SPONSORS.map((sponsor) => (
          <MiniSponsor
            src={sponsor.logo}
            alt={sponsor.label}
            href={sponsor.url}
          />
        ))}
      </div>
    </>
  );
};