function asaObserveTarget(target, callback) {
	var options =
	  arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
	// Set the rootMargin to trigger when the target is 10% past the viewport
	options.rootMargin = options.rootMargin || "10% 0px 0px 0px";
	var observer = new IntersectionObserver(function (entries, observer) {
	  entries.forEach(function (entry) {
		if (entry.isIntersecting) {
		  callback(entry);
  
		  if (!options.loop) observer.unobserve(entry.target); // Unobserve after the first intersection
		}
	  });
	}, options);
	observer.observe(target);
}