492 lines
14 KiB
Python
Executable File

# DO NOT EDIT THIS FILE!
#
# This file is generated from the CDP specification. If you need to make
# changes, edit the generator and regenerate all of the modules.
#
# CDP domain: Animation (experimental)
from __future__ import annotations
from .util import event_class, T_JSON_DICT
from dataclasses import dataclass
import enum
import typing
from . import dom
from . import runtime
@dataclass
class Animation:
'''
Animation instance.
'''
#: ``Animation``'s id.
id_: str
#: ``Animation``'s name.
name: str
#: ``Animation``'s internal paused state.
paused_state: bool
#: ``Animation``'s play state.
play_state: str
#: ``Animation``'s playback rate.
playback_rate: float
#: ``Animation``'s start time.
#: Milliseconds for time based animations and
#: percentage [0 - 100] for scroll driven animations
#: (i.e. when viewOrScrollTimeline exists).
start_time: float
#: ``Animation``'s current time.
current_time: float
#: Animation type of ``Animation``.
type_: str
#: ``Animation``'s source animation node.
source: typing.Optional[AnimationEffect] = None
#: A unique ID for ``Animation`` representing the sources that triggered this CSS
#: animation/transition.
css_id: typing.Optional[str] = None
#: View or scroll timeline
view_or_scroll_timeline: typing.Optional[ViewOrScrollTimeline] = None
def to_json(self):
json = dict()
json['id'] = self.id_
json['name'] = self.name
json['pausedState'] = self.paused_state
json['playState'] = self.play_state
json['playbackRate'] = self.playback_rate
json['startTime'] = self.start_time
json['currentTime'] = self.current_time
json['type'] = self.type_
if self.source is not None:
json['source'] = self.source.to_json()
if self.css_id is not None:
json['cssId'] = self.css_id
if self.view_or_scroll_timeline is not None:
json['viewOrScrollTimeline'] = self.view_or_scroll_timeline.to_json()
return json
@classmethod
def from_json(cls, json):
return cls(
id_=str(json['id']),
name=str(json['name']),
paused_state=bool(json['pausedState']),
play_state=str(json['playState']),
playback_rate=float(json['playbackRate']),
start_time=float(json['startTime']),
current_time=float(json['currentTime']),
type_=str(json['type']),
source=AnimationEffect.from_json(json['source']) if 'source' in json else None,
css_id=str(json['cssId']) if 'cssId' in json else None,
view_or_scroll_timeline=ViewOrScrollTimeline.from_json(json['viewOrScrollTimeline']) if 'viewOrScrollTimeline' in json else None,
)
@dataclass
class ViewOrScrollTimeline:
'''
Timeline instance
'''
#: Orientation of the scroll
axis: dom.ScrollOrientation
#: Scroll container node
source_node_id: typing.Optional[dom.BackendNodeId] = None
#: Represents the starting scroll position of the timeline
#: as a length offset in pixels from scroll origin.
start_offset: typing.Optional[float] = None
#: Represents the ending scroll position of the timeline
#: as a length offset in pixels from scroll origin.
end_offset: typing.Optional[float] = None
#: The element whose principal box's visibility in the
#: scrollport defined the progress of the timeline.
#: Does not exist for animations with ScrollTimeline
subject_node_id: typing.Optional[dom.BackendNodeId] = None
def to_json(self):
json = dict()
json['axis'] = self.axis.to_json()
if self.source_node_id is not None:
json['sourceNodeId'] = self.source_node_id.to_json()
if self.start_offset is not None:
json['startOffset'] = self.start_offset
if self.end_offset is not None:
json['endOffset'] = self.end_offset
if self.subject_node_id is not None:
json['subjectNodeId'] = self.subject_node_id.to_json()
return json
@classmethod
def from_json(cls, json):
return cls(
axis=dom.ScrollOrientation.from_json(json['axis']),
source_node_id=dom.BackendNodeId.from_json(json['sourceNodeId']) if 'sourceNodeId' in json else None,
start_offset=float(json['startOffset']) if 'startOffset' in json else None,
end_offset=float(json['endOffset']) if 'endOffset' in json else None,
subject_node_id=dom.BackendNodeId.from_json(json['subjectNodeId']) if 'subjectNodeId' in json else None,
)
@dataclass
class AnimationEffect:
'''
AnimationEffect instance
'''
#: ``AnimationEffect``'s delay.
delay: float
#: ``AnimationEffect``'s end delay.
end_delay: float
#: ``AnimationEffect``'s iteration start.
iteration_start: float
#: ``AnimationEffect``'s iterations.
iterations: float
#: ``AnimationEffect``'s iteration duration.
#: Milliseconds for time based animations and
#: percentage [0 - 100] for scroll driven animations
#: (i.e. when viewOrScrollTimeline exists).
duration: float
#: ``AnimationEffect``'s playback direction.
direction: str
#: ``AnimationEffect``'s fill mode.
fill: str
#: ``AnimationEffect``'s timing function.
easing: str
#: ``AnimationEffect``'s target node.
backend_node_id: typing.Optional[dom.BackendNodeId] = None
#: ``AnimationEffect``'s keyframes.
keyframes_rule: typing.Optional[KeyframesRule] = None
def to_json(self):
json = dict()
json['delay'] = self.delay
json['endDelay'] = self.end_delay
json['iterationStart'] = self.iteration_start
json['iterations'] = self.iterations
json['duration'] = self.duration
json['direction'] = self.direction
json['fill'] = self.fill
json['easing'] = self.easing
if self.backend_node_id is not None:
json['backendNodeId'] = self.backend_node_id.to_json()
if self.keyframes_rule is not None:
json['keyframesRule'] = self.keyframes_rule.to_json()
return json
@classmethod
def from_json(cls, json):
return cls(
delay=float(json['delay']),
end_delay=float(json['endDelay']),
iteration_start=float(json['iterationStart']),
iterations=float(json['iterations']),
duration=float(json['duration']),
direction=str(json['direction']),
fill=str(json['fill']),
easing=str(json['easing']),
backend_node_id=dom.BackendNodeId.from_json(json['backendNodeId']) if 'backendNodeId' in json else None,
keyframes_rule=KeyframesRule.from_json(json['keyframesRule']) if 'keyframesRule' in json else None,
)
@dataclass
class KeyframesRule:
'''
Keyframes Rule
'''
#: List of animation keyframes.
keyframes: typing.List[KeyframeStyle]
#: CSS keyframed animation's name.
name: typing.Optional[str] = None
def to_json(self):
json = dict()
json['keyframes'] = [i.to_json() for i in self.keyframes]
if self.name is not None:
json['name'] = self.name
return json
@classmethod
def from_json(cls, json):
return cls(
keyframes=[KeyframeStyle.from_json(i) for i in json['keyframes']],
name=str(json['name']) if 'name' in json else None,
)
@dataclass
class KeyframeStyle:
'''
Keyframe Style
'''
#: Keyframe's time offset.
offset: str
#: ``AnimationEffect``'s timing function.
easing: str
def to_json(self):
json = dict()
json['offset'] = self.offset
json['easing'] = self.easing
return json
@classmethod
def from_json(cls, json):
return cls(
offset=str(json['offset']),
easing=str(json['easing']),
)
def disable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Disables animation domain notifications.
'''
cmd_dict: T_JSON_DICT = {
'method': 'Animation.disable',
}
json = yield cmd_dict
def enable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Enables animation domain notifications.
'''
cmd_dict: T_JSON_DICT = {
'method': 'Animation.enable',
}
json = yield cmd_dict
def get_current_time(
id_: str
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,float]:
'''
Returns the current time of the an animation.
:param id_: Id of animation.
:returns: Current time of the page.
'''
params: T_JSON_DICT = dict()
params['id'] = id_
cmd_dict: T_JSON_DICT = {
'method': 'Animation.getCurrentTime',
'params': params,
}
json = yield cmd_dict
return float(json['currentTime'])
def get_playback_rate() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,float]:
'''
Gets the playback rate of the document timeline.
:returns: Playback rate for animations on page.
'''
cmd_dict: T_JSON_DICT = {
'method': 'Animation.getPlaybackRate',
}
json = yield cmd_dict
return float(json['playbackRate'])
def release_animations(
animations: typing.List[str]
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Releases a set of animations to no longer be manipulated.
:param animations: List of animation ids to seek.
'''
params: T_JSON_DICT = dict()
params['animations'] = [i for i in animations]
cmd_dict: T_JSON_DICT = {
'method': 'Animation.releaseAnimations',
'params': params,
}
json = yield cmd_dict
def resolve_animation(
animation_id: str
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,runtime.RemoteObject]:
'''
Gets the remote object of the Animation.
:param animation_id: Animation id.
:returns: Corresponding remote object.
'''
params: T_JSON_DICT = dict()
params['animationId'] = animation_id
cmd_dict: T_JSON_DICT = {
'method': 'Animation.resolveAnimation',
'params': params,
}
json = yield cmd_dict
return runtime.RemoteObject.from_json(json['remoteObject'])
def seek_animations(
animations: typing.List[str],
current_time: float
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Seek a set of animations to a particular time within each animation.
:param animations: List of animation ids to seek.
:param current_time: Set the current time of each animation.
'''
params: T_JSON_DICT = dict()
params['animations'] = [i for i in animations]
params['currentTime'] = current_time
cmd_dict: T_JSON_DICT = {
'method': 'Animation.seekAnimations',
'params': params,
}
json = yield cmd_dict
def set_paused(
animations: typing.List[str],
paused: bool
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Sets the paused state of a set of animations.
:param animations: Animations to set the pause state of.
:param paused: Paused state to set to.
'''
params: T_JSON_DICT = dict()
params['animations'] = [i for i in animations]
params['paused'] = paused
cmd_dict: T_JSON_DICT = {
'method': 'Animation.setPaused',
'params': params,
}
json = yield cmd_dict
def set_playback_rate(
playback_rate: float
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Sets the playback rate of the document timeline.
:param playback_rate: Playback rate for animations on page
'''
params: T_JSON_DICT = dict()
params['playbackRate'] = playback_rate
cmd_dict: T_JSON_DICT = {
'method': 'Animation.setPlaybackRate',
'params': params,
}
json = yield cmd_dict
def set_timing(
animation_id: str,
duration: float,
delay: float
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Sets the timing of an animation node.
:param animation_id: Animation id.
:param duration: Duration of the animation.
:param delay: Delay of the animation.
'''
params: T_JSON_DICT = dict()
params['animationId'] = animation_id
params['duration'] = duration
params['delay'] = delay
cmd_dict: T_JSON_DICT = {
'method': 'Animation.setTiming',
'params': params,
}
json = yield cmd_dict
@event_class('Animation.animationCanceled')
@dataclass
class AnimationCanceled:
'''
Event for when an animation has been cancelled.
'''
#: Id of the animation that was cancelled.
id_: str
@classmethod
def from_json(cls, json: T_JSON_DICT) -> AnimationCanceled:
return cls(
id_=str(json['id'])
)
@event_class('Animation.animationCreated')
@dataclass
class AnimationCreated:
'''
Event for each animation that has been created.
'''
#: Id of the animation that was created.
id_: str
@classmethod
def from_json(cls, json: T_JSON_DICT) -> AnimationCreated:
return cls(
id_=str(json['id'])
)
@event_class('Animation.animationStarted')
@dataclass
class AnimationStarted:
'''
Event for animation that has been started.
'''
#: Animation that was started.
animation: Animation
@classmethod
def from_json(cls, json: T_JSON_DICT) -> AnimationStarted:
return cls(
animation=Animation.from_json(json['animation'])
)
@event_class('Animation.animationUpdated')
@dataclass
class AnimationUpdated:
'''
Event for animation that has been updated.
'''
#: Animation that was updated.
animation: Animation
@classmethod
def from_json(cls, json: T_JSON_DICT) -> AnimationUpdated:
return cls(
animation=Animation.from_json(json['animation'])
)