
    $g/T                     N   U d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ ddlmZ 	 d dlmZmZm Z   e!            Z"n# e#$ rZ$ e%e$          hZ"Y dZ$[$ndZ$[$ww xY wdZ&e'e(d<   	 d dl)m*Z* nH# e#$ r(Z$e"+                     e%e$                     Y dZ$[$n dZ$[$we,$ rZ$ e'e$          Z&Y dZ$[$ndZ$[$ww xY w G d dee                   Z- ej.        d          Z/e/0                     e                       i ddddddddddddddddddddd d!ddd"d#ddd$d%ddd&d'ddd(d)ddd*d+ddd,d-d.dd/d0d.dd1d2d.dd3d4d.dd5d6ddd7d8ddd9ddd:ddd.dddd.dd;Z1dS )<    N)defaultdict)md5)unescape)BytesIO)DuplicateFilter)PluginError)
BasePlugin)
write_file)copyfile   )SocialConfig)Image	ImageDraw	ImageFont cairosvg_error)svg2pngc                      e Zd Zd Zd Zd Zd Zd Z ej	        d          d             Z
d	 Zd
 Z ej	        d          d             Z ej	        d          d             ZddZd ZddZd ZddZd ZdedefdZdefdZdS )SocialPluginc                 N    t           j                            d          | _        d S )N   )
concurrentfuturesThreadPoolExecutor	_executor)selfs    ^/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/material/plugins/social/plugin.py__init__zSocialPlugin.__init__O   s    #+>>qAA    c                    t                               d          | _        | j        j        | j        _        | j        j        sd S t          rIt          dt          d	                    t          d t                                        z   dz             t          rt          dt          z   dz             | j        j        r`| j        j                            d          }|r|| j        j        d	<   | j        j                            d
          }|r|| j        j        d<   | j        j        r| j        j        }|| j        j        d<   |j        st                               d           | j        j        | _        t(          j                            | j                  st)          j        | j                   |j        }d|v r|d         }t3          |t4                    r|D ]}d|v r|d         r|} nd|v rI|d         rA|d                             dd          }t                               || j                  | _        | j        j        }|                    d	| j        d                   |                    d| j        d
                   d| _        | j                            | j        |          | _        |                      |          | _!        g | _"        d S )Nindigoz4Required dependencies of "social" plugin not found:

c                     d| z   S )Nz-  )xs    r   <lambda>z(SocialPlugin.on_config.<locals>.<lambda>]   s
    dQh r   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   r3   valuerF   r,   pr-   optionss           r   	on_configzSocialPlugin.on_configS   s   ZZ))
 K/{  	F  	Idii$6$6 F FGGHHIRS    	Q !ST   ;" 
	B K+//77E MGL01CD K+//77E B<A09 ;! 	DK*E>CDK,];  	KKL   [*
w}}TZ(( 	$K
### I&G '4((    A A~~!I,~"# G##	(:#!),44S#>>#ZZ<<
 +2KK 2DJv4FGGKKF);<<
 

 &*^%:%:4;RTZ%[%["OOF++	!r   c                      j         j        sd S  j         j        }t          j                            |j        j                  \  }}d                    t          j        	                    |j
        ||                    }t          j                            |          }t          j                            |          st          j        |           |j        |j                            d|j                  |j        pdd|j        v r|j        d         t'          t(                    sLt*                              d|j        j         dt1                     d           t3          j        d           t'          t(                    sLt*                              d	|j        j         dt1                     d           t3          j        d           t7          d	                    t)                    g                              d
                    }	t          j        	                     j        |	                                 d          } j                              j!        "                     j#        || fd                     |j                            dg           }
|
 $                    ||          z   |j        d<   d S )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 'zutf-8z.pngc                  2                                    S N)_render_card)rW   r   	site_namerV   s   r   r&   z/SocialPlugin.on_page_markdown.<locals>.<lambda>   s    d&7&7	5+&V&V r   )
