import { Link, useLocation } from "react-router-dom";
import React, { useEffect, useRef } from "react";
import { Scrollbars } from "react-custom-scrollbars";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { observer } from "mobx-react";
import { useStores } from "app/store/Hook";

export const Tabs: React.FC = observer(() => {
    const {store} = useStores();
    const {pathname} = useLocation();
    const scrollRef = useRef(null);

    const getElementOffset = (el: HTMLElement | null) => {
        let rect = el!.getBoundingClientRect();
        let scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
        let scrollTop = window.pageYOffset || document.documentElement.scrollTop;
        return {top: rect.top + scrollTop, left: rect.left + scrollLeft};
    };

    useEffect(() => {
        const element = document.getElementById(`tab-link-/${pathname.split("/")[1]}`);
        if (element !== null) {
            let offset = getElementOffset(element);

            if (scrollRef.current === null) {
                return;
            }
            // @ts-ignore
            scrollRef.current.scrollLeft(offset.left);
        }
    });

    return (
        <nav className="fixed top-0 w-full bg-darkblue-200 h-12 z-30 flex">
            <Scrollbars autoHide autoHeight autoHeightMin={0} autoHeightMax={48}
                        ref={scrollRef}>
                <div className="flex h-12 w-auto">
                    {store.networks.map((net) => (
                        <Link key={net.path} to={`${net.path}`}
                              className={`flex items-center ${pathname.startsWith(net.path) && "bg-darkblue-100"}`}
                              id={`tab-link-${net.path}`}
                        >
                            <p className={`text-sm px-6 py-2 rounded-lg whitespace-no-wrap ${pathname.startsWith(net.path) && "text-blue-500" || "text-grey-600"}`}>
                                {net.name}
                            </p>
                        </Link>
                    ))}
                    <Link to="/add-node"
                          className={`flex items-center ${pathname.startsWith("/add-node") && "bg-darkblue-100"}`}
                          id={`tab-link-/add-node`}
                    >
                        <p className={`text-sm px-6 py-2 rounded-lg whitespace-no-wrap ${pathname.startsWith("/add-node") && "text-blue-500" || "text-grey-600"}`}>
                            <FontAwesomeIcon icon="plus-circle" className="mr-2"/>
                            <span className="font-semibold text-sm">Add your node</span>
                        </p>
                    </Link>
                </div>
            </Scrollbars>
        </nav>
    );
});