Ë
    ‹`g  ã                   óœ   — d dl mZ d dlmZ d dlmZmZ  G d„ dee«      Z G d„ de«      Z G d„ d	e«      Z	 G d
„ de	«      Z
 G d„ de	«      Zy)é    )ÚBaseElement)ÚXLink)ÚstrlistÚ	is_stringc                   óT   ‡ — e Zd ZdZdZd	ˆ fd„	Zˆ fd„Zd	d„Zd
d„Z	 	 dd„Z	d„ Z
ˆ xZS )ÚSeta€   The **set** element provides a simple means of just setting the value
    of an attribute for a specified duration. It supports all attribute types,
    including those that cannot reasonably be interpolated, such as string
    and boolean values. The **set** element is non-additive. The additive and
    accumulate attributes are not allowed, and will be ignored if specified.
    Úsetc                 óT   •— t        t        | �
  di |¤Ž |�| j                  |«       yy)z¢ Set constructor.

        :param href: target svg element, if **href** is not `None`; else
            the target SVG Element is the parent SVG Element.
        N© )Úsuperr   Ú__init__Úset_href)ÚselfÚhrefÚextraÚ	__class__s      €úa/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/svgwrite/animate.pyr   zSet.__init__   s.   ø€ ô 	Œc�4Ñ!Ñ* EÒ*ØÐØ�M‰M˜$Õð ó    c                 óH   •— | j                  «        t        t        | �  «       S ©N)Ú	update_idr   r   Úget_xml)r   r   s    €r   r   zSet.get_xml!   s   ø€ Ø�‰ÔÜ”S˜$Ñ'Ó)Ð)r   c                 ó   — || d<   |�|| d<   yy)zY
        Set animation attributes :ref:`attributeName` and :ref:`attributeType`.
        ÚattributeNameNÚattributeTyper   )r   r   r   s      r   Ú
set_targetzSet.set_target%   s#   € ð !.ˆˆ_ÑØÐ$Ø$1ˆD�Ò!ð %r   c                 ó>   — |�|| d<   |�|| d<   |�|| d<   |�|| d<   yy)zs
        Set animation attributes :ref:`onbegin`, :ref:`onend`, :ref:`onrepeat`
        and :ref:`onload`.
        NÚonbeginÚonendÚonrepeatÚonloadr   )r   r   r   r    r!   s        r   Ú	set_eventzSet.set_event.   sF   € ð
 ÐØ%ˆD�‰OØÐØ!ˆD�‰MØÐØ'ˆD�ÑØÐØ#ˆD�ŠNð r   c	                 óv   — |�|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d	<   yy)
z±
        Set animation attributes :ref:`begin`, :ref:`end`, :ref:`dur`,
        :ref:`min`, :ref:`max`, :ref:`restart`, :ref:`repeatCount` and
        :ref:`repeatDur`.
        NÚbeginÚendÚdurÚminÚmaxÚrestartÚrepeatCountÚ	repeatDurr   )	r   r$   r%   r&   r'   r(   r)   r*   r+   s	            r   Ú
set_timingzSet.set_timing<   s   € ð ÐØ!ˆD�‰MØˆ?ØˆD�‰KØˆ?ØˆD�‰KØˆ?ØˆD�‰KØˆ?ØˆD�‰KØÐØ%ˆD�‰OØÐ"Ø"-ˆD�ÑØÐ Ø )ˆD�Òð !r   c                 ó   — d| d<   y)zK Freeze the animation effect. (see also :ref:`fill <animateFill>`)
        ÚfreezeÚfillNr   )r   s    r   r.   z
Set.freezeT   s   € ð  ˆˆVŠr   r   ©NNNN)NNNNNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úelementnamer   r   r   r"   r,   r.   Ú__classcell__©r   s   @r   r   r      s7   ø„ ñð €Kõ ô*ó2ó$ð HLØ=Aó*ö0 r   r   c                   ó0   ‡ — e Zd ZdZdZdˆ fd„	Zdd„Zˆ xZS )ÚAnimateMotionz` The **animateMotion** element causes a referenced element to move
    along a motion path.
    ÚanimateMotionc                 ó@   •— t        t        | �
  dd|i|¤Ž |�|| d<   yy)z³
        :param path: the motion path
        :param href: target svg element, if **href** is not `None`; else
          the target SVG Element is the parent SVG Element.
        r   NÚpathr   )r   r9   r   )r   r<   r   r   r   s       €r   r   zAnimateMotion.__init___   s0   ø€ ô 	Œm˜TÑ+Ñ?°Ð?¸Ò?ØÐØˆD�ŠLð r   c                 ó>   — |�|| d<   |�|| d<   |�|| d<   |�|| d<   yy)zX
        Set animation attributes `path`, `calcMode`, `keyPoints` and `rotate`.
        Nr<   ÚcalcModeÚ	keyPointsÚrotater   )r   r<   r>   r?   r@   s        r   Ú	set_valuezAnimateMotion.set_valuei   sG   € ð ÐØˆD�‰LØÐØ'ˆD�ÑØÐ Ø )ˆD�ÑØÐØ#ˆD�ŠNð r   )NNr0   ©r1   r2   r3   r4   r5   r   rA   r6   r7   s   @r   r9   r9   Y   s   ø„ ñð "€Kõ ÷$r   r9   c                   ó4   ‡ — e Zd ZdZdZdˆ fd„	Z	 	 dd„Zˆ xZS )ÚAnimatezu The **animate** element allows scalar attributes and properties to be
    assigned different values over time .
    Úanimatec                 ó~   •— t        t        | �
  dd|i|¤Ž |�| j                  |«       |�| j	                  |«       yy)a0  
        :param attributeName: name of the SVG Attribute to animate
        :param values: interpolation values, `string` as `<semicolon-list>` or a python `list`
        :param href: target svg element, if **href** is not `None`; else
          the target SVG Element is the parent SVG Element.
        r   Nr   )r   rD   r   rA   r   )r   r   Úvaluesr   r   r   s        €r   r   zAnimate.__init__}   sE   ø€ ô 	Œg�tÑ%Ñ9¨4Ð9°5Ò9ØÐØ�N‰N˜6Ô"ØÐ$Ø�O‰O˜MÕ*ð %r   c                 ó–   — |�t        |«      st        |d«      }|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d<   |�|| d	<   yy)
