2A News

Waymo Calls Police Over Passengers With ‘Ghost Gun’

Reading Time: 2:8 min

Two San Francisco juveniles are in hot water today after the self-driving Waymo vehicle they were in earlier this month called the police on them for having an illegal weapon.…

View post

DOJ Begins Restoring 2A Rights to Qualified Offenders

Reading Time: 2:4 min

The Department of Justice (DOJ) has officially begun its rollout of long-overdue reform to restore gun rights to some who lost them due to criminal convictions, many times from decades…

View post

Maryland Rabbi Wins Victory Over ‘Gun-Free Zones’

Reading Time: 1:57 min

A federal judge on Thursday granted an injunction against Montgomery County’s enforcement of “buffer zones” around places of worship, but there’s a catch. Rabbi J. Menashe Shapiro and worshipers at…

View post

Trucker Asks SCOTUS to End Minnesota’s Refusal to Recognize Permits

Reading Time: 2:9 min

Drivers in all walks of life face threats on the job, but over-the-road truckers spend weeks at a time away from home supporting themselves and their loved ones. And as…

View post

Anti-2A Outfit Cosplaying as Hunting Instructors

Reading Time: 2:3 min

Everytown for Gun Safety apparently thinks so highly of itself that it believes it is qualified to train hunters on how to use their weapons. For people who have actually…

View post

FPC: District Court Rules Delaware ‘Ghost Gun’ Ban Unconstitutional

Reading Time: 2:1 min

The fight against government attempts to regulate hobby weapons out of existence produced a milestone victory on Thursday. The Firearms Policy Coalition’s (FPC’s) years-long battle in Rigby v. Jennings resulted…

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>