2A News

Federal Court Strikes Down ‘Frame and Receiver’ Rule

Reading Time: 2:1 min

On Tuesday, Chief U.S. District Judge Reed O’Connor of the Northern District of Texas dealt yet another blow to Biden-era gun control overreaches. The so-called “ghost gun” rule, commonly referred…

View post

Clyde: Silencer Win ‘Greatest Restoration’ of 2A Rights in a Century

Reading Time: 2:6 min

U.S. Rep. Andrew Clyde (R-GA) is qualified to judge the enormity of a recent Second Amendment legal victory perhaps better than any of his congressional colleagues. After all, he built…

View post

Federal Judge Drives Final Nail in ‘Engaged in the Business’ Rule

Reading Time: 2:9 min

Like zombies on the big screen and in a popular TV show, controversial and seemingly defunct federal regulations governing the right to keep and bear arms have magically reemerged and…

View post

White House Hopeful Slams ATF Reform Proposals

Reading Time: 2:3 min

Entrenched bureaucrats and the political hacks who enable them howl in protest when meaningful reforms have a real shot at succeeding. They know that their work is substandard–and that’s putting…

View post

Powerful 2A Coalition Challenges NY Glock Ban

Reading Time: 1:56 min

On Friday, a broad alliance of influential Second Amendment defenders pooled their power against New York’s notorious gun control regime. The National Rifle Association (NRA), Second Amendment Foundation (SAF), Firearms…

View post

SC Clerk Shot and Killed Alleged Vape Shop Robber

Reading Time: 1:58 min

Good citizens who work sometimes thankless jobs have the same dreams and goals as everyone else. They may toil in liquor stores, fast food outlets, or deliver food at all…

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>