
    ͆hT                        % S SK rS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  SSKJr   S SKJrJrJ r   \!" 5       r"Sr&\'\(S'    S SK)J*r*   " S S\\   5      r-\R\                  " S5      r/\/Ra                  \" 5       5        0 SSSS._SSSS._SSSS._SSSS._SSSS._S S!SS._S"S#SS._S$S%SS._S&S'SS._S(S)SS._S*S+SS._S,S-S.S._S/S0S.S._S1S2S.S._S3S4S.S._S5S6SS._S7S8SS._S9SS.S:SS.S.SS.SS.S.S;.Er1g! \# a  r$\%" \$5      1r" Sr$C$NSr$C$ff = f! \# a!  r$\"RW                  \%" \$5      5         Sr$C$NSr$C$f\, a  r$\'" \$5      r& Sr$C$GNSr$C$ff = f)<    N)defaultdict)md5)unescape)BytesIO)DuplicateFilter)PluginError)
BasePlugin)
write_file)copyfile   )SocialConfig)Image	ImageDraw	ImageFont cairosvg_error)svg2pngc                      \ rS rSrS rS rS rS rS r\	R                  " SS9S	 5       rS
 rS r\	R                  " SS9S 5       r\	R                  " SS9S 5       rSS jrS rSS jrS rSS jrS rS\S\4S jrS\4S jrSrg)SocialPluginM   c                 L    [         R                  R                  S5      U l        g )N   )
