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-pro/js
Viewing File: /var/softaculous/sitepad/editor/site-data/plugins/pagelayer-pro/js/premium.js
// Render for audio function pagelayer_render_pl_audio(el){ el.tmp['src-url'] = el.tmp['src-url'] || el.atts['src']; return; /*// Do we have a URL ? if(!pagelayer_empty(el.atts['a_url'])){ //Get the file extension var extension = el.atts['a_url'].substr(el.atts['a_url'].lastIndexOf('.') + 1); //Create source tag according to audio file switch(extension){ default: case 'mp3': el.atts['a_type'] = 'audio/mpeg'; break; case 'ogg': el.atts['a_type']= 'audio/ogg'; break; case 'wav': el.atts['a_type'] = 'audio/wav'; break; } } // Add the attr if(!pagelayer_empty(el.atts['a_url']) && !pagelayer_empty(el.atts['a_type'])){ el.CSS.attr.push({'sel': '{{element}} source', 'val': 'src="{{a_url}}"'}); el.CSS.attr.push({'sel': '{{element}} source', 'val': 'type="{{a_type}}"'}); } */ }; function pagelayer_render_end_pl_audio(el){ var jEle = el.$; pagelayer_audio(jEle); } // render the video slider function pagelayer_render_end_pl_video_slider(el){ pagelayer_owl_destroy(el.$, '.pagelayer-video-slider-holder'); pagelayer_pl_video_slider(el.$); }; // End Render for splash function pagelayer_render_end_pl_splash(el){ var jEle = el.$; var container = jEle.find('.pagelayer-splash-container'); container.fadeIn(); el.$.find('.pagelayer-splash-close, .pagelayer-splash-bg-close').on('click', function(e){ container.fadeOut(); }); if(el.atts['style'] == 'custom'){ container.css({'background': el.atts['shadow_color'], 'color': el.atts['content_color']}); }else{ container.css({'background': '', 'color': ''}); } container.removeClass().addClass('pagelayer-splash-container pagelayer-splash-'+el.atts['style']); } // Render the Posts function pagelayer_render_end_pl_posts(el){ var post = {}; post['pagelayer_nonce'] = pagelayer_ajax_nonce; // Page count if(el.atts['count']) post['posts_per_page'] = el.atts['count']; if(el.atts['show_thumb']) post['show_thumb'] = el.atts['show_thumb']; if(el.atts['thumb_size']) post['thumb_size'] = el.atts['thumb_size']; if(el.atts['show_content']) post['show_content'] = el.atts['show_content']; if(el.atts['show_title']) post['show_title'] = el.atts['show_title']; if(el.atts['more']) post['more'] = el.atts['more']; if(el.atts['btn_type']) post['btn_type'] = el.atts['btn_type']; if(el.atts['size']) post['size'] = el.atts['size']; if(el.atts['icon_position']) post['icon_position'] = el.atts['icon_position']; if(el.atts['icon']) post['icon'] = el.atts['icon']; if(el.atts['show_more']) post['show_more'] = el.atts['show_more']; if(el.atts['meta_sep']) post['meta_sep'] = el.atts['meta_sep']; if(el.atts['exc_length']) post['exc_length'] = el.atts['exc_length']; if(el.atts['post_type']) post['post_type'] = el.atts['post_type']; if(el.atts['posts_order']) post['order'] = el.atts['posts_order']; if(el.atts['inc_term']) post['term'] = el.atts['inc_term']; if(el.atts['inc_author']) post['author_name'] = el.atts['inc_author']; if(el.atts['exc_term']) post['exc_term'] = el.atts['exc_term']; if(el.atts['exc_author']) post['exc_author'] = el.atts['exc_author']; if(el.atts['offset']) post['offset'] = el.atts['offset']; if(el.atts['ignore_sticky']) post['ignore_sticky'] = el.atts['ignore_sticky']; if(el.atts['orderby']) post['orderby'] = el.atts['orderby']; if(el.atts['by_period']) post['by_period'] = el.atts['by_period']; if(el.atts['before_date']) post['before_date'] = el.atts['before_date']; if(el.atts['after_date']) post['after_date'] = el.atts['after_date']; if(el.atts['thumb_img_type']) post['thumb_img_type'] = el.atts['thumb_img_type']; var img_size = el.tmp['def_thumb_img-'+el.atts['thumb_size']+'-url']; if(el.atts['def_thumb_img']) post['def_thumb_img'] = pagelayer_empty(img_size) ? el.tmp['def_thumb_img-url'] : img_size; if(el.atts['meta']){ var meta_arr = el.atts['meta'].split(','); jQuery.each(meta_arr, function(index, value){ post[value] = value; }); } if(pagelayer_empty(pagelayer_posts_data) || !pagelayer_compare_object(pagelayer_posts_data, post) || pagelayer_empty(pagelayer_ajax_data[el['id']])){ pagelayer_posts_data = post; jQuery.ajax({ url: pagelayer_ajax_url+'action=pagelayer_posts_data', type: 'post', data: post, success: function(data){ //console.log(data); el.$.find('.pagelayer-posts-container').html(data); pagelayer_ajax_data[el['id']] = data; if(el.atts['enable_slider']){ pagelayer_pl_posts(el.$); } } }); }else{ el.$.find('.pagelayer-posts-container').html(pagelayer_ajax_data[el['id']]); if(el.atts['enable_slider']){ pagelayer_pl_posts(el.$); } } } var pagelayer_folio_data = {}; // Render the Post portfolio function pagelayer_render_html_pl_post_folio(el){ var post = {}; post['pagelayer_nonce'] = pagelayer_ajax_nonce; if(el.atts['type']) post['post_type'] = el.atts['type']; if(el.atts['filter_by']) post['filter_by'] = el.atts['filter_by']; if(el.atts['count']) post['posts_per_page'] = el.atts['count'];// Page count if(pagelayer_empty(pagelayer_folio_data) || !pagelayer_compare_object(pagelayer_folio_data, post) || pagelayer_empty(pagelayer_ajax_data[el['id']])){ pagelayer_folio_data = post; jQuery.ajax({ url: pagelayer_ajax_url+'action=pagelayer_fetch_posts', type: 'post', data: post, success: function(data){ //console.log(data); el.$.find('.pagelayer-postfolio-section').html(data); pagelayer_ajax_data[el['id']] = data; pagelayer_post_folio(el.$); } }); }else{ el.$.find('.pagelayer-postfolio-section').html(pagelayer_ajax_data[el['id']]); } } // Render the chart function pagelayer_render_pl_chart(el){ el['atts']['xcolor'] = pagelayer_empty(el['atts']['xcolor']) ? '' : pagelayer_parse_color(el['atts']['xcolor'], false); el['atts']['ycolor'] = pagelayer_empty(el['atts']['ycolor']) ? '' : pagelayer_parse_color(el['atts']['ycolor'], false); } // Render the chart function pagelayer_render_end_pl_chart(el){ var jEle = el.$; pagelayer_chart(jEle); } // Render the chart Dataset function pagelayer_render_pl_chart_datasets(el){ el['atts']['chart_border_color'] = pagelayer_empty(el['atts']['chart_border_color']) ? '' : pagelayer_parse_color(el['atts']['chart_border_color'], false); el['atts']['bg_color'] = pagelayer_empty(el['atts']['bg_color']) ? '' : pagelayer_parse_color(el['atts']['bg_color'], false); } // Render the search form function pagelayer_render_pl_search(el){ if('placeholder' in el.atts){ el.tmp['placeholder'] = pagelayer_htmlEntities(el.atts['placeholder']); } } // Render the search form function pagelayer_render_end_pl_search(el){ pagelayer_search_form(el.$); } //var shuffleInstance1 = {}; // Render the img portfolio function pagelayer_render_end_pl_img_portfolio(el){ pagelayer_pl_img_portfolio(el.$); } // Render the img portfolio function pagelayer_render_pl_single_img(el){ jQuery(el.$).parent().attr('data-groups','["'+el.atts['cat_name']+'"]'); el.atts['func_img'] = el.tmp['img-'+el.atts['img-size']+'-url'] || el.tmp['img-url']; el.atts['func_img'] = el.atts['func_img'] || el.atts['img']; // What is the link ? if('link_type' in el.atts){ // Custom url if(el.atts['link_type'] == 'custom_url'){ el.atts['func_link'] = pagelayer_empty(el.tmp['link']) ? '' : el.tmp['link']; } // Link to the media file itself if(el.atts['link_type'] == 'media_file'){ el.atts['func_link'] = el.tmp['img-url'] || el.atts['img']; } // Lightbox if(el.atts['link_type'] == 'lightbox'){ el.atts['func_link'] = el.tmp['img-url'] || el.atts['img']; } } } // Incase if there is a lightbox function pagelayer_render_end_pl_single_img(el){ pagelayer_pl_image(el.$); } // Render the wp custom menus function pagelayer_sc_render_pl_wp_custom_menu(el){ var jEle = el.$; var params = { title: pagelayer_get_att(jEle, 'title'), nav_menu: pagelayer_get_att(jEle, 'nav_menu') }; var wp_custom_menu = jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_fetch_wp_custom_menu', type: 'POST', data: params, async: false }).responseText; jEle.find('.pagelayer-wp-custom-menu-container').html(wp_custom_menu); } // Render the pages function pagelayer_sc_render_pl_wp_pages(el){ var jEle = el.$; var params = { sortby: pagelayer_get_att(jEle, 'sortby'), exclude: pagelayer_get_att(jEle, 'exclude') } var wp_pages = jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_fetch_wp_pages', type: 'POST', data: params, async: false }).responseText; jEle.find('.pagelayer-wp-pages-title').html(pagelayer_get_att(jEle, 'title')); jEle.find('.pagelayer-wp-pages').html(wp_pages); } // Render tags function pagelayer_sc_render_pl_wp_search(el){ var jEle = el.$; var title = pagelayer_get_att(jEle, 'title'); //show title for recent comments jEle.find('.pagelayer-wp-search-title').empty().text(title); //Ajax call for fetching recent comments jQuery.ajax({ type: "POST", url: pagelayer_ajax_url+'&action=pagelayer_wp_search', success: function(response){ if(!pagelayer_empty(response)){ jEle.find('.pagelayer-wp-search-option').empty().html(response); } } }); } //render tags function pagelayer_sc_render_pl_wp_rss(el){ var jEle = el.$; var title = ''; var items = pagelayer_get_att(jEle, 'items'); var url = pagelayer_get_att(jEle, 'url'); var summary, author, date = 0; if(pagelayer_get_att(jEle, 'show_summary') == 'checked'){ summary = 1; } if(pagelayer_get_att(jEle, 'show_author') == 'checked'){ author = 1; } if(pagelayer_get_att(jEle, 'show_date') == 'checked'){ date = 1; } var t = pagelayer_get_att(jEle, 'title'); if(!pagelayer_empty(t)){ title = t; } //Ajax call for fetching recent comments jQuery.ajax({ type: "POST", url: pagelayer_ajax_url+'&action=pagelayer_wp_rss', data: {"num_items": items, "URL" : url, "summary" : summary, "author" : author, "date" : date, "title": title }, success: function(response){ if(!pagelayer_empty(response)){ jEle.find('.pagelayer-wp-rss-option').empty().html(response); } } }); } //render tags function pagelayer_sc_render_pl_wp_meta(el){ var jEle = el.$; var title = ''; var t = pagelayer_get_att(jEle, 'title'); if(!pagelayer_empty(t)){ title = t; } //Ajax call for fetching recent comments jQuery.ajax({ type: "POST", url: pagelayer_ajax_url+'&action=pagelayer_wp_meta', data: { "title": title }, success: function(response){ if(!pagelayer_empty(response)){ jEle.find('.pagelayer-wp-meta-option').empty().html(response); } } }); }; // Render the image hotspot function pagelayer_render_pl_image_hotspot(el){ // Remove animation classes el.$.find('.pagelayer-hotspots-icon-holder').removeClass (function (index, className) { return (className.match (/(^|\s)pagelayer-animation-\S+/g) || []).join(' '); }); // Decide the image URL el.tmp['img-url'] = el.tmp['img-url'] || el.atts['img']; } // Setup of image hotspot function pagelayer_render_end_pl_image_hotspot(el){ pagelayer_image_hotspot(el.$); }; // Render the table function pagelayer_render_end_pl_table(el){ pagelayer_table(el.$); }; // Render the Author Block function pagelayer_render_pl_author_box(el){ var jEle = el.$; if(el.atts['box_source'] == 'current'){ el.tmp['avatar-url'] = pagelayer_author['avatar']; el.atts['display_name'] = pagelayer_author['display_name']; el.atts['description'] = pagelayer_author['description']; el.atts['user_url'] = pagelayer_author['user_url']; }else{ el.tmp['avatar-url'] = el.tmp['avatar-url'] || el.atts['avatar']; } el.atts['display_html'] = '<'+el.atts['name_style']+'>'+el.atts['display_name']+'</'+el.atts['name_style']+'>'; }; // Render the Sitemap function pagelayer_render_pl_sitemap_item(el){ var jEle = el.$; var html_element = ''; var data_type = '', post_order = '', order = '', hier = '', depth = ''; if(el.atts['sitemap_type'] == 'post_type'){ if(pagelayer_empty(el.atts['title'])){ el.atts['title'] = 'Pages'; } data_type = el.atts['source_post']; post_order = el.atts['order_post']; order = el.atts['order']; hier = el.atts['hierarchical']; depth = el.atts['depth']; jQuery.ajax({ type: "POST", url: pagelayer_ajax_url+'&action=pagelayer_get_pages_list', data: { "type": data_type , "post_order": post_order, "order": order, "hier": hier, "depth": depth, pagelayer_nonce: pagelayer_ajax_nonce }, async:false, success: function(response){ html_element += '<div class="pagelayer-sitemap-section">'; html_element += '<span>'+el.atts['title']+'</span>'; html_element += response; html_element += '</div>'; //jEle.find('.pagelayer-sitemap-section').html(html_element); el.atts['sitemap_html'] = html_element; } }); }else{ if(pagelayer_empty(el.atts['title'])){ el.atts['title'] = 'Categories'; } data_type = el.atts['source_taxonomy']; post_order = el.atts['order_taxonomy']; order = el.atts['order']; hier = el.atts['hierarchical']; depth = el.atts['depth']; empty = el.atts['hide_empty']; jQuery.ajax({ type: "POST", url: pagelayer_ajax_url+'&action=pagelayer_get_taxonomy_list', data: { "type": data_type , "post_order": post_order, "order": order, "hier": hier, "depth": depth, "empty": empty, pagelayer_nonce: pagelayer_ajax_nonce }, async:false, success: function(response){ html_element += '<div class="pagelayer-sitemap-section">'; html_element += '<span>'+el.atts['title']+'</span>'; html_element += response; html_element += '</div>'; //jEle.find('.pagelayer-sitemap-section').html(html_element); el.atts['sitemap_html'] = html_element; } }); } }; // Render the fb button function pagelayer_render_pl_fb_btn(el){ jEle = el.$; if(el.atts['link_type'] == "current"){ el.atts['custom-url'] = pagelayer_post_permalink; } pagelayer_fb_apps(el.$); }; // Render the fb embed function pagelayer_render_pl_fb_embed(el){ pagelayer_fb_apps(el.$); }; // Render the fb page function pagelayer_render_pl_fb_page(el){ pagelayer_fb_apps(el.$); }; // Render the fb comments function pagelayer_render_pl_fb_comments(el){ jEle = el.$; if(el.atts['link_type'] == "current"){ el.atts['custom-url'] = pagelayer_post_permalink; } pagelayer_fb_apps(el.$); }; // Render the slides function pagelayer_render_end_pl_slides(el){ pagelayer_owl_destroy(el.$, '.pagelayer-slides-holder'); pagelayer_pl_slides(el.$); } // Render the Single Review function pagelayer_render_end_pl_review(el){ var jEle = el.$.find('.pagelayer-stars-container'); pagelayer_stars(jEle); } // Render the Review Slider function pagelayer_render_end_pl_review_slider(el){ pagelayer_owl_destroy(el.$, '.pagelayer-reviews-holder'); pagelayer_reviews_slider(el.$); } // Render the template content function pagelayer_render_pl_templates(el){ el.atts['template_content'] = ''; if( !pagelayer_empty(el.atts['templates']) ){ jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_apply_revision&revisionID='+el.atts['templates'], type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, 'pagelayer-live' : 1, }, success: function(response, status, xhr){ var obj = jQuery.parseJSON(response); if(obj['error']){ pagelayer_show_msg(obj['error'], 'error'); el.CSS.css.push({'sel': '{{element}} .pagelayer-template-content', 'val': 'min-height:20px;background-color:#e3e3e3;'}); }else{ el.$.find('.pagelayer-template-content').html(obj['content']); var selector = el.$.find('.pagelayer-template-content .pagelayer-ele'); //pagelayer_element_setup(selector, true); //selector.find('.pagelayer-ele-overlay').remove(); // Unwrap the wraps if(selector.parent().is('.pagelayer-ele-wrap')){ selector.unwrap(); } } } }); }else{ el.CSS.css.push({'sel': '{{element}} .pagelayer-template-content', 'val': 'min-height:20px;background-color:#e3e3e3;'}); } } ///////////////////////////// ////WooCommerce Shortcode Js ///////////////////////////// var product_data_timer = {}; function pagelayer_ajax_do_shortcodes(el, success){ var jEle = el.$; var shortcode_data = pagelayer_generate_sc(jEle, true); // Clear any previous timeout clearTimeout(product_data_timer[el.id]); // Set a timer for constant change product_data_timer[el.id] = setTimeout(function(){ // Make the call jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes', type: 'POST', data: { pagelayer_nonce: pagelayer_ajax_nonce, shortcode_data: shortcode_data }, success: function(data){ if(typeof success == 'function'){ success(data); return; } var container = jQuery(data).find(success); if(container.length > 0){ data = container.html(); } el.$.find(success).html(data); } }); }, 200); } // Render the product image function pagelayer_render_pl_product_images(el){ el.atts['product_images_templ'] = ''; var success = function(data){ var container = jQuery(data).find('.pagelayer-product-images-container'); if(container.length > 0){ data = container.html(); } el.$.find('.pagelayer-product-images-container').html(data); jQuery(".woocommerce-product-gallery").each( function() { jQuery(this).wc_product_gallery(); }); } pagelayer_ajax_do_shortcodes(el, success); } // Render product price function pagelayer_render_pl_product_price(el){ pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-price-container'); } function pagelayer_render_pl_product_short_desc(el) { pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-short-desc'); } // Render product add to cart function pagelayer_render_pl_add_to_cart(el){ pagelayer_ajax_do_shortcodes(el, '.pagelayer-add-to-cart-holder'); } // Render product product meta function pagelayer_render_pl_product_meta(el){ pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-meta'); } // Render product product meta function pagelayer_render_pl_product_addi_info(el){ pagelayer_ajax_do_shortcodes(el, '.pagelayer-addi-info-container'); } // Render product product meta function pagelayer_render_pl_product_data_tabs(el){ pagelayer_ajax_do_shortcodes(el, '.pagelayer-data-tabs-container'); } // Render product product rating function pagelayer_render_pl_product_rating(el){ pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-rating'); } // Render the related product function pagelayer_render_pl_product_related(el){ el.atts['related_products'] = ''; pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-related-container'); } // Render the WooCommerce pages function pagelayer_render_pl_woo_pages(el){ el.atts['page_content'] = ''; var shortcode =''; // if is not empty if( !pagelayer_empty(el.atts['pages']) ){ shortcode = '['+ el.atts['pages'] +']'; } jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes', type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, shortcode_data: shortcode, }, success: function(response){ // If the content is empty if(pagelayer_empty(response)){ response = '<div class="woocommerce">Content not found</div>'; } // if is checkout page if ( 'woocommerce_checkout' === el.atts['pages'] && '<div class="woocommerce"></div>' == $content ) { response = '<div class="woocommerce">Your cart is currently empty.</div>'; } el.$.find('.pagelayer-woo-pages-container').html(response); } }); } // Render the WooCommerce pages function pagelayer_render_pl_product_categories(el){ el.atts['product_categories'] = ''; // Clear any previous timeout clearTimeout(product_data_timer[el.id]); // Set a timer for constant change product_data_timer[el.id] = setTimeout(function(){ jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_product_categories', type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, atts: el.atts, }, success: function(response){ el.$.find('.pagelayer-product-categories-container').html(response); } }); }, 200); } // Render the archive products function pagelayer_render_pl_product_archives(el){ el.atts['product_archives'] = ''; pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-archives-container'); } // Render the products function pagelayer_render_pl_products(el){ el.atts['products_content'] = ''; // Clear any previous timeout clearTimeout(product_data_timer[el.id]); // Set a timer for constant change product_data_timer[el.id] = setTimeout(function(){ jQuery.ajax({ url: pagelayer_ajax_url+'&action=pagelayer_products_ajax', type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, atts: el.atts, }, success: function(response){ el.$.find('.pagelayer-products-container').html(response); } }); }, 200); } // Render the products function pagelayer_render_end_pl_woo_menu_cart(el){ var success = function(data){ var html = jQuery(data).find('.pagelayer-woo-menu-cart-container').html(); el.$.find('.pagelayer-woo-menu-cart-container').html(html); pagelayer_woo_menu_cart(el.$); } pagelayer_ajax_do_shortcodes(el, success); } // Function to sticky the element on render, if sticky attr is set pagelayer_add_action('pagelayer_sc_render_end', function(e, el){ // Is there any adding_attribute attribute then initialize in editor if(el.atts['ele_attributes']){ pagelayer_add_attributes(el); } // Is there any scrolling effects then initialize in editor if(el.atts['ele_scrolling_effects']){ pagelayer_scrolling_effects(el.$); } // Is there any mouse effects then initialize in editor if(el.atts['ele_mouse_effects']){ pagelayer_mouse_effects(el.$); } //console.log(el); if(pagelayer_empty(el.atts['ele_sticky_pos'])){return;} // Do sticky the elemen pagelayer_ele_sticky_handler(el.$); }); // Adding Custom Attributes var pagelayer_custom_attr = {}; function pagelayer_add_attributes(el){ // Remove all attributes first if(el.id in pagelayer_custom_attr){ pagelayer_custom_attr[el.id].forEach(function(item, index){ el.$.removeAttr(item); }); } pagelayer_custom_attr[el.id] = []; // Then create attributes var val = pagelayer_trim(el.atts['ele_attributes'].split(';')); val.forEach(function(item, index){ // Split from first equal only var splitValue = item.split(/=(.*)/); var attKey = pagelayer_trim(splitValue[0]); pagelayer_custom_attr[el.id].push(attKey); if(attKey.length < 1 || pagelayer_empty(attKey.match(/^[a-z_]+[\w:.-]*$/i))){ return; } if(splitValue.length < 2){ el.$.attr(attKey, ''); return; } el.$.attr(attKey, splitValue[1]); }); } // Function to always show Popup when editing the popup pagelayer_add_action('pagelayer_setup_history', function(){ if(!('pagelayer_template_type' in pagelayer_post && pagelayer_post['pagelayer_template_type'] == 'popup')){ return; } jQuery(pagelayer_editable).wrap('<div class="pagelayer-popup-modal" pagelayer-popup-editor="1">'+ '<div class="pagelayer-popup-modal-content">'+ '<div class="pagelayer-popup-content">'+ '</div>'+ '</div>'+ '</div>'); pagelayer.$$('.pagelayer-settings-icon, .pagelayer-settings').attr('pagelayer-tag', 'pl_popup'); pagelayer.$$('.pagelayer-settings').click(); pagelayer_popup_setup(jQuery('[pagelayer-popup-editor="1"]')); }); pagelayer_last_popup = {anim:'', close: ''}; // Render the pop-up function pagelayer_render_end_pl_popup(el){ // If the anim is same dont render animation again if(pagelayer_last_popup.anim == el.atts['popup_animation'] && pagelayer_last_popup.close == el.atts['popup_cbtn_position']){ return; } // Set the new type pagelayer_last_popup.anim = el.atts['popup_animation']; pagelayer_last_popup.close = el.atts['popup_cbtn_position']; var modal = el.$.closest('.pagelayer-popup-modal'); if(modal.length > 0){ pagelayer_popup_setup(modal); } } // Render the call to action widget function pagelayer_render_pl_call(el){ el.tmp['cta_image-url'] = el.tmp['cta_image-url'] || el.atts['cta_image']; } //Render before after slider function pagelayer_render_pl_before_after(el){ el.tmp['before_image-url'] = el.tmp['before_image-url'] || el.atts['before_image']; el.tmp['after_image-url'] = el.tmp['after_image-url'] || el.atts['after_image']; } function pagelayer_render_end_pl_before_after(el){ pagelayer_before_after_slider(el.$); } // Render the image map function pagelayer_render_pl_image_map(el){ el.atts['map_img_id'] = el.tmp['img_map-id-'+el.atts['img_map-size']+'-url'] || el.tmp['map_img-id-url']; el.atts['map_img_id'] = el.atts['map_img_id'] || el.atts['map_img-id']; el.atts['pagelayer-srcset'] = el.atts['map_img_id']+', '+el.atts['map_img_id']+' 1x, '; if (el.atts['pagelayer_image_map']) { el.atts['pagelayer_map_path'] = ''; for (const key in el.atts['pagelayer_image_map']) { const data_cord = el.atts['pagelayer_image_map'][key]?.path || ''; const data_id = key; const data_link = el.atts['pagelayer_image_map'][key]?.link || ''; el.atts['pagelayer_map_path'] += `<path class='pagelayer-imgmap-item' d='${data_cord}' stroke-width='2' data-cord='${data_cord}' data-id='${data_id}' fill-opacity='0.3' fill-rule='evenodd' data-link='${data_link}'></path>`; } } var image_atts = { name : 'map_img-id', size : 'img_map-size' }; pagelayer_get_img_src(el, image_atts); } function pagelayer_render_end_pl_image_map(el){ // Re-render image maps pagelayer_pl_image_map(el.$); // Re-render image map handler pagelayer_imgmap_handler(el.$); } // Image Map handler function pagelayer_imgmap_handler(jEle){ var mapObj = pagelayer_get_att(jEle,'pagelayer_image_map') || {}, sEle = jEle.find('svg'), cordWrap = jEle.find('.pagelayer-imgmap-coordinates-wraper'), toolbar = jEle.find('.pagelayer-imgmap-toolbar'), wrap = jEle.find('.pagelayer-imgmap-wrapper'); // Cords drag handler var handle_cord_drag = function(jEle){ var cordEle = jEle.find('.pagelayer-imgmap-coord'); var isDragging = false; const stopDragging = () => { isDragging = false; cordEle.removeClass('pagelayer-mapele-dragging').off('mouseup click'); jQuery(document).off('mouseup.imgmap'); }; cordEle.off('mousedown').on('mousedown', function (e) { e.stopPropagation(); e.preventDefault(); if (jQuery(e.target).hasClass('pagelayer-imgmap-remove-cord')) return; isDragging = true; jQuery(this).addClass('pagelayer-mapele-dragging').mouseup(stopDragging).click(stopDragging); jQuery(document).on('mouseup.imgmap', stopDragging); sEle.off('mouseup mousemove'); sEle.mouseup(function(e){ isdragging = false; }); sEle.mousemove(function (e) { if (!isDragging) return; const dragEle = jEle.find('.pagelayer-imgmap-coord.pagelayer-mapele-dragging'); if (!dragEle.length) return; const xPer = ((e.offsetX / wrap.width()) * 100).toFixed(2); const yPer = ((e.offsetY / wrap.height()) * 100).toFixed(2); dragEle.css({ left: `${xPer}%`, top: `${yPer}%` }); update_active_element_coordinates(xPer, yPer, dragEle.data('id')); }); }); } // Update active element's coordinates var update_active_element_coordinates = function(x, y, id){ const activeEle = jEle.find('.pagelayer-imgmap-item.pagelayer-map-item-active'); const coords = activeEle.attr('data-cord').split(','); coords.splice(id * 2, 2, x, y); activeEle.attr('data-cord', coords.join(',')); pagelayer_resize_imgmap(jEle); }; // Delete cord handler var cord_delete_handler = function(e){ e.stopPropagation(); const parent = jQuery(this).parent(); const cordPos = parent.attr('data-id'); const activeEle = sEle.find('.pagelayer-map-item-active'); const activeEleId = activeEle.attr('data-id'); // Remove coordinates const cords = activeEle.attr('data-cord').split(','); cords.splice(cordPos * 2, 2); activeEle.attr('data-cord', cords.join(',')); parent.remove(); // Reindex coordinates and resize the image map jEle.find(`.pl-cord-${activeEleId}`).each((index, elem) => { jQuery(elem).attr('data-id', index); }); pagelayer_resize_imgmap(jEle); } // Map items click handler var handleClick = function(){ if(sEle.find('.pagelayer-map-item-active').length > 0){ return; } sEle.find('.pagelayer-map-item-active_is_editable').removeClass('pagelayer-map-item-active_is_editable') var imageMapItem = jQuery(this).addClass('pagelayer-map-item-active_is_editable'); set_toolbar_editable(true, 'selected'); // Edit map item toolbar.find('.pagelayer-map_edit').off('click').on('click', function (e){ e.preventDefault(); editItem(imageMapItem); }); jEle.on('click.handleOutsideClick', function(event){ event.preventDefault(); if(sEle.find('.pagelayer-map-item-active').length > 0){ return; } if(!jQuery(event.target).hasClass('pagelayer-imgmap-item')){ imageMapItem.removeClass('pagelayer-map-item-active_is_editable'); set_toolbar_editable(false, 'selected'); set_toolbar_editable(false); jEle.off('click.handleOutsideClick'); } }); } // Remove image map item var remove_map_item = function(id){ if(id in mapObj) delete mapObj[id]; pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj); handle_navigator(id, 'delete'); cordWrap.find('.pl-cord-'+id).remove(); jEle.find('.pagelayer-imgmap-item[data-id="'+id+'"]').remove(); } // Edit Map Item var editItem = function(imageMapItem){ setTimeout(() => { set_toolbar_editable(true); imageMapItem.removeClass('pagelayer-map-item-active_is_editable').addClass('pagelayer-map-item-active'); sEle.css('cursor', 'crosshair'); var updatedActId = imageMapItem.attr('data-id'); var link = (mapObj[updatedActId] && mapObj[updatedActId].link && mapObj[updatedActId].link.length > 0) ? mapObj[updatedActId].link : ''; if (link.length > 0) toolbar.find('.pagelayer-map_href').css('color', 'blue'); cordWrap.find(`.pl-cord-${updatedActId}`).show(); toolbar.find('.pagelayer-imgmap-toolbar-link input[type=text]').val(link); handle_navigator(updatedActId, 'set_active'); handle_cord_drag(jEle); cordWrap.find('.pagelayer-imgmap-remove-cord').off('click').on('click', cord_delete_handler); }, 100); } // Add Toolbar if(toolbar.length < 1){ var toolbarHtml = `<div class="pagelayer-imgmap-toolbar"> <span class="pagelayer-imgmap-toolbar-mover" title="Drag Toolbar"></span> <button class="pagelayer-imgmap-toolbar-item pagelayer-map_append" title="Add"><i class="fas fa-plus"></i></button> <button class="pagelayer-imgmap-toolbar-item pagelayer-map_save" title="Save"><i class="fas fa-check"></i></button> <button class="pagelayer-imgmap-toolbar-item pagelayer-map_edit" title="Edit"><i class="fas fa-edit"></i></button> <button class="pagelayer-imgmap-toolbar-item pagelayer-map_href" title="Insert Link"><i class="fas fa-link"></i></button> <button class="pagelayer-imgmap-toolbar-item pagelayer-map_remove" title="Delete"><i class="fas fa-trash"></i></button> <div class="pagelayer-imgmap-toolbar-link"> <input type="text" name="url" placeholder="https://example.com" autocomplete="off"> <span class="pagelayer-imgmap-save-link pagelayer-btn-success">Save</span> </div> <button class="pagelayer-map-list-trigger" title="Navigator"><i class="fas fa-sitemap"></i></button> <div class="pagelayer-imgmap-navigator"> <div class="pagelayer-imgmap-navigator-header"> <i class="fas fa-sitemap"></i><span>Navigator</span> <span class="fa fa-remove pagelayer-imgmap-navigator-close"></span> </div> <div class="pagelayer-imgmap-navigator-wrap"></div> </div> </div>`; toolbar = wrap.append(toolbarHtml).find('.pagelayer-imgmap-toolbar'); } var linkWrap = toolbar.find('.pagelayer-imgmap-toolbar-link'), linkEle = linkWrap.find('input[type="text"]'), navigator = toolbar.find('.pagelayer-imgmap-navigator'), navigatorWrap = navigator.find('.pagelayer-imgmap-navigator-wrap'); // Change mode of Toolbar var set_toolbar_editable = function(on = true, mode = 'edit'){ var edit = mode; var select = mode == 'edit'? 'selected' : 'edit'; // Toggle editing options if(on){ toolbar.addClass('pagelayer-imgmap-'+edit); toolbar.removeClass('pagelayer-imgmap-'+select); return; } toolbar.removeClass('pagelayer-imgmap-'+edit); } // On move Toolbar toolbar.find('.pagelayer-imgmap-toolbar-mover').off('mousedown').on('mousedown', e => { e.preventDefault(); toolbar.addClass('pagelayer-imgmap-toolbar-dragging'); sEle.on('mousemove', e => { toolbar.hasClass('pagelayer-imgmap-toolbar-dragging') && toolbar.css({ left: `${e.offsetX - 5}px`, top: `${e.offsetY - 5}px` }); }); jQuery(document).off('mousedown.pl_svg_ele').on('mouseup.pl_svg_ele', () => { toolbar.removeClass('pagelayer-imgmap-toolbar-dragging'); sEle.off('mousemove'); }); }); // Toolbar actions toolbar.find('.pagelayer-imgmap-toolbar-item').off('click').on('click', function(e){ e.stopPropagation(); var tEle = jQuery(this), activeEle = sEle.find('.pagelayer-map-item-active'), actEleId = activeEle.attr('data-id'), isEditing = false; if(linkEle.length < 1) toolbar.find('.pagelayer-map_href').css('color', 'inherit'); sEle.css('cursor','initial'); // Add new map item if(tEle.hasClass('pagelayer-map_append')){ var eleId = pagelayer_randstr(6), attrs = [ ['d',''], ['data-id', eleId], ['stroke-linejoin', 'round'], ['fill-rule', 'evenodd'], ['fill-opacity', '0.3'], ['stroke-width', '2'], ['data-cord', '{{data}}'], ['data-link', '{{link_href}}'] ], pathEle = pagelayer_create_imgmap_svg(['pagelayer-imgmap-item', 'pagelayer-map-item-active'], attrs); handle_navigator(eleId, 'append', true); sEle.find('g')[0].appendChild(pathEle); sEle.find('.pagelayer-imgmap-item').on('click', handleClick); isEditing = true; } // Remove map item if(tEle.hasClass('pagelayer-map_remove')){ let activeId = sEle.find('.pagelayer-map-item-active, .pagelayer-map-item-active_is_editable').attr('data-id'); remove_map_item(activeId); } // Link to map item if(tEle.hasClass('pagelayer-map_href')){ toolbar.find('.pagelayer-imgmap-toolbar-link').fadeToggle(); isEditing = true; } // Save map item cords if(tEle.hasClass('pagelayer-map_save')){ if(cordWrap.find('.pl-cord-' + actEleId).length < 3){ return alert('Please draw at least 3 coordinates!'); } var finalValues = activeEle.attr('data-cord') || '', currentItem = navigatorWrap.find(`.pagelayer-imgmap-navigator-item[data-id="${actEleId}"]`), title = currentItem.find('.pagelayer-imgmap-navigator-title').text(); mapObj[actEleId] = mapObj[actEleId] || {}; mapObj[actEleId].path = finalValues || ''; mapObj[actEleId].title = title || ''; pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj); jQuery('.pagelayer-map_href').css('color', linkWrap.css('display') == 'block' && linkEle.val() ? 'blue' : 'inherit'); handle_navigator(actEleId, 'reset_active'); cordWrap.find('.pl-cord-' + actEleId).hide(); cordWrap.find('.pagelayer-imgmap-coord').removeClass('pagelayer-mapele-dragging'); sEle.find('.pagelayer-imgmap-item').removeClass('pagelayer-map-item-active'); } // Toggle editing options set_toolbar_editable(isEditing); }); // Save link of map items jEle.find('.pagelayer-imgmap-save-link').click(function() { let parent = jQuery(this).parent(); let actEleId = sEle.find('.pagelayer-map-item-active').data('id'); mapObj = mapObj || {}; (mapObj[actEleId] = mapObj[actEleId] || {}).link = parent.find('input').val() || ''; parent.fadeOut(); }); // SVG click handler and add new cords to map items sEle.off('click').on('click', function(e){ var activeEle = sEle.find('.pagelayer-map-item-active'); if(activeEle.length < 1){ toolbar.css({ left: e.offsetX - 15, top: e.offsetY - 40 }); return; } linkEle.val(''); // Reset Link field sEle.css('cursor','crosshair'); // Change cursor property var [mapWidth, mapHeight] = [wrap.width(), wrap.height()]; var [xPer, yPer] = [(e.offsetX / mapWidth * 100).toFixed(2), (e.offsetY / mapHeight * 100).toFixed(2)]; var coords = (activeEle.attr('data-cord') || ''); coords = (coords == '{{data}}' || coords == '') ? [] : coords.split(','); coords.push(xPer, yPer); activeEle.attr('data-cord', coords); // Append cordinates const cordLen = cordWrap.find(`.pl-cord-${activeEle.attr('data-id')}`).length; const coordHTML = `<div class="pagelayer-imgmap-coord pl-cord-${activeEle.attr('data-id')}" title="Drag to reposition" data-id="${cordLen}" style="left:${e.offsetX}px; top:${e.offsetY}px;"> <span class="pagelayer-imgmap-remove-cord fa fa-trash"></span> </div>`; cordWrap.append(coordHTML); setTimeout(() => pagelayer_resize_imgmap(jEle), 100); handle_cord_drag(jEle); cordWrap.find('.pagelayer-imgmap-remove-cord').off('click mousedown').on('click', cord_delete_handler); }); // Map items click handler sEle.find('.pagelayer-imgmap-item').on('click', handleClick); // Toggle navigator toolbar.find('.pagelayer-map-list-trigger').off('click').on('click', function(){ navigator.toggle(); }); navigator.find('.pagelayer-imgmap-navigator-close').on('click',function(){ navigator.hide(); }); // Navigator item move handler var navigator_move_item = function(curEle, is_next = false) { const arr = Object.keys(mapObj); const curPos = arr.indexOf(curEle); if (curPos === -1 || (curPos === 0 && !is_next) || (curPos === arr.length - 1 && is_next)) { return false; } const swapIndex = is_next ? curPos + 1 : curPos - 1; [arr[curPos], arr[swapIndex]] = [arr[swapIndex], arr[curPos]] mapObj = arr.reduce((newEl, key) => ({ ...newEl, [key]: mapObj[key] }), {}); pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj); const elem = jEle.find(`path[data-id="${curEle}"]`); is_next ? elem.next().after(elem) : elem.prev().before(elem); return true; } // Navigator handler var handle_navigator = function(id, opr = 'append', is_active = false){ if (!id) return; const item = navigatorWrap.find(`.pagelayer-imgmap-navigator-item[data-id="${id}"]`); switch(opr){ case 'append': if (item.length > 0) return; const wrapItems = navigatorWrap.children('.pagelayer-imgmap-navigator-item').length + 1; const cls = is_active ? 'pagelayer-navigator-item-active' : ''; const title = mapObj[id]?.title || `Map Item ${wrapItems}`; const content = ` <div class="pagelayer-imgmap-navigator-item ${cls}" data-id="${id}"> <div data-id="${id}" class="pagelayer-imgmap-navigator-item-drag"><i class="fas fa-th-list"></i></div> <div class="pagelayer-imgmap-navigator-title">${title}</div> <div class="pagelayer-imgmap-navigator-actions"> ${['Move Up', 'Edit', 'Delete', 'Move Down'].map((action, i) => ` <button value="${id}" class="pagelayer-map-navigator-trigger ${['navigator_move_up', 'navigator_pagelayer-map_edit', 'navigator_pagelayer-map_remove', 'navigator_move_down'][i]}" title="${action}"> <i class="${['fa fa-arrow-up', 'fa fa-pencil', 'fas fa-trash', 'fa fa-arrow-down'][i]}"></i> </button>`).join('')} </div> </div>`; navigatorWrap.append(content); var trigger = navigatorWrap.find('.pagelayer-map-navigator-trigger'); trigger.off('click').on('click', function(e){ e.stopPropagation(); var eleId = jQuery(this).val(); if(jQuery(this).hasClass('navigator_pagelayer-map_edit')){ const activeEle = sEle.find('.pagelayer-map-item-active'); // Multi Item editing if(activeEle.length > 0){ if(eleId === activeEle.attr('data-id')) return; toolbar.find('.pagelayer-imgmap-toolbar-item.pagelayer-map_save').click(); } let iEle = jEle.find(`.pagelayer-imgmap-item[data-id="${eleId}"]`); iEle.on('click', editItem(iEle)); }else if (jQuery(this).hasClass('navigator_move_down') || jQuery(this).hasClass('navigator_move_up')){ const par = jQuery(this).closest('.pagelayer-imgmap-navigator-item'); const moveUp = jQuery(this).hasClass('navigator_move_up'); const sibling = moveUp ? par.prev() : par.next(); if(sibling.length > 0){ navigator_move_item(eleId, !moveUp); moveUp ? sibling.before(par) : sibling.after(par); } }else if(jQuery(this).hasClass('navigator_pagelayer-map_remove')){ remove_map_item(eleId); toolbar.removeClass('pagelayer-imgmap-edit'); } }); // Make title editable navigatorWrap.find(`.pagelayer-imgmap-navigator-item[data-id="${id}"] .pagelayer-imgmap-navigator-title`).off('blur').on('click', function (){ const editable = jQuery(this).attr('contenteditable', 'true').focus(); const oldVal = editable.text().trim(); editable.on('blur', function (e) { const newValue = editable.text().trim(); if (!newValue) { alert('Error changing title'); editable.text(oldVal); }else{ mapObj[id].title = newValue; pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj); } editable.attr('contenteditable', 'false').off('blur'); }); }); break; case 'delete': item.remove(); break; case 'reset_active': navigatorWrap.find('.pagelayer-imgmap-navigator-item').removeClass('pagelayer-navigator-item-active'); break; case 'set_active': if(!item.hasClass('pagelayer-navigator-item-active')){ item.addClass('pagelayer-navigator-item-active'); jQuery('.pagelayer-imgmap-navigator-wrap').animate({ scrollTop: 0 }); } break; } } // Build Navigator if(Object.keys(mapObj).length > 0){ for (var mapId in mapObj) { handle_navigator(mapId); } } pagelayer_resize_imgmap(jEle); jQuery(window).on('resize', function(){pagelayer_resize_imgmap(jEle)}); }