Guns

Report: AI ‘Snippets’ Blocking Traffic to 2A Websites

Reading Time: 2:5 min

Internet traffic is everything for Second Amendment advocates just as it is for millions in today’s world. Unfortunately, the advent of artificial intelligence erected yet another speed bump between the…

View post

Delaware’s Gun Ban on Under-21 Citizens Ruled Unconstitutional

Reading Time: 1:54 min

Young adults in Delaware are entitled to full Second Amendment rights, according to a court ruling last week. The Kent County Superior Court determined that House Bill 451, an anti-gun…

View post

Florida Launches 2A Sales Tax Holiday Through 2026

Reading Time: 1:53 min

As some states stubbornly and consistently bend the knee to anti-gunners and attempt to eradicate gun rights, Florida is on a notably different path.  Gov. Ron DeSantis (R) announced on…

View post

DOJ Seeks to Present Oral Arguments Before High Court on Illinois’ ‘Assault Weapon’ Ban

Reading Time: 1:53 min

It’s a new day for the Department of Justice (DOJ), and those of us who have become accustomed to seeing Second Amendment rights trampled on now have new cause to…

View post

Good Guy with a Gun Stops Two Alleged Convenience Store Robbers

Reading Time: 2:7 min

An armed convenience store customer in Florida went into full beast mode when he found himself in the middle of a violent armed robbery, and he emerged as a hero.…

View post

Report: Former Senior ATF Official Leaves Agency to Lobby Against Gun Rights

Reading Time: 3:23 min

Most reasonable people agree that it is a bad look when a regulator or other official from a federal agency leaves to work against the very product or service they…

View post
<script>
  /*Source: https://github.com/Krzysztof-Antosik/Two-direction-Sticky-Sidebar*/
  
  // Verificar el ancho de pantalla al cargar y redimensionar
  function checkScreenWidth() {
    if (window.innerWidth <= 767) {
      // Si la pantalla es menor o igual a 676px, no ejecutar el código
      return;
    }

    const stickyElement = document.querySelector('.fb-sidebar__aside');
    const startPosition = stickyElement.getBoundingClientRect().top;

    let endScroll = window.innerHeight - stickyElement.offsetHeight - 500;
    let currPos = window.scrollY;
    let screenHeight = window.innerHeight;
    let stickyElementHeight = stickyElement.offsetHeight;
    let topGap = 40;
    let bottomGap = 40;

    setTimeout(() => {
      if (stickyElement.hasAttribute('data-top-gap')) {
        const dataTopGap = stickyElement.getAttribute('data-top-gap');
        topGap = dataTopGap === 'auto' ? startPosition : parseInt(dataTopGap);
      }

      if (stickyElement.hasAttribute('data-bottom-gap')) {
        bottomGap = parseInt(stickyElement.getAttribute('data-bottom-gap'));
      }
    }, 100);

    stickyElement.style.position = 'sticky';
    stickyElement.style.top = `${topGap}px`;
    stickyElement.style.height = 'fit-content';

    function positionStickySidebar() {
      endScroll = window.innerHeight - stickyElement.offsetHeight - bottomGap;
      const stickyElementTop = parseInt(stickyElement.style.top.replace('px', ''));

      if (stickyElementHeight + topGap + bottomGap > screenHeight) {
        if (window.scrollY < currPos) {
          if (stickyElementTop < topGap) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop >= topGap && stickyElementTop !== topGap) {
            stickyElement.style.top = `${topGap}px`;
          }
        } else {
          if (stickyElementTop > endScroll) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop < endScroll && stickyElementTop !== endScroll) {
            stickyElement.style.top = `${endScroll}px`;
          }
        }
      } else {
        stickyElement.style.top = `${topGap}px`;
      }
      currPos = window.scrollY;
    }

    function stickyElementToMe() {
      stickyElement.style.top = `${topGap}px`;
    }

    function updateSticky() {
      screenHeight = window.innerHeight;
      stickyElementHeight = stickyElement.offsetHeight;
      positionStickySidebar();
    }

    setTimeout(() => {
      window.addEventListener('resize', () => {
        currPos = window.scrollY;
        updateSticky();
      });

      document.addEventListener('scroll', updateSticky, {
        capture: true,
        passive: true
      });
    }, 1000);
  }

  // Verificar el ancho de pantalla al cargar y redimensionar
  window.addEventListener('load', checkScreenWidth);
  window.addEventListener('resize', checkScreenWidth);
</script>