2A News

Report: DOJ Subpoenas Names of ‘Debanked’ Gun Businesses 

Reading Time: 2:0 min

Imagine being a law-abiding owner of a gun shop and suddenly finding yourself unable to obtain critical financial services. Then imagine the companies telling you “No” are not considering your…

View post

Supreme Court Justices Call for Overturning Critical Bruen Ruling

Reading Time: 2:2 min

Last week, the Supreme Court unanimously ruled in United States v. Hemani that marijuana use does not automatically nullify the user’s Second Amendment rights. However, along with Justice Sonya Sotomayor,…

View post

Again? Another HOA Oversteps in Banning Firearms

Reading Time: 2:9 min

Here we go again. Less than three weeks after Florida’s attorney general crushed the anti-Second Amendment policies a homeowner’s association attempted to enforce, another popped up this week with a…

View post

Fifth Circuit Rules Suppressors are Second Amendment ‘Arms’

Reading Time: 2:9 min

The U.S. Court of Appeals for the Fifth Circuit on Thursday accomplished two things in favor of Second Amendment rights.  First, it unanimously ruled in United States v. Comeaux that…

View post

Court Rules Employees Can’t Be Fired for Defending Themselves

Reading Time: 2:9 min

Anyone who browses social media can easily find innumerable examples of belligerent customers harassing employees everywhere from convenience stores to international airports. And some cross the line. For too long,…

View post

Appeals Court Returns Concealed Carry Rights to Young Adults in Florida

Reading Time: 2:9 min

The Florida Fourth District Court of Appeals on Wednesday determined that the state’s prohibition of young adults exercising concealed carry rights infringes on Second Amendment protections. The court determined that…

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>