ó
    Ãu„j¯  ã                  ó&  • S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	J
r
JrJr  S SKr\(       a  S SKJr  S SKJr  S SKJr  \" S5      r\" S	5      r " S
 S\5      r " S S\5      r\R6                  R9                  SS9 " S S\S   5      5       rg)é    )ÚannotationsN)Ú
attrgetter)ÚTYPE_CHECKINGÚAnyÚCallableÚIteratorÚSequenceÚoverload)ÚSupportsRichComparison)ÚDOMNode)ÚWidgetÚdisplayÚvisiblec                  ó   • \ rS rSrSrSrg)ÚDuplicateIdsé   zFRaised when attempting to add a widget with an id that already exists.© 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/_node_list.pyr   r      s   † ÜPr   r   c                  ó   • \ rS rSrSrSrg)ÚReadOnlyErroré   z$Raise if you try to mutate the list.r   Nr   r   r   r   r   r      s   † Ü.r   r   T)Úangularc                  óŒ  • \ rS rSrS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&S
 jrSSS.   S'S jjrS\R                  4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&S jrS-S jrS-S jr\S.S j5       r\S.S j5       r\S-S j5       r\(       a  \S/S j5       r\S0S j5       rS1S jr\(       d  S2S jrSr gSr g)3ÚNodeListé   z�
A container for widgets that forms one level of hierarchy.

Although named a list, widgets may appear only once, making them more like a set.
Nc                ó°   • Uc  SO[         R                  " U5      U l        / U l        [	        5       U l        S/ 4U l        S/ 4U l        0 U l        SU l	        g)zŒInitialize a node list.

Args:
    parent: The parent node which holds a reference to this object, or `None` if
        there is no parent.
Néÿÿÿÿr   )
ÚweakrefÚrefÚ_parentÚ_nodesÚsetÚ
_nodes_setÚ_displayed_nodesÚ_displayed_visible_nodesÚ_nodes_by_idÚ_updates)ÚselfÚparents     r   Ú__init__ÚNodeList.__init__%   sU   € ð  &™~‘t´7·;²;¸vÓ3FˆŒà$&ˆŒÜ'*£uˆŒØ;=¸r¸(ˆÔØCEÀrÀ(ˆÔ%ð
 02ˆÔð ˆ�r   c                ó,   • [        U R                  5      $ ©N)Úboolr)   ©r0   s    r   Ú__bool__ÚNodeList.__bool__;   ó   € Ü�D—K‘KÓ Ð r   c                ó,   • [        U R                  5      $ r5   ©Úlenr)   r7   s    r   Ú__length_hint__ÚNodeList.__length_hint__>   ó   € Ü�4—;‘;ÓÐr   c              #  ó(   #   • U R                   v •  g 7fr5   ©r)   r7   s    r   Ú__rich_repr__ÚNodeList.__rich_repr__A   s   é € Ø�k‰kÓùs   ‚c                ó,   • [        U R                  5      $ r5   r<   r7   s    r   Ú__len__ÚNodeList.__len__D   r@   r   c                ó   • XR                   ;   $ r5   rB   )r0   Úwidgets     r   Ú__contains__ÚNodeList.__contains__G   s   € ØŸ™Ñ$Ð$r   c                óü   • U =R                   S-  sl         U R                  c  SOU R                  5       nUbE  UR                  =nb5  UR                  =R                   S-  sl         Ub  UR                  =nb  M3  gggg)z&Mark the nodes as having been updated.é   N)r/   r(   r)   )r0   Únodes     r   ÚupdatedÚNodeList.updatedJ   sn   € à�Š˜Ñ�Ø—|‘|Ñ+‰t°·±³ˆØÑ¨D¯L©LÐ$8 DÑ#EØ�K‰K× Ò  AÑ%Õ ð Ñ¨D¯L©LÐ$8 DÔ#EÐÐ#EÐr   F©ÚkeyÚreversec               ó¤   • Uc$  U R                   R                  [        S5      US9  OU R                   R                  XS9  U R                  5         g)z‰Sort nodes.

Args:
    key: A key function which accepts a widget, or `None` for no key function.
    reverse: Sort in descending order.
NÚ
sort_orderrQ   )r)   Úsortr   rO   )r0   rR   rS   s      r   Ú_sortÚNodeList._sortQ   sC   € ð ‰;Ø�K‰K×Ñ¤¨LÓ!9À7ÐÒKà�K‰K×Ñ ÐÑ6à�‰�r   r   c                ó:   • U R                   R                  XU5      $ )zÖReturn the index of the given widget.

