ó
    Ãu„jÁP  ã                  ó˜  • S SK Jr  S SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
JrJrJrJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  S SKJrJr  S SKJr  \(       a  S SK J!r!  \"\#\$4   r% \\&/\&4   r'  " S S\(5      r)\" S5      r*\ " S S\5      5       r+ " S S\5      r,\ " S S\,5      5       r- " S S5      r. " S S5      r/g)é    )ÚannotationsN)ÚABCÚabstractmethod)Ú	dataclass)Úpartial)ÚTYPE_CHECKINGÚAnyÚCallableÚTypeVar)ÚProtocolÚruntime_checkable)Ú_time)Úinvoke)Úcached_property)ÚDEFAULT_EASINGÚEASING)ÚAnimationLevelÚCallbackType)ÚTimer)ÚAppc                  ó   • \ rS rSrSrSrg)ÚAnimationErroré   z+An issue prevented animation from starting.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    ÚŸC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\textual/_animator.pyr   r      s   † Ü5r!   r   Ú
ReturnTypec                  ó2   • \ rS rSrSr        SS jrSrg)Ú
Animatableé&   zÔProtocol for objects that can have their intrinsic values animated.

For example, the transition between two colors can be animated
because the class [`Color`][textual.color.Color.blend] satisfies this protocol.
c                ó   • g ©Nr   )ÚselfÚdestinationÚfactors      r"   ÚblendÚAnimatable.blend.   s   € ð 	r!   r   N)r)   r#   r*   r#   r+   ÚfloatÚreturnr#   )r   r   r   r   r   r,   r    r   r!   r"   r%   r%   &   s,   † ñðØðØ'1ðØ;@ðà	÷r!   r%   c                  óv   • \ rS rSr% SrS\S'    \ S
     SS jj5       rSS jr\SSS jj5       r	SS jr
S	rg)Ú	Animationé4   NúCallbackType | NoneÚon_completec                ó   • [        S5      e)zÈCall the animation, return a boolean indicating whether animation is in-progress or complete.

Args:
    time: The current timestamp

Returns:
    True if the animation has finished, otherwise False.
Ú ©ÚNotImplementedError)r)   ÚtimeÚapp_animation_levels      r"   Ú__call__ÚAnimation.__call__8   s   € ô " "Ó%Ð%r!   c              ƒ  óf   #   • U R                   b  [        U R                   5      I Sh  v•N   gg N7f)zMCalls the [`on_complete`][Animation.on_complete] callback if one is provided.N)r4   r   ©r)   s    r"   Úinvoke_callbackÚAnimation.invoke_callbackH   s-   é € à×ÑÑ'Ü˜×)Ñ)Ó*×*Ñ*ð (Ù*ùs   ‚&1¨/©1c              ƒ  ó   #   • [         e7f)zeStop the animation.

Args:
    complete: Flag to say if the animation should be taken to completion.
r7   ©r)   Úcompletes     r"   ÚstopÚAnimation.stopM   s   é € ô "Ð!ùs   ‚	c                ó   • g©NFr   ©r)   Úothers     r"   Ú__eq__ÚAnimation.__eq__V   s   € Ør!   r   ©Úfull©r9   r.   r:   r   r/   Úbool©r/   ÚNone©T©rC   rO   r/   rQ   ©rI   Úobjectr/   rO   )r   r   r   r   r4   Ú__annotations__r   r;   r?   rD   rJ   r    r   r!   r"   r1   r1   4   sa   ‡ Ø'+€KÐ$Ó+Ø3àð /5ð&àð&ð ,ð&ð 
ô	&ó ð&ô+ð
 õ"ó ð"÷r!   r1   c                  ó¶   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S	\S'   S\S'   S\S'   SrS\S'   SrS\S'     S     SS jjrSSS jjrSS jr	Sr
