Ë
    Ûvžjü  ã                   ó~   — d Z ddlZddlZddlZddlmZmZmZm	Z	m
Z
mZ edfd„Zdd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)zUtility functionsé    N)ÚLiteralÚWordÚ	alphanumsÚnumsÚdelimitedListÚ
ZeroOrMoreÚalwaysc                 óä   — 	 dd„}t         j                  }|t         _        t        j                  ||«       t        j                  | dz   |«       |t         _        t        j                  d|«       y )Nc                 ó$   — |j                   ›d| ›�S )Nz: )Ú__name__)ÚmessageÚcategoryÚfilenameÚlinenoÚfileÚlines         úh/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/cad_viewer_widget/utils.pyÚwarning_on_one_linez!warn.<locals>.warning_on_one_line   s   € ð $×,Ó,©gÐ6Ð6ó    Ú
Úignore)NN)ÚwarningsÚformatwarningÚsimplefilterÚwarn)r   ÚwarningÚwhenr   Úwarn_formats        r   r   r      sY   € à=Aó7ô
 ×(Ñ(€KØ0„HÔÜ×Ñ˜$ Ô(Ü‡M�M�'˜D‘. 'Ô*Ø(„HÔÜ×Ñ˜( GÕ,r   c                 óÎ   — |€t         j                  j                  | «      S t         j                  j                  t        | |«      D ��cg c]
  \  }}||z
  ‘Œ c}}«      S c c}}w ©N)ÚnpÚlinalgÚnormÚzip)Úv1Úv2ÚxÚys       r   Údistancer)      sM   € Ø	€zÜ�y‰y�~‰~˜bÓ!Ð!ä�y‰y�~‰~´°R¸´Ô=±©¨¨A˜q 1›u°Ò=Ó>Ð>ùÓ=s   Á
A!
c                 óD   — t        j                  | «      t        | «      z  S r    )r!   Úarrayr)   )Úvs    r   Ú	normalizer-   #   s   € Ü�8‰8�A‹;œ !›Ñ$Ð$r   c           	      ó,  — | d   | d   z   dz  | d   | d   z   dz  | d   | d   z   dz  f}t        t        j                  | d   | d   f| d   | d   f| d   | d   f«      D �cg c]  }t        ||«      ‘Œ c}«      }t	        j
                  |«      |fS c c}w )NÚxminÚxmaxg       @ÚyminÚymaxÚzminÚzmax)ÚmaxÚ	itertoolsÚproductr)   r!   r+   )ÚbboxÚcenterr,   Úradiuss       r   Úbspherer;   '   sÒ   € à	ˆf‰˜˜V™Ñ	$¨Ñ+Ø	ˆf‰˜˜V™Ñ	$¨Ñ+Ø	ˆf‰˜˜V™Ñ	$¨Ñ+ð€Fô
 ô ×&Ñ&Ø�f‘˜t F™|Ð,Ø�f‘˜t F™|Ð,Ø�f‘˜t F™|Ð,ôó	
ñ�ô �V˜QÕðñ	
ó	€Fô �H‰H�VÓ˜fÐ%Ð%ùò	
s   Á Bc                 ó   ‡— ˆfd„Š ‰| «      S )Nc                 ó"  •— t        | t        j                  «      r‹t        | j                  «      dv r| j                  dd¬«      } n$| j                  d   st        j                  | «      } | j                  «       } | j                  t        | j                  «      t        | «      dœS t        | t        t        f«      r| D �cg c]
  } ‰|«      ‘Œ c}S t        | t        «      r'i }| j                  «       D ]  \  }} ‰|«      ||<   Œ |S | S c c}w )N)Úint32Úint64Úuint64Úuint32ÚC)ÚorderÚC_CONTIGUOUS)ÚshapeÚdtypeÚbuffer)Ú
isinstancer!   ÚndarrayÚstrrF   ÚastypeÚflagsÚascontiguousarrayÚravelrE   Ú
memoryviewÚtupleÚlistÚdictÚitems)ÚobjÚelÚrvÚkr,   Úwalks        €r   rX   zto_json.<locals>.walk>   sæ   ø€ Ü�cœ2Ÿ:™:Ô&Ü�3—9‘9‹~Ð!=Ñ=Ø—j‘j °�jÓ5‘Ø—Y‘Y˜~Ò.Ü×*Ñ*¨3Ó/�Ø—)‘)“+ˆCàŸ™Ü˜SŸY™Y›Ü$ S›/ñð ô
 ˜œe¤T˜]Ô+Ù'*Ó+¡s ‘D˜•H sÑ+Ð+Ü˜œTÔ"ØˆBØŸ	™	ž‘��1Ù˜Q›��1’ð $àˆIàˆJùò ,s   ÃD© )ÚvalueÚwidgetrX   s     @r   Úto_jsonr\   =   s   ø€ ôñ, �‹;Ðr   c                 ó&  — i }| j                  «       D ]ö  \  }}t        |t        «      rt        |«      ||<   Œ%|dv r)t	        j
                  |t        j                  ¬«      ||<   ŒR|dv r9t	        j
                  |t        j                  ¬«      j                  dd«      ||<   Œ�|dk(  r|D �cg c]  }t        |«      ‘Œ c}||<   Œ±| j                  d«      dv r.|d	k(  r)t	        j
                  |t        j                  ¬«      ||<   Œò|||<   Œø |S c c}w )
