2A News

Minneapolis Mayor Signs Unenforceable Gun Control Package

Reading Time: 2:6 min

Whatever obvious flaws they normally possess, anti-Second Amendment radicals are at least consistent in their persistence in trying to strip away the right to keep and bear arms. Even when…

View post

2A Coalition Immediately Sues Virginia Over ‘Assault Firearms’ Ban

Reading Time: 1:56 min

Well, that didn’t take long. As controversial Virginia Gov. Abigail Spanberger’s (D) signature on the state’s shiny new ban on so-called “assault firearms” was drying on Thursday, a powerful coalition…

View post

DOJ Expands DC Lawsuit to Include Suppressor Ban

Reading Time: 1:57 min

The revamped Department of Justice (DOJ) signaled Thursday that it intends to aggressively fight for Second Amendment rights in the District of Columbia.  Of course, saying it and doing it…

View post

Pennsylvania Pushes to Become 30th Constitutional Carry State

Reading Time: 2:2 min

While the Tar Heel State keeps dragging its feet as lawmakers debate the merits of the Second Amendment, there’s suddenly a new contender to become the 30th constitutional carry state…

View post

Philadelphia Homeowner Fatally Shoots Female Break-In Suspect

Reading Time: 1:54 min

A lawful gun owner in North Philadelphia received quite the shock Sunday afternoon. It was around 1:15 on what was likely an uneventful weekend day when the unexpected suddenly appeared.…

View post

Florida Man Sues After Being Jailed Over Alleged FBI Error 

Reading Time: 2:10 min

A Florida man filed a Second Amendment-related lawsuit over false imprisonment that should be closely watched by everyone who treasures the right to keep and bear arms. William Michael Brewer…

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>