2A News

Uncertainty Plagues Gun Laws New and Old After Supreme Court Ruling

Reading Time: 3:10 min

Enemies of the Second Amendment are increasingly worried over the impact of last summer’s landmark Supreme Court ruling in New York State Rifle and Pistol Association v. Bruen. An exhaustive…

View post

Lawmakers Want to Use ‘Star Trek’ Technology to Track Your Guns

Reading Time: 3:20 min

Science fiction can be loads of fun. It creates fantasy worlds that allow our imaginations to explore extreme possibilities that we never encounter in our day-to-day lives. But the reality…

View post

Armed Civilian on Military Base Fires Warning Shot, Scares Off Armed Intruder

Reading Time: 3:18 min

An armed civilian who is also the spouse of the Air Force’s top noncommissioned officer stopped an armed intruder on a military base with a warning shot last week. The…

View post

Hotel Clerk Armed With Handgun Stops Rifle-Carrying Robber

Reading Time: 3:1 min

Two things we have learned we can count on are bad guys doing bad things and good guys — and ladies — exercising their Second Amendment rights to stop them.…

View post

ATF Barred from Enforcing Pistol Brace Rule in Montana

Reading Time: 3:6 min

The battle lines are forming over the Bureau of Alcohol, Tobacco, Firearms, and Explosives’ (ATF) new pistol brace rule. Now entering the fray is Gov. Greg Gianforte of Montana, who…

View post

Powerful Legal Challenges Mounted Against ATF Over Pistol Brace Rule

Reading Time: 3:5 min

A pair of strong legal challenges were launched Thursday against the Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) new pistol brace rule. The National Rifle Association (NRA), 25 states…

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>