zœ
        Set animation attributes :ref:`values`, :ref:`calcMode`, :ref:`keyTimes`,
        :ref:`keySplines`, :ref:`from`, :ref:`to` and :ref:`by`.
        NÚ;rG   r>   ÚkeyTimesÚ
keySplinesÚfromÚtoÚby)r   r   )r   rG   r>   rJ   rK   Úfrom_rM   rN   s           r   rA   zAnimate.set_valueŠ   s‡   € ð ÐÜ˜VÔ$Ü  ¨Ó-�Ø#ˆD�‰NàÐØ'ˆD�ÑØÐØ'ˆD�ÑØÐ!Ø!+ˆD�ÑØÐØ ˆD�‰LØˆ>ØˆD�‰JØˆ>ØˆD�ŠJð r   )NNN)NNNNNNrB   r7   s   @r   rD   rD   w   s#   ø„ ñð €Kõ+ð JNØ*.÷r   rD   c                   ó   — e Zd ZdZdZy)ÚAnimateColorzR The **animateColor** element specifies a color transformation over
    time.
    ÚanimateColorN)r1   r2   r3   r4   r5   r   r   r   rQ   rQ   £   s   „ ñð !�Kr   rQ   c                   ó(   ‡ — e Zd ZdZdZdˆ fd„	Zˆ xZS )ÚAnimateTransformz½ The **animateTransform** element animates a transformation attribute
    on a target element, thereby allowing animations to control translation,
    scaling, rotation and/or skewing.
    ÚanimateTransformc                 ó8   •— t        t        | �
  |fi |¤Ž || d<   y)zâ
        :param element: target svg element, if element is not `None`; else
          the target svg element is the parent svg element.
        :param string transform: ``'translate | scale | rotate | skewX | skewY'``
        ÚtypeN)r   rT   r   )r   Ú	transformÚelementr   r   s       €r   r   zAnimateTransform.__init__°   s#   ø€ ô 	Ô Ñ.¨wÑ@¸%Ò@Ø ˆˆVŠr   r   )r1   r2   r3   r4   r5   r   r6   r7   s   @r   rT   rT   ª   s   ø„ ñð %€K÷!ñ !r   rT   N)Úsvgwrite.baser   Úsvgwrite.mixinsr   Úsvgwrite.utilsr   r   r   r9   rD   rQ   rT   r   r   r   Ú<module>r]      sR   ðõ &Ý !ß -ôI ˆ+�uô I ôV$�Cô $ô<)ˆcô )ôX!�7ô !ô!�wõ !r   