cache_path	dest_pathrender_functionmeta)%r3   r5   	cards_dirrB   rC   splitextfilesrc_pathformatr8   site_dirdirnamerD   rE   r[   r_   r2   rV   site_descriptionrG   r7   r>   errorsrc_uritypesysexitr   encoderA   	hexdigestrO   appendr   rJ   _cache_image_generate_meta)r   markdownpager3   files	directoryrb   _rC   hashr_   rW   r[   rV   s   `          @@@r   on_page_markdownzSocialPlugin.on_page_markdown   s   {  	F K)	'""49#566a rw||O 
  
   GOOD))	w}}Y'' 	#K	""" $	 	gtz22-3DI%%)M2K %%% 	II=DI,= = =,0KK= = =   HQKKK +s++ 	IICTY-> C C,0,=,=C C C   HQKKK 277JJ
   6'??	 
 w||DJ4>>+;+;(A(A(ABB##DN$9$94VVVVVVV %: %
 %
 	 	 	 y}}VR(( 4#6#6tV#D#DD	&r   c                 ^    | j         j        sd S | j        D ]}|                                 d S rY   )r3   r5   rO   result)r   r3   promises      r   on_post_buildzSocialPlugin.on_post_build   sE    {  	F + 	 	GNN	 	r   c                     t           j                            |          s |            }|                    |           t	          ||           d S rY   )rB   rC   isfilesaver   )r   r\   r]   r^   images        r   rp   zSocialPlugin._cache_image   sO    w~~j)) 	##O%%EJJz""" 	Y'''''r   N)maxsizec                 B    t          j        | j        |         |          S rY   )r   truetyperN   )r   kindsizes      r   	_get_fontzSocialPlugin._get_font   s    !$)D/4888r   c           	      4   |                      d| j        d                   }|                    | j                                        d           |                     dd          }|                    |                     d||dd          d	           |                     dd
          }|                    |                     d||dd          d           |                     dd          }|                    |                     d||dd          d           |S )N)i  iv  r'   )i  <   Bold$   ):  0   r      )D   @   \   )r   iH        )r      Regular   )r   P         )r   i   )_render_card_backgroundr*   alpha_compositerL   rz   r   _render_text)r   r[   rV   rW   r   rN   s         r   rZ   zSocialPlugin._render_card   s-   ,,[$*V:LMM&--// 	
 	
 	
 ~~fb))iy!R@@	
 	
 	
 ~~fb))j$q"==	
 	
 	
 ~~i,,i{ArBB	
 	
 	
 r   c                 0    t          j        d||          S )NRGBA)moder   r*   )r   new)r   r   r'   s      r   r   z$SocialPlugin._render_card_background  s    ytTBBBBr   c                 V    t          j        dd          }t          j        |          S )Nr   )2   r   r   r   )r   r   r   Draw)r   r   s     r   _tmp_contextzSocialPlugin._tmp_context  s&    	999~e$$$r   c                 V    |                                                      d||          S )N)r   r   rN   )r   textbbox)r   r)   rN   s      r   _text_bounding_boxzSocialPlugin._text_bounding_box$  s)      ""++FD+FFFr   r   c                    |d         }g g }}t          j        dd|          }t          |          }d}	|                    d          D ]v}
d                    ||
gz             }|                     ||          }|d         }	|r|d         |k    r|                    |
           ^|                    |           |
g}w|                    |           d |D             }t          j        d	|
          }t          j
        |          }|                    d|dz  |	z
  fd                    |d |                   || j        d         ||	z
             |S )Nr   z	(<[^>]+>)r   r.   r   r   r   c                 8    g | ]}d                      |          S )r.   )r8   ).0lines     r   
<listcomp>z-SocialPlugin._render_text.<locals>.<listcomp>A  s"    222D$222r   r   r   r"   r)   )rN   r'   spacing)resubr   splitr8   r   ro   r   r   r   r   r)   r*   )r   r   rN   r)   lmaxr   widthlineswordsyoffsetwordcombinetextboxr   contexts                  r   r   zSocialPlugin._render_text)  s|   Q2u vlB--~~  JJsOO 	 	Dhhuv~..G--gd-CCGajG GAJ%//T""""U### 	U22E222	555 .''!g%&		%,(?(?
6 2g>O 	 	
 	
 	
 r   c                 *   | j         j        }t          j                            |j        j                  \  }}|j                            d|j	                  }|j
        s| d|j         }|j        }d|j        v r|j        d         }d                    t          j        |j        pd||                    }|                    t          j        j        d          }ddd	d
|d	d|d	d|d	ddd	ddd	ddd	d|j        d	dddd|dd|dd|dgS )NrV   z - rW   rU   ./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)r3   r`   rB   rC   ra   rb   ri   r_   r2   rV   is_homepager[   rg   rd   	posixpathr8   r=   rI   sepcanonical_url)	r   rs   r3   ru   rb   rv   rV   rW   urls	            r   rq   zSocialPlugin._generate_metaQ  sk   K)	'""49#455a 	gtz22 	433!133E -DI%%)M2K ooinO"s
 
   kk"'+s++ $	;;$88*{DD$66)kCC*v??+??"t/ACC %1FHH &%99+EE%#77%
 	
r      c                     |                      |          }t          ||j        z  |j        z            }|                    ||f          S rY   )
_load_logointheightr   resize)r   r3   r   logor   s        r   rK   zSocialPlugin._load_resized_logo  sD    v&&UT[(4:566{{E6?+++r   c                    |j         }d|v rt          j                            |d                   \  }}t          j                            |j        |d                   }|j        rLt          j                            |j        |d                   }t          j                            |          r|}|dk    r|                     |          S t          j
        |                              d          S |                    d          pi }d|v r|d         r	|d         }nd}t          j                            t          j                            t          j                            t                    d                    }	|	 d| d}|j        rJt          j                            |j        d| d          }t          j                            |          r|}|                     || j        d	                   S )
Nr   z.svgr   iconzmaterial/libraryz../..z/templates/.icons/z.iconsr)   )rF   rB   rC   ra   r8   docs_dir
custom_direxists_load_logo_svgr   openconvertr2   abspathrf   __file__r*   )
r   r3   rF   rv   	extensionrC   custom_dir_logor   r   bases
             r   r   zSocialPlugin._load_logo  s    U??7++E&M::LAy7<<v??D  +"$',,u/?v"O"O7>>/22 +*D F""**4000 :d##++F333 yy  &BT>>d6l><DD%D wrw||GOOH%% 
  
  
 44$444  	' gll5+;X$}}}UUOw~~o.. '& ""4F);<<<r   c                     t                      }t          |                                          }|r|                    dd| d          }t	          ||d           t          j        |          S )Nz<svgz<svg fill=""
   )
