import { fromEvent } from 'rxjs';

export function switcherArrowFn() {
  const slideLeft: any = document.querySelector('.slide-left');
  const slideRight: any = document.querySelector('.slide-right');

  checkHoriMenu();

  if (slideLeft) {
    fromEvent(slideLeft, 'click').subscribe(() => {
      const menuNav: any = document.querySelector('.main-menu');
      const Html: any = document.querySelector('html');
      const mainContainer1: any = document.querySelector('.main-sidebar');
      const marginLeftValue = Math.ceil(
        Number(window.getComputedStyle(menuNav).marginLeft.split('px')[0])
      );
      const marginRightValue = Math.ceil(
        Number(window.getComputedStyle(menuNav).marginRight.split('px')[0])
      );
      const mainContainer1Width = mainContainer1.offsetWidth;
      if (menuNav.scrollWidth > mainContainer1.offsetWidth) {
        if (!(Html.getAttribute('dir') === 'rtl')) {
          if (
            marginLeftValue < 0 &&
            !(Math.abs(marginLeftValue) < mainContainer1Width)
          ) {
            menuNav.style.marginRight = 0;
            menuNav.style.marginLeft =
              Number(menuNav.style.marginLeft.split('px')[0]) +
              Math.abs(mainContainer1Width) +
              'px';
            slideRight.classList.remove('hidden');
          } else if (marginLeftValue >= 0) {
            menuNav.style.marginLeft = '0px';
            slideLeft.classList.add('hidden');
            slideRight.classList.remove('hidden');
          } else {
            menuNav.style.marginLeft = '0px';
            slideLeft.classList.add('hidden');
            slideRight.classList.remove('hidden');
          }
        } else {
          if (
            marginRightValue < 0 &&
            !(Math.abs(marginRightValue) < mainContainer1Width)
          ) {
            menuNav.style.marginLeft = 0;
            menuNav.style.marginRight =
              Number(menuNav.style.marginRight.split('px')[0]) +
              Math.abs(mainContainer1Width) +
              'px';
            slideRight.classList.remove('hidden');
          } else if (marginRightValue >= 0) {
            menuNav.style.marginRight = '0px';
            slideLeft.classList.add('hidden');
            slideRight.classList.remove('hidden');
          } else {
            menuNav.style.marginRight = '0px';
            slideLeft.classList.add('hidden');
            slideRight.classList.remove('hidden');
          }
        }
      } else {
        menuNav.style.marginLeft = '0px';
        menuNav.style.marginRight = '0px';
      }
      const element = document.querySelector('.main-menu > .slide.open');
      const element1: any = document.querySelector(
        '.main-menu > .slide.open >ul'
      );
      if (element) {
        element.classList.remove('active');
      }
      if (element1) {
        element1.style.display = 'none';
      }
    });
  }

  if (slideRight) {
    fromEvent(slideRight, 'click').subscribe(() => {
      const menuNav: any = document.querySelector('.main-menu');
      const Html: any = document.querySelector('html');
      const mainContainer1: any = document.querySelector('.main-sidebar');
      const marginLeftValue = Math.ceil(
        Number(window.getComputedStyle(menuNav).marginLeft.split('px')[0])
      );
      const marginRightValue = Math.ceil(
        Number(window.getComputedStyle(menuNav).marginRight.split('px')[0])
      );
      const check = menuNav.scrollWidth - mainContainer1.offsetWidth;
      let mainContainer1Width = mainContainer1.offsetWidth;
      if (menuNav.scrollWidth > mainContainer1.offsetWidth) {
        if (!(Html.getAttribute('dir') === 'rtl')) {
          if (Math.abs(check) > Math.abs(marginLeftValue)) {
            menuNav.style.marginRight = 0;
            if (
              !(
                Math.abs(check) >
                Math.abs(marginLeftValue) + mainContainer1Width
              )
            ) {
              mainContainer1Width = Math.abs(check) - Math.abs(marginLeftValue);
              slideRight.classList.add('hidden');
            }
            menuNav.style.marginLeft =
              Number(menuNav.style.marginLeft.split('px')[0]) -
              Math.abs(mainContainer1Width) +
              'px';
            slideLeft.classList.remove('hidden');
          }
        } else {
          if (Math.abs(check) > Math.abs(marginRightValue)) {
            menuNav.style.marginLeft = 0;
            if (
              !(
                Math.abs(check) >
                Math.abs(marginRightValue) + mainContainer1Width
              )
            ) {
              mainContainer1Width =
                Math.abs(check) - Math.abs(marginRightValue);
              slideRight.classList.add('hidden');
            }
            menuNav.style.marginRight =
              Number(menuNav.style.marginRight.split('px')[0]) -
              Math.abs(mainContainer1Width) +
              'px';
            slideLeft.classList.remove('hidden');
          }
        }
      }
      const element = document.querySelector('.main-menu > .slide.open');
      const element1: any = document.querySelector(
        '.main-menu > .slide.open >ul'
      );
      if (element) {
        element.classList.remove('active');
      }
      if (element1) {
        element1.style.display = 'none';
      }
    });
  }
}
export function checkHoriMenu() {
  if (document.querySelector('.slide-left')) {
    const menuNav: any = document.querySelector('.main-menu');
    const mainContainer1: any = document.querySelector('.main-sidebar');
    const slideLeft: any = document.querySelector('.slide-left');
    const slideRight: any = document.querySelector('.slide-right');
    const Html: any = document.querySelector('html');
    const marginLeftValue = Math.ceil(
      Number(window.getComputedStyle(menuNav).marginLeft.split('px')[0])
    );
    const marginRightValue = Math.ceil(
      Number(window.getComputedStyle(menuNav).marginRight.split('px')[0])
    );
    const check = menuNav.scrollWidth - mainContainer1.offsetWidth;
    // Show/Hide the arrows
    if (menuNav.scrollWidth > mainContainer1.offsetWidth) {
      slideRight.classList.remove('hidden');
      slideLeft.classList.add('hidden');
    } else {
      slideRight.classList.add('hidden');
      slideLeft.classList.add('hidden');
      menuNav.style.marginLeft = '0px';
      menuNav.style.marginRight = '0px';
    }
    if (!(Html.getAttribute('dir') === 'rtl')) {
      // LTR check the width and adjust the menu in screen
      if (menuNav.scrollWidth > mainContainer1.offsetWidth) {
        if (Math.abs(check) < Math.abs(marginLeftValue)) {
          menuNav.style.marginLeft = -check + 'px';
          slideLeft.classList.remove('hidden');
          slideRight.classList.add('hidden');
        }
      }
      if (marginLeftValue == 0) {
        slideLeft.classList.add('hidden');
        slideRight.classList.remove('hidden');
      } else {
        slideLeft.classList.remove('hidden');
      }
    } else {
      // RTL check the width and adjust the menu in screen
      if (menuNav.scrollWidth > mainContainer1.offsetWidth) {
        if (Math.abs(check) < Math.abs(marginRightValue)) {
          menuNav.style.marginRight = -check + 'px';
          slideLeft.classList.remove('hidden');
          slideRight.classList.add('hidden');
        }
      }
      if (marginRightValue == 0) {
        slideLeft.classList.add('hidden');
      } else {
        slideLeft.classList.remove('hidden');
      }
    }
    if (marginLeftValue != 0 || marginRightValue != 0) {
      slideLeft.classList.remove('hidden');
    }
  }
}