2A News

Third Circuit: First Amendment Does Not Protect 3D-Printed Gun Files

Reading Time: 1:57 min

Second Amendment advocates have their hands full defending personal rights against regular incursions by anti-gun lawmakers. There are major victories to celebrate as well as setbacks to be addressed as…

View post

Victory: ‘Egregious’ Suppressor Tax Proposal Pulled in Virginia

Reading Time: 1:51 min

In a legislative session during which Virginia’s Second Amendment opponents waged all-out war on gun rights, any victory is worth celebrating.  Now comes word that the proposed $500 suppressor tax…

View post

Officials Push to Extend Indiana Preemption Law to Shooting Ranges

Reading Time: 1:53 min

Second Amendment opponents strive daily to find new ways to suppress the right to keep and bear arms. Unable to ban firearms outright due to the pesky Bill of Rights,…

View post

2A Groups Slam New Mexico’s Gun Control Schemes

Reading Time: 1:54 min

New Mexico’s anti-gunners treated the new year like a fresh opportunity to infringe on Second Amendment rights, and they did not waste a moment in racing toward that goal. The…

View post

Federal Proposal Would Eliminate ‘Sin Taxes’ on Firearms and Accessories

Reading Time: 3:21 min

The Second Amendment community is accustomed to withstanding the slings and arrows that gun rights opponents frequently hurl at them. When uber-popular modern sporting rifles are smeared as “weapons of…

View post

Kentucky Homeowner Shoots and Kills Alleged Home Invader

Reading Time: 1:51 min

The burglary of an unoccupied residence is bad enough, but if there’s any positive, it’s that the perpetrator chose a target where, at least theoretically, it is unoccupied. Then there’s…

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>