1
0

intersection_observer.py 659 B

12345678910111213141516171819
  1. from typing import Callable
  2. from nicegui.element import Element
  3. from nicegui.events import UiEventArguments, handle_event
  4. class IntersectionObserver(Element, component='intersection_observer.js'):
  5. def __init__(self, *, on_intersection: Callable) -> None:
  6. super().__init__()
  7. self.on_intersection = on_intersection
  8. self.active = True
  9. self.on('intersection', self.handle_intersection, [])
  10. def handle_intersection(self, _) -> None:
  11. self.run_method('stop')
  12. if self.active:
  13. handle_event(self.on_intersection, UiEventArguments(sender=self, client=self.client))
  14. self.active = False