bytestringwrite_toscale)r   r   readrI   r   r   )r   rC   r'   rb   datas        r   r   zSocialPlugin._load_logo_svg  sq    yyDzz    	A<<(?t(?(?(?@@D 	TdB????z$r   c                    | j         j                            d          }|s8|j                            dd          }|du rd}n|                    dd          }i dD ]}|                     ||          |<   t          fd          S )Nr+   rN   FRobotor)   )r   r   c                       d         S )Nr   r$   r   s   r   r&   z)SocialPlugin._load_font.<locals>.<lambda>  s    4	? r   )r3   r;   r2   rF   _resolve_fontr   )r   r3   r   material_namestylerN   s        @r   rM   zSocialPlugin._load_font  s    {/33MBB 	;"L,,VU;;M%%$((:: ( 	: 	:E,,T599DKK 2222D999r   familyr   c                 v   t           j                            | j        j        d|          }t           j                            |          s|                     |           t          t          j        |                    }|D ]L}t           j        	                    |          \  }}||k    r"t           j                            ||          c S Md}|D ]P}t           j        	                    |          \  }}|s|}d|v r$|r t          |          t          |          k     r|}Q|                     ||          S )Nfontsr   r   )rB   rC   r8   r3   r@   rD   _fetch_font_from_google_fontssortedlistdirra   lenr   )	r   r   r   rC   rH   rb   r   rv   fallbacks	            r   r   zSocialPlugin._resolve_font  s<   w||DK17FCC w}}T"" 	7..v666 bj&&'' 	0 	0Dg&&t,,GD!u}}w||D$/////   	$ 	$Dg&&t,,GD!    D   $3t99s8}}#<#<#H !!&(333r   c           	      Z   t           j                            | j        j        d          }d| }t          j        |          }|j        dk    r#t          d| d|j         d|j	         d          t          j        dt          |j                            D ]}t          j        |          5 }|                                 t          |j                  5 }t!          j        |          }|                                \  }}	d	                    |                    |d
          |	g                                          }t           j                            ||| d          }
d d d            n# 1 swxY w Y   t+          |j        |
           d d d            n# 1 swxY w Y   d S )Nr   z.https://fonts.google.com/download/list?family=   zCouldn't find font family 'z' on Google Fonts (z: )z\"(https:(?:.*?)\.[ot]tf)\"r.   r   z.ttf)rB   rC   r8   r3   r@   requestsr2   status_coder   reasonr   findallr7   r   raise_for_statusr   r   r   getnamerI   stripr
   )r   r   rC   r   resmatchfontdatarN   r   r   targets              r   r   z*SocialPlugin._fetch_font_from_google_fonts  s3   w||DK17;; HvGGl3 ?c!!5f 5 5O5 5'*z5 5 5   Z*C,<,<
 
 	0 	0E e$$ 0$$&&& S[)) GX$-h77D"&,,..KD%88T\\&"%=%=u$EFFLLNNDW\\$4FFF	G G G G G G G G G G G G G G G 3;///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s7   0)FBE2&F2E66F9E6:FF"	%F"	)r   )r   rY   )__name__
__module____qualname__r   rS   rx   r|   rp   	functools	lru_cacher   rZ   r   r   r   r   rq   rK   r   r   rM   r7   r   r   r$   r   r   r   r   M   s       B B BO" O" O"d<E <E <E|  ( ( ( Y&&&9 9 '&9  BC C C Y&&&% % '&% Y&&&G G '&G# # # #P,
 ,
 ,
\, , , ,,= ,= ,=^
  
  
  
 : : :*!4C !4 !4 !4 !4 !4H#0C #0 #0 #0 #0 #0 #0r   r   mkdocsredz#ef5552z#ffffffr0   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  loggingrB   r   r   r   rk   collectionsr   hashlibr   htmlr   ior   mkdocs.commands.buildr   mkdocs.exceptionsr   mkdocs.pluginsr	   mkdocs.utilsr
   shutilr   r3   r   PILr   r   r   setr6   ImportErrorereprr   r7   __annotations__cairosvgr   addOSErrorr   	getLoggerr>   	addFilterr1   r$   r   r   <module>r-     s  D           				     				  



 # # # # # #                   1 1 1 1 1 1 ) ) ) ) ) ) % % % % % % # # # # # #                  ////////// CEEMM    T!WWIMMMMMM
              dd1gg   SVVNNNNNNR0 R0 R0 R0 R0:l+ R0 R0 R0r g!! oo      
	Y	;;

Y	;;
 Y	;;
 Y	;;	

 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
 Y	;;
  Y	;;!
" Y	;;#
$ '	;;&	;;&	;;&	;;+
 
 
s<   
A4 4B9B

BB! !C&&C		C&C!!C&