concurrentfuturesThreadPoolExecutor	_executor)selfs    V/opt/services/DDDS/venv/lib/python3.13/site-packages/material/plugins/social/plugin.py__init__SocialPlugin.__init__O   s    #++>>qA    c                    [         R                  S5      U l        U R                  R                  (       d  SU R                  l        U R                  R
                  (       d  g [        (       a8  [        S[        SR                  [        S [        5      5      5      -   S-   5      e[        (       a  [        S[        -   S-   5      eU R                  R                  (       a  U R                  R                  R                  S	5      nU(       a  X R                  R                  S
'   U R                  R                  R                  S5      nU(       a  X R                  R                  S'   U R                  R                  (       a.  U R                  R                  nX R                  R                  S'   UR                  (       d  [         R#                  S5        U R                  R$                  U l        [(        R*                  R-                  U R&                  5      (       d   [(        R.                  " U R&                  5        UR0                  nSU;   a  US   n[3        U[4        5      (       a  U H  nSU;   d  M  US   (       d  M  Un  O   SU;   aC  US   (       a9  US   R7                  SS5      n[         R                  X`R                  5      U l        U R                  R                  nUR                  S
U R                  S	   5      UR                  SU R                  S   5      S.U l        U R8                  R;                  U R<                  U5      U l        U RA                  U5      U l!        / U l"        g )NindigoFz4Required dependencies of "social" plugin not found:

c                     SU -   $ )Nz-  )xs    r   <lambda>(SocialPlugin.on_config.<locals>.<lambda>^   s    dQhr!   z:

--> Install with: pip install "mkdocs-material[imaging]"z<"cairosvg" Python module is installed, but it crashed with:
z=

--> Check out the troubleshooting guide: https://t.ly/MfX6ufillbackground_colortextcolorfont_familyztThe "site_url" option is not set. The cards are generated, but not linked, so they won't be visible on social media.paletteprimary -r*   r,   )#colorsgetr-   configenabledcardsimport_errorsr   strjoinmapr   cards_colorcards_layout_options
cards_fontsite_urllogwarning	cache_dircacheospathisdirmakedirstheme
isinstancelistreplacer   submit_load_resized_logo_resized_logo_promise
_load_fontfont_image_promises)r   r6   valuerI   r/   pr0   optionss           r   	on_configSocialPlugin.on_configS   s   ZZ)
{{"" %DKK{{   =Idii$6 FGHIRS  >Q !ST  ;;"" KK++//7EGL001CD KK++//7E<A009 ;;!!KK**E>CKK,,]; KKL [[**
ww}}TZZ((KK

# I&G '4(( A A~!I,,"# ! G#	(:!),44S#>#ZZ<
 ++22KK 2DJJv4FGKKF);<

 &*^^%:%:4;R;RTZ%["OOF+	!r!   c                 @  ^ ^^^ T R                   R                  (       d  g T R                   R                  n[        R                  R                  UR                  R                  5      u  pgSR                  [        R                  R                  UR                  UU5      5      n[        R                  R                  U5      n[        R                  R                  U5      (       d  [        R                  " U5        UR                  mUR                  R!                  SUR"                  5      mUR$                  =(       d    SmSUR                  ;   a  UR                  S   m['        T[(        5      (       dO  [*        R-                  SUR                  R.                   S[1        T5       S35        [2        R4                  " S5        ['        T[(        5      (       dO  [*        R-                  S	UR                  R.                   S[1        T5       S35        [2        R4                  " S5        [7        SR                  T[)        T5      T/5      R9                  S
5      5      n	[        R                  R                  T R:                  U	R=                  5        S35      nT R>                  RA                  T RB                  RE                  T RF                  XhUU UU4S jS95        UR                  R!                  S/ 5      n
U
T RI                  X#5      -   UR                  S'   g )N{}.pngtitler   descriptionzPage meta title of page 'z$' must be a string, but is of type "z".r   zPage meta description of 'utf-8z.pngc                  *   > TR                  TTT 5      $ N)_render_card)r[   r   	site_namerZ   s   r   r(   .SocialPlugin.on_page_content.<locals>.<lambda>   s    d&7&7	5+&Vr!   )
cache_path	dest_pathrender_functionmeta)%r6   r8   	cards_dirrE   rF   splitextfilesrc_pathformatr;   site_dirdirnamerG   rH   r`   re   r5   rZ   site_descriptionrJ   r:   rA   errorsrc_uritypesysexitr   encoderD   	hexdigestrR   appendr   rM   _cache_image_generate_meta)r   htmlpager6   files	directoryrh   _rF   hashre   r[   r`   rZ   s   `          @@@r   on_page_contentSocialPlugin.on_page_content   s`   {{   KK))	''""499#5#56 rww||OO 
  GGOOD)	ww}}Y''KK	" $$	 		gtzz2--3DII%))M2K %%%II+DII,=,=+> ?,,0K== HHQK +s++II,TYY->->,? @,,0,=+>cC HHQK 277J
  6'?	
 ww||DJJ4>>+;*<D(AB##DNN$9$9V %: %
 	 yy}}VR( 4#6#6t#DD		&r!   c                     U R                   R                  (       d  g U R                   H  nUR                  5         M     g r^   )r6   r8   rR   result)r   r6   promises      r   on_post_buildSocialPlugin.on_post_build   s.    {{   ++GNN ,r!   c                     [         R                  R                  U5      (       d  U" 5       nUR                  U5        [	        X5        g r^   )rE   rF   isfilesaver   )r   rb   rc   rd   images        r   rv   SocialPlugin._cache_image   s3    ww~~j))#%EJJz" 	'r!   N)maxsizec                 J    [         R                  " U R                  U   U5      $ r^   )r   truetyperQ   )r   kindsizes      r   	_get_fontSocialPlugin._get_font   s    !!$))D/488r!   c           	         U R                  SU R                  S   5      nUR                  U R                  R	                  5       S5        U R                  SS5      nUR                  U R                  SXQSS5      S	5        U R                  SS
5      nUR                  U R                  SXRSS5      S5        U R                  SS5      nUR                  U R                  SXSSS5      S5        U$ )N)i  iv  r*   )i  <   Bold$   ):  0   r      )D   @   \   )r   iH        )r      Regular   )r   P         )r   i   )_render_card_backgroundr-   alpha_compositerO   r   r   _render_text)r   r`   rZ   r[   r   rQ   s         r   r_   SocialPlugin._render_card   s    ,,[$**V:LM&&--/ 	
 ~~fb)i!R@	
 ~~fb)j$q"=	
 ~~i,iArB	
 r!   c                 ,    [         R                  " SXS9$ )NRGBA)moder   r-   )r   new)r   r   r*   s      r   r   $SocialPlugin._render_card_background  s    yytBBr!   c                 X    [         R                  " SSS9n[        R                  " U5      $ )Nr   )2   r   r   r   )r   r   r   Draw)r   r   s     r   _tmp_contextSocialPlugin._tmp_context   s!    		9~~e$$r!   c                 >    U R                  5       R                  SXS9$ )N)r   r   rQ   )r   textbbox)r   r,   rQ   s      r   _text_bounding_boxSocialPlugin._text_bounding_box%  s!      "++FD+FFr!   c                    US   n/ / p[         R                  " SSU5      n[        U5      nSn	UR                  S5       Hb  n
SR	                  X/-   5      nU R                  XS9nUS   n	U(       a	  US   U::  a  UR                  U
5        MN  UR                  U5        U
/nMd     UR                  U5        U Vs/ s H  nSR	                  U5      PM     nn[        R                  " SUS	9n[        R                  " U5      nUR                  SUS-  U	-
  4S
R	                  US U 5      X R                  S   XY-
  S9  U$ s  snf )Nr   z	(<[^>]+>)r   r1   r   r   r   r   r   r$   r,   )rQ   r*   spacing)resubr   splitr;   r   ru   r   r   r   r   r,   r-   )r   r   rQ   r,   lmaxr   widthlineswordsyoffsetwordcombinetextboxliner   contexts                   r   r   SocialPlugin._render_text*  s?   Q2u vvlB-~  JJsODhhuv~.G--g-CGajGGAJ%/T"U# $ 	U,12ED$E2		5 ..'!g%&		%,(?

6 2g>O 	 	
  3s   :D?c                    U R                   R                  n[        R                  R	                  UR
                  R                  5      u  pEUR                  (       a  UR                  nO7UR                  R                  SUR                  5      nU SUR                   3nUR                  nSUR                  ;   a  UR                  S   nSR                  [        R                  " UR                   =(       d    SUU5      5      n	U	R#                  [        R                  R$                  S5      n	SSS	.S
US	.SUS	.SU	S	.SSS	.SSS	.SSS	.SUR&                  S	.SSS.SUS.SUS.SU	S./$ )NrZ   z - r[   rY   ./zog:typewebsite)propertycontentzog:titlezog:descriptionzog:imagezog:image:typez	image/pngzog:image:width1200zog:image:height630zog:urlztwitter:cardsummary_large_image)namer   ztwitter:titleztwitter:descriptionztwitter:image)r6   rf   rE   rF   rg   rh   ro   is_homepager`   re   r5   rZ   rm   rj   	posixpathr;   r@   rL   sepcanonical_url)
r   ry   r6   r{   rh   r|   rZ   
page_titler[   urls
             r   rw   SocialPlugin._generate_metaR  s[   KK))	''""499#4#45 $$Ew

;J!l#f&6&6%78E --DII%))M2K ooinnOO"s
  kk"''++s+ $	;$8*{D$6)kC*v?+?"t/A/AC %1FH &%9+E%#7%
 	
r!   c                     U R                  U5      n[        X#R                  -  UR                  -  5      nUR	                  X$45      $ r^   )
_load_logointheightr   resize)r   r6   r   logor   s        r   rN   SocialPlugin._load_resized_logo  s;    v&U[[(4::56{{E?++r!   c                 >   UR                   nSU;   a  [        R                  R                  US   5      u  p4[        R                  R	                  UR
                  US   5      nUR                  (       aS  [        R                  R	                  UR                  US   5      n[        R                  R                  U5      (       a  UnUS:X  a  U R                  U5      $ [        R                  " U5      R                  S5      $ UR                  S5      =(       d    0 nSU;   a  US   (       a  US   nOSn[        R                  R                  [        R                  R	                  [        R                  R                  [        5      S5      5      n	U	 SU S3nUR                  (       aT  [        R                  R	                  UR                  SU S35      n[        R                  R                  U5      (       a  UnU R                  XPR                   S	   5      $ )
Nr   z.svgr   iconzmaterial/libraryz../..z/templates/.icons/z.iconsr,   )rI   rE   rF   rg   r;   docs_dir
custom_direxists_load_logo_svgr   openconvertr5   abspathrl   __file__r-   )
r   r6   rI   r|   	extensionrF   custom_dir_logor   r   bases
             r   r   SocialPlugin._load_logo  s    U?77++E&M:LA77<<v?D "$'',,u/?/?v"O77>>/22*D F"**400 ::d#++F33 yy &BT>d6l<D%D wwrww||GGOOH% 
 
 )$t4  ggll5+;+;X$t}UOww~~o..& ""4F);<<r!   c                     [        5       n[        U5      R                  5       nU(       a  UR                  SSU S35      n[	        UR                  S5      USS9  [        R                  " U5      $ )Nz<svgz<svg fill=""r\   
   )
bytestringwrite_toscale)r   r   readrL   r   rs   r   )r   rF   r*   rh   datas        r   r   SocialPlugin._load_logo_svg  s]    yDz  <<,tfB(?@D 	T[[1dBOzz$r!   c                 &  ^ U R                   R                  R                  S5      nU(       d6  UR                  R                  SS5      nUSL a  SnOUR                  SS5      n0 mS H  nU R	                  X$5      TU'   M     [        U4S jT5      $ )Nr.   rQ   FRobotor,   )r   r   c                     > T S   $ )Nr   r&   r   s   r   r(   )SocialPlugin._load_font.<locals>.<lambda>  s	    4	?r!   )r6   r>   r5   rI   _resolve_fontr   )r   r6   r   material_namestylerQ   s        @r   rP   SocialPlugin._load_font  s    {{//33MB"LL,,VU;M%$((: (E,,T9DK ) 2D99r!   familyr   c                    [         R                  R                  U R                  R                  SU5      n[         R                  R                  U5      (       d  U R                  U5        [        [         R                  " U5      5      nU HJ  n[         R                  R                  U5      u  pgXb:X  d  M+  [         R                  R                  X55      s  $    SnU HX  n[         R                  R                  U5      u  pgU(       d  UnSU;   d  M5  U(       a  [        U5      [        U5      :  d  MV  UnMZ     U R                  X5      $ )Nfontsr   r   )rE   rF   r;   r6   rC   rG   _fetch_font_from_google_fontssortedlistdirrg   lenr   )	r   r   r   rF   rK   rh   r   r|   fallbacks	            r   r   SocialPlugin._resolve_font  s    ww||DKK117FC ww}}T""..v6 bjj&'Dgg&&t,GD}ww||D//  Dgg&&t,GD  D 3t9s8}#<#H  !!&33r!   c           	      |   [         R                  R                  U R                  R                  S5      nSU 3n[
        R                  " U5      nUR                  S:w  a)  [        SU SUR                   SUR                   S35      e[        R                  " S[        UR                  5      5       H  n[
        R                  " U5       nUR                  5         [        UR                  5       n[         R"                  " U5      nUR%                  5       u  pS	R                  UR'                  US
5      U	/5      R)                  5       n[         R                  R                  X!U S35      n
S S S 5        [+        UR                  W
5        S S S 5        M     g ! , (       d  f       N1= f! , (       d  f       GM  = f)Nr   z.https://fonts.google.com/download/list?family=   zCouldn't find font family 'z' on Google Fonts (z: )z\"(https:(?:.*?)\.[ot]tf)\"r1   r   z.ttf)rE   rF   r;   r6   rC   requestsr5   status_coder   reasonr   findallr:   r   raise_for_statusr   r   r   getnamerL   stripr
   )r   r   rF   r   resmatchfontdatarQ   r   r   targets              r   r  *SocialPlugin._fetch_font_from_google_fonts  sZ   ww||DKK117; ?vhGll3 ??c!-fX 6OO$Bszzl!5  ZZ*C,<
E e$$$& S[[)X$--h7D"&,,.KD88T\\&"%=u$EFLLNDWW\\$4&FF	 * 3;;/ %$
 *) %$s%   &F+2A=F/F+
F($F++
F;	)r   rR   rO   rD   r-   rQ   )r   )   r^   )__name__
__module____qualname____firstlineno__r   rV   r~   r   rv   	functools	lru_cacher   r_   r   r   r   r   rw   rN   r   r   rP   r:   r   r  __static_attributes__r&   r!   r   r   r   M   s    BP"f<E|( &9 '9BC &% '% &G 'G#P.
`,,=^
 :*!4C !4 !4H#0C #0r!   r   mkdocsredz#ef5552z#ffffffr3   pinkz#e92063purplez#ab47bdzdeep-purplez#7e56c2r#   z#4051b5bluez#2094f3z
light-bluez#02a6f2cyanz#00bdd6tealz#009485greenz#4cae4fzlight-greenz#8bc34blimez#cbdc38z#000000yellowz#ffec3damberz#ffc105orangez#ffa724zdeep-orangez#ff6e42brownz#795649z#757575z#546d78)greyz	blue-greyblackwhite)2concurrent.futuresr   r  loggingrE   r   r   r
  rq   collectionsr   hashlibr   rx   r   ior   mkdocs.commands.buildr   mkdocs.exceptionsr   mkdocs.pluginsr	   mkdocs.utilsr
   shutilr   r6   r   PILr   r   r   setr9   ImportErrorereprr   r:   __annotations__cairosvgr   addOSErrorr   	getLoggerrA   	addFilterr4   r&   r!   r   <module>rC     s:  D    	  	  
 #    1 ) % #   // EM  U0:l+ U0x ! o  
	Y	;

Y	;
 Y	;
 Y	;	

 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
 Y	;
  Y	;!
" Y	;#
$ '	;&	;&	;&	;+
i  !WIM  d1g VNs<   
D0 8E 0E	6	EE	F
E..	F
7FF