Args:
    widget: The widget to find in the node list.

Returns:
    The index of the widget in the node list.

Raises:
    ValueError: If the widget is not in the node list.
)r)   Úindex)r0   rI   ÚstartÚstops       r   rZ   ÚNodeList.indexd   s   € ð �{‰{× Ñ  °Ó5Ð5r   c                ó8   • U R                   R                  U5      $ )zRGet the widget for the given widget_id, or None if there's no matches in this list)r.   Úget©r0   Ú	widget_ids     r   Ú
_get_by_idÚNodeList._get_by_idr   s   € à× Ñ ×$Ñ$ YÓ/Ð/r   c                ó  • XR                   ;  au  U R                  R                  U5        U R                   R                  U5        UR                  nUb  U R                  U5        XR                  U'   U R                  5         gg)z.Append a Widget.

Args:
    widget: A widget.
N)r+   r)   ÚappendÚaddÚidÚ_ensure_unique_idr.   rO   ©r0   rI   ra   s      r   Ú_appendÚNodeList._appendv   sk   € ð Ÿ™Ó(Ø�K‰K×Ñ˜vÔ&Ø�O‰O×Ñ Ô'ØŸ	™	ˆIØÑ$Ø×&Ñ& yÔ1Ø/5×!Ñ! )Ñ,Ø�L‰L�Nð )r   c                ó  • X R                   ;  au  U R                  R                  X5        U R                   R                  U5        UR                  nUb  U R                  U5        X R                  U'   U R                  5         gg)z.Insert a Widget.

Args:
    widget: A widget.
