2A News

Minnesota’s Firearms Community Under Attack by Anti-2A Lawmakers

Reading Time: 1:57 min

Minnesota’s increasingly anti-Second Amendment political leadership stoked controversy yet again on Wednesday when they introduced a volatile new measure. SF 4290 is the latest attempt to prohibit nearly all semi-automatic…

View post

Armed Pennsylvania Man Fights Off Threat in Dead of Night 

Reading Time: 1:54 min

Imagine waking in the dead of night to the unmistakable sound of shattering glass and knowing that a bad person is probably already in your home. How long will it…

View post

Virginia Gov. Expected to Sign Slew of Controversial Gun Control Bills

Reading Time: 3:22 min

The curtain is coming down on the 2026 Virginia General Assembly’s legislative session, and it is as bad as Second Amendment advocates feared after the last election. The previous virtual…

View post

Preteen Boy Fires Handgun to Protect Mother from Alleged Attack

Reading Time: 1:56 min

Having a legal and ready firearm at your disposal may be the difference between life and death. It may also be the difference between seeing a loved one suffer at…

View post

Hero Son Arms Himself and Shoots Alleged Burglar

Reading Time: 1:56 min

A Utah family was startled on Thursday during what was likely a typical evening by something no one should ever face. A stranger allegedly burst into the home, causing everyone…

View post

West Virginia’s ‘Machine Gun Bill’ Dies in State Senate

Reading Time: 1:54 min

West Virginia’s novel “machine gun bill,” technically Senate Bill 1071, died a premature death in the state Senate on Friday. The measure would allow law-abiding citizens to acquire machine guns…

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>