2A News

Alaska Man Returns Fire and Chases Off Alleged Copper Thieves

Reading Time: 1:58 min

To paraphrase a familiar saying, when seconds count, help is usually minutes away. Now, imagine how true this is for those who live in Alaska, amid vast swaths of remote…

View post

Supreme Court Ends Session with Split Decisions on Young Adult Carry

Reading Time: 2:5 min

The U.S. Supreme Court concluded its recent session with a flurry of activity on Second Amendment issues. Rulings affirming the rights of marijuana users to keep and bear arms and…

View post

DOJ Carries Out Threat to Sue California and Virginia Over Gun Rights

Reading Time: 3:41 min

On June 24, Assistant Attorney General Harmeet Dhillon warned California officials that the state’s pending ban on Glock pistols and similar models was in the Department of Justice’s (DOJ) crosshairs.…

View post

U.S. Supreme Court Agrees to Hear Challenge on Assault Weapons Ban

Reading Time: 3:27 min

The U.S. Supreme Court closed its first term of 2026 on Tuesday, and nine justices are off for summer recess before returning to the bench in October. On their way…

View post

ATF Proposes Clarification of Interstate Travelers’ Gun Rights

Reading Time: 2:13 min

The Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) proposed a rule in May to protect armed citizens from overzealous local and state officials while they travel. Through the Clarifying…

View post

NRA, GOA Score Important Victories Against Spanberger’s ‘Assault Firearm’ Ban

Reading Time: 3:57 min

The legal war against Virginia’s pending “assault firearm” ban produced two significant victories for those opposed to the state’s brazen gun grabbing. Gov. Abigail Spanberger’s (D) radical suppression of fundamental…

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>