N)r+   r)   Úinsertrf   rg   rh   r.   rO   )r0   rZ   rI   ra   s       r   Ú_insertÚNodeList._insert…   sk   € ð Ÿ™Ó(Ø�K‰K×Ñ˜uÔ-Ø�O‰O×Ñ Ô'ØŸ	™	ˆIØÑ$Ø×&Ñ& yÔ1Ø/5×!Ñ! )Ñ,Ø�L‰L�Nð )r   c                ód   • XR                   ;   a!  [        SU< SU R                   U   < S35      eg)z‡Ensure a new widget ID would be unique.

Args:
    widget_id: New widget ID.

Raises:
    DuplicateIds: If the given ID is not unique.
z!Tried to insert a widget with ID z,, but a widget already exists with that ID (z-); ensure all child widgets have a unique ID.N)r.   r   r`   s     r   rh   ÚNodeList._ensure_unique_id”   sU   € ð ×)Ñ)Ó)ÜØ3°I±=Ð@lÐmq×m~Ñm~ð  @Iñ  nJñ  mMð M=ð =óð ð *r   c                ó  • XR                   ;   az  U R                  U R                  R                  U5      	 U R                   R                  U5        UR                  nX R
                  ;   a  U R
                  U	 U R                  5         gg)zyRemove a widget from the list.

Removing a widget not in the list is a null-op.

Args:
    widget: A Widget in the list.
N)r+   r)   rZ   Úremoverg   r.   rO   ri   s      r   Ú_removeÚNodeList._remove£   sl   € ð —_‘_Ó$Ø—‘˜DŸK™K×-Ñ-¨fÓ5Ð6Ø�O‰O×"Ñ" 6Ô*ØŸ	™	ˆIØ×-Ñ-Ó-Ø×%Ñ% iÐ0Ø�L‰L�Nð %r   c                óä   • U R                   (       a_  U R                   R                  5         U R                  R                  5         U R                  R                  5         U R	                  5         gg)zClear the node list.N)r)   Úclearr+   r.   rO   r7   s    r   Ú_clearÚNodeList._clear³   sI   € à�;�;Ø�K‰K×ÑÔØ�O‰O×!Ñ!Ô#Ø×Ñ×#Ñ#Ô%Ø�L‰L�Nð	 r   c                ó,   • [        U R                  5      $ r5   )Úiterr)   r7   s    r   Ú__iter__ÚNodeList.__iter__»   r:   r   c                ó,   • [        U R                  5      $ r5   )Úreversedr)   r7   s    r   Ú__reversed__ÚNodeList.__reversed__¾   s   € Ü˜Ÿ™Ó$Ð$r   c                óÂ   • U R                   S   U R                  :w  a4  U R                  [        [        [        U R
                  5      5      4U l         U R                   S   $ )z%Just the nodes where `display==True`.r   rM   )r,   r/   ÚlistÚfilterÚ_display_getterr)   r7   s    r   Ú	displayedÚNodeList.displayedÁ   sR   € ð × Ñ  Ñ# t§}¡}Ó4à—‘Ü”VœO¨T¯[©[Ó9Ó:ð%ˆDÔ!ð ×$Ñ$ QÑ'Ð'r   c                óÂ   • U R                   S   U R                  :w  a4  U R                  [        [        [        U R
                  5      5      4U l        U R                  S   $ )z4Nodes with both `display==True` and `visible==True`.r   rM   )r-   r/   rƒ   r„   Ú_visible_getterr†   r,   r7   s    r   Údisplayed_and_visibleÚNodeList.displayed_and_visibleË   sR   € ð ×(Ñ(¨Ñ+¨t¯}©}Ó<à—‘Ü”VœO¨T¯^©^Ó<Ó=ð%ˆDÔ!ð ×$Ñ$ QÑ'Ð'r   c                óH   • [        [        [        U R                  5      5      $ )z7Just the nodes where `display==True`, in reverse order.)r„   r…   r   r)   r7   s    r   Údisplayed_reverseÚNodeList.displayed_reverseÕ   s   € ô ”o¤x°·±Ó'<Ó=Ð=r   c                ó   • g r5   r   ©r0   rZ   s     r   Ú__getitem__ÚNodeList.__getitem__Ü   s   € Ø58r   c                ó   • g r5   r   r�   s     r   r‘   r’   ß   s   € Ø=@r   c                ó    • U R                   U   $ r5   rB   r�   s     r   r‘   r’   â   s   € Ø�{‰{˜5Ñ!Ð!r   c                ó:   • US;   a  [        S5      e[        U5      e)N>   Úpoprw   re   Úextendrm   rs   zbWidget.children is read-only: use Widget.mount(...) or Widget.remove(...) to add or remove widgets)r   ÚAttributeError)r0   rR   s     r   Ú__getattr__ÚNodeList.__getattr__ç   s(   € ØÐNÓNÜ#Øxóð ô ! Ó%Ð%r   )r,   r-   r)   r.   r+   r(   r/   r5   )r1   zDOMNode | NoneÚreturnÚNone)r›   r6   )r›   Úint)r›   zrich.repr.Result)rI   Úobjectr›   r6   )r›   rœ   )rR   z1Callable[[Widget], SupportsRichComparison] | NonerS   r6   )rI   r   r[   r�   r\   r�   r›   r�   )ra   Ústrr›   zWidget | None)rI   r   r›   rœ   )rZ   r�   rI   r   r›   rœ   )ra   rŸ   r›   rœ   )r›   zIterator[Widget])r›   zSequence[Widget])rZ   r�   r›   r   )rZ   Úslicer›   zlist[Widget])rZ   zint | slicer›   zWidget | list[Widget])rR   rŸ   r›   rž   )!r   r   r   r   r   r2   r8   r>   rC   rF   rJ   rO   rW   ÚsysÚmaxsizerZ   rb   rj   rn   rh   rt   rx   r|   r€   Úpropertyr†   rŠ   r�   r   r
   r‘   r™   r   r   r   r   r"   r"      sö   † ñöô,!ô ôô ô%ô&ð BFØñ	ð ?ðð õ	ð& /0¸S¿[¹[ö 6ô0ôôôôô ô!ô%ð ó(ó ð(ð ó(ó ð(ð ó>ó ð>ö à	Û8ó 
Ø8à	Û@ó 
Ø@ô"ö ÷	&ò r   r"   r   )Ú
__future__r   r¡   r&   Úoperatorr   Útypingr   r   r   r   r	   r
   Ú	rich.reprÚrichÚ	_typeshedr   Útextual.domr   Útextual.widgetr   r…   r‰   Ú	Exceptionr   r˜   r   ÚreprÚautor"   r   r   r   Ú<module>r¯      sˆ   ðÝ "ã 
Û Ý ß M× Mã æÝ0å#Ý%ñ ˜YÓ'€Ù˜YÓ'€ôQ�9ô Qô/�Nô /ð ‡�‡�˜€ÐôN&ˆx˜Ñ!ó N&ó ñN&r   