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/react/src/helpers
Viewing File: /var/softaculous/sitepad/editor/site-data/plugins/pagelayer/js/react/src/helpers/widgets.js
import { useState, useEffect, useLayoutEffect } from '@wordpress/element'; const pagelayer_widgets_timer = {} const pagelayer_svg_cache = {} var pagelayer_gt_skeleton = '.interface-interface-skeleton__content'; // Render for row export function pagelayer_render_pl_row(el){ var img_urls = !pagelayer_empty(el.tmp['bg_slider-urls']) ? (typeof(el.tmp['bg_slider-urls']) == 'object' ? el.tmp['bg_slider-urls'] : JSON.parse(el.tmp['bg_slider-urls'])) : []; el.atts['slider'] = ''; if(!pagelayer_empty(img_urls)){ for(var x in img_urls){ el.atts['slider'] += '<div class="pagelayer-bgimg-slide" style="background-image:url('+img_urls[x]+')"></div>'; } } // Row background parallax image. if(!pagelayer_empty(el.atts['parallax_img'])){ el.atts['parallax_img_src'] = el.tmp['parallax_img-'+el.atts['parallax_id_size']+'-url'] || el.tmp['parallax_img-url']; el.atts['parallax_img_src'] = el.atts['parallax_img_src'] || el.atts['parallax_img']; } pagelayer_bg_video(el); } // Load the full width row export function pagelayer_render_end_pl_row(el){ // The parent var par = el.$.parent(); // Any class with full width if(el.$.hasClass('pagelayer-row-stretch-full')){ // Give it the full width pagelayer_pl_row_full(el.$, jQuery(pagelayer_gt_skeleton)); // Give full width to the parent pagelayer_pl_row_parent_full(par); // Also add that we had a full width el.$.addClass('pagelayer-row-stretch-had-full'); // Did this row have full width ? }else if(el.$.hasClass('pagelayer-row-stretch-had-full')){ // Remove style el.$.removeAttr('style'); par.removeAttr('style'); // Remove HAD class el.$.removeClass('pagelayer-row-stretch-had-full'); } // TODO: remove pagelayer-setup attribute code from pagelayer_pl_row_video function if posible el.$.children('.pagelayer-background-video').removeAttr('pagelayer-setup'); pagelayer_pl_row_video(el.$); el.$.find('.pagelayer-parallax-window img').each(function(){ pagelayer_pl_row_parallax(jQuery(this)); }); el.$.find('.pagelayer-bgimg-slider').each(function(){ pagelayer_pl_row_slider(jQuery(this)); }); // Row shape if('row_shape_type_top' in el.atts){ pagelayer_render_row_shape(el, 'top') } if('row_shape_type_bottom' in el.atts){ pagelayer_render_row_shape(el, 'bottom') } } // Set Row parent width function pagelayer_pl_row_parent_full(par){ var vw = jQuery(pagelayer_gt_skeleton).width(); par.css({'width': vw,'max-width': '100vw'}); par.offset({left: 0}); par.children('.pagelayer-row').css({left: 0}); } // Row shape render function pagelayer_render_row_shape(el, shape_pos){ var name = el.atts['row_shape_type_'+shape_pos]+'-'+shape_pos+'.svg'; // DO we have in cache if(!(name in pagelayer_svg_cache)){ // Make url and fetch var url = pagelayer_url+'/images/shapes/'+name; jQuery.get(url, function(data){ el.$.find('.pagelayer-svg-'+shape_pos).html(data); pagelayer_svg_cache[name] = data; }, 'html'); // Fill with cache }else{ el.$.find('.pagelayer-svg-'+shape_pos).html(pagelayer_svg_cache[name]); } } // Render for inner row export function pagelayer_render_pl_inner_row(el){ pagelayer_render_pl_row(el); } // Render for col export function pagelayer_render_pl_col(el){ var img_urls = !pagelayer_empty(el.tmp['bg_slider-urls']) ? (typeof(el.tmp['bg_slider-urls']) == 'object' ? el.tmp['bg_slider-urls'] : JSON.parse(el.tmp['bg_slider-urls'])) : []; el.atts['slider'] = ''; if(!pagelayer_empty(img_urls)){ for(var x in img_urls){ el.atts['slider'] += '<div class="pagelayer-bgimg-slide" style="background-image:url('+img_urls[x]+')"></div>'; } } // Col background parallax image. if(!pagelayer_empty(el.atts['parallax_img'])){ el.atts['parallax_img_src'] = el.tmp['parallax_img-'+el.atts['parallax_id_size']+'-url'] || el.tmp['parallax_img-url']; el.atts['parallax_img_src'] = el.atts['parallax_img_src'] || el.atts['parallax_img']; } pagelayer_bg_video(el); } // Load the col export function pagelayer_render_end_pl_col(el){ // We need the parent of type pagelayer-wrap-col var par = el.$.parent(); if(!par.hasClass('pagelayer-col')){ par.addClass('pagelayer-col'); } // Apply to wrapper if(!pagelayer_empty(el.atts['col'])){ for(var x=1; x<=12; x++){ if(par.hasClass('pagelayer-col-'+x)){ par.removeClass('pagelayer-col-'+x); break; } } par.addClass('pagelayer-col-'+el.atts['col']); par.css('width', ''); } if(el.atts['col_width']){ par.css('width', ''); } // TODO: remove pagelayer-setup attribute code from pagelayer_pl_row_video function if posible el.$.children('.pagelayer-background-video').removeAttr('pagelayer-setup'); pagelayer_pl_row_video(el.$); el.$.find('.pagelayer-parallax-window img').each(function(){ pagelayer_pl_row_parallax(jQuery(this)); }); el.$.find('.pagelayer-bgimg-slider').each(function(){ pagelayer_pl_row_slider(jQuery(this)); }); } export function pagelayer_bg_video(el){ el.tmp['bg_video_src-url'] = el.tmp['bg_video_src-url'] || el.atts['bg_video_src']; var src = el.tmp['bg_video_src-url']; if(pagelayer_empty(src)){ return; } var iframe_atts = pagelayer_video_url(src, true); // console.log(iframe_atts); iframe_atts['src'] += (iframe_atts['src'].indexOf('?') == -1 ? '?' : ''); // Adding mute and loop option in row or col if(el.atts['mute'] == "true"){ iframe_atts['src'] +="&mute=1"; el.atts['mute'] = " muted "; }else{ iframe_atts['src'] +="&mute=0"; el.atts['mute'] = ""; } if(el.atts['stop_loop'] != "true"){ iframe_atts['src'] +="&loop=1"; el.atts['stop_loop'] = " loop "; }else{ iframe_atts['src'] +="&loop=0"; el.atts['stop_loop'] =""; } if (iframe_atts['type'] == 'youtube') { var settings = 'data-loop="'+(!pagelayer_empty(el['atts']['stop_loop']) ? 1 : 0)+'" data-mute="'+ (!pagelayer_empty(el['atts']['mute']) ? 1 : 0)+'" data-videoid="'+(iframe_atts['id'].split('&')[0])+'"'; el.atts['vid_src'] = '<div class = "pagelayer-youtube-video" '+ settings +'></div>'; } else if (iframe_atts['type'] == 'vimeo') { el.atts['vid_src'] = '<iframe src="'+iframe_atts['src']+'&background=1&autoplay=1&byline=0&title=0" allowfullscreen="1" webkitallowfullscreen="1" mozallowfullscreen="1" frameborder="0"></iframe>'; }else{ el.atts['vid_src'] = '<video autoplay playsinline '+el.atts['mute']+el.atts['stop_loop']+'>'+ '<source src="'+iframe_atts['src']+'" type="video/mp4">'+ '</video>'; } } export function pagelayer_render_end_pl_accordion(el){ pagelayer_pl_accordion(el.$); } export function pagelayer_render_end_pl_collapse(el){ pagelayer_pl_collapse(el.$); } export function pagelayer_render_pl_google_maps(el){ el.atts['show_v2'] = true; if(pagelayer_empty(el.atts['api_version'])){ el.atts['src_code'] = ''; return; } const { pagelayer_gmaps_key } = pagelayer_config; el.atts['show_v2'] = false; var gmaps_key = (pagelayer_empty(pagelayer_gmaps_key) ? '' : pagelayer_gmaps_key); var api_key = (pagelayer_empty(el.atts['api_key']) ? gmaps_key : el.atts['api_key']); if(el.atts['map_modes'] == 'view'){ el.atts['center'] = pagelayer_empty(el.atts['center']) ? '-33.8569,151.2152' : el.atts['center']; } var src_code = (pagelayer_empty(el.atts['center']) ? '' : '&center='+el.atts['center'])+(el.atts['map_modes'] == 'streetview' ? '' : '&maptype='+el.atts['map_type']+'&zoom='+el.atts['zoom']); switch(el.atts['map_modes']){ case 'place': src_code += encodeURI('&q='+(pagelayer_empty(el.atts['address']) ? 'New York, New York, USA' : el.atts['address'] )); break; case 'directions': src_code += encodeURI('&origin='+(pagelayer_empty(el.atts['direction_origin']) ? 'Oslow Norway' : el.atts['direction_origin'] )); src_code += encodeURI('&destination='+(pagelayer_empty(el.atts['direction_destination']) ? 'Telemark Norway' : el.atts['direction_destination'] )); src_code += (pagelayer_empty(el.atts['direction_waypoints']) ? '' : '&waypoints='+(el.atts['direction_waypoints'].trim()).split(' ').join('|') ); src_code += (pagelayer_empty(el.atts['direction_modes']) ? '' : '&mode='+el.atts['direction_modes'] ); src_code += (pagelayer_empty(el.atts['direction_avoid']) ? '' : '&avoid='+el.atts['direction_avoid'].split(',').join('|') ); src_code += (pagelayer_empty(el.atts['direction_units']) ? '' : '&units='+el.atts['direction_units'] ); break; case 'streetview': src_code += '&pano='+(pagelayer_empty(el.atts['streetview_pano']) ? 'eTnPNGoy4bxR9LpjjfFuOw' : el.atts['streetview_pano'] ); src_code += '&location='+(pagelayer_empty(el.atts['streetview_location']) ? '46.414382,10.013988' : el.atts['streetview_location'] ); src_code += (pagelayer_empty(el.atts['streetview_heading']) ? '' : '&heading='+el.atts['streetview_heading'] ); src_code += (pagelayer_empty(el.atts['streetview_pitch']) ? '' : '&pitch='+el.atts['streetview_pitch'] ); src_code += (pagelayer_empty(el.atts['streetview_fov']) ? '' : '&fov='+el.atts['streetview_fov'] ); break; case 'search': src_code += encodeURI('&q='+(pagelayer_empty(el.atts['search_term']) ? 'Record stores in Seattle' : el.atts['search_term'] )); break; } var src_code_url = 'https://www.google.com/maps/embed/v1/'+el.atts['map_modes']+'?key='+api_key+src_code; el.atts['src_code'] = '<iframe width="600" height="450" style="border:0" loading="lazy" allowfullscreen src="'+src_code_url+'"></iframe>'; } // Render the progress export function pagelayer_render_pl_progress(el){ const { attributes } = el.props; useEffect(() => { clearTimeout(pagelayer_widgets_timer[el.id]); pagelayer_widgets_timer[el.id] = setTimeout( () => { el.$.find('.pagelayer-progress-container').removeAttr('pagelayer-setup'); pagelayer_progress(); }, 500); }, [attributes]); // We need to call the is visible thing to show the widgets loading effect var win = pagelayerGetCurrentWindow(); jQuery(win).unbind('scroll.progressbar', pagelayer_progress); jQuery(win).on('scroll.progressbar', pagelayer_progress); }; // Render the stars export function pagelayer_render_end_pl_stars(el){ var jEle = el.$.find('.pagelayer-stars-container'); jEle.removeAttr('pagelayer-setup'); pagelayer_stars(jEle); }; // Render the counter export function pagelayer_render_end_pl_counter(el){ el.$.find('.pagelayer-counter-content').removeAttr('pagelayer-setup'); pagelayer_counter(); // We need to call the is visible thing to show the widgets loading effect var win = pagelayerGetCurrentWindow(); jQuery(win).unbind('scroll.plcounter', pagelayer_counter); jQuery(win).on('scroll.plcounter', pagelayer_counter); }; // Render the animated heading export function pagelayer_render_pl_anim_heading(el){ el.atts['rotate_html'] = ''; // Creates html for rotating text if(!pagelayer_empty(el.atts['rotate_text'])){ var rotate_text = ''; rotate_text = el.atts['rotate_text'].split(','); el.atts['rotate_html'] += '<div class="pagelayer-animated-heading pagelayer-rotating-text pagelayer-words-wrapper">'; jQuery.each(rotate_text, function(i){ el.atts['rotate_html'] += '<span'; if(i == 0){ el.atts['rotate_html'] += ' class="pagelayer-is-visible"'; } el.atts['rotate_html'] += '>' + rotate_text[i] + '</span>'; }); el.atts['rotate_html'] += '</div>'; } // Required classes for particular rotate el.atts['rotate_req'] = ''; var letters = ['pagelayer-aheading-rotate2','pagelayer-aheading-rotate3','type','pagelayer-aheading-scale']; if(jQuery.inArray(el.atts['animations'], letters) != -1){ el.atts['rotate_req'] = 'letters '; } if(el.atts['animations'] == 'pagelayer-aheading-clip'){ el.atts['rotate_req'] = 'is-full-width '; } } // Render animated heading export function pagelayer_render_end_pl_anim_heading(el){ pagelayer_anim_heading(el.$); } // Retina image setting attribute. export function pagelayer_get_img_src(el, image_atts){ // Check if retina images is set if(!pagelayer_empty(el.tmp[image_atts.name+'-retina-url']) && el.tmp[image_atts.name+'-retina-url'].includes('default-image') == false){ var retina_image = el.tmp[image_atts.name+'-retina-'+el.atts[image_atts.size]+'-url']; retina_image = pagelayer_empty(retina_image) ? el.tmp[image_atts.name+'-retina-url'] : retina_image; el.atts['pagelayer-srcset'] += retina_image +' 2x, '; } // Check if retina mobile images is set if(!pagelayer_empty(el.tmp[image_atts.name+'-retina-mobile-url']) && el.tmp[image_atts.name+'-retina-mobile-url'].includes('default-image') == false){ var retina_image_mobile = el.tmp[image_atts.name+'-retina-mobile-'+el.atts[image_atts.size]+'-url']; retina_image_mobile = pagelayer_empty(retina_image_mobile) ? el.tmp[image_atts.name+'-retina-mobile-url'] : retina_image_mobile; el.atts['pagelayer-srcset'] += retina_image_mobile +' 3x'; } } // Render the image object export function pagelayer_render_pl_image(el){ // Decide the image URL el.atts['func_id'] = el.tmp['id-'+el.atts['id-size']+'-url'] || el.tmp['id-url']; el.atts['func_id'] = el.atts['func_id'] || el.atts['id']; el.atts['pagelayer-srcset'] = el.atts['func_id']+', '+el.atts['func_id']+' 1x, '; var image_atts = { name : 'id', size : 'id-size' }; pagelayer_get_img_src(el, image_atts); // What is the link ? if('link_type' in el.atts){ // Custom url if(el.atts['link_type'] == 'custom_url'){ el.atts['func_link'] = el.tmp['link'] || ''; } // Link to the media file itself if(el.atts['link_type'] == 'media_file'){ el.atts['func_link'] = el.tmp['id-url'] || el.atts['id']; } // Lightbox if(el.atts['link_type'] == 'lightbox'){ el.atts['func_link'] = el.tmp['id-url'] || el.atts['id']; } } } // Incase if there is a lightbox export function pagelayer_render_end_pl_image(el){ pagelayer_pl_image(el.$); } // Render the social profile export function pagelayer_social(jEle, sel){ var holder = jEle.find(sel); var icon = holder.attr('data-icon'); if(pagelayer_empty(icon)){ return; } var icon_splited = icon.split(' fa-'); // TODO: from the shortcode //Reset privious class holder.attr('class', sel.substr(1)); holder.addClass('pagelayer-'+icon_splited[1]); } // Render the social profile export function pagelayer_render_end_pl_social(el){ pagelayer_social(el.$, '.pagelayer-icon-holder'); } // Render the social profile group export function pagelayer_render_end_pl_social_grp(el){ // Removing extra animation classes el.$.find('.pagelayer-icon-holder').removeClass (function (index, className) { return (className.match (/(^|\s)pagelayer-animation-\S+/g) || []).join(' '); }); pagelayer_pl_social_profile(el.$); } export function pagelayer_render_pl_testimonial(el) { el.atts['func_image'] = el.tmp['avatar-' + el.atts['custom_size'] + '-url'] || el.tmp['avatar-url']; el.atts['func_image'] = el.atts['func_image'] || el.atts['avatar']; } export function pagelayer_render_pl_countdown(el) { if (pagelayer_empty(el.atts['custom_label_text'])) { el.atts['days_label_text'] = 'Days'; el.atts['hours_label_text'] = 'Hours'; el.atts['minutes_label_text'] = 'Minutes'; el.atts['seconds_label_text'] = 'Seconds'; } const { attributes } = el.props; useEffect(() => { var jEle = pagelayer_query(el.CSS.cssSel); var exp = el['atts']['display_expired_text']; if (exp) { jEle.attr('display_expired_text', exp); } else { jEle.removeAttr('display_expired_text', exp); } jEle.find('.pagelayer-countdown-expired').hide(); jEle.find('.pagelayer-countdown-counter').css('display', 'flex'); pagelayer_countdown(jEle); if (pagelayer_empty(el['atts']['days']) && pagelayer_empty(el['atts']['hours']) && pagelayer_empty(el['atts']['minutes']) && pagelayer_empty(el['atts']['seconds'])) { jEle.find('.pagelayer-countdown-counter').html('<h2>Countdown Timer Holder</h2>'); } }, [attributes]) } // Render the share export function pagelayer_render_pl_share(el){ if('text' in el.atts && !pagelayer_empty(el.atts['text'])){ el.atts['icon_label'] = el.atts['text']; return; } var icon = ''; if(!pagelayer_empty(el.atts['icon'])){ var icon_splited = el.atts['icon'].split(' fa-'); icon = icon_splited[1]; } var labelList = { 'Facebook' : ['facebook', 'facebook-official', 'facebook-f', 'facebook-messenger', 'facebook-square'], 'Twitter' : ['twitter', 'twitter-square'], 'X' : [ 'x-twitter', 'x-twitter-square'], 'Google+' : ['google-plus', 'google-plus-square', 'google-plus-g'], 'Instagram' : ['instagram'], 'Linkedin' : ['linkedin', 'linkedin-square', 'linkedin-in'], 'Pinterest' : ['pinterest', 'pinterest-p', 'pinterest-square'], 'Reddit' : ['reddit-alien', 'reddit-square', 'reddit'], 'Skype' : ['skype'], 'Stumbleupon' : ['stumbleupon', 'stumbleupon-circle'], 'Telegram' : ['telegram', 'telegram-plane'], 'Tumblr' : ['tumblr', 'tumblr-square'], 'VK' : ['vk'], 'Weibo' : ['weibo'], 'WhatsApp' : ['whatsapp', 'whatsapp-square'], 'WordPress' : ['wordpress', 'wordpress-simple'], 'Xing' : ['xing', 'xing-square'], 'Delicious' : ['delicious'], 'Dribbble' : ['dribbble', 'dribbble-square'], 'Snapchat' : ['snapchat-ghost'], 'Pocket' : ['get-pocket'], 'Email' : ['envelope', 'envelope-open', 'envelope-o'] } jQuery.each(labelList, function(key, value){ if(jQuery.inArray(icon, value) != -1){ el.atts['icon_label'] = key; } }); } // Render the share icon export function pagelayer_render_end_pl_share(el){ pagelayer_social(el.$, '.pagelayer-share-content'); } // Render the service box export function pagelayer_render_pl_service(el){ // Decide the image URL el.atts['func_image'] = el.tmp['service_image-'+el.atts['service_image_size']+'-url'] || el.tmp['service_image-url']; el.atts['func_image'] = el.atts['func_image'] || el.atts['service_image']; el.atts['pagelayer-srcset'] = el.atts['func_image']+', '+el.atts['func_image']+' 1x, '; var image_atts = { name : 'service_image', size : 'service_image_size' }; pagelayer_get_img_src(el, image_atts); } // Render the contact form export function pagelayer_render_pl_contact(el){ const { attributes }= el.props; useEffect(() => { const Timer = setTimeout( () => { // To prevent unwanted calls if(pagelayer_empty(attributes['contact_custom_templ'])){ return; } const contacts_data = pagelayer_get_contact_templates(); // To prevent unwanted calls if(pagelayer_empty(contacts_data)){ return; } // Dispatch an action to update post meta wp.data.dispatch('core/editor').editPost({meta: { 'pagelayer_contact_templates' : contacts_data } }); }, 500); return ( () => { clearTimeout(Timer); }); }, [attributes['pagelayer-id'], attributes['to_email'], attributes['from_email'], attributes['cont_subject'], attributes['cont_header'], attributes['cont_body'], attributes['cont_use_html']]); // Set post id in atts (if we add the contact form in header or footer) el.atts['con_post_id'] = pagelayer_postID; el.atts['grecaptcha'] = pagelayer_recaptch_site_key; if(pagelayer_recaptch_version == 'v3') { el.atts['grecaptcha_v3'] = true; }else{ el.atts['grecaptcha_v2'] = true; } } // Create array of the contact from template params function pagelayer_get_contact_templates(){ var contacts = jQuery('[data-type="pagelayer/pl-contact"]'); var contacts_props = {}; if(contacts.length > 0){ const blockIds = []; contacts.each(function(){ blockIds.push(jQuery(this).data('block')); }); // Get the current editor state const { select } = wp.data; const editor = select('core/block-editor'); const blocks = editor.getBlocksByClientId(blockIds); // Get all blocks in the editor blocks.map((block) => { const { attributes } = block; const id = attributes['pagelayer-id']; var con_allowed = ['to_email', 'from_email', 'cont_subject', 'cont_header', 'cont_body', 'cont_use_html']; if(pagelayer_empty(attributes['contact_custom_templ'])){ return true; } // Define blank array contacts_props[id] = {}; for(var x in con_allowed){ var key = con_allowed[x]; if(!pagelayer_empty(attributes[key])){ contacts_props[id][key] = attributes[key]; } } }); } return contacts_props; } // Render the contact form export function pagelayer_render_end_pl_contact(el){ const { attributes, setAttributes } = el.props; jQuery(el.$).find('.pagelayer-recaptcha').each(function(){ var recaptcha = jQuery(this); var widgetID = recaptcha.attr('recaptcha-widget-id'); if( !pagelayer_empty(window.grecaptcha) && (!pagelayer_empty(widgetID) || widgetID == 0) ){ grecaptcha.reset(widgetID); }else{ pagelayer_recaptcha_loader(recaptcha, true); } }); var msgBox = el.$.find('.pagelayer-message-box'); // Showing contact form message in the editor only. if(el.atts['show_msg_box']){ if(msgBox.length == 2){ msgBox.eq(0).text('Demo success box'); msgBox.eq(0).addClass('pagelayer-cf-msg-suc'); msgBox.eq(1).text('Demo failed box'); msgBox.eq(1).addClass('pagelayer-cf-msg-err'); } }else{ msgBox.removeClass('pagelayer-cf-msg-suc pagelayer-cf-msg-err'); msgBox.text(''); } if(! ( 'con_post_id' in attributes) || pagelayer_postID != attributes.con_post_id){ setAttributes({con_post_id: pagelayer_postID }); } } // Render the contact form export function pagelayer_render_pl_contact_item(el){ var html = ''; var options = ''; var placeholder = ''; var required = ''; if(!pagelayer_empty(el.atts['required'])){ required = 'required'; } if(!pagelayer_empty(el.atts['label_name']) && pagelayer_empty(el.atts['label_as_holder'])){ html = '<label for="'+el.atts['field_name']+'">'+ '<span class="pagelayer-form-label">'+el.atts['label_name']+'</span>'; if(!pagelayer_empty(required)){ html += ' *'; } html += '</label>'; } if(!pagelayer_empty(el.atts['label_as_holder'])){ placeholder = el.atts['label_name']; }else{ if(!pagelayer_empty(el.atts['placeholder'])) placeholder = el.atts['placeholder']; } // File accept var file_accept = '.jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.ppt,.pptx,.odt,.avi,.ogg,.m4a,.mov,.mp3,.mp4,.mpg,.wav,.wmv'; if(!pagelayer_empty(el.atts['accept_file'])){ file_accept = el.atts['accept_file']; } if(el.atts['field_type'] == 'select'){ html += '<select name="'+el.atts['field_name']+'" '+required+'>' if(!pagelayer_empty(el.atts['label_name']) && !pagelayer_empty(el.atts['label_as_holder'])){ html += '<option value="" disabled selected>'+el.atts['label_name']+'</option>'; }else{ html += '<option value="" disabled selected>---</option>'; } if(!pagelayer_empty(el.atts['values'])){ options = el.atts['values'].split("\n"); for(var x in options){ html += '<option value="'+options[x].trim()+'">'+options[x].trim()+'</option>'; } } html += '</select>'; }else if(el.atts['field_type'] == 'checkbox'){ if(!pagelayer_empty(el.atts['values'])){ options = el.atts['values'].split("\n"); html += '<div class="pagelayer-radcheck-holder pagelayer-contact-checkbox" '+required+'>'; for(var x in options){ html += '<div><input type="checkbox" id="'+el.id+options[x].trim()+'" name="'+el.atts['field_name']+'[]" '+ 'value="'+options[x].trim()+'" /><label for="'+el.id+options[x].trim()+'" class="pagelayer-form-label">'+options[x].trim()+'</label></div>'; } html += '</div>'; } }else if(el.atts['field_type'] == 'radio'){ if(!pagelayer_empty(el.atts['values'])){ options = el.atts['values'].split("\n"); html += '<div class="pagelayer-radcheck-holder">'; for(var x in options){ html += '<div><input type="radio" name="'+el.atts['field_name']+'" '+ 'value="'+options[x].trim()+'" '+required+'/><span>'+options[x].trim()+'</span></div>'; } html += '</div>'; } }else if(el.atts['field_type'] == 'textarea'){ html += '<textarea name="'+el.atts['field_name']+'" rows="'+el.atts['textarea_rows']+'" placeholder="'+placeholder+'" '+ ''+required+'></textarea>'; }else if(el.atts['field_type'] == 'file'){ html += '<input type="'+el.atts['field_type']+'" '+ 'name="'+el.atts['field_name']+'" placeholder="'+placeholder+'" accept="'+file_accept+'" '+required+' />'; }else if(el.atts['field_type'] == 'label'){ html += ''; }else{ html += '<input type="'+el.atts['field_type']+'" '+ 'name="'+el.atts['field_name']+'" placeholder="'+placeholder+'" '+required+'/>'; } el.atts['fieldhtml'] = html; } // Render the archive Posts export function pagelayer_render_pl_archive_posts(el){ // Need to do empty el.atts['pagelayer_pagination_top'] = ''; el.atts['pagelayer_pagination_bottom'] = ''; } // Render the Post comment export function pagelayer_render_end_pl_post_comment(el) { var postID = pagelayer_postID; if (el['atts']['post_type'] == 'custom' && el['atts']['post_id']) { postID = el['atts']['post_id']; } jQuery.ajax({ url: pagelayer_ajax_url + '&action=pagelayer_post_comment&postID=' + postID, type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, }, success: function (response) { // TODO: this with react el.$.find('.pagelayer-post-comment-container').html(response); } }); } //render post title export function pagelayer_render_pl_post_title(el) { el['atts']['open_html_tag'] = !pagelayer_empty(el['atts']['html_tag']) ? '<' + el['atts']['html_tag'] + '>' : ''; el['atts']['close_html_tag'] = !pagelayer_empty(el['atts']['html_tag']) ? '</' + el['atts']['html_tag'] + '>' : ''; } // Render the post content export function pagelayer_render_pl_post_content(el) { el.atts['post_content'] = 'Post Content Holder'; el.CSS.css.push({ 'sel': '{{element}} .entry-content', 'val': 'min-height:20px;background-color:#e3e3e3;' }); } // Render the excerpt export function pagelayer_render_html_pl_post_excerpt(el) { el.$.find('.pagelayer-post-excerpt').addClass('pagelayer-empty-widget'); } // Render the post excertp export function pagelayer_render_pl_post_excerpt(el) { el.tmp['post_excerpt'] = '<div class="pagelayer-post-excerpt pagelayer-empty-widget"></div>'; } // Render the featured image export function pagelayer_render_pl_featured_img(el) { var param = {}; param['pagelayer_nonce'] = pagelayer_ajax_nonce; // Post Id param['post_id'] = pagelayer_postID; // Image size if ('size' in el.atts) { param['size'] = el.atts['size']; } jQuery.ajax({ url: pagelayer_ajax_url + 'action=pagelayer_fetch_featured_img', type: 'post', data: param, dataType: 'json', success: function (data) { var src = ''; var title = ''; var alt = ''; if (pagelayer_empty(data)) { src = el.tmp['img-' + el.atts['size'] + '-url'] || el.tmp['img-url']; src = src || el.atts['img']; } else { src = data['url']; alt = data['alt']; title = data['title']; if (el.atts['size'] + '-url' in data) { src = data[el.atts['size'] + '-url']; } } var blankImg = pagelayer_url + '/images/default-image.png'; var img_html = '<img class="pagelayer-img" src="' + blankImg + '" />'; if (src) { img_html = '<img class="pagelayer-img" src="' + src + '" title="' + title + '" alt="' + alt + '"/>'; } el.$.find('.pagelayer-featured-img').html(img_html); if ('link_type' in el.atts) { // Custom url if (el.atts['link_type'] == 'custom_url') { el.$.find('a').attr('href', el.tmp['link']); } // Link to the media file itself if (el.atts['link_type'] == 'media_file' || el.atts['link_type'] == 'lightbox') { el.$.find('a').attr('href', src); } } pagelayer_pl_image(el.$); } }); } // Render the site title export function pagelayer_render_pl_wp_title(el) { // Use default logo if (pagelayer_empty(el.atts['logo_img_type'])) { // But is there a default logo if (!pagelayer_empty(pagelayer_site_logo)) { el.atts['func_image'] = pagelayer_site_logo[el.atts['logo_img_size'] + '-url'] || pagelayer_site_logo['url']; el.atts['logo_img-title'] = pagelayer_empty(pagelayer_site_logo.title) ? '' : pagelayer_site_logo.title; el.atts['logo_img-alt'] = pagelayer_empty(pagelayer_site_logo.alt) ? '' : pagelayer_site_logo.alt; } // Custom logo } else { el.atts['func_image'] = el.tmp['logo_img-' + el.atts['logo_img_size'] + '-url'] || el.tmp['logo_img-url']; el.atts['func_image'] = pagelayer_empty(el.atts['func_image']) ? el.atts['logo_img'] : el.atts['func_image']; } } // Render the flipbox export function pagelayer_render_pl_flipbox(el) { clearTimeout(Timer) var Timer = setTimeout(() => { var jEle = el.$; const { attributes } = el.props; el.atts['func_image'] = el.tmp['heading_image-' + el.atts['heading_image_size'] + '-url'] || el.tmp['heading_image-url']; el.atts['func_image'] = el.atts['func_image'] || el.atts['heading_image']; var back = attributes?.back_section; if (back) { jEle.attr('back_section', back); } else { jEle.removeAttr('back_section', back); } }, 500) } // Render the post navigation export function pagelayer_render_pl_post_nav(el) { const { attributes } = el.props; useEffect(() => { pagelayer_widgets_timer[el.id] = setTimeout( () => { jQuery.ajax({ url: pagelayer_ajax_url + '&action=pagelayer_post_nav&postID=' + pagelayer_postID, type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, data: el['atts'], }, async: false, success: function (response) { var obj = jQuery.parseJSON(response); var jEle = pagelayer_query(el.CSS.cssSel); jEle.find('.pagelayer-prev-post').html(obj['atts']['prev_link']); jEle.find('.pagelayer-next-post').html(obj['atts']['next_link']); } }); }, 500); return (() => { clearTimeout(pagelayer_widgets_timer[el.id]); }); }, [attributes]); } // Render the Post info list var pagelayer_post_info_timer = {}; export function pagelayer_render_pl_post_info_list(el) { el.atts['post_info_content'] = 1; const { attributes } = el.props; useEffect(() => { clearTimeout(pagelayer_post_info_timer[el.id]); // Set a timer for constant change pagelayer_post_info_timer[el.id] = setTimeout(function () { // Make the call jQuery.ajax({ url: pagelayer_ajax_url + '&action=pagelayer_post_info&postID=' + pagelayer_postID, type: 'post', data: { pagelayer_nonce: pagelayer_ajax_nonce, el: el.atts, }, success: function (response) { var obj = jQuery.parseJSON(response); if (pagelayer_empty(obj['post_info_content'])) { el.$.find('.pagelayer-post-info-list-container').hide(); return; } el.$.find('.pagelayer-post-info-list-container').show(); el.$.find('.pagelayer-post-info-label').html(obj['post_info_content']); el.$.find('.pagelayer-post-info-icon img').attr('src', obj['avatar_url']); el.$.find('.pagelayer-post-info-list-container > a').attr('href', obj['link']); } }); }, 500); }, [attributes]) } // Render the fb embed export function pagelayer_render_pl_fb_embed(el) { const { attributes } = el.props; useEffect(() => { pagelayer_fb_apps( pagelayer_query(el.CSS.cssSel)); }, [attributes]); }; // Render the fb page export function pagelayer_render_pl_fb_page(el) { const { attributes } = el.props; useEffect(() => { pagelayer_fb_apps( pagelayer_query(el.CSS.cssSel) ); }, [attributes]); }; /////////////////////// ////// PREMIUM /////// /////////////////////// // Render for audio export function pagelayer_render_pl_audio(el){ const { clientId } = el.props; el.tmp['src-url'] = el.tmp['src-url'] || el.atts['src']; useEffect(() => { var jEle = pagelayer_query('#block-'+clientId); if(jEle.length < 1){ return; } jEle.find('.pagelayer-audio-container').html(`<audio controls> <source src="${el.tmp['src-url']}"></source> </audio>`); }); }; export function pagelayer_render_end_pl_audio(el){ pagelayer_audio(el.$); } //Render before after slider export 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']; } // Render before after export function pagelayer_render_end_pl_before_after(el){ pagelayer_before_after_slider(el.$); } // Grid gallery export function pagelayer_render_pl_grid_gallery(el){ // The URLs var img_urls = !pagelayer_empty(el.tmp['ids-urls']) ? (typeof(el.tmp['ids-urls']) == 'object' ? el.tmp['ids-urls'] : JSON.parse(el.tmp['ids-urls'])) : []; var all_urls = !pagelayer_empty(el.tmp['ids-all-urls']) ? (typeof(el.tmp['ids-all-urls']) == 'object' ? el.tmp['ids-all-urls'] : JSON.parse(el.tmp['ids-all-urls'])) : []; var img_title = !pagelayer_empty(el.tmp['ids-all-titles']) ? (typeof(el.tmp['ids-all-titles']) == 'object' ? el.tmp['ids-all-titles'] : JSON.parse(el.tmp['ids-all-titles'])) : []; var img_links = !pagelayer_empty(el.tmp['ids-all-links']) ? (typeof(el.tmp['ids-all-links']) == 'object' ? el.tmp['ids-all-links'] : JSON.parse(el.tmp['ids-all-links'])) : []; var img_captions = !pagelayer_empty(el.tmp['ids-all-captions']) ? (typeof(el.tmp['ids-all-captions']) == 'object' ? el.tmp['ids-all-captions']: JSON.parse(el.tmp['ids-all-captions'])) : []; var ul = ''; var pagin = '<li class="pagelayer-grid-page-item active">1</li>'; var is_link = 'link_to' in el.atts && !pagelayer_empty(el.atts['link_to']) ? true : false; var i = 0; var j = 1; if(pagelayer_empty(el.tmp)){ ul = '<h4 style="text-align:center;">Please Select Images!</h4>'; el.atts['ul'] = ul; el.atts['pagin'] = ''; return; } ul += '<ul class="pagelayer-grid-gallery-ul">'; var gallery_rand = 'gallery-id-'+Math.floor((Math.random() * 100) + 1); var imgInPage = el.atts['images_no']; // Create figure HTML for (var x in img_urls){ if(imgInPage != 0 && (i % imgInPage) == 0 && i != 0){ ul += '</ul><ul class="pagelayer-grid-gallery-ul">'; j++; pagin += '<li class="pagelayer-grid-page-item">'+j+'</li>'; } // Use the default URL first var url = img_urls[x]; // But if we have a custom size, use that if(el.atts['size'] != 'custom' && x in all_urls && el.atts['size'] in all_urls[x]){ url = all_urls[x][el.atts['size']]; } ul += '<li class="pagelayer-gallery-item" >'; if(!is_link){ ul += '<div>'; } if(is_link && el.atts['link_to'] == 'media_file'){ var link = (el.atts['link_to'] == 'media_file' ? url : (el.atts['link'] || '')); ul += '<a href="'+link+'" class="pagelayer-ele-link">'; } if(is_link && el.atts['link_to'] == 'attachment'){ var link = img_links[x]; ul += '<a href="'+link+'" class="pagelayer-ele-link">'; } if(is_link && el.atts['link_to'] == 'lightbox'){ ul += '<a href="'+img_urls[x]+'" class="pagelayer-ele-link" data-lightbox-gallery="'+gallery_rand+'" alt="'+img_title[x]+'" pagelayer-grid-gallery-type="'+el.atts['link_to']+'">'; } ul += '<img class="pagelayer-img" src="'+url+'" title="'+img_title[x]+'" alt="'+img_title[x]+'">'; if(el.atts['caption'] == 'true'){ ul += '<span class="pagelayer-grid-gallery-caption">'+img_captions[x]+'</span>'; } if(is_link){ ul += '</a>'; } if(!is_link){ ul += '</div>'; } ul += '</li>'; i++; } ul += '</ul>'; el.atts['pagin'] = (j > 1) ? '<div class="pagelayer-grid-gallery-pagination"><ul class="pagelayer-grid-page-ul">'+'<li class="pagelayer-grid-page-item">&laquo;</li>'+ pagin+ '<li class="pagelayer-grid-page-item">&raquo;</li>'+'</ul></div>' : ''; el.tmp['gallery-random-id'] = gallery_rand; el.atts['ul'] = ul; } // Render the grid gallery export function pagelayer_render_end_pl_grid_gallery(el){ pagelayer_pl_grid_lightbox(el.$); } export function pagelayer_render_pl_author_box(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"] + ">"; el.atts['avatar_html'] = '<img class="pagelayer-img pagelayer-author-image" src="' + el.tmp['avatar-url'] + '" title="{{{avatar-title}}}" alt="{{{avatar-alt}}}">'; // when we remove image the tmpAtts['src-url'] getting undefined there fore i use this check to remove the pagelayer_render_html_pl_featured_img.php html for image remove this if image property set the default image if (el.atts.tmpAtts['avatar-url'] === undefined) { jQuery('.pagelayer-author-profile-pic').css('display', 'none'); } } // End Render for splash export function pagelayer_render_end_pl_splash(el){ var jEle = el.$; var container = jEle.find('.pagelayer-splash-container'); jEle.unbind('click'); jEle.on('click','.pagelayer-splash-close, .pagelayer-splash-bg-close', function(e){ e.stopPropagation(); container.fadeOut(); }) jEle.on('click', function(e){ container.fadeIn(); }) 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 search form export function pagelayer_render_pl_search(el){ if('placeholder' in el.atts){ el.tmp['placeholder'] = pagelayer_htmlEntities(el.atts['placeholder']); } } // Render the search form export function pagelayer_render_end_pl_search(el){ // To keep typing in search input el.$.find('input').on('click input', function(e){ e.stopPropagation(); }); pagelayer_search_form(el.$); } // Render the image hotspot export function pagelayer_render_pl_image_hotspot(el){ // Decide the image URL el.tmp['img-url'] = el.tmp['img-url'] || el.atts['img']; } // Setup of image hotspot export function pagelayer_render_end_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(' '); }); pagelayer_image_hotspot(el.$); }; // Render the img portfolio export function pagelayer_render_end_pl_img_portfolio(el){ pagelayer_pl_img_portfolio(el.$); } // Render the img portfolio export function pagelayer_render_pl_single_img(el){ 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 export function pagelayer_render_end_pl_single_img(el){ jQuery(el.$).parent().attr('data-groups','["'+el.atts['cat_name']+'"]'); pagelayer_pl_image(el.$); } // Render the Single Review export function pagelayer_render_end_pl_review(el){ var jEle = el.$.find('.pagelayer-stars-container'); jEle.removeAttr('pagelayer-setup'); pagelayer_stars(jEle); } // Render the chart export function pagelayer_render_pl_chart(el){ el['atts']['xcolor'] = pagelayer_empty(el['atts']['xcolor']) ? '' : pagelayerParseColor(el['atts']['xcolor'], false); el['atts']['ycolor'] = pagelayer_empty(el['atts']['ycolor']) ? '' : pagelayerParseColor(el['atts']['ycolor'], false); } // Render the chart export function pagelayer_render_end_pl_chart(el){ var jEle = el.$; pagelayer_chart(jEle); } // Render the chart Dataset export function pagelayer_render_pl_chart_datasets(el){ el['atts']['chart_border_color'] = pagelayer_empty(el['atts']['chart_border_color']) ? '' : pagelayerParseColor(el['atts']['chart_border_color'], false); el['atts']['bg_color'] = pagelayer_empty(el['atts']['bg_color']) ? '' : pagelayerParseColor(el['atts']['bg_color'], false); } export function pagelayer_render_pl_call(el) { el.tmp['cta_image-url'] = el.tmp['cta_image-url'] || el.atts['cta_image']; } // Render the fb comments export function pagelayer_render_pl_fb_comments(el) { if (el.atts['link_type'] == "current") { el.atts['custom-url'] = pagelayer_post_permalink; } }; // Render the fb comments export function pagelayer_render_end_pl_fb_comments(el) { pagelayer_fb_apps(el.$); }; export function pagelayer_render_pl_image_map(el){ const [mapPath, setMapPath] = useState(''); 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, '; useEffect(()=>{ if (el.atts && el.atts['pagelayer_image_map']) { let pathString = ''; 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 || ''; pathString += `<path class='pagelayer-imgmap-item' d='' stroke-width='2' data-cord='${data_cord}' data-id='${data_id}' fill-opacity='0.3' fill-rule='evenodd' data-link='${data_link}'></path>`; } setMapPath(pathString); } },[]); el.atts['pagelayer_map_path'] = mapPath; var image_atts = { name : 'map_img-id', size : 'img_map-size' }; pagelayer_get_img_src(el, image_atts); }; export function pagelayer_render_end_pl_image_map(el){ // Re-render image maps pagelayer_pl_image_map(el.$); // el.$.find('.pagelayer-image-map-svg g').append(); // Re-render image map handler pagelayer_imgmap_handler(el.$, el); }; // Image Map handler function pagelayer_imgmap_handler(jEle, el){ const { attributes, setAttributes } = el.props; var mapObj = attributes['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]; setAttributes({ '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 var doc = jQuery(pagelayerGetDocumentElement()); 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 - 35}px` }); }); jQuery(doc).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 = pagelayerRandstr(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').off('click').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 || ''; setAttributes({ 'pagelayer_image_map': { ...mapObj } }); // 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').off('click').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] }), {}); setAttributes({'pagelayer_image_map' : mapObj}) // 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; setAttributes({'pagelayer_image_map': {...mapObj}}); // 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)}); }