zPReplace all arrays with numpy ndarrays. They will be serialized with compression)ÚverticesÚnormalsÚedges)rF   )Ú	triangleséÿÿÿÿé   ÚpartsÚtype)r`   r^   rE   )
rS   rH   rR   Únumpyifyr!   ÚasarrayÚfloat32r>   ÚreshapeÚget)rT   ÚresultrW   r,   rU   s        r   rf   rf   W   sç   € à€FØ—	‘	–‰ˆˆ1Ü�aœÔÜ  ›ˆF�1ŠIØÐ2Ñ2ÜŸ
™
 1¬B¯J©JÔ7ˆF�1ŠIØ�-ÑÜŸ
™
 1¬B¯H©HÔ5×=Ñ=¸bÀ!ÓDˆF�1ŠIØ�'Š\Ù01Ó2±¨"œ "�°Ñ2ˆF�1ŠIØ�W‰W�V‹_Ð 5Ñ5¸!¸wº,ÜŸ
™
 1¬B¯J©JÔ7ˆF�1ŠIàˆF�1ŠIð ð €Mùò 3s   Â+Dc                  ó6  — t        d«      j                  «       } t        d«      j                  «       }t        d«      j                  «       }t        t        «      }|t	        |«      z   |z   }t        t
        dz   «      t        |«      z   }|t        | |z   «      z   S )ze
    A parser for nested json objects

    Only used internally to parse Javascript object paths
    Ú.Ú[Ú]z_$)r   Úsuppressr   r   r   r   r   )ÚdotÚlbrackÚrbrackÚintegerÚindexrT   s         r   Ú
get_parserrv   j   s„   € ô �#‹,×
Ñ
Ó
!€CÜ�S‹\×"Ñ"Ó$€FÜ�S‹\×"Ñ"Ó$€FÜ”4‹j€GØ”] 7Ó+Ñ+¨fÑ4€EÜ
Œy˜4ÑÓ
 ¤:¨eÓ#4Ñ
4€CØ”˜C #™IÓ&Ñ&Ð&r   c                 ó^   — | j                  «       D ��ci c]  \  }}|dv r||“Œ c}}S c c}}w )N)Ú	cad_widthÚheightÚ
tree_widthÚthemeÚtoolsÚglassÚpinning©rS   ©ÚconfigrW   r,   s      r   Údisplay_argsr‚   }   sD   € ð —L‘L”Nôá"‰DˆAˆqØð
ñ	
ð 	
ˆ1‰Ø"òð ùó ó   ”)c                 ó^   — | j                  «       D ��ci c]  \  }}|dv r||“Œ c}}S c c}}w )N))Údefault_edgecolorÚdefault_opacityÚambient_intensityÚdirect_intensityÚ	metalnessÚ	roughnessÚ
normal_lenÚcontrolÚupr|   r}   ÚticksÚaxesÚaxes0ÚgridÚcenter_gridÚorthoÚtransparentÚblack_edgesÚexplodeÚcollapseÚclip_intersectionÚclip_object_colorsÚclip_planesÚclip_normal_0Úclip_normal_1Úclip_normal_2Úclip_slider_0Úclip_slider_1Úclip_slider_2Únew_tree_behaviorÚpositionÚ
quaternionÚtargetÚzoomÚreset_cameraÚ
zoom_speedÚ	pan_speedÚrotate_speedÚtimeitÚdebugr   r€   s      r   Úviewer_argsr¬   Ž   sD   € ð —L‘L”Nô/á"‰DˆAˆqØð*
ñ+
ð 	
ˆ1‰Ø"ò/ð /ùó /rƒ   r    )Ú__doc__r6   r   Únumpyr!   Ú	pyparsingr   r   r   r   r   r   ÚRuntimeWarningr   r)   r-   r;   r\   rf   rv   r‚   r¬   rY   r   r   Ú<module>r±      sK   ðÙ ã Û Û ß O× Oð
 )¨xó -ó"?ò%ò&ò,ò4ò&'ò&ó"0r   