PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /var/softaculous/sitepad/editor/site-data/plugins/pagelayer/js
Viewing File: /var/softaculous/sitepad/editor/site-data/plugins/pagelayer/js/customizer.js
var pagelayer_fontHtmlArray = {}; (function($) { var api = wp.customize; api.bind( 'ready', function() { var controls = api.settings.controls; for(var control in controls){ if( !('show_filter' in controls[control]) ){ continue; } var filter = controls[control]['show_filter']; for(var showParam in filter){ var except = showParam.substr(0, 1) == '!' ? true : false; showParam = except ? showParam.substr(1) : showParam; // Show and Hide Controls api( showParam, function( setting ){ api.control( control, function( _control ) { var visibility = function() { var _filter = _control.params['show_filter']; for(var _showParam in _filter){ var reqval = _filter[_showParam]; var val = setting.get(); var toShow = false; if(typeof reqval == 'string' && reqval == val){ toShow = true; } // Its an array and a value is found, then dont show if(typeof reqval != 'string' && reqval.indexOf(val) > -1){ toShow = true; } if(except && !toShow || !except && toShow ){ _control.container.show(); return } _control.container.hide(); } }; visibility(); setting.bind( visibility ); }); }); } } // Expand pagelayer setting handler api.section('pagelayer_global_fonts_sec', function( section ){ section.expanded.bind(function( isExpanding ){ // Set default value section.container.find('select[data-font-key]').each(function(){ var ref = jQuery(this), name = ref.attr('data-font-key'), value = ref.attr('data-default-value'); ref.html(pagelayer_fontHtmlArray[name]).val(value); ref.removeAttr('data-font-key'); }); }); }); }); })(jQuery); /** * Initialization trigger. */ jQuery(document).ready( function(){ // Create color setting pagelayer_alpha_color_control_init(); var option = function(val, lang){ var lang = lang || 'Default'; return '<option value="'+val+'">'+lang+'</option>'; } // Create font setting list for(var sk in pagelayer_global_font_settings){ var sval = pagelayer_global_font_settings[sk]; if('choices' in sval){ var fontHtml = ''; for( var value in sval['choices'] ) { if(typeof sval['choices'][value] !== 'object'){ fontHtml += option(value, sval['choices'][value]); continue; } if(value != 'default'){ fontHtml += '<optgroup label="'+value+'">'; } for (x in sval['choices'][value]){ fontHtml += option((jQuery.isNumeric(x) ? sval['choices'][value][x] : x), sval['choices'][value][x]); } // Close the optgroup if it was opened if(value !== 'default'){ fontHtml += '</optgroup>'; } } pagelayer_fontHtmlArray[sk] = fontHtml; } } // Show hide typography jQuery(document).on('click.pagelayer-typo-icon', function (e){ var target = jQuery(e.target); var isTypo = target.closest('.pagelayer-control-typo'); var isIcon = target.closest('.pagelayer-control-typo-icon'); var typoHolder = isIcon.closest('.pagelayer-control-typo-holder'); if(isTypo.length > 0){ return; } if(isIcon.length > 0){ // Set default value typoHolder.find('select[data-font-key]').each(function(){ var ref = jQuery(this), name = ref.attr('data-font-key'), value = ref.attr('data-default-value'); ref.html(pagelayer_fontHtmlArray[name]).val(value); ref.removeAttr('data-font-key'); }); var globalInput = typoHolder.find('.pagelayer-global-font-input'); if(!pagelayer_empty(globalInput)){ // Show the global values if is not customize typoHolder.find('.pagelayer-control-typo-fields').attr('pagelayer-set-global', 1); typoHolder.find('select, input').each(function(){ var sEle = jQuery(this); var val = sEle.val(); if(pagelayer_empty(val)){ return true; } sEle.closest('.pagelayer-control-typo-fields').removeAttr('pagelayer-set-global'); }); typoHolder.find('[pagelayer-set-global="1"] .pagelayer-typo-global-default').trigger('click'); } typoHolder.find('.pagelayer-control-typo').slideToggle(100); return; } jQuery('.pagelayer-control-typo').slideUp(100); }); // Show hide global color option jQuery(document).on('click.pagelayer-global-color-icon', function (e){ var target = jQuery(e.target); var isGcolor = target.closest('.pagelayer-global-color-list'); var isGIcon = target.closest('.pagelayer-control-global-color-icon'); if(isGcolor.length > 0){ return; } if(isGIcon.length > 0){ var listEle = isGIcon.closest('li').find('.pagelayer-global-color-list'); jQuery('.pagelayer-global-color-list').not(listEle).slideUp(100); listEle.slideToggle(100); return; } jQuery('.pagelayer-global-color-list').slideUp(100); }); // Hide global color option jQuery(document).on('focus', '.wp-color-result', function(e){ jQuery('.pagelayer-global-color-list').slideUp(100); }); // Show hide global fonts option jQuery('#customize-theme-controls').on('click.pagelayer-global-typo-icon', function (e){ var target = jQuery(e.target); var isGcolor = target.closest('.pagelayer-global-font-list'); var isGIcon = target.closest('.pagelayer-control-global-typo-icon'); var typoHolder = isGIcon.closest('.pagelayer-control-typo-holder'); if(isGcolor.length > 0){ return; } if(isGIcon.length > 0){ typoHolder.find('.pagelayer-global-font-list').slideToggle(100); return; } jQuery('.pagelayer-global-font-list').slideUp(100); }); // Device handler jQuery('#customize-theme-controls').on('click', '.pagelayer-devices button', function(e){ e.stopPropagation(); var device = jQuery(this).data('device'); var devices = {'desktop' : 'tablet', 'tablet' : 'mobile', 'mobile' : 'desktop'}; jQuery('.devices-wrapper .devices [data-device="'+devices[device]+'"]').click(); }); // Add attr to detect device jQuery('#customize-theme-controls').attr('data-device-detector', 'desktop'); // Device handler jQuery('.devices-wrapper .devices button[data-device]').on('click', function(e){ e.stopPropagation(); var device = jQuery(this).data('device'); jQuery('.pagelayer-devices .active-device').removeClass('active-device'); jQuery('.pagelayer-devices [data-device="'+device+'"]').addClass('active-device'); jQuery('[data-device-detector]').attr('data-device-detector', device); }); // Units handler jQuery('.pagelayer-units').each(function(){ var units = jQuery(this); var uList = units.find('[data-unit]'); var input = units.find('.pagelayer-unit-input'); var uActive = units.find('[data-unit="'+input.val()+'"]'); units.find('[data-unit]').on('click', function(){ var uEle = jQuery(this); uList.removeClass('active'); uEle.addClass('active'); input.val(uEle.data('unit')).trigger('input'); }); if(uActive.length > 0){ uActive.click(); return; } //uList.first().click(); }); // Accordion Tab handlers jQuery('.pagelayer-accordion-tab').on('click', function(){ var toggle = jQuery(this); var allToggle = toggle.closest('ul').find('.pagelayer-accordion-tab').not(toggle); allToggle.nextUntil('.pagelayer-accordion-tab').slideUp(); allToggle.removeClass('pagelayer-active-accordion-tab') toggle.nextUntil('.pagelayer-accordion-tab').slideToggle(); toggle.toggleClass('pagelayer-active-accordion-tab'); var dash = toggle.find('.pagelayer-customize-heading .dashicons'); var allDash = toggle.closest('ul').find('.pagelayer-accordion-tab .pagelayer-customize-heading .dashicons'); allDash.addClass('dashicons-arrow-right-alt2'); allDash.removeClass('dashicons-arrow-down-alt2'); if(toggle.hasClass('pagelayer-active-accordion-tab')){ dash.addClass('dashicons-arrow-down-alt2'); dash.removeClass('dashicons-arrow-right-alt2'); } }); // Close all accordion tabs jQuery('.pagelayer-accordion-tab').nextUntil('.pagelayer-accordion-tab').hide(); // Link padding control field handler jQuery('.pagelayer-control-padding').each(function(){ pagelayer_control_padding_handler(jQuery(this)); }); // Link Global Color Palette jQuery('.pagelayer-global-setting-color .dashicons').click(function(){ jQuery('#accordion-section-pagelayer_global_colors_sec .accordion-section-title').click(); }); // Link Global Font Palette jQuery('.pagelayer-global-setting-font .dashicons-admin-generic').click(function(){ jQuery('#accordion-section-pagelayer_global_fonts_sec .accordion-section-title').click(); }); // Color Palette Custom Control pagelayer_color_palette_control_handler(); // Color Palette Custom Control pagelayer_font_palette_control_handler(); // Global color list handler pagelayer_global_color_list_handler(); // Global font list handler pagelayer_global_font_list_handler(); // Slider handler pagelayer_control_slider_handler(); }); // Global font list handler function pagelayer_global_font_list_handler(){ var font_list = ''; // Create global font list for(var font in pagelayer_global_fonts){ font_list += '<div class="pagelayer-global-font-list-item" data-global-id="'+font+'">'+ '<span class="pagelayer-global-font-title">'+ pagelayer_global_fonts[font]['title'] +'</span>'+ '</div>'; } jQuery('.customize-control-pagelayer-typo-control .pagelayer-control-typo-holder').each(function(){ var fHolder = jQuery(this); var fList = fHolder.find('.pagelayer-global-font-list'); if(fList.length < 1){ return; } // Add list of font list fList.append(font_list); var globalInput = fHolder.find('.pagelayer-global-font-input'); var selectfont = globalInput.data('key'); // Restore global value fHolder.find('.pagelayer-typo-global-default').on('click', function(e){ e.preventDefault(); e.stopPropagation(); var sEle = jQuery(this); var fieldHolder = sEle.closest('.pagelayer-control-typo-fields'); var globalID = globalInput.val(); if(pagelayer_empty(globalID) || pagelayer_empty(pagelayer_global_fonts[globalID])){ return; } var allInput = fieldHolder.find('select, input'); var name = allInput.first().attr('name'); var setFonts = pagelayer_global_fonts[globalID]['value']; // Set default var modes = {desktop: '', tablet: '_tablet', mobile: '_mobile'}; var val = ''; fieldHolder.attr('pagelayer-set-global', 1); allInput.val(val).trigger('change'); if(name in setFonts){ val = setFonts[name]; } if(typeof val == 'object'){ for(var mode in modes){ var _val = ''; if(mode in val){ _val = val[mode]; } fieldHolder.find('[name="'+name+modes[mode]+'"]').val(_val); } return; } allInput.val(val); }); if(fList.find('[data-global-id="'+selectfont+'"]').length > 0){ fList.find('[data-global-id="'+selectfont+'"]').addClass('pagelayer-global-selected'); // Set active fHolder.find('.pagelayer-control-global-typo-icon').addClass('pagelayer-active-global'); } // On change any field we need to handle for the global fHolder.find('select, input').on('input', function(){ var sEle = jQuery(this); var fieldHolder = sEle.closest('.pagelayer-control-typo-fields'); if(fieldHolder.attr('pagelayer-set-global') == '1'){ fieldHolder.removeAttr('pagelayer-set-global'); fieldHolder.find('select, input').trigger('change'); } }); }); jQuery('#customize-theme-controls').on('click', '.pagelayer-global-font-list-item', function(){ var listItem = jQuery(this); var globalID = listItem.data('global-id'); var listHolder = listItem.closest('.pagelayer-global-font-list'); var holder = listItem.closest('.pagelayer-control-typo-holder'); var allInputs = holder.find('select, input'); // Remove global font if(listItem.hasClass('pagelayer-global-selected')){ listItem.removeClass('pagelayer-global-selected'); holder.find('.pagelayer-control-global-typo-icon').removeClass('pagelayer-active-global'); holder.find('.pagelayer-global-font-input').val(''); holder.removeClass('pagelayer-global-on'); allInputs.trigger('input'); allInputs.closest('.pagelayer-control-typo-fields').removeAttr('pagelayer-set-global'); listHolder.hide(); return; } // Remove previous selecttion listHolder.find('.pagelayer-global-selected').removeClass('pagelayer-global-selected') listHolder.hide(); listItem.addClass('pagelayer-global-selected'); var key = holder.find( '.pagelayer-global-font-input' ).attr( 'data-customize-setting-link' ); // Empty all the typo allInputs.val('').trigger('input'); allInputs.closest('.pagelayer-control-typo-fields').attr('pagelayer-set-global', 1); holder.addClass('pagelayer-global-on'); // Set the actual option value to empty string. wp.customize( key, function( obj ) { obj.set(globalID); }); // Apply all global values holder.find('.pagelayer-typo-global-default').click(); holder.find('.pagelayer-control-global-typo-icon').addClass('pagelayer-active-global'); }); } // Global color list handler function pagelayer_global_color_list_handler(){ jQuery(document).on('click', '.pagelayer-global-color-list-item', function(e, skip_update){ skip_update = skip_update || false; var listItem = jQuery(this); var globalID = listItem.data('global-id'); var listHolder = listItem.closest('.pagelayer-global-color-list'); // Remove previous selecttion listHolder.find('.pagelayer-global-selected').removeClass('pagelayer-global-selected'); listItem.addClass('pagelayer-global-selected'); listHolder.hide(); var input = listItem.closest('li').find( '.pagelayer-alpha-color-control' ) var code = '$'+globalID; var color = pagelayer_global_colors[globalID]['value']; input.unbind('change.pagelayer_global input.pagelayer_global color_change.pagelayer_global'); if(!skip_update){ var key = input.attr( 'data-customize-setting-link' ); // Set the actual option value to empty string. wp.customize( key, function( obj ) { obj.set(code); }); } // Set the actual option value to empty string. input.val( color ); input.closest('.wp-picker-container').find('.wp-color-result').css({'background-color': color}); input.on('change.pagelayer_global input.pagelayer_global color_change.pagelayer_global', function(){ var colorCode = jQuery(this).val(); if(jQuery.trim(colorCode) == color){ return; } listItem.closest('li').find('.pagelayer-control-global-color-icon').removeClass('pagelayer-active-global'); listHolder.find('.pagelayer-global-selected').removeClass('pagelayer-global-selected'); }); listItem.closest('li').find('.pagelayer-control-global-color-icon').addClass('pagelayer-active-global'); }); jQuery('.pagelayer-global-color-list-item.pagelayer-global-selected').trigger('click', [true]); } var pagelayer_global_colors_timmer = {}; // Color palette Custom Control function pagelayer_color_palette_control_handler(){ var global_palette = jQuery('#customize-control-pagelayer_global_colors'); // Get the values from the repeater input fields and add to our hidden field var pagelayerGetAllInputs = function() { var pagelayer_colors_palette = {}; global_palette.find('.pagelayer-alpha-color-control').each(function(){ var cEle = jQuery(this); var id = cEle.data('id'); pagelayer_colors_palette[id] = { 'title' : cEle.closest('.pagelayer-color-holder').find('.pagelayer-color-title').text(), 'value' : cEle.val(), } }); var inputValues = JSON.stringify(pagelayer_colors_palette); // Add all the values from our repeater fields to the hidden field (which is the one that actually gets saved) global_palette.find('.pagelayer-color-palette-data').val(inputValues).trigger('change'); } // Append a new row to our list of elements var pagelayer_add_row = function(ele, val = ''){ var id = pagelayer_generate_randstr(6); var name = ele.find('.pagelayer-color-holder').length - 3; var newRow = jQuery('<div class="pagelayer-color-holder"><span class="pagelayer-color-title" contenteditable="true">Color #'+name+'</span><span class="pagelayer-color-controls">'+val+'</span><span class="customize-control-color-repeater-delete"><span class="dashicons dashicons-no-alt"></span></span><input class="pagelayer-alpha-color-control" type="text" data-show-opacity="true" data-palette="true" data-default-color="'+val+'" data-id="'+id+'" data-title="New Color"/></div>'); ele.find('.pagelayer-color-holder:last').after(newRow); pagelayer_alpha_color_control_init(); // Update global variable ele.find('.pagelayer-alpha-color-control').trigger('color_change'); } jQuery(document).on('color_change change', '#customize-control-pagelayer_global_colors .pagelayer-alpha-color-control, #customize-control-pagelayer_global_colors .pagelayer-color-title', function(){ var cEle = jQuery(this); clearTimeout(pagelayer_global_colors_timmer); pagelayer_global_colors_timmer = setTimeout(function(){ cEle.closest('.pagelayer-color-holder').find('.pagelayer-color-controls').html(cEle.val()); pagelayerGetAllInputs(); }, 300); }); jQuery(document).on('input', '#customize-control-pagelayer_global_colors .pagelayer-color-title', function(){ clearTimeout(pagelayer_global_colors_timmer); pagelayer_global_colors_timmer = setTimeout(function(){ pagelayerGetAllInputs(); }, 500); }); // Add new item jQuery('.customize-control-color-repeater-add').click(function(event) { event.preventDefault(); pagelayer_add_row(jQuery(this).parent()); }); // Remove item starting from it's parent element jQuery(document).on('click', '.pagelayer-color-holder .customize-control-color-repeater-delete .dashicons', function(event) { event.preventDefault(); var numItems = jQuery(this).closest('.pagelayer-color-holder').remove(); pagelayerGetAllInputs(); }); } // Font palette Custom Control function pagelayer_font_palette_control_handler(){ var global_palette = jQuery('#customize-control-pagelayer_global_fonts'); // Get the values from the repeater input fields and add to our hidden field var pagelayerGetAllInputs = function() { var pagelayer_colors_palette = {}; global_palette.find('.pagelayer-font-holder').each(function(){ var cEle = jQuery(this); var id = cEle.data('id'); var data = {}; var array = cEle.find('input, textarea, select').serializeArray(); jQuery.each(array, function () { if(this.value == ''){ return; } var name = this.name; var value = this.value; // Is multi array if(name.indexOf("[") > -1){ var nameArray = name.replaceAll(']', '').split('\['), base = nameArray.shift(), last = nameArray.pop(); if(typeof data[base] != 'object'){ data[base] = {}; } // Set base object as refrence var _val = data[base]; for(key in nameArray){ if(typeof _val[nameArray[key]] != 'object'){ _val[nameArray[key]] = {}; } // Change the refrence of object _val = _val[nameArray[key]]; } _val[last] = value; return; } data[name] = value; }); pagelayer_colors_palette[id] = { 'title' : cEle.children('.pagelayer-font-title').text(), 'value' : data, } }); var inputValues = JSON.stringify(pagelayer_colors_palette); // Add all the values from our repeater fields to the hidden field (which is the one that actually gets saved) global_palette.find('.pagelayer-font-palette-data').val(inputValues).trigger('change'); } // Append a new row to our list of elements var pagelayer_add_row = function(ele, val = ''){ var id = pagelayer_generate_randstr(6); var name = ele.find('.pagelayer-font-holder').length - 3; var fontHtml = ''; var option = function(val, lang){ var selected = '';//(val != prop.c['val']) ? '' : 'selected="selected"'; var lang = lang || 'Default'; return '<option value="'+val+'" '+selected+'>'+lang+'</option>'; } fontHtml += '<div class="pagelayer-font-holder" data-id="'+id+'"><span class="pagelayer-font-title" contenteditable="true">New Font #'+ name +'</span><span class="customize-control-font-repeater-delete"><span class="dashicons dashicons-no-alt"></span></span><div class="pagelayer-control-typo-holder"><span class="pagelayer-control-typo-icon dashicons dashicons-edit"></span><div class="pagelayer-control-typo">'; for(var sk in pagelayer_global_font_settings){ var sval = pagelayer_global_font_settings[sk]; fontHtml += '<div class="pagelayer-control-typo-fields">'+ '<label class="pagelayer-control-typo-fields-label">'+sval['label']; if('responsive' in sval){ fontHtml += '<span class="pagelayer-devices">'+ '<button type="button" class="active-device" aria-pressed="true" data-device="desktop">'+ '<i class="dashicons dashicons-desktop"></i>'+ '</button>'+ '<button type="button"aria-pressed="false" data-device="tablet">'+ '<i class="dashicons dashicons-tablet"></i>'+ '</button>'+ '<button type="button" aria-pressed="false" data-device="mobile">'+ '<i class="dashicons dashicons-smartphone"></i>'+ '</button>'+ '</span>'; } fontHtml += '</label>'; if('choices' in sval){ fontHtml += '<select name="'+ sk +'">'; for( var value in sval['choices'] ) { if(typeof sval['choices'][value] !== 'object'){ fontHtml += option(value, sval['choices'][value]); continue; } if(value != 'default'){ fontHtml += '<optgroup label="'+value+'">'; } for (x in sval['choices'][value]){ fontHtml += option((jQuery.isNumeric(x) ? sval['choices'][value][x] : x), sval['choices'][value][x]); } } fontHtml += '</select>'; }else{ fontHtml += '<input type="number" name="'+ sk +'">'; } fontHtml += '</div>'; } fontHtml += '</div></div></div>'; ele.find('.customize-control-font-repeater-add').before(fontHtml); } jQuery(document).on('input', '#customize-control-pagelayer_global_fonts input, #customize-control-pagelayer_global_fonts textarea, #customize-control-pagelayer_global_fonts select', function(){ clearTimeout(pagelayer_global_colors_timmer); pagelayer_global_colors_timmer = setTimeout(function(){ pagelayerGetAllInputs(); }, 300); }); jQuery(document).on('input', '#customize-control-pagelayer_global_fonts .pagelayer-font-title', function(){ clearTimeout(pagelayer_global_colors_timmer); pagelayer_global_colors_timmer = setTimeout(function(){ pagelayerGetAllInputs(); }, 500); }); // Add new item jQuery('.customize-control-font-repeater-add').click(function(event) { event.preventDefault(); pagelayer_add_row(jQuery(this).parent()); pagelayerGetAllInputs(); }); // Remove item starting from it's parent element jQuery('#customize-theme-controls').on('click', '.pagelayer-font-holder .customize-control-font-repeater-delete .dashicons', function(event) { event.preventDefault(); var numItems = jQuery(this).closest('.pagelayer-font-holder').remove(); pagelayerGetAllInputs(); }); } // Padding handler function pagelayer_control_padding_handler(jEle){ var linked = jEle.find('.dashicons-admin-links'); var inputs = jEle.find('.pagelayer-padding-input'); var is_same = true; var first_val = jEle.find('.pagelayer-padding-input').first().val(); jEle.find('.pagelayer-padding-input').each(function(){ if(jQuery(this).val() == first_val){ return; } is_same = false; return false; }); if(is_same){ linked.addClass('pagelayer-padding-linked'); } linked.on('click', function (e){ jQuery(this).toggleClass('pagelayer-padding-linked'); }); inputs.on('change', function(){ // Are the values linked if(! linked.hasClass('pagelayer-padding-linked')){ return; } var val = jQuery(this).val(); inputs.each(function(){ jQuery(this).val(val); jQuery(this).trigger('input'); }); }); } /** * Alpha Color Picker JS * * This file includes several helper functions and the core control JS. */ function pagelayer_alpha_color_control_init(){ var timeOut = 0; // Loop over each control and transform it into our color picker. jQuery( '.pagelayer-alpha-color-control' ).each( function() { // Scope the vars. var $control, startingColor, paletteInput, showOpacity, defaultColor, palette, colorPickerOptions, $container, $alphaSlider, alphaVal, sliderOptions; // Store the control instance. $control = jQuery( this ); if($control.closest('.wp-picker-holder').length > 0){ return; } setTimeout(function(){ // Get a clean starting value for the option. startingColor = $control.val().replace( /\s+/g, '' ); // Get some data off the control. paletteInput = $control.attr( 'data-palette' ); showOpacity = $control.attr( 'data-show-opacity' ); defaultColor = $control.attr( 'data-default-color' ); // Process the palette. if ( paletteInput.indexOf( '|' ) !== -1 ) { palette = paletteInput.split( '|' ); } else if ( 'false' == paletteInput ) { palette = false; } else { palette = true; } // Set up the options that we'll pass to wpColorPicker(). colorPickerOptions = { change: function( event, ui ) { var key, value, alpha, $transparency; key = $control.attr( 'data-customize-setting-link' ); value = $control.wpColorPicker( 'color' ); // Set the opacity value on the slider handle when the default color button is clicked. if ( defaultColor == value ) { alpha = pagelayer_get_alpha_value_from_color( value ); $alphaSlider.find( '.ui-slider-handle' ).text( alpha ); } // Send ajax request to wp.customize to trigger the Save action. wp.customize( key, function( obj ) { obj.set( value ); }); $transparency = $container.find( '.transparency' ); // Always show the background color of the opacity slider at 100% opacity. $transparency.css( 'background-color', ui.color.toString( 'no-alpha' ) ); $control.trigger('color_change'); }, palettes: palette // Use the passed in palette. }; // Create the colorpicker. $control.wpColorPicker( colorPickerOptions ); $container = $control.parents( '.wp-picker-container:first' ); // Insert our opacity slider. jQuery( '<div class="alpha-color-picker-container">' + '<div class="min-click-zone click-zone"></div>' + '<div class="max-click-zone click-zone"></div>' + '<div class="alpha-slider"></div>' + '<div class="transparency"></div>' + '</div>' ).appendTo( $container.find( '.wp-picker-holder' ) ); $alphaSlider = $container.find( '.alpha-slider' ); // If starting value is in format RGBa, grab the alpha channel. alphaVal = pagelayer_get_alpha_value_from_color( startingColor ); // Set up jQuery UI slider() options. sliderOptions = { create: function( event, ui ) { var value = jQuery( this ).slider( 'value' ); // Set up initial values. jQuery( this ).find( '.ui-slider-handle' ).text( value ); jQuery( this ).siblings( '.transparency ').css( 'background-color', startingColor ); }, value: alphaVal, range: 'max', step: 1, min: 0, max: 100, animate: 300 }; // Initialize jQuery UI slider with our options. $alphaSlider.slider( sliderOptions ); // Maybe show the opacity on the handle. if( 'true' == showOpacity ){ $alphaSlider.find( '.ui-slider-handle' ).addClass( 'show-opacity' ); } // Move input box inside the picker holder $control.closest('.wp-picker-input-wrap').each(function () { jQuery(this).next('.wp-picker-holder').prepend(jQuery(this)); }); // Bind event handlers for the click zones. $container.find( '.min-click-zone' ).on( 'click', function() { pagelayer_update_alpha_value_on_color_control( 0, $control, $alphaSlider, true ); }); $container.find( '.max-click-zone' ).on( 'click', function() { pagelayer_update_alpha_value_on_color_control( 100, $control, $alphaSlider, true ); }); // Bind event handler for clicking on a palette color. $container.find( '.iris-palette' ).on( 'click', function() { var color, alpha; color = jQuery( this ).css( 'background-color' ); alpha = pagelayer_get_alpha_value_from_color( color ); pagelayer_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); // Sometimes Iris doesn't set a perfect background-color on the palette, // for example rgba(20, 80, 100, 0.3) becomes rgba(20, 80, 100, 0.298039). // To compensante for this we round the opacity value on RGBa colors here // and save it a second time to the color picker object. if ( alpha != 100 ) { color = color.replace( /[^,]+(?=\))/, ( alpha / 100 ).toFixed( 2 ) ); } $control.wpColorPicker( 'color', color ); }); // Bind event handler for clicking on the 'Clear' button. $container.find( '.button.wp-picker-clear' ).on( 'click', function() { var key = $control.attr( 'data-customize-setting-link' ); // The #fff color is delibrate here. This sets the color picker to white instead of the // defult black, which puts the color picker in a better place to visually represent empty. $control.wpColorPicker( 'color', '' ); // Set the actual option value to empty string. wp.customize( key, function( obj ) { obj.set( '' ); }); pagelayer_update_alpha_value_on_alpha_slider( 100, $alphaSlider ); }); // Bind event handler for clicking on the 'Default' button. $container.find( '.button.wp-picker-default' ).on( 'click', function() { var alpha = pagelayer_get_alpha_value_from_color( defaultColor ); pagelayer_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); }); // Bind event handler for typing or pasting into the input. $control.on( 'input', function() { var value = jQuery( this ).val(); var alpha = pagelayer_get_alpha_value_from_color( value ); pagelayer_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); }); // Update all the things when the slider is interacted with. $alphaSlider.slider().on( 'slide', function( event, ui ) { var alpha = parseFloat( ui.value ) / 100.0; pagelayer_update_alpha_value_on_color_control( alpha, $control, $alphaSlider, false ); // Change value shown on slider handle. jQuery( this ).find( '.ui-slider-handle' ).text( ui.value ); }); }, timeOut); timeOut += 20; }); } /** * Override the stock color.js toString() method to add support for * outputting RGBa or Hex. */ Color.prototype.toString = function( flag ) { // If our no-alpha flag has been passed in, output RGBa value with 100% opacity. // This is used to set the background color on the opacity slider during color changes. if ( 'no-alpha' == flag ) { return this.toCSS( 'rgba', '1' ).replace( /\s+/g, '' ); } // If we have a proper opacity value, output RGBa. if ( 1 > this._alpha ) { return this.toCSS( 'rgba', this._alpha ).replace( /\s+/g, '' ); } // Proceed with stock color.js hex output. var hex = parseInt( this._color, 10 ).toString( 16 ); if ( this.error ) { return ''; } if ( hex.length < 6 ) { for ( var i = 6 - hex.length - 1; i >= 0; i-- ) { hex = '0' + hex; } } return '#' + hex; }; /** * Given an RGBa, RGB, or hex color value, return the alpha channel value. */ function pagelayer_get_alpha_value_from_color( value ) { var alphaVal; // Remove all spaces from the passed in value to help our RGBa regex. value = value.replace( / /g, '' ); if ( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ ) ) { alphaVal = parseFloat( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ )[1] ).toFixed(2) * 100; alphaVal = parseInt( alphaVal ); } else { alphaVal = 100; } return alphaVal; } /** * Force update the alpha value of the color picker object and maybe the alpha slider. */ function pagelayer_update_alpha_value_on_color_control( alpha, $control, $alphaSlider, update_slider ) { var iris, colorPicker, color; iris = $control.data( 'a8cIris' ); colorPicker = $control.data( 'wpWpColorPicker' ); // Set the alpha value on the Iris object. iris._color._alpha = alpha; // Store the new color value. color = iris._color.toString(); // Set the value of the input. $control.val( color ).trigger('color_change'); // Update the background color of the color picker. colorPicker.toggler.css({ 'background-color': color }); // Maybe update the alpha slider itself. if ( update_slider ) { pagelayer_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); } // Update the color value of the color picker object. $control.wpColorPicker( 'color', color ); } /** * Update the slider handle position and label. */ function pagelayer_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ){ $alphaSlider.slider( 'value', alpha ); $alphaSlider.find( '.ui-slider-handle' ).text( alpha.toString() ); } /** * Generates random string. */ // Generates a random string of "n" characters function pagelayer_generate_randstr(n, special){ var text = ''; var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; special = special || 0; if(special){ possible = possible + '&#$%@'; } for(var i=0; i < n; i++){ text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; }; // PHP equivalent empty() function pagelayer_empty(mixed_var) { var undef, key, i, len; var emptyValues = [undef, null, false, 0, '', '0']; for (i = 0, len = emptyValues.length; i < len; i++) { if (mixed_var === emptyValues[i]) { return true; } } if (typeof mixed_var === 'object') { for (key in mixed_var) { // TODO: should we check for own properties only? //if (mixed_var.hasOwnProperty(key)) { return false; //} } return true; } return false; }; // Slider handler function pagelayer_control_slider_handler(){ // Change the value of the input field as the slider is moved jQuery('.pagelayer-slider').on('input', function(event, ui) { var sliderValue = jQuery(this).val(); jQuery(this).parent().find('.customize-control-slider-value').val(sliderValue).trigger('input'); }); // Update slider if the input field loses focus as it's most likely changed jQuery('.customize-control-slider-value').on('change', function() { var resetValue = jQuery(this).val(); var slider = jQuery(this).parent().find('.pagelayer-slider'); var sliderMinValue = parseInt(slider.attr('min')); var sliderMaxValue = parseInt(slider.attr('max')); // Make sure our manual input value doesn't exceed the minimum & maxmium values if(resetValue < sliderMinValue) { resetValue = sliderMinValue; jQuery(this).val(resetValue).trigger('input'); } if(resetValue > sliderMaxValue) { resetValue = sliderMaxValue; jQuery(this).val(resetValue).trigger('input'); } slider.val(resetValue); }); }