28 lines
486 B
Python
28 lines
486 B
Python
from collections.abc import MutableSequence
|
|
from dataclasses import dataclass
|
|
from typing import Generic, TypeVar
|
|
|
|
T = TypeVar("T")
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ChangeEvent(Generic[T]):
|
|
index: int
|
|
item: T
|
|
path: MutableSequence[int] | None = None
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class AddItemEvent(ChangeEvent[T]):
|
|
item: T
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class SetItemEvent(ChangeEvent[T]):
|
|
item: T
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RemoveItemEvent(ChangeEvent[T]):
|
|
item: T
|