12345678910111213141516171819202122 |
- from typing import Callable
- from nicegui.dependencies import register_component
- from nicegui.element import Element
- from nicegui.events import EventArguments, handle_event
- register_component('intersection_observer', __file__, 'intersection_observer.js')
- class IntersectionObserver(Element):
- def __init__(self, *, on_intersection: Callable) -> None:
- super().__init__('intersection_observer')
- self.on_intersection = on_intersection
- self.active = True
- self.on('intersection', self.handle_intersection)
- def handle_intersection(self, _) -> None:
- self.run_method('stop')
- if self.active:
- handle_event(self.on_intersection, EventArguments(sender=self, client=self.client))
- self.active = False
|