2A News

Gov. Abbott: Texans May Carry Legal Firearms at Protests

Reading Time: 2:5 min

The national discussion over whether it is advisable to bring a firearm to a protest heated up on Thursday. Texas Gov. Greg Abbott (R), a stalwart defender of Second Amendment…

View post

Hawaii Pushes More Ridiculous 2A Infringements Ahead of Likely Defeat

Reading Time: 1:59 min

When defeat is all but certain, the best course of action may be to assess what brought things to this point and determine how to avoid reaching the same outcome…

View post

Texas Woman Took Ex-Boyfriend’s Firearm and Shot Him

Reading Time: 1:59 min

There are far too many instances in which ex-spouses and romantic partners somehow fail to grasp that the relationship is simply over and that they need to ride off into…

View post

One Killed as St. Petersburg Men Defend Themselves from Alleged Attackers

Reading Time: 1:56 min

A suspect is dead and another is critically injured today in what authorities describe as a self-defense incident in St. Petersburg on Friday evening.  The frightening encounter exploded at about…

View post

Report: Minneapolis Firearm Instructors See Massive Surge in Interest

Reading Time: 2:7 min

Fundamental rights are often taken for granted, especially during times of peace and prosperity when it appears that this state of being will last forever. Recent unrest in Minnesota was…

View post

Half of Canada’s Provinces Reject Ottawa’s Gun ‘Buyback’ Scheme

Reading Time: 1:53 min

Canada’s controversial gun confiscation scheme, obviously misrepresented as a “buyback,” is dying a slow and painful death as fully half the nation is in open rebellion. It’s bad enough 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>