From cffcba4b8d168ef4ffbd79be5b5b22ade577fb56 Mon Sep 17 00:00:00 2001 From: amarcu5 Date: Mon, 29 May 2017 15:19:42 +0100 Subject: [PATCH] Improved Picture in Picture button creation Button is now cached so can be injected back into webpage quickly if removed --- out/PiPer.safariextz | Bin 8243 -> 8222 bytes src/scripts/main.js | 78 +++++++++++++++++++++---------------------- update.plist | 4 +-- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/out/PiPer.safariextz b/out/PiPer.safariextz index 3d266f1b36fea1845804b3d255266157c7dc87f2..5385a014514532951abe5415ad7279be87f348a7 100644 GIT binary patch delta 7063 zcmV;I8))RSK%PK1RHL`tMcO61E2?z=Wp+u}3d8Um zX69f*1onR33as4|FeCV_|E=q5Cm&zhJjp}9jlXEBD)|=AbCR60y~?qvs`{K5#8Vt@ zTdfxicd%_G?T6e(p7DOsp%R@iHWh--p4X$6b!9{bYQeFfKO=CPMqcgcHdoqL;cB^w;X z8vRlibloT&)wYbuv?NXw=qHzP8*7S=iv!rUR)NvD7(iU5V5PyYGfRh5H()PmKyv^-~JE;BvM-JoLGHP0F}dz-+g zOVAcsSaWQ3r>lF_$M~)8eJ?*?P7|b4*v42D&(rS_LU#pr!sW%vOqtsk4Kwl0r(2Yj3rXyyem^cJ?rT zZnsNnO$*C0?UFnx_Ut@ooC(7mGKWxdy?1&hb(KzJE~d4dZ4o5o)vK&VRB065;z*ZV ztmtFfo9kV?YPcO$}sWXh`OXIMZjww9u8N|lp_3UKBXjhdhR#`0m~h6mBS03XCu7d7_PePU5+zs1)RR9S!}2Au*~y~ z%o?`DO)Qt?(lJuZex1`D6rlPP@}_q<=Dvdpij z^_7H}GV%szVIQfmPg8MoW16yMMbMUSL}Cjb7<uzXF%07l=!5A`$Yp ziETP^4RQ!AV$^xMP|L|h4Wy9Lq&j9opR0|!c!{@y%+ zPteEIs^U!EwtwXfbaN+^nVUu8X`#1Y05$SXE_zob;N=Ls0&VcMZX1Gshz)kmHBz)I zr19l9jDe_18S;#Aghkk@mika0s#UFb!Irth4R&5l?D|nu6@%v3gcdng<2jt|r8{gD zYbbM$g?s)L0*0z_n#|{Cd8-DPiyAUuqWx%qO>I_V0pqs!LBSAjY-Cx$QovR(oH1Hk z)AWdJuDiC`7+j@??T&|kG;KLRV>)6P(hbh7$>3}|MNR}O6+u9hNf zIcpvFBUZ{8S$i7?5^9n^)dy)Q&|CXJg#3YFBU-WNTXT29@XKg_RVpK_YrBJIRe0fu z`Yfe#4HNroHDh@mYIrP}$&|?SPEoP@sbr0IeHNpOw;i}?TbhG4rl*8hE8-^C$wcl~ zh$`emMz*YWjD4tU%cZedZhT7B><&GOwrm^i#!Qy7PmSC>y$sc zbKkeET7Q_oy=i}catn*3e0gV?Dppr_#D_(}miMv7QtYQOy#m2@g1ova+{eJcQ)BOd=we0?D1>IZy~I9V z-9Yk?r>lD#pbQKaa~g;51xuWun=}Eg47!lQI&uV^>hz|6?^WXPHgAA_HF0>GH$cCd zIK0gppkGZKfF|ZIgA2Mv7yC83gr2=kShB}kqzTKlw5>{$ zpu|CUITX^*TP5A$c)_F>$tI{pl=&S@3cZVMOUCxYz)24ac(STJAy%oDUDBNpDpdsU zbX&|xXbD2NQui6DZKI*it7f^OJ&fqD>B8G$5noz=HNk{fX07M!8qT%T)z0<_a`rFR zgH$*v1YiA@hTYQ`7eYR(h+aNr-mn|#4OaQ9A>X6arjD>qMmMvv-d)&K<5*TMQs3=U zUjymf%L`IX4^m&B+AK@+*>t&fp0W#_t+QNX8cV;tA0>^|Zkh=UytyQo40kdK6Xg>M z_Hp=sYAgfHgpoNf;r%LooSSfb*e@)$IP!7|DYzT?iV26pv0I_~7`(aC!XfiSUcA%<&Q7c8&KS{fUFt^+QA_64~XAR)vfld^^qKNr#BTJ}UXW>Yh} z!1k)FwuE-M8nUEc_!2kTwv24K&r+2P6dgyYM(DpaHv)xQzs@!;(hj@B_ zsn=9aQL7WkUNy-DM=}{SrP!l$(yy0USUaRWFCi-q>)KUL-KK_@k;=t&kgbjrs=60x zrW9G~lXIBhqqC1qmpP2fC-0zfgL!hMCUnm{)XM!v;Oykrwfs5(EhpDcS`MzNCM$_~6qDdC}g=0^m1;7^{HH*)GwB?g#Z9(F*D#Tjjjr-W3MNeaIWeR$uQ-f51 zB<)dhHA{FBereGKn2{Q=*gw`kg4^qYihz0t23oG&3!upc1rSTzIv@Lr_g#MLG4!i0 zzx5dUnagjb_pS0mFQm6D{c@oYN}!aHLH7H0f2hS(+@QxQ(wrESaPA?V*=@sr81V%Z zQas6}GiWBU3m9X#^P(W&5F{eJc@ZPNxXz4V*=R}S5u~s*l^p48sR*Z$Ha1p>+kT`h zz%+?+ip8oR#F1QA1c515|E8c(Qjg!^3H{mjgazNo)R-DCt$?tbre;1 z(3#YSvWzSzltBt7PqR%|gc?>K;Xz6=2E-}9Gu(q1$?8f}buOFM%QO)C-FomjVW~m> zYQ0e+q6+8CVPEg)ZIq#hNwYm)!YZw7pQSgI$Xjs`75Du0DSd@*`73LGxV>;!RO>Es zHUJ1n?!-p-$+#$`#=9yDJ<05^NHT!ld@5URJWy}0aRP`)gMB6pP*sVwc#baE^Q~@q zE?Z1Dew1!SBUdAXK@k>S-8*fsF3Pkk^v*^X6}zXR=T*&WY@iXVHoBhYo36s=Xs2?sfmyrjl|2g9TH6jCaoX^8H($;N z@6_9igo{`w6XQr6zO^8b=G-PeSZ)e-4%fu}xi`NU>VJx`zMt-TG7ff(h8|->5R`bg8 ztG4WAZHne0$&JH~WR4q1H7Ngj&^(LUd-`F{Wysz;5jCNeD+<+};cy@``w|A7r}GO= zJr6w{wIv$v>y5g9#o0Y%FV9OPx|DMrWYAOGM|(T_!PRshdienOF#r0T`1An!{8;(5 zBgw1yLmvI{@x_zs!LQ>ln|u>rJ~w{iU-EcpJau zn12Hmr5WPSQKfzlRf?pk@FqYwiUD9_GR6rUC&>tOvFS<5&$Xiec~sq`3ti{}`2jP#FFpl}H4qe<&Ro^Lt#1nFvM_DuPiG z1T{g12^CNQ76(y6GJ#LSR2-r-^$&0))jn66wf~$_|2zvTB4h^uzO1kS4*<0#SSHH% z5@I{+Ep3EmX~TOv(%CuyOgoWxmhIoL4z_$GqFKpsl46vJ1H=wA>2c8>rrdFA_C(Jn zhRHg5EOjBA6*%fXkvb=-@TP5?4)b(DD$B=Ka<)M5Bo+^ziJUj}LZeq}BiFK71{a3R zC2Dd}x3yw6UCz9BJNC+yk|Asqt(52`66U|hjC&cfWxfvxG07o5+ISfsR#p%ry&|Sp z(;meKqCnx0_2HP;#;ep2tW$H0o2~=>c{1>GLntjSAhSFXHUWQzv>;lApg=%E3N$o< zmPcnjVO_lT%9mXF_4Qs7Lcm_$ygTO{k7vd+?wl_&fo7l$SMscNgb!N?WTF_C&u6WN z@%6!J>%6<$+3Wwj96t@OP%gN!X!vk3xVc2F144RvE`X5!xQ~W|o6#6~4MMK&TBwy; zoBtqWKA&S+pm2YpvI1zxP^%oYT@Jk1fhS;QS<7!zslRc@|7AR}-QAte3oN@mXH%s+ zq*(i3#%k|rx5sFPZmCY3>5%$gO}KDeFwp3+65VDVwNDP)_!~am=3QQ2ILQR`xyc1x z-q8%UxkEk#9pc?Ekd{w5ymQt^0n@B>78^RHn&X`35hZ^)Rec`*Jaz&TFvVTeES z0kbu2R3f&?hqxW42R3XUzauDV{h8OmI&GD4lxUt?vogL~EAy3PYtv4LYE7%b!2F=S2XkX5me&8q1`#sA}|)V4>J%&-G@u#;{N2m{q6Sp`=4#{ z)xyWN$it_q;plxjeW_;L6kzjlhJM4ua0{rHBw&Jx>ItFdz))WmnK1FB(K0~(+GF?f zCSz;F7u<|lBeF(~0HU@}b%Q_%P@5Sv@I!!=f3#ld00BUvgn(yAov*7{96pCjoaV}> zdg;G`W>LY#gihlsjTo6w8dHed zWz}h-0!l3BUeSYM(ruV)<&k=O(7>>M$Qku>=$1-81^*m;_%+y`Z^g^f_@|}$ zTDML*FB<|WA5sUf8kWSBTDW{yZcoH|;DxlGxlP@qRIOfX$E1Alkyo9S-yKqJ&p~E5{eRzNS;dS){9w??#>ZA7s&4(XY zs7gVHY<-#Wh$1g?;?c+o9jO*6bwVkBp|{G1rx;#^=2e&yDc_Nd!s8HobI?3^NGrs$ z7_K!=ILSMChcN0FRVyR`PM`(pGwzq{Fb)x8pIjr;}li(XF zEEJ|Jyhe5l0u2G;6oTqu-&gLjuxAknLSSJ$8WDfzh6dM6eWdDxpb~}=J@F@_5zAAS zQ{?-8Gi-azIVvh3j9EUeFOl0!#4Efa4$CDK>NN$oQY*A0Cpm{dP|ekd#j6&vu~h-K z^-xSz?abGUw~^HWCdNyRAZ-T$g9yYy;~f^i8javTux+&(=pl)}BpLY=oVrY1#0wHK zwQzr@&sbJ)p-8Tfow!|p2?|E!L*o2VQnC0*QyMA`zIA4xt%RV_yi(#fp+h3TN}H@# zXcc?Nh-f|rUyh5EEc9frk*8y^Eiz#dB|%Dm;YB4=YH6{H0xlvd+=*8J2v{D&RY1b) zSnx8B#vxC+a1E9VB0#d&*gbL1yn;)nRds&_O(BqT>ZNq1+_U1=Gl}A!%x}CZN!(+& z%pkP&i&Ge*Z=1K@7PrU_b{M~H5GVtBQ}KoahyWtH9q`Q@?B^Fo_@~>Gs7l$--#~0_ zurZ}EP09>RU4|~2Ur8`LSAwTQeO;59J$N9zz(>ktQ@`-R(w9c9%accf*HLI35QBe{ znd`jV^jE#WKH@GDm8GYbq+rN6pcG6;av>EEN!ADzBY9Y=R{3kQwP!+jcA|tLV4nbfBU+$f=s8 z?AF8)ssgBW2GMOZMgqyxQc~PKX7r_ z(WIP2JNvi8CK^v`@jDsd!QKrbW}4;GJH+!CCTqc4c!Y-F)>t1XAXk5u!{+UwHm)Bw z>FpylQpYV4yeNyxSc7Ayie#IPn`s!YmAii{VQBfJw|BHxI&`ZN%5%N$KU%8>JDZQk zw}LX=`)y*={-CnAbK zKpc4Dk$X-nGG0omPda~)-O*@c9*8stQ0-Ap#H5zvqafwsHS$PvK!sL#hmcZj$=FbG5;C_X)&CAjjkNfkfXkh;`-Fr32wFU;bX-wxNI6CTE=W!ux?0Tc^XE z&UrT(>a;!h@xVsW*y*#1E!u5yhhf`2?nArS-qd>9-9XJ*_&?YLe0#S9_ZL3che_ee zT^{%l$+QA{dE@?0?g>;yvyzq5n_+d;Sqo#RBZD4=B#=OW1TSAeu`gN?2!8!7S#6K)_PD3#PJHv=5UM3B%{h58vqBI5 zxi*{pwt(fb1>pJivA5{zH%%YJWOA&`@T0%Ky|(}pU&-2C%=C_=OOm_ zJ_l#d#dtILFnxS@8r`SqIcdMa;qOm(Q`09~-@l)WY!|kdQ}X5Y!4$?Y6wA>!w{Di- zU-ibulYjPqn*aRP5&VrO&yG{{8_(y-pzqTCC-|m!=ifi)ZF~4_I_>-ZYfpULpRy^A zqUaRmrf@+F&wf4%?%h%-CxvbJ$I$mdF*&tGT7a-kz8Si%gpMc*ikk7gF7TPIhk_g> zV*=K#(My&;o9_cX?|{i$vLaY~p9TI^9Qm1$nI0m4@V>*>o@3ZXFI&FkS=LQDa<;b>Gjk$GL?hnoo1vh?t#`K#LE7>Sng;;lbwG0o5CHWmZS3f`%LJ0!BqP zWL@PkSLXYkv9>}V!Sx=_4UuXSNVu_UUAF7E@y-z;)SwX7&`=($brW>HvF!C&DVz;^->bYo7X!U1g4M84 zEdk-Jer`&pX;q%?I@V}AieO0Wlgp%wD~-RM9bS1^?z6c(v&~u_5L3p~rI#IaRjK?9 z)(2a=1`U>j#>4 z2^-F)hcniz^9#}P&18!ggsIOhe0HFX8qq*xWa0HXS!gz)Pj;qGOBpjPgT+h<=5x1y z+_=|ay`D2mR+`65-|uL@K`r$Rpm}eGDUF+#U=`@3mWy+2~S#5PVr# zO*%8>EvM#>M!1R*JX0-N8u=vBT!Zg#42ZC*qHFd(+!~qxDk|N~-&L8vp(sSxgdFT_3dX_+2(Jxp zi#KK&Yy}i9D4}q4K_Q?a+!U*M4a52IeccTC&9#OG%-g~WMqC9?y9Lq+ja>p!fG?D) z!mWLPpKy$8bj=%sb^pp6rdShA5DH zuiRm)c}trLJlcz|5U_MZFjTQPs%t$WeB4qY6WvDxeCF~74;i<$`WdS6SNxsqi_vU>88?=0Wuw#gL&S2kqV`yO zcX2dnEjY`hABalL=_Xith}6*Hq1h>OiCw!p3Wz(7k6F!~uI&m`5Lv~21r6#Wm zlTOusf$36l&FPjm_DP6zZ8f)6^Hs>`hTGwL*;TDwNm8*w#GH281kR=8LRq9y!x0v{ zXqkyee;S6a)0hu`)3=%SCs|n5Z=%s3pR+I@)9h8M+r7ZQn}z*SUKo7!m}C$kH$=}f zuJXv+_vEm5#Ols6U9KKQZ!Z{Rf77T&hN{&1tH)(=gxtdajn%EwH4(j8Zu~&t|+qwby)xzOz z-GKaR;qbO@Kz_AwfSOpm3@+prUHtdxl6wBOV9xJvktWTT%DNe_@HmJTwO%#`bGfD$ zjcux^M_uByOw}ci_}jSJ9$igmd}>Ohf)c(m;WrX$Koh+tOk_*S&W1B9ymea7? zdvaBIqR^awkL~%07#DowfKTYM{Q(xtTDcqV>o#VEW4EM^C@ zsk${)*2Aft=?gew9@kp7A<2@BuGjw$7EhX2Pk)N`S z1hhIvH>N8WG%|-FTHImPP%;kd#s}si|H)ly7ytOx95(dw{%#Vt}8#m2_2HqseIVT)! z%ErZiltDuhy;$>zuu*I(DrCRN9@nOV2>O}BmwQpo5RLTXP_t1W?YjkT4$+&G4jQhD zVL1nyzL)L>R(EN)BtBDB1Um9c&-qOLiIfYgal!>%F=FSY?~rmrI{CQR3(jUA?OSfx zRK^8ztJA<4Q`2G^9NJ}F1A;V!E}CEFjWV2n!>I|m*q8KDLL@-OHsf3?@>s^ROVv~P zkdNod33V4$y{3%Q#ZndXBvz!=wpHw^eV*~hnNuf5h@Dwv6-FEZC3T@CuvVk=&{$u(Vr{RFhZyttd2_j-=N>s-)a)GfhivK3;>l)W&UImb z*i8YMoth<6FwEirt5-wu;VT&}meJh7JD8W#1T-G)PAkMoK-2izp<6ZRJl2JziSosM z#C89qOtdo3LVAi)VtfpV@iawA^$_d~;c6ee@eKT1}!LD!e2VhIQ`6d())K{mgSm*@57H%a58R=EnRc*(iwG;TP`Q8Xe)7xT*uwdLyJX_F zXUwu!Axvdpg=PD%_2i96S zfONxHo2lCchHNbc(tHxJg)3d^&C2mmligUDe)SfLSH)+_AvmaVBPPa8dd z1KpotY1$)g$->flAS{+$?Hpo%oTJrVJ(p0$Hk8!XuoH?FtH`BKskM?aaV;`(t`roC zIlYPF`UW}D=C!I~#{()X;nZ=m>Plb`%^tlfY0kko6*rc@lVeq1$hs-y<8q!wa=%$# zLqVDwNVr(8w3w>Fl-q5a4ZDtWd^Z|y5Gq7%RPD3$W(s|44&w4&zdn_JugI-_?I(}Ytr_%U;0Popz{S7Q_TuAQyTI>k^l`a+YIa&qqBE@>iOkk9r<|@gjVLCcrL=$-?9jV~A!P~8P>tQ9g4^~yAhV%62;6z_Cla^;r(a^Vh=vozM%jykNw zrkl>E*Wl2*vs8$AFPD?pToT1#Fo;dByl8L=no|j2vMW20cSEOtw8@g#wKmuu&Fe%j zxAR%N4J0l&VROCGuNturhZP`|47uiQB(5jxbC=6&*cLBmq{lgE6Aa?qz)ytaFIL3m zQZA;o6V`3jtHu~l0WA#I4bAOWh;A|AWoHBqvklDMRLHSyaG)B>s1^)vde_~K&fOD; zy1*1?f_}XAY}{6VIM_BTeNFOP#GN1KSbVCcCaj>xq>s05{y}QGPrbYVe3*W}PJFum ze7>ywK9Cl5@~Mb_|NP=cbr&|tw^gx9PG8Sq8lH;e+9tc(mG8s!aqekhI~tUC@Hu+@qw)wSxJvbA;z1e)aTV?3Cm#cqV zuo4vc`hxXws!n!Un}5SOIQjkg<#c!gdC?{Dm-nxpIRd3(f{0QSkP!yrki*g>A!9mD zST1HFz)>^}67Vqn!O*K?;CnrVp#9TxsDvh?lnxUrB`_9;*3lHl0ZvmGN01T00T9Jx z96n5cwDkIapzn9|Pv*nJp}uhkLOQ*E$;RUFdHRw@@hb}5!1xhX;zw8^&%Q##=k^}} zm12IlG5-TpoaLxLN0s5|zk@14M;OY1C<0VUk$_C7h$T3RWU!Q^h>#^{4i6~``(II| z(J02k5HJAaI6Pq~9LER-L0^&+=;n3O(Q4;VMzUiHGhFOOv*55Lg5LGQ6bbFNFq9=>5z#iKw&WjVuI!1 zi9h3i%`Y?OEqC6s=Ox_qJ8k@G9F_% z9ur9tMk$d%ut^Z16o)2s1OWTL!yP6hg98GGT0pQ+6sR~#0hL4{2_W22h$SQ&qqmd( zpW*&9>0o}4jx#tFhxYGl2m210zDn!=Tf=RC$v;LV97R8*5{;4UhtffCe~(KE7o%9p z#3)X~pr&Y$G7%FINff6v7lka!Bmifbe}GF-jH4VICp4Z?TmonSWePwMrXjNkn0Kg@ zgE@zw{#EJV-a)$wi{01q2L}CptZ|a~2x|tWk&m#(So+K!2SWSX(r}iI$%(k4w5KAISM6+m}L_#3|TTx0jx73s4V}g zaQyKM@w@#>@@Ro^|t}Jz+1yJqxW)Q)g0q0Lp zVp~>)6206Fw9is?!_hX~DK~_dAh){4aA-g)7jMda4UE`SSf9ZuBg`pB?PK<(Hoy za@p@S6HVG{FsG9SMUdFax2Z{m0zNb}>nWm+Xcw*OH0%b>=K}YFcIuJACx1Z;tX}83 z{C_?@evY%T#CXJY4A#zn4qTNFbk9cjY8h1~*8vYF`w0NVI-f-M$__NIIAvB|W@V_R z6rDVCKxnoR>=J2#WY3sU3v#$WlV?nRZzBs*!`iXkW~!H5rM^Y@ltG}scvx;c`{2Ll zJe*bFw3}*XkPI4IL;eibTqXW**h7UzFqn?Yn99Hc9jB8_n9j2|5jFt>4wNF3a1s=M zg!Jp{y(ENyy?OKQoO3*$8PB+L{+bCi18umHXRSlrZXu9~Vq89-wI0UT2dAy`?rvwV z|MPPEG`vE&;Krii!^Pm{615Hp>E*cqLi*!A8V+toW8^gmxw>niR%&hjgOK@rj%k6y ziOLF~Aw#Wl&~`EKVh5gpnPn}%O{M;S&K>`k@x*p_cRDYy==PjVmF|#Y?SC1oy{FwC zqZzuTI&r2$>VGxi!g0YsqsK~glX-Y_(muk+_;izZd41s|6VT@-7j$t)GuY$~`4Du7 zcf&whKIQPiSsw*Vv(i~?=#*-XbDl?(Gx&7y+a zLQ^MPOek*mSIi2qsb8Cz%67Pnnv_neaT8K%#$;e=LZ@++MvP1-jVZ+Kvg$NZfhLG= zI8rFeJR+pg2=TM~6_dvlDu0TRgC{|5+`gy=R?P7bWNo5WZU06l!ZAQ2NQ&V&q|dP4 z`>l3B-q3?$(yf_m<&k=S(7>>M$Qku>=$1-81^*m;_%+y^Z^g^f_@|}$TDML*FB<|W zA5sUf9G1kDTDW{yZcfB{;DxlGxlP@qRIOfX-$?o3BX2rOzdNMdpa;AAA7H?(OS5+s zasz*J+cp+{*RN2}jY^CuMzZU~C5Pjgbo-E*ZJTMjvky+{0ZE92O%f~s%GNsi?|T4{ z5+z%*=&CzAJDFI#064ereCGh16ETd#S5udUWu522U{;s0V!RyA9D*O_@Hz?;9@hme zl@|+26#X%$`p%&q`}!3{wNku9IEXx!gy?_chmY^=6L_GQ%4vvxsc1R;$YNCsI%Mn1 zf+rLO)JsPrC-S6P?2JcPvp^*xr9- zl%<&p(R4C-tyQ0ae(gIYNGWGr6d{r^$*F@*V898&#yO+{FC;%?EKi(7o0jXTJFPHF zBJ3uc6E{a|PyGx|bkH{|zxx@VQ}Li>=O<{1Fm|_v8+DT8$2qL@4<^AkR5&QkS$vD! z6#{hpiB}1#hyC5U$H9R^APA9z@o0ZUygM4*GWCh7kAg}VM)bs=j7F@?SxHeChV8KJ zF_);aKp3-f+*~5Rorsq>ARa3v73w_&w^Ao^Apn=~A5`--T=8-R*VMreZ05w~@5)Un zRgFjAFFqtr2b~xT3IfYOqkpLprR^eMAc44O@Pn|M(Fp!H*o8q8yd3CZS@?fI3i5Ao z^h53=UXhrog+G18ii!(GN`>6a@A}Zn84~Z0nu^6In$uWu@V7Su3nT=RmR6^K2^}T@ zmb+xVf=xma?zAbHkHNp=Dklp)IcVkS_-u>JSVBpZ)8BYyWlAkA^-;t{LWMsGDgXv6 zQ@Dyqe47ehm&rKhITyaccSU~$NDf-NC*DO+amlo*zMwe-cTR(x&Xj*q-3KOl{ImI8 zU=znbh06lM-Ml!5G5WTB`(1U9+-Q&S+XjI$pf?piZ~zv-X1@czorC@S$_W2_f0o!Z z{_-teE?uxOrzy?q0!)2~eKfz3V0ftn&xiWDAv$-kBfP*-%4Ar-@WFr5*G8@DvuA?W zQD__ygOi!>z1{Rzv%n$Zt}|8S=hviS$T*-DOh; z37H{Ad41h@LYnY_Bc|R|1Gz=g=?Z=35{#1&*NU@JQPD+t3;Zsk3nEfLr7%mKOqhtMl3bR6Ik@{OjQIoqN+2 zlX+TiO|Xw9R)VKc8l;{)2JgnVTGmGSMNm&;M`!DBJUqLAh+wqr2YihexEUK)t}Ft7 z=1f7CqB6jPG=9Cg8#5R^Y<|bKAn9A{YDOclU2jv4X0i_$DuC~ZoH;7ut?N?D~QZ=EjfbE{s&wZC|>#F(--@0(9?NTk(kWD zd4EmXTD`8}C#KK%2r_QbIKoS#R%XuXN~EWt5kC-M_R} z4fZx4&u>ru3-#(iMV_cw>W-;6GY)J*-6qsc5BZ%9xEqB82;^RUVi5!&-GwN{Dt!(T zMqWY`fq;K_@FXBloM05ZmQ7k=KNuo zkXmiY*j#OZ)+=r5y{S#Igt$V2&R7n->qjQyCG^71`Q$a0v|_}W;;g1)!GY?jb2|M# zp(&O?`$FGOr|(|l&a~X zHM94oo*Wli1)npzg4UlUb{*CyiRx`XUO%c8D&Dga1Mim}J-&FcGx`w;7ZYE1dBCa$a_1=Slam)K1mz{%i0 HFNpoR+Ox>o diff --git a/src/scripts/main.js b/src/scripts/main.js index 495dbc1..94398cf 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -22,7 +22,7 @@ const COMPILED = false; const BUTTON_ID = 'PIPButton'; -let /** boolean */ buttonAdded = false; +let /** ?Element */ button = null; let /** ?PIPResource */ currentResource = null; const log = function(message) { @@ -30,38 +30,43 @@ const log = function(message) { } const addButton = function(/** Element */ parent) { - const button = document.createElement(currentResource.buttonElementType || 'button'); - - button.id = BUTTON_ID; - button.title = 'Open Picture in Picture mode'; - if (currentResource.buttonStyle) button.style.cssText = currentResource.buttonStyle; - if (currentResource.buttonClassName) button.className = currentResource.buttonClassName; - - const image = document.createElement('img'); - image.src = safari.extension.baseURI + 'images/' + (currentResource.buttonImage || 'default') + '.svg'; - image.style.width = image.style.height = '100%'; - if (currentResource.buttonScale) image.style.transform = 'scale(' + currentResource.buttonScale + ')'; - button.appendChild(image); - - if (currentResource.buttonHoverStyle) { - const style = document.createElement('style'); - const css = '#' + BUTTON_ID + ':hover{' + currentResource.buttonHoverStyle + '}'; - style.appendChild(document.createTextNode(css)); - button.appendChild(style); - } - - button.addEventListener('click', function(event) { - event.preventDefault(); - - const video = /** @type {?HTMLVideoElement} */ (currentResource.videoElement()); - if (!video) { - log('Unable to find video'); - return; + + if (!button) { + button = document.createElement(currentResource.buttonElementType || 'button'); + + button.id = BUTTON_ID; + button.title = 'Open Picture in Picture mode'; + if (currentResource.buttonStyle) button.style.cssText = currentResource.buttonStyle; + if (currentResource.buttonClassName) button.className = currentResource.buttonClassName; + + const image = document.createElement('img'); + image.src = safari.extension.baseURI + 'images/' + (currentResource.buttonImage || 'default') + '.svg'; + image.style.width = image.style.height = '100%'; + if (currentResource.buttonScale) image.style.transform = 'scale(' + currentResource.buttonScale + ')'; + button.appendChild(image); + + if (currentResource.buttonHoverStyle) { + const style = document.createElement('style'); + const css = '#' + BUTTON_ID + ':hover{' + currentResource.buttonHoverStyle + '}'; + style.appendChild(document.createTextNode(css)); + button.appendChild(style); } - - const presentationMode = 'inline' === video.webkitPresentationMode ? 'picture-in-picture' : 'inline'; - video.webkitSetPresentationMode(presentationMode); - }); + + button.addEventListener('click', function(event) { + event.preventDefault(); + + const video = /** @type {?HTMLVideoElement} */ (currentResource.videoElement()); + if (!video) { + log('Unable to find video'); + return; + } + + const presentationMode = 'inline' === video.webkitPresentationMode ? 'picture-in-picture' : 'inline'; + video.webkitSetPresentationMode(presentationMode); + }); + + log('Picture in Picture button created'); + } const referenceNode = currentResource.buttonInsertBefore ? currentResource.buttonInsertBefore(parent) : null; parent.insertBefore(button, referenceNode); @@ -69,18 +74,13 @@ const addButton = function(/** Element */ parent) { const buttonObserver = function() { - if (buttonAdded) { - if (document.getElementById(BUTTON_ID)) return; - log('Button removed'); - buttonAdded = false; - } + if (document.getElementById(BUTTON_ID)) return; const buttonParent = currentResource.buttonParent(); if (buttonParent) { addButton(buttonParent); if (currentResource.buttonDidAppear) currentResource.buttonDidAppear(); - log('Button added'); - buttonAdded = true; + log('Picture in Picture button added to webpage'); } }; diff --git a/update.plist b/update.plist index 94598e4..ea80798 100644 --- a/update.plist +++ b/update.plist @@ -8,9 +8,9 @@ CFBundleIdentifier com.amarcus.safari.piper CFBundleShortVersionString - 0.1.3 + 0.2.0 CFBundleVersion - 24 + 25 Developer Identifier BQ6Q24MF9X URL