2A News

Hochul Signs Pair of Oppressive Gun Control Bills into Law

Reading Time: 1:52 min

The white-hot arguments swirling around so-called “red flag” laws center on the utter lack of due process afforded to some citizens when authorities seize their firearms. In New York state,…

View post

Delaware’s Controversial Permit-To-Purchase Scheme Set to Take Effect

Reading Time: 2:6 min

The Second Amendment is under siege in Delaware, and gun rights enthusiasts know a loud clock is ticking. On Nov. 16, just days from now, state law will require individuals…

View post

St. Paul’s Anti-Gunners Push Semi-Automatic Rifle Ban

Reading Time: 2:2 min

It’s bad enough that Minnesota’s Second Amendment community is forced to live under Gov. Tim Walz’s (D) anti-gun administration. Now, St. Paul officials are trying to arbitrarily ban many popular…

View post

Police Arrest Atlanta Burglary Victim After He Allegedly Shot Young Suspect

Reading Time: 1:58 min

While the lawfulness of defense of life and property would logically be a given, that is unfortunately not always the case. A recent incident in Atlanta in which a homeowner…

View post

Judge: Florida’s Concealed Carry Minimum Age of 21 is Unconstitutional

Reading Time: 1:55 min

Second Amendment supporters continue to battle laws that discriminate against young adults exercising their rights, and they are happy to report a recent victory in Florida. The encouraging decision came…

View post

AI Firearm Detection System Under Fire After Baltimore Student Held at Gunpoint

Reading Time: 2:3 min

As school safety is increasingly on the front burner, some systems are installing new AI firearm detection systems to ward off possible threats. Suffice it to say, the bugs are…

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>