Исходный код EJIO.ctk_extender.state.events
## /ctk_extender/state/events.py
from typing import Any
from ..event import Event
__all__ = [
'StateChangedEvent',
'CollectionChangedEvent',
'DictionaryChangedEvent',
]
[документация]
class StateChangedEvent[T](Event):
"""Событие, возникающее при изменении одиночного реактивного состояния."""
__slots__ = ('_sender', '_new_value')
def __init__(self, sender: Any, new_value: T) -> None:
"""
:param sender: Ссылка на сам объект состояния State, породивший событие.
:param new_value: Новое вычисленное значение состояния.
"""
super().__init__()
self._sender: Any = sender
self._new_value: T = new_value
@property
def sender(self) -> Any:
return self._sender
@property
def new_value(self) -> T:
return self._new_value
[документация]
class CollectionChangedEvent[T](Event):
"""Событие, возникающее при изменении реактивной коллекции (добавление, удаление, очистка)."""
__slots__ = ('_sender', '_operation', '_items')
def __init__(self, sender: Any, operation: str, items: list[T]) -> None:
"""
:param sender: Ссылка на объект коллекции ReactiveList.
:param operation: Строковый маркер операции ('append', 'extend', 'remove', 'pop', 'clear', 'set').
:param items: Список элементов, затронутых операцией.
"""
super().__init__()
self._sender: Any = sender
self._operation: str = operation
self._items: list[T] = items
@property
def sender(self) -> Any:
return self._sender
@property
def operation(self) -> str:
return self._operation
@property
def items(self) -> list[T]:
return self._items
[документация]
class DictionaryChangedEvent[K, V](Event):
"""Событие, возникающее при изменении реактивного словаря (set, delete, clear)."""
__slots__ = ('_sender', '_operation', '_key', '_value')
def __init__(self, sender: Any, operation: str, key: K | None, value: V | None) -> None:
super().__init__(sender)
self._sender: Any = sender
self._operation: str = operation
self._key: K | None = key
self._value: V | None = value
@property
def sender(self) -> Any: return self._sender
@property
def operation(self) -> str: return self._operation
@property
def key(self) -> K | None: return self._key
@property
def value(self) -> V | None: return self._value