g)ÚSimpleAnimationéZ   rU   ÚobjÚstrÚ	attributer.   Ú
start_timeÚdurationzfloat | AnimatableÚstart_valueÚ	end_valueÚfinal_valueÚEasingFunctionÚeasingNr3   r4   rM   r   Úlevelc                óx  • U R                   S:X  d  US:X  d  US:X  a<  U R                  S:X  a,  [        U R                  U R                  U R
                  5        g[        SXR                  -
  U R                   -  5      nU R                  U5      nUS:X  a  U R
                  nGOs[        U R                  [        5      (       aN  [        U R                  [        5      (       d   S5       eU R                  R                  U R                  U5      nGO[        U R                  [        [        45      (       d   SU R                  < 35       e[        U R                  [        [        45      (       d   S	U R                  < 35       eU R                  U R                  :”  a;  U R                  U5      nU R                  U R                  U R                  -
  U-  -   nO=S
U R                  U5      -
  nU R                  U R                  U R                  -
  U-  -   n[        U R                  U R                  U5        US
:¬  $ )Nr   ÚnoneÚbasicrM   Tg      ð?zend_value must be animatablez!`start_value` must be float, not z`end_value` must be float, not é   )r^   rd   ÚsetattrrZ   r\   ra   Úminr]   rc   Ú
isinstancer_   r%   r`   r,   Úintr.   )r)   r9   r:   r+   Úeased_factorÚvalues         r"   r;   ÚSimpleAnimation.__call__h   sÿ  € ð �M‰M˜QÓØ" fÓ,Ø" gÓ-Ø—
‘
˜fÓ$ä�D—H‘H˜dŸn™n¨d×.>Ñ.>Ô?Øä�S˜4§/¡/Ñ1°T·]±]ÑBÓCˆØ—{‘{ 6Ó*ˆà�S‹=Ø×$Ñ$ŠEÜ˜×(Ñ(¬*×5Ñ5ÜØ—‘¤
÷ñ ð .à-ó.ð ð ×$Ñ$×*Ñ*¨4¯>©>¸<ÓHŠEäØ× Ñ ¤3¬ ,÷ñ ð Hà2°4×3CÑ3CÑ2FÐGóHð ô Ø—‘¤¤e ÷ñ ð Dà0°·±Ñ0BÐCóDð ð �~‰~ × 0Ñ 0Ó0Ø#Ÿ{™{¨6Ó2�à×$Ñ$Ø—~‘~¨×(8Ñ(8Ñ8¸LÑHñIñ ð
  ! 4§;¡;¨vÓ#6Ñ6�à—N‘N d×&6Ñ&6¸¿¹Ñ&GÈ<Ñ%WÑWð ô 	�—‘˜$Ÿ.™.¨%Ô0Ø˜‰{Ðr!   c              ƒ  ó¤   #   • U(       a+  [        U R                  U R                  U R                  5        U R	                  5       I Sh  v•N   g N7f)zÛStop the animation.

Args:
    complete: Flag to say if the animation should be taken to completion.

Note:
    [`on_complete`][Animation.on_complete] will be called regardless
    of the value provided for `complete`.
N)ri   rZ   r\   r`   r?   rB   s     r"   rD   ÚSimpleAnimation.stop”   s4   é € ö Ü�D—H‘H˜dŸn™n¨d¯n©nÔ=Ø×"Ñ"Ó$×$Ó$ùs   ‚AAÁAÁ	Ac                ó    • [        U[        5      (       a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ grG   )rk   rX   ra   r^   rH   s     r"   rJ   ÚSimpleAnimation.__eq__¢   sB   € Ü�eœ_×-Ñ-à× Ñ  E×$5Ñ$5Ñ5÷ 4Ø—M‘M U§^¡^Ñ3ðð r!   r   rL   rN   rR   rS   rT   )r   r   r   r   rV   r4   rd   r;   rD   rJ   r    r   r!   r"   rX   rX   Z   sv   ‡ à	ƒKØƒNØÓØƒOØ#Ó#Ø!Ó!ØÓØÓØ'+€KÐ$Ó+Ø"€Eˆ>Ó"ØMð BHð*Øð*Ø0>ð*à	õ*öX%÷r!   rX   c                  ób   • \ rS rSrS
S jrSSSS\SSS.                   SS jjrS	rg)ÚBoundAnimatoré«   c                ó   • Xl         X l        g r(   ©Ú	_animatorÚ_obj)r)   ÚanimatorrZ   s      r"   Ú__init__ÚBoundAnimator.__init__¬   s   € Ø!ŒØ�	r!   .Nç        rM   )ra   r^   ÚspeedÚdelayrc   r4   rd   c               ó4  • [        U R                  U5      n
[        U[        5      (       a"  [	        U
S5      (       a  U
R                  U5      n[        U[        5      (       a	  [        U   OUnU R                  R                  U R                  UUUUUUUUU	S9
$ )a  Animate an attribute.

Args:
    attribute: Name of the attribute to animate.
    value: The value to animate to.
    final_value: The final value of the animation. Defaults to `value` if not set.
    duration: The duration (in seconds) of the animation.
    speed: The speed of the animation.
    delay: A delay (in seconds) before the animation starts.
    easing: An easing method.
    on_complete: A callable to invoke when the animation is finished.
    level: Minimum level required for the animation to take place (inclusive).
Úparse)	r\   rn   ra   r^   r   r€   rc   r4   rd   )	Úgetattrrz   rk   r[   Úhasattrr‚   r   ry   Úanimate)r)   r\   rn   ra   r^   r   r€   rc   r4   rd   r_   Úeasing_functions               r"   r;   ÚBoundAnimator.__call__°   s”   € ô4 ˜dŸi™i¨Ó3ˆÜ�eœS×!Ñ!¤g¨k¸7×&CÑ&Cð  ×%Ñ% eÓ,ˆEÜ,6°v¼s×,CÑ,Cœ& š.ÈˆØ�~‰~×%Ñ%Ø�I‰IØØØ#ØØØØ"Ø#Øð &ð 
ð 	
r!   rx   )r{   ÚAnimatorrZ   rU   r/   rQ   )r\   r[   rn   zstr | float | Animatablera   rU   r^   úfloat | Noner   r‰   r€   r.   rc   úEasingFunction | strr4   r3   rd   r   r/   rQ   )r   r   r   r   r|   r   r;   r    r   r!   r"   ru   ru   «   sŠ   † ôð "Ø!%Ø"ØØ'5Ø+/Ø &ñ,
àð,
ð (ð,
ð
 ð,
ð ð,
ð ð,
ð ð,
ð %ð,
ð )ð,
ð ð,
ð 
÷,
ð ,
r!   ru   c                  óz  • \ rS rSrSrSSS jjr\SS j5       r\SS j5       rSS jr	SS jr
S S jrS!S	 jrS
SS\SSSS.                     S"S jjrS#S jrS
SS\SSS.                   S$S jjr      S%S jrS%S jr S&       S'S jjrS(S jrSS jrS)S jrSS jrSS jrSrg)*rˆ   éß   zGAn object to manage updates to a given attribute over a period of time.c                ó\   • 0 U l          0 U l         Xl         [        USU-  SU SS9U l        g)z¤Initialise the animator object.

Args:
    app: The application that owns the animator.
    frames_per_second: The number of frames/second to run the animation at.
rh   rˆ   T)ÚnameÚcallbackÚpauseN)Ú_animationsÚ
_scheduledÚappr   Ú_timer)r)   r“   Úframes_per_seconds      r"   r|   ÚAnimator.__init__â   sB   € ð ;=ˆÔØ[Ø57ˆŒØaØŒØ4ÜØØÐ!Ñ!ØØØñ
ˆ�r!   c                ó,   • [         R                  " 5       $ )z!The timer that runs the animator.©ÚasyncioÚEventr>   s    r"   Ú_idle_eventÚAnimator._idle_event÷   ó   € ô �}Š}‹Ðr!   c                ó,   • [         R                  " 5       $ )z1Flag if no animations are currently taking place.r˜   r>   s    r"   Ú_complete_eventÚAnimator._complete_eventü   r�   r!   c              ƒ  ó¨   #   • U R                   R                  5         U R                  R                  5         U R                  R	                  5         g7f)zStart the animator task.N)r›   ÚsetrŸ   r”   Ú_startr>   s    r"   ÚstartÚAnimator.start  s9   é € à×Ñ×ÑÔØ×Ñ× Ñ Ô"Ø�‰×ÑÕùs   ‚AAc              ƒ  óP  #   •  U R                   R                  5         U R                  R                  5         U R                  R                  5         g! [        R                   a     NKf = f! U R                  R                  5         U R                  R                  5         f = f7f)zStop the animator task.N)r”   rD   r™   ÚCancelledErrorr›   r¢   rŸ   r>   s    r"   rD   ÚAnimator.stop  s€   é € ð	'Ø�K‰K×ÑÔð ×Ñ× Ñ Ô"Ø× Ñ ×$Ñ$Õ&øô	 ×%Ñ%ó 	Ùð	ûð ×Ñ× Ñ Ô"Ø× Ñ ×$Ñ$Õ&üs3   ‚B&„A ž5B&ÁA*Á'A- Á)A*Á*A- Á-6B#Â#B&c                ó   • [        X5      $ )znBind the animator to a given object.

Args:
    obj: The object to bind to.

Returns:
    The bound animator.
)ru   )r)   rZ   s     r"   ÚbindÚAnimator.bind  s   € ô ˜TÓ'Ð'r!   c                ób   • [        U5      U4nX0R                  ;   =(       d    X0R                  ;   $ )a  Does the object/attribute pair have an ongoing or scheduled animation?

Args:
    obj: An object to check for.
    attribute: The attribute on the object to test for.

Returns:
    `True` if that attribute is being animated for that object, `False` if not.
)Úidr‘   r’   )r)   rZ   r\   Úkeys       r"   Úis_being_animatedÚAnimator.is_being_animated  s-   € ô �#‹w˜	Ð"ˆØ×&Ñ&Ñ&×@¨#·±Ñ*@Ð@r!   .Nr~   rM   )ra   r^   r   rc   r€   r4   rd   c               ó  • U R                  U5        [        U R                  UUUUUUUU	U
S9
nU(       aN  U R                  R	                  5         U R
                  R                  X‹5      U R                  [        U5      U4'   gU" 5         g)ag  Animate an attribute to a new value.

Args:
    obj: The object containing the attribute.
    attribute: The name of the attribute.
    value: The destination value of the attribute.
    final_value: The final value, or ellipsis if it is the same as ``value``.
    duration: The duration of the animation, or ``None`` to use speed.
    speed: The speed of the animation.
    easing: An easing function.
    delay: Number of seconds to delay the start of the animation by.
    on_complete: Callback to run after the animation completes.
    level: Minimum level required for the animation to take place (inclusive).
©ra   r^   r   rc   r4   rd   N)	Ú_record_animationr   Ú_animaterŸ   Úclearr“   Ú	set_timerr’   r­   )r)   rZ   r\   rn   ra   r^   r   rc   r€   r4   rd   Úanimate_callbacks               r"   r…   ÚAnimator.animate)  s‡   € ð8 	×Ñ˜yÔ)Ü"Ø�M‰MØØØØ#ØØØØ#Øñ
Ðö Ø× Ñ ×&Ñ&Ô(Ø48·H±H×4FÑ4FØó5ˆD�O‰OœR ›W iÐ0Ò1ñ Õr!   c                ó   • g)z\Called when an attribute is to be animated.

Args:
    attribute: Attribute being animated.
Nr   )r)   r\   s     r"   r³   ÚAnimator._record_animationZ  s   � r!   r²   c               ó   • [        X5      (       d  [        SU< SU< S35      eUb  Ub  Uc  Uc   S5       e[        U5      U4n
 U R                  U
	 USL a  UnU R                  5       n[        U[        5      (       a	  [        U   OUnSn[        US5      (       a!  [        US5      " U[        X5      UUUUUUU	S9	nUGc  [        U[        [        45      (       d%  [        U[        5      (       d  [        S	U< S
35      e[        X5      nXã:X  a;  U R                  R                  U
S5        Ub  U R                   R#                  U5        gUb  UnOH[        US5      (       a  UR%                  U5      U=(       d    S-  nO['        X>-
  5      U=(       d    S-  n[)        UUUUUUUUUb   [+        U R                   R"                  U5      OSU	S9
nUc   S5       eU R                  R-                  U
5      =nb*  UR.                  =nb  U R                   R#                  U5        XÐR                  U
'   U R0                  R3                  5         U R4                  R7                  5         U R8                  R7                  5         g! [         a     GN9f = f)a"  Animate an attribute to a new value.

Args:
    obj: The object containing the attribute.
    attribute: The name of the attribute.
    value: The destination value of the attribute.
    final_value: The final value, or ellipsis if it is the same as ``value``.
    duration: The duration of the animation, or ``None`` to use speed.
    speed: The speed of the animation.
    easing: An easing function.
    on_complete: Callback to run after the animation completes.
    level: Minimum level required for the animation to take place (inclusive).
zCan't animate attribute z on z; attribute does not existNz.An Animation should have a duration OR a speed.Ú__textual_animation__)r^   r   rc   r4   rd   zDon't know how to animate zA; Can only animate <int>, <float>, or objects with a blend methodÚget_distance_toé2   )	r\   r]   r^   r_   r`   ra   rc   r4   rd   z!animation expected to be non-None)r„   ÚAttributeErrorr­   r’   ÚKeyErrorÚ	_get_timerk   r[   r   rƒ   rl   r.   r%   r   r‘   Úpopr“   Ú
call_laterr½   ÚabsrX   r   Úgetr4   r”   Úresumer›   rµ   rŸ   )r)   rZ   r\   rn   ra   r^   r   rc   r4   rd   Úanimation_keyr]   r†   Ú	animationr_   Úanimation_durationÚcurrent_animations                    r"   r´   ÚAnimator._animatea  sÀ  € ô4 �s×&Ñ&Ü Ø*¨9©-°t¸C¹7ÐB\Ð]óð ð Ñ$¨©ØÑ Ñ!2ð	<à;ó	<ð 
ô
 ˜C› )Ð,ˆð	Ø—‘ Ð.ð ˜#ÒØˆKà—^‘^Ó%ˆ
Ü,6°v¼s×,CÑ,Cœ& š.ÈˆØ&*ˆ	ä�3Ð/×0Ñ0Ü Ð%<Ô=ØÜ˜Ó'ØØØ!ØØ&Ø'Øñ
ˆIð ÒÜ˜e¤c¬5 \×2Ñ2¼:Ø”z÷<ñ <ô %Ø0°±	ð :Vð Vóð ô
 " #Ó1ˆKØÓ#Ø× Ñ ×$Ñ$ ]°DÔ9ØÑ*Ø—H‘H×'Ñ'¨Ô4ØàÑ#Ø%-Ñ"ä˜5Ð"3×4Ñ4Ø).×)>Ñ)>¸{Ó)KØŸ ñ*Ñ&ô *-¨UÑ-@Ó)AÀUÇ[ÈbÑ)QÐ&ä'ØØ#Ø%Ø+Ø'ØØ'Ø&ð #Ñ.ô ˜DŸH™H×/Ñ/°Ô=ààñˆIð" Ñ$ÐIÐ&IÓIÐ$à!%×!1Ñ!1×!5Ñ!5°mÓ!DÐDÐÑQØ0×<Ñ<Ð<�ÑIØ—‘×#Ñ# KÔ0à*3×Ñ˜Ñ'Ø�‰×ÑÔØ×Ñ×ÑÔ Ø×Ñ×"Ñ"Õ$øôW ó 	Úð	ús   ÁI? É?
JÊJc              ƒ  ó$  #   •  U R                   R                  U5      nUR                  5         U(       aE  UR                  b7  [        UR                  5      I Sh  v•N   U R                  X5      I Sh  v•N   ggg! [         a     gf = f N0 N7f)z“Stop a scheduled animation.

Args:
    key: The key for the animation to stop.
    complete: Should the animation be moved to its completed state?
N)r’   rÂ   rÀ   rD   Ú	_callbackr   Ú_stop_running_animation)r)   r®   rC   Úschedules       r"   Ú_stop_scheduled_animationÚ"Animator._stop_scheduled_animationÔ  sŠ   é € ð	Ø—‘×*Ñ*¨3Ó/ˆHð 	�‰Œö
 ˜×*Ñ*Ñ6ô ˜×+Ñ+Ó,×,Ð,ð ×.Ñ.¨sÓ=×=Ñ=ð 7ˆ8øô ó 	Ùð	úñ -ñ >ùsE   ‚B„A< Ÿ<BÁBÁBÁ4BÁ5BÁ<
B	ÂBÂB	Â	BÂBc              ƒ  óš   #   •  U R                   R                  U5      nUR                  U5      I Sh  v•N   g! [         a     gf = f N7f)z‘Stop a running animation.

Args:
    key: The key for the animation to stop.
    complete: Should the animation be moved to its completed state?
N)r‘   rÂ   rÀ   rD   )r)   r®   rC   rÈ   s       r"   rÎ   Ú Animator._stop_running_animationñ  sK   é € ð	Ø×(Ñ(×,Ñ,¨SÓ1ˆIð �n‰n˜XÓ&×&Ñ&øô ó 	Ùð	úá&ùs/   ‚A„9 ŸA³A	´A¹
AÁAÁAÁAc              ƒ  óÒ   #   • [        U5      U4nX@R                  ;   a  U R                  XC5      I Sh  v•N   gX@R                  ;   a  U R	                  XC5      I Sh  v•N   gg N/ N7f)a  Stop an animation on an attribute.

Args:
    obj: The object containing the attribute.
    attribute: The name of the attribute.
    complete: Should the animation be set to its final value?

Note:
    If there is no animation scheduled or running, this is a no-op.
N)r­   r’   rÐ   r‘   rÎ   )r)   rZ   r\   rC   r®   s        r"   Ústop_animationÚAnimator.stop_animationþ  sa   é € ô �#‹w˜	Ð"ˆØ—/‘/Ó!Ø×0Ñ0°Ó?×?Ñ?Ø×$Ñ$Ó$Ø×.Ñ.¨sÓ=×=Ñ=ð %ñ @á=ùs!   ‚1A'³A#´(A'ÁA%ÁA'Á%A'c                ób  • SSK Jn  [        U5      U4n U R                  R	                  U5      n[        U[        5      (       a  [        XUR                  5        O&[        XS5      (       a  [        XUR                  5        UR                  b  UR                  5         gg! [
         a     gf = f)aQ  Force stop an animation on an attribute. This will immediately stop the animation,
without running any associated callbacks, setting the attribute to its final value.

Args:
    obj: The object containing the attribute.
    attribute: The name of the attribute.

Note:
    If there is no animation scheduled or running, this is a no-op.
r   )ÚScalarAnimationN)Útextual.css.scalar_animationrØ   r­   r‘   rÂ   rÀ   rk   rX   ri   r`   ra   r4   )r)   rZ   r\   rØ   rÇ   rÈ   s         r"   Úforce_stop_animationÚAnimator.force_stop_animation  sœ   € õ 	Aä˜C› )Ð,ˆð	Ø×(Ñ(×,Ñ,¨]Ó;ˆIô �i¤×1Ñ1Ü�C I×$7Ñ$7Õ8Ü˜	×3Ñ3Ü�C I×$9Ñ$9Ô:à× Ñ Ñ,Ø×!Ñ!Õ#ð -øô ó 	Ùð	ús   •B! Â!
B.Â-B.c                ó$  • U R                   (       da  U R                  R                  5         U R                  R	                  5         U R
                  (       d  U R                  R	                  5         g g U R                  R                  nU R                  5       n[        U R                   R                  5       5      nU HO  nU R                   U   nU" X!5      nU(       d  M#  U R                   U	 UR                  c  M?  UR                  5         MQ     g r(   )r‘   r”   r�   r›   r¢   r’   rŸ   r“   Úanimation_levelrÁ   ÚlistÚkeysr4   )r)   r:   Úanimation_timeÚanimation_keysrÇ   rÈ   Úanimation_completes          r"   r;   ÚAnimator.__call__,  sÓ   € Ø××Ø�K‰K×ÑÔØ×Ñ× Ñ Ô"Ø—?—?Ø×$Ñ$×(Ñ(Õ*ð #ð #'§(¡(×":Ñ":ÐØ!Ÿ^™^Ó-ˆNÜ! $×"2Ñ"2×"7Ñ"7Ó"9Ó:ˆNÛ!/�Ø ×,Ñ,¨]Ñ;�	Ù%.¨~Ó%SÐ"ß%Ð%Ø×(Ñ(¨Ð7Ø ×,Ñ,Ó8Ø!×-Ñ-Ö/ò "0r!   c                ó,   • [         R                  " 5       $ )z\Get the current wall clock time, via the internal Timer.

Returns:
    The wall clock time.
)r   Úget_timer>   s    r"   rÁ   ÚAnimator._get_time>  s   € ô �~Š~ÓÐr!   c              ƒ  óT   #   • U R                   R                  5       I Sh  v•N   g N7f)z$Wait for any animations to complete.N)r›   Úwaitr>   s    r"   Úwait_for_idleÚAnimator.wait_for_idleH  s   é € à×Ñ×#Ñ#Ó%×%Ó%ùó   ‚( &¡(c              ƒ  óT   #   • U R                   R                  5       I Sh  v•N   g N7f)z:Wait for any current and scheduled animations to complete.N)rŸ   rè   r>   s    r"   Úwait_until_completeÚAnimator.wait_until_completeL  s   é € à×"Ñ"×'Ñ'Ó)×)Ó)ùrë   )r‘   r’   r”   r“   )é<   )r“   r   r•   rl   r/   rQ   )r/   zasyncio.EventrP   )rZ   rU   r/   ru   )rZ   rU   r\   r[   r/   rO   )rZ   rU   r\   r[   rn   r	   ra   rU   r^   r‰   r   r‰   rc   rŠ   r€   r.   r4   r3   rd   r   r/   rQ   )r\   r[   r/   rQ   )rZ   rU   r\   r[   rn   r	   ra   rU   r^   r‰   r   r‰   rc   rŠ   r4   r3   rd   r   r/   rQ   )r®   ÚAnimationKeyrC   rO   r/   rQ   rR   )rZ   rU   r\   r[   rC   rO   r/   rQ   )rZ   rU   r\   r[   r/   rQ   )r/   r.   )r   r   r   r   r   r|   r   r›   rŸ   r¤   rD   rª   r¯   r   r…   r³   r´   rÐ   rÎ   rÕ   rÚ   r;   rÁ   ré   rí   r    r   r!   r"   rˆ   rˆ   ß   sÂ  † ÙQö
ð* óó ðð óó ðôô'ô	(ôAð& "Ø!%Ø"Ø'5ØØ+/Ø &ñ/àð/ð ð/ð ð	/ð ð/ð ð/ð ð/ð %ð/ð ð/ð )ð/ð ð/ð 
õ/ôbð "Ø!%Ø"Ø'5Ø+/Ø &ñq%àðq%ð ðq%ð ð	q%ð ðq%ð ðq%ð ðq%ð %ðq%ð )ðq%ð ðq%ð 
õq%ðf>Øð>Ø+/ð>à	ô>ô:'ð =Að>Øð>Ø&)ð>Ø59ð>à	õ>ô&$ô60ô$ ô&÷*r!   rˆ   )0Ú
__future__r   r™   Úabcr   r   Údataclassesr   Ú	functoolsr   Útypingr   r	   r
   r   Útyping_extensionsr   r   Útextualr   Útextual._callbackr   Útextual._compatr   Útextual._easingr   r   Útextual._typesr   r   Útextual.timerr   Útextual.appr   Útuplerl   r[   rð   r.   rb   Ú	Exceptionr   r#   r%   r1   rX   ru   rˆ   r   r!   r"   Ú<module>r      sÐ   ðÝ "ã ß #Ý !Ý ß 8Ó 8ç 9å Ý $Ý +ß 2ß 7Ý æÝà˜˜c˜‘?€LØSà˜5˜' 5˜.Ñ)€ðô6�Yô 6ñ �\Ó"€
ð ô
�ó 
ó ð
ô#�ô #ðL ôM�ió Mó ðM÷`1
ñ 1
÷ho*ò o*r!   