From 92544a0f7e8574550db4982777a634490e1ee901 Mon Sep 17 00:00:00 2001 From: Alireza Hassani Date: Fri, 11 Jan 2019 14:22:17 +0330 Subject: [PATCH] Members Club Ready --- package-lock.json | 6 + package.json | 3 +- .../@mdi/materialdesignicons-webfont.eot | Bin 0 -> 498168 bytes .../@mdi/materialdesignicons-webfont.svg | 10188 +++++ .../@mdi/materialdesignicons-webfont.ttf | Bin 0 -> 497948 bytes .../@mdi/materialdesignicons-webfont.woff | Bin 0 -> 239472 bytes .../@mdi/materialdesignicons-webfont.woff2 | Bin 0 -> 175608 bytes public/js/app.js | 33758 ++++++++-------- resources/js/app.js | 17 +- .../js/components/Body/Header/HeaderBG.vue | 1 + resources/js/components/Body/Header/Nav.vue | 5 +- .../js/components/Body/Header/NavItem.vue | 2 +- .../js/components/Charts/DoughnutChart.vue | 35 + .../js/components/Dividers/PageTitle.vue | 5 +- .../js/components/Dividers/PartTitle.vue | 25 +- resources/js/components/Inputs/Checkbox.vue | 26 + resources/js/components/Misc/QuickLink.vue | 13 +- resources/js/components/Misc/TabItem.vue | 9 +- .../js/components/Modals/SendEmailModal.vue | 40 + .../js/components/Modals/SendSMSModal.vue | 35 + .../js/components/Modals/UserDetailsModal.vue | 47 + .../js/components/Modals/UserRolesModal.vue | 101 + resources/js/router.js | 18 +- resources/js/scss/Inputs.scss | 254 + resources/js/scss/Modify.scss | 20 + resources/js/scss/SizeAndPositioning.scss | 4 + resources/js/scss/style.scss | 1 + resources/js/store.js | 13 +- resources/js/views/Order/Management.vue | 85 + resources/js/views/Summery.vue | 8 +- resources/js/views/Website/Management.vue | 143 + resources/js/views/WebsiteManagment.vue | 183 - resources/views/welcome.blade.php | 3 +- routes/web.php | 2 +- 34 files changed, 28805 insertions(+), 16245 deletions(-) create mode 100644 public/fonts/vendor/@mdi/materialdesignicons-webfont.eot create mode 100644 public/fonts/vendor/@mdi/materialdesignicons-webfont.svg create mode 100644 public/fonts/vendor/@mdi/materialdesignicons-webfont.ttf create mode 100644 public/fonts/vendor/@mdi/materialdesignicons-webfont.woff create mode 100644 public/fonts/vendor/@mdi/materialdesignicons-webfont.woff2 create mode 100644 resources/js/components/Charts/DoughnutChart.vue create mode 100644 resources/js/components/Inputs/Checkbox.vue create mode 100644 resources/js/components/Modals/SendEmailModal.vue create mode 100644 resources/js/components/Modals/SendSMSModal.vue create mode 100644 resources/js/components/Modals/UserDetailsModal.vue create mode 100644 resources/js/components/Modals/UserRolesModal.vue create mode 100644 resources/js/views/Order/Management.vue create mode 100644 resources/js/views/Website/Management.vue delete mode 100644 resources/js/views/WebsiteManagment.vue diff --git a/package-lock.json b/package-lock.json index 2fa1372..c3d83e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -771,6 +771,12 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.6.3.tgz", "integrity": "sha512-s5PLdI9NYgjBvfrv6rhirPHlAHWx+Sfo/IjsAeiXYfmemC/GSjwsyz1wLnGPazbLPXWfk62ks980o9AmsxYUEQ==" }, + "@mdi/font": { + "version": "3.3.92", + "resolved": "https://registry.npmjs.org/@mdi/font/-/font-3.3.92.tgz", + "integrity": "sha512-Ux6iPfRjT9gHtejfss7aHBjgedLx8OrnX7Q+DuqgGYVkr9Amhi7cWFd745znrj7Y74pnjrs+uAbpohPK3ue5Ew==", + "dev": true + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", diff --git a/package.json b/package.json index 7be633c..182cd58 100644 --- a/package.json +++ b/package.json @@ -27,13 +27,14 @@ "vuetify": "^1.4.0" }, "devDependencies": { + "@mdi/font": "^3.3.92", "axios": "^0.18", "bootstrap": "^4.0.0", "cross-env": "^5.1", - "material-design-icons-iconfont": "^4.0.3", "jquery": "^3.2", "laravel-mix": "^4.0.7", "lodash": "^4.17.5", + "material-design-icons-iconfont": "^4.0.3", "node-sass": "^4.10.0", "popper.js": "^1.12", "pug": "^2.0.3", diff --git a/public/fonts/vendor/@mdi/materialdesignicons-webfont.eot b/public/fonts/vendor/@mdi/materialdesignicons-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..b9798eab88241c9eb89ff548b20562cf70fc54d5 GIT binary patch literal 498168 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%0Ao_!4p)EXp8l}lsKMGN`#y2 zO9=Nx@FRaM9wgx&&q!`Fb{G$EPxf*=1DT}AkuKK+k_@z4WU&&3St5a8H!dOHWaAo% zGmR0VhanT^JE6bIyyJC}ZU~abT65#J zH}Kt|z<|QBSZ4!b*-mPi4Gw&SGN0YT_e+}=Tz*Mfdg?C zwMZm-PLnmYiA2?Ceh3PAt~%Ql`Z93=I`2R{|aoo)nb^F*Drv=|g$(;Nj(K&lH|^{dD?3vHr?n zCy0{v*pDsycF(Ntee2fi^}!*UGs!ZZzPE<8t7n$aqy~#^wXZg>?krCyBHW&XsF9Z6 zXH?j8nl(vUNmNAbzH^M$5tHL_lf+3IQTg3twY7pQeIlP+0W0=o<%4rky6;?2tMEBV z0)Giaz`||Ew5+d+RL)d;pBlBVlgRd}D;7+aIdX~K4F6(a$bCi)uY#4;9iv7#@8&8| zuXe5^+HU1n(;li4bA=XKQgVS=xKE3^40FECTe3cT@_ZAVQzC-s2%G{p^|B(ZxrE7N zF0688ZpjMKpWW9ee*Nm%`q|`bRMFNmZUq_{tY)AdX}{4 zox4W7hgZ$s9Rb=%j>H|i7jq6yX|ujzYg_~G82!u0fxI_?L1AQ7bTm7R+`e}CAsvhuLB zy9awD_K(CyK_We7C-h%>(JqD&$KE8y+$p^}gJ*1B7p6T`z3>!Ru=mQu0Ep2K@R77*AE{q}WYok@H$ zZD}HS30!uF*kmpwT1dZ>%PF;yeWX%I;Qm&qJdz#1H2$W8wg*pC$1iQ|`>GELn3wOX z`({G1=G1|3=|pWU7Lu`|?0>6iDCR@cP+&kb(TtK)!aU<9Lg~Z_1V3%!-$<-6_33@% zbJJZy=h>a!Sa2;E^*L>FUBYWU5x>-)du-tnh`)7d;j#Xl|E&66s7EM}_#s=t5pv8p z4#D#3sg~)srd+#10?gg%oB1Qh4wU>(6)D&IXQ_BD7tfY*@!SN*?2d1$m@7vxYA+o) zcBI}vyP+TB>0HS?&S&o%Z8Ngcf1#cOD;f(7$)O^e4iNq_Hk)>lE-}KaN*X2a!?HpN zou`kqa_roNsE0P1<0GDFPlorK+|%y3d)o66j)y!mZfTt-dg0s{ZL^L%b(FV_C!TiC zcy@WF-Jj)L!;G%B(edC@gmn(4C5FnbK#MT{hCwQE1RCOdL8dW2F_b}(2MJ?`+*IP= zK?L#8`D@s7h7O%rDoxm-O!|;1LIO;Xma?F|S!x zl5z(Bby*se3pnq;|38!^)V7qC=~#MNy1#UB|berV=;6U*$c@m6_%F+xf< zB4f{tXDSxV+d$UgVI{*+64nzi1UJP#W^=U;jO{FAOyCIeL}7c9h!3@;>!MX05gTF||Jwsh zI6)Op&t;y3rZQz`OM&kVNQ@ssQl8Gdv)4{jM`dRn;sV@rixjDp#a}WShv0(+T_AwL z5`!S)!t!D+$c0R=CbTsc^@A$8)*?GAsC|3gnsGrpGdMDkK#U8dib%%Xy*fx|D{*$0 zdnK<`F<)F;CmDQyoK5@TTL(*%IW(D;-4bm;dLV*CtRwg`&;^Q@fRi=p1Ro?f(Nt-# zIxZ46^YomOw6i)s65Z|ZKk0|TKLaytMotU%28R%=#31&%B}2!c^~R6Uf?_nYq{oh7 zlWP_kOvrj`J^Z3x55iRr)QEHlhKh04v+~yS=SK;$ZZMS0bO8PaCa_3bDD z+ZY|v&MM=!#0u|~upwf`oonT;`k_96Io5Cgj1=r^YrP-$tGDXk((RWxF+1x=OeUf- z5w_?z5)aJLfV_>8+^~jibHP<}*W6Xt#FS%t@SNDmj$W1IL(!f_au7)jeMf3{7aoks zz69b5!&4G%76Od1I)=x5-2(goe=N+^THy;Lz~CY$S#RCy)c$MA6X^^AcHI=)D^E&A ziS5-JH>v-n^`_y2abs zM0Ju(bM4j<=j`!w=9TMG2Xp=3>xeiw`!o-tkpbmqB zgp&bQ;O1^}S?Hq>&2HX$Ij|%e1zT7k2mv1Jy>5cqy6q(XNzH09>2i6Mv$TuYmuwF@ zsfMb^=Tj>kY%qN(-wovrI?AcU?v%`}W$y*wDw*sgKZTa#jfotON|0(vNK(%0B8JxS z`jMZBF?wVqbP@`clnBJ+ zOch{Kg)bFw2KJJ8W3ArrZzx&S$WY7prU5wFb8=9)0=9Ad!xgZ#(r&Nt-mX)4PT{ZE zM?f~#J7QC!j{@ZQ>$KOJs~wyQ)|#>cn*;F2t|5?KwfsW=RCY^Kc1CS=Wwo=ivR-4k zH%S}Pl>RY(Tk4BY{AJpwW2nPT!QtTFCC;~F^>T>=nn=`iaB*+~YU|NN^?P4faJ3wV zLxDx78cuY-qrSgoPt=$2Q_W1h==Xf+#l4-{uIF8z_j?db*;QmBn)lY;>vcJGPq*HY2sFfnSB!;{5mB$tR4LVjhQl3GXrnY5q2E+p;$i4Z9Oi1CO}E*`WPfo{-0uOcGPc^DTQY8+JWH(Pm!74$`G% zAOKPIArd1Yb%ik9ST#g#dwt6gx0tp;E`wd93ER4W z-tPrZi6m-V=Aa~rcGxkbyD8P3cOSXO$QTw5Ux>Eso*jqn3K>mJP-|xdtMdQf>J}m% zGFdQPs|zyLEqVRAd$dV!+-z4fo763o%rTx5E+1JZ6f>~gcpS+U@hiokK)Z&Br!OYC4UzMuqltnNi_`t+ zSfS(rV`|N(JkB?GLLtvdj3sOl(rvj8dc00=zJMF43b|i(x|O};E&cm+O!+(!_che$ zCzBytGK#CEYSkSs<@I?r0R0>=xXoU*>ZuoN$(%C@wMj(Kp?K9j+ z`QCD_CLw=^oEpxGp4H?|(HY%jvtuuV%2&LVwcjvTWRnWS7Ab-t&5kCVb;uc_C-R4y zn(WEASQ7(9#EqR;7FQgyE_6G$l1&I6{@5$Pb*ay*>5eg>2z#0&k-1W~ye0I;SkFsr zol3g5Gb#q1ZuDt)s7b6a*VedmL+X)wJF5gPZ8mq-BQdE>EFBsx+xi{mj z4>D}po>Y%kuZmW!c}w@iz!r&BBzfdl4pWHGt6+N?4H5Gt$98>;Il444L7*H}8z|_`YIR+g!-T0ujo#e31tJkkLueL!N&1U*jn@~f;x?cbV;>=Zuswgf4lw4h4gedUP${13PEhVSdzD> zUTzoBhHlA2vB2u=h19ewk80HMqXHJM#xv^@Jhr=Wb4@g#-$)BIWTdxPf1*z}x!Df0 z24(Tdd)pe7R#-?}+tOP1c}7;htgpd$M+QQM!g`tGhUT}l$VV72)mm+}$T28Snm_36 zR*OWyXdA6RX&!9^rpVfmc*?Vk;E|y-w3<0(X0^D^D2Q2(CCf`FEdbi>0vro1Dep;l zPlDS&S?pce5vbz|5pc-0k=|E4G6#^hU43uRO{4%4S-^!6pGNr1SBbC!vD=K)}nTi&J!KgpwJ?jk4+6rsNn!jF2od$+1OZ`@4fr-Kdht2;ce_e}}8% zvha`sX_}Tc3$Lp+c_2&Ka_lj^it39ZTV>nzOjXnn+eYo5)$3w*zhd`52cDXnQ)}$I z`4isVV)?Y&dt!e1)ReF`yezu8!#+xAy;TZ!m{rLN?8SH*sG(CWKK=Mc?P-G7={>q# z17yh4wT;K08mmehMO*B1JNq6_AL0p=Chu(K?z4lOa4s&Q) zPU&5F5w#sv-S=lc0exv|P#`o-UF@7{_ysztNPxbB-dH@OF8eQ(!$?JMn?S0t$lIdV&4=x*;#Q=@kx4gdns)TYs!3Jacz9VbUxJ|gK=yd21zc3i}U zf$sb8-dMQ-pDz3Kedf^pKQ^ixoee?v7`!xNS)YG+A{2;30-=dvzb_ku@`S#G!d$Uz zue2tS60n!ov8lkd^ikm2qSk%G=h9}F61;3Mj;s@z!BRPm6D5`b29E96?~Ugta6<9{ z{t=A?e7ltlVa(-hID#Xgi6}vAHUfbSefX2-%b}e68CN_Y@`6Cz_2h1+OV5b1HNwLI z`vj?{%%gG;IspDy_S$iJl83JlOcGExFv7cF#bErc4wGAntgDrcb&g zXp<||zB)*Il5f2x#Nz6P}dGmAZi>@0HFpm&CL&S7b z7mv8zyGN8KtcWWRiG<63yRW>@ma;iK!=u?f+0kK--JY`TE4w^yPxGR(J*%<9si)G) z?VNCr*(JP}J%;5$(qpR~D5ac)DRso%bVH>I&Q$3@&E`ym_rV;bpE@Oxhh`|38~cek8wYKXJDNs>MB&D2AI5c`1iP)$UgB4F#@5=y=>=}ZRK5tVactMCgu`zG={ zXy9l`YT39&&>?LP+BS5*!HthG1|=+Tc@D0t$C&kp0c_7Oh~9jX2wjVl6ob*SE9CU- z3J32Rj9_?|#~FgJD!U&iJeqGfH+&MToyniiCf#O0+{x_ud?uC5oaAP4GMAg|&BYDc z;S)Ire1QZ>!oIMCEp1QohX-==&craUTf}`@pBVo3w}&UL^X80BGp?-1E-|sf#9BN# zGz0-Ena@OQ2=@qI0kI0+7cMQ$l1$SfVc2xEI&%vtQAlj1cl@jgv*@#heNBJdmWB$d zHFFh*&r!;^ha(Om^V%Gd;dXx9?sHUf&D<0!@~|uJp8B-grBe2|zv+!AKRoA_-*ea> z3j2;by*Jc&t~p#uI9+y(yAzfC(d@WV#LjRy4y23gUe}R8IOIFx_FFhwWQdmkIpI9T zJX-5Pw@urGZBp24wQIRge>yi1g|zvVixv5FnH~WK)3(uayxj{C$`u?N&^7P4nWw)VIPsOi09K#tBI=#{9 zN{#{FZ!TX8dmlepI_Omo;zN?0{xO$hR;_#9>G8bN?YrP|v_@=^!^(4V-jP^zc=wgn z;^Kk#IB?U=dlQ*RX!q$uNpWM;aOaNt2JO}Q<|J#?a38`*353^>g;qBvE9y6Y{S%&t z77oA3rrvmDVOi}ud+HHFnO}d~o1TK7|NVUj8>)5U*c+97!d`VO+U?J;T>g+~lP-ii8^?hp8gr+F>rDmWskh@;?+ zTnmK5-9Jd=^Sko-Up5ETjQIaF5LS^hf*#LAR5VQcuIBUAVe{FaBf)6_Y|qBP z-cU2;#{4oO^2(x))k3ty0>MQZZs3#%;>7Arj4H&aOi)XIR0P(Z@kfH!Bz*VZsnnUk zWF{0^I(+G`EVAh^0YyJkoOUmyPfiU)2u-#VX|muI#!p}U^6X?go_4<3_sCI0^L&bU zqLYO;6-u>%c$l=?z_=}JRVBt0u^X@`l9p()wZUj=#4OR=MgA^)gG^%Y0rfUdaU}TU zX)H|D!zTj}U8fq=BVq;EV6PiyvT;hOQ|-XXhZU61=_i9DMNjZZm8-L#mZusM9VlP@ zPy?x>S?e;6CQj7U4jUA!S-J(#Hrs5F*bWNK&}VV9s0OOw(rbkEoU=45tA;x3WXc&{ z8v|iA2@?A(q3}&u{U0`u%?P1UmOTlqX1$qqigjIyv8xl6Y@5ermG`I^%Yp_@T;?3x zi{359($YlrltaRd2)P(DY{5_9a5bJze|pEox9s>DxAm`ayYsZ#n&JFot# z)!i3F%q$eY$g4JOcz-a?QC2Lgm1#E(W|U1k(I|?*urlsudG@DW_;tQ;iABOBOp2kj zG+FfUb8`=!ZMDu`4+lrze)xMnYPWy%dk(*SG#JjN(}yR_TudBJr?>8E&pSkhy>4IF zulNB!Q~MX}Ui{C@e5iaz!pLXb=<)S&3i~hsEiVzERpIh`C-rXF~cpP`>gM8!STGOYJ5!V+c z=arhD{DLczRKDgd`BkbaPY1nad93#;qeYX87L6~sB1BJ&v_@wo)ZPdpb&~D?E?~SM zI2df*DJY^I-~Kus(e4ZFYo2CRA z4wbLHUWb?)gVX<#eQWfRLvgtDuo`Pr?4|fmeB$&cM$V|r>A*`by`-*xyZ!C!?RHYM zofiC&eUt-&6Ul}6s8G{D@wCvL;wJ?@Yb?v4fG#FAdei=SL_nPE8<4A^k>*?^M1Up7 z$Xt4=@xX-7X?KMek3P7tZ)Vx8JQvSIN~2kyJCgmtn?Cr#pZnkk|A*a^emuq<*__9d zh{Z=60be5?_IVP4Qv0mWU2!T$<+*&p z0VRClKjgo#_xQs$+r!7l_ar9s=cWxbdH8#6n{_fRbDg`n%w(ZtL7L|thNK!C6Qe^W zBHzyBSujMzoIzRjKmJr`GW1iypgC+}=1{+S_3HoHzalrj#8oa*u93M4Z)5WLl;{qo z-foGCVn-$|O52)ED;nxSe9r5L|tELt)*7l@r-JlBLuHp zmis9+Bu{IblJEX0eAG>()C)sLsR@vQECEC(A`ylO7XpS39yUFA2VB^{VZV#*(`@zF zNGdaIhHf~M8W{trXh~!`64S|)V-Y+!3FLMhNzZW?FFB~2JXSrGPp1x+%#4%{rqcOS z)k{wuLK1?!GaZ~vNq*+kWH2qF&(qz%JmGSkK=5MO+Ob0OuAh}B6W z$~JXRmI=$JP5y^hpAGoumzTfuALjjPHR1ie-}Aos(N}BUqIbAn zf9a$17R@L!NWWNpnjA%X&oA~?mI-jl!tbxE%2GvbiL3MTdDMtqg*%=bO|gqdsfy%7z(Ps&F@P1FJWDs zTG(k?#QLBOg26<_pj#x^0)}`;T)qd2NsNn&zt^y3hqGg2*-+e>%T^fKH_W5CA!17} zZd5GWkq3*VvB0n@EtI@2I9{2-g{lwax=jbfwH)NYP)k-THm6zgva@qOWa1%Lj0dMf)>Bq^;X zLX|tQ3MO$?QZT;y;{LK~uP8x8icL2R9vu_ZD+gGK(@(m_cRdjwNrvB!SmIg$nMgog zixYldeZTWBzU276#Gs;oTxm-zI1w^Mv#8Dqd&o_B=|6MYUb$tYP{w^o z_80>|Y^84jH@s+xC*gH>Bl%u}J~=ov6qPs*dTlnu-PANfPH2(7U>c5Xd>P;+@JoDD zb+b9itFPy4-LFKmx2h90bpbbqiQ0t~`5-7`KL6dJe7>E}uS8GqHF`q*_xbMrJXuK8 ziRgve1nv&qpRbmyD{@X3y0`Lwp8tIQ^CzNwY4b_jWz8B{rs!ZqmpZRUlL#Cb!}1ob z0;*iGz?85Ymg~0yO{;tspkGtlw zwcJ^EoaeUHd5}9%&>{jo{dTkz$&6_P; zJb$`0vd3oIGcta9*W^W67e@YJ>VV3Ay;`W&dI1o6FK7ruAF^)%bAWAJ=M4?UUiQ}a<12I>l4-E!w!!Qo9AOK$N z;T(;pFZAHHdIxm3>~LWT+$E7{7<*2gT4aPMA*=RgW(o{6xU}j)>dqJl@$Du%QzAvV;x)P?=ydBE~0nuU3sT#(T`1TU*-#7$MY< z14_K8bV_|C5Gtg*opd1-c!f~RY+t0TT2-J*Bd@Bai)aNu`ICf|c$+&DPT`qRNQE=* ztLdmnv4sgJ7j}C->-4(b`c{{hJ)vp5Z|S&+Vw1%hDH~(RurfB02DdFHnIKr-W)if} zY^92+V$+8Qf$iFP|Ai~c_T;8ER;xDKT;clJU7tL2{+bM>!4+aN6V`HoWpW;9+3k)f zgr*iGA&8g|3}`x}FS_p&)Pf$`+Vu~yxI`C2JpPi_m+Xl<9GU3IUF^40iL>agVT-LVL|_gYa2XtC(m6brot0E#0x(fa){gH(UiAJz&Y7548pGhgitggMjjX^V(PwP{iC<$}UuSGv>ymZ;zN4GO7cqZZkFS|K*=NX2ASq<_`n?fe z6xdFmq`L!s=8>`5I>AN7KwGg)Qpiat)u^)34wr^EyDQD_xTgy#iMG0C#3(f#Nn3P| z?Nnjf{T-}Mpx>-M#u;1M5KqH6Q7u@8@uhYky9jdtz`8ZyZb9!}hN z=;^G2>9`cvU53^}A{*6ZbC4Cef<#P8kB zP>A}7eX!p}^`s@&>d<|v`-y>6^eAImcU7lG z2I*j(hTiJ8HHLoiU+s?~w5`B`5Euak=pjIXHI&K3xz%*}|>QIR;9Q6|E_?fey`rpB^W?=EjOJ2s`% zmFVCkj+)ji*=)z3m?>6=Q>o!*el9@ zFnUF?GMp4VgY>dg7l<#i%O1KD=rbriR7c|e5OEE1c$xGt9j4F&dFh_}-Gncn_D^K; z0ZTSFG4jjAE*X#zQorm0qbFt$l*JH3tQRV}exbb5z$4$6ogwF!eX4(QHRyWO;ds;) z?DS6bT=mM4m|yoPsp3wO+U$PiVWhl%ZwoBJ8%EPjw!UFAN0$?Y+=*R)X~1N1wUL|tI+%zsg0M;&L8X(U zxdN9osI>MpAxM!nirisY$T0S=8~p_G@I#h1OEw+#BiWfmiyr(6p;nyfp9%PXCPQ`! zzCM4<5t==;+Y<SzHS?S5}*wn@ysHZ*)3PPew-4=D85jzGNK@fxDN9p&_bZ%}W4Xh2an= z3qN}+mTg0qi`6`)J1QB=Ht~z^ZsCc8S2><8y}BhPo`)}K<2eQ3*jQ_?Y2#A7Q+Q0< z`}_@a`cI%}#M5dV{sFG1%xEm9h$+GrZ6F-cM!bB3q+_1+oUzV1g&R+yD=R3%fEa)Q zW>p>k7ybS(c0ZvHuNI5$x~J|g7Qd1&+8RlJ*paGVjMrWDxXJ~?MC}UZy8lqDryOB_ zvSBOcJN7FdbRYZN=Z?8Qc;#7DAKkxi-~Q4157{r5=B5(WXf*S^V^dRO`E1PNiDmPv z&P+5~O-#*|F4LcFIBx00*o%Ug82o!eEw)=LEnb5udDrDaYkenGfoQ=qKT#K-b5k6((^1VpxAd(b4d&%C_eETgcFKHe!6;QI&RX*u>ILDdiLF9F1Tkwni0dnRtz#4# zY6uI*Hm0eo+x9Smx5U26=z|QeBtj^h6~yUM4-v_ABoD}hi&!8-xOkv(){3R>N_&01 z-O_ZZfu|mAzr$F^doDn3i!hSn*fqV&cHBRV06w&eaGmfxVmHdH=@=5Q`4zXMweLl#Xhdf)Sf6QL`tH!$GAq&I zXiQ!Jm8o57TzXnHH;P5e9H=jdF>SrgS`15D;ZYIEyJSg-$-`oL3}dXp7zQa-B^HTl zVO=azA3p97m%_AjQ{x+($$d%6PX=EKGkG-og$=cCSpp*|z?4^8k&)QcT$qHP*y@!@ zi#ov56c7N3m2MqNq4#g3my5#nN{ZV0;z7{x7@Q8;VEHQl%oQXXSlz2eZ-@ZgyPAO2&RZr&tp8~yM zG>vK4ThTfI7m|XK5$6IkwM_|gDdr^Pov?QI`^CSshO=C@`>*sVRe^AaES>lt$XB+1 z|5jTbw{(UwKil;q>2CB&2dtU;%Domype)@c2$8$=p%PmJlr9BJt`_}`^L3-EoiJcQ z*Gpt99&PK^bT{OD-O{|iU}-*k1Q#R%EBj~9BkbnoZYx3R7wg%=L|(2AkL#=Z3YmSyxf2#vlal^vfd}V~%oirE4m`&=u~)zQP4#co&$7Oc zvxfSrduT>57<7Z%<<>?hOkN@_CW@k9OQl6Ri>wK`sE!@Wqe~U8iv^|{G7EZ*7^U9P zv617WUXQIbGE%a6yraiQ#ztS`I=-0NxZtcmMnbIp zF{i`sjNkw6ID)(Fbtv*YZSh>b3rSW4b5^X_OHnapH6fNnZg;147{6J3TLcKM$rbDF zllv~LZt4I`ip^$VobihiDL$J-fwiQb2;AyN4> zNHR>tAnPo2^%ljRddy~f?3DTJ+00-$^Dc2Eu66J9@11&VhgnVc*V+sbIKrao!_>D+ zTRl@NE!Sc*s)jU!?dgRJ6me)J-7}q$9&%4NkP`#4U-`wQlS-XjGKaab8WFe0zG@CJ zk|?Lb;U~6JrW~9$TMfFr_Y?W$)b?-Wr$r?{ONB=V^39PrKf)|@KM zo=+jKFU-W^GuiNyCr5UBe%!nJ{i*r6f*+svg|R{{5O+g+C+vx6eQatWDMt0F1f~lS z%y;vT@0*>8_{X!yT9*+IjZGa+hSRmF?$?6$aI8LF-m78Le@5>ADIl%T5wNI}l_k+` z;I1L@uc2R-m();hCRSGQ_`}aV_uRrl?$FUgxrIVJUase6;twBq?z#HMm$LjVecT!w zMnhz-#sY}3DGP1F=EeLJdJCF?Vi|m6Pbw1c`n|S)=&vD?g$hh{Z>5?TuX~vnbw}LM zz1XsMZyQgiFPQAQvBjff2Qqgy+IU@s(~hTP3R5Zhe9Dmy*Noef`MgTX5$D-~JsE&H zpJYuiZPKW;_{=+B^UL33OgyQUDn3v5cWg_QN#1hG6?3ZAD@&?eS+f1M$9Jt#R};II zl$>(ls`_nAQHN~b#jpnJ$u+bg%Z!g^97P%h--H~hfi;O(q#+g4><(%lY;0sZxka~% zHeCw@)mw|Zrw^sCg?0@OlRl0FRfnhLdvI!acrq&AAD!BFcz1WJe)iaG^4#?DBWG)e zb|>E$8lD^uh2r7V?nAZY8-sic%eODu53U?iXX~?Pot3$BdTkiqIWO|aG;^pKb92N09UTFXk0hY8i3A~ul!{X&`wXjA7L9@RLUVXT%fha( z%-i(#upp$C2x%`ySh*)d&00_F9(trzTepa|)+D5tajTh`gyJ!K)yN#h3UE#+2iP0g z@xr`oxU{sqZMUW8UEead5zuhE2em#?ob&xnt9ivYR}@*ldoJ^i?Y}IAdUNk;uQSSb(q7N@@Lln-V8AM0;nog!vkdZCNo5 zHJ>Nt%X)w9Q4l6f&n+W#|9U{FyzXC@+-dgrm+8;z*N6PPALZb_^?k9>X!Kt9t#qSz zm&f#avhbCmPGl;fk6oh20x~nl2{+)yU?R2IYBuL$@t%dN&Gjka6S8oATzBHBfkg45+8voR49cnRx5*7$r1S&0C&IUhQM9m&60}mS z3n74fo4~raIZ(YnwXut+EIF?UuGd#&+leOcY+?`fiLXGiZV=yPpJP#J?3|GjgC zcDry+&1{~R6A5l)_F!9`rccn_65|E=2et=oA*R}o%X7`z%latA61xNXU)Jlru>&U2 zX3mJMt+SyO$p0?~q8GWAfKRvX^t=ALV^LeVQzLK_Z$f(TX?-E}PER%=k#2>b5LnR5 zKa$q%l&ma!*bid6f=dun(CFnLL9C|Jju`tD1O{3xf^1*1v5EB^(bFX%$@}xoe~4wg z>M>d?lQo;IKCE)FOgQkNPrtwRL*+8lS1wC-k{9#X9^H=kujmP7lAG1+Y&H94E{2lM z51|`fD?fps-oV@;4_C?F+xPYunKf7!Vje@BGJy~SZ}I6K>s>wk4krnLVzaGva6Gq1j&_r5bUCK#M32^;l*tNTrd?E#PHl*?vQpVc={k!8T`JQWC@cBu{bvfmS! znp&~jeeRcoq0{b9y7)1#(uC9PcDYWG1I>QQ=Q~BZF2_rD_lI5NdVheTou@)nr>Do7 zBau5}StH)p0x=;<=L!Jfe;fsQ}TQihe|XV)nGaDTio%1tz6UKDX_k zx9;3IH#Ja1>-O451`81z0fRpeGoB9&on@!=s@K?GOJ{miolpYIxTt>n^qoWnGE{?s zZ`)A`cu*mA#3?Vx5Goq|vStRJ zb%U4+tRxu+;a_@oUuonfCJ&Qj7Xa#NGcVIJ(KnTZwPc`P<1S64LcIH>X~ZH-uCI3F zR4&OaEk{~( z!m$S$Oh1y#<^H&fGJ~fCY&)FgWr66AMBB-T2cuI}5xQ`4NqRAb@jS zgc5R-@sLH!dT1=8XeHN}yd^FbZ#PSpw*-lk8{hVN%9#fqP;Y2v#=XH5DF^4&^wdb` zK(Od3x_AexT&)I+Zv7vu1(U%<%9UJOa(L83hfiPhI56LyovSU_><1(^q=+odp)IP= zA%nMx+yjS?ojzej-D6@}07P%Z*N{#4x_=r{W0C7mxF3lA)UQH^JuvgYrOC+>pc4dO z?R!W;qZ=p_8KXkG(~Due_DX5{m>u1~&>I7vcf9Pp9r$7A>?}gCOX^bL6Q4Mp`3MsC z2GH$<8tuL^3E|eGO*@ol2VdaZ7Dx618D+$yG-e z!{r~m==L8vl8BY}@3?OGmv6CdKLOmDM1lyd#*hLDu$B<0J0O9Po*fiV!$b<68U|Xc zg7$;cpgct)0pZKzWH#gXjRgdW7?q{eXLF@e?z3LkTkxfPOKx0ocvr4;G^EJvqyD$o zyQzvi`w%~Ig(l1oFLEg5_WqZ+*QGqJc%_uPm@B!1s(-u0FZTXJ-0OCG=DUtAk3if`7IImu=ufiIfCOsSqm{Ct}xRqh5RZO-i+n%+KzfwH^LdQv3KXIp;m^ z@kAa=7NMt_%fj7mSMy zlHeGnC|(y~JW+Ec&rnBnp?+G*LvFrXfl}(SX9x zFwwtwPczZ^VEIrpmW--;hZf%vYyhobkgMJ@X5Xyg<%EVZj^s)&tVQiUji8F*SeA1( zugFr8weC<&*!BW~G>LL`2a!xOnQWTVYNykKT|$QfW7&ZM4`8!tFH#=^a%EGB>nBOP z7;Ry&Ntx=N6lRFadu*3~#y2xusn;v{S|Ac#EG&zk;_|M8k*X&(JCaV8Cnt(i z$$U78V~HBgj*ZS8QKKVo&lc3u#U+(bPo}a)6fiaU7}jfk;9u%<%(+yCPq}UbBQ%|9S4oua~eY5aQNK@jK_Ht5-nxBj3*3sPw-C+d3 z>ly}sw~K69e1Z}A0D~*;QQkt14}GE3>6E^pKiA%$UtiDv{0HQd*^qU>?<8+z5Lk;; z4nHly@u&`am|i4A?vwe4PjsdWXDMX$Vt!AlbLdM4v!hwHk-t)3A1~~uz)KJ1e=EN} z_oai0LR@ePble}&&m@z?P^VF#EXNQ(0;d^tM3!pp2j4w1m52m?`oj*))h|4tY-6^= z-vmeh_)2Krg`>p5bRio`ylnzS*eAuvThjw==2|q+l%xql3!OtmA&Ws%p=wQ#8zT5Q z%){m;U|0F8wI}8TZfhR0qxXz|s25#bC;cj^?{uC3?AzX#OBH@$&B;RJB!ui_8Jk6Rcd_{&S zk#CoANY6j9?}8L0g>zG4&D_7mI~&TQGUm{wd@$xcKHrK}^WW0voh9DYXYnZ$TM$+* z0NZ#ZrvU*XS!LhX@mI6-#res{_w0FmQhzG)mS~fZbERE(RApkKqVDWs=k$0FBWDpW z@*&Zk2!|;lcJ8)P+Rpc}zPZ_Iw_BT=scp?uru$hMD{3cIt8TI;VI;Qi5-cxm}UvyI^@=3=+EfRESdrz z?FVF9W$&B1#U4v=fR;qo^^SU-z7h(V*L`~mzr@Y^b(H#K{Tmr?LT4Xg{cnrtwP1cm z*$rza;BN@i!SMn)l)SjGtINcWUGWCm+E!|^nV1(0F`sBoHZOOz{5@&)N9?bp{AuQn zMF8QV%|3)W(WGJ&@?Y#g#wTHY1Ou=sSSbQL?pI+`)Iz1<6%ni+yl>@_+9sghixy~X zDY&>8TpF7`C~cws+o%?!KtSddA$o%iX{zJ|YJ*Sg4j_|+xYBn0GwKbhJiM|(qI-2< zdSzv}{6^$Za_nF2442iE(Kt=1vb(y%CmA@+B|WFQUZKU~;_V?ZamGt7=O*mCtMla++0$ewWbXfO^&9F%RvOZ;1}-jSN7a$M(&8z( zOiUkkFOrc2UY`1r^?*x){cG(6I*+A4lNemZ;@Pp**yw1H7$)(`V&ZK40#Uv0y&8AD z?2ZQA7-^jw9px9reAbs(ti;d77f-tHdpRMVon~K1TSwqIg+~@yorLs}2KU>82cG0= z6}8FEE>t9H4$3*STa!!L|N6;2JKDRaL?@yV+v<+14-{7DMJni-w2|~&=a_qP&yIHQ z8TSO;(Q4|`JFY%ZC=tnK@5p32YWz~o+Uo$b1*4;}9qT7@A}+tNBms0S4jA5%s&68$ zFmK!)pIRo71M%npB1ok_C5cr(h0->bP>o%mS3_-a?Vo^r)4T%fOX>*^jqA91VtEAx zqwT`PVRTVD_ljnX1%@U`B$})@3rurStgia%>!PX@LV3@D1JP{stJt0vlF8ls@3JU- z_1$F03kNg5uo{R)1FL_a5~B%To4@c2W{v$X>^X_cwM5IrPFg1^g~v{%McF9gHx4+I za|@wa2)W!LXnvvkmzlE0vfASb#{&UpC>@U0mm;4iEJexs>9V=g`}Yx_$>)qL79Fkt z@qFyb6DOWeC~tVwjytW>ONb%6H|X~!Q=V6j)nh5YAGOzlO)c=53@j zn_j!a6~Xwox7Idv+y&8K4q>Znh6kEe_z*F%6MZ+PPi#~HS3*NEngXz7j&vw7th$UX z0>`9*4r|!Qx77p|H!@+FuWd`}Yev(JkZ2-btK|XwJ=iSmD2TTM^LSU~V(TIX^STM{ zULz$u#bDhXZK+VRT40)|k^@zvSkGJ4cY2mjX1__@cD;_!;EpB#u@>}{cE;-HA8$qS z_H8xvk2HjFaA+K5<|BYLvG~jNs*>>V_crUbX62n?4Yjjf_n(;~ceU)E*)e!i=p2{e zO?+-a(dk}@SHWZwXk9!=C3V{7`uf^hN48Z50;AKZW?Ida=Gtb@vld%FGLs9{cvrcY z1M6~SlcK*8178bKnyuWT;B~7=%BF%|!D0w)(n|>IYSDb6Uo|$6tXFXz5QGE%+3`&c z5!|DO`xfp5HHi&^k&9V8#C26ou4spXOW*U+OSa2RF<(0{)4bf@H?r6L@RDUcOM=O$ zB&6)rA+-sEO^u98Qj7e=c<^4!6l@)B&z{7Imsj#WmMO%wyYlSYScJm5+_CetflXQ6bkAJ-I@apKt z9_Fm@iaxdQj?A;r48kGzs95bUhIok#BF1K2l0PysEi+cPTTqios%vdCTJ5$OsWzI? zW^YY*)J>~gvEg~ml95p*8>Rb}zbQE|?q7-j=JlJ_y#EsTASvrqEF7S0(vlCc4$v~{ zP^QNyLcg*9K@}yE=4x@(6`RTJzo68G{iwMwEiVJNF6_q&#Kk>=c1G2M`}bd{iUylk zZ{5n=n|wP`Pp=wF=_&xS135Pm4YaH6*yJMT>T;5ly6SRsaS}V;b|5;!dGqoMItHQH z3#LpNpZk>AXQS9B_m+(hfP{CuxBSC$y~;G`{kEn45c|TQ=!$?VA{)a*MRrGp8lm-} z)u2}eD~V;EW|bSuq=g4S0=dJ zc>k_yIWzkHg=`>Q{U`NOrgi*BmK*lv+>$N2JF_76P`?J_Gdng}RkdPU#iJhlkiw2H zdtA=!hnHv6@W@m94^PG2KDM>eo$}lOZg|6Gbul=k?`IJo`Yt!GEe$({yl+DxqmsGoZdWw+VM@779 z!KE9_uf%-XmP`raW0V*y!F?w2X_|@c`BHpCGNH~Cev4`CIa65h+`x%mM5_TgtpzD` zk(i7bI}kAi+OFp{0!CfI8bflLjbm{AfRmS+NxoLJs6VmnF5Wd$T3E5!Ru)R2l^*Ul z{A*%pjGp#fIt&;yHf+)qbJhr9wWis*LK^2@y6yY0&vv=(dLo$;XOjK1h4K50!Dr5W zE}g}-Wa)e;e|md-#aAFC)FDAy-6m|Mh|C(ePO)hkr}7)= zf{L7vBpBslBY7hH4!IkNGU7|S9>}X)VK)3=;Xs~w$s~_MO`CphBAXCcoe&yF_%h~F z&qLo925t;WhnYyr=+hL!6~nhmfLzbJJiL&u8G_<-wyQ4@nz%F?Bt7BjrwCp<5hM`& zI^w$XpL04tcYgWQWkaQQx5WKCQ3}MvX$kb4hPEpSpHCZ%t!Er5(6so6W2vwB$FNbP zkcRw`{sSm2Ijz9oL*RdrS#n1NqheXcTHGjh?_gk5tZDBXNtuYCQU^QzQ;0AvY8Zw` z)HxK16JJExtWre;z0hAm5b^PX&V-^rYWKga_XX|zhDtGx=+QB1ON$mxA`7AqC&Bb$ z4N!w+P!m>md8JifyVY#odS|ow&ReakSIxdMKG06tS333yG>sS~A|7qvJg_vmxmq~) zazT8%RqSVeCZ@7$tE1;%F0`R5yZ^wAV24 zO1Zz5dlF1u4#LVl_+?nq=bm#-Y;H}V^Gohb8v~cLrVDNn_e;Ej5#lWjaPl_C1 zLa#Tmv4fUQqIgRl7CjQm2*`hJ-Bu_1frK@VCuh}iLnZw_LRUtfpM8%PmLGT<^!aW2 zU+u2mo){)JfsdH8c88sV*Y528-R|nox{b+>?&t5S6)gir zC^eQg3O+O^mJ&$)^UzefdwXK;!MUTe562Yx?FigxpqDO*2~X~lU~6w_EROBx*Ggmn`iok z-5y-&z0NuJH@`^$R@dLS>|<_D?2cdiyTAK!zh~LQ3mLM&PAWEYY$Bo?oj&+aE7>i( zHQ5S6V98snh%AY$Y#Ydxx{;odHD-+rj08{-4;tuCk%|s{!J!VRVe7W0P4BvAJt$8| zlbB!Kt|n(<52dv!Nz@kd-_(gTQ0eI-u6bBv%j5btYeQSI`dDYs$hc(ou0z$xb>N^v zTr6+>xc+FGdkEAw*VbCwzp=^!#ZeZkRF`GR)38=j=uXJifsvJVjzJp}%Rr$4!E|7V zHV#I@9!M2ty$X(!{va;Zfn3w_lZq@=+vy7gs zIlb<7&cd3NXtB1nT{b2_{2{U&?53=jfw>&?$xHV_Ws7W=w06v>maF#s3VZV?d>=3+53?1$PwQ| zdyUAo4_i!ZUF5dq1Tn|KPa5^7D@gUA33?R~`LZHpOueGk<2mnqTUYq!Sl+!kTad8& z6YA(pE?o+VEM{}Em`|kbFE}LbagFS!Zw@(6p7dU5%pLFpoC&zz?!h+cqj+0j2~F-( zdRU@Uur%}w3Wcxr|W^ z4k6o3xLB)g&F|kozsI!VKePEd+w-x-dK7pl^rHC5RIs7e+!&&#G@QJq3}qb9n`*N! z-72hYiG&71w~TB%=+17bxyNEDkum91(5V!#m$OrIgkp=hUU8k*6j?wktS06@^|MKl zXslvelS=C2Tsir(kyNT`RNAr!UHx`R*6m@W`U^U;kVuCOIjh?t#CwTp5$(m{Vgs=K50k7Lxup8m< zzVT`LLo5B^_n~y#7YKjaQB8eK_oKY$ZPE?LM0OZcczZ#Uyk?&pd~WQB@v6ZvSfB<= z8W-xtT1Wmicph@oWQ*LF(t8X}e`xc(;a1=!-!QDbf=36y)M8 zJ=h0LvkIQr!BX=3wE<_Pjp|*_P}_J~{QFUk!odr}!hH8-PJEp~+;x9RlP>%>Zr{G2 zlu7$t{iSqOkF~LNwrf97MiUZMn@TXo7%VW>qB26AMHfV9AnGJxTgc3J3#lL0i#VgK zuWOB&98!8Fz;qkNki_znfJYH`3E-kmXWOgWtx1=zi=QnRqc1fT^sNQE=s&f@6%b-*SIfRdJP@XsE$#1u;)!Yu zqu)O%kD(AqW8-2`YwO0%=UL-%AqQA}xTSwktyK%z^GrG4rH*9ZEU-mw7tZgJAtv~qku}3t`ATatC zo{TAGvOfLb<1 z46LiCTeWEPV_$wMTm0SDX#R)(fZ7>K)ArlyGt};toq?DdaT!}KsnNdxS{>2M;0B3R zu934KXrf%KOwMkS4yMgpSaLuoi5PIbN2Cn$M>T}D_U)d%mC9bv+t)}@lNJ(T4Tww@ zgxH#q%BRU#)1)bVTawSvf0GrhB08tRG0@dwHc-H3zp{+pW>GsVvUw^lxHStOpb*pJ zG8&pIm}ZoJo|e9_C;el`kFS82lSTKb)Z_iu*338+(!=PZr*(Uz)kogAC-d8m<6oxH zDjhqWIB&K4xQJV%!Sqi2%7+9u0rJgTSbxj3D~e?i6dP}G5=d!U6sTb$brJ_d`yj*F|ZFyBxC|TO`$e~t{zMtIFLMO9R^i|@l1E~WT{-@b<#Qx)D_fpBfkFH z_pPyTAHxcQwu%^0>?xYtZncoJ*Y#FY{%7Fawr|MLvM%X?;3g?wdb6{J9xZM4Eh$mL z25J%T)+_L}s@V|}%-C!MHGjeQh$Wkdq7I@y-IlAN%nb>cm?;dztr8#KXZ*%s0DRJhOMG-F!{Bu(L;UUUQ%V%rWTs2nF<97D)+nmY9Yw04Z}+r{29N%| zo)@S1BPe`pNTer8<}7$8wouJh_m78PtSkatrz*>~C$NNiuK8TEn19i>Oq^nc{ggeZ$M>$Wy6<@1HDYVc zqw~_7`9t%*D_4B;qh`Q5c@aCy+i;J(b*hMwwt=>f~};Roid(T-s+sf9-k5cUhDu%q3;~5oLHphYXA} znrtDHdSx*KI!!$?BjO&iNDis17JB_yzxa(LiKOu0WS8tcvuO#>G4zpe)>2s$Lm+6I z)#@8Omt^bl9#S`<9Gx8P2oagro8eD?It&5%{&2I2fKuA_*XnoC+v(U-Chjv23UKLt zL2UsHbN@Aozx3aMA36BRqtm|+el1)n6h>!$f9C4*WDXmZn+Ja6z@ol4D)$OJ_1FL$ z=-E>Zj3fS!J1isM-Ar&HlLGFv)!aH}(<%bF>qKeRYG6VFV{Wo8JKj`GAxa$&PQ zw=%;Pi_c6hjxOIR%miScGBe5L(dOkNgTRB~H?l&(F%mPXjBklZ`K8A?&a9Ag;=d*Y z5RjcS10ck+%Mv4UG%nhMVT7*cmUFqrM_a9Wz5ZLdOr8`FMCpQL6$ckcOid7KqHn8x z_AIX_h}oRZXD+T?J$v@*8q0*Xu_|cIZT6m#5oz0R;V*>fl(&`?RhW9~Uq_M$>yAt$pA30t$ttP-GQ00w@$0 zkSuYNNNAxb6=YMAMLCu&5t6LfrfkQH%3Gp%Z##f3dnQrGY1>2Cv9s9ic)Y-0r_+2xL?nXnpiM5gx7rX0@cipLq5NjM5KGegRI-s6~S##@K(_j>O?q(~y{xc#6yc!why z@QqE~>h+$QRlZ`|$N5`A}=oFdZ?#XaIrCG{7Gd79ieVjZzRI zK*}`wjLe+y@aNVs8m;5F(DuqHh=7x%mX$`mnV>=KCWBPG8Bvnt*HUZ_f1%Kcs0}*LL4#Z^e&0`0ST?pd8ufxm zccok^6{q0rPg#G?Jq}06?R7ZZ4PU~X`jfuVu}Wp6g1)eCID@kw?NX!j6MM%_C!@tI zwd1KM=X9|-xb6=mzmW`Ny)Ko{eNEg7UkiqPd57a0PW6D|&-o39gEu7Z=LSyKu-k2Z zalh+*g}JoD74jBhG2l|J^tc+FPy76_hziGCPRD*(qKp|MC32L5oedOFw$cxXud4c` z?h7^&zH{}`rCu(;t&aS3TMm=oi#J;0X6>9?0%9RJf-Q&ZT-w|so0qt`a!FNNyLzeI z+0yG4#Z3e5ufLwu_tXs*ehxwpu$bOh!IA+T)d`pOV*6UwP#EmO8n( zHman7%C#-7A|r zF20E^kE`0_Ebp}cMQqMq9!)MpPC#v%2auxb8$^q5=yurrq7FAMNscy+VoF!Uj-kg; z?*}FzWQ?s+Y^*wgBj3Uxao%AiXtN?Q3a{WJT7ms0B9X*p#slk-*$C=5M6QULPmc@y zp^Rt|Dc3nyXE@_4856txf?Jdr`s=h0Bt-GTKfmNE7Q&jgP<|O`i?-6x*-K zX=OTUQnfJ{I#HXTGxbKui;RYboQuY0PSaW6R>(TW5g9(+dK!mM*50>e%}Lu#rekT@ zZfQj`bz^iALz8Zhw$4e%jrP(pBcg|ed}zC~7VaDwx%u{bcUxXBCi^<89y;mDMO#1O z;>__b4NUBs+quE=dOd0OZq!>lFP`KkqKJ*19q$G?!oE;z*RPsk>TWQM@^*U+yH~bq zHIo^ypN3@I#Ori}4aMBiSTXy0@P#@AtTV!GAM9>j5z_1%6Y*W+eE_Mhtz+AZA${Et zu_x8qkRkR}C~*6tc|r^rJ&XEx(5c*Od)$OC=o;Z-6V=j(EH|iL_D_;K%3is1FndV` zF%VePhb=de>wrYNX}ZA;F*I_LPKJm3Zs+(KVrCS!*QaTh_UOr`$x>tnceHAIgU~y8 z3*0gUDez^|@QU@gZ!|jMZ`Rxa9#Y#i0XxQCMnlFPPGrok{VeJR<1d_ucyf%~ZQ_A@ zGr(T;qUJ#QrZ8l>ziSq@=OBmWpdwXwD&ob`;+{1L(q+j(Sg}d>Mp++`h!bHc2!VkV zCM_&c_^>Q_M5WGkv$9dzmPcB8)g&K zt5-Jn`QE_afM?K1%nZAKzQ?XZz_+Yoc>E|0JcaUJDp;?o5;a^LvTzrKJ zHb0O|MIa-Y_A3$S_LvH8wqoeBzcn`_OwBf>4Z<{c5+!^>{8G&7b>!H$9;_Wx;4e0( zFpe1F_BHZgTe%QwQWkr%c+~co=D(#AqA}Dc^>dS@OHxz5&6fNo14oZqqtT zw7S7=c@<$w3lB0O@S~kGf*2{Swf8b!ce9B;+K-C#zgvb$YO{lPhae|Kly(Ym-7W64 z(YH5xh^Ul$o>XrYUf}%!11m<FIO4ft`(7ZR6%+xJ}FEz94M+?z(fgyDF{U+BHsy zM~L0mjm`GlM8P}ij3n2Mk2Oy{&Thq}8+y`6LuPZw@G)P8xo^L@P9kP3Y(d;moXzjW z^=tW2u4=!am$kc>IPPPHs^Rgnt~9)$w;!6u%=c5#%>)ynaYNty|2-#AUtnFEr zJRdg~G{rk*6da@OJ^2c&jNJ>1jIcOiUa(VK!@6CCVE_zSjH*00an zZI`+1jh$)vPBv;te-qp=ly-}q@V0z z^z#GwV??KviY3z$_9b>pqE|9v@Ft|!m^ZT~vRAUL;4iA$Mr17FJr9(6rz;oFFSr)+ z@tn&SrG|0rZlBNTP5F+tD8T0Qdhd?yO{Amm*WS)jcA9|g!_)fts{wB)?(@Y%-as@R z4hGcS<_AZQdc98G-mL<`aQZtII^y3tmdwwlrQE()oGJrPeGww)$}AUS3j zmO3G7Vp1_Eo`pr`xapk%j?d{Bg2Ae&Eoa3^K!anV`(=C|k{AWk^9N7)T>hAE>Q1cD zn|hH;9C~PT@=WS)E1r1RBTrv*?90k`*?k|8@Pk??aQ9wUJmzv0eoPGA36>k^AHM3e zZm$n7jeEi|Z-o$RE&qI1<8=nHR-G7l2JZz_8t=tsG~nR92U#T3b0xP}4(gye`RE;uIG_NiJWb!{jyO0!OXQPt_wP6l>X$q&FQcJa7#5Y5GAtPVy8jXg zM2G5wK2Ip&@dZ+RP^~~9Hdr5u1_EiGQheCV490ll^(4YxFK5e#NS3mV_6hYNuQ#0V zc=g%(r(Qs=88TaIbigGxVNqnG5LHk z5$6j}*gfmMn|U-QH}ZeLdSe(>Hq?x;^K+%enSKYRPa)YRO)$M3k~_`P#NuSQS4 zq7Eak643(f;b5SsqDB^F1*rz*iJvJe?pTmU`U{Se4~H)~J~j$qhV4atDUpqYTz{V} zm!;6so>FSWA59j<)Za?prQihFZ?X=8{8RBDu`6>fM>G-|ON~tbug*d;lJz)Ld8SOI zCPKB-ajIjC76)Au#Y|j{%#JuBgOxxA|J3xDCx(r=*X~VxNjko@!e*wGdn4Foh0t)- zi5j78JOh$p9c+f|07&oJsF1(9(&=1*ptVo1z6D%dvp&st&A14^`~M;5j?LrO^mtP* z;41t<^kAX~BwIWKDNBICoNp%6Aa%1F<1}XwRrHHZ&-Qi-blQBA&qgso>OUiOmq-oih_QXS%jH*CX&pSz8P|| z_}f`v-(y%+GFF_ZA2?7?6epDgg}&iVf8~}!X>_zyxaHntqwFg;l1$Orx19w9sE!d% zde^F_kS(5GIbF=s8G_T{;SvWeXuUen^VLiitP$DZCZqzdfVIFfYjCzdL}LxgOifoqey~pdP%Y#i+86&$eBXL;)bXK} z>Go%>*HLqrCXE*}A%8Y==Pb$N)x)>V-kHhzLz&_@Kb0KZtC>_Pb9p2YMX?`=$J*@; za+Igg2W7Y0(I?5IZf7|ASNF(idI0Fcgt2B9SWJkqiAf- z=ab%8G8yw;8!)f`$}S?&>YkcNw|XY+%#LJ9pOQ)GH|c)6U0=NcsT42EN$wE%| zV>#6}SyURyj&f=H+wyBI3~5_i0*X@u_9_smzfXsA>q=E+v^d%OB+cPsZ=jI(&4_8z z6$oZ;x35Z6D^A+%9Ec1Z4Z8qo096>ppP3lKL;Wr`F-GbyWWe(IUk3O<36q~AxQ~}x z3aNC6yvbhggAbBA^)^Q+ohsCyeDcZF!RX9P^u6-KO3pkttdbOnNV+t|=MTMRGCwHL ziw7T+Ox}a}$=4hjot*5`m5eQe7^CWlyC1@V&lb-@RzjSfP!lPpqZu&65*P|ZDFYek z{yAAM+nHi8*8KMd9rDLUl;&ZTK=d@z zO*iGZ-3_m&N;pW>Tlcx$WY+kCltc75hpCa9?$tyL{Ms|!zho?H7lXmXkA{BqiaX}p z?{PjzokW*skrKS2i*~WZr`_uxz4aGPfBd$OojBrl-}THLnLDiZ5z&CwEBc-G`Q5mR zqA)7K1nHKg@ta;(pK)`~yK3EMYVW>9+S9o~WyQ?t+^yNu-6n-cbO8ZGysggwf27~1^Zxjd85>7H0j&YG( z#h=ZY>BwdMl^i#Ug$HZEtL!U3l^OMACrACcOeW_aoy_`14+Jt^zw%QfCzcKd(=lq~ z`2C&?+J_}8evR=Vwy-H)K~fazff=KU$m(w%xm&5bkKBa{pgNAb4&r2G`0@nMFDV_Z`f@tHSFFw=Hu3s3V)oJ+S7pmoO6T>^bRluvrIi& ziQPz0LCu8^%MWvn>o2L&`gZr`cC{je^1I!a96KR>@sJceHS7=+(ovF7&N!x(7y9Ks zMk`)Gbi-nG&t%e*NO+Qy_pEHctygac%Cq?s`V&*5twd{d z%7M;GRgSlsm(%9OzvD%{gK{j9@xdUwlZf}mrV$7Zjz>bTzc#?Rel>6;f8TxiBP%-S zUdP#U(M0H)_4$@vuX;V{T#Osy>6NUu=%#UjWC{p}_ZVF?Xbg*%iGC3-(@+&a(<2-jsUi2ctZIFC+0&OrqhC(4BG%A7!~oSyGDBk6Q)jg)>f_kpY(rG{s$8_+ z7AXCen7v+XaMQX9!mzP^nchFrXV#LIt!iVKZP{XvB8S}{s`sHCnSJ~a>uJ&KHlmT4 z9ms1RK>@dpn5-=kB~mSu%O7J^Qa_&>2_+^*Ly0dX6QR*+JT&r;$y&iz*<0|cPb9pB zy%k@f7FWs0&@JVW)(}}&T(v}IZ+W)^!YNA-<*8!q;c=rYRr%Md_}J}J^5O`k;`kFoxX?o z<8>U9MrQ5gjFQ4ghtPZVfUJp0xbJT1$&6g~%6qw}S$5ia+q-9GGA#}2@cs5Z#cm+k z`DzjwCZ*QXw&C1z7QuShB?L-)M2R{;DjgX-vgih zp|~kQI3M+S<)>a||0~50UO0Q8| zkcA5*Vzo*90G6U!YxO{WZn*omxDh%;`fFh3+6f>)Iw?uVlC6Z!FuBOeBo`p@xf=Q- zW_f{Li776d@qQ$C>-0<@G`>g1{WHJr3i+3L=kovI^sTuWzl(!>cK!Ni|^`diTEQ5*BVFr-<)$NMp@jxm``7yGY`3 z)25IdqkYrcUszpjtqAQ~LYS&E8qk@S;6VP5Lf0Y$X`x7zL=evG!D#;=ZiB-G*h0hO z+1L3*XP<|62~S}-i1mCRdMx6JWzC_Pg@qY&UN+{593$pqn|}!RCm(DDi&RyH+J1e- z99wlrh{s zkTM$_7XLni+9raR&s<7BT~?&U?W03I_x`ZZ=SKPI^rbT$?rV?32D{*p!X*INE)|)61_g zOtg}JnkP#%on6tr!TjB5O-98YDJxcVQb8$*FSP$vZR}dC_5yhy(T>z7>U+MlbNz<> z_He5p4z#rOkml*R#6KeXDl!(j5CdtPS{P@+ETFPr{pG*Z)mx~DRRQacte}71MaR=` z*rxIBhc2z9I~SHaG`$}9lch0`zodq>2j~{S%5)^FJZ@Pd##Ozym20iattT=}TZW%a93vLpXUojp$ zi;&YlaTa3&Eh5f%XVAWi_A$HHZxe|y!e{;{L#S@Lo@wun<^NCaq%g}|%oEl` zNi87y4@81LS>mLnr~@3XT@&-preq0` z^|YyTyIAWqDik36tS_2o%*{G9mz=j%Dg^dbTPi|UyLwe$yC!#OiTrNMZz5f_>zcFZ zAnc6|p*iD|_`dp-mcRGm<2pWY=fJB6UZ?MEB#L=kqNrw(vKLu@;<2=CM^XWmZ3am< zd%gN+WY|_~aouP&_ZCNUNXBWX`7Na!NwP=#0vV?>6YwcdJn4`< z7k+i^@74F!hp``lRu{W0_6M`oE=V5{@zCx^z2`qwef^$FVpt|0d02BzsNnfeZtfw^Pd#n*X6)aCfNyh>Ju1r?=KtTNhi9JWp$_)r+hAwR-m#+elPf-bZ!{`x4Ys zmH*^L;D3J_lP}g*CFgBhKdtIyO1;pq?s|=)=VUms#zd}vf=Z^^p8-i3U0bZ;EHAAA za>TR!ElVX!imntoBD=GQp*Z+B6&sQFd!><{Uapo8JCrl8@XKc6VdAIUjzoNjlcQ_o5 z5}W35=BQ-5jPhl3i(oOdFA!F@H5YEdgEN<#4mdp-xANyBV+#&7RjDszVu|rWd@vL7 z`ClIy2^+TwbYScv;ujEoUSc?G!#ne1f^+d+d5g&EVhR;k-Mg%4#ES=CJHEL&{#q*= z`i6X)&%bkOkK`-agQ#ifa$Vgc)SiqtH(pZbDCDwZ-%RQlwHqK|y=l@N?1CNr&MKN^ zAHpb^TfN-2*OJhhL-cEE7g>Y`g-xriPP<1pj<;Rdys*_Hg!|uS^(~HZUU5UL#{{*IO041?SU%5quzf zm7bk-b+Kz6=`N|RFJiy#aDh&1`}ZwI*ksTG3EH4uWe8x?%vTHWsGE^H`N-JmHA~d%~gOz=X}BW*bbCax!CHU&t;d>*H#Y7x z=blPM{n@~BGBPti9gGA*pZ=YEFc*5$ZON!F=O6Pfs7KsUPjvd8q39d@QCGm*1p3pJ0+?TMx0ZujD(FBf<3-Ba*+9m*9NSAOQhUP~*`DHgo6Y!&cmk>|+c%pcVS zcgB2@mSYBO7|$Z<;g8_&oaV-oMc7>+Q%NrLVUuhm@XAEk6da zw2Vt6AkhP|Y08E<=7#e(G@by}Okjb`ieAaizNLvMrjt!~ugpvwICbg(V5v0u(@hq2 zo=Kvv+DG-XN^1*9dg|8XboxT)LV7xR>tFRwy!(mnm+dn-pP?4IuV}V*oL51K4wYQ=_6>0LnINp2NZFWZ1V2aaE8SNOy1YsLD{cDO z_*dk>Vpi7SKS7<{hRLy~{iuqQ;$}<2H@7Kus4+Foyy#P#Z*K%K(v`Rx_;43Y(Q zJu&l)$UZ+Ls|z={(Fc#}jkB>}{NduZl>EDFIqG*^sZjT)LrJ$ox$9%jiKz?;xa$?? zSlz82c*K|Wzs|1`S^wFyfoxno5(+C74tl-sDb&vt9fN)%sr^Mq@l3t&9?vrue7+0* zY(n|(xWku#ZwO!O&20{eeVX<`Uo=k>m%L#o#|DFWM8jMnBB}t_K|VCnwHoN#PVPVc zpnt_TwKU~hAwScO4`#DeYkj-T9>+bmNY;^C?&*H1_xAUC`A5vSZ6IF=$J7#r9U3cs z8L4X5+2xM}5n;;!W=q%kzv!o-VcFM(XEG~U(Qf2FOoKApE3I}~Z#9(0yWUS=@eY#} zLVHO@b}BY%Rl{gekNV*;?Uj`)SJrzG=_Ugh1FY%cAMk79w^d_KT~%{FDT#p9TKj)% zULZ4b`-}T|QLEj*`yujlstC`z5C0Ezv`#c@O=@6LW@n=6)LuFLq$g_oqZ7^zk3d{; z&YRcd{Mszp+$TgZAqOJT3lDia;lgC%P8YKt_u-Fvvc}7H6KzulN+oW-aP2P6y>8yin_aisIIWi6?aqOB;>qgw>05&ytAW_Pmo-|;($iUMLrMj8tbzs~X*9L5T?CB{y)b5;y}Ns*wW>O+geMWQU%&eUA9%;b&CQE) zImS`*pbechjm%+&;Ru73q+~LKBBhNq>X$XiUQWMbqF!07)F<9S-A97$VJ(UJOO%)E zytKJ#uXU+kC|TIB2HpIMUe6eI4U%P;BC*~Z-{I3vH}vjzlQYxjbMLy}C!8wK4k*`< zI~WM);W6@=!ODb?r37V#oS3yW37dhKbVq`WG>L!H#xQXD@@0^$gH-7mXpUq9Wm?2}1k%!;?&rgv11{GA zPxz^jXTjxK@Pq~jM@L^b)*3x}bhJftrMuwZc z!aZU^TJCQZW0AplJeP*U1U*Fia1|+tkF>r)vxl@eos24=16;EZC&@<`S#i-9JGtu)CJ+qfs$w{wb z_H}KlcO5c_h2Ew*Zu|54v081{B7_O9SHA-3jU*rPR%5Xm4{cC~bQ;`*n5bIJ2 zP5X5!%)`rt*L12#O>typ6@_?rQjGdFWP?gml zQe4`6X5gNI2L>Jyo(!$gL>eKcJzBc6<>ZpN?8Mw4koQ#KpbqC z^b{mdk{=2lu0h+?3hB6X-`M3yV@a@Cr;P!TEscF|m9EmOO{^$-wlQS%;;^?8ssQDM{|xGX;rCZM5+~=10mv>)k+|a zdDA=M&Z0b^VtA__M0wT@X~G@Y1|-82x2a?oxw|B{!?aJD$aoXMQNE5is@_W^IgB`- zbVN*I$Du6$hD^T48y((j6`(OM*DT&pkJ9BNE}iOV!J-9*t7 z2Z*keO(_-CsMnW6{#ZE%n}Riw(QvI?FY|Y~&+71eYuO(vmvyRUoT>O+8st#gncNQ6 zVB}BX4<>S#`J^_FCj6>rTYuv)dBr8Y@vxGL=4t@%0fn4G{%UFJfbk@lOt$I7;c#Iz zeAvg%(7}CiV5(I0hlU2h3{zR`9#dG%cQ`y+2pvhJsc35RNYP0E4`|bbtvWVE7UtfV zDu{sa>YWnUL=*3RNwR@*P@-vjr>IX6U1dqdD1$SH1bdH6oJy2(lA)clDj-qOSVDnq zK-!49uarAHZlq<@&AR`@J|jmLr{kp@c>eLyly@pb!Ev3N?W;ZQbMj8hcO-2$NHCEO zjv^bpnw2RFLvldwdKELgs2hU78A)RamOaY2$ni3n50Z6(4-z)I>l@i`FAopbE2UEX z-&wDpH?Ots=fN}eHtn{>gYArr(U9`TKKC~y#T%gL-%AFq zBRTPGU}hxkezJN(ZyOd`$Cmk5wOl6lOQTM+eoSb;Y_?fAJyM^}>?auH)li5!ENt=J zHJQz;NEZkJYwce9rEbWWjxA+lrW62sds7%EL`JGh%fZ4DL7Iaj8q#B#ux>5SiWs_$ zUEhCvs@a@6?$0F%o%JM#ELv1UNe_XvkeeDR#wMl=HBC*#ibGKDRh1hJ{nGmSFNH?Q zL@_%ai_VYE8fu&!osY)GXYWJlo46%c8+z4(F`6vAYN(dGW#aS&nFrez^8w5EFanPe z5kt5?&g^DpjyhP9hZRPco@f0?vu!U#;^^F|)O70991QT(q1kNlaxpu5=oI3M_$bD6 z*UGEG;A(m6_@jll2KN>UdxLK+JbJvRdl`HGO|AWEz$`KI+-LAf_aQUYyL+n(Pr^1` znQOn2-LS_7Wb|)xr~3_$($6=&>!XH8>1RuRGB*3Mo)mJ3HGZ7To6GPkD6AsJ1Jc>1 zA?`FzX@aDU>;y{}6QWy7Cy0t7e^|1J5m!WHF%O|sg&ZY$Arm>2x7JH7NhgI>2})Jx zwzgUb@mol__8+hUQUnl+U2nHC3DExF{S#Nn9=e*TrQ!D?UfBP1tpj5-BG;d`8Nppx zkJ`z`p0bfCd&LgpEfeuJPFbBKnOQ_jU=HlxWze~(an!JXM6oim^QBjCsp(%80I%s$8;V{q~BvXA<$2d*Ztj0i@08>Uj6tH@fA{dsc`nvwkG;86ypKb*1|++c#Ct zoj2`kGX^d=13yCM*CLU)KG`yQE%-mTFJrxx&i8s?4}uv3=?BuOgv`h#t!THg`g7iL zt?YfydfAffj|^W9gQKm-ujutC`9lXPVqMe7h3nps5Q>EI#+=sK@uFbJn-Bu)FtOw1 z3*9SpSM#qIb)1Xjq$aU6{Fbe!s-rm&3dIPLHi~Iosb4R>@ObIY7bFRNK7FEoH>XF2&z~7w30@Uum&x%WbvMjO)S89 zk!2ccUDAam!rhCJIKJR7{z&yt0)hWKpnU2=BJ#4>0eNbF=+v)}S=KE&z2RA+vxyB% zqkhEy)cYSt!|MH)Xd$){{b-eM@=vvF_nW+?`_EFB`#-JWTi!ca&O03EzsV*Z@a6Nl%&J+(Z04_#cf9`Fv})Vuoj7s-W1^z^f)2i1)eJ(5 zg(}lZn~c{2&CxWn1$AIVlbbKxLRPI$G(O zP`};q6{7VdgzX5@vRR;NJDVp zLhW4RSh)1h@o**m8b@Z~T;q5+-u>)@ky5CVRu5$sR#l|8PTq$dYTmN0use;i`6LDT>U>mujn&O+{vpXHUzrN(58x zcEDLEAIe2i*%B&(E_>_1+d|o*OeFHZlwVt>Jh#u4J)d>?JdRW_5=}=UFJy;Qxa3-a z-EtX*+!1`ON<>M2oCQU1O3fx?nP@5&$wuCsNI20EoRJ7u@*j?+Bhd^lUz^shsJie| zeB&a)iipdi!q%#OytG_jep7ZXao>S*GkfRe9~USndos4rQt9L!oBZCk8Gp#KbsCC8 zlMt>d7VaXl#;-Nbojyn%6FQaztefzP}(@&R^7`MsAVHP>9+H%qQ2?fu0ObeXI$#V@n1z zY`>-kHuKexIfi{S=S6nPHU#0=l%XJwX$&!iwQn;@)ed9=i?MKH+2L4j5Ushm`}0eN zYu+c{hvSW4I@s{VJdI_r9sQr*swWU=M!!w5KZ>(26OFBR;hEHEKM+8SHC|#0$?eGD z{B3R0fKgNF0y%b6ZFD_LC64;1R)w zivtG|WA+eEx8IF=dIset%S&sS>}@6;!oGI7R5*3^RH0OEf3_5@PFAC(^x~04vLwki zG~Iy>`Q=G%R?4N~P>B;O?j%VF!2SSnFe$srvQ`ZxQDu}Ou5)^1Qs za67@BGSvjX=<`l^JYRgVPsPQCwD<+Dx8n1Ckxesc=g5%~IhIT+dx~Ii#PWun8l(i~ z9{}e_YE*T?_B2qVb|mKNTDt}K3ec`RTW!RjAis~W=RqhMO=j^*q&qB|)x+36xS|G> zwf^^Z`{N(4aX|vzzhV_rY02e29y|2N`T8HoTZ50VuIqsd(^5Rr0&AmK*6s$T)AjPx zI~oZj29MT`mfCA}Loh!|u7NynR;$!@V?l{Hyt-=EC(m_T*jDY8)zuXoH988cX(Z;` z9;Wl=nzBZ*JSF9t&<&uUwY9Tv-V=QSm%`fGeU1J1e87ye47NTO$w;?ApUtwyF`&}c zkN#$DO?(m75BIdz)>=JWz`s!2LE;H#*+I#MN6LC(;8LY}%GCiFx z#}lcO<#Z+)^tmFz=)_=9g|dDXADoDWB5wc71Tfpb+-rr5*uIm2O{m$9Wk%8zNgpGk z&irq`;(3}^Tf!9}Ser$pF&Tn5w8al|J;qV|xqI=%Sang8uo~g%B1f<_H0CYA0TEmT z3p`rDY5~$uG>A5xTWHFYXc+QnuTpOglVTSuBGR3ynkMOdIoR+gZx1AoX22J2A>m;?B7D<*#pkeY0cmPOKi*_q7*w zoj)gQXOuY=FcHz7eR?vKX(`Yt0qhhr{;`CkpO2|lO9edLEmAdLX@~~iDHZ69|Mh>slV8uCZ|XWtfR=Tjl#oitQ6-TP z>jkSH)*`^F7#(aI$=1ZS8c;Qbj1y7yY^XdJI zOUv$5Br{z)FudYiC{+uEmrYE5A1{n(A2SOGnN;JEshJ?jWgs!JsAVavpe=jDIKSW% z?KYOZ-g^Yj+nU9h_+WMB2pLD)z|`!|haG&jWH`y~5~Yttb{?A}al5o;Mb1pN0jy|@ zeQ1JmRo;1!E)PFEbLh|vrMevVe0O4cFuzcD50zr^(vSyi%45eKe&`OmJ={Y z_Ya2Lb$9%p=}Ia0&QfI>pSh+t$txiD&5K7cNsyHopY*~Y0XqAhtQKtf2=t6HJdx5_ z%{EEa@{+15rydnj-)xDqx-QOZ+)or9-LAaQy{b=KyUM7f)3DJNcwD2~UFN=SGyt6! z7mIjP3NYweTw<}zf}w(lWNfu`mR64r(*xHd(-Xt_x4DOg6Rx?3b>Fd89-6r{RGA*U zqfS16_(!FSLzf;tW`0o)~lJ#Z!E4!!kR|;Zq7nD3kd3Wa_eZw_?7m>vT zu}?kx$423!|K0z&DSD+Mj;bvsVbbZ-7bbUhosnRqY*|V6?I81O`;i7@i?PLvw0SFL zVr>C2zC)~?I?J{=t=Z`GLwzNlZ60i9;>qcK)6wzjcr>0}$^~k57>@<7_@DLqnObcb zf%RBCo5^HJa+Mg1@-LprTw?QvWy!g)uZzN1MU9ia%i3RQaC406m@FxZEzj}AThF)fbJ}(R8B37@%6MIS z=x5QYk-!$QXBx#v-@*O|Y*m;#uBC7&v8a2&lvg)iAl)kU~Ws0{nprs$EtH zTC#G8XTfx%U$G--3G`5AvOX22?%&|PNXC;4y1ni<)+a_E^X(PMv_%EVkpJSEJh#=d z(F?l2|C&1TWUElD74xJ1kYna`w?)64sf+txsxI?VzswVon%Pf&L;achc`Pb}+H*Pp zp3X}YrC1}_48XEtq(DwF^OUtG%!>l1J{n%0n7BQB&!I!-B4;KhmgU`3%ocf4tVoZK zf1~sb^}cfx%gYnz!iSb3_e?CGnK&0&I<#zMQ&}?%yv2D|dl);R85feh<~OWquKZkSYWnR{QziUH{35(mn)(ZD zS7Z{0W7pu<)*dH#nTlXvAs;pu_I>W&Apa$yBP>^u17OP4=7jit(THR%kAZ1vF8*R^ zXwb8_tsXjaSzW$-<{{PI>lqv>4UNy%X2&0s-67yVch3I|M`r5jyWSM5pQ!T}d(&O% z`ph^d4ti@f@8AO{JqW8Vi${z8AbS$Kl-SJr9U?MD^Q11DroObUZX&Eq5B(SD*-8K8 zF*W;30F!oXLp91Z9y(N+eddZ7{fr&pDt-1q4^m}bJG|5Qc-h9UUfslxyaxIm_w!>v zvGMAayYF5(XVdkjx`uw}N7@{cjJ=5Wx)wBZM~Q2vMAD;;nnFPYhckA34i+9d{K)$q>h6phcorjE*6)9obGp~e>)+a6 z+wIv>|4e%%j2x%R&PpY?pd{EJ(4Dt0 z=jqM+oa*i$Uo6d--gnb357t!C|I;#*{o$7j=si#!VD zn!s`KAIhktDfJ?f4xkY%1}%T+GU|41eDI~gah-ybCBHQ|{*ub2MF(&3^b%j;3I)@G zBMg)n?`5~!EkCn^atp1?Xt>#!B=?cMTvzF3-)!kWVDfCm7Km1*1-k>b(Q@43%dp1g z7wAV^RswS-|5=1APG%9S9<}na;wt5x`h}IDV@HNojtr9_N#`^ge(|8I(QqEn&tpTt zG1^0&>LQu}CoEPU9BPe^9UU4vIyTU2ui0F2)7u2fGU3mBncchy>nI z0{AM0?z;DNE_b^BAqn%G;ITzk;MqqI0BUK^>iJzzmcHh2uZuVn)9(wz+@R8u$h0)PHpHSghIk*qQ zguRCA?2ot$sNrRBY$nKnwoj`yD``RT@N~Z#^v##;i@PQzb1hG1j zV@7b4)5<-q*sUacG6#VW%nLCR+PO5o=AzcS}Bz1 z{<7S)-5wmDh-O=48!T=h+O0)CYWIu#nEAY-KFye?Bz`|BCSwUwNg^quonU!GX5P?Yj1|#^~DZvW(ZG zf@(BVIy&L5O6lLMB`=9DOYd#-*`Ee?Q7DYgNOl1|yS2y9WLv|7i;0pa5mYI1qmCCJ zUsiX7NAvm70wvf{rR(E|9=|JDR5Q8ch?k;%#nd|(&1Jo2w~#e97$fGUqPKF1q|`T) zT~!UN`Ohw`t!+9k-b?z?&Etz})e>9u@==~kj9}{~a8L1JeDlA0S;qD^i zGQkLfbi|41w@)-hU|73?mWkp6Gj(t_-ENl`AW&0b+3MRa$w+Pj&o9 zM`6NP*IBnBFL~JKq=rYH^)ZgDJ!#ojdR|;XlEGHlqlK%2+!RqkKaAcu-+xG}Q;4OU zAm}r}!}Y(mGxd-nKo_urIG5A_7(=|V@}BKT6cy5iP&TXYg##LVn2~SgUw6}-DeukC zc>_33&i%a)N&BFM;#`KpX`|q{C0%4l?e6l;=i2wlZ;s?QwtY$7jSxw0Wm(*`X;t<^7UcpQ5I2sX7;&woN<-sO8a z1t{DAzX3KU2thi(MecmQCqxYdT}Qr`C(gwJCF7*yf35yWE+pGYZoQ^yXy3!~wKElV zIF0U-^sh0$D$HE}N!#rA95Mg6vH5r7)5KGb{vtFK);VnK5w`Qz3I+8djps$IoVTEa z{S=e52}!+Ri6OkfT5i8goHI6iwx@~+G9$k z!>sMiZc9=*Zf>q=rQYBlg%=sWrLm2gwToPBnL^Q;1#6MjYZ$S9*JmjgE8hz#vu*2# zlQ*Jl%7buhEe;_(Atl}T{aY{(@K3M98jN~7?+92a{S%%x^ilD5fGoldv}FigFtV48 zjl$TCBrmmz;zawtt``z^Nvi~7(BCpz(5_|3Y_{5Wb6H|r@C1*gYj=>LC5MDHLO0>M z?5i>!$aC5_=EXj0-t|V#8l|c=Lf5h6_3fcr$6L@FK0Qn_NV~YSWRze`tnq=b*+bT5 zh+rTxJVK|NNIAl@{p`($$b)fu;1043TDwP;g7-+$yY~>QH-}IRgbvWmt=`nxT*j(y zyOT3m8f5M<%VAHKO(u3|Gw&+a59;Qu0S(LOejTa>X6qP; z`!i&o=urc0m)4S0)LXU4*Y2RK*(#z*)9M+gqRkEwtfl)WbEe@&eWd+2byp3$#0QJ% z?pLKJzg7Qt@=~b>T$6+9N96s9&M*5zGryfq$6|)eZ6dGLT@$|UzM`lQrhoKo(ixa6 z8eOSF7xU9X?a^=AQ)$^px9NOryJvkgX3;q;2U-^nbUnQTx#sVBn%7~MT5r*Ng}t6$ z={{oO(tu2F^}74q(JVFXzw2&xb$@9;fBJiPR?u2&h9_<3F_$%W2l#Y7hc-sW=1Y(+ z>YK%2)z3`I?o&_N9l{?V${o>6Mb zjrZPgmU0LDDNGhSyp?A!16@Ark%PVX6?XY6KQ z$hKqj0NLC3>pZ4ZX7oy`49|>?b)pXv?d0X-#8Js3R^??8{4>w=LE@iu?!KtX><$C( znFQ5Ss_b%>oSsT3>`|U29+4mwvP(`ES@Nx~f)VShaLE3u(&y&>g0XgPdVM*UXWp%% zemA-J_PG5~<(~Jra=wWE!sFQf!r{?h{8GPDe9Z!J>h+@i2NK5`Vh@u2NA`6aCyF0I z_IM)=H0J9>`=8Ok{l)KH*i;u~EwcBoaaf@A=N7MBzNiRk)%H{X5zxL4hw0?w zpLRIb6Ag)7Qszw~@hLUFFh2g6ioVJl^S&xB+VP;*cVCQiVy_}U;ut(d+fs}^L%WQ| zWRw_7eNh|RiVJ$Kmiad513I~c%NrF%f|naCVazPH*0Z@ua@e&sM|;asdse83n|SMO zj~zSq*llk$I*{N9HW=xo)`7SbOCKYOSZsv{Fg~K=au*ANAtn|B!7!>geKi^5$cHoj z)td2-f-kh(BpYb+lBH*A>Gx3ZisMH$ymcyxx9Jd^xW~Fm4kei)CANe!0{6f8&QeDnzQT&?Y!N%YQOhiy!;IYNyHE4=YMNESI$d50d&*#_g9sXqLlb4_VYg?J_r$hJh2F=pFZRpP4pnay#*4H;^saLOU!9Cbk4huz#;i|4P zvTLI)b|dY1wO>Wo6K^b%K`yav!@a8Gtv9yK4Wh&k+?HinK@s5saaVL1F&b>{RBvibuuYIj0%cvvG*nM7;OLE;# zy=v)$@?PMSBJ9o_Ob1^ubH0CkJiFeD@afu2Q19u@My!KGNT75U62~5zEwy~ zsn$rlo*lyG81dzgZNKgQt(qvM#(aKfARBQEIf8ythz(Z~Wq;He_6Fn1IqD4glVkSS zOMhzg=T(dj4oILYrqQ|!l7$Zg2KW})QU%ju^?{Ra*m>#+rLvxqL(3i2Me2!700G&f z0=`(R98da!^Cj?4vqOV3j*vebE8&$$1}mk^-urGm6u&q)9uLM3oT(tBSZ^Lu!*O3g zIZKXcz!P+aeM7NwF`x4L9eKtm;3MIFDNz`G@y5dw8gC>jXAW?!-W!>J=52FT{iJN-AZIv9A0zKxKYHYe$KPDm z&%cvwCY3W5=Wx^SjLD^jeB8h{l(b$0&KOWV<YTjwuIts7 zWBeTk0orJ8-vKF^GHCW)G!C?LHm(Zh;@v-cL8y30y49l08viD*~Z{&|zQ;6H?R>%S}V%ZUYb7@0{ucJNs;{k$vHIHD)>^TH0Nz4m_gs3jkLPdz$W9iU*%j=C2;GqqqXl#03!gp;9&5=AQ#N`?=(qp1+z%y<^v zMo1}zZ%dyG!e59pkJOiL|6YBDqzqs~PhZZt ztz;&9U^4e7!Ps;$vLnG%QVoR@8K*B(^z7Mt$71B%zFUtaQt899bA!Xv)mvNMQwQV6 zZmm^3YOs>bjR%K>H_PU$TAC;AW3}kj(C@cD!phMmNut?w4h^v=Xy22`wz3BHR&{dU z<^|_^_s=ta!jC1bCFV(gsMYPXLJ}P-`2oyxi#S~a+{GFxS#)c7kZ6XnHD6&}7+D=D zP3kO(bHa)G<(B9J+(Fqf#C*xX(cNgAS#C6z&or=Ccd+3P)M{7GoZ-)4SpQUgOMRBk zxsf$>^`;~cV6af4NFYsC$*aB(;5WWuxl4LJ{U1-AJbB7{Bszbrb-Z!wY$Oj}}S9@*(7i-~>}S;(%>qdnAmU?%7f zM4T$Je;nAxo(YP3M)&3`;dnF_hqT-U#K9z zS{H|$kS{s~Yw@ZY)PAo5I*hDQ!GB4;Ot`94^hCe{Nj2Z_$P;S3ytR&a(}?X2&I0i3 z`NwaT5b1KEfV;V;Ivog>+>1$%XF3_2bU0F>8IRxP@=vKmLOFldIXqi-P0Ufo)8lyl zXFQ&t`J9TZ|CDn{sn@*QKyhIGkTd4e~B#WEJArv1jLO;2pSf-NA|T@v}4za%;GG)v5-^r7Bo>y)HQ5j0D= zNwHP@qj~vp^P<+q2UBHVB$sJq_{&9n<&;L=jCkUO{sZ<&g}7%Vy=~ku(ff%|_ljIQ zA#2;n4x7-YMETSPT6juKJ`lYVLxHBN$Oh6$yGy;kxqBy=xE5hRB}q$T21B~OD-zb~ znN>##q?l|Exn%wR`(ZxG9M~gioHh=n%id?b<+K>4dT(o{>DLC#tNrCyPThb1sa)bK z-m*C^q-W-LoxM%45JS4kf;~Axd8{?2nRK$Y>Bx>>f{$9pGj2_iqoOfOnP+23eHTH} zI#N2fDIMVNvb6>3jSyh5j&{e#xeWlf+axwbiA66m-m)5+?6kmC#HKG8I*h~`NU!nV zd=@~qaP~A>qTPJt#2+aR2V=BC3faY28{EELDkaYG>iU>F9pS6ms%flC9j$*5dVJp(xG#v-;okth@Gl7u!z&x?ukid1wK%HH!cMzK))hJ$4^L zrG!gD9Bza+$q^ttOpLI)kZL0Gn@{^n$%C^~gCm3osY2Epj(dkj9B)&zBSYSJ$U~rC zs8GZZml*QB?fcY+O{-!d2#9n1NLETk58W|!{_Vdzb;l5;pFM;OmP?ZWmf%OkhZvu) zpsK~Tf`z7nA!y!7sj23?`t>j0S$h11?oUom?wx#M&l6L*xBcpu?AxN@~gXi>h^B?}Y9@ z@cuhi&C%~N5zn_|l)$SK2YQAszJ{SAh*t_$e%r)LT{HBk5H~!}5o_q7VE7ghjjNLu<`O-Uvwmy^n zO!w>6s-77b|0NQpy+($5)h0(hK_u-~|8Les+OJ@YodJj_(M9hc zd&_f6OV7P!?Cja~N5UWZNcfR;IbZChW-a^0dJ9HW(Dh=x=wG7e&!5koeQfXE$Ic$> zTYas?#W$SvJ$%7`@~<6lKW~3w+rNZAxTWP439QOm4FPYe2F71=Yx)DGHSd4_*jxY8 zitot%zi8S->vpt>-wUrtv9j8gHF2NgkJF($e~b>fKV!7~@muJa=O^e`n)F=si!qZn z7++HF=l$(Co4)lm<2xJkwtWvA_N}b=4nNS>ATDM0MY-Onj+YdT36f-xphGd^;8^JWZ}o=rfk0?5J{pOPj(Y!8ky?(w2eYGD{%mzgwNH+smlvE1{Bn9!oe9j``(*dK z?m!{u33?-AW06SovjmXv+iYBZ2t0SYKVoOeYfm8TSWt~*0mVT@FXkn7N&w$Tct-G6 z>4W!pTi&TM*-?)89_~EsJF-%q;>bOBz3N@>`s%yhmG$0pkOSXo9lh_qqu-G;58R`k zmT$iLE^AIC*MqjPiura7^X*!zc2$hG5+AW9(`I;;(7l`&V5G70I=$H>FT_i=RAVqFUaMaJs>lvgL7mD2?AJ@gsPq^7eIO96P!D_7R8-BNr zzQf6E*?BsuC9_i@qSK^3MT@cLOMK5xZLtfmNl@5oy~Ojayoql zz#$?0ElR?y;x_Aau4vuIo_Db+8YHsD#mOZkj7&TnsJC1hU0vsXo{y_GC3Dj0i;^C& z)*=sE>+;IwO%0IGq+97stJQr8^*W>RO@_}ok!huZs^k$mEBcG*&!Bep`D4F)=8u&D=rmVGW zJ!OOXIwo&x9$i}dir`rWJt8it-iIWHJE(eIr~egpMg)6jb+v3F-QKslx@_K^6PXm( zsTwGY4t!y2^{N#&^-S-bI_el%d||jQ#gyyAFD#BgCKe5KnT-iX9b2l9CISbhzr`$~ zqX_Ie&4~F5BnuXyR-x(&xW_SfTgS(48ymlMtoP=l`TS!UESLTt$-UvJLVoPFpMii-lv?q; za#o!Dwakmk$2XMcbkXe#dD^3=KM>^W_t~-~I;*wM+xXKaw16#4)|C~p3o*zdzEnPcxh$GmLUJcI3@(l6UaPCLt&CqZ1Ej7e@?Q- z_~#g7r^N3h8Cl~oMtrI=*kUrxq<&)WX8K}+3YW(ZluF-utQ;-PiiHM&VpKO_moVT2LHOG(}-rV6C@(<(Zwvlk*swR@i=D0ied zyk{PAN4&af#pzmyl-#Qs}VG5a~Hl@zmc_K}TFt1}ayF4k^|Oh#XQc>Hkozt&qk&-Wb_PJHcO z=;tc^tO~8+Z-tVuF6*9EE6^4lwQmccM*^hr9$*^c6t&TrNu;7>(s~wh-TyeJU%3It zzU1@eGjql6&%G<38TOG$RoYT!Fy?4OdS1Vnrj(0cayuuz;klwZJHu<4K{4w_^h}9I zA5bI65`7U&Q!tmOKbuAP+kuXr<Co_!cJsSPW&yJr%0Y`$8`=zC!s1Ujm;IR1A>FjJT9EfIN%JAzFuy zVDG0N^_%I*w9ij9fb036;RG3tSMxOj#sKY+ ze^3-nKnmCUhpg%Cd`7P3u*T!6WCv0ZSu{t&j3Oot0}6 zoFFttD1$s{Zm=mQDI`-pIt&n0xgn#pA)~d?(sQHvgXqb2+pM{zOa?u8aK#RR(6_M2VO}aeXq*=J z6fuI^LKl*s#tZ;1aQWY*@BCd^F~H6i;vPYCa1Q>Vp~$}#Eq2Jdv*@D#-q>wmwj$&A z-CaD|lJQQWU8;P;ef2v00rw_I@CV#mFmX~XMDm1_kw&&^42taAjDa2Y(G=F!>pl1W z)gIKl*;E9uY@2$m&eQ*m9^$*X|IKDjTGopm1G;YSF`{z_Ruqjy@-@poBc44SDXYOi zuwV02Ynx%V;p#fSt<1H|y$q%7rJL~OO})pUAj=h<%usUoRX^MPHMRKE$_m-5v@uK@ zyD*ADD&188x0uPgV#4QD@w)5UChwM9+m^xQ2Er}-n!Tx7&zmGO&vv&^+_S2lVGk?G zE!vi>tzJ^4O!uNbo>A)=n3TvpM#u3<^|z!kHl#f6s^G#QixeC~m#@8KuC7jze*v}_ z+6;|{)=9)*@*cc)lf=F23664*4rm_q|I+p*aE{#dooN57B$e*FbhNs4v|3WPs;_Ca zT64GNp7C5B+iD-OvrFXn{r>+|YV~-W5I&zb)2c&Ns`?+l|L;Davt#^e60^-H zKIrYpS1IN;Ec%u9DkTV=VCYNA8ep(eAPpOEZ)$-KgBw=oq76n19G2Yn=s`~d#+!TJ zNQJuHP)f`L`u;EV?Lyx2e%x!FQfFk#oS&{JS!Yv3Kl7QWprJOAS+@lsD91;}SL_ox zzjD2-LK2jDk`qb;lT1ONgP2U0a|+0<2E4D}Bac#=wbqj=ZG;E}MQ9~B9$J$Lje|$b z4+Mixm~R2>$OIoPj2;pkuLa`}tib?hQXjxKPnbVs&;9nCV3M}qtIBoS@1+=&KvoCm zmG{fB#}vq!2wwT(T7P!rT;YnGx!#Xm`NA6BvrUKDKf6N5Kk_a|QTgicd~^P({Cd8V z{|DaP%0HQJ=a)$%xrS6<(?he;TZJMIkSx|D5Fua%>mNWPIS+h?E4U71gzs<#7}_y` zZSA|@otpAq*jMi#)F<~Clat1tN$2384Kr&y@8b_{-*F>DX@OZ}tO;!DM%T1Njm$R(CpxH>hgFm|+lSAV6X`>Dz1~ zgxg795nof0`Et7sI)Q{Y;5@ej8c@w##`Sai(@Y_Nk1dn`24d_@jD)sW1>D06t+JRx z0xoD>!{VEsPoQ$n@7*5Jplu08U3-n}9hUB$zw4*nx~n_lihAGSj>LQ49St9vbO8*v zaWlu*#-vSK20*|gC=hS~vR_dGpaEQ==hdrn@nm35K{7OwVhe^qEU~Q311bJLy-jf{ zs3F!DQAtjf*b40>sH;u$xL5Dl`Ifj;J6)yj2`@yRjO*UnL9wWH`lA7+F&AILywDm7 zy#>~(G~@xLL6)*p_4jo_eFzqp=4+W;72z9`rEIn`BNNO1Gut$3LvAN`Fe_7mio}7G z(C$J$*(uvFYFlg_xPV*)K0c1V55eP9bn0STtDQ$4IeWGW1#7qa*57)6{bAm^y|$B}_)v~;`@RsdyASDOC2d@-rTkYU7EK)!s@fkx+matL*m82_Frr^GHFtf;m`+oTHS~L5g z8KlPdcQ2;y@8!GBAuTztEHeguo7SsV&>lYcaw3Wv zbP#;I`}$T$kI5%Oy9#z2Dx*`r3A9U`8fXdZ-#?ps%rc~^=Lrc=l!(< z|0^4>L!ZViPPE>~15sVv3mjsPJLTCD^lGSY%5-a_D$dXjsBLM5qm~7eSmLNx%g`7j zmjhCtTNq+!PvOvIVxV!B>eW-3pNHy?!bl?ByP8g9_fZgHT4r`O zbE5ax`xik44xBj<$EEqh1^yDb8_n^wHeME)$D^^)m^P9ViN|0eO?@)|`OJxj_booK z&;6CmtOG}@7}xkv5j-85CEHD_1_zjSSn#JZa0*Mj+4ovRZA&hrWa{nxob9%6Vs0vO zm8 zeo>9c17wd9V)%C~+Oa(2ws*-5nkv;K(PO)y3t?&mtDZP$rIVJOqV!cdunK|zoliPZ z?<5J6T!WjoUJ5}Fh#9anatq+JnX$x3nqatFN|C+>fng(Lx)14qyB{@u=^ult6h4MS z;oudo7l3$K*TcT_`+{*~vA5yfd3H`(=U~s$IU{&M4U3wH1+{%yc@*Xb=yKqJxwgDc zG8g=@w9oue9O;MLW@zIpOTU`A2X6wE8)BN#;QP|Pu;((s-|M{+3|ni~iCMXRC4ODU zk?c>G2Ol}k3*8)Qj74cNH6}~Cf`ouKVK>FMf6^b-cOmxRQOsv-#TWn1_F-6E+Y0y| zcYENPb=2)QVz2Xs-y4cA?>H0k4ts1_KhH-FV%x^fAPV{?LINbnfLPLJQ97oAYMwcB zCVk>!sdVwgQ<=CDl!<+nqAH%bYuB#Z_quPp&Am5*sisa6vm$+{22Sj8=etLgJ)(j) zP&W-#;{m`9*ECuIDSZ?pkJScUEz)f}!jV|N(W_7EhZhg)8<&!~+(a(7@#?RCB!hp^ z2Xm7-{Mq_)RY#D%q0kyI&lT3N{Ji>5Ad{$!WrB0Rc|5L9r1Sq6H(37%B z7q|!X9X4MkTX_pWNS_8{8_wK-%b#;XP#>1|NHPQVX_Z^aZTAz+~@ zRcc^##n1rXznl+8^VtJqsxlO|sTW~qLH=s(w)WC(NZPxEn*)VtxR6YvY_z&-Ocw z!iz38c3l$S$3$RDR?T;iQ0k=DVo!^}d6evsoJQJ)XVj$>gTY=(y6_6Kz% z=nbS|0dFLk{or`&_W?A(@c^FRz?du!y^#=s-n!IS+^Dn2k0D29p++jI*VK5R;Lkw~ z_|3p*GVKCKa_8Ux3y5EH$A+T;v_?2x4=yMzJKBn)Vx8LI~a)?5L|u!L^k3L z`P|94FYNb}-2SLPX}a;ocrNDmCr08vX?p`N2%1PZHo%pWmdvYlv;biVJ{-~_H4kMW zSRUYbz%SETB6TmMDL}R~T>&Q{ngD>B{Cer7+`fW9m5BYb&Dy7xp z2mX!G5YSg(O0b1LiAH0)F04ovW)%=JR1ii!~sKWIa!El-$@Dpj*(H(rU{%q>}d zK`nF;0;{+XJ&M$Nz_ZB|g!n?!e3q2pwc%w%A6wn^y92prx2Ea8YGOPS zf7WawS2qR-q=CPO1Lr7RT@WH%$+?`{@uNPCvS2NO9oE4#^lzCVSx`z5B=1)&lDz|) zhp2zB3M!I?+pA;?@kdl5*A8<6-r$+;S9xad?;*dw`a=~S=lDVjqV+`?v<#-7;ZWK} z1-QdeR-!pWiWwbc&~W4k_4^bg*&96r7I357u(N7h_rL>BT9=ydXYm8$1J^$tF8tO9 zWVr--a5}oMIA}@nRo(+BQwEcf++O#hTad*JJ%F%y{cCz#FidneRbpKZG5JuXcT*J; zUO6f#n4WGmVmn_Ef9UAZhpvA(LOG5e#UKy1KTCbo4aVAj>YzR225;DqZW7XrI5-vd zi(p8B9?Dsd&b-KaO*eWYmZvl)VZZZL6Z9V2+(az?byE(%ATaIHnzlVoqpZLRDUIwF zmf2#pmGV$xmY!UcqXF}3`C*Gw`~kcctGHx`xJn^uZEo*yG+Hela%D2EL&a(|It-`n z(&%Vux-eb9AI$)%Xn4%$GDNOg%?ZQh8w*EMFb=?Z@63GpbUgDOukRf`{CVG#iJvad zpFt!WVqGV-xW>QvvC)Gu^C@H096P9K2gl4&<0&(CaC8i4m2>o$@VmVNP3AE3JEQ(D znoY+YL@AmcsgVJE@jD&eYj~iJr^;1r(;oIcjA#;lft_;94&<4h7LVzN2Ck0VL&GyiPwo*~C zi@t}IENsvOo6X7Un}X0{xEF!s^l{_Rkq2}EU#q$Lg}SBOtv;>1unw%kLTUSE0hVlU zE6cL|t$M%i+_j0&zQen_ZJ0X^px)VzEuv3 zk_DAtGc$Zsmq;C&lbout0|9Rrt0WB@M85;3*+JARX}ijQsewvJEbp#066z(6Ve-0{ z40Wzb<(h4d9DI+pEI>Xsm4LMw&&qch-il$o-+|pf78lVg$~4GW!JIzQ-ikf^ZJ}kS z)&OYeXN7r{|Bj2rpOxStH-vj6c|{0Uxt|>Xa;QQ)V>NRt5`)j@s26^s*?P!5e^}EF z&qt#dJ!0|JTs(7>;B2-l;|{1T7awZ;TA?=&wqY>S)@*$-@oqmwj&&r}$VQly#U zh2DlVIkvI=H{rnfKqP`q_)Bst&&66ky?s;f%Ym>E;lSVU#&`EO=o`ogHqf3@^HYIw zOS)vVOwrl(aOWfWZs)mO?fy}B`+gY#h#W@nt2D)C2f@{C>1`(;H~36C+C!4V|K`9m z#o$9#8>lw~_HUGQQ(W5;FqkRcM17C7D)f?`C?R<_E`JPbXRWu2sP3)7@l^RshZv{D z0R$gUT>_C0hyoOmpbkVjP#~xp)+H{O&&)=0;;P6+I>XUf&)hB`tE(bk-Zkf$jSka2 z2!?$D+!-C-hz^%#JyWiN>G7Ba*OX_rG#uU7xN=4L!~doD2>Re7p9-&jM~eu9J`fx45(1h#FAiY&pzGZ~r zt9QumG@?RO9?Dw7OhLEYvTo3=j@@N;4WG@c+StmNhP+ib>>>M3f1}kWi}iX@(lo`( zDBc<44W3xlY5&K@`slTl;pj1U6(wr4t6FkqqT)KnQHCEa+{IT>ekM9xoRMSfRbxC; z9FBhI$|`afDS3eFrU2P@ir6~w555-uO!V&tegx;P24(F=uU|p_mGNA$xQZsQ8Edc7 z3i|&^rvbR!0!u2I$UF#MX{WR>?+#UHrSWp-1isc#9|2`c6|KE(imt-Q@%nvR>PU>X zd&FT#F%7jX+JvpuwDIzb&E|%E_-D(2kuC7xNHaB_LrWZ5#1K3i5OLqj;lP_Q58MVzW(*?_7(WMbgwkGTN$=n3z|F7iq5iy7#AzhJUwVhW!uy` z1{Vao0ARQzwW2cR5R(wu!y(Q2H1T7?7$^w61k@?uh-r*Wiw?Pf9K1^pcsy?_%aJL+ z&4aU;krTn?yZzx@B{vhfyU;efCVX12rV*HC#Ec)N5cb13*zfVA@r?g|G2o3QqZbR- zCewlrv~BE0Z3CqRzuDN?I0;d&+BQtUB`zc10ijo7G3b?6mqUrg1IXC9IG5F$%bS-X5FkXe`j%x+bGW1W_wxS| zpB2x6?m-{EMB6UCoPippS)Vm1;7)w=MPwY##5aZ8KImLLcB%fJc=ni>bB+eqA7j4h z(*%hlhD`og{xNrxE~BVZh=oR#KTJd`uy3!xdb|mTIUt!fu;|M}D_CFV+Q!R6?e+#% z5rJ3X|8E0!XK=#mON^ApC?{bptkE&03Nu+M4Uniwk}LNVdy)O~&$7AEK&~)cuPz9E z@BL%JR6HG@ECxb8uWu%w-V5*c{E6Dz--Yzuq8)I>OHmJEN*8JYziYm3?wSY+zZlzP z=o)xQC}t8V_Y3z0lQvw?UKSx-IC2izABwPUyxeZ6M>djeMB6+y8e4G$F=f!7P?Wq8 zS11+0UP5G@ zPk1spkFJ&7!LS~T2-igkzqVXimOAwBqg`qY0Y{K1#9O|Pc0KKcjcMA`fA@W~>Obv> z;B?m5AB*D(1`~8DNn?2*5M}Uu@VkcE4b-uF@%VeKFUB*+1wx+fqhoi$Z8zTitl9xq zwskl3bE1{;C~}G}V|}PqiT)!@JEf`)q+q@?kc0q}0o4^~FuRT_ClIEp2>wbh8c?eP z*T_64tp13(%R}Lgp>YC|#pXa~KITUuokTL=nTmzu>EUQt&qqgH6@9W$nA9t-(P&-| zM~Bn#@E%+*2aqW(6N`sqZ})iu$%H$Q_=+l^x-l@GZg(OPa3vGJfa)8rXv{q_HCkO0 z)zPUDcP#1(6phn~qQ97#42%Vmr63MZdJ=q8!u^*5!T0D8wdpr@>0|h;hi%z;GqQimHeWkSadf{_5&zaQPn&+A> zsgc4PfTqB7AS?hYmZB5n6InKml^KKu(NnDB(Q9~! zG(f7jnX7yh`(Zzec^GB369&G%+Cv*>BO)I;H;*RoeE2F-;m_^0ZuE*iu95X+DVx@y zMTD%4mtg)yz&f2jvvDrnD(<;GKA(Q0Fh_^aZk$cPMPng)41q{$tk=bR75*b{3BUt6 zm1Y{`9t8g!p_Nn=|49XA)pIWc2QtnXu`lGBCEr{Vm-9y@*T}6nD^LEV+^R9d-Ip=< z@^`RXNwqB)`Lr17|LSsnzdZg;xy8>0a5<|TFCor~G7)`Ju{hNhNSq$9SfFZ4#V0Py zEp9>SAToXY5pKekUS#;XY$4<|Wp$7wx!W<@*ds$*YPk-&++8yf@C8ZBtfxQ>a0kwC z6TV6en{%%d^`f%E-xkPK$?;S5i zJdf%lp1|0oCR{@IA4?QsI!rFGOLz>ors?9l?nG(K*gc1zXksj5jJS5s0^R#?5#Q*| z>99BNK7SY_D3kYnL=U?|Gk;M6xQ>FzQ0njUmC>`3qTBk~$1IPfP`a z=^BiDr0@XZzwIg@B_ReXn^MQu4uo?P!;};eREP{msLqBANAT-51*Bs*-d~;am|+xi zONLF)R6KjggSv}6OL-2#6$5Bkmupzn8%)rWDtS<)@R7z`wy9#n(ZJW_JIPLxUEA7% zkB_xQhD4r2MdMr{ce-^2*Ptku-;sBC#XH?9KHjPSfpR6y2B23$DGV31&|wIW+|hXm zpTD)$+pxCa?TmM_DQ5o&U(~nO>hh&_BWa;7y5MgB5S4Nc#{v zUpA|xe2a24cnzP8%3{Qt3NKc=l~!0DAd{=rt(sN*sogOpuB{=YWo^fuUH-OiL9TLc z#V;-}wIpBz;{%wW9~SHNmT(N&nEVxx7nY2y%z$OYFL4Uv2YePcE%Wlh3y)|pKpwoD zLOWcElT*q%Idw7tHRRr7H2DDcier1x&JLCp%$FT8Q|t0|j;yv0E^!QS0Q-I)5^Prm z2@b4{BjJ>D(pSmQ{jh0+1kB|M43;@btC*Y)#ILnwd1yn1R10z5XkSL2R=8&2-xhws zwvevSPvZ*wT@Ru6ly%4%pz{r+9S0G>%dslpTt|LD=0c=yvoX)q1{jhQ_OQT1_ojlv z1-uC2A+P7WF@Ez@Dm8hgDCWv2$!bB(<3I0`Qd-zB&c%=&5&00$>+$!)RSEh@I05D2 z!gbz{`eC@)EYFGJnaNaY>gI9dyvHkDRrT|!d<7{HV&@Da9A8uF%|5)XV+L70bYbWK z^H%o9bQ`+a8HtF2levH8TEjrYzDc()TrWH0Y)Rnf_`=mD1%I3E1=!_s+i084LbR6x zOIv}jw}3ka7UZghHH7c#Fi~yuYpj(+U*0Sv_g&0JqGZ#iY@lo;wIekZlf!~O%9qy$ z4hato=Vs)iY%tmgr5)bXdkF}k4k2OH zk*zs{%8_?FC+N&Jgd9l>6C^m?!-?L1p~*{pATcaQe`|GhT?{8CEU0emVc%kdH`*9| zelPz`;0fp&IlRop_RY6-E0a zm%AUi48+5+NB7#`$f!1r*Zly9PjnOC^C z=0?W4tKC|>-pxKbM(Z@j;qPJ--BKYwv)VXCRE-q~#EuqCPIlM2r;D>ND1cRJojN?Z zHZ|2n4qgcd?mq2N5lt0ndr0%y5HwAW72e5~u!U>^KWTd}I_c@iTsL7I=$h7WrJI=9 z3zlqCCW*U-cCB?++AH0aZg*wZGuWXCc(DmO0#QSbE7u8aK-5Z3%hlYLQrLx|yM|ta zm5ujcoPjs#u*3lev!xCaRAe_Xcs1NZ8KK!)STLqryKOg$1m|z;0`1tf;)gUCko zwhNfz3%5l9y(UZ=3KS5My4J-UtO1IrK2)pK@FJUbQP)a33d-Hb_j08=Y>rJs@h0S~ zQ~laWHM?6~2Y2rzmAK&0NBV=vTrlvug0>z?YsDTkH#_;(`|@2otAA%X-}7yJU z_HBDy@IKzE;E(q?cGLlE!|0_3O=5^Pb+8XC4|dSI!bZYua{*ujhwS&M9nXTjuR9ll zh^O+Y#kidtV=zyKI<|4rzY}jI4WK@PrIV>-tRZPiYcY-7$*mL)@C{DHrheP)`zyoc zM9MV^_qe(_4`pFE7GBi!B9g1$aafEkz5b2I-*zlHj1Wo9ed>GyF$bMg#dt_p!^43R zU%-0cN|34R%X%vTq6@}OypYuIZhr8y}z$ro=g?6yoLPz z?+QzL^)JH1+7W}OmtC~b1)zU=Ktd{1ZX9W;R+NGRJ()HH|6ze zVl?gbdE6p&6ba`dLU#qN7_zue`JnR{oyZ+8Cj)MOGGU^ac*3P8!^m#L)L}U!M0e?X zM+}eKSdMC5Ba&?U4ejup&+B#h&+e&B_`Efr#~)9baep@Ig9E7V6#C%63di9L){>fF z$B+(QaUShVr@;2YaNn2*m7q2lX_6Z$gHEta5QV-|Q$!OnJwB-+Lb;7qMwc+HFyiyR zT@2{K0(?+4zwplckh?jh1&Se;yX^LaJf<&P^cqmcdR@XB$u^QBa2|5+Oq20s5V9Vk zd}bqofCwJ+`^~zBlA?iV)9`qMMmlF?LSErAMm(PU$mDKA$D*X%s_d)*>2CuLUXkP( zdgA|}{c`e|NhS1O{2(1$8&HYA`v>S3)-B}mKLWquht?QzLM(_S71p(?b3mOn7Z_612);Bje3xvfhm6Vj;0_@4iGKj5yMB;j{}`CBxz^;hvWW#cb1U4Q*zoWJc~m z_X0sB-AtqLhyjB)uagf4J(3+sFN&e*=}+b!c%ZX-F*Q6jHkI303lvRs=+Nxmh0)9c zlCw`wKbm`>yZVzCW8SI22=2(`hf9-l#~+BIqYG%n>;h?w`!^Vuh6b91LM`5@ds z$AjNdyS(~xUtV)gnCO|Y> zNcl>J83`Zz@gCC;pSAp^+x@2M^sUu{yK2pd8BL{1rnyx;5fj?@qvylDfAxz;R^EO8 zfqVIN2|T141L^=NGh!Ah#C5hc6X+5KI1)`Q*v+^dn5mwgr-n)C6`m={L=~;LQ;m@dg6kkr*5{T(i{r$V?_{ z-Tm3im$Um{szdp&;>|(&Wj40DKQJ;L35DUtKRy!hXA&>5tQR&MyS_fbpf4QyU~_9q zW`JZ3_a>NtoW?Or96x-o?dH7I-LhU%Dxj5meFeIZE!)S(9wSzeNHAKJBZL`O9}W@Z zy2gMnWnWI|k3|~-dRq=ex4T6(3sp1_1pA$)WXvv8c7-52&^Oo>fQvatW590AV!jWv zbQ)RrmWNYOAd52A?G8z_Gv?a&yaJxM{Mq=(5_S4&S078b`!@i@w;bFEp8c_e6R!^eeLh znSt*|!2ZnVPwOxeGUG~j zAk_szg~#&dRWm3wy7|fzEc`Wmmw`7jpqIO&wr0*NzFYz8PWqaiAXE-eCjsdOW zozOZDylV-b5W-q%=3n=^d~?N8Po60ugs1;PJzv^fyH&Y@-hZcFKxFzr-{d=? z{8#UUE}ZlW_E4r;;95lW7TC#B{a0@Ops%!POBcK`7*C8KJ0}NJ=5_Nv=Ea{lWojoE zPkhKQK6GLc&cz&?zZX9bS{IT2bO`>#3{WKj5g!BtPXWY%N<4D;XLBclQFJ(C#rEVT z@T_<&{VV#dmw$HTM0z^8coJErcjtci#LqylU;LNQVc9fEwTDl~*xPU}2LY(QwvCM( zv?PXPE1B2C``C1=i%fA8KJF&>0dR zEF(7(SF&i0^6vz`CqAZ`f^MI@fVIbG@L|_yxQTGw~EqlEQcva65yj(KL=XMu9Xk&X_;K0tN#H5;PJY za2XIN@g-IPq#F9}FE&DUHqyDI1*Uae@w7U&cGl=i5)O<>q*s(}cC^78}771=bx5I?|0P%1iY zLj!?*RGZc4F>q4Rx`oBI)VFXW@=`s*P49QnX1fdHa~d2@209^J(~}klm76ySlZU-6 zY`Yjlhjz$4Q_fex_MO}fvk&r$rx=E_t43lJ@OQ7HHXLqcBcol47Lg;AUtoPxBG+|; z52=K(p_~l*eUGnV`#~;H)!9ev!XyJ14_(|pAhio~) z>nD$2Vamk794;#xm1TP;E;|eW*RaZO*PzAc1~ByxbW2V*G{2}-)hfRd%x>I^ocwwf z>cg9($jEmc+})t*oRyW%+KN3FzYUp$xu_@T^CkJzenxBQ&YOnAB+w2j1Ax3inn$S} zgi+4u%Hu}7buqDfcVh8qI{oA2(0CgKcWq!de*?U=DJjaA;`>zX|z`cx2|z6NRc)Iler-@Q%hDm=VV| z@nPuTCqT0oFuHA8e;`DGT8|3Wsw2d6-L#M=8tXWXum*@y0IPX$?J#S$(pB^X>}|SQ zOB;*sRJzvkxVgr`ae>@BD_lgY_ja-KkCBDfKL!H!tkNubZKuW zg(TV$Gb6la`F5{9av6+wgg{5iJt)={YTOug|AX zX(;=qP3e()y*^&S3AVm%EGS|Kl=VfukdC&|3=O>Lgg5GUds)3`19=4=f&wJMt%j3N z`n+zr~@FH`05I zsTHrljH0z7FyuKTJ_kH&N_TZR-k|E_;2_v&1%@>R4H~4M{oFsAXzXDC6 ze`FRBL}lQJX?laBdy0t#fa5^9GSt#l2%0TAQDNPrE95=X23CMkL+m_ca8PO|a1<1s zMPnM7#msYeCUdSz#hputY!%x(?nva^A3y*j3~&AWrw`QWsExlXr+mJW5uMGx>q2%m z_NUlH|2F?W;D*&Gsx3-A_@n(B=q zJA%9cs%niS+MK@yQJ2Rw1qqhwQAVM4=}_M8_e`8&r#4jQ38KU`u>MFvv7>g(;gs8S zI(C75!g`~=LCL(VZ#)XAs>Up9H|Pnv^U4Wm|iHc!X7G78Y23=7?-IHsHA_3;sZDXA)?+X2_1f>F)o(wtwR=3+yx+ zo?r}p9gxq{poYgV+S}aHm@3^Pl{*Gx2WB?JRi*7=oEaEuH`E{?loGN?*>STB_9b|% zgJm8Ma!@m@7PE%$;z5jCoR!pj1S22p7MpT!ae>6qs1V>}3-^&s1!Z|35;;1*1~Er* z$@bzzagaDe*6a|U+sD_OgCy21)<6O@n@qR?cO;CjYO>5GMkTit!zCb@=^OW=8wnhk zq$V*E-=^S{0~9NJlRzqU@wFTE06~}4IjAC&KG|So!Kx#kncZqK3@EV4Lz3`;<}-@S z)|D8DC^x~O6hW1#S0GP6R6(U4s0AV*s89sd9PI#{;XI6FY@wh9Q-qPdq85Srghl8Q zYDjSeLX2U+Jz%l#(e;yV_Zt#{rRZ$=wYvUVy_pN&5`GM)`NU02fkb|`}9PqkcLpojjJyo8})m|@;f4Vj^^GCUwzx;0|%l_Iib$t_G&hY$!9ko*w-@Yz! zEVWv%#I607;y`id^k=}Lkc2Z$a}6R_5%n*ebbqhJvk!oR8`a_V$@Xy7fKCVc4d>?e zZId@Zvb|r(#6!NLscbfN)E9zsNy&8If=rdCOh^2mWC|bPm71;m^N>f{Cn$qTm?A`> z_RE|IEJjnVs-dY|E~xzLN<|j~Qmz3|!a`3vjHp#xu2e2CT*JEPxIane-->Q>HUGBYr_-dA8T>@&7((j-R*-5aU>84L=9I=_qgm@KJEF} zl!^j&7pTlcK6$Xdo4T`0S9Etc5!OUBxz|^mNV>e5=ACf4Q9jx2O$9?9uiKN<#a}6V zjVP90GvB`W^aRvvyXyy&c_Fjjs6Kuh`mPtSO7~L=g}>Ayy{D^SgxD`8A%*y0=l_6j z^&&k^S`;W?4qSpB0Qzc$TazhWnhX~pS#TAkTH^UT7+&Lj0>N8*y;{WdS`&9_S}X)Z zX8|@3UojC397o-V0BXHzE?xJ>iE}fV*Nm27`#{M**hPwo&^KMJK+JC(b!+aXHyIVk zt#;9cDzMJ=;%GTJ9`QUF3~OQE+uQ+{?-`YTq4)C%ab(x{i1R*M7ydoiG7PNVGU!E3 zmFNW1Q^p_gPaoN&p?+_)+>P3wM2RfdO5=$^na5QFz=?=MMl^DlP!Y zLe)(R3BSf=@mMuq9fco4ceJcjd*$B$gveO0e-s&c4%7kpUALX9b3rM&nbU@QKDe6P|o(@O`@U^OGg$HN{2{f-GQm=?VUbZDJd@J9TJo3Qzj z`Z~713ois_a7fkg^%UOO`(ia;Yc4H`k5mh_{Q&bOY~v_ zY{<31bG{Y{_|i3WncizH9G^kQo`HkZfC}}=c6*;{6|cY-i)Rb@TK+9dr~!I%QT2WC z^;0UQ!AZ&5IH}FCn^o!MGsL*c#k0M|Nazee0`^d^2J^&&T_eSCs2YpUWz1SO-#Mt7#y5~9Pk`XX)W@Yatlv*CC#*ZVrg+K7V*!`dGg`c2TVP@JJj$M zz3!C%K7UB}8A0xpU8ffQ!Lwztd#V@sK7{4Lm-f zX=Uzlbh+!mZ^Sc<(Jax&2+3Gby9n7=R$(d{+T66;zdp1@h^0*no?|duts#uV)`vN5 zlzwOM+v&H`jk{z2NK4t`9j&D!U6Z>b;^PB+?8W6Lbp45Cx!ss3 z|JU^G?Z9Z_z;9|=2&K?<5z@4?Pyd!Wt49Dv{z}=ElS=KInL@M|$ z`BQowWt_z|vOz zqEjkFBVRR)T?P}Ysj=Ds-uFU+9+P+s88iXPAZ@VaL8~OQ-7+1PV|o|xgR4X5yE+%L z_L$}#EA)Wvb94=SHL8sZKdbJ2WVAKzURZFCxBi0mc(UBQO}^8H-559-7|s$t!%aV@?}`&C=PW5c~1*HvkcDq>ujy_q2%o+>P) z_A3p97CLW~37g+_vwZKq*Qs|dijm$+=1KKVRRZ%}eDkC4Ebz5&exqNcU8Bxx-7oiu zyaDe4c*>L^S1t|>p;QN$1y!~KH9M&8f|mhoL0AUBJ~A=_bei8Yw+X&)kd+h1j+NT& zlH7`K!^e>zQ}4js1vh#40mD0hk`YdochK$D zZhyD#_MqscTc13nxjY99uXY%2aE4ejTz~U1m*I7P^uM{iw|U*Co^X2&*Hfq5AYX&) z%J%cT-ph|dEmgJ{1wb}90~UxN3o(YdLaO`+;T{te3)~*DTrTat{hIEw{Mv#0^k2a) zKdbpI1Y^#i=&|UgqP?#>_gik)ryq5>h4I)`V=tWUZZ(9*bzvUPd06ZAx+4XLV=f@C z&(r>6?b+di=bJ!i=$(7uDLLWQ_uQ#poq!zy$@}rOR?i{YbkN=IR=4Z_cu02(&%+;q z1BGYqtVg(Ar)N}7e}#Yk4ERUo_#P5z9pJ+%1Qig&v?&txo9lme_W9>~zyJK%v!d(k zJ@5OKv-_Wa{=k{%_n$p;K#jHRS66xo%>suh4Mq)eY_%puJD?1pk|YG$6y;pSLt;VN zv2m<;32m1q0*1d(-FIGy^ZWLl6LDb#)89~b#XU&5f6L7=7-^U-}z>P8g3*_ecASiqeeDwk-HSk?QqkV$nDzHHUn2)k5&LF}r@=TW4 ztX0!VbO7)GqaE~vj#IAj9}}9}?Q(^}?wf;&@WP7c7Sk6Qjrw=F1Aicb=Gmz58|P9k z{iB(&T-d+In`s6Ep4^B(ln=R3`cRlh?+p08dcgOi@t`-_`;N#P$?`jN>Jq%$y7(V0ohmI%xwOS~Ut47f!hhHO|(?~S{vKU|_eL_FL2O?6D1geSp zc#G&@0|va*=A)1P517w<-qFad<+0~Vqe#U%a0ZX{TBMPPAK$((c*b{b(<%cP71|-l z13)N};gWGAP10GMw@N!*Y8ke){cmNvbVas$DAu5wuOQKY;UR1;;J!!B{)HV>(K&5Ob1E(sLm<(s>{pUg!|MKxf;t>ga za~&Qh`0e|ZE&&lCJL?JczE>DNc=+IOJ~2B#6PAE@60w>%n~lpW@39lgVXUNbT*f)j zgHh#T!phi=mp3tX_+Z3JJTN(ojV3%X;U>nYI<>bD^#k0?ji_I>tg99Z(1D|sOgRGR zFnY^fZtAEqRbS?CqCOq|alTyKK(20M<|s9Q->66*G}JZ4dn@29khP79QFDpb%}U+vaZ- z?xjsL1Npj4J_}0&ZBm0zwxnUrRRozPk7EM@zB|2irGDkRshNDj%1k_xUp@T1 zb;-&+kg+~AR(^X^ES(|v9$Y9@7p7P9D~CVCEHx|l+=C%=#-DsJYcZEF{|@d;LkK{7 zffr#ZWi5JVzoDRUeC|n4@2cm?YsKPtD73P)RGyv|9UJEUP^PxGzESCv#uHP?)gzxe zG}e4ugVUq|-~BhpML#aRCx@V=0r;!b#Z{Eryr1tyUv1i! zwc*{NZVayios%LBi2yl%6UrN@uce&kP`2?yxy+%O(vY=oP0pkqx%aW?r56ASAZM}; zc`CU#XKNre#Fb9)|JUR&E>3@H2ll32zZdx4*Z5(*cLRntHPw09t13|`mR zQ0X4mP@)-z2!wBnRV;Xo7+oWVC%L-I&Hq;)WxT_$M{b%4~&hUr<~ zfmDEbV11eeLkoohpsLJR1?M}KX6oncf)8~i4MEE+8t<$x8Iu?4-lZdfkqvQmVfw&ti&J;C_!n9w#G9udAp3kZVJV$6jlI(>4Yd~JbqJ>nRu5<+j zjtULJmb8IkqYob&cBLdv28?3Xz6Q8rTp93}S!#jdU^#i+oYl;xxYAqs@ZE0=rHoMM z@qLpkNdy9XGMm?fxs)sa75`^P=Dlx_UEy>7op=+TgMC|fyp~o>V@6n{!qxW{yG%W^Unu%KH#{pvj{jRthlJ#`81lMFg&BY92()<0EWl$pUCh%j3f z^uazOjI1Gsv$usXwB_aAi#SH@R!{|yJM$M9o(776WBl3cmbMq-Tw+|g?wbI${sH0uJrBFrA@5gtK+V$*(h7qR>FDqkxW@d7d=Y_)^CNS}0RcSBX33gmDm_#^{|haS|x zJYynacp1Z743^qjTUqJ-ZSi2naJk_}Q8<`MA8swA8NUU?T5aTTI&)C0U3%%#RhV*n zzvK1@#k+yxpAu8E&gL8mUP^=y7ed=JXF8wYcrohOK z(Ee-Jmg|0h-G7K?_VMvQR=ZCsk>Z!s4$2-BbYJH$utDCE6oek6YA)E=1NLg^kWx@S zijJqE#3_Awj#;#(Bt{-sF%<4_D%TAUa4J_)zbE+8=1qrQWi6c=uw^XTtbxs*4$646 z&p9h_(stx#Jw+6vg1B^YZqngQ6^-Qj$N)1BrDaAnm7k6g9aJ+}pmSv%c!bOlWIiyfTw z(?z}NUS;&g1;4mI*LzQ{j)jXjY)>9c1e=!(uBP*}n}^S@W9P2w#dI|~C*5r?kYC## zAIUH8(8ppZYKFtD$oV?HmVfi%{0?cm_xtiYJZbAaP@?cRZO!TW3!1 zy_7%v=ACaDobTTMkk_5}5ij|H#dqO-5S0jDG<8rcqRWazgJ205c0%%(7s@9Ds|^%S z&}9=2mKYGl08B&qBair%ie_!YePvBQm8WY+{?tA2=)m74EFMHpNMBlWWE|gMEvYd; zJE*58KE@beI#ok3$Lat)aetM3c(hvGTdTdOKzvx$KCoB;;hTaN_EsOTAz830g1lm( z%t0TfARMQU}XwE14l7VtSo|hBCJMIc51UU zP@JVzMzs+ZV8INw29U}idH$B>iv+zvpQnmaBT=)E^!v<$85vFnV4wE~jbOy*qNcR3 z#Xot!rrm#1ZvQ9{^?Q8qwamu-k!&gMiH~K%zF0cs3Bo5eW(GWgf8GDx#iv2s?H}Uj znCd(OnydPyat{Ugv-qrNqJt$((*mb-a;-3!h6{bcVKkz0Ftf)y!ay2 z`bNsNE|>sW0&sJyokD&(n+A|7IO;8YKR#$pmc;PUUg<@xDN|8i{npT;>5fY$*C;LC`4!b{%0Bh%9V{L71 zIbA5s77A%!D3l0=ZhOSlc8i3b(2H7Pq7oJEJ+4b3&%G|!y`Ip9b8zCePu+Igr*u(B z@4>IR$%p*=@C4sJf9Unul9DsLh01g-xS0x5a*fh;Coupw|!FZ(My0<8^uEHtjAWSSALE5Gk zs)HF=VJ~@e4Y6YJ;HW0Xbk`xb=ZvQSFVJu@7}^=DZPDU#2|+dj;F~EFGr|>II+=0Z z3{zkz5*engN6j&5uc|r93VF;dmZsMWLMuUr(Jt8_ho7lA2k?`$VL`e{7Rcy}p%nbX z6M;}+t`G`A0={Ze2g__;vfbHS0ohd%eY&k58}N{5VOhza;Y zNh6d_4Bty@dopxH;qhG1`2m0THT*`>M6^@kaAp;Dv~0H2E1|7lk70mrt=Xu0(;;Mv z{U@%&^R9_s#*9fxojKu~bZObHU`9D_==Gz50ny%&)Ahu5Q{( zC>wnGY0?@AXmXAE$(L9970@*JB!JmK8Wp^!1v|FG%aH%Bi{<+IyHEg=%P|V}g8N_3 zec}@^vP+tZwtf*XWyzR{Aw=iMs4_6-^DQ}PNE1NprV<_)$fBXrm;ycbYg@p&(t;5A zsq@I9l*p$8ehfC=V&X%&;94<1lW!`5`==0NMD=`X+LMc=^R5q*Exi=at`Rf!)?Zjn z<@2eprKi+vtzUX!b-Uls!uxYSU|yjEjHN^gD#DcCAp`|9e*1_ey@|ZwtVEuk`iyGZ zhuCkhxS3HlF-bEMx8gpR>vYFVAWpBw@ zv&O6z@PZ$OrKwnqm|q$n+56mVrjolg_s-Jz$jZn#4Q9`cSj}BtAKP9mf*EPw?_d4T z?|NLNVJGNuVnHwHJ3yHe*<>2c)hF9eiq$rip>13SE_wN7z!KvuP0T$gvdyZ)m4wy- z6hNbX357NKcG-QxW5PoYt|bsznG^yyAPXQk0!SyYIX4$-;xzorhR3q+nagAX#pdpt zcbmhp-nH29aO|C~#Y(hL+??}HV2-U&I#U$o`T25XS_l9@wv2mO-@!u`zGHT%0O~QmOgl^D`BnYhXP{?;UzjB{A0r*+M9Y7&6TzJVP%g zQcP*ZmbP(<0JQgdj2GYr?7BVY$r)22clgUL`1a;erDFbVoP&iohr{7FFYxf=Ndvbe z-4U@W%UGNYiSQfq0fAeY!62O;{sN}ssc`ry>~=-9@Z-C}oQG|ksB{m~$1DMQ0973` z`$6_EL3Io*k^S8!e2?3-&eJQUjs$Y&ey;v==a7I5|JKYD{+ZTG_=jgZc%}=jl&rA~ zYa9?jqc*^B4oF~|ZBcJ;j?D=72{-=4%$O}7b~o17@5X7PqwAf<*vy=5XTmFNzJM`^ z#AHoW>p1~Pq5nq-;tK{AV+iC!Lzq3zV8<6~01OXUZ|R4Cd*D`vs}4ilXOYFwR1;)r zC@-2*vv+%;;}HN!)Vy`w^Haq-ov?*J1B#BLdNEV+`p5j^=GioGNA9E~G`+FVHjC z@cLo{a2y51D(bw^9hhvLlr_lDOFl#d&OQX^Q#=tU*Gy#0dV6YWe*a7mK$5OUt!%sO z4>S&8{hya%(Y0c2{xoIH(-URfniiws=;(ysXT{>{n)h^badF={n^#^(+#PlKQ)rbF zW=a);BhtuNExMpVCyLAwU^DU3^+iQ!wMjCAx5+$Nlx**Y-qw;FeI;DfC$-EWF3Uv)CCi+4mR#duc z{Ga*N)qLw4-+(JtLS|R$Nba+q$n^eu0he|ILk_&h%lA~6H4@UIkzllMO}>v*$l-4q zVrusv{K4+R%F0bJ$df0*+xX^8;)&h$-FPD_qQ9oTr*~~n{WZ?}@E*lG{SEpPlJZlD zn6V1>T*{9aIXFd0l>j|0TQ!)Vl?P~OMZDgw$i97%UH$_zGY0}m{1e^ZMj;!R zVJE-c?p)Xv*}p%s>jJM%CX)-vq+IuZEBHP)cs163uJMh~pJAmFe6U8rSfpEt8@;!^ z-23C)yJ`)A;yDvd{k6IDE8qW2`o5iCRK zs?L05&!g@N(j!>bz4Cw_b^ZIh&i$(D=spoEzggb30YPz09^r1%k(Z=CyeRFLhXE@@ z3Nla!SQy3;-~y9&arzL!5ClX37e!km4q%e05N(lpTU~UjyUXKgdg7kpLO{$sG>hV& z!#HbtJo9gVo>AvrY^=IztBf3E(418_Wg?#N;Yj3g$P>-*ISKb{v(t7z-t2UmkGtEJ zwaNAmNz`f2MX>%GW#4iBq3AqANb&O31E_-|2PG$d>Z3&fzTB+6Ee&jzoIH$w&VYVUwz z?}jfC5~qC~eE4q4*>Idj!aeQ*b68a=AZ92hKmlu#F^4@J5-eWCon+9%bPze}OZ$=C z>G**I$93K3Py2$p&q(;aBN0&L;^>6O>zNoW))C4%0+&$3r++j(>dK-#s0&snd#3wi&RBwJNQIy-Y^jZG(I{da#3KRC z;lwa;jnJbgJL-RM?9d&|4RmZ=QQKFo;l*Jnby7v+fG@Z@J_4K2eu&n^cCmb7ynM1e zegcLfxSHjfxtE9fU-b{V@YMPjBjd25LG1%BOCJ28QPM0(K@^0tu?^$_bq)LOj1Fs6 z4S)6i6<`_sld_tUrzx>HSs>~6J&T+otgR^_i%@0`KpGf=eug<7gEf#J=83?KvND8N zqxrbE&Mp5z&AyJUG!*avi?l2D&#ZuFR99heh9?4!QNGFf_Y&e{E%23!ciljH*D)g@ z%*9X(>d^*RD&j}vs5EL#c)B#{!$eB}sSfm*O}KD3zHq5{+Jd;x_=GpK+aL7%M;7CG zPdp%?eiDf@=E!r!_g*UA1j{9F8PD`k1Eu&uZ8noAdA%daw~oZm?23h+Bj0N42q@V~ zrjlv^HLrLza~jBRF~`&lNE;R)1$sTOdgTuJG$e+D)66-I$5Kg7E}19%0B(hhE*;N( z5$-o|uUW)Z{80tyld+7@)x?8=0#*4oY*H@tgTET)T1_+wW|%c#u_lhNO#6GDcC?>* z(PimB-+kn#01YxU#X{@>LYtS7zTNfWPiflQ|M@L-?WZ2O`1Gw7J#fpgJp=ZLc>=6>~C7%J)7@>8#{aLo;)^4#d#4vw53mq3k~iy#y_{T$u_@4(P|oGhC-1GnuuIp3ubmzkFAebr5sa6ScGsFz z=fw>8>(#{SgAexpZcqE-mpUsycXzEO0=Jx7sBD-g)|b&UEJUtQ|^*E46pVpEGnMYPz*iv!FE4cHo9laqNp;@bNS@T-Haz`b>X0LGVi zg=@=Xj-w%6LL=mJ9V_yyg_ z;QmDar)6t8*FZs#CuR5@EdKG#e6IKV(B`B%Z6J9&74y~h6>#h8ZD+jbJEX=-+5)6j z2up6UC4fi7S|X#EWisgCov-)*61`1CKse8OQM?^8AM|>}H>6H2h^rt9I212jvaX!H z)cfGsOZiKdc-y73SFB54uyAsgu>)9h_!Z_t{hmLq@fotv79M46p5gEQ-%HlonM?fD znYC}>V_o9UVgMw9hS(IhwYv-uEj=)f`fGNm=*Lp;#qX3q+Lo|@ zwMW2jS3zS@^`q6S!Vu!fM$$W9P8KJ*L<2l>_+arP6E#>a+-t&XhEp+m=8iL?Jissw z)f3Z6h}{srlWT_qk-Ixq{YoJ_I+`t90X=>F;kzSe_j+A3Q$kG5xV(Gi+WsDDuRn*; zt4qxaTyLd*lTPKJpo{Z5@+ioFa9qGS72hc-O4r6_wZRJ-oOpRbgqD{f&VDWw`UNBn z_57kc;&ppJr=eJ-}j~Gcq>ny{!*ya6b6qgkJ1yeWh}=AMr-W9;Ea?u{1Wmm9rhfq5R<(2c z8|NOVs?^P|JaClHw&SK93u^DaV{=|RcJ{TMKLGxb{FnF<`{3=@?bq#dXAiB0{DE`- z_2(E9DgQ~_nuN}?$~8y&Gk~fs0SUKB6FB)MF1&?Bf&&C7sH>osE&mV;OJ`$ZD3-+= z;@#%rD(tL~Q($^Gfj#*L8+0bxyUH*Y$MfPP5MHpkVEat|gQ2PI=)|@FpB`WkV6RG( zfXL+y2yLY)^{y>1cQ)~XW8*5&XQ#srH1X(8A9wNhnD3VSb%e>dw>CHFe=2{WZg%jT zeXrCt+pjQjGXNOLlZ{a!sr3X~Qmh1t6S?+kddt66JXUNr zi^rhcS-y1dv#)*av-W(G&tn~l9Jng@Qtgah)q%0Wc3{540!zUFTLlhQ9YA}wb)93? zfNAz5_#^l+Ad?oVdDrm~b10Ble>H2Y0PBpLVo>K7=1P^yIA9MHUUm%QoVP20+yRIL zoPl#LlaazX8S-u%kOH6MnCFr#=$}zbpVOa0ODv zWki-WY7qmwpL!>Gh*Wa+^;N|dol(1Awwa`^wZeN>ESDLl!IXDPE!n_{bIZ#^ibopU zN_vS+SJM5VR)V~BD$V{^LYuTisP}(k^QGUxFsZyaoJ#|9 zISdYRMn?L z91+Tx$t~C(;+D7?h&S&zL#^4~RTMC(_m=CTy^>0G0;v~3AUb|CV7ncfDvW(YIU$-V z*&3(b0FM6O;$O>k7J?lz2dp$Hu@Yt&8V?N z46(;MzEG*Ru&SU?YdNM4-poX7q=YgLAg&YKu^i=!6km1uH9eKmH8d-ib2nW+-4zbI z^gz&s@`;zCsZc;O0&b5RZCjYgO$Sp^w=d+5Sg^|dc?N3kiP6n*q#d2ehnFVik2ZxT z=qa5aa|gY;d-63CM%DccxZP1{Dz!Gb)59o)qz83GaDD{vIFhY^qAj{{7FM4#06 z;a!*uGp?8^os80nL>hiYE$EKI_0jscE0&VqXOjBVmlWhvF9Ff#_tkDq6e8Y2lAcG< zR{av(lRcxv7$8c>f&=4?rSO2X(dEh9~mhta!YS94LH{*caer2?tQ9 z1Gk}*5PR`Gj{BYNcSLvk*m4fmpahEtAFQHTY=&7f4j(cT>A|krUR8Fl{-f#@&=c-1 z8s`>JO4c3^7ixMs&nX)3mWOs197Jb3UOT)!`$OGGMC#GXpgSOnIzBPrB2q>jNS=g} zH5oyZd&}N5N2+|W+`Z_dc&=Nq@!d7a{P`n2JU{eGB*c9)>N<7TU zJ*_Z<_PBgF^`1Pk^gyRgEf{m-L771ZK6wv99O%FbQyAQovFdn-$s7mvGKRiv5s!j* z1|#v(DW*}w!(c)Ev+S92DU=RRq(nI9i~6SjKi=L1yshg#@Z|xBjo1NR03?Wo1VNAh zH;Duxi6bK3+G(4V z?M$ZAc>3B&Lrq^Z->avcPW!BBC+$q8)8#?$_dn+X1S!h)^n2eUv0PkSoOA9u|MTCM zSrVkZUHNiZZ!9;^eRuaym8X05kEKQe>BwNF>>12N!?BtxmQbleLixseeF*B(0=s77eqY>s(BbXLW}`mRH}8s6hC<1{+Y7yf;Hyw5HA~X&5L}ld?2Xb%Bxt?Y zz3N(-wQ#v}B9Z62a!_*bF61(~n{_d6Ta4yo5 z%XvM{J3`EzOY`TlZ-qZLHKN2P&{jAI11J$8!u7$I7^a-OIy&Hu-P*kDI6p)*yjEc% zoEioFh8+|ACBuc&2lP(#=Th%0qCHI{!<`6uqA(ZAWS(u6$ED%ZFP;7*IY{`sUOc9<-|(J`Z@5aB`iewy5`BXXdXo z8d^RBHd=UMdmNYMZ$;PG0+80bz+Cx<#Ef^S@zVWbnq{ zlehY#%z@M*>;ktE{_DcflEm%>`k0k^4F&Spg(PD(g&Wj&Gqavx^VG5nImi36cw9MG z^x@A$g6ef}g1O`Bfx!B^BKf1&DBXZ}mRxr&7;+x;=7?SXMVVKDS<|nj`zBqgb^Zmz#0cBLtA1wduvihj>6y4hSFMc4_HzyJSPp8;iiC2+@rd%2{#(Fut&o=?@U!Io zv|P*XVB}}Kcjbf~&X8kn_S-+Z{Ii!1`3|d(hJx4hB?r5yzd$VW}#HQ#g8`Quj6gCwklaj#}}X zD*1wPI0$CF?`Z4$JNgbu_?9bFiY^TMdIAB2ALxa~N77ePe11B6lWyr;GZXA#(J}A7 zQO`$>HdW{AdG=)nG1igPr+EE(bm*STdpJKTLMNV0X0JI%pF_Sw_9-LEheMJ~$j z?wAkp2uC8@oR30lDu~vtjj-@26L%O<$9k08_ZkWgWgh*|O!oBU=5sfkoK~(QhjYk3 z_+hy?di?~kTzZbMS+8K#84_=OwuCkr4{9e-f30#&Vv7-% zc6_nKGj>IMAR6U0UWoM(p9@iODF{+LwIOF)`@-mmr6qI~+>o@Q%Ri&sg@H-dP`HIX zYN@EzsNWl z#+KlU_YW%FtwT+XjwZOkpO`iS6yw?@LbI{RT>cqj18H z0s90Q*WUl2b|R|FaP<5vp+jIaB1>SR#jXY;BaP4)GUKAo9azY~ZIP<2>na>Y>}qzx zo5G6WozO6J?T3u#vuNBfQVI+u4g7E*z9eMbl>!Iq!_nX~XP*fKGNIr7P&gV1_74T4 zk?@DqrQkn1`wY;O39fx89F7Ku`UBBO=tDAH&;r))Jmd4iE1EjT!e=?F1$Md6D2$G1 zdxe_`)iH5o6Wz5s!EsW-2HkJtbHPX?__>DN7A*)*qU$fj1)syw3NdH>t1~SHZeAUr zdbsPtwEN_;W1Rv3c$%n{{4I|SK7>x&`S1x!BWvfA_V|oW8Ce%>X={x2Bxq;b8A(S+ z=!!kceO~ulas*{pZp*#d<3;rt@%G-q5`*N-wgZNy7!CdtHmF?D~?XU zZV=^xjg8xbUYRV>W@%Cq;De!T{ft_pvUT&fY4s**U1ReE-Ps+s+CQP^7AVp@t<0?l zuGZMm#B$aecc>0U&oAW(ceQ7C8D`_crArs2=8K`(b>`Nq;{)6C5OP>xDOd*pK{yDo ziqsm>St~|V-ncL(5{KPRs?aBMeKF@`aJN%+L%Rd%Zbz^W^~;Lw(D;yR7r8-n#regh zlHXTwI6MyJ#d&w?Uca$n|4{uq>^42fFJQ z8DmF2t)5qM7JR=D{F$diL%~zAK=A1n>;hyCI|4)|R z?WYC~oW9AKwFd8(25Kwfy%g7TEh9%+${?_WNLdga7=!^;)}ktFF(cY`xt33IR$gVO z_P5n_EE+u6Gwc%CL-O8S6b)*9RadUG7SW7i_7KBILapg?CN{4Z;HUF=zsl~E7G5=FU=7?=9j;)8_aoBh>j_A!jLOGs)AXoHtV z=|W!(Bp9L?k|zd#uu^>A8B5c<%Q=C&X7lG;el9nK+`cp^cJ- znJUe}l@KZ^Y8BCEe0F!2 z=ZDo3=@Tp;>$cB9;5D{5WtwTJ}XBJCK?je|o=ha>MT`B_Jm zlj8@4zvMr`KC-Mu}XJcx^<3s>CW!+X>G6D?1wb7BAd6`yt-IC_8`@| zbQ{klo~p~w4BsfRaV>dYcp{k)&BchuM%s{iVXIfl^~-h2p_eiH@?eZGO7+DRi;P7p zw6!TWnj8VZBIMDCZ`!XgtC6&6xjJ(diLKlg54G^|pEQQTb^oYj!N9!>q0$y&#x%>+ z(TB*3qSvs%MKa1{yftXfQ96Eob#ZC${*}MgjMtm@E-jJ-Y>jpteeCp1}RxVU9pz}GwP`NnNTx3#gThtRy(Skrj~xA4eD3h3a| zajKTv+rkTfb$MClzcax5sYR+@x7SnXg3OQD_&X%XNsZH6OX4vOC0klP*I`WzE>owx zvyah^NX|2tO^2QQeOOB{onvRrk~@0Qj&m)*Oy;m$>Wq(LvObz0FdCY-V0a-yU} z<6473b_x$G`dM8vK_5VvR}-RTRfz_ApLifJ2;Sx`KyhCKU1Gao=D^Cfs9TXK*=ho9X%1%bkJb3ID~zK{K(=gth1sILcWYxqyDTpm%eu@ z<4VPTE*r&So(Sw~exI1!-IbdIarbRb3W@zEpNM09eMR-%^t}&MeSY986QE{WY~Q-e zS*TP3J z9n`3C8-$R*%{E=krj`h($WD|}(IY{vSv@#TX35lfIR+F}m zgW7mgsQH)L*R`I^Zj4uBqmJ(MC>fnp-?Ss#i-of~P8=6mEW(cIKGoB&MiIP5W7XIA zLm?_aKiCrvTcJ>WrJ}M4MH_@)C2w_Dj&P)#;H~*P)j*FU?#42hayVdI6YjX9XF%OK z&zIeiu){hPNkrNY=FiCVg7>tiI!g5p-%w&wOUR#?Y=tSq{08UB?Q86zDi}f9{Pf!3 zY_QmqkLL*$OAPf4EvCbh866cR9EY7tuWO@_k${H-l|*c4aUj{R3#hTh1VGf?*rAYK zilBB3e#jQg8nT7%n7vS&Q^$S2;l5jssxt>t1#d7BjN%GDIW`blnI*>b^nqh{c)P0} z=hSp%w?l7T{eo^%+ARtu7qjEeZHtXl!!t16dHka3(s7q`8At}A#a(on3F3pwUwKt_ zdAYLF03O#EKz}WKnZYIh$XE>gW7`q9*TPfH1#_14sOOG9cl`KsUt203KVEE}*Kg~h zd0Mp^4Qo}u+H-Y9)ulz{9E_`tXPPfQqcjRL{aoA7`dGn`L(He_RI_tuaQ?K&0nQn~ zmMlb4k_Ka+TG#xnL_ny;=Gs-1N_t`Oo&izHcQBcY$RwM>)2d!FWVSz6Usj(M+{gwH z_^)cy1f&p?9MP|w!Am_%CJ70CeLi}~6?w?5oc_-fCfx0h9#VlvJnq=PRiqC%qtc_( zQF3<#ozyny`8e;X(Ov$%YSs~TjwxU8Z&ai;kLyaZH)-ovFiy?9!7iQRGYS=I9+;ed$E3Gs>+&w8m*0Ik5BEm+(F$q|xhN8{n~ zsLEFb0xDcm(P4AKN=v9-bL}PR((u1RJNk6Anq>E74s`ILY#_)ZQks-(0r2=ND>CFM z)yc4*K4}fr2glHa4X0ySU%ha^;W*Yh5$G8dx$D#ElL_C{ly^MCS_OORo}r4zb4%-l zQ|C9(@zbKKiz6kX0N3VDZ3ty6YXUvF>C0Y%!HpL%r~nlTxhD|!`+LR@MIwjpITQ{b zngC}J?s=`gx|m7?1EqeoXnZ8y%whW(O)_#uj+J_P^A>VIIWt zNQYP|wBa9R)>r$_k9;-%wZM^D+3M?gXZmn}Pa{7z8%iZ1hni;4fat@+;Ps55^DX6u z$wMScxI&eD?m)QUd$PJ02<8xu%OIVl^mHSAJiWR!pWf=vjyH1SvOF(0$d)O)$<{0F zBGT&?V5H@Vz=Rl_$Fd1f!_a7ihCO2f_im{O{*Mv2LSH85bM=bcW1q4YkX z)|TkAda#&3$lQxfTr@UWRg^vYs;bgyaCqgr?=`MccpN>e7``5T^LO#>nl5;PF;5}r zh)}jLIPHs2rEZ$abuo7#=nTiGTsQ3t--4F3qrmG9vlEjVSK;XH_8lr;*byvvVnI(~ z+UIkHebWTg#q4wL;prZ)oTH50M>mTX?lgCMVr~k3g-1I16Tj_^tSwnAFN?fi3m)uJ zyb1O@ItV-T#OB4e2p>jXwY@QnR+U&iNd~rsPqz~@i2~cfvnrKQ)3M9#h;iYWBxjK5 zoRjQfVy2WJ?|4CSz4NBIv7!}5rHjl<^od8USl*-Kfe(H#Fn-jF4|vy~^`3m&Cqie> z=6d(4719U2GB{fe7a<)t?yS*xna(O! zXKw~Rjg86=e%hYz%4Ef1KZ!L?LZ7xsDF0>-t=k;FBEG=oz?K<(m;^lQ0pG=oI-ivI zFPd1DAoO1Jq0%ywxc zIm1t=LGBTqYIPBMkQprv_NOvLl~z<{YVM|)5)z_)aI5}CU-Z-!$M+oJU-1O|@9GI8 zd3rd`f6s9RaVJ@d_xJZ%{fXL8xja-G9~q`DNwVYcSM2Zfh5v=R;uXIH;BEKFXQ$N4*^r?1Wo=Hf0Fd#TUo zNMs!@H;4URE1w@1-KqHzZ{q_gZX)=Bhh?cc`9CxUaZ`R8E0 zb@A3Vnhp7>@ahI1^nelY6-RW}t~@hwQ9THzs$MPEQ5mDCUUw{?IkW6otCRd@S=E;s z=YEQ^!RMqQL+eC0Adwev2E~$&2E|<)cU>J>UTn$j!hs{fOBN8MclA5#f!M`ZDzF|H z4qOa0F9mfu=f6C6E}WeVQ*m`7%N1A`VqC!m!;c%B_BAe;%!VToE^Fc1b^1?$(?-$t zYwZMEQf|n8nm{_y7-)*yIzR?dU3Wg}m>AXk_2`7-(dUhb`|FTYtarEMu{b&&y>r)H z=@WJSPNdIF-}&gbjSbSg*6Vc0T&}|>ugh$Z=xNZ=)#Ou?=@Fh$>s~&o*Gcr3qBVwb zp>9x8C_a!3AQL&KX#*4$IzUw;Mqa>F`^EJAY4wr&)A#=><76b}wN9*+U0<(p`|a{j zZ_nSE=W*Aqj>k@$i%vh*{IcUr{lFOqQG)d|-@d0*IXhy@&N5%!=vO2QrqF>&Df&XH zI(S*|lJneOctL)|*#8IWVNg-~)TS z(LmYl4aJ9QWwo{iQ6ZFEd})LD3913~hFtzwq$l9=^hHt`L^*+RgNv@(cucqp^qf&5 z<%#L(z>YdTRE&IR$8aW9%h$SuKa=E+#Fzeeq`gCkj7UTB4EQ#`z1DST^3Yj>YhHv8 zeLK5KXUW7WCNeh`ogpFT|fi$jO*<(a+z{;!M^URo!an=tVnwBPc_4mJS-$Ua(i!k}d%wLg-%Sx4=hpk*YZ2{ri;B#sX{3#o6@ITL*)f|3VpClpw8q@vfBceNqm zGEMPEjVYo05*CYtie&s>S!tl&)34&RoZ4PIwH z^xB|3n%Tm~MXtaBb$AT@g>8qIykDY^k~`|ciH4txs3i(0;Kla+6DJldK1sEbdmz?J zD?|JGKlRt?h1T)>K=V5}vL`;+zi$Y`KyU0*zcw)6I$lWsTALn=kF~^KiKeqlLB*rc za59UDY0gt(!bpQvFqO-imyaaUs+>;z-jyq}k0(Ea1xR9y(S4#FS<`ll7VR)LmjduH zw{;deX$F}f%swDZj)(h^WHR~;w+aY#PS%rWJD@m{Na{a%`<;&CH;wEK{!wu6mPy@` zP+JkNB8)G8iR2;u$_dWgJT^E8k=vwwX8a;^vnZXmgU<1nk}_!7&}gp3JpgrNhaj|N z%(K$v#QT%U$%*7WuQbjL8R5i)emT*ni+aw01O;Ia*`2fbmv1>PD>ZYO#1^+I`C{Zd@x(`_ICgIoR1`vO+P{9&2@3wQWXv7|F?Q8a9TmGz>h=pqd+wCP*iWvmk^C6(JiSrNaj-l!78)8OKZ44aCPWz=>s4x= zx`z)B70QAl9+Q})X0NQZ5RBHRX$>0|Z`~Fz<%ZmX zS+DQoqayk(i7f@UlJC@xE|Br8H$)%!2cwka7=-^rxh6c~H;w!Xm zUg^87*;+t}+2eln)7-B)7JPumjG#)S6En0`xE9h+u4#>TgScqnS}-$+L20dJR1!J+ zJHYX07=a%S})ZskJXz z&pomlOQzJPNlAQh@g3=3qJzr%Q)9fX0_D=RhEaoylSpd10*@w&QY9EpNxVWNaDsFK zg6qUJ46#vX2ZM5|@w?AcP9Qgw@J#HV@Fa%h!|U!|R^>;Y_61_0=6Z-^FzfJ;xH76# zwph%fHI@%g^_9zgliiUX7|Bpiq}$e6H-I@-%J4lBqCr+L)=cC<%rQ%4JYr8QpHO`Y zW76UxG0Yd>-%nhK_St()?0#WAUzRR&EF?h#od>$0o06hwk`s09{`;MNr^*D&OCJdZ z7f&pAd%BND0>AWC)i`wj`EH;4ZLzrP&c#J56kK{Eoj7|Ow}(Q%sAB*OTwT;OfxRMi zEuobnXRQd6v)EW9vZ5j}5*KY46#b;uO$wGQASg+laf1esHo*yK3*k&m9TR1pe#}w7 z%du3~3_fgrJvY~z?LR!K1%Nl4i<}?}-=lZl(6RA;*sTA|HN70gKS;p zw9dSt^TM){5&-R9yqNj+{N4sU^n86SYh( zldtR=xpiQVsy*|}GkpICnSsOS&K^!ACf_!hNCb1Kfr0r?vfmBwC~|uYsT1$eS~2Mw z)WOPHQzCA*QjSQTXVq=t=J(OG+MEu7%w_C_8yo-e$_W(T5Brg}U2UF6 z;;1Y#8SJI~mc%M77BR7Q;1=`m5n~7|#d@*r!CL#3ldXpksu};?iEqGS6UUgma^;)m zXg?h3?%NzHhb=e1kk6-5IcH_ExineH99%fqFq-(rie(PsA0HF@&Dh6NIhFF}^WGFx zaVmPtMDs6HYT}lt-vjb9YtVpx`M^T#OY-SS1U;_TPLOAfv@J6he4pwf%uoC~NK_<7 zUY?}fIkA{n)aF-_Beb32l8!A(NR$Hlw1P$U7oFa1(*r>A$5yEw$tLCIE!i8QM=N;> z>imTZ)oQ(3y&$T$jDZj}}NwePYbhfZy1;;Cs#fb~~Vs);;a|D-PBgh|%9C>ik zsp3Pa0peTw>*Jq=4Qt6ZpI~3MyacfLU~H2z<4Mnyl;IJUg&?TfZ`B@oq&D!e(Sd={ zkM%u%;ORfjWDcCU?A_^J6ld*(kezxNx*!{`2DVO&)vp5Tkh z{=s7dd-m-8#NIu77FNzq^w*Xp=1qtkeYJE&y3(`IIk;0|GA(L>%~*JniEdKRy0{78 z>?ejD(Za#(=sY=1NXD7|MC9p6qThb|V>Nerj>jS;FC^lwaWFRN334J{EQ?>SgTZ~78d?dUZyHWro7g5#kugB1*d+| z)3GUAU|fQ3!g^}187ErL)fH=bIkBu?xhKk<*dI8R*T4#HxAnnJAOl_}KA04>1QWS- zncUGA%PUAbYV}%|g|l6Y$7m>lD7Fmdf5{}Eu6qNIKAN7IN zce9Uls^*f6U*r(&FT@@Tv0)_^N%J7;!{pJuXzd#t+m}cUriZ3?9VDN^uFaEu`PNCY zv_#%#snPwTpbS7hCjlSx4ZoTz8=^so_pE`Wlh7DR0d~0GvFuX#sjc+@)Or7l&JYJQO zGPYVGo?1JRed?*~38hni*iwh}jpK6i_%~X6wcRFsaJxP6mUl^dEl|pgT5VB(8gKu; z(}djas)H`*agypp9ERFsEzW2OIayedChd`4Z4Ie?2E&6r_8smWJl{^+D|6rk5y?O; zwZ17VwHq*{Da@3#J7Ov|{`);>KDm72GXnQesbrxh9{jcB#!~d3RX+8p%0G*?4%F%w zA2@#Nt;ZkuqWy06>$>_i;yOgP(WQ`j3ld9+p4v$5z)YA zOSflFq;qhpMCWYoZL_8sEPcp2)bnf4KM1voodro8_Hy?eVuMGDiU{S@RH&l10MPlB zB1t(aeSL$f+&?ctF`;}#UZF~zFmbJ`G@Q>5?j9r)JbH5kSYGvBFg8cgC}p(o2Mg9h z^1_HqoD+GSWIe?pr+tKgVL0#R75z>!ZxT}Y%%`P}Ba$Ox{zLyNZ{@YM=1ZcJO-NcC zAA3*6p!dz1)=(Br)@xCPQ?R(L4-~<&orEWjo(oC{PJ#``N&Fs9zMS{m(}vgQ4Ig?; z(krd&EKjNtPbTA=uovqy%x80rIwsaC*0;{RCi+@*Dgc>*IY4hy*;Rl2>(4#(&^i73 z&_mhwqkWREKG$*HzCV$>gg5E~61$`VY7}WuXD<+|gUFX~7p1C8%*VRI3yz+6yhD|+ zXbv~<9V3f{uC@Y)WTC+9i`6MbE$63;8=_+EBM8%_>8j-Rm%b!_w|LS(SVdE)1~+w3 zGM^w`o6VPCEmpmyHk8T~@@&(@ZvoDu>GacAx{oa!>sIR(Vbiw9o9x9SN-q1Oe44-3 ze12Vhf{{pksHey@qVS5sLl{eo`g)@I|0E7(e$4wfk3OeM*C9}67c56p z|M~T>B_A{4vIca}S2zDL6hRuSkcm`T_no(3IAjdMuSmR%#Ny`A<+EqG5goNuA{UiM zEXIOC_z{&IED2?bR}mR%lCn36onBpq^J)Gy;VU0$enw4}vyN0$O8%4wOD8I+pSObL z&syPu?vp+0p-S_w(U((RsS>dyXK1B#}>SE{g zX|IGTo#TBAFVYgHg-Wnlz#*0rE~X*3Dq2NhcOcvB+NGt+BIfmV`DUH^eJd+s{~%^f%}$5YR*#L0=RL^OQhYEyGcHpQF-D<^wRU{F$WsR(Ku;+@Wk07jme zQf^&v{^sHs{U#@#HqSV zzS(@{n}0bmadu+jE7!WDL{fv_8d@fLG0)laICiL%7??_DYa{)s(SiQiA#_ix?&+r z>jbAj#*z-l2z?9B`XluMa~qLpo;UzWY_`}J0a|tnnl->z)Gnw;S=t%qyLL4(5}s>} z_s-?^p7vF|H(g4&cr7LMS!*u0d*tD~sz*a|O;S0I)QVHTl^H2cN90#lQVl$ur)%B! zO9WwFG`T#W;xkT=Hc|{4l+`OIPF%!YvvT@2wMq%p%U9NJIw@9T{%k%f1_m4E6D|h` z-*BMfC66ALl%Q-Z@q!UO?(CeX<{)g=qP3XMFC|t_oM>KMj;C0X)M#B10*4uvP`Imv z`=sJ8Eib>sRu`ntHbOQKTeY#@7~L|pq-mF#K&^^}+$qX(IuPNDiKBnftqzJz%e$0{ zZ2Ov47T3TS7*{HQ!g9Udyo&n0LDwx*PAucv8aatB3(H(KyfK(mV(7boY7s9@Xh5`} zBMa6<;Y=c&W26r@{;u}?Tx8$3^5AG)Df0le;@6Cl5Huo8Rtb1oU44ld75=RC^{b>i z)QVkg4`5bXZEXGh=I>g+X~F&#^$>W*WR~heKUbP{dq()5B-v4djhQt7Em3{w6@-gV zim4w{m{H%&v<}qQo$lcHG)@tt)8j$66Mp@|>+XF*sqY^;3%_-!Tt0;5%5nAs!FU`S z|J%jJACFOberm|!&iWMjkz9_UDNkYUp<5k}TOXSH*Us$zTq;KBZ+9$}+n4)bdUOC* z%{%}nv(83;9$^oP1p%#BT$t0SM_4W}HbqX^7?Prgm9Pa9@x0{}&ywIE;6N;uT%z4J zA87t5h*XUp{=t%XeVO=a^1b5I%O6R3R5HFqBCu&KP5$WvM#OBcA3j{RRzef~+U1f-6#N-PWeloZ4Gpz0x+qJvNtd{*>lQXJ^dwW9gH^?Bw8Zs(N4G39ih$E9BmJm;@F zql#|lw8JsYMXdw1>RNQW&yW<*b;j*pbiHK1+h;GhIoo>3TnR2G2Rh@_F}q?A5!R6z zt0pmL3h$$5kLpdWbhD~a$e5Jd%XLXeCx*IRN2kvKxJ25hdUnF|Nt3CZdI-3XebPIT z9iEy#)sFR-x%o5Vm_DO55tv7n_BNIBX0 z;rI96ln_0`@7V8@fk%N*cc{VHY9wlu3Fi0<&>gL3_=(nm3`t=4AJ{Kazg&Em1qQJS z2&00IgUp3eJ4@SE(Rqq^SsHPx$4d9lRt}-Bn0u%+ceW7pzsG;}^aZEa=?J9q$B#wT zki%o`O(z_Q*nBY-=u@fk0~6usL;m-jT2$R$@8tdClOH|ebWPvt9%cY~ZZzF=g5j7O zoz+!<0?t@6P_bz68O&3!R%*+#P2sL8L~RBt)olD{@8IlUU()CItDG+#MNggV^#ww~ zzKDBbIbSTwHMc~p{#2sh*X{CoLpVyaP5Ub;Z?~%_+7sw`Xa3Wzb+T*21mQaJj71^} z&|GSiRZCI;3tuoD&jF(f!IFBSR6%Qg8bzFA^w)k3@x#MoRdB9C#jvOa`IBg%rU$-I$~tok?7vxxns@WY#E?7 zAn&THUZ3Mq{0tEohzGRC+0v26knBcfOTG znH!UM#zJQM7!xmhNA(H83`9GUzlCYq2 zm$zgKVb@%zl7oEMBW{rB|DH${XLOfI0n>EYbCS8!=B z#8UVp<-d>0;QUz5d&hIb)8Dt1oaJ_~pzKqzF*gJzYb?B-7s8C3kBpK*f>N2(>iX(! z{TauPFD<>r;dslE-*3{5QX7G6@T-;dk_DpYf?TUl9k$0qyD zR}?UbM%>Zm{Iae?b?4kNG|*m;R-XuPBAry}&_;`N%Yr1a_u3gqv0V5@Q_Grfnkjt!$L*@dV+82p~&I-W=_^tx!6lh~$2*X^u}A(*=pwavUIFrpqRFrnfn%MAf&yuw=u2O`NO z+&Se=dU#D7P~dJ+5W$qxl6;&~d5P2*htIr>q<$gl^1EWr?qav2$K5^9&BNW};G;9v zOt;&w_y`De-~}hLykt5M8`^fwHJ~Ad<64?mCD7KXF1y<2Pg3;wIAzoH7(Ts~> zN~>TD0v9wdUWJeq!)LYn!v*}+_K3Mn!2M-9UO9iFjL*c&_5P#tS{*6#*uLkwWb%F0 zqj)(F-Ip2L8+UTlec7R+cE)8l&>ME)xrNKFH)Xr*3ZMEQE_$ubFdVWdR zf-aZ5zz+$BAUj%g?cjWk?*!+8nnarGJW~|MB9@S78ES2oQ5tAB?k0)r))!ZeXj1b$CId7&LZaAEiSUl&a}^KRTBCe z8yrdP)ZBEsc+%{bt_;G7H6VbpRBZGG|E`p9R8P?*8 zII*wb<*`y;k!po}tjO^SjhHr`rwxfT#v6)8+U_N|f$O+w;t_=f2b)!X{I=|Ew`XtX zvDhs_{))D~t*DhNOK;^X^X-zPbC=ZXO3PI1z?9^dkzCs?xeBim*1p9-;)*E>W7M#m z)k(PH+zVt_KSeRBWLj|!t6hF+V3^uEi^BsOI%bR*w#9WjfBnUkm8Q^pN8A#Mzk<5Blyz934F8Na>0(7~>vdxrim6gd}#CRAYz%FcTwE zg#nx>FT_}iJR{G!zh<&mwIjwHQ3W3#hkJ>IE>Ty9}%%crQ{J2X5zlZ56{WeC($Njq!_t6xW8}r?(B(DAU$V|jKrr>%gaxegPB}3 zn2GlGS63xXx_TW#pL+O)DktP*77l>QKG#wZK5&Ykt3e^ZillNS`ox z_a*8H*mQRLuLbdMYoYM9uYGN6DZwdw4J3zpm1F9`W8q&&Ab<791S%sJi|tmbRNmB8r~com zt}|ed9i`-w2bK-x0CChKCE}-KlMmU@d`-^a$h-r|sJ(&?OZ{l3dJ;c%RDIuARYLoPSh>~r;WKRoL5 z7C+Cm-W`SS7nCk$gV9D>4|45Bc=LWey`n#geqYp$|jYwvsLUH2MjxETIb|46{BFij}0xV(m>iY0Ny&*IRYE*B$ zbUwfNX<#@nUjW{GB?k>b8+=$dmz#OD`%Q^|fM~nKw_YJYe}7`7v)#=`is;?z=^dkmu=3!=5MrwE`5r;)$vQoEXdzW z`V||kd9Q9ZL_6TT-v)nHb;V?qSvBp41Ll8N&zCE3TIb20Fo^ESmO$;0NPQE zuhg&au2gpWM|#S^a*@$XLM zPgP+na#zUYH4ha)LJD6cbO^uW# zFAXot#))FRbd&GyyL~sEG;e*%I8SWOue2M|+7;RbPYGOYZ&jyrHf^_>HG-zy_-3of zDJ-(I>1Wqqmb2|Dx?%LU#(pbK_NuExR-G_|ohCbYhm2ab2P;X+_%rl(vu&IyZrHl> zhCQH7zd;}3i!J?Z-h<2wm`!GUrn&_LwU#JMVhHuYTUmaK+}$OkdS&YC&-)$-7%;Rsa=P zS;%d#drCpS^pUtzh!y~)qqc>&IR)sTS$xeO3zx0FY&d|-;NU&kR4NE7{?PMNgdZc-~Se7d^dx$$#hX^+c7g-^b(4 zDjvP8mDiQaQS>J^k0`Rz5y6dAJQ1BfHd6iGi*voPg`hjui4BH`=P)J^5`h}Y1%GiP z!H^k8OESA3yJHVR#9(rdKbcSZ_bA+e645<(1aiq_E?~Y(DErG~$9Mm6Pv|voR;cvlmP1)_farO-;b;h_Gba2u3fGZNrx-z&u91!9qvUjXUei zd%14%ZA63KD172j7OwJQpzuafJEu`L>3p>e<)1bdNCFri?C(jw{8-8p6S>LB+yrL1 ziI*Et^LJWTaiNXJ#3x@Oy`{F3)H{_T_3+rZf0)o-Ej9vnLXOPV5_qr|e0C1=rs$uI zn%*3p&wn#t!e=;dS)VX(AY#m(I&T)&%f8zDQ0MAzNa_b3AF$sw4D#|vkZB;YHX^Z- z2m_@VDhq?1P@PmzdMxZ2-$Di%0vwo_pGo`xLFI*8ON1UkJXq zTEV+ut|H8wMIXcqcwl(7u{!)2A^;@6AoW5S{&0FJkyuI(ucAZ6Hnb+~w)g^xiAEEK z7D-?pGY;E!PtHS)+M@#GSifhpj0D#G%BLHxN2sEP)_5*Yva&0aD%a{cG>x9 zbe0;?x|EkX)6>}3ODz=pdbCgNe{BbEUrq`t{u#SV?+wwJimzoB{~>TtQ8sVMiDqnz z{n|`%qYe~%85W9!np-aki=;l-!$B)EY1Da*WUi* zldoMn`F4pwZoKx%Cpmcg$+7@S3r@~6(?DO%Bsr9zd6LI4;Z<=97vG9%p)y`nkz6?$ zJrMeKa5^>g8P9{Bw>&yLTFm`+Jg0vC-g93{C-1%0Is0=mFNTNxBI^!iWJEaX&a5}y z@ci>{P%CTCKX3QD4jhG%jI_qHGuR?-Y&!tFSf+HS#`7zrZR`xPAfMvKidb(9FCuNZ zX-lBJq;X^sVCig>&?br>OEc)oHXFu0f01_9w@^n>pl;sBntE971Lp;lCKgEqo_}6- z>AR6@%pA7wMQKB$q3jZ9;DT<#katF7*h804He-3?Ro~zB_aepI={CNtQAyOXy5p$V z^*nV3)iZzX_0abLGLZnxMQ)>E-^I3jAT#HdAc>-Zqk2U+*RO|! zk(2OwTcb7ZLE--_Q@`1a*5>M)*uF}e>+wai9z@0Kn1s5%32O(q8nZbpSqA|Hr)~4X z7`k=hJ4c{zY^VFc+X}2)a1CxQt~6R|!i<@RAquO)a@VhmH@sxA{{ z*kO>0!(fa5A&G|!C#tL`o>(QJecL?sE$967UMHkdd$dW=Vavgt8tx4|D@nz)*7gAr zK1cLW!b?te9c8Brf0n^POS{cue?avyH;?P4usm*0)ws7?M8z0s!b}Tnv~d1rUib#} z+J<1}{znMDc_!$4IO6uX4kg3~l-ir(d8c}%ChT+(WX+*PLaT)d5u4Anb~cO4dtqzw=v-`269CT%p@?XNL+FVnu$;FlfRU!|3unn$yOFUG5FKW_H^ z4(&@_ha0qyt4F(iS^Jk8zj&6+RCj0}ErletxPE>_fx!gv*II)m4PQ50gBw8C4t?$b zLpzROXJ`@Jr(t3ZUSMz6S>e2Z>Nb=Ew;&>zFxVJLs)3*+n;ocUmvcbOkcND?Gt&mRm$NH(Ak?l|R=kZX@ z?h5s1Wit#8L~nZ62V0w9L*|+=n1FAk)E)kNc0}KZzdx20y<1SHj)G5;497qbD(oXO5sj<5<71v>e_Fo75Cie zh8I09-*7eNbh#al-o9XWw|&3j>6VP&=%q%$L(?tPDEVY?0J22=Ek`P z_?T-~;m=nkTCX?~ljsdR;nAbA8Xj?hNjM~~qc-DaIa#!7A>me!j2u8DPKT-v<-U6` zGol6x6UF`B{f@!lOt+lM7BgyiUqY1=&ifA!q#p_7`c4kJZg(e|R}#)Qof<1Y?9HXm zq&+7D#$^oG)X(D|UJxIIIkX4jgPxSK*#cP>h0Be5Ix;%O9P5v6?alWWdk)+lDE1G8 zU)K{G$_@_hjrTYm|Ih0)#lCpxwfBeP>0sB zn&btIf-pU9&$EjM)Z*wAuE-;5_1AyBx#V&D@~=3w+QaBRuBfNsVD!Us);iH>xqPhF%whSt7BJ0%Bi-@Gf<2nNM}{{kt`RVCC#zwf;>SbjK*%? z1ht$)(9uBV!EE-yOu%uT@Oik-fnigJ4d`~dtk+V3W+-#~txo4#k7tIC-p5?E?z>BS z-HxF*J=k>;9vV@tP-PsFYEX!1&C(Doi!}l+ttN%U>MyjYhbd+^Rye+tl5X;y1eDBJ zIyz;@{lP>cJe9*czjxjn_lso^{fKoh`8eg=nN()U5f8-!;Yc=>&-xBJqp8?iEz1-0 zc>RGd-1D(eB-?-Po|t8=%u>ZJH$@fc;KzO}(%XwrdqibZ)S!(75}Y3oghHWx%fTRl z;hj1G(eA;YXv;YhDa@$WFEg2PAhot&QLE%$I`?*`ByFm|a!@;AQSzUm1}Zz>evT?M z4Q80&8o}qH;6rW#*hF9E)Y`J$k_)X!zEiPO+Nv>x4;IZmLJ5fdbj-@l6LM&ITC9m4 z3*%Aijh_lcl!^pC!`qv(W7$G@pUdampL&3Eg{5_13nA`p5(Gr|!d6BC%|8u9B7p9~5+2cphoBp!&6(a}hI){4a#4IjHX#{b>%y~=UDx*;)LhDVq2mT#l(2`KN<&FFL} z9g+#LfpUHmhDBaCF@0SaUr`^zMpF=GkY400vK{zGNf7(&Y3#(8~im+WGC*=5~+;wh?+Fiu0;zK>d4fG_BtK>E@3Htw)k{ zG+OPz$&zztkRI5ml-WY*L5UR%v~+GX^NwP*2Da|-ulS-b~|foi1GUAQ#N_YCEGIj<2s43 z+GE~^^xGHoYx{TWt=~z{n7%cNQ16vQ#MytXU)S}kPE9P`wb!8zKd7s!6bE6FkPUVx zwM8eSio*55$J9z8<>H91;c$8pY?@aPR$!clve_XxB{kiAKTIm(S_sYb8I)~WMIERk zmU59YO_IG@!% zdF;G;sv`lgncucAwvKh!?vE|b9`fAom;DhKzwN%+VSHv$AuvDO=(p6nz~dRB*(A2= zuyFBhKgZIXpcQO8S%v=$9*d%(a>+UIYV^n{?Foq+oxU|BF#RqoD=v@nF6ukOg#JwG zo@(`;$w;9PnQR{^Z#&@n>-PA>Che8z{bCJ(rU$g+AcU%V>wUCUyZ7qy#l?4iz4`B@ zfzSR@&u3Q}>x>Z?Z|B^?HgJ8utsV1h?UZ6m&r`cC(FmAG0Cbq3784sFu7*g=r7an~ zcI?4ba?J}0n|GDkM|Q8b#7@mGoHQxEPR&m&1ZGpI*}%eteH5IRxz~Y#ny!cshU5Ue zsq5yh6J3}@Bsv@3Q9Ph@0%T(*C#xO@05dx4))|-Ws3pD#lIXJSivZjj4RHHRL4Dzu z{UOyj?GJ~)$TJxVz0DsECBtFAd29YF`Cf(mzs$Fk~yVvlk$=z zxv2{D27`ap;ezV-zrdyE-x=snb?1^dC3E^Es{%dql&+K)8K=RoKV)CQj|n}H+y|1{ z6CKW=RU7m$U#m?L!BC>4vWi`3by7V#-JP_c%Gz!zVYqAG3_%CmHgU0YNklsEhlZg5 z3KG03c5&{@AY9hHy=(wtO?_@==xiW1kAhqR)I}4H63{`6DPd?tw7ny|5QdRF8w+$p zVTd_(v~?euLe<2)-N7~X{dB?SfjL!`4(UqMgED%Pl`ZMeNXV>RfD^S)IuOSuOd*TC(oXJ(or2x7srLL3Z=R0;Hgu0t$aoK zz4sG#?YrOWS61K9P+ukzw5%W%mI9YK=eFN%4f1wqlRaz-*&-!jahd0yVzzY^Qp;{{92~^*S%+eLDsG)sFAvnhw9` zZfzeLmOcq!*<7tGZazfNV7%$P@713i|H<){4ubv_Ydqogradbicl~ZIs&^3gKS}63 ziQX-D+(ibAu4~`bu@I7bR^*6byg$at9n1dKoHLeGkw%~=F6bO|WOu?jV-eymOfE_^ z5qcznjl4^!w?C~upUxMXe^xBl`^xG)&=m@XP^P(|k1i9jx;RtJ1~8 zTmb<}HUIFIa!C%Fx5uw-U|%to zF#8+MrJ&RwxRW1FmUsXcKFpX1HBQ+hz#2Dy%=l~gc# zV87Bad6jK*H|De$TEd}+w)}E)C%Mm075uVsR5tf&&>v>~1Govv3R7TvMyPe?dMpJbioW0y!wPZAbf3fZD1pPpmhN#ev z;9f6eG6i{F*Y9&AdWh~lDlcuCC;bRKLrHd8m6wO;mtUlpgYB1DvKzzrjn@z9_LX7X zo-QDVQ@$hS1s$Jn29dxcFp06=<|sf z#`Dc&zN||xbz%%LW!81g2u;`Io*Q88i0yG5O-4!Dh7PJKN~vVciCs#YG8%OXsD6Gg zvd10iHAyLkEb-@cbx$Sz`PGkB9xC23pu$u2H)6VP%OrKQ3-~bUXbw>>Ad!@?oDpV8 zg}}l;EG%Rf_GS0+Soo{@uA5ZXAMcx;8@{J?F1xVssUQEpDlau`o>q8|AQqQ#xcLJ> zyHU8#vpOW@bm6;)auEd7s?(bsf`vrptVv9lr}IM+u-~sPppnYG*r?>1KU6*BILznE z>N~tE>vvqPaJXAJ53BC@$IWr~A?577{I3!VbqZkflb3Rp#)~=fI9QSIsB%8fyEL-b z(cO=+H0E{%!o$kdA9lH@ycZ15&!ytgDVs+WSq*AV5^HRJgD7uMdoC|8Hzdmx$gOWa@}Em8#bqH{@Q_OzLupX z#3BWJmk?a#$^Jk$%;XzKO3eutHp4R|$fX^tS&zIa_;BP4!Oz6+(0n|KHE~HXl?2Ht zYjQtKRA1NpPlo@#l$Sr0a!ZRkFO+zooLI4IsQpIu*>*KGV`uoTx(`dM)U75)9R*Um z^emwoBgl6;Clin|1fWQ~AE1+*bO>cg)VPlkPNN=7)aFLi;A@LhzF^Ro>h<2`^h6`h zoA-BzqnKnV?{M)HmPu$((3j0H@baCGAPwd_kjV>Z%9KBCrtv_~t z_mLwR$n82LSuV=stM%0t=j_o?`#d^3_2O=NaNeldv` zh{&C-9Q6`QwSzv3$pBC9sMY$D#cb`v*`2g!(@WXfhm3v6UVE?T8YS00wYsB3kT99* zOJDj@_KETn&u*y8-{$awnrwdWiGM43X=GdmX7ukQ{6HJq@Dqs6G&`?Nw%TZlu(s`Y zT9Z$P<`R^jiiQsPVe@-x^1^Q;0Y1|DrMkTRcOnay@KEr876z@mTNgH$eyg(u`ZIf3 zU>g+>WjN_ZOnD`uT2OheKarK6if2Ug-`mHUX4?10Z*<_`ptk>&1{JE%%?mAc*=}H4 zKXK-uI;guz4w6z>O_{b)h7u*P^KWX*cOhyFjZq41*jHJdzcz5m*u);&%U&I&W3IT6Ke$2Rdh*D4&!TvX@K73-Q5UFLl)A*9fP!+>^>iZ-9$V(x1;mMo!u;ztUz zNB8zRnEt`auh4rz0-YfdH||?!U7(i74qX#pF+3nVCg3JCiryp#ajOcL^bQlkKP(uI zMskwQ#YmYdA)6Rn%!magiL zlA^!!rX=F$s@#q|>+uxRo>KWa^VeDk9VKOAr2qrBh6P!Vep_lWS@<-lZM!FlvKjfO z+(9aK;zmQRr{b&a5i?qHb+rbn6Oy%70Xk;Gjmc6j@hB3DsBOa6&Hk%^nw_S4%Pe0H zG95#01NKhvV)mEl(4;oTpwaOe%Y`s}w&_B2D*^zBH@1U}U>?-P39)bQQ&JjFt*sd3 z!dvPn^HgISoBGr5SrfKPxBy8IuE^Q8dFdtDoIG+id%d)wYYkHcpuWO1w#K)jZCe9K zCrAWRHC>$kbqRHJ`4Uvp22kO+Y(JU(TH$Add&p!k-V7{SGY}an%y@@%J%u6fOri6G zj!N512!+NH9-`~KS>`&)f8(iCoMgN0BgSjiUid<>#q~3zqjs*y9mdRtV?P#PyV!l? zvlV_(lGh7MgR#VHxVD3anZxFHp9uB3PN~ExS8wPEecXIWjxBqG$;P^F(D`AmIB|ks z4zF(>Hd+vC%UwDKPR4DtTsw?d#Ftk$xt$aFDrPm`p2RKF+1By4*8k<#e%oBxEBvzS zC|gzYG(y|pfs#kR1R2)c)sAV9taKu9Hm|t$!b#Fp~DB%^uk@MuDhSe%}=WX zheO>dN8ID;Eja=M!3P+UecyuXj73~%9-4NecG!-d24(aEGFK7_R}iRzUxGWijz*!P+Hp7+Ubt>Jt2+&4 zQ&Ax#qRqNow`M8L4M-mQE|5BVSl~z&tG#3})=tp7=8OIt(%N% zQB%pSE7zJMKU8Nx(??k~V=>=8O+{?AZS>yeKk$L53tKy-arX!H>y+w`G`~8%xb(ud zMf1-AOSY!A*NVnSCs)avX=<%n3kR;_b0--gWK<^J86CP_I=Cd^D%yM!$k3o@T{wyq z2esj~iXh+RWh`2C<7@(tgjtz!%HEQ?#|jrnVB0v42w%;bTv4w<+gRWTyJkp91;zu! zt4gGa^ts^0QbvSMFki75L2Frbg?nug$8yOr94Z1^1-FJ=kTTD+ul-QM-|GrnjeN?L2*)ie zmJ0+`(pBF@K2uubw__sK#w~&RFNC)bLWaf z`UV!Aca`-Na7X&i|6k_b1x&8&s_(6R>T&A*KK1BFbyZhamAXpZYN@-b^j1kTBaNha zSQ>R(Gh=2n<6%5j&wv>$d%(=NZ2TB(Fu_U728UsS69;!YV8AvP2$zP0WHNmZr z@DV!@z(~Ga10f%Qr04$D-gT-=8jbM~byhVhrrWt(X%%O@$)a7Z(E~L2H?F~8o!9#AG@9hsp>Hx%z-SKXbh^Hw z9g8I66V`QDZi&IbYQmIZ6dh6n7oU=NW@!4P6GCa#fH)`hWh(UcI%oDAT8TFI3+99Y zL8jnzxm--Ai(2I!4Mn!E-{!1?gW2NAK!c2Hr}p~}x3Hyd5Kn*PS)kC*Pe^AX;q$8S@YKi6NE z^w+x2m|;S{C59vMpvb?<3M-mA(BvE2f7XBKawzoXhatfI{^jsk=*?!H8hw_D-7Hcw z5BsUbV4;1laJVE9irrH&<#xbz{$%vl2MiY8~<~96Z;0aC!HI zgYP@!?=^$|ZaUtU=nz;U>Y2Qi%2*4V$?Sm(t4cj{A+MHxB@+3SCD7_52qKeDEixuS z#`S-GPj>wLzWWe}4E^b={vgW0P8~E3W9`P~2GN09Xpj1Yo$N_jgWtTD-(dQa^@QMa zY{WjM0p&1DJjadI)%1gRo?cj9UO0W{gXvYmZrU@gwV(Q_wbqQ?6j{uxY2OEt6-VMo zkbPlpyB#0Luz@AWj;@1~KC*GTwT(~2= z=hJb$dq;c%MV9=5@*nJ4&DGwrey{bUSwz42hw3-gN8tF-P}N`)SQ?1MiPkZYmC;Q& zPKG*>3(W-AQ(JB2vd!JiLoXg`&bMZp&AHaW?>pGq-OOgU47NgVH>ZzJnD5P{bIsY= z=3H~)_;<306Udf#2e;ncFhfxEIqjnl~AjPc zf!lnRIM2Y?1St0`{k(mRptWQwmT_Um{}nEL)=4LbhYj!iz3kAx{kBoz+=MXy*-_5e`*a%t@3>rQ?f0k`H$rNLMcT^t;9O#;8jnop(OK>{x*RXoCS_Oi+-Yq9cK zYC+%>K8WBr(SHf?a4-pa#xjL&^C3XvoaLo8YE zZuFmPmYTfoY?WHPx=^6C!0u!$=ERfRH^eLYI=^ZVl)ul{ckWy)UU9MxZ8Hzv1%L$_sE=p7>OQ$?=%O)sKDl%VU!@F#MR@-0>NNx(K{KP zOr)k#**)1}^iWsT4;~9GwMpDDvp*J2<$SStAX*H@64p%8Df=V#4S!foRQwZaE}FD_ z+4P0kW-jFS`=|27c}o>yvAYk}tOIA;lLsx;OvSQAe=J|y9ZgR;(-R88IuhFc-C!_M zi?qs&Dq18f`3F~0-g9;&iv9YeL&+z?cF{=8xa(KF09l-c9jL5yA-iBomK zkV%1{@LJQ}WydgZ!Bb)96)c#nwqnqq*7e+PmqeQ zR?EBZOQsky1HMjt4F_>>fbGh%r1gz5!A$&st_U1j3Rx8o^Hy`cC-jA3td~+!w*unj zC9%+`10n%yYTvXm&-J_N2cgS%d(P>I9OA&=!ay=P|40adIr;UwMhrMI^H^C&n!^F(+`PqHjLtJ$!0I z*-`r!Scd};tV6LtKsj<7_w`If!k$Nl_{lyLQIMJqS_9h}$-x?QHvFLJWu_=0z^A3d z^TUVnZ1q&Lw^cu09LoTj&5RX~*Yl0USoUakEYZj(9H-t&}uId)fKAMlwT_2Kmq63}=i!Eg5KVK1Ku!X3rTax*)+)|%O}De(Z=F{@>ut*KeM(tY+iT4$ z>z~&xujL~sVLlZrBm=u`E2{jb{gJ}1>eRU3U(T1)TTYkOcXg;j?ve3D(N283@Gc%gKD-xT3J58S!J2=H0~+xB&R zzJtEMKf6!8;qKikt$6KLP;p->tDaEjj}B(g z^~2Hm((L{VAQNrX4hFQ?=jRzb=tKHY3-PrsX`zV^=5~> z@Uc)xtoj6jh#6{mq{%nPsoOV{b4b39g$@qXqGt@X6gmTq6q)2N)vu}dLZ3t`aXp)H z_txPrVJ2+Yiw2)01hV@+jP9jm{u0}-96tPOM?O)SB9L~elo-6>@?Vi-`AaI#bBF)s zkzbpdD&51!vxB!hHqXu)A-J&7(&-1Y1c5=&HpoS|4<-?Bhxf+1EIww_$Ip?!o71k~ z%Ai&@S8j-eV|*^mID*$8oLOCo)0(XK&K)T|eD3Vs<>|=>%d7{b z!==Pw^|9>sM|}YiF9W`3DmgAuxwlrI+4sfrrw<*`*HDE)9X6;#l;@V%2ey})s;kiO z+KU-YEi=;3Z9HK-Bu#WnR*yY%_t}S<4?UDy$w_HzwiITo)rsxvtKg)UY5f7uAv~mu zX%YE)Qe!KJ{^HWN0=$s-2CB7T3FIvo4UxR06R$R}x?(lyR`_#yrT@TOO~F%uRsn7% z89rc0>#U@m92i+KG2oPz!X#Yi>bjhPc;)#wX; zzk2$g1nf`3s#X$jyAq#{S`mLd?vGf}>G+kmB`O6K`=rfW70o!~W>gLpoW^n5@#bM; z_$WId5b1dp@Jl)oIrisFvQ=?iFz4Wd%*8hgs%EhLyq#^;29H3c=ta^#JTJRq z@n1qb`1DKTGNzwkGF#)i=4M(y{M-wJP|+(U$e-Ev9*xRSh(1am2+ef+Kx|oq9M)aD zA7T07?c-XxIjnI;tbe9%%;RI0OU&U=%#_EpjtbaYC>Ol@Ppu=6yA^*&Fa1Q^3FwN3 z(<$HhnyLFo&68{%c`!kc-(=#!kLrh%sq*l1+rQddJ)5Pv%0HRDv@v)ZzT=^1#6e-F zjYCj;vBjZ<>S_iU#(a_L8zgcHj?pyj&;(B7n;ZnGYex}=Rcq?#(LF~9HMQrl@6S)? zd8r6>s}%}fbNa3r*L;ynr@7{fa&EmZ32pNEb8=O!aD8wdB%{!$KU6=3o-dF5C!8Fl znZ-v-RW|L4qRlMW)R1rL;?u#|9CCF#H#6Nzi+BCVp=jsxpR3Fb_G%5|)>voa&IarI z&Y?t;+~2xh-QE}+&_s+r>0_ZI64Rng8#S@;9`u|b^36SPV)!77-flDsg)kgL!Y#Rh zV76euP>;Ztk?o_tL=ZLhL`h#H;fK!lA?ZC9@uKG&yFjo21))6ge!7$JnLEIbh^QKb99!5S|3tIQO*rNIIB z6gl7J=PMLpZYo=W8Hl>U+)(rN6z8brb-5!tRwnY`{_7G4%;CPAAiswx1N#H_H*&Gi zIKe?zbbb$a_1}@X;7f!D8pf7kXi=<|oL@Hd_TQP^pR0Sa4C#$$Dt=O-s4opbcbvVYC*nswy3N?ll?#ZI6I$dPJ(-daWv)UVc)B zo%WA*`~GES{j`iIh7#P6+19~y*pi!vkwrjs4yq{iw)Xmyk<&AG1qd-Xn@Xn-KbY97 zP99i4aPmvdUhI!zy{&X5_SXC}e%pI*DYV8XmOM0i zNOq&^xu_6_oe!fk{p56bY=)?UCa!mLW~{ZOOrNTy8*g7+T%1W9oi#d?*`tXW=iHKU z8CW_;cMo_l!$TB358uo?WO50_99Wm5)}qKrlq~*NQ=%&sArZVp2XQ2B!ARg=1C3)% zgZJrn_!2o%3!$O{6Lsf^Zg~M7N0IO~7x9yE`Da4+&X2d9Lfi^Y?6LPmf)P8{$XkI} zc07$YjS3L%Zfdd+R?eKVCJ!#&6%2KjNIHf)moJuWPL>JMIKpgf|9&drvx0Wmw)2I= zuTCbDp~-B%7Mygd-pOoc%<`wIGf|)AFC>FLuOgk_B$ct!)na&VD(_3?4+d4p>sMZ! zfK)iP-?Y&t_EpKbJSm)B4Wc5X%qT}uNNQ>ZyjPSbPS@X_Q*CrzXsLCgKuL)=)f3!h zZo8*?+nc>eu2jl_3vewW5p<-nD}=dkA?oWfU~Kt2eu>7Jr%8!lZTgP8`(J(V+ z3{Z;brGy87DoG5|TXj(~|HX09BsvnxYP5j>&2G|8ZIGi70tcld+!y6Tz;Du1VKoJF z$`yk>ZA6l;@@$gd`m5-oI6=WXp+#A#(huy=U0K@&$! zl|;-UGz=!pp&D_haQn$p_gQHyou@nfY`1iNLmRZu8r4O}>{P$hrQ@~)0KCQHa@qXW zARf>ld?gRJvt~&KwzlV}=cJ5b#w&sWJI#d)_#V|y3WG6S$2gVJ@6W!}yfuLLEMBZ(b*SBW_TiGp376;bO+h z5EG+yP3L`%@+6WATH7<5?kCJI42yoxEZX%Dk$ls^AuX1;KPl~z=?Vqt0R{>I{VcK& zY35f#2z2$cFf^gW0&{Kz&Kir$bBJx2%C2TA(P%kap0f)jELOo_p?dR~WT7>{gdZQs zX}Lr^o>29vP-|Qwb>-A8pGVr<)U~ZMXL@$3`C9e8U3In4Nmy8IuhjNgn%_ut)oFVW zC%I7<%wip;+Q=c_@EMb@e#GCD!4?UH3iW8Y45iF_quHHPm8ob}PF2jX`~TV=zYHn$ zMH1;kd}bz|O~%zNpZ}YSLL8kpuKvlBxs|gK&oGFKL=LuJ+NXrt?cM~ebYeNhi&~C9i07Wv1 zQ?xq~3A1izfzYl@SFg&|S4A#n4oW=)n=8KWEsY{!fW8W!OLP;apD>p&JGa5<3d4LW zPM1|w$I4i`d7hMHM($tG>`;)5gn|TH#l|hx~SxqSKouf{kJ1JHQ&uaiI;zM z^=s^4hQFONKeVd)tN)GzmE`2P=7-o)o>}u`O^|FnH5nxHn=!A6kmzl0I{p5de)Tps zwl+34H;GbvV^#i~RdQ;quF7qP_ZBZs$@a;kz@kxWG>V`>;85`$SAq@cd!IR3uV=gE zayMJApM1vKUwC`{@`2XFADErM>pztuWWdDi2Oe%6xNPbS@7IGSOSV1nLl?GBAZ7#D68TP=lSDPHa*bq#ntxQz%thZT9^b{EnLc3k)H*{J ztL6RSP&yq7^Wp0nR<>@a`L}JV&iM{$Qp-((6LvbHOxD9*SJ?cWOXRH z-oU9~D=fl{G!1K{o{y_~ZE<}aTxz;wO3+IowWZGBSR@(+T&6ssxc;i%jO0&Sn9)|h z;%@?a>-9Dlt_0Ld;L5_j`>gH%Y262mXW{e$uU%r(tB>XNQxHQ{FmkO~RgUKK(Xy@% zvi0w4{iS%uf}zB-U0Wgd<sB-xH#pj>@^z)mW$xv*r!_o8Zn3XXU*1V#JC6I-K zxquPf<%VTEF^uISU*DLjjirA7N~gNGcyiyq=g&0tDwm6f*FqDu$zrR%r?u~-eAjAS z(MzU+h`O@hN5B?5|y&txH`9gJ9 zuzb>Ie>j3s>y0Z(D-`@95{LKKBk1n}OV9t`$A0jR9|)+3*ZXV#tnBle^7PzzlDPpb zP+s(w8Qfx3?gNiK{h?29|Kh)TNEgm-l5~+k!$sudI?IK&?uw^x`QRL zcXcIZt6i_v5619|47&=X4|R!SR$&=|KOwTqyEYGleTlbdhSDfyKqoKy$Kyc$0FE( z40Nc<(`&^)tQpalMY@u}u6Y|hnIy;^?3Dv7L)MxtZ5IDfiG0q--XYn6YvOJ!P_hmA zT7fmol-e)0ODER-rLjB5N{uHelO`XODfUzoU+$I?wAx4*#F1Kfp}?dm+$pPnQ!Ps5 zoO=B&g*|smWwt-BB7cMOaRB@qmVe{MU;p`KW%wJG|H_v1`CqgB{}#&s@@M~U%l~B& z@&68={~x{m@3#DRx_s(iXa4;y^#A4F-|h3CDNFfAW;HZV_&lxWydB-sp$3?B-CL;B zE%fgZK?;3sgfP8|2yR~kOMNSG`sSZB>xQQ_(7$a9xeV!E1;dg%4{>L9C&*qcNJCMx$4(3_m}!wZ4*CN-W2klX9B zUEw8O*NRkzst0mVR8nk21D0;Ju3x8jbX#w+&TVMftRxaXT&gV5It&_YmK@6x=Zen_ z!&^$Y3**9!;19yOt3E}J+)0xymn^v{vgIBz*1$OIXlrw`rAqmA4%w;KOKMy$mNdCj zk{p-I?=GYUHo#xul1nS-Brgpvzs%mHPofu2poQO~k-i!^gGjDLad-tHF|ayjjjNbp zw7CSik(MHb&HLP zhJ4aIilHuWTGay6(p=e4p0U(=YD_uX*UscF=ho0W-gw268XHRy@T}!H`kp*dpXU=y zvP85Odr<|o8&X|Ltbpweyahdl%=-HJ<(BFfGTR$!87GA8YoL^d^RUm6pf(1!C$WEN zBp;(+;^&ZYr?rf)va`KH*rD{=R&$FRT|?v~SOmAy@!s7zE&0r)wLPM=uac);BEbwQ zBx-H#J+Vf#8HZ>N{K2qEwRY~d-WiyCu_BHKo8U%3*YTc#`%1( zSdImflfnF%`gprBdtj^_vlA1c{2AZe%(?Nw`XP2AX=T?7VHCWyn88+s1>bhX&YdCD z8cA`Op8WXa$JgEl&_v@lo*n2?)=2*$v`h4}+x>q$@$r9m6;zHSa>)SU(v|( zXqAl;M*`9kJcy9@8StgXJYrj~Ihc2;|rQKKv?9v|f8@(3M?8M}ZU z&q#q<8=^H8HjaUg78XQW$;-$>L$bVSv?MofK#Y4ivOy8tdYJ|lEBtlVi>p{8uHyHy z#k>I~Ei;qnFmmT6{TgH?+KJ5X)rMw`D1rVHWl0STzm5Llyj9T?5}YqW~c!~d*4gx^LKeH>ILGcC&uPRH2k&=~{x>>jnC>~;XLF(caMc31Gg zV!X?JD(wxWI!|^}6WzVlWX_(b?k??4`qDF<`A=KLd){?#A|9}(c9#y!sWI=n!?8f- z|C}f|-la_3>&?VU*-$<^@AGeep?mCj_shX-ATXAR#r!<(U>wWy3f_Dd900y%gGil} zjFLqM>lE7}>k?^e2u~}=cr->5AmT;a=p9iX~nvcEtvE~Nu$#=f){7DNF zE76TxJ%=P}j_mtRFPH0??FQHLtIrk3#|qn@!87@#ic-~oh|ltDi>tWKd8gxKv%IP6 z4m}Z>o6+u~i{0UgbwgA^V(m0=Vyxi1Fochv@NRlfX!P)12oH-P=SVwz1KV*ACzs zuA-4hR94voHPIu$W6QmRS_3QIeDj{3=RCddau|8kz5^ylB3do(74&zGfL9Reoi~@` zOeM+=LANd1083tVW&lT8{R6`j^~Rk@+MW#FkATd7vzknJtzDKcZMg>zB#Fq$nG9)X zycjV383`bwfl2F{wc1EJ@{=kVIT}rU zV_Ffr3o0cX1r}{q4Sa%F%1XJbxsobm)WQUQi;(bznr|{=n5oR9e`euJTW0KNS}E(I z=xZeYqs}dr?}l)$V0FxQ^VPi*PzjZ2jc@-`^GPL&<+pz`zpL!`B~!j??q66dcYHXs zy&n4T9V==%aD=3msbIIzXcW4^RLE~139R4si2dc_#6jke{K7D1> z7ur)eg-~SleXi_av}7&3q7G@koF=CvD2BFP7*C_T<_>VB0P!3r|-$A-Q1B4mFjeDb^>F~w| zAc5YM>sMya-(&7O3mgMWDYwT@_R8kB-LX6EeqFqUAuc;)NJZhwz9m%JnAJr8;w z_u$yxm6mo#|8P!7Q_HGQZO}Ob^lyL_*T93NGekL!HB`PwN8QCACEpSENc5Z7E##&I zskd=vZUjuv)mtrpb+X|1Cy5?0b!I9n2mZoj)vwi{-{{L9^Czm=qVJvIP$|EZFNIF` ze8p^)NXEB4y=B!7J2jbx!FnuK56aZ6IfrW&V$V1D%Ff0*iPqR2?}2dmfOnsFtd;1* z7H)S^#`BIXC;>fbAz>~KVn7>(t9U?bV?Cxpu~Nvo%B&Xt5^hV@SY%AG6KQOk^s(K5 z;4F1uy4VOewA^`TOV)ch%}zd^(AXblZ~u6BD-mWmX-rrbHTa8yj$xnUgpCt z;NGtbWD1$UnKQDZ{ziW(Ys8Kn7b0|%r-B1!g}0aYsFwnQ&-%?+OrqG3Tu$;W4D6L&MQ-_s1VFwycxD3U+WhN6~kwKf15K)sC2c}?YZ>Wa$g-|IPdqh^FNFuTLid&Qm$$;|i9|V! zB1hdt#UmleWe@6UMF%e@xtyp?OuBlWVEY;yN1mt!GUw)g5_|VD^H{9jE^U^)On4F8 zYERE}@yeG`Lvi`lkuv^g4^Y%+d(Ha7%?9=D8|#-YffVY~&oHU1+rmRdN37VA)o!2| zf@8xLYs{p06G{MWI-PF^Ncy4pMY_B1W+neEV%#JjIe%W`U;N+to>ruL=r6CSI&>eG z9T)fVy7BGzO|$^LBn#eUxtPb_iiEhl`}nH>FouTSP%rD}hXR`1Ar0Kg8f;Hq;Ts+k-9KyG&ye3iiJ9)b4gHlNrlo zzUo@kHeL<%>bRN^%0MoXt1mSc(bZ32T6 zhfzBP>A2s&W*1W!H}lCc`=q&8J8(k!qr%BXUy08 zxtib+pC2H;^e5a9e`25pknr&C4Yn`3zvT{pI4JP4xzNQ2NKAyCb%z{@q@APHTD2bpLx@`c(?B4`CycxO`W zkgw&p=ahQwub5)XRe$J=?R64?{h`qQV9fE_XF~p}Jz>Ar7lW}P14dmzV+3oSA<&CN zso(+jQ9r~lYAxs3O)0w{2s{;yel-vcd^H+jpO+s2~ETQEsFCqhZt{49|04jzyxhhE?7OKPR3QwS|D`3 z0s72oPWCV28mFU@vKFiykc5LMh zeAKdiD?ZzIPax;D-eAQ;f9$p1YWu?VW;p2g{qT%Bai`aMm?`zMLH~EA9{mo#&jJu* z1wQAEcxSAb^6`Jb!nvG%3uH_O_vj5`pdBd!$#*6#ulLioHCW^EUt)bPuxfe`tR+VZ z@;6K5Q4{AxQz?NdVX<&4espaAonzT5(JkIdl6wj8)!bfDV8%`agI4CE{dn35 z969Wb--qd<)weFet=sTT-AFLe}eYc)qQB?l+9bu!C`ZUbNu;ba)}9h*IAZ-wwJ$p;HZ z7A!hA%3AdXRMBC)tDqH%Oy^W6uLW8vfJApY~@0iNNvYj6ZTP z6nIlWk#pirf#_bpckaT6leTI-oQ{>J3&9}i0Kggs?YPftks#5Tj70o?D-=?>=}5?j z*Nd00BN_kGkN;^TdNKCl3v-e5L2j6e>CGuCd*OI!>fFQWD2VRqG6=fiJdw6I;kigV zK!os(1Ue=17+M7s{SYWkvCv&ZUxq zPEIDH`CKmJ%jJBTTrM9?PMmt(sfkyg{9-Pj&qYEpClT{yv%XluiG|c%x15M@ky;xs z#FFuPv^v|Itw!tdWUMfLn^WhKYEINmw6P_fi36+<-}VE4@*<&wb~CpKUmV^*;y zbO@Fq4#TombXX^jS+cF`XBY8BZG-}!SD`(3;m#Qiw4}A|yYBgXAmG@$G&ZnAjG)h3 z(c>rWKr|g_NlKBxUER-j*hiqRJ3PL8@BXBTX0#M-KiG`5JGlA+B zAcSH{v05vV$q?8PEL&y4e<_4acFDg`;rjt!#9H@Z!%wL^a!I}`gionYJhc6p&ph*dgn% zP8>_6qK*7D%+pR2tweTJFsrLm>Dq~@Y+k^l)P0AK_p-|Ca=g>9Ch#3Z?!dc@RZEHh z8E8uAXRDE;t=)ucQ$DZ#CfYRibBY28(UAI<=A_>nWTDLlpA3skJ0nF5%lH`2k}zfL zq0YMcu$tz+y+egeZeedG9LXJWnyuf8EbL1=3&ni+w+6o#Ix6`ew1+a8PDM2gS%KR} z0m%9!#$h;D<`KGB01yz@zR23KNaI?A)muy+;lq)XK2RzZITR{v|1T}E(gU%q|HU`G z=|z7wMh8ttj^7{6i-3}k-hVtYO$J?AV@BI5k5r=R_fW{8S2PbVf-7C&(a3B%xJlcr zBbV~m-`eWmav$_4x^J~9+sH110B>2S38PPUYh&7vj47eldW&Is5EY(q9xFM`znt4| zlIqSrnTz5WQAj7E5xyC$UlNB&Vw>!y)fg_2DZD#IM`qPEsbT!hcZGUEjj*|_J!qGk zW&6S5X#J-~Z}R=~r?Tz+OD7ulC(9VxGWmRFbo7d9B^~|pi)(jwEA=Pdam3YOxb@H( zmH&#Gcn3A9)J$Dix>>$oyGAF<$@?28WbiNTZ)Z=<)8emHu~$4t-tk0z`EA`h*IxXL zpeRhA8kw`8=b5;{q0JE}60;W~B0`3Z(z7afAn9?B0jQ9C#b`5M4`}7{;tGM7wt=f# zh-`t^q$k+iA7J?xttW^S!=t$Jt>n;{WemBuMFDX8g1tPwFt$Cnh|SxSe|BqYqi+h@ z#)<5fD&QnQLUbK_ZlHT8pg}Yla6SIlD!A*w@>DRm4<1|whftl{HbD5qo42=?-6}H9 zQSra39{uCTuU$iHD(xYmM+a@f*xW#lJ?^;+uHs%kVN29zeqG#v*cst?K>QdIvfzrF zB*qIvM-29<(Z=8c(}M!S*0Lh#G3v3^!^IB!f9tYroQ4mxG4?CAG^&r2GR+8%*JchOMb9SjtFl)vfl-t_;_y0spLwzXeoz~WN5@S z;?>2q%;Z2ub1rn+u1PJn$PT=0%w!$}oh!ePXm>Ir_oUy$2?Wz0!%&i8SHjTd=a_kL1FO zJ%w9#>?L(@A-Z&8UA*GY9kViv2gXyxySnuA69?}p<%4N{RXTny$#2T7dvg<^)`T={ z@XveW&9JXD5#0Twv~^`qz{y2}lWDz>85!d%tV2FHdcjeGOvqF+68;fQi5N=^e`n*O zj;5OaMrR=dk>GY;Sys8_E7$J$$)CLAS^o*Y$|_=zSFB30o>IQUz7x~4r+jMd_0ZH&Yy5j-6C!MCM_P1`6w)9P&@H(!-dC$VaAtDPb9F&bd zV#Dhhrc%VV)pH_}=E^TTu>0=3AFP2oluD+;$eXr5K+wc^Y5PYau~;r1|N5Ridsg?v zhVM_z{~|MsdpzW`(dL~!U6~1&XKdw%?~4>e0e`3f|NdTb!tm0v-q#3qCN?2AuYpvXQMv$mDjy){1<=mbw);ze0P@^>!Qch z`e#~mUl${GcO*%6))qICpyD zqviNk?INTusf(vhU4#J(r_(;8yk;8;2c2Z{)Wt`YQEt2ycn&Y&5p+(zOPX)rJ6cDn zA~p@pQ9)_Hnd(`Q=#eMJ$DjD_C&q(L<{Q*47g5JLonyy32|sv{S655x$TxM{nK)f0 z>zA~k@kzA}pG0fMm1ylDAbRGxu52>!UG>lSu*qnM`(G$EfBuPmr?aIOe!(?{p&c}> zvOa7teiBwIr{DOxTIS5&(<|HG5B(QRsp#%+S1)(0b#;vlPdcm=Q%j8G-NAcUuaUYu zGyBrH^4^5rKEsOBY~oZttk+{BRr#^|JGJCOS#SSrP^%r?hhP+w&;aPtO>uG%Vq~(@ zT0)pW2s2qY5W1i_WZ~4A6#d-W-X=*RyiISJHyZ1*nu(OlBQ{h|zkH=NGchsFe31N1 z@rjw2%d!>?Y$qQ=> zOD(I73Z=)az~NrVw>0BShs%LdDwb5C-kpBmQY||jDf_a&OcLd(BS)qr)v~%@<p|q2x=1 zVy@@5%(2@&tNVQNXzp{PX)zD)ns*l6gFGq-E)<+rmt~B&F`|_+)Z_oJ&uU`Ionhp- z&j^KeL#8KBo81?_ ziGFRU*lB+*RgSSz=YU;-H532~uR-7l^FgMB;f+^Ww{>nHzs%G+^OHW6%uUj-Ir(d?@g$w)Vv zO~f+ZXRPd`qhg&GhKfq?R(1?zVH@bI-*Gs{Hmry zVtW_AbEvbrRWoI%l5iV`ETcSb5st2n2EceaXjRoe*IaVBX~O7~S)6XtS&<2$)o-^o z{Vvnq^fM)ijWaA*TTwfdL>W4dOOHNii_Z#8jee7;aMpKyMmF2Ot`D5?=?jlsm>vgY zGbJwAQ?0-Et+M~tcqkf+MMK=$*jmK)>4gtRqXfqDnDVmJWKdjD`5*5r*Pr|4D~5P z?Vs*y;SVX{=+Nn--i4FH5ME7`?Ml;efAm@W=1|9j=;Lo(z`m>qVSPt;k}#KNp|> z&V~7O>AAznQ)hqXSgQB&J5Llqv5%}lCNA<65}Y8&5x2!*4rQ;NM-p^TppbbDsGDv8 zXdYdo1{C-ciNwKBs9L?JI-Xm|Zw)_<Xgyt@5XYtEMp!y}cQ!F3i=XH0}N zz5Tv$%6sD7{@jHB#Jj!XkZ$P2=V=#_VQ*UZ#Kxu$9yy2XenfBo#Yxq7k2$lA=3~2W z?g78>zeC$==#M;T3<6?Rg%RqqG)j~kly``>aW9H&2PP3O{Cc~Smha$EVGYgq&?thn zC#>r9Px~;P=CPj=JS-G^DsOqGV~HctaST9ycoxg+w~hoK3wZbXF-V;~G#Me7YVvil ziLq?d7xej3>ZC0()1rSr$~_R@F9)r$qh}mHxAmrKHR5=C)q>X^Q;S7xPlP|~G`}V5 z^%9gjVr9Nf^g8|#9!O++$+~)TA2~YEfcP_Z9lP#tw3%jsn-=@G?5VwQp|)q!I)CEX zs@nVPiSyLvrtocl@wULkg$ombPo8)r^zyTN_B{J?=#djZ6pTD!#)p({GE~U=OyEsd zz!tw$$x)4kRY!lSm{k)SmyGF>+8hWL?hfVT#s)YoY##<1UR;^Y-naMMGpOefyLA=_ z`9>7yTR>mTMG{Hucr!bIBG^~R!vL00k>In%NM_#u)I-2d>cHu9}(;|+~$D^K2}*o&lyYVA z2*gSb8rhxoUgWWqMy^V;chNDUu@rd>4ZEg*nn!5~q_?kDHo)~Zw}j&qdyBUw0Y}A? zf%p2lwa=J`NI+`FhYWwF+PLZL;WDFfRtiDJY^Co)LJG&U;_Ctb~&*q~9B zCDS!D!jWW?Clt*sW`k=ItuC+yqHk$@eJFGm9pqSn@2wpz~h`?==YfXx;j#o%Zg z=$&-lF3K_SVa0Vq!p2F}&J0EkBg!oFKm8cY3w>UMK4+8v#z8|=#>9^?hjK63I&nj6vwB#ZrdMFtRW)eE- z8cmgF)4F`&!ewjI=o4Se?4O?ApNRx@gv+4XSm{6fp?v;B5BE*NmsdQKtw^LbnM`s0 zIE%TIY2@}ec+ff{&mD6)p)F2VYy(1R81~}sDEz++4ddMZUn18wm&GImcXde`nU|zX zzL73ub2pd+;2`@NM%`ol@wJr4a~Ym$N=CZ&7u_+rqwpd&55t^XbqHv1Stdvi4)P7n zk{cWR+F~6?ubG9yJQnc_KUczkvY?`)Tpe!CrTHj~WntdwO!Y1tsxMA;oOvq9P;vQ8 z!3jxh3CVg#Z8%>Ci=7n$Vz}So%Lp@o*72@UM)?-z17T){J2{X{Zy7}~jrJMpL%8spAWTxe(8f*mRkg`FFwF=hnFpAg zE+Nq1y-DKbEaq95vE~d6!1(*NF1Jf>esigPxxb$Fh3v*J|8m0)`2aKfWa9g_I`VA? zteY2*fp>LPTYY!Ry6TpNf4C_tBV}oj)}SN;597=r?scoCsMV|P-KCgRbm~iAnu?}I ziqd7Qu0~7OO3}eHNjVbT1WDM)3bViojF|Y-u}VX! z@k}&p2b@TDOu+`OX{M-23OOAr?RaEzuD~~;U@)YLPGJsr&e3sc^8AUOg!yYIB$Pu8 z%#z2U8yIAEfTDB>JAhg-2iFa@Kk%MT=RE=I>G{;&UH<94yL|hTzFm8#{k!(IrvMP; zr}P#H=F;i2@ALWIclPw9e>#>ewmX?(dwjfI%yint?58NkTeGaXrQ#!Nl9r7!j>KrG zw9)sq{Y=o!17}g7KQ?>s_Db;_9`&;)Q@!4vr!qa~uHM!egR;hSR}& z1XG02VQADyye;*$-fHh%z$fF?{)~9({_ChfnYXT9TVGZlxE_^^ZvVV|p-x4Uw3(sz zH(q^z7^~ae{|5K(Z`|hg1Y^GS?mPGPG6GHAZ+lmw(eX^epWj^VU#GAeB;UKa)@wY> zpx%EQ?Sc=(ttHSdBELyI&J{F`9zaO61wmyhu$V|D=+t1)#j;PX#jBeHgXwM776yGS zbWz(C1zn0KQL2ZC3mQxWUE={Dw>Gw4_u89nzYU}35L1&4UQG5i&1MqglwN;)1^|q9rE+!%eA6byaWo%u;NBUq$)|-;ja9JGQn!NSjH&rKDOe9Y!tfqcT zazj~Mw5k!@CdKAlbg0OnOBc-)u3E2d#MZkrRyQ}m1Ai~*^j>EI(Y`SzEn@Q)u7h8!tU{g zw&~Hpy4t##iHJeX5jLd$vX>6fT_Dx|Ci+?0%5AqiZ7BUK^=l8#OWouecYi}W{|(zx z3Zq&Z`h;m>YNwl!A=($gqq)UrU0L0t-$b1%gYvrUYm7m6%(->DwSH>NEuNvS2RbE= zw4B>+jJmDXmL8pbYNg{k>pnJo;5B59G1hd^Woha|OAL^1I*GWm6AX<9w%)b-UAtv0weZCgU}o#Ovz#veHn<_%9uL0rUCr;M ze_Z{d!PnIVh4WY7+UN$28yAy-fF551VfXko&@;_Qxpk@Be=Qu_vIf|ER$oJ1gkHKb z--2jm!9j}NP&k^`GQMg}BmO<8$pGf&xl*kPOEW6=i78eKgexmYP6h%ee;C9NTI*Y- zza7bNd1d(|z|d1nKe6L&q1-Wed`DZQ=`hv?Mh0)`9-~kq#)>#hqKDAmG}@%25^cod zmO!tTjkX1ngE+uP97g4@#}K%YGybzVb?vIS7Q8hE|3+Ub819Qu-CLH>{__67rE*M6S(ath)6-BA+ZeWK0;;INVO}gnI*>fFmevD` zscHLK??;l>JQ@OP%$N0f{e(q#;>{viV`ujzyg?_LVRnp{bqB#$?tRj-p1fCYW3)Tj_1+%o00hGVCHgib|i9dtDrW(Y$E9kM7bXe{P3gN44K%@E3+Dk>V{#nTCD z=F<{&i3m&sM`Z^D$=b|BU)sMvF|&E#T=@9$@VNtXhZR|<`pEqQ8se76c=)TzgBA}a z>^CUaSS`O%+1e+8@>w^D@A2E}eayXa@ch(?urdU3t0Cc4q0BrnULz&7h>s!4dm$0p z_Aa)EMrU%#j;Wu%?02G};7b4~y{r20N0YJbe`_eh5`%E+%w%-)`DFR-SE6z6aec)r zF^+;$>jSMR28W-4W8e=vwHsGKtQ{s6yql@g8sjzS|5rNwfVpGqq#`F16jl$oV5El zaww;6`KbA7y}HsVqAU5D`d#&LMhwtLeCUo@678q~I2Ygqzz5(Fb#?fUOJ9E>mWq{l z@4qwET?qHW%~E~rx4&Nc<`LTMb$@ztD>P|gRw~$K>U*O6wvO0^;=LuSs(bkX| zNh=DV&pl?gLY!IJcnf#ehFd^$?6l?6VrG=JW4T=cXx~&k2t+1xc>b{&Xeq+HtSDW!`e3WIRR7S9NlI4Ud zQZaZ4+-0hMynbplRHF+jfjt^JO(Drowq_2+FPpdL?Ag-X+)KPmX9aBciU*}5h6apf z!q&XvxqgNVc2AdfbAb$5J#K}j(=(Yx$f*!E=tkGU>Vz^~f@huWS26|b#J+qrymv3U z;%BdV3t82d!+j^LLZ;HMWDDM_&+@(8PUhux_3xoWZO;lL{3-fe@@(STC(53i9hDgf z;-xxu8$acI1%)evV@exf1=qbK!v_3L6$2~CnE(oK!%7V~6ZKfbdtOMd~6qMAwCw{e7sWD6k6=$a9kVJKu}zuW5FF4 z=wP7gV5Pb3`Ao7#K)KNV{h_h!#7wG|nwc;k$K~SzHCP4Y))Vk%da-4l9i=561sq=J zH(nk?iCevl6T(+kSJzfouOfJy-M+4Js~a01++M$dj(aFq?A%A+<(4~~z4`a$!H?-j z!`tlC!=pyaCZWTi+||KP;L|mKuv4D#U>nq2YF`_@gVcVtsjduf|=7~itSqT!ZNXp4P77}9P-wDJN>70VMG>+%ZmDhOIpTUe+OHE866 z>Mi%Q8AykQ?E%yr`Q*+`SyL!S*bK9j&x5P?p;n+phYW&A%_Oy||w!ojg*vR*#!D-?Xk%k^Y(?BK#&Wpc6t zAmE;T)wAis2ZAQMaqt6$^x5jZdn}bvO4~O~Uv8*>#>k3F)Gv|h!HAeuxxqRuYRQH? z3|v(`V4H{&FyF%C{F0)Blt((r06}hC#zWe0KT}h!as)Yd>MPx{Qsu5YhyD`XnZzWO zoNP#pkWN(R!^Bo7&*?Xl`9p*W3WrVN$r&nj^*hBU4;B!|V1RJ_f1mI{kx(WRx->`t z^3&4?tsYsyOW)cnR6bx#S!_v~e%F|H9ZwLvL45wH0?}re7P1DqyeqnOVNEDVbFN}J zAE=}`6<0T5FTRK1kd3{{I)C)&dCPk2X4u6;h#~&esre%hSk?naPQO*A->{tOuoOvX zi-NtY9a6VD~XW0~1(_U>c*&ewd_#O#<=J->G*Iz3T$&h1xg)7?tA z5KpCNUwn3Q#*QbfO4GZi5{=k1lP4l$@o?;;Zy(Apl0}F`K~9Q z)LQ@8sl@8?_J1t@Yt$=@he4Z+dnCr?NUJQt7%yZTZsl41<8}i|3P$fUgNYmD;)0xZ=lH{*O zm&@44WT>V6{?4-F^6wpOETG8^rp@47WW43I7X<68LM_s0W1t^^qv;?biavk?9Je>SJFTcQQ<9=&*`lfxxB z6kCt6jpi;sfR~3_eRyVUes%NcMfqXhgl6iuj$JoLs(1STUiX()PuIPaUNJUZ06N?V5(4q2i#pbbSc zsC5GnMPW)_@c`p+oZN;OV`p$mVy@6~rcC(i+m#4k00U6DrJOIdDw(B|cstxu!lMUw z$4`FCU_HE{dOVBk>mxVH+m(T`hT(=@K{!PolKvS$+9gmFe@MbthTBciPO&>;;@j-7WnGWv!`{}>1UPo5$}otr6cI}KEkBWi!U1s z3IaQ!<-fyk?VC=Plk!kgF~!mJKFj|dYVDqFCaTDx_#rX!`eWBmqWUG85& znuKdWrj@(PtdzSiRv7yOPhP+WH?Ce~P^a}qMOMjytkSWwz4S8H(1FU=xae!>Wbb7+ z=P~Ufm}XfC8W1^AUYSBuxFfVRgYRf{*bfxKC^K~Rm}oEaT4`Iy1%7dq zd^U%~^M?ZdvCf#!SMeYC(e_ItRB}il9p6~H=#Tg-zPXp$KWg~@E%gWVe~`S6r##=q zXmb%u-4Q{+uENSA0wNb60^B4BbS2CULWro?sbkHhlz^V~t)GKHEgBnq6_3;czDcjI zthWDcJd+{$!3r3kjO8ofkl?Em4!7Xrqc@8WsGKEKZk;a@`mE)sjw$hA!b#;{4ET!iPfBrAc8fg7zmy#G>HT1{~XULgR z$L&@>5x%m#d_}#qeNi9$n}OzYGpaLBkb-9kP9imJFB9Aj%4y||thS_Go61u7z$cuVSb6D(op?$-|U+*-CIh8|W zD++9Z!~{BByORTOPg0b8BQGc}8S=#I=129Mt(Sm6J)c`5b_SIo97WyE5kftXr#!o} zL~1;TAn;O8U7N<t$GvTNGKS#y$D-G$V&L_pk;-)r_%_6QVw{@tfoTfroHH#$>z)-U=Ob) zAG}e2P!dgBRy0uDKdF2L26`YE7@r;s#_Kg4VU#*H9kp#ArG`?}Ea3NkIT#&_s!}IH zgddCgg#2E@@~D{d2UH`fqN!kJF&YUMf<@aG3xK)y`Qm9`FzyTUkklI=e8OWXU*?7T zlT*IJw6X%xXrvJI#_&M$sQ}-}A35J_E9m9-0RYxfFoa2!Oxokb0E+wUU?`#j_!}{u zBZ^o6(O_8GFXn{os5dB&8ue!bVarN2t3D?XO{qjU8c36p#yh(k<)a-S&XyI72fP7q zJRmFQfH#hz$vT54_5(yOehh8lWzSnYS3K|V^gZwMe81pWEc_!~&M;zJh>lzk8X_`tMwsg9I_pgqaf^#Y!z5Dbv{u{ile8~O^U9V0)ONmZ zlcK%b$WB=hY6g-dbL%#8-F%lXm-bi;d9LM3&T^(Bhp1`faCB=oa!#JG(cR zZ>7D5yln>8l0ErV6%E)pXCi`fa*5H$$?2fiAM8~8{)#^ctQKb93$2aSl{M{)9`Ob4 zvb>A-E^GVW`2EwqK$h!pM-K*r-U}Arc75Ku^5VO>&#xRG!3q7&WbVg@VuyOW+TUuc zSeDV}oy!rrK9-3RFs<240zApRJ>E^3NR&c<;1hi;;LE(DeDasO6#P5BRKft9~+vcLXc&32pm*4;gIt&YJLmB>HaStIM2l3b?VG)WJy8*fbMK;stt~*`ZpYstWRe}2 zw+K&4vJC7R3?7-YpnZq3@qtv^*Bp;0!hZDwF*~{#3s$SK)Y+GsGf96UT1-wSBXM6K zoU*Q5ym-a3uBf%VHP#&47ll9ua&L?WW7TT9=}$y_$)&MmTG_rpvcCJ`mH(HyH-T^a zy6${=0b<{mKNf-n!36{faFIxYkVHy?Wm(o@OO|EATWrf~Y|>6*CwA;Ov5}>*6ZfTQ z8>&s3cHB&xCS*FDrS6i~rtD0o>r4A48LI8HojU1~R(jKPK5b^&ycVACx%Uqcl&Qpd z)6e^q5`aH|Kkk0dJ0n#yE~4@p((P?a!IBAEG5-`G{Ig`%NgEYw}Eg?4L-CtK6|iH>%6rtz1VcA>E}tBb?hGUg zXXo}@o5@_eXYNy71IO6$-+6k*(p|G=PCF~Tw~eA(>kMDln(=@=7frwwt?8OLy4kM# z%nOGPzi?)0wYspfv`2T61c{5M+A zyy2*vB`Ovnyb)C)iFaVw_&@dsfxzO4UKMbMQl(5zVD+#Kk$7-0I{)%ag;eeIQ24W*&S1Q<>_QU1)uAAta zOb-Ny?;8jla=1pVT&mYGJeWz0xdKr)oKZZd`y%@27a1e%F(SG}bI|KF1aQn^OJdQp z@aP!x#`UyZ*e?4|e@Ut-(A=p&N;k=emY+#l~4EgPL|7){*_Z>$9&vj?wdU_VVg7BH29w`0ItqD z5$r@ld~$3b+!7r%M~t2<>;r<_5`831+`{s0t+V<-f0P3n4N>Qf)o1_-DWgWSypWF$ z{gblU!R?YE7r;@(vyICd>nK|;_E9r(kb2bG7B7?4a2z_GNS{4LG zIh-xRqVyNl2UO7`wqc4sIE5;(t);0<9UNE1{z|34_&KnlTHmu>|9(4;@3*Vp=u!nc zgf7Ua9juYD1!>o}Zc`yYl8AWSW#k1vGgx+vI=^Kbe>9g0r#-#6s&aY~1J&nCXI>KC zMP%_m5YHBMRtP=>gD>q`+- z1j%F=rwx-cQ!V^*IGIFo5b648B01!F!aqHiick0T2jnX4^9)%g>bOeC?E}g8;U{w7 z9lgEpI54sB-q(NB`dv_4SxT5oc?11&(U(Zy)5eeqA1U}`*@2>u)7~IrbC)I?9a$9~ zud2DGBA*e_y()G%k>PQS+5$GvG{IQV7O!pq)?B{e3xaR4D(YejP&62nppRQt>wxy; znw;{@rd2n&UE1~(;U~mfMs!VW-6}ijkRl#kiR#)T+c|C7bB6GBC?M>B{Ym?)E>nWz zY2|kuKhQV;e{=uIllQm&A{32gqtUN|Vdv#@=G|w^yK926SSA+h(v#i!^p_94DKaq; zdDEej_fx`~<@@&k8pFh_JE$X7-|oln z*SG6HuhbbU87YY)xUr*Lkvo7x3Nl;};GjJin>8s7NJnFN8Fy#Kr_wZMs^D{F+*u=% z3QFu3q^#Wh*`IBFI`_gas%OhNwefR5%VGB7FILbnYyQCe#zigS9gmc5wSQPjkMP_4 zTPmGj|H<3`i~Rd@|ouqv_ry^@lp5 zCWsQ@rz}myN={r(bcPcmcc8!W%q@5%O!1g-0oL(bJieQj?s(MWd-(JxXX`V?;!J%u zKjAKO;(5mN{ZErn?qlV^>WRg(-b&yDcbtC2*ZSaur|juh;Q?a*PAuj5)$RPI*nj>! zZ89|KqN+0r9?sm9<|DE6N=9G_?UR-ac}9d3FcsnqR^^`exwZFIJd*Ke@PioAOEkna4a3Iqi%`A|jyZq*S-vHx( zcv49@l6(7@0ub-YGgp!b@Xi9?K& zh?b%}!88T=x((cmHiH$gIpPTQS>H)lQr_9W{IoDM}njuf?hPcfkU62!KhT(3?_C9 zzO&*HLelN^)@8H$D`wrV**IOG!NMq#Y86sgH;Hcm6PS%tZ)2xvhrPxmo=m^CQp+Ah z#EA%NEuxOe&NEju=l999K7W}N60psA1)4^#}8JOUGr*f zB69!nz`3{A%ig1V0|#%peyCX3pE*MikFS)Wje#*7B-(3Sa8e@YC*hVy;Pxcn6il4x zRawv`!xYXMC2YO`m2}!E(n~#a?hWXVYU; zYl&jXDYiz5rEUv|gx#=){skdy`%zp+lYVaiH|DBR*Ulb2s?J?IF+;REluOx!&no9C zv+7LkX?4qqzP&$|;_xn?l`I$o*98OFD6Zy1eHE|UQ#n^t(TMT~7LkI}xkw>5;dO^@ zoUSSV$SQh@E}9vKJ02F!xD!ZPkPmYD*`!$ly=(Pe$7Pp9(QD7TTz%C(6tlgUB!Ac> zein$;+8WEra%C}B2C-L8^QFws_Bt(fxWsJ$!$H~m$Xhi+s~R&SNE34Eme`tei4*~A zNLibQtP>~2z)WUS=myNK3XHmeuOD?4QhmefxMO&F`slQp?M+1P%Epg{vVMQCKQnk#IO7xko^- zr(^QVbQfI>=u>T4yax1|lVF>;1|+mdFLYPbiLR2AxEQr$a`;nUuAIL$=lvDna}=wVaikYoHMJl zPy7MjsOP+Mxs&nmi;nu?TMPNg_uO`JUw-7_x@W4e|D5JQBxbMdk#r9L zt>VJ8$g${KX0azov@|UT5d+t@RAT?;$XpOFAB)ME6FMT|`zNi~b*Iu+Y&cWP9LYbX zWAzS3ize*-yTNDO?h3A8-fxCd-t3W)Q1X&AQtk*P>K#q7{m*~k+&LAiiD-IPUQ@_q+@>skf*fX z8GStV!`R5&2)b|9=-S1U#tNn`Gz?Ub%pO~ykU*uhw#0aAuXkIwA3$dzlDkT5RxFMJh#uh))VdPjrjwc^}5{;PFd0Q<^*+z=3X=$9D}0SK!1D?qQtSsWR_e* zkRd*W8PjS}gcRw8F+!UwF-|Ab>11nNp0z5Ua1Mk~;a*WHY`>{21WVJU;DUK+>o2|v zuWWM3iv|(ZM9Bj@U`AZTu-^)vT0ffghxb3VQo4Ek!TP87M)xkpmZC3~lH+i=Cni6< z_e}IZMkD7ck6WeW+s8AdJED7W2;JswEI6A9;&EL=zh#NAu;uh-d(ltPLI{s0k?Syc zb*>Vf59Ev4nuG~K6Yf@Wz)g;(Cz97qcCM0K5t8KKRPoNvRj!z`uYZs)5;2ecyv89q zd0lcMJvzC4)w;lSt|%dFCC8k(qDaerv%)u?SVBKDiSV^ud>ddr8>427FDUM$&E`Nq zq%U~OL4%p7e(2Vv8TH^X(xjX@P5UU{JWJI&2ObMx?bbuHXTl!uu?N-6QnPal%x?P@ zlI6)-5?zYufJ}VmAv|#Qi{G8ZU+Xqj(G)|HA<^bS8rN=MzLc{A6Y+}$Y2tG ztY^0x*@Xa~@Eg6dp7#~|qm=_&J8P)zDFzo$+kFu_W4vux6*d$MH#7ljrSW`sQ7}3N zp(Sm2OY7@@H~Dv(khC2XWgXxfp?ZSX{&+hF%>~MJa#|4wV@T42LN7#jb(x&6%a?Kf zXsXrC&5P^x6;1REkMT1~;{KR8>d+dbOel=_ZOHFeL7)9WF+T?2Xe|Gmc%3(!|7I*d zmgj$BM;YhsGUN>4cS5103|HPU%NDy_{#?E|sJvr?#n#Je^6VXFCzU#nk0<4f@&Cxo z>FMdySQ7Qx`iA;@_;azJ^aw;VCkA`Aj-abK0#wh@=NA6%?-!mwy7!*)W1}~ZK32X* zH76%pzlmOOveMW0Vq8UE=ws3hJ&>}DKb$TtQLEYoNs)8xe)R1|v7-xKJ8p`+@1C;1 z7GHS&-Ei@y_|G4`!<5|D7fek|u5D}>v#+T~$Hh#u*Q=WDFoVM$3a9-NUlsPuNz+B0 z*v81pX`-?49<40*5Xa%@^9xhycx=3U54ArwdUjNu`n!ea)QmS2@~+C08ko+*+vb4m z(c^s%_iP`3FGQn}{dY<4QEZU1Qtn)4y%*901L;D6<2+Q523^13U=cR3i32bUS(?eR6(t#4eX#7Q=+g?Pc2rN5a7}H&(E#t9xFfg_7{Nw2X zwLRoy&x_X;s7qO5ckNG(A-RH>lo9Cbn{_+(O-ybo#`%hoPXelxvA<&6ktKGl>1mCl zymH{nnUm9dPGlyo82R}~HXELkrQJ35f(kBl#sg_pge7}4c3Ix8PSLxKzT2*0$LN2{ zvG1zwI~)7rVD`A($u~OoL)B0uqetKkjXXM{&U){RdWU>$(+q~QYdj^puT6PaU%QOp z%{!^WLsy{%VR%@{yKB~|7HHr2!o*$m+b>1jTEFe;+uox#`dHetSBT)%m&n@Z%XibceW~&`^7n=|quX=0Zqpmuh8_C%DRld228o(1 zBqUvP61$hFIhL!GNB{2J^|@E3Du4Lo!t?4!bCZew)^9$1eNLST{NeXaOxo*2XsDEt z(Y{CBrHGg+47v~{RNSS7?lMRF`Z%#}$uH$|3(tS?3)Ro3ch)f4+t>F<{#0>jV)ED* zj(jcLX>XIdVBPi1bq>QTNyg`ywCyF$G59q`roFC(7Zs190eX!!1Jxc`ibuo)AIDJ` z1PmOcw0|8v7{tu%8_jV095j6_K(pZ%#jTHnY$_gu4Fi8T8!a)8Kr za)~%u!skNQ2 zXra)%L%3ni@koQCLkA!}->UM~$0FlzziDlCW~O|kmO3~&ifdT>gE!X})U9hXGt)Vh zNEJMYHb%ZNJ}sit>PNmo%VguQbSRWLS&z0DhsuvI7a}OLDMVHmkPXL#n6KeDCP&ArJ5U7PjSEy~yr;&&yE5nL;(Fa8wz8|g)xwhP}+`r0i2{O~D=hFcW zW^*4efpp%AhXVl(t+#E)#`Y>!YwQn+5uHA-IwT@YSIp+Qw4ALXEtmjd!|vrWe7r>e z(d;73A-bJSWn8;{Ns-|7_-(4L+k?(Yga+G#Wd*N~+UV%_5LRM%*o@m3mC<#GZE{xp z7Hc9AGMxYigsEqM5E3P`Kv!4|6j6N2T9=$IU7v3S+*3y!kGliwt|#{t@$ZQBCzB%e zC$d?RtKTot`_OM(o9Y**5EMnkl-Nk5dj|sPR06}rrrJ{+Nc$~^gf1KJ8w5M?ZkZv2w)s#({hbGENaZc_c=@)6$5l{YdL?e`M={qx~l^4}4NR(E8-7 zuVUCX>uy8c$NhwFEDj|!{u!Lr(A!fiBBvMB-Zvd(`INziqr8PfRYVcl_ZYHB6X7wB3=MwwX*5UAu;3 zM>+HG)>b9+FtI{Rzz~%=NcwZqFUB*=m8~t5N-W#LgGaR=ld>R)B<8A)A}o{XF6<^_MSq~rY!Nkwahca#YZcZx)B)(&!Vl&5Fy6w zkD!Ti-WKtk5^d6z;pWg1dgyu)y^b6g2+Ji&fh-BfSG&T`1xGG`AgJ$+EGwrn*2`Ltzi<)2Smn#=!u+Ok~!=hK$D^}pK|GFbi-(U{6EO|f;IhQ5f_Ug#Zq zoZTp1dPhrKoFJfyp?DH!Y$w%Q@1l6EZ=iok3E691;_7vzZ^wqRR&Udk&jHbG>(bk8 z8`ZH&cA>;O+qD}N?rzUjDDaME*yNY<-R6(QGxPQJi&j*h1e^gJRM@-V!AU!cQ}U)h z1%6!uj*cERlz&fjX(_r#Mq-yiSmJD8dX^R=dnYEW=VlWoBq(;&x7#PRvP^fq-+eH<=4^AWDGGNY^ClLEC-)ma)qW zB$D2EXu!$^#a(@L&n_Dlrzq$O8%{Tesu7jD6lU=w(Ir(c?<>dh zu~Cm@c}8RTXk}lyR_Xp=vQ|z_51btvoJoE6q`&Tn2ELwg*ZosZi?%tFd4D}Plm64X zJ3aMOYHaYkro$r%0x)`pqxtBh6vgX^7x?Z77nNFhA7w{}JwzAtPp91O)U@9MUeo=zA1b$4cRG7xpvjl3s(yx5P@5(^RZ{;vEvush-FjfXIjk?>?Z zMCyV0J+&KqKHs`{-XDK=B9lqju_I%Bo4c{(%}W{5BC9fPEBs~S8-0@QMDvrz7doKP z1|=C`*dHcH9DD`p3{wP$C_EhjJlGzWQ_IV#MngXfuL{G8yu(FC#jNFJYq=rMjjzLv z)hn%a@!uEQh`30bu`uu`?k+WAo2A2JD?W*7#8Nn{K}AJcA=(G_2%=WTn2Hsk8?5ZENR zWwGCqG;haX{IVLI9##HG#Q#(v8X2n-CqcLB$}!n0AZVov5&x+G=uQ1n2t^{s=Y)3s z9_vPMF`_5%q$RW>^8naDaz&(LR$3D*Waac+?wp>6@!Vr(MgmE9UHwq*T>9g z^>??_`2Sf^F+K_U?X_w8UhAoonWG0cZX%LuxCDTO`O*j^h;28<^PnP=l7|<(NAYf; zAwrkfsyvrEsN%#`2Jb&H4GxuZ_U3&4URTAXTs~jU|8Iw&$||Z$|yVz(8tze9H2YU-V(w12*XOA}Q)` z988rSnwYYJeSuVR_DfXU9WJ1?ijhY!bI?zTr4V3#S?kDfqWhV9wf^Lj{3p~&{nDj+ zm)s{fjh(o?5=4UVC>`HHaK>*foZo>QZhiT>=35W2*3J1RdX12lh9q(T)JQ;8VrIr& zuO=!e0s2Z?RL_aWQa9wT8P$cq5<6em6d)CGB5po%IhoS_m8~!LA9!oCyrzR6$X@y) zHUZIXrP1_Uoz_t+_HD6ML(7wCQ#&SZg!SD?-BNiUKT)R_7tg5PqheI8@3l_OEH-wh zcfE_1++-xMc-rAOy%>#xmY6%{F3qUx^?u)Ob}=1U8^ zH~Jl;0OXF$P8cg&4=rK7yk)A(myit^AaFs zO%IWN`Y-6kK(%6C7JMhDQ5;J|mB)X;&2vQXKR+{@h!ivPSx32d?A**;A~cq%W*n8? zG3R3^Yxg>R@AJogEWma3esfK^tOMqNY*oxgx9!+)5yD9TOD1Q`GBJ@Qg1!k|t|9Ur z3`!H}Ax7IqMPewz`HsM#$==keSaO$PA!TNZ`mN3x&BVc`aZrQVcywv%0?s!c1G3Ge zuODMpbJ^A(EqKI#jsV67Xk-`bv+eOdwz^> zB-WYEb1r&{ztZ|dHcQtNC*Y}L&HLZ(; zZ#kgyt>2(&R_gFIw{*3vvNU~R^58+sZkqa~dSYl^n&mj;n*LOGvuwKjgV4JH%|D6M zz%h~Je1w2j$)W*m5SX*EKBRz4eQhLj)Cn{xa_i}fjeGpPN1gq-d-|6$4~zt|0A<&z z(FZvyBI(}umdhUvM*O}9bJfI0;_mQ~1&=GuvN1A*VE4V~_>D)E>^K7@1cJpfV#^td z>eR=Hs0fLgM~hHwNsK$Q|KR6<0j5&1qj#!Y=J$yJdF%o-eUf12A_erTm9+6Z4mD^2^v@?vu1*ewKuz|_%7;lWK4 ziNhgM*i~DZ$n=H6m7}qjU-rjML*pCk)vGo&?$1P>YPxj)7c&XFrRCMt)vGnu=%Gc2 z9u@9SWCl)Yi>(HM8u63>h1i@rdq5qZ^Z4A}-cZ`xKc|LAM_d0j|IkC7|El@yK+xM; z2nF}N*WGBmGyi7u-J7{X$cCZco75%TkLX8tB8Bi;PuJ!c9$J9>1}GF6K_*Wm(IS$QLN6P_H}1J=`gosxfg0 z4`HxcA?#0SdM*ZSfQ#BwFy<*~sR#f#b{xamYW&s4abbOBuQ#83()6!W zrbZ9pv`ANm1QiL-LBcs)W*{d*B^8*Q4wj4cw7S-mqG81Z=VKsRt>$HX##5AU+WRGV z`=8V{!4x}Dq6rCFy5y;0+8T6t65vhL#wVlEPaxm=)z98Lq5N*g^sT@3iQb@dZ^P?t zsI0^1{M2hc*K+BLFx;3j^f-J`?I*Yfa&hN4k zf3`y4$i&`$_#$Q5!?!E{aSITl8y|NE z?Zz~912em}sksFMXtub7#X1{D{m^6kxNXN5HT=88Nxq&j!#pC7DzS?+MFyP$iz%2N zp^#P4M~H{#xBCo~`ekLAN25YsI!qM$iR1q&Z}7&!M#TTFO!1f|iD_(%j`quy@4I;Y zeLb)(VkxDOnkh+3$Q23kB}Q%ipv7WaA^{wk4FtGL^;xcT61khKuf(;*<2jjjS!6mY6H1f1a_Mw#s}k?`&QB#0Q}f>b zxF`Z;kGD9_S2@83&{5iW*N8Ag(#}~9P{^EM)niUtZjst`>vYU!^gSZ&sz!IuLIPl6+Agmn6fBH(D zp{gTGJrsy6S45(zEJp$lEu2V-rqecc9V7ZN3h~Dm61f`>49-@EKUI8dfRk;F z9|g`A>V<)@-_h?_AOJ$57&?_2>pT3={`2S6^=HnUyuI{-$9q@wz?nx5ys0q)FDY}U z*RjY05Lr830Y39pJ3v8mT}LIb5Ffhljd$*aHSZ`h?B84}>yZ2UheUeEE-iF`UkKkJ zzTYSai#pESPUeFZ0;ZSL4-$7#gC$@fvhP_eAGl;3zqUX9)f?t+kRoNwFDZ$KBWGv7 zaH68;FsKNoyNln9s3CNoh8YmFugQ=IkUqV;NdL>HROS4si=0EoRpP0DILj`UnJFs|~m~Go_{A1ea1+|?Mi3>SO^!)Jf!WW|n)|$m6GAQ1RB<1cT z3SWdr7>Nz3Q>nqh$wJ}Hpf<97Eeh4DosB+ijphJKf z+_Z1J?+;GRp7K;y%nLB!*aOP0r=yj?3nf4wT$XNHCJ9nSe*MG+;_rl3?`Q!ouj91Uk=QV8z zBXOoR5~?6F6!s24z;K($bvP9>`9!TnnNbtfGy@@@sGdXbuGimv$UOJW*GPxXIoc?1 z^`(CtR~_^VV_QGOR7)u>IV$@s+^6rS-ZH92`|*kyDq z7aa?H+dp2iuyVkPB;EbkEqj6-*@9ZI)7zNPi0%9cDaohQesgJkhp+ratzm;{;ID38 z>`UEb{q(Xqw-^>ob?PPSD_^l%uXYYDGlv_>KDP*9hcaKzE%g$26}Y?gTM+Rb2N$QH ztpnfAI3cG;x5AT67#ktpl0llVxlzP-^qu53Se1+hTF2e3=L87VRCNKxTjV^D=9|4K z=Yse~X?m#7sWx;3MqiU`&^pt4^+9zYkSs$MqaolHyL~JsR%iN)w|DIYk+ORd zGytYCjVTJ}C+LM~imXao4BNy(B@&JWo8@LaF`d!wDvwP~4NgxF>Sx+;OFc84h;u_Q z7LI6tmE-MixyS6k*HDBRd_0^9f)8d8Hh&d?2W$@3Nl%QmwfQtrd5N(2#4`AQ<##@@ zp_&s8Z|e&t{@EG1e=xjR^O^+PB__In ze!BV~4u#SUSP^mFM})X@+pxaH(kak^XR}hStDMGo8T0cD1rCG%a`T ziC$6}J=1)`=~u{4(de!c%4erqjA`75FNI%S>v4`xPAcE8Ax1F)vhKUv$02aF7A9zq zHjAQLF2!~<)n(PHySMT%4a?Ni$>r^~wtf!amaPlv2IvvnnpXMWoxRQJy+7Z2ZD)&5 z{A1>ujHl3OgWK$d2N0iRLn%jT_dLvs2cOSbOhs77g;v*K)16g!vS{?FfdVfZ+YAjjUlxDdBi5Aqz`JN)iP4kR=U6V^m0CHtRF!Xs_Xh83y;3Y*zsG&;weCIb^G@)xPR--9w}C$>%hmkrn_fP3 zN=I>6`*8iFwdc>2)m+nS?2@)`2%Qv}9D%Icr2){uTxrPgFWc!?Bzi8J7Pr&Ok~rOG zo>uFvW+H>Xu_UiVv}~3$TlhW64LogLxMaYg$dRBddRA94pvoHRu7BTm+ydwo=c^px z->xlRNLtralhyfT_1m;+tzI8HR4N@BYwITeMt#g)FIhPMapn%9c_p4gK+bvP5@}B+ zRwz5z+6}*8>ihubz)e^nD?UcBzSc#@^|cKmi`8#&z|2(S7F*yLA5Q|Uc#HK}-`O+P zfwR8Pt{N{v2!b9f&iD&xj3r)2o_1)CT57|TIfQXO&uRX7kTmOsO<8=gA=eHQPwA#LOzfzTq-_MkP> zS%8|H+nby68!gBnFN+UYJ3~@C4u|2HBod==MKJ-Ri2YC=(*AFCy~;@_F=^o42+hDQ zc>M(*N?X{ABx9F9MvK4p3%s1^4}NsIWrA};@-SzLlfl0X14wEZNFHk96;j2J<5Z9L zw(MbIitM8Eq#)ZKD?RDbbFLdvroN6C1pd4umFUx|vZl+I_4f_+s(P6*>o*=!Ma|00 zrb_x`!Z@JavaqU)rOejbm)h=Az+p^$z&7v!gn>GE$H5iR-6e+tqS{u0A+4gj=Xpme zS;#AskWS?b7-yfq$JneEj~yd;`8QGIO%w)_8NqgEk^_Z_#nZQPPw_~ue`>$Uakqb} zKX;^f&-0&c!?r0EA)s(W9aFIBJFwi~w_b>@8ZZC7vDb6rhRk+<#79c{{fLBv7+ z+}SoPRw9EEj8$mf0!ko3M=fZ06vjrT8$n;r{k9(3I{mQE^XMH*H~Bob94|8nvp41Y zJ!Llmiu&{84@gX-7tWt5lc3A@$mu&i5U6<1E}mEolq>Fm!HMe`=lY8LXpY}_CaybA z2%G=Cb|u&Z>?`$8+AigihRI&pQlG%4MzncFX(YWVs znETuLbit`y>Vri3-E&~+u`K+v^S`)yo#l7#4S1cst|P?6;U~iHmxH%;mTPpg!e8EF3bC#q> z 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%0AKIt}y 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 literal 0 HcmV?d00001 diff --git a/public/fonts/vendor/@mdi/materialdesignicons-webfont.woff b/public/fonts/vendor/@mdi/materialdesignicons-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..8adbd27dd130cb4f1499c8734b8a7029f6a1000e GIT binary patch literal 239472 zcmV)kK%l>OPew)n0RR911E+8R3IG5A2bmlI0RR91000000000000000000000000_ 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 literal 0 HcmV?d00001 diff --git a/public/fonts/vendor/@mdi/materialdesignicons-webfont.woff2 b/public/fonts/vendor/@mdi/materialdesignicons-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bc58886faec0ccb5d8f4a5691ffa4153b4627424 GIT binary patch literal 175608 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 literal 0 HcmV?d00001 diff --git a/public/js/app.js b/public/js/app.js index c6a9055..8e1d97c 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -86,1077 +86,972 @@ /************************************************************************/ /******/ ({ -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/App.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/App.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************/ -/*! exports provided: default */ +/***/ "./node_modules/Vuex/dist/vuex.esm.js": +/*!********************************************!*\ + !*** ./node_modules/Vuex/dist/vuex.esm.js ***! + \********************************************/ +/*! exports provided: Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Body_Header_Nav_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Body/Header/Nav.vue */ "./resources/js/components/Body/Header/Nav.vue"); -/* harmony import */ var _components_Misc_Loading_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/Misc/Loading.vue */ "./resources/js/components/Misc/Loading.vue"); -/* harmony import */ var _components_Body_Header_HeaderBG_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Body/Header/HeaderBG.vue */ "./resources/js/components/Body/Header/HeaderBG.vue"); -/* harmony import */ var _components_Body_Footer_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/Body/Footer.vue */ "./resources/js/components/Body/Footer.vue"); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Store", function() { return Store; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "install", function() { return install; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapState", function() { return mapState; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapMutations", function() { return mapMutations; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapGetters", function() { return mapGetters; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapActions", function() { return mapActions; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createNamespacedHelpers", function() { return createNamespacedHelpers; }); +/** + * vuex v3.0.1 + * (c) 2017 Evan You + * @license MIT + */ +var applyMixin = function (Vue) { + var version = Number(Vue.version.split('.')[0]); + if (version >= 2) { + Vue.mixin({ beforeCreate: vuexInit }); + } else { + // override init and inject vuex init procedure + // for 1.x backwards compatibility. + var _init = Vue.prototype._init; + Vue.prototype._init = function (options) { + if ( options === void 0 ) options = {}; + options.init = options.init + ? [vuexInit].concat(options.init) + : vuexInit; + _init.call(this, options); + }; + } + /** + * Vuex init hook, injected into each instances init hooks list. + */ -/* harmony default export */ __webpack_exports__["default"] = ({ - data: function data() { - return { - loadingVisible: false - }; - }, - components: { - Nav: _components_Body_Header_Nav_vue__WEBPACK_IMPORTED_MODULE_0__["default"], - HeaderBG: _components_Body_Header_HeaderBG_vue__WEBPACK_IMPORTED_MODULE_2__["default"], - Footer: _components_Body_Footer_vue__WEBPACK_IMPORTED_MODULE_3__["default"], - Loading: _components_Misc_Loading_vue__WEBPACK_IMPORTED_MODULE_1__["default"] + function vuexInit () { + var options = this.$options; + // store injection + if (options.store) { + this.$store = typeof options.store === 'function' + ? options.store() + : options.store; + } else if (options.parent && options.parent.$store) { + this.$store = options.parent.$store; + } } -}); +}; -/***/ }), +var devtoolHook = + typeof window !== 'undefined' && + window.__VUE_DEVTOOLS_GLOBAL_HOOK__; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Footer.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Footer.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +function devtoolPlugin (store) { + if (!devtoolHook) { return } -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({}); + store._devtoolHook = devtoolHook; -/***/ }), + devtoolHook.emit('vuex:init', store); -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/HeaderBG.vue?vue&type=script&lang=js&": -/*!*******************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/HeaderBG.vue?vue&type=script&lang=js& ***! - \*******************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + devtoolHook.on('vuex:travel-to-state', function (targetState) { + store.replaceState(targetState); + }); -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({}); + store.subscribe(function (mutation, state) { + devtoolHook.emit('vuex:mutation', mutation, state); + }); +} -/***/ }), +/** + * Get the first item that pass the test + * by second argument function + * + * @param {Array} list + * @param {Function} f + * @return {*} + */ +/** + * Deep copy the given object considering circular structure. + * This function caches all nested objects and its copies. + * If it detects circular structure, use cached copy to avoid infinite loop. + * + * @param {*} obj + * @param {Array<Object>} cache + * @return {*} + */ -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/Nav.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/Nav.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _NavItem_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavItem.vue */ "./resources/js/components/Body/Header/NavItem.vue"); -/* harmony import */ var _NavIcon_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NavIcon.vue */ "./resources/js/components/Body/Header/NavIcon.vue"); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// +/** + * forEach for object + */ +function forEachValue (obj, fn) { + Object.keys(obj).forEach(function (key) { return fn(obj[key], key); }); +} +function isObject (obj) { + return obj !== null && typeof obj === 'object' +} -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - NavItem: _NavItem_vue__WEBPACK_IMPORTED_MODULE_0__["default"], - NavIcon: _NavIcon_vue__WEBPACK_IMPORTED_MODULE_1__["default"] - } -}); +function isPromise (val) { + return val && typeof val.then === 'function' +} -/***/ }), +function assert (condition, msg) { + if (!condition) { throw new Error(("[vuex] " + msg)) } +} -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/NavIcon.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/NavIcon.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +var Module = function Module (rawModule, runtime) { + this.runtime = runtime; + this._children = Object.create(null); + this._rawModule = rawModule; + var rawState = rawModule.state; + this.state = (typeof rawState === 'function' ? rawState() : rawState) || {}; +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - Icon: { - default: "دسترسی سریع" - }, - ThemeColor: { - default: "Red" - }, - Quantity: { - default: "" - }, - IconSize: { - default: "WM-Font-20" - }, - Route: { - default: "#" - } - }, - data: function data() { - return { - aClass: 'WM-Link-' + this.ThemeColor, - spanClass: 'WM-BG-' + this.ThemeColor - }; - } -}); +var prototypeAccessors$1 = { namespaced: { configurable: true } }; -/***/ }), +prototypeAccessors$1.namespaced.get = function () { + return !!this._rawModule.namespaced +}; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/NavItem.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/NavItem.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +Module.prototype.addChild = function addChild (key, module) { + this._children[key] = module; +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - TitleFa: { - default: "دسترسی سریع" - }, - TitleEn: { - default: "Quick Link" - }, - ThemeColor: { - default: "Red" - }, - Route: { - default: "#" - } - }, - data: function data() { - return { - HoverClass: 'WM-Link-' + this.ThemeColor - }; - } // - // data() { - // return { - // Color,HoverClass - // } - // }, - // created : function ( ) { - // this.Color = 'WM-BG-' + this.ThemeColor; - // this.HoverClass = 'WM-Link-' + this.ThemeColor; - // } +Module.prototype.removeChild = function removeChild (key) { + delete this._children[key]; +}; -}); +Module.prototype.getChild = function getChild (key) { + return this._children[key] +}; -/***/ }), +Module.prototype.update = function update (rawModule) { + this._rawModule.namespaced = rawModule.namespaced; + if (rawModule.actions) { + this._rawModule.actions = rawModule.actions; + } + if (rawModule.mutations) { + this._rawModule.mutations = rawModule.mutations; + } + if (rawModule.getters) { + this._rawModule.getters = rawModule.getters; + } +}; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Charts/BarChart.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Charts/BarChart.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +Module.prototype.forEachChild = function forEachChild (fn) { + forEachValue(this._children, fn); +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var vue_chartjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-chartjs */ "./node_modules/vue-chartjs/es/index.js"); +Module.prototype.forEachGetter = function forEachGetter (fn) { + if (this._rawModule.getters) { + forEachValue(this._rawModule.getters, fn); + } +}; -/* harmony default export */ __webpack_exports__["default"] = ({ - extends: vue_chartjs__WEBPACK_IMPORTED_MODULE_0__["Bar"], - mounted: function mounted() { - this.renderChart({ - labels: ["محصولات", "نمونه کارها", "اخبار", "سفارشات", "اعضا"], - datasets: [{ - label: ' تعداد آیتم ', - data: [16, 12, 24, 8, 40], - backgroundColor: ['rgba(238, 53, 82, 0.2)', 'rgba(255, 107, 87, 0.2)', 'rgba(172, 55, 115, 0.2)', 'rgba(50, 197, 210, 0.2)', 'rgba(0, 0, 0, 0.2)'], - borderColor: ['#ee3552', '#FF6B57', '#ac3773', '#32c5d2', '#000'], - borderWidth: 1 - }] - }); +Module.prototype.forEachAction = function forEachAction (fn) { + if (this._rawModule.actions) { + forEachValue(this._rawModule.actions, fn); } -}); +}; -/***/ }), +Module.prototype.forEachMutation = function forEachMutation (fn) { + if (this._rawModule.mutations) { + forEachValue(this._rawModule.mutations, fn); + } +}; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Charts/LineChart.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Charts/LineChart.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +Object.defineProperties( Module.prototype, prototypeAccessors$1 ); -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var vue_chartjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-chartjs */ "./node_modules/vue-chartjs/es/index.js"); +var ModuleCollection = function ModuleCollection (rawRootModule) { + // register root module (Vuex.Store options) + this.register([], rawRootModule, false); +}; -Chart.defaults.global.defaultFontFamily = '"B Yekan","arial"'; -Chart.defaults.global.defaultFontSize = 14; // Chart.canvas.parentNode.style.height = '600px'; +ModuleCollection.prototype.get = function get (path) { + return path.reduce(function (module, key) { + return module.getChild(key) + }, this.root) +}; -/* harmony default export */ __webpack_exports__["default"] = ({ - extends: vue_chartjs__WEBPACK_IMPORTED_MODULE_0__["Line"], - data: function data() { - return { - datacollection: { - datasets: [{ - label: ' بازدید وبسایت شما ', - borderColor: '#ee3552', - backgroundColor: '#ee3552', - fill: false, - data: [10, 25, 15, 45, 65, 15] - }, { - label: ' باز دید صفحه ی شما در ویلامال ', - borderColor: '#32c5d2', - backgroundColor: '#32c5d2', - fill: false, - data: [15, 30, 20, 10, 25, 5] - }], - labels: ['مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'] - }, - options: { - tooltips: { - borderWidth: 1, - borderColor: '#eeeeee', - titleFontStyle: 'lighter', - titleFontColor: '#000', - titleMarginBottom: 10, - bodyFontColor: '#000', - backgroundColor: '#fff', - xPadding: 16, - yPadding: 8 - }, - scales: { - yAxes: [{ - ticks: { - beginAtZero: true - }, - gridLines: { - display: true - } - }], - xAxes: [{ - gridLines: { - display: false - } - }] - }, - legend: { - display: true - }, - responsive: true, - maintainAspectRatio: false - } - }; - }, - mounted: function mounted() { - this.renderChart(this.datacollection, this.options); +ModuleCollection.prototype.getNamespace = function getNamespace (path) { + var module = this.root; + return path.reduce(function (namespace, key) { + module = module.getChild(key); + return namespace + (module.namespaced ? key + '/' : '') + }, '') +}; + +ModuleCollection.prototype.update = function update$1 (rawRootModule) { + update([], this.root, rawRootModule); +}; + +ModuleCollection.prototype.register = function register (path, rawModule, runtime) { + var this$1 = this; + if ( runtime === void 0 ) runtime = true; + + if (true) { + assertRawModule(path, rawModule); } -}); -/***/ }), + var newModule = new Module(rawModule, runtime); + if (path.length === 0) { + this.root = newModule; + } else { + var parent = this.get(path.slice(0, -1)); + parent.addChild(path[path.length - 1], newModule); + } -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Dividers/PageTitle.vue?vue&type=script&lang=js&": -/*!*****************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Dividers/PageTitle.vue?vue&type=script&lang=js& ***! - \*****************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // register nested modules + if (rawModule.modules) { + forEachValue(rawModule.modules, function (rawChildModule, key) { + this$1.register(path.concat(key), rawChildModule, runtime); + }); + } +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - TitleFa: { - default: "عنوان بخش" - }, - TitleEn: { - default: "Part Title" - }, - ThemeColor: { - default: "Red" - }, - TitleFaClass: { - default: "WM-Color-White" +ModuleCollection.prototype.unregister = function unregister (path) { + var parent = this.get(path.slice(0, -1)); + var key = path[path.length - 1]; + if (!parent.getChild(key).runtime) { return } + + parent.removeChild(key); +}; + +function update (path, targetModule, newModule) { + if (true) { + assertRawModule(path, newModule); + } + + // update target module + targetModule.update(newModule); + + // update nested modules + if (newModule.modules) { + for (var key in newModule.modules) { + if (!targetModule.getChild(key)) { + if (true) { + console.warn( + "[vuex] trying to add a new module '" + key + "' on hot reloading, " + + 'manual reload is needed' + ); + } + return + } + update( + path.concat(key), + targetModule.getChild(key), + newModule.modules[key] + ); } - }, - data: function data() { - return { - Color: Color - }; - }, - created: function created() { - this.Color = 'WM-BG-' + this.ThemeColor; } -}); +} -/***/ }), +var functionAssert = { + assert: function (value) { return typeof value === 'function'; }, + expected: 'function' +}; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Dividers/PartTitle.vue?vue&type=script&lang=js&": -/*!*****************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Dividers/PartTitle.vue?vue&type=script&lang=js& ***! - \*****************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +var objectAssert = { + assert: function (value) { return typeof value === 'function' || + (typeof value === 'object' && typeof value.handler === 'function'); }, + expected: 'function or object with "handler" function' +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - TitleFa: { - default: "عنوان بخش" - }, - TitleEn: { - default: "Part Title" - }, - ThemeColor: { - default: "Red" - } - }, - data: function data() { - return { - Color: 'WM-BG-' + this.ThemeColor - }; - } // - // data() { - // return { - // Color, - // } - // }, - // created : function ( ) { - // this.Color = 'WM-BG-' + this.ThemeColor; - // } +var assertTypes = { + getters: functionAssert, + mutations: functionAssert, + actions: objectAssert +}; -}); +function assertRawModule (path, rawModule) { + Object.keys(assertTypes).forEach(function (key) { + if (!rawModule[key]) { return } -/***/ }), + var assertOptions = assertTypes[key]; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/ButtonShodowed.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Inputs/ButtonShodowed.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + forEachValue(rawModule[key], function (value, type) { + assert( + assertOptions.assert(value), + makeAssertionMessage(path, key, type, value, assertOptions.expected) + ); + }); + }); +} -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - BtnClass: { - default: "WM-Btn-Black" - }, - Icon: { - default: "ok" - }, - Text: { - default: "" - } - }, - data: function data() { - return { - IconClass: 'WMi-' + this.Icon - }; +function makeAssertionMessage (path, key, type, value, expected) { + var buf = key + " should be " + expected + " but \"" + key + "." + type + "\""; + if (path.length > 0) { + buf += " in module \"" + (path.join('.')) + "\""; } -}); - -/***/ }), + buf += " is " + (JSON.stringify(value)) + "."; + return buf +} -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/SelectPicker.vue?vue&type=script&lang=js&": -/*!******************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Inputs/SelectPicker.vue?vue&type=script&lang=js& ***! - \******************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +var Vue; // bind on install -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - liveSearch: { - default: true - } - }, - mounted: function mounted() { - var _this = this; +var Store = function Store (options) { + var this$1 = this; + if ( options === void 0 ) options = {}; - var $selectpicker = $(this.$el).find(".selectpicker"); - $selectpicker.selectpicker().on("changed.bs.select", function () { - return _this.$emit("change", _this.options[$selectpicker.val()]); - }); - }, - updated: function updated() { - $(this.$el).find(".selectpicker").selectpicker("refresh"); - }, - destroyed: function destroyed() { - $(this.$el).find(".selectpicker").off().selectpicker("destroy"); - }, - computed: { - options: function options() { - return [{ - value: "asdfadf", - title: "asfd", - selected: false - }, { - value: "asdfadfasdfasd", - title: "asdf", - selected: true - }]; - } + // Auto install if it is not done yet and `window` has `Vue`. + // To allow users to avoid auto-installation in some cases, + // this code should be placed here. See #731 + if (!Vue && typeof window !== 'undefined' && window.Vue) { + install(window.Vue); } -}); -/***/ }), + if (true) { + assert(Vue, "must call Vue.use(Vuex) before creating a store instance."); + assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser."); + assert(this instanceof Store, "Store must be called with the new operator."); + } -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/Loading.vue?vue&type=script&lang=js&": -/*!***********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/Loading.vue?vue&type=script&lang=js& ***! - \***********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + var plugins = options.plugins; if ( plugins === void 0 ) plugins = []; + var strict = options.strict; if ( strict === void 0 ) strict = false; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({}); + var state = options.state; if ( state === void 0 ) state = {}; + if (typeof state === 'function') { + state = state() || {}; + } -/***/ }), + // store internal state + this._committing = false; + this._actions = Object.create(null); + this._actionSubscribers = []; + this._mutations = Object.create(null); + this._wrappedGetters = Object.create(null); + this._modules = new ModuleCollection(options); + this._modulesNamespaceMap = Object.create(null); + this._subscribers = []; + this._watcherVM = new Vue(); -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/QuickLink.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/QuickLink.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // bind commit and dispatch to self + var store = this; + var ref = this; + var dispatch = ref.dispatch; + var commit = ref.commit; + this.dispatch = function boundDispatch (type, payload) { + return dispatch.call(store, type, payload) + }; + this.commit = function boundCommit (type, payload, options) { + return commit.call(store, type, payload, options) + }; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - Counter: { - default: 0 - }, - TitleFa: { - default: "دسترسی سریع" - }, - TitleEn: { - default: "Quick Link" - }, - ThemeColor: { - default: "Red" - } - }, - data: function data() { - return { - HoverClass: 'WM-Hover-' + this.ThemeColor, - h4Class: 'WM-BG-' + this.ThemeColor - }; - } // data() { - // return { - // Color,HoverClass - // } - // }, - // - // created : function ( ) { - // this.Color = 'WM-BG-' + this.ThemeColor; - // this.HoverClass = 'WM-Hover-' + this.ThemeColor; - // } + // strict mode + this.strict = strict; -}); + // init root module. + // this also recursively registers all sub-modules + // and collects all module getters inside this._wrappedGetters + installModule(this, state, [], this._modules.root); -/***/ }), + // initialize the store vm, which is responsible for the reactivity + // (also registers _wrappedGetters as computed properties) + resetStoreVM(this, state); -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/TabDropdownItem.vue?vue&type=script&lang=js&": -/*!*******************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/TabDropdownItem.vue?vue&type=script&lang=js& ***! - \*******************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // apply plugins + plugins.forEach(function (plugin) { return plugin(this$1); }); -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - TitleFa: { - default: "دسترسی سریع" - }, - TitleEn: { - default: "Title" - }, - Color: { - default: "Black" - }, - SubItems: { - type: Object, - default: function _default() { - return {}; - } - }, - TabContent: { - default: '' - }, - Status: { - default: '' - } - }, - data: function data() { - return { - aClass: 'WM-' + this.Color, - TabHref: '#' + this.TabContent, - SubItemsCount: Object.keys(this.SubItems).length - }; - }, - mounted: function mounted() { - console.log(Object.keys(this.SubItems).length); + if (Vue.config.devtools) { + devtoolPlugin(this); } -}); +}; -/***/ }), +var prototypeAccessors = { state: { configurable: true } }; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/TabItem.vue?vue&type=script&lang=js&": -/*!***********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/TabItem.vue?vue&type=script&lang=js& ***! - \***********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +prototypeAccessors.state.get = function () { + return this._vm._data.$$state +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - TitleFa: { - default: "دسترسی سریع" - }, - TitleEn: { - default: "Title" - }, - Color: { - default: "Black" - }, - TabContent: { - default: '' - }, - Status: { - default: '' - } - }, - data: function data() { - return { - aClass: 'WM-' + this.Color, - TabHref: '#' + this.TabContent - }; +prototypeAccessors.state.set = function (v) { + if (true) { + assert(false, "Use store.replaceState() to explicit replace store state."); } -}); +}; -/***/ }), +Store.prototype.commit = function commit (_type, _payload, _options) { + var this$1 = this; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Title.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Title.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // check object-style commit + var ref = unifyObjectStyle(_type, _payload, _options); + var type = ref.type; + var payload = ref.payload; + var options = ref.options; -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - color: { - default: "hot" - }, - text: { - default: "عنوان" - }, - secondaryText: { - default: "title" - }, - helpText: { - default: null - }, - helpUrl: { - default: null + var mutation = { type: type, payload: payload }; + var entry = this._mutations[type]; + if (!entry) { + if (true) { + console.error(("[vuex] unknown mutation type: " + type)); } + return } -}); - -/***/ }), + this._withCommit(function () { + entry.forEach(function commitIterator (handler) { + handler(payload); + }); + }); + this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); }); -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/AccountBalance.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/AccountBalance.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + if ( + true && + options && options.silent + ) { + console.warn( + "[vuex] mutation type: " + type + ". Silent option has been removed. " + + 'Use the filter functionality in the vue-devtools' + ); + } +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -// -// -// +Store.prototype.dispatch = function dispatch (_type, _payload) { + var this$1 = this; -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + // check object-style dispatch + var ref = unifyObjectStyle(_type, _payload); + var type = ref.type; + var payload = ref.payload; + + var action = { type: type, payload: payload }; + var entry = this._actions[type]; + if (!entry) { + if (true) { + console.error(("[vuex] unknown action type: " + type)); + } + return } -}); -/***/ }), + this._actionSubscribers.forEach(function (sub) { return sub(action, this$1.state); }); -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Comments.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Comments.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + return entry.length > 1 + ? Promise.all(entry.map(function (handler) { return handler(payload); })) + : entry[0](payload) +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -// -// -// +Store.prototype.subscribe = function subscribe (fn) { + return genericSubscribe(fn, this._subscribers) +}; -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] - } -}); +Store.prototype.subscribeAction = function subscribeAction (fn) { + return genericSubscribe(fn, this._actionSubscribers) +}; -/***/ }), +Store.prototype.watch = function watch (getter, cb, options) { + var this$1 = this; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/CreateBusiness.vue?vue&type=script&lang=js&": -/*!********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/CreateBusiness.vue?vue&type=script&lang=js& ***! - \********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + if (true) { + assert(typeof getter === 'function', "store.watch only accepts a function."); + } + return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options) +}; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); -/* harmony import */ var _components_Inputs_SelectPicker_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Inputs/SelectPicker.vue */ "./resources/js/components/Inputs/SelectPicker.vue"); -// -// -// +Store.prototype.replaceState = function replaceState (state) { + var this$1 = this; + this._withCommit(function () { + this$1._vm._data.$$state = state; + }); +}; +Store.prototype.registerModule = function registerModule (path, rawModule, options) { + if ( options === void 0 ) options = {}; -/* harmony default export */ __webpack_exports__["default"] = ({ - data: function data() { - return { - items: ["item 1", "item 2", "item 3", "item 4", "item 5"] - }; - }, - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"], - PartTitle: _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_1__["default"], - SelectPicker: _components_Inputs_SelectPicker_vue__WEBPACK_IMPORTED_MODULE_2__["default"] + if (typeof path === 'string') { path = [path]; } + + if (true) { + assert(Array.isArray(path), "module path must be a string or an Array."); + assert(path.length > 0, 'cannot register the root module by using registerModule.'); } -}); -/***/ }), + this._modules.register(path, rawModule); + installModule(this, this.state, path, this._modules.get(path), options.preserveState); + // reset store to update getters... + resetStoreVM(this, this.state); +}; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Home.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Home.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +Store.prototype.unregisterModule = function unregisterModule (path) { + var this$1 = this; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); -/* harmony import */ var _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Misc/QuickLink.vue */ "./resources/js/components/Misc/QuickLink.vue"); -/* harmony import */ var _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Charts/BarChart.vue */ "./resources/js/components/Charts/BarChart.vue"); -/* harmony import */ var _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Charts/LineChart.vue */ "./resources/js/components/Charts/LineChart.vue"); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// + if (typeof path === 'string') { path = [path]; } + if (true) { + assert(Array.isArray(path), "module path must be a string or an Array."); + } + this._modules.unregister(path); + this._withCommit(function () { + var parentState = getNestedState(this$1.state, path.slice(0, -1)); + Vue.delete(parentState, path[path.length - 1]); + }); + resetStore(this); +}; +Store.prototype.hotUpdate = function hotUpdate (newOptions) { + this._modules.update(newOptions); + resetStore(this, true); +}; -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - PartTitle: _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__["default"], - QuickLink: _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_1__["default"], - BarChart: _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_2__["default"], - LineChart: _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_3__["default"] +Store.prototype._withCommit = function _withCommit (fn) { + var committing = this._committing; + this._committing = true; + fn(); + this._committing = committing; +}; + +Object.defineProperties( Store.prototype, prototypeAccessors ); + +function genericSubscribe (fn, subs) { + if (subs.indexOf(fn) < 0) { + subs.push(fn); } -}); + return function () { + var i = subs.indexOf(fn); + if (i > -1) { + subs.splice(i, 1); + } + } +} -/***/ }), +function resetStore (store, hot) { + store._actions = Object.create(null); + store._mutations = Object.create(null); + store._wrappedGetters = Object.create(null); + store._modulesNamespaceMap = Object.create(null); + var state = store.state; + // init all modules + installModule(store, state, [], store._modules.root, true); + // reset vm + resetStoreVM(store, state, hot); +} -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/MyBusiness.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/MyBusiness.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +function resetStoreVM (store, state, hot) { + var oldVm = store._vm; -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -// -// -// + // bind store public getters + store.getters = {}; + var wrappedGetters = store._wrappedGetters; + var computed = {}; + forEachValue(wrappedGetters, function (fn, key) { + // use computed to leverage its lazy-caching mechanism + computed[key] = function () { return fn(store); }; + Object.defineProperty(store.getters, key, { + get: function () { return store._vm[key]; }, + enumerable: true // for local getters + }); + }); -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + // use a Vue instance to store the state tree + // suppress warnings just in case the user has added + // some funky global mixins + var silent = Vue.config.silent; + Vue.config.silent = true; + store._vm = new Vue({ + data: { + $$state: state + }, + computed: computed + }); + Vue.config.silent = silent; + + // enable strict mode for new vm + if (store.strict) { + enableStrictMode(store); } -}); -/***/ }), + if (oldVm) { + if (hot) { + // dispatch changes in all subscribed watchers + // to force getter re-evaluation for hot reloading. + store._withCommit(function () { + oldVm._data.$$state = null; + }); + } + Vue.nextTick(function () { return oldVm.$destroy(); }); + } +} -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/PMs.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/PMs.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +function installModule (store, rootState, path, module, hot) { + var isRoot = !path.length; + var namespace = store._modules.getNamespace(path); -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -// -// -// + // register in namespace map + if (module.namespaced) { + store._modulesNamespaceMap[namespace] = module; + } -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + // set state + if (!isRoot && !hot) { + var parentState = getNestedState(rootState, path.slice(0, -1)); + var moduleName = path[path.length - 1]; + store._withCommit(function () { + Vue.set(parentState, moduleName, module.state); + }); } -}); -/***/ }), + var local = module.context = makeLocalContext(store, namespace, path); -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Summery.vue?vue&type=script&lang=js&": -/*!*************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Summery.vue?vue&type=script&lang=js& ***! - \*************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + module.forEachMutation(function (mutation, key) { + var namespacedType = namespace + key; + registerMutation(store, namespacedType, mutation, local); + }); -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); -/* harmony import */ var _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Misc/QuickLink.vue */ "./resources/js/components/Misc/QuickLink.vue"); -/* harmony import */ var _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Charts/BarChart.vue */ "./resources/js/components/Charts/BarChart.vue"); -/* harmony import */ var _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Charts/LineChart.vue */ "./resources/js/components/Charts/LineChart.vue"); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// + module.forEachAction(function (action, key) { + var type = action.root ? key : namespace + key; + var handler = action.handler || action; + registerAction(store, type, handler, local); + }); + module.forEachGetter(function (getter, key) { + var namespacedType = namespace + key; + registerGetter(store, namespacedType, getter, local); + }); + module.forEachChild(function (child, key) { + installModule(store, rootState, path.concat(key), child, hot); + }); +} +/** + * make localized dispatch, commit, getters and state + * if there is no namespace, just use root ones + */ +function makeLocalContext (store, namespace, path) { + var noNamespace = namespace === ''; -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - PartTitle: _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__["default"], - QuickLink: _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_1__["default"], - BarChart: _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_2__["default"], - LineChart: _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_3__["default"] - } -}); + var local = { + dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) { + var args = unifyObjectStyle(_type, _payload, _options); + var payload = args.payload; + var options = args.options; + var type = args.type; -/***/ }), + if (!options || !options.root) { + type = namespace + type; + if ( true && !store._actions[type]) { + console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type)); + return + } + } -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserInfo.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/UserInfo.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + return store.dispatch(type, payload) + }, -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -// -// -// -// + commit: noNamespace ? store.commit : function (_type, _payload, _options) { + var args = unifyObjectStyle(_type, _payload, _options); + var payload = args.payload; + var options = args.options; + var type = args.type; -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] - } -}); + if (!options || !options.root) { + type = namespace + type; + if ( true && !store._mutations[type]) { + console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type)); + return + } + } -/***/ }), + store.commit(type, payload, options); + } + }; -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserOrders.vue?vue&type=script&lang=js&": -/*!****************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/UserOrders.vue?vue&type=script&lang=js& ***! - \****************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // getters and state object must be gotten lazily + // because they will be changed by vm update + Object.defineProperties(local, { + getters: { + get: noNamespace + ? function () { return store.getters; } + : function () { return makeLocalGetters(store, namespace); } + }, + state: { + get: function () { return getNestedState(store.state, path); } + } + }); -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); -// -// -// -// + return local +} -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] - } -}); +function makeLocalGetters (store, namespace) { + var gettersProxy = {}; -/***/ }), + var splitPos = namespace.length; + Object.keys(store.getters).forEach(function (type) { + // skip if the target getter is not match this namespace + if (type.slice(0, splitPos) !== namespace) { return } -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/WebsiteManagment.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/WebsiteManagment.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + // extract local getter type + var localType = type.slice(splitPos); -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); -/* harmony import */ var _components_Dividers_PageTitle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Dividers/PageTitle.vue */ "./resources/js/components/Dividers/PageTitle.vue"); -/* harmony import */ var _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Misc/QuickLink.vue */ "./resources/js/components/Misc/QuickLink.vue"); -/* harmony import */ var _components_Misc_TabItem_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Misc/TabItem.vue */ "./resources/js/components/Misc/TabItem.vue"); -/* harmony import */ var _components_Misc_TabDropdownItem_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Misc/TabDropdownItem.vue */ "./resources/js/components/Misc/TabDropdownItem.vue"); -/* harmony import */ var _components_Inputs_ButtonShodowed_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/Inputs/ButtonShodowed.vue */ "./resources/js/components/Inputs/ButtonShodowed.vue"); -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + // Add a port to the getters proxy. + // Define as getter property because + // we do not want to evaluate the getters in this time. + Object.defineProperty(gettersProxy, localType, { + get: function () { return store.getters[type]; }, + enumerable: true + }); + }); + return gettersProxy +} + +function registerMutation (store, type, handler, local) { + var entry = store._mutations[type] || (store._mutations[type] = []); + entry.push(function wrappedMutationHandler (payload) { + handler.call(store, local.state, payload); + }); +} + +function registerAction (store, type, handler, local) { + var entry = store._actions[type] || (store._actions[type] = []); + entry.push(function wrappedActionHandler (payload, cb) { + var res = handler.call(store, { + dispatch: local.dispatch, + commit: local.commit, + getters: local.getters, + state: local.state, + rootGetters: store.getters, + rootState: store.state + }, payload, cb); + if (!isPromise(res)) { + res = Promise.resolve(res); + } + if (store._devtoolHook) { + return res.catch(function (err) { + store._devtoolHook.emit('vuex:error', err); + throw err + }) + } else { + return res + } + }); +} + +function registerGetter (store, type, rawGetter, local) { + if (store._wrappedGetters[type]) { + if (true) { + console.error(("[vuex] duplicate getter key: " + type)); + } + return + } + store._wrappedGetters[type] = function wrappedGetter (store) { + return rawGetter( + local.state, // local state + local.getters, // local getters + store.state, // root state + store.getters // root getters + ) + }; +} + +function enableStrictMode (store) { + store._vm.$watch(function () { return this._data.$$state }, function () { + if (true) { + assert(store._committing, "Do not mutate vuex store state outside mutation handlers."); + } + }, { deep: true, sync: true }); +} + +function getNestedState (state, path) { + return path.length + ? path.reduce(function (state, key) { return state[key]; }, state) + : state +} + +function unifyObjectStyle (type, payload, options) { + if (isObject(type) && type.type) { + options = payload; + payload = type; + type = type.type; + } + + if (true) { + assert(typeof type === 'string', ("Expects string as the type, but found " + (typeof type) + ".")); + } + + return { type: type, payload: payload, options: options } +} + +function install (_Vue) { + if (Vue && _Vue === Vue) { + if (true) { + console.error( + '[vuex] already installed. Vue.use(Vuex) should be called only once.' + ); + } + return + } + Vue = _Vue; + applyMixin(Vue); +} + +var mapState = normalizeNamespace(function (namespace, states) { + var res = {}; + normalizeMap(states).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + res[key] = function mappedState () { + var state = this.$store.state; + var getters = this.$store.getters; + if (namespace) { + var module = getModuleByNamespace(this.$store, 'mapState', namespace); + if (!module) { + return + } + state = module.context.state; + getters = module.context.getters; + } + return typeof val === 'function' + ? val.call(this, state, getters) + : state[val] + }; + // mark vuex getter for devtools + res[key].vuex = true; + }); + return res +}); + +var mapMutations = normalizeNamespace(function (namespace, mutations) { + var res = {}; + normalizeMap(mutations).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + res[key] = function mappedMutation () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var commit = this.$store.commit; + if (namespace) { + var module = getModuleByNamespace(this.$store, 'mapMutations', namespace); + if (!module) { + return + } + commit = module.context.commit; + } + return typeof val === 'function' + ? val.apply(this, [commit].concat(args)) + : commit.apply(this.$store, [val].concat(args)) + }; + }); + return res +}); + +var mapGetters = normalizeNamespace(function (namespace, getters) { + var res = {}; + normalizeMap(getters).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + val = namespace + val; + res[key] = function mappedGetter () { + if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) { + return + } + if ( true && !(val in this.$store.getters)) { + console.error(("[vuex] unknown getter: " + val)); + return + } + return this.$store.getters[val] + }; + // mark vuex getter for devtools + res[key].vuex = true; + }); + return res +}); + +var mapActions = normalizeNamespace(function (namespace, actions) { + var res = {}; + normalizeMap(actions).forEach(function (ref) { + var key = ref.key; + var val = ref.val; + + res[key] = function mappedAction () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var dispatch = this.$store.dispatch; + if (namespace) { + var module = getModuleByNamespace(this.$store, 'mapActions', namespace); + if (!module) { + return + } + dispatch = module.context.dispatch; + } + return typeof val === 'function' + ? val.apply(this, [dispatch].concat(args)) + : dispatch.apply(this.$store, [val].concat(args)) + }; + }); + return res +}); + +var createNamespacedHelpers = function (namespace) { return ({ + mapState: mapState.bind(null, namespace), + mapGetters: mapGetters.bind(null, namespace), + mapMutations: mapMutations.bind(null, namespace), + mapActions: mapActions.bind(null, namespace) +}); }; + +function normalizeMap (map) { + return Array.isArray(map) + ? map.map(function (key) { return ({ key: key, val: key }); }) + : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); }) +} + +function normalizeNamespace (fn) { + return function (namespace, map) { + if (typeof namespace !== 'string') { + map = namespace; + namespace = ''; + } else if (namespace.charAt(namespace.length - 1) !== '/') { + namespace += '/'; + } + return fn(namespace, map) + } +} + +function getModuleByNamespace (store, helper, namespace) { + var module = store._modulesNamespaceMap[namespace]; + if ( true && !module) { + console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace)); + } + return module +} + +var index_esm = { + Store: Store, + install: install, + version: '3.0.1', + mapState: mapState, + mapMutations: mapMutations, + mapGetters: mapGetters, + mapActions: mapActions, + createNamespacedHelpers: createNamespacedHelpers +}; + + +/* harmony default export */ __webpack_exports__["default"] = (index_esm); + + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/App.vue?vue&type=script&lang=js&": +/*!***************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/App.vue?vue&type=script&lang=js& ***! + \***************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Body_Header_Nav_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Body/Header/Nav.vue */ "./resources/js/components/Body/Header/Nav.vue"); +/* harmony import */ var _components_Misc_Loading_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/Misc/Loading.vue */ "./resources/js/components/Misc/Loading.vue"); +/* harmony import */ var _components_Body_Header_HeaderBG_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Body/Header/HeaderBG.vue */ "./resources/js/components/Body/Header/HeaderBG.vue"); +/* harmony import */ var _components_Body_Footer_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/Body/Footer.vue */ "./resources/js/components/Body/Footer.vue"); +// +// // // // @@ -1171,6 +1066,35 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // // // + + + + +/* harmony default export */ __webpack_exports__["default"] = ({ + data: function data() { + return { + loadingVisible: false + }; + }, + components: { + Nav: _components_Body_Header_Nav_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + HeaderBG: _components_Body_Header_HeaderBG_vue__WEBPACK_IMPORTED_MODULE_2__["default"], + Footer: _components_Body_Footer_vue__WEBPACK_IMPORTED_MODULE_3__["default"], + Loading: _components_Misc_Loading_vue__WEBPACK_IMPORTED_MODULE_1__["default"] + } +}); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Footer.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Footer.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); // // // @@ -1207,10 +1131,38 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // // // +/* harmony default export */ __webpack_exports__["default"] = ({}); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/HeaderBG.vue?vue&type=script&lang=js&": +/*!*******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/HeaderBG.vue?vue&type=script&lang=js& ***! + \*******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); // // // // +/* harmony default export */ __webpack_exports__["default"] = ({}); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/Nav.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/Nav.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _NavItem_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NavItem.vue */ "./resources/js/components/Body/Header/NavItem.vue"); +/* harmony import */ var _NavIcon_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NavIcon.vue */ "./resources/js/components/Body/Header/NavIcon.vue"); // // // @@ -1238,6 +1190,26 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // // // + + +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + NavItem: _NavItem_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + NavIcon: _NavIcon_vue__WEBPACK_IMPORTED_MODULE_1__["default"] + } +}); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/NavIcon.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/NavIcon.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); // // // @@ -1245,6 +1217,43 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // // // +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + Icon: { + default: "دسترسی سریع" + }, + ThemeColor: { + default: "Red" + }, + Quantity: { + default: "" + }, + IconSize: { + default: "WM-Font-20" + }, + Route: { + default: "#" + } + }, + data: function data() { + return { + aClass: 'WM-Link-' + this.ThemeColor, + spanClass: 'WM-BG-' + this.ThemeColor + }; + } +}); + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Body/Header/NavItem.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Body/Header/NavItem.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); // // // @@ -1252,4143 +1261,4607 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope // // // -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + TitleFa: { + default: "دسترسی سریع" + }, + TitleEn: { + default: "Quick Link" + }, + ThemeColor: { + default: "Red" + }, + Route: { + default: "#" + } + }, + data: function data() { + return { + HoverClass: 'WM-Link-' + this.ThemeColor + }; + } // + // data() { + // return { + // Color,HoverClass + // } + // }, + // created : function ( ) { + // this.Color = 'WM-BG-' + this.ThemeColor; + // this.HoverClass = 'WM-Link-' + this.ThemeColor; + // } +}); +/***/ }), +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Charts/BarChart.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Charts/BarChart.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var vue_chartjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-chartjs */ "./node_modules/vue-chartjs/es/index.js"); /* harmony default export */ __webpack_exports__["default"] = ({ - components: { - PartTitle: _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__["default"], - PageTitle: _components_Dividers_PageTitle_vue__WEBPACK_IMPORTED_MODULE_1__["default"], - QuickLink: _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_2__["default"], - TabItem: _components_Misc_TabItem_vue__WEBPACK_IMPORTED_MODULE_3__["default"], - TabDropdownItem: _components_Misc_TabDropdownItem_vue__WEBPACK_IMPORTED_MODULE_4__["default"], - ButtonShodowed: _components_Inputs_ButtonShodowed_vue__WEBPACK_IMPORTED_MODULE_5__["default"] - }, - data: function data() { - return _defineProperty({ - UserDetails: false, - UserRoles: false, - Tabs: { - MembersClub: { - Type: 'TabItem', - NameFa: ' باشگاه مشتریان ', - NameEn: 'Members Club', - Status: 'Active' - }, - SpecialForms: { - Type: 'TabDropdownItem', - NameFa: ' فرم های خاص من ', - NameEn: 'My Special Forms', - SubItems: { - Item1: { - NameFa: ' فرم تماس با ما ', - NameEn: 'Contact Us' - }, - Item2: { - NameFa: ' فرم پیش ثبت نام من ', - NameEn: 'My Pre SignUp Form' - } - } - }, - Reservation: { - Type: 'TabItem', - NameFa: ' رزرو وقت ', - NameEn: 'Reservation' - } - }, - Users: { - 1: { - Name: ' علیرضا حسنی ', - Email: 'Alireza-Hassani@outlook.com', - CellNumber: '09127004945' - }, - 4: { - Name: ' فرید ساروی ', - CellNumber: '09127476990' - }, - 27: { - Name: ' سعید خاکبازان ', - CellNumber: '09336541236' - } - } - }, "UserDetails", { - Name: ' علیرضا حسنی ', - Email: 'Alireza-Hassani@outlook.com', - CellNumber: '09127004945' + extends: vue_chartjs__WEBPACK_IMPORTED_MODULE_0__["Bar"], + mounted: function mounted() { + this.renderChart({ + labels: ["محصولات", "نمونه کارها", "اخبار", "سفارشات", "اعضا"], + datasets: [{ + label: ' تعداد آیتم ', + data: [16, 12, 24, 8, 40], + backgroundColor: ['rgba(238, 53, 82, 0.2)', 'rgba(255, 107, 87, 0.2)', 'rgba(172, 55, 115, 0.2)', 'rgba(50, 197, 210, 0.2)', 'rgba(0, 0, 0, 0.2)'], + borderColor: ['#ee3552', '#FF6B57', '#ac3773', '#32c5d2', '#000'], + borderWidth: 1 + }] }); } }); /***/ }), -/***/ "./node_modules/bootstrap-select/dist/css/bootstrap-select.css": -/*!*********************************************************************!*\ - !*** ./node_modules/bootstrap-select/dist/css/bootstrap-select.css ***! - \*********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - - -var content = __webpack_require__(/*! !../../../css-loader??ref--5-1!../../../postcss-loader/src??ref--5-2!./bootstrap-select.css */ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap-select/dist/css/bootstrap-select.css"); +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Charts/DoughnutChart.vue?vue&type=script&lang=js&": +/*!*******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Charts/DoughnutChart.vue?vue&type=script&lang=js& ***! + \*******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -if(typeof content === 'string') content = [[module.i, content, '']]; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var vue_chartjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-chartjs */ "./node_modules/vue-chartjs/es/index.js"); -var transform; -var insertInto; +/* harmony default export */ __webpack_exports__["default"] = ({ + extends: vue_chartjs__WEBPACK_IMPORTED_MODULE_0__["Doughnut"], + mounted: function mounted() { + this.renderChart({ + labels: ["محصولات", "نمونه کارها", "اخبار", "سفارشات", "اعضا"], + datasets: [{ + labels: ['Red', 'Yellow', 'Blue'], + data: [16, 12, 24, 8, 40], + backgroundColor: ['rgba(238, 53, 82, 0.2)', 'rgba(255, 107, 87, 0.2)', 'rgba(172, 55, 115, 0.2)', 'rgba(50, 197, 210, 0.2)', 'rgba(0, 0, 0, 0.2)'], + borderColor: ['#ee3552', '#FF6B57', '#ac3773', '#32c5d2', '#000'], + borderWidth: 1 + }] + }); + } +}); +/***/ }), +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Charts/LineChart.vue?vue&type=script&lang=js&": +/*!***************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Charts/LineChart.vue?vue&type=script&lang=js& ***! + \***************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var options = {"hmr":true} - -options.transform = transform -options.insertInto = undefined; - -var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var vue_chartjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-chartjs */ "./node_modules/vue-chartjs/es/index.js"); -if(content.locals) module.exports = content.locals; +Chart.defaults.global.defaultFontFamily = '"B Yekan","arial"'; +Chart.defaults.global.defaultFontSize = 14; // Chart.canvas.parentNode.style.height = '600px'; -if(false) {} +/* harmony default export */ __webpack_exports__["default"] = ({ + extends: vue_chartjs__WEBPACK_IMPORTED_MODULE_0__["Line"], + data: function data() { + return { + datacollection: { + datasets: [{ + label: ' بازدید وبسایت شما ', + borderColor: '#ee3552', + backgroundColor: '#ee3552', + fill: false, + data: [10, 25, 15, 45, 65, 15] + }, { + label: ' باز دید صفحه ی شما در ویلامال ', + borderColor: '#32c5d2', + backgroundColor: '#32c5d2', + fill: false, + data: [15, 30, 20, 10, 25, 5] + }], + labels: ['مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'] + }, + options: { + tooltips: { + borderWidth: 1, + borderColor: '#eeeeee', + titleFontStyle: 'lighter', + titleFontColor: '#000', + titleMarginBottom: 10, + bodyFontColor: '#000', + backgroundColor: '#fff', + xPadding: 16, + yPadding: 8 + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true + }, + gridLines: { + display: true + } + }], + xAxes: [{ + gridLines: { + display: false + } + }] + }, + legend: { + display: true + }, + responsive: true, + maintainAspectRatio: false + } + }; + }, + mounted: function mounted() { + this.renderChart(this.datacollection, this.options); + } +}); /***/ }), -/***/ "./node_modules/bootstrap-select/dist/js/bootstrap-select.js": -/*!*******************************************************************!*\ - !*** ./node_modules/bootstrap-select/dist/js/bootstrap-select.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * Bootstrap-select v1.13.5 (https://developer.snapappointments.com/bootstrap-select) - * - * Copyright 2012-2018 SnapAppointments, LLC - * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) - */ - -(function (root, factory) { - if (root === undefined && window !== undefined) root = window; - if (true) { - // AMD. Register as an anonymous module unless amdModuleId is set - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (a0) { - return (factory(a0)); - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} -}(this, function (jQuery) { - -(function ($) { - 'use strict'; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Dividers/PageTitle.vue?vue&type=script&lang=js&": +/*!*****************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Dividers/PageTitle.vue?vue&type=script&lang=js& ***! + \*****************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // Polyfill for browsers with no classList support - // Remove in v2 - if (!('classList' in document.createElement('_'))) { - (function (view) { - if (!('Element' in view)) return; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + TitleFa: { + default: "عنوان بخش" + }, + TitleEn: { + default: "Part Title" + }, + Color: { + default: "Red" + }, + TitleFaClass: { + default: "WM-Color-White" + } + }, + data: function data() { + return { + Color: Color + }; + } +}); - var classListProp = 'classList', - protoProp = 'prototype', - elemCtrProto = view.Element[protoProp], - objCtr = Object, - classListGetter = function () { - var $elem = $(this); +/***/ }), - return { - add: function (classes) { - return $elem.addClass(classes); - }, - remove: function (classes) { - return $elem.removeClass(classes); - }, - toggle: function (classes, force) { - return $elem.toggleClass(classes, force); - }, - contains: function (classes) { - return $elem.hasClass(classes); - } - } - }; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Dividers/PartTitle.vue?vue&type=script&lang=js&": +/*!*****************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Dividers/PartTitle.vue?vue&type=script&lang=js& ***! + \*****************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (objCtr.defineProperty) { - var classListPropDesc = { - get: classListGetter, - enumerable: true, - configurable: true - }; - try { - objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); - } catch (ex) { // IE 8 doesn't support enumerable:true - // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36 - // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected - if (ex.number === undefined || ex.number === -0x7FF5EC54) { - classListPropDesc.enumerable = false; - objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); - } - } - } else if (objCtr[protoProp].__defineGetter__) { - elemCtrProto.__defineGetter__(classListProp, classListGetter); - } - }(window)); +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + TitleFa: { + default: "عنوان بخش" + }, + TitleEn: { + default: "Part Title" + }, + Color: { + default: "black" + }, + TextColor: { + default: "white--text" + } + }, + data: function data() { + return {}; } +}); - var testElement = document.createElement('_'); - - testElement.classList.toggle('c3', false); +/***/ }), - // Polyfill for IE 10 and Firefox <24, where classList.toggle does not - // support the second argument. - if (testElement.classList.contains('c3')) { - var _toggle = DOMTokenList.prototype.toggle; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/ButtonShodowed.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Inputs/ButtonShodowed.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - DOMTokenList.prototype.toggle = function (token, force) { - if (1 in arguments && !this.contains(token) === !force) { - return force; - } else { - return _toggle.call(this, token); - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + BtnClass: { + default: "WM-Btn-Black" + }, + Icon: { + default: "ok" + }, + Text: { + default: "" + } + }, + data: function data() { + return { + IconClass: 'WMi-' + this.Icon }; } +}); - testElement = null; - - // shallow array comparison - function isEqual (array1, array2) { - return array1.length === array2.length && array1.every(function (element, index) { - return element === array2[index]; - }); - }; +/***/ }), - // <editor-fold desc="Shims"> - if (!String.prototype.startsWith) { - (function () { - 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` - var defineProperty = (function () { - // IE 8 only supports `Object.defineProperty` on DOM elements - try { - var object = {}; - var $defineProperty = Object.defineProperty; - var result = $defineProperty(object, object, object) && $defineProperty; - } catch (error) { - } - return result; - }()); - var toString = {}.toString; - var startsWith = function (search) { - if (this == null) { - throw new TypeError(); - } - var string = String(this); - if (search && toString.call(search) == '[object RegExp]') { - throw new TypeError(); - } - var stringLength = string.length; - var searchString = String(search); - var searchLength = searchString.length; - var position = arguments.length > 1 ? arguments[1] : undefined; - // `ToInteger` - var pos = position ? Number(position) : 0; - if (pos != pos) { // better `isNaN` - pos = 0; - } - var start = Math.min(Math.max(pos, 0), stringLength); - // Avoid the `indexOf` call if no match is possible - if (searchLength + start > stringLength) { - return false; - } - var index = -1; - while (++index < searchLength) { - if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { - return false; - } - } - return true; - }; - if (defineProperty) { - defineProperty(String.prototype, 'startsWith', { - 'value': startsWith, - 'configurable': true, - 'writable': true - }); - } else { - String.prototype.startsWith = startsWith; - } - }()); - } +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/Checkbox.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Inputs/Checkbox.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (!Object.keys) { - Object.keys = function ( - o, // object - k, // key - r // result array - ) { - // initialize object and result - r = []; - // iterate over object keys - for (k in o) { - // fill result array with non-prototypical keys - r.hasOwnProperty.call(o, k) && r.push(k); - } - // return result - return r; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + ItemID: { + default: "Checkbox" + }, + ItemText: { + default: " مقدار پیش فرض " + }, + Color: { + default: "Red" + } + }, + data: function data() { + return { + IconClass: 'WMi-' + this.Icon }; } +}); - // much faster than $.val() - function getSelectValues (select) { - var result = []; - var options = select && select.options; - var opt; +/***/ }), - if (select.multiple) { - for (var i = 0, len = options.length; i < len; i++) { - opt = options[i]; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/SelectPicker.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Inputs/SelectPicker.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (opt.selected) { - result.push(opt.value || opt.text); - } - } - } else { - result = select.value; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + liveSearch: { + default: true } + }, + mounted: function mounted() { + var _this = this; - return result; + var $selectpicker = $(this.$el).find(".selectpicker"); + $selectpicker.selectpicker().on("changed.bs.select", function () { + return _this.$emit("change", _this.options[$selectpicker.val()]); + }); + }, + updated: function updated() { + $(this.$el).find(".selectpicker").selectpicker("refresh"); + }, + destroyed: function destroyed() { + $(this.$el).find(".selectpicker").off().selectpicker("destroy"); + }, + computed: { + options: function options() { + return [{ + value: "asdfadf", + title: "asfd", + selected: false + }, { + value: "asdfadfasdfasd", + title: "asdf", + selected: true + }]; + } } +}); - // set data-selected on select element if the value has been programmatically selected - // prior to initialization of bootstrap-select - // * consider removing or replacing an alternative method * - var valHooks = { - useDefault: false, - _set: $.valHooks.select.set - }; - - $.valHooks.select.set = function (elem, value) { - if (value && !valHooks.useDefault) $(elem).data('selected', true); - - return valHooks._set.apply(this, arguments); - }; +/***/ }), - var changedArguments = null; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/Loading.vue?vue&type=script&lang=js&": +/*!***********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/Loading.vue?vue&type=script&lang=js& ***! + \***********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var EventIsSupported = (function () { - try { - new Event('change'); - return true; - } catch (e) { - return false; - } - })(); +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({}); - $.fn.triggerNative = function (eventName) { - var el = this[0], - event; +/***/ }), - if (el.dispatchEvent) { // for modern browsers & IE9+ - if (EventIsSupported) { - // For modern browsers - event = new Event(eventName, { - bubbles: true - }); - } else { - // For IE since it doesn't support Event constructor - event = document.createEvent('Event'); - event.initEvent(eventName, true, false); - } +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/QuickLink.vue?vue&type=script&lang=js&": +/*!*************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/QuickLink.vue?vue&type=script&lang=js& ***! + \*************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - el.dispatchEvent(event); - } else if (el.fireEvent) { // for IE8 - event = document.createEventObject(); - event.eventType = eventName; - el.fireEvent('on' + eventName, event); - } else { - // fall back to jQuery.trigger - this.trigger(eventName); +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + Counter: { + default: 0 + }, + TitleFa: { + default: "دسترسی سریع" + }, + TitleEn: { + default: "Quick Link" + }, + ThemeColor: { + default: "Red" } - }; - // </editor-fold> - - function stringSearch (li, searchString, method, normalize) { - var stringTypes = [ - 'content', - 'subtext', - 'tokens' - ], - searchSuccess = false; - - for (var i = 0; i < stringTypes.length; i++) { - var stringType = stringTypes[i], - string = li[stringType]; - - if (string) { - string = string.toString(); - - // Strip HTML tags. This isn't perfect, but it's much faster than any other method - if (stringType === 'content') { - string = string.replace(/<[^>]+>/g, ''); - } + }, + data: function data() { + return { + HoverClass: 'WM-Hover-' + this.ThemeColor, + h4Class: 'WM-BG-' + this.ThemeColor + }; + } +}); - if (normalize) string = normalizeToBase(string); - string = string.toUpperCase(); +/***/ }), - if (method === 'contains') { - searchSuccess = string.indexOf(searchString) >= 0; - } else { - searchSuccess = string.startsWith(searchString); - } +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/TabDropdownItem.vue?vue&type=script&lang=js&": +/*!*******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/TabDropdownItem.vue?vue&type=script&lang=js& ***! + \*******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (searchSuccess) break; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + TitleFa: { + default: "دسترسی سریع" + }, + TitleEn: { + default: "Title" + }, + Color: { + default: "Black" + }, + SubItems: { + type: Object, + default: function _default() { + return {}; } + }, + TabContent: { + default: '' + }, + Status: { + default: '' } - - return searchSuccess; - } - - function toInteger (value) { - return parseInt(value, 10) || 0; + }, + data: function data() { + return { + aClass: 'WM-' + this.Color, + TabHref: '#' + this.TabContent, + SubItemsCount: Object.keys(this.SubItems).length + }; + }, + mounted: function mounted() { + console.log(Object.keys(this.SubItems).length); } +}); - // Borrowed from Lodash (_.deburr) - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; +/***/ }), - /** Used to compose unicode character classes. */ - var rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboMarksExtendedRange = '\\u1ab0-\\u1aff', - rsComboMarksSupplementRange = '\\u1dc0-\\u1dff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/TabItem.vue?vue&type=script&lang=js&": +/*!***********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/TabItem.vue?vue&type=script&lang=js& ***! + \***********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** Used to compose unicode capture groups. */ - var rsCombo = '[' + rsComboRange + ']'; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + TitleFa: { + default: "دسترسی سریع" + }, + TitleEn: { + default: "Title" + }, + Color: { + default: "Black" + }, + TabContent: { + default: '' + }, + Status: { + default: '' + }, + Quantity: { + default: 0 + } + }, + data: function data() { + return { + aClass: 'WM-' + this.Color, + TabHref: '#' + this.TabContent + }; + } +}); - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); +/***/ }), - function deburrLetter (key) { - return deburredLetters[key]; - }; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendEmailModal.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/SendEmailModal.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - function normalizeToBase (string) { - string = string.toString(); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + Color: { + default: 'grey darken-4' + } } +}); - // List of HTML entities for escaping. - var escapeMap = { - '&': '&amp;', - '<': '&lt;', - '>': '&gt;', - '"': '&quot;', - "'": '&#x27;', - '`': '&#x60;' - }; - - var unescapeMap = { - '&amp;': '&', - '&lt;': '<', - '&gt;': '>', - '&quot;': '"', - '&#x27;': "'", - '&#x60;': '`' - }; +/***/ }), - // Functions for escaping and unescaping strings to/from HTML interpolation. - var createEscaper = function (map) { - var escaper = function (match) { - return map[match]; - }; - // Regexes for identifying a key that needs to be escaped. - var source = '(?:' + Object.keys(map).join('|') + ')'; - var testRegexp = RegExp(source); - var replaceRegexp = RegExp(source, 'g'); - return function (string) { - string = string == null ? '' : '' + string; - return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; - }; - }; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendSMSModal.vue?vue&type=script&lang=js&": +/*!******************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/SendSMSModal.vue?vue&type=script&lang=js& ***! + \******************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var htmlEscape = createEscaper(escapeMap); - var htmlUnescape = createEscaper(unescapeMap); +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + Color: { + default: 'grey darken-4' + } + } +}); - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ +/***/ }), - var keyCodeMap = { - 32: ' ', - 48: '0', - 49: '1', - 50: '2', - 51: '3', - 52: '4', - 53: '5', - 54: '6', - 55: '7', - 56: '8', - 57: '9', - 59: ';', - 65: 'A', - 66: 'B', - 67: 'C', - 68: 'D', - 69: 'E', - 70: 'F', - 71: 'G', - 72: 'H', - 73: 'I', - 74: 'J', - 75: 'K', - 76: 'L', - 77: 'M', - 78: 'N', - 79: 'O', - 80: 'P', - 81: 'Q', - 82: 'R', - 83: 'S', - 84: 'T', - 85: 'U', - 86: 'V', - 87: 'W', - 88: 'X', - 89: 'Y', - 90: 'Z', - 96: '0', - 97: '1', - 98: '2', - 99: '3', - 100: '4', - 101: '5', - 102: '6', - 103: '7', - 104: '8', - 105: '9' - }; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserDetailsModal.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/UserDetailsModal.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var keyCodes = { - ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key - ENTER: 13, // KeyboardEvent.which value for Enter key - SPACE: 32, // KeyboardEvent.which value for space key - TAB: 9, // KeyboardEvent.which value for tab key - ARROW_UP: 38, // KeyboardEvent.which value for up arrow key - ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); +/* harmony import */ var Vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Vuex */ "./node_modules/Vuex/dist/vuex.esm.js"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// - var version = { - success: false, - major: '3' - }; - try { - version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); - version.major = version.full[0]; - version.success = true; - } catch (err) { - console.warn( - 'There was an issue retrieving Bootstrap\'s version. ' + - 'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' + - 'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.', - err - ); +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + PartTitle: _Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__["default"] } +}); - var selectId = 0; +/***/ }), - var EVENT_KEY = '.bs.select'; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserRolesModal.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/UserRolesModal.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var classNames = { - DISABLED: 'disabled', - DIVIDER: 'divider', - SHOW: 'open', - DROPUP: 'dropup', - MENU: 'dropdown-menu', - MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left', - // to-do: replace with more advanced template/customization options - BUTTONCLASS: 'btn-default', - POPOVERHEADER: 'popover-title' - } - - var Selector = { - MENU: '.' + classNames.MENU - } - - if (version.major === '4') { - classNames.DIVIDER = 'dropdown-divider'; - classNames.SHOW = 'show'; - classNames.BUTTONCLASS = 'btn-light'; - classNames.POPOVERHEADER = 'popover-header'; - } - - var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN); - var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE); - - var Selectpicker = function (element, options) { - var that = this; - - // bootstrap-select has been initialized - revert valHooks.select.set back to its original function - if (!valHooks.useDefault) { - $.valHooks.select.set = valHooks._set; - valHooks.useDefault = true; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + Color: { + default: 'grey darken-4' } - - this.$element = $(element); - this.$newElement = null; - this.$button = null; - this.$menu = null; - this.options = options; - this.selectpicker = { - main: { - // store originalIndex (key) and newIndex (value) in this.selectpicker.main.map.newIndex for fast accessibility - // allows us to do this.main.elements[this.selectpicker.main.map.newIndex[index]] to select an element based on the originalIndex - map: { - newIndex: {}, - originalIndex: {} - } - }, - current: { - map: {} - }, // current changes if a search is in progress - search: { - map: {} - }, - view: {}, - keydown: { - keyHistory: '', - resetKeyHistory: { - start: function () { - return setTimeout(function () { - that.selectpicker.keydown.keyHistory = ''; - }, 800); - } + }, + data: function data() { + return { + Permissions: { + 'BusinessItem': { + Name: ' کالاها و خدمات ', + Icon: 'WMi-dropbox', + Color: 'WM-Color-Red' + }, + 'News': { + Name: ' اخبار ', + Icon: 'WMi-rss', + Color: 'WM-Color-Orange' + }, + 'Portfolio': { + Name: ' نمونه کار ها ', + Icon: 'WMi-picture', + Color: 'WM-Color-Purple' } } }; - // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a - // data-attribute) - if (this.options.title === null) { - this.options.title = this.$element.attr('title'); - } - - // Format window padding - var winPad = this.options.windowPadding; - if (typeof winPad === 'number') { - this.options.windowPadding = [winPad, winPad, winPad, winPad]; - } - - // Expose public methods - this.val = Selectpicker.prototype.val; - this.render = Selectpicker.prototype.render; - this.refresh = Selectpicker.prototype.refresh; - this.setStyle = Selectpicker.prototype.setStyle; - this.selectAll = Selectpicker.prototype.selectAll; - this.deselectAll = Selectpicker.prototype.deselectAll; - this.destroy = Selectpicker.prototype.destroy; - this.remove = Selectpicker.prototype.remove; - this.show = Selectpicker.prototype.show; - this.hide = Selectpicker.prototype.hide; - - this.init(); - }; + } +}); - Selectpicker.VERSION = '1.13.5'; +/***/ }), - Selectpicker.BootstrapVersion = version.major; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Title.vue?vue&type=script&lang=js&": +/*!****************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Title.vue?vue&type=script&lang=js& ***! + \****************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. - Selectpicker.DEFAULTS = { - noneSelectedText: 'Nothing selected', - noneResultsText: 'No results matched {0}', - countSelectedText: function (numSelected, numTotal) { - return (numSelected == 1) ? '{0} item selected' : '{0} items selected'; +"use strict"; +__webpack_require__.r(__webpack_exports__); +// +// +// +/* harmony default export */ __webpack_exports__["default"] = ({ + props: { + color: { + default: "hot" }, - maxOptionsText: function (numAll, numGroup) { - return [ - (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', - (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' - ]; + text: { + default: "عنوان" }, - selectAllText: 'Select All', - deselectAllText: 'Deselect All', - doneButton: false, - doneButtonText: 'Close', - multipleSeparator: ', ', - styleBase: 'btn', - style: classNames.BUTTONCLASS, - size: 'auto', - title: null, - selectedTextFormat: 'values', - width: false, - container: false, - hideDisabled: false, - showSubtext: false, - showIcon: true, - showContent: true, - dropupAuto: true, - header: false, - liveSearch: false, - liveSearchPlaceholder: null, - liveSearchNormalize: false, - liveSearchStyle: 'contains', - actionsBox: false, - iconBase: 'glyphicon', - tickIcon: 'glyphicon-ok', - showTick: false, - template: { - caret: '<span class="caret"></span>' + secondaryText: { + default: "title" }, - maxOptions: false, - mobile: false, - selectOnTab: false, - dropdownAlignRight: false, - windowPadding: 0, - virtualScroll: 600, - display: false - }; - - if (version.major === '4') { - Selectpicker.DEFAULTS.style = 'btn-light'; - Selectpicker.DEFAULTS.iconBase = ''; - Selectpicker.DEFAULTS.tickIcon = 'bs-ok-default'; + helpText: { + default: null + }, + helpUrl: { + default: null + } } +}); - Selectpicker.prototype = { +/***/ }), - constructor: Selectpicker, +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/AccountBalance.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/AccountBalance.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - init: function () { - var that = this, - id = this.$element.attr('id'); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +// +// +// - this.selectId = selectId++; +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + } +}); - this.$element.addClass('bs-select-hidden'); +/***/ }), - this.multiple = this.$element.prop('multiple'); - this.autofocus = this.$element.prop('autofocus'); - this.$newElement = this.createDropdown(); - this.createLi(); - this.$element - .after(this.$newElement) - .prependTo(this.$newElement); - this.$button = this.$newElement.children('button'); - this.$menu = this.$newElement.children(Selector.MENU); - this.$menuInner = this.$menu.children('.inner'); - this.$searchbox = this.$menu.find('input'); +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Comments.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Comments.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - this.$element.removeClass('bs-select-hidden'); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +// +// +// - if (this.options.dropdownAlignRight === true) this.$menu.addClass(classNames.MENURIGHT); +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + } +}); - if (typeof id !== 'undefined') { - this.$button.attr('data-id', id); - } +/***/ }), - this.checkDisabled(); - this.clickListener(); - if (this.options.liveSearch) this.liveSearchListener(); - this.render(); - this.setStyle(); - this.setWidth(); - if (this.options.container) { - this.selectPosition(); - } else { - this.$element.on('hide' + EVENT_KEY, function () { - if (that.isVirtual()) { - // empty menu on close - var menuInner = that.$menuInner[0], - emptyMenu = menuInner.firstChild.cloneNode(false); +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/CreateBusiness.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/CreateBusiness.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = '' - menuInner.replaceChild(emptyMenu, menuInner.firstChild); - menuInner.scrollTop = 0; - } - }); - } - this.$menu.data('this', this); - this.$newElement.data('this', this); - if (this.options.mobile) this.mobile(); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); +/* harmony import */ var _components_Inputs_SelectPicker_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Inputs/SelectPicker.vue */ "./resources/js/components/Inputs/SelectPicker.vue"); +// +// +// - this.$newElement.on({ - 'hide.bs.dropdown': function (e) { - that.$menuInner.attr('aria-expanded', false); - that.$element.trigger('hide' + EVENT_KEY, e); - }, - 'hidden.bs.dropdown': function (e) { - that.$element.trigger('hidden' + EVENT_KEY, e); - }, - 'show.bs.dropdown': function (e) { - that.$menuInner.attr('aria-expanded', true); - that.$element.trigger('show' + EVENT_KEY, e); - }, - 'shown.bs.dropdown': function (e) { - that.$element.trigger('shown' + EVENT_KEY, e); - } - }); - if (that.$element[0].hasAttribute('required')) { - this.$element.on('invalid', function () { - that.$button.addClass('bs-invalid'); - that.$element - .on('shown' + EVENT_KEY + '.invalid', function () { - that.$element - .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened - .off('shown' + EVENT_KEY + '.invalid'); - }) - .on('rendered' + EVENT_KEY, function () { - // if select is no longer invalid, remove the bs-invalid class - if (this.validity.valid) that.$button.removeClass('bs-invalid'); - that.$element.off('rendered' + EVENT_KEY); - }); +/* harmony default export */ __webpack_exports__["default"] = ({ + data: function data() { + return { + items: ["item 1", "item 2", "item 3", "item 4", "item 5"] + }; + }, + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + PartTitle: _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_1__["default"], + SelectPicker: _components_Inputs_SelectPicker_vue__WEBPACK_IMPORTED_MODULE_2__["default"] + } +}); - that.$button.on('blur' + EVENT_KEY, function () { - that.$element.focus().blur(); - that.$button.off('blur' + EVENT_KEY); - }); - }); - } +/***/ }), - setTimeout(function () { - that.$element.trigger('loaded' + EVENT_KEY); - }); - }, +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Home.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Home.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - createDropdown: function () { - // Options - // If we are multiple or showTick option is set, then add the show-tick class - var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '', - autofocus = this.autofocus ? ' autofocus' : ''; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); +/* harmony import */ var _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Misc/QuickLink.vue */ "./resources/js/components/Misc/QuickLink.vue"); +/* harmony import */ var _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Charts/BarChart.vue */ "./resources/js/components/Charts/BarChart.vue"); +/* harmony import */ var _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Charts/LineChart.vue */ "./resources/js/components/Charts/LineChart.vue"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// - // Elements - var drop, - header = '', - searchbox = '', - actionsbox = '', - donebutton = ''; - if (this.options.header) { - header = - '<div class="' + classNames.POPOVERHEADER + '">' + - '<button type="button" class="close" aria-hidden="true">&times;</button>' + - this.options.header + - '</div>'; - } - if (this.options.liveSearch) { - searchbox = - '<div class="bs-searchbox">' + - '<input type="text" class="form-control" autocomplete="off"' + - ( - this.options.liveSearchPlaceholder === null ? '' - : - ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"' - ) + - ' role="textbox" aria-label="Search">' + - '</div>'; - } - if (this.multiple && this.options.actionsBox) { - actionsbox = - '<div class="bs-actionsbox">' + - '<div class="btn-group btn-group-sm btn-block">' + - '<button type="button" class="actions-btn bs-select-all btn ' + classNames.BUTTONCLASS + '">' + - this.options.selectAllText + - '</button>' + - '<button type="button" class="actions-btn bs-deselect-all btn ' + classNames.BUTTONCLASS + '">' + - this.options.deselectAllText + - '</button>' + - '</div>' + - '</div>'; - } +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + PartTitle: _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + QuickLink: _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_1__["default"], + BarChart: _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_2__["default"], + LineChart: _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_3__["default"] + } +}); - if (this.multiple && this.options.doneButton) { - donebutton = - '<div class="bs-donebutton">' + - '<div class="btn-group btn-block">' + - '<button type="button" class="btn btn-sm ' + classNames.BUTTONCLASS + '">' + - this.options.doneButtonText + - '</button>' + - '</div>' + - '</div>'; - } +/***/ }), - drop = - '<div class="dropdown bootstrap-select' + showTick + '">' + - '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" ' + (this.options.display === 'static' ? 'data-display="static"' : '') + 'data-toggle="dropdown"' + autofocus + ' role="button">' + - '<div class="filter-option">' + - '<div class="filter-option-inner">' + - '<div class="filter-option-inner-inner"></div>' + - '</div> ' + - '</div>' + - ( - version.major === '4' ? '' - : - '<span class="bs-caret">' + - this.options.template.caret + - '</span>' - ) + - '</button>' + - '<div class="' + classNames.MENU + ' ' + (version.major === '4' ? '' : classNames.SHOW) + '" role="combobox">' + - header + - searchbox + - actionsbox + - '<div class="inner ' + classNames.SHOW + '" role="listbox" aria-expanded="false" tabindex="-1">' + - '<ul class="' + classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '') + '">' + - '</ul>' + - '</div>' + - donebutton + - '</div>' + - '</div>'; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/MyBusiness.vue?vue&type=script&lang=js&": +/*!****************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/MyBusiness.vue?vue&type=script&lang=js& ***! + \****************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return $(drop); - }, +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +// +// +// - setPositionData: function () { - this.selectpicker.view.canHighlight = []; +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + } +}); - for (var i = 0; i < this.selectpicker.current.data.length; i++) { - var li = this.selectpicker.current.data[i], - canHighlight = true; +/***/ }), - if (li.type === 'divider') { - canHighlight = false; - li.height = this.sizeInfo.dividerHeight; - } else if (li.type === 'optgroup-label') { - canHighlight = false; - li.height = this.sizeInfo.dropdownHeaderHeight; - } else { - li.height = this.sizeInfo.liHeight; - } +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Order/Management.vue?vue&type=script&lang=js&": +/*!**********************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Order/Management.vue?vue&type=script&lang=js& ***! + \**********************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (li.disabled) canHighlight = false; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/Misc/QuickLink.vue */ "./resources/js/components/Misc/QuickLink.vue"); +/* harmony import */ var _components_Misc_TabItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/Misc/TabItem.vue */ "./resources/js/components/Misc/TabItem.vue"); +/* harmony import */ var _components_Misc_TabDropdownItem_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/Misc/TabDropdownItem.vue */ "./resources/js/components/Misc/TabDropdownItem.vue"); +/* harmony import */ var _components_Charts_DoughnutChart_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/Charts/DoughnutChart.vue */ "./resources/js/components/Charts/DoughnutChart.vue"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// - this.selectpicker.view.canHighlight.push(canHighlight); - li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height; + + +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + QuickLink: _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + TabItem: _components_Misc_TabItem_vue__WEBPACK_IMPORTED_MODULE_1__["default"], + TabDropdownItem: _components_Misc_TabDropdownItem_vue__WEBPACK_IMPORTED_MODULE_2__["default"], + DoughnutChart: _components_Charts_DoughnutChart_vue__WEBPACK_IMPORTED_MODULE_3__["default"] + }, + data: function data() { + return { + date: new Date().toISOString().substr(0, 10), + DateFilterAfter: false, + DateFilterBefore: false, + Tabs: { + OngoingOrders: { + Type: 'TabItem', + NameFa: ' سفارشات در حال انجام ', + NameEn: ' Ongoing Orders ', + Status: 'Active', + Quantity: 5 + }, + CompletedOrders: { + Type: 'TabItem', + NameFa: ' سفارشات انجام شده ', + NameEn: ' Completed Orders ', + Quantity: 42 + } } - }, + }; + } +}); - isVirtual: function () { - return (this.options.virtualScroll !== false) && (this.selectpicker.main.elements.length >= this.options.virtualScroll) || this.options.virtualScroll === true; - }, +/***/ }), - createView: function (isSearching, scrollTop) { - scrollTop = scrollTop || 0; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/PMs.vue?vue&type=script&lang=js&": +/*!*********************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/PMs.vue?vue&type=script&lang=js& ***! + \*********************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var that = this; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +// +// +// - this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main; +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + } +}); - var active = []; - var selected; - var prevActive; +/***/ }), - this.setPositionData(); +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Summery.vue?vue&type=script&lang=js&": +/*!*************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Summery.vue?vue&type=script&lang=js& ***! + \*************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - scroll(scrollTop, true); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Misc/QuickLink.vue */ "./resources/js/components/Misc/QuickLink.vue"); +/* harmony import */ var _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Charts/BarChart.vue */ "./resources/js/components/Charts/BarChart.vue"); +/* harmony import */ var _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Charts/LineChart.vue */ "./resources/js/components/Charts/LineChart.vue"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// - this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) { - if (!that.noScroll) scroll(this.scrollTop, updateValue); - that.noScroll = false; - }); - function scroll (scrollTop, init) { - var size = that.selectpicker.current.elements.length, - chunks = [], - chunkSize, - chunkCount, - firstChunk, - lastChunk, - currentChunk, - prevPositions, - positionIsDifferent, - previousElements, - menuIsDifferent = true, - isVirtual = that.isVirtual(); - that.selectpicker.view.scrollTop = scrollTop; +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + QuickLink: _components_Misc_QuickLink_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + BarChart: _components_Charts_BarChart_vue__WEBPACK_IMPORTED_MODULE_1__["default"], + LineChart: _components_Charts_LineChart_vue__WEBPACK_IMPORTED_MODULE_2__["default"] + } +}); - if (isVirtual === true) { - // if an option that is encountered that is wider than the current menu width, update the menu width accordingly - if (that.sizeInfo.hasScrollBar && that.$menu[0].offsetWidth > that.sizeInfo.totalMenuWidth) { - that.sizeInfo.menuWidth = that.$menu[0].offsetWidth; - that.sizeInfo.totalMenuWidth = that.sizeInfo.menuWidth + that.sizeInfo.scrollBarWidth; - that.$menu.css('min-width', that.sizeInfo.menuWidth); - } - } +/***/ }), - chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk - chunkCount = Math.round(size / chunkSize) || 1; // number of chunks +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserInfo.vue?vue&type=script&lang=js&": +/*!**************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/UserInfo.vue?vue&type=script&lang=js& ***! + \**************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - for (var i = 0; i < chunkCount; i++) { - var endOfChunk = (i + 1) * chunkSize; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +// +// +// +// - if (i === chunkCount - 1) { - endOfChunk = size; - } +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + } +}); - chunks[i] = [ - (i) * chunkSize + (!i ? 0 : 1), - endOfChunk - ]; +/***/ }), - if (!size) break; +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/UserOrders.vue?vue&type=script&lang=js&": +/*!****************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/UserOrders.vue?vue&type=script&lang=js& ***! + \****************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (currentChunk === undefined && scrollTop <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) { - currentChunk = i; - } - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Title.vue */ "./resources/js/components/Title.vue"); +// +// +// +// - if (currentChunk === undefined) currentChunk = 0; +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + Title: _components_Title_vue__WEBPACK_IMPORTED_MODULE_0__["default"] + } +}); - prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1]; +/***/ }), - // always display previous, current, and next chunks - firstChunk = Math.max(0, currentChunk - 1); - lastChunk = Math.min(chunkCount - 1, currentChunk + 1); +/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Website/Management.vue?vue&type=script&lang=js&": +/*!************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Website/Management.vue?vue&type=script&lang=js& ***! + \************************************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - that.selectpicker.view.position0 = Math.max(0, chunks[firstChunk][0]) || 0; - that.selectpicker.view.position1 = Math.min(size, chunks[lastChunk][1]) || 0; +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _components_Misc_TabItem_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../components/Misc/TabItem.vue */ "./resources/js/components/Misc/TabItem.vue"); +/* harmony import */ var _components_Misc_TabDropdownItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/Misc/TabDropdownItem.vue */ "./resources/js/components/Misc/TabDropdownItem.vue"); +/* harmony import */ var _components_Modals_UserDetailsModal_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/Modals/UserDetailsModal.vue */ "./resources/js/components/Modals/UserDetailsModal.vue"); +/* harmony import */ var _components_Modals_UserRolesModal_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/Modals/UserRolesModal.vue */ "./resources/js/components/Modals/UserRolesModal.vue"); +/* harmony import */ var _components_Modals_SendEmailModal_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/Modals/SendEmailModal.vue */ "./resources/js/components/Modals/SendEmailModal.vue"); +/* harmony import */ var _components_Modals_SendSMSModal_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/Modals/SendSMSModal.vue */ "./resources/js/components/Modals/SendSMSModal.vue"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// - positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1; - if (that.activeIndex !== undefined) { - prevActive = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.prevActiveIndex]]; - active = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.activeIndex]]; - selected = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.selectedIndex]]; - if (init) { - if (that.activeIndex !== that.selectedIndex) { - active.classList.remove('active'); - if (active.firstChild) active.firstChild.classList.remove('active'); - } - that.activeIndex = undefined; - } - if (that.activeIndex && that.activeIndex !== that.selectedIndex && selected && selected.length) { - selected.classList.remove('active'); - if (selected.firstChild) selected.firstChild.classList.remove('active'); + + +/* harmony default export */ __webpack_exports__["default"] = ({ + components: { + TabItem: _components_Misc_TabItem_vue__WEBPACK_IMPORTED_MODULE_0__["default"], + TabDropdownItem: _components_Misc_TabDropdownItem_vue__WEBPACK_IMPORTED_MODULE_1__["default"], + UserDetailsModal: _components_Modals_UserDetailsModal_vue__WEBPACK_IMPORTED_MODULE_2__["default"], + UserRolesModal: _components_Modals_UserRolesModal_vue__WEBPACK_IMPORTED_MODULE_3__["default"], + SendEmailModal: _components_Modals_SendEmailModal_vue__WEBPACK_IMPORTED_MODULE_4__["default"], + SendSMSModal: _components_Modals_SendSMSModal_vue__WEBPACK_IMPORTED_MODULE_5__["default"] + }, + data: function data() { + return { + date: new Date().toISOString().substr(0, 10), + DateFilterAfter: false, + DateFilterBefore: false, + Tabs: { + MembersClub: { + Type: 'TabItem', + NameFa: ' باشگاه مشتریان ', + NameEn: 'Members Club', + Status: 'Active' + }, + SpecialForms: { + Type: 'TabDropdownItem', + NameFa: ' فرم های خاص من ', + NameEn: 'My Special Forms', + SubItems: { + Item1: { + NameFa: ' فرم تماس با ما ', + NameEn: 'Contact Us' + }, + Item2: { + NameFa: ' فرم پیش ثبت نام من ', + NameEn: 'My Pre SignUp Form' + } } + }, + Reservation: { + Type: 'TabItem', + NameFa: ' رزرو وقت ', + NameEn: 'Reservation' } - - if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex && prevActive && prevActive.length) { - prevActive.classList.remove('active'); - if (prevActive.firstChild) prevActive.firstChild.classList.remove('active'); + }, + Users: { + 1: { + Name: ' علیرضا حسنی ', + Email: 'Alireza-Hassani@outlook.com', + CellNumber: '09127004945' + }, + 4: { + Name: ' فرید ساروی ', + CellNumber: '09127476990' + }, + 27: { + Name: ' سعید خاکبازان ', + CellNumber: '09336541236' } + } + }; + } +}); - if (init || positionIsDifferent) { - previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : []; +/***/ }), - that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1); +/***/ "./node_modules/bootstrap-select/dist/css/bootstrap-select.css": +/*!*********************************************************************!*\ + !*** ./node_modules/bootstrap-select/dist/css/bootstrap-select.css ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - that.setOptionStatus(); - // if searching, check to make sure the list has actually been updated before updating DOM - // this prevents unnecessary repaints - if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements); +var content = __webpack_require__(/*! !../../../css-loader??ref--5-1!../../../postcss-loader/src??ref--5-2!./bootstrap-select.css */ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap-select/dist/css/bootstrap-select.css"); - // if virtual scroll is disabled and not searching, - // menu should never need to be updated more than once - if ((init || isVirtual === true) && menuIsDifferent) { - var menuInner = that.$menuInner[0], - menuFragment = document.createDocumentFragment(), - emptyMenu = menuInner.firstChild.cloneNode(false), - marginTop, - marginBottom, - elements = isVirtual === true ? that.selectpicker.view.visibleElements : that.selectpicker.current.elements; +if(typeof content === 'string') content = [[module.i, content, '']]; - // replace the existing UL with an empty one - this is faster than $.empty() - menuInner.replaceChild(emptyMenu, menuInner.firstChild); +var transform; +var insertInto; - for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) { - menuFragment.appendChild(elements[i]); - } - if (isVirtual === true) { - marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position); - marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position); - menuInner.firstChild.style.marginTop = marginTop + 'px'; - menuInner.firstChild.style.marginBottom = marginBottom + 'px'; - } +var options = {"hmr":true} - menuInner.firstChild.appendChild(menuFragment); - } - } +options.transform = transform +options.insertInto = undefined; - that.prevActiveIndex = that.activeIndex; +var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); - if (!that.options.liveSearch) { - that.$menuInner.focus(); - } else if (isSearching && init) { - var index = 0, - newActive; +if(content.locals) module.exports = content.locals; - if (!that.selectpicker.view.canHighlight[index]) { - index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true); - } +if(false) {} - newActive = that.selectpicker.view.visibleElements[index]; +/***/ }), - if (that.selectpicker.view.currentActive) { - that.selectpicker.view.currentActive.classList.remove('active'); - if (that.selectpicker.view.currentActive.firstChild) that.selectpicker.view.currentActive.firstChild.classList.remove('active'); - } +/***/ "./node_modules/bootstrap-select/dist/js/bootstrap-select.js": +/*!*******************************************************************!*\ + !*** ./node_modules/bootstrap-select/dist/js/bootstrap-select.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - if (newActive) { - newActive.classList.add('active'); - if (newActive.firstChild) newActive.firstChild.classList.add('active'); - } - - that.activeIndex = that.selectpicker.current.map.originalIndex[index]; - } - } +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + * Bootstrap-select v1.13.5 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2018 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */ - $(window) - .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView') - .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () { - var isActive = that.$newElement.hasClass(classNames.SHOW); +(function (root, factory) { + if (root === undefined && window !== undefined) root = window; + if (true) { + // AMD. Register as an anonymous module unless amdModuleId is set + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (a0) { + return (factory(a0)); + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else {} +}(this, function (jQuery) { - if (isActive) scroll(that.$menuInner[0].scrollTop); - }); - }, +(function ($) { + 'use strict'; - createLi: function () { - var that = this, - mainElements = [], - hiddenOptions = {}, - widestOption, - availableOptionsCount = 0, - widestOptionLength = 0, - mainData = [], - optID = 0, - headerIndex = 0, - liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure newIndex is correct + // Polyfill for browsers with no classList support + // Remove in v2 + if (!('classList' in document.createElement('_'))) { + (function (view) { + if (!('Element' in view)) return; - if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option'); + var classListProp = 'classList', + protoProp = 'prototype', + elemCtrProto = view.Element[protoProp], + objCtr = Object, + classListGetter = function () { + var $elem = $(this); - var elementTemplates = { - span: document.createElement('span'), - subtext: document.createElement('small'), - a: document.createElement('a'), - li: document.createElement('li'), - whitespace: document.createTextNode('\u00A0') - }, - checkMark, - fragment = document.createDocumentFragment(); + return { + add: function (classes) { + return $elem.addClass(classes); + }, + remove: function (classes) { + return $elem.removeClass(classes); + }, + toggle: function (classes, force) { + return $elem.toggleClass(classes, force); + }, + contains: function (classes) { + return $elem.hasClass(classes); + } + } + }; - if (that.options.showTick || that.multiple) { - checkMark = elementTemplates.span.cloneNode(false); - checkMark.className = that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark'; - elementTemplates.a.appendChild(checkMark); + if (objCtr.defineProperty) { + var classListPropDesc = { + get: classListGetter, + enumerable: true, + configurable: true + }; + try { + objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); + } catch (ex) { // IE 8 doesn't support enumerable:true + // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36 + // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected + if (ex.number === undefined || ex.number === -0x7FF5EC54) { + classListPropDesc.enumerable = false; + objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc); + } + } + } else if (objCtr[protoProp].__defineGetter__) { + elemCtrProto.__defineGetter__(classListProp, classListGetter); } + }(window)); + } - elementTemplates.a.setAttribute('role', 'option'); - - elementTemplates.subtext.className = 'text-muted'; - - elementTemplates.text = elementTemplates.span.cloneNode(false); - elementTemplates.text.className = 'text'; + var testElement = document.createElement('_'); - // Helper functions - /** - * @param content - * @param [classes] - * @param [optgroup] - * @returns {HTMLElement} - */ - var generateLI = function (content, classes, optgroup) { - var li = elementTemplates.li.cloneNode(false); + testElement.classList.toggle('c3', false); - if (content) { - if (content.nodeType === 1 || content.nodeType === 11) { - li.appendChild(content); - } else { - li.innerHTML = content; - } - } + // Polyfill for IE 10 and Firefox <24, where classList.toggle does not + // support the second argument. + if (testElement.classList.contains('c3')) { + var _toggle = DOMTokenList.prototype.toggle; - if (typeof classes !== 'undefined' && classes !== '') li.className = classes; - if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup); + DOMTokenList.prototype.toggle = function (token, force) { + if (1 in arguments && !this.contains(token) === !force) { + return force; + } else { + return _toggle.call(this, token); + } + }; + } - return li; - }; + testElement = null; - /** - * @param text - * @param [classes] - * @param [inline] - * @returns {string} - */ - var generateA = function (text, classes, inline) { - var a = elementTemplates.a.cloneNode(true); + // shallow array comparison + function isEqual (array1, array2) { + return array1.length === array2.length && array1.every(function (element, index) { + return element === array2[index]; + }); + }; - if (text) { - if (text.nodeType === 11) { - a.appendChild(text); - } else { - a.insertAdjacentHTML('beforeend', text); + // <editor-fold desc="Shims"> + if (!String.prototype.startsWith) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var toString = {}.toString; + var startsWith = function (search) { + if (this == null) { + throw new TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw new TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + var index = -1; + while (++index < searchLength) { + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { + return false; } } - - if (typeof classes !== 'undefined' && classes !== '') a.className = classes; - if (version.major === '4') a.classList.add('dropdown-item'); - if (inline) a.setAttribute('style', inline); - - return a; + return true; }; + if (defineProperty) { + defineProperty(String.prototype, 'startsWith', { + 'value': startsWith, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.startsWith = startsWith; + } + }()); + } - var generateText = function (options) { - var textElement = elementTemplates.text.cloneNode(false), - optionSubtextElement, - optionIconElement; - - if (options.optionContent) { - textElement.innerHTML = options.optionContent; - } else { - textElement.textContent = options.text; - - if (options.optionIcon) { - var whitespace = elementTemplates.whitespace.cloneNode(false); + if (!Object.keys) { + Object.keys = function ( + o, // object + k, // key + r // result array + ) { + // initialize object and result + r = []; + // iterate over object keys + for (k in o) { + // fill result array with non-prototypical keys + r.hasOwnProperty.call(o, k) && r.push(k); + } + // return result + return r; + }; + } - optionIconElement = elementTemplates.span.cloneNode(false); - optionIconElement.className = that.options.iconBase + ' ' + options.optionIcon; + // much faster than $.val() + function getSelectValues (select) { + var result = []; + var options = select && select.options; + var opt; - fragment.appendChild(optionIconElement); - fragment.appendChild(whitespace); - } + if (select.multiple) { + for (var i = 0, len = options.length; i < len; i++) { + opt = options[i]; - if (options.optionSubtext) { - optionSubtextElement = elementTemplates.subtext.cloneNode(false); - optionSubtextElement.innerHTML = options.optionSubtext; - textElement.appendChild(optionSubtextElement); - } + if (opt.selected) { + result.push(opt.value || opt.text); } + } + } else { + result = select.value; + } - fragment.appendChild(textElement); - - return fragment; - }; - - var generateLabel = function (options) { - var labelTextElement = elementTemplates.text.cloneNode(false), - labelSubtextElement, - labelIconElement; + return result; + } - labelTextElement.innerHTML = options.labelEscaped; + // set data-selected on select element if the value has been programmatically selected + // prior to initialization of bootstrap-select + // * consider removing or replacing an alternative method * + var valHooks = { + useDefault: false, + _set: $.valHooks.select.set + }; - if (options.labelIcon) { - var whitespace = elementTemplates.whitespace.cloneNode(false); + $.valHooks.select.set = function (elem, value) { + if (value && !valHooks.useDefault) $(elem).data('selected', true); - labelIconElement = elementTemplates.span.cloneNode(false); - labelIconElement.className = that.options.iconBase + ' ' + options.labelIcon; + return valHooks._set.apply(this, arguments); + }; - fragment.appendChild(labelIconElement); - fragment.appendChild(whitespace); - } + var changedArguments = null; - if (options.labelSubtext) { - labelSubtextElement = elementTemplates.subtext.cloneNode(false); - labelSubtextElement.textContent = options.labelSubtext; - labelTextElement.appendChild(labelSubtextElement); - } + var EventIsSupported = (function () { + try { + new Event('change'); + return true; + } catch (e) { + return false; + } + })(); - fragment.appendChild(labelTextElement); + $.fn.triggerNative = function (eventName) { + var el = this[0], + event; - return fragment; + if (el.dispatchEvent) { // for modern browsers & IE9+ + if (EventIsSupported) { + // For modern browsers + event = new Event(eventName, { + bubbles: true + }); + } else { + // For IE since it doesn't support Event constructor + event = document.createEvent('Event'); + event.initEvent(eventName, true, false); } - if (this.options.title && !this.multiple) { - // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased - // since newIndex is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended - liIndex--; + el.dispatchEvent(event); + } else if (el.fireEvent) { // for IE8 + event = document.createEventObject(); + event.eventType = eventName; + el.fireEvent('on' + eventName, event); + } else { + // fall back to jQuery.trigger + this.trigger(eventName); + } + }; + // </editor-fold> - var element = this.$element[0], - isSelected = false, - titleNotAppended = !this.selectpicker.view.titleOption.parentNode; + function stringSearch (li, searchString, method, normalize) { + var stringTypes = [ + 'content', + 'subtext', + 'tokens' + ], + searchSuccess = false; - if (titleNotAppended) { - // Use native JS to prepend option (faster) - this.selectpicker.view.titleOption.className = 'bs-title-option'; - this.selectpicker.view.titleOption.value = ''; + for (var i = 0; i < stringTypes.length; i++) { + var stringType = stringTypes[i], + string = li[stringType]; - // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option. - // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs, - // if so, the select will have the data-selected attribute - var $opt = $(element.options[element.selectedIndex]); - isSelected = $opt.attr('selected') === undefined && this.$element.data('selected') === undefined; + if (string) { + string = string.toString(); + + // Strip HTML tags. This isn't perfect, but it's much faster than any other method + if (stringType === 'content') { + string = string.replace(/<[^>]+>/g, ''); } - if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) { - element.insertBefore(this.selectpicker.view.titleOption, element.firstChild); + if (normalize) string = normalizeToBase(string); + string = string.toUpperCase(); + + if (method === 'contains') { + searchSuccess = string.indexOf(searchString) >= 0; + } else { + searchSuccess = string.startsWith(searchString); } - // Set selected *after* appending to select, - // otherwise the option doesn't get selected in IE - // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11 - if (isSelected) element.selectedIndex = 0; + if (searchSuccess) break; } + } - var $selectOptions = this.$element.find('option'); - - $selectOptions.each(function (index) { - var $this = $(this); + return searchSuccess; + } - liIndex++; + function toInteger (value) { + return parseInt(value, 10) || 0; + } - if ($this.hasClass('bs-title-option')) return; + // Borrowed from Lodash (_.deburr) + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; - var thisData = $this.data(); + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - // Get the class and text for the option - var optionClass = this.className || '', - inline = htmlEscape(this.style.cssText), - optionContent = thisData.content, - text = this.textContent, - tokens = thisData.tokens, - subtext = thisData.subtext, - icon = thisData.icon, - $parent = $this.parent(), - parent = $parent[0], - isOptgroup = parent.tagName === 'OPTGROUP', - isOptgroupDisabled = isOptgroup && parent.disabled, - isDisabled = this.disabled || isOptgroupDisabled, - prevHiddenIndex, - showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP', - textElement, - labelElement, - prevHidden; + /** Used to compose unicode character classes. */ + var rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboMarksExtendedRange = '\\u1ab0-\\u1aff', + rsComboMarksSupplementRange = '\\u1dc0-\\u1dff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange; - var parentData = $parent.data(); + /** Used to compose unicode capture groups. */ + var rsCombo = '[' + rsComboRange + ']'; - if ((thisData.hidden === true || this.hidden) || (that.options.hideDisabled && (isDisabled || isOptgroupDisabled))) { - // set prevHiddenIndex - the index of the first hidden option in a group of hidden options - // used to determine whether or not a divider should be placed after an optgroup if there are - // hidden options between the optgroup and the first visible option - prevHiddenIndex = thisData.prevHiddenIndex; - $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index)); + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); - liIndex--; + function deburrLetter (key) { + return deburredLetters[key]; + }; - hiddenOptions[index] = { - type: 'hidden', - data: thisData - } + function normalizeToBase (string) { + string = string.toString(); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } - // if previous element is not an optgroup - if (!showDivider) { - if (prevHiddenIndex !== undefined) { - // select the element **before** the first hidden element in the group - prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling; - - if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) { - showDivider = true; - } - } - } - - if (showDivider && mainData[mainData.length - 1].type !== 'divider') { - liIndex++; - mainElements.push( - generateLI( - false, - classNames.DIVIDER, - optID + 'div' - ) - ); - mainData.push({ - type: 'divider', - optID: optID - }); - } - - return; - } + // List of HTML entities for escaping. + var escapeMap = { + '&': '&amp;', + '<': '&lt;', + '>': '&gt;', + '"': '&quot;', + "'": '&#x27;', + '`': '&#x60;' + }; - if (isOptgroup && thisData.divider !== true) { - if (that.options.hideDisabled && isDisabled) { - if (parentData.allOptionsDisabled === undefined) { - var $options = $parent.children(); - $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length); - } + var unescapeMap = { + '&amp;': '&', + '&lt;': '<', + '&gt;': '>', + '&quot;': '"', + '&#x27;': "'", + '&#x60;': '`' + }; - if ($parent.data('allOptionsDisabled')) { - liIndex--; - return; - } - } + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function (map) { + var escaper = function (match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + Object.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function (string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; - var optGroupClass = ' ' + parent.className || false, - previousOption = this.previousElementSibling; + var htmlEscape = createEscaper(escapeMap); + var htmlUnescape = createEscaper(unescapeMap); - prevHiddenIndex = thisData.prevHiddenIndex; + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ - if (prevHiddenIndex !== undefined) { - previousOption = $selectOptions[prevHiddenIndex].previousElementSibling; - } + var keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'A', + 66: 'B', + 67: 'C', + 68: 'D', + 69: 'E', + 70: 'F', + 71: 'G', + 72: 'H', + 73: 'I', + 74: 'J', + 75: 'K', + 76: 'L', + 77: 'M', + 78: 'N', + 79: 'O', + 80: 'P', + 81: 'Q', + 82: 'R', + 83: 'S', + 84: 'T', + 85: 'U', + 86: 'V', + 87: 'W', + 88: 'X', + 89: 'Y', + 90: 'Z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; - if (!previousOption) { // Is it the first option of the optgroup? - optID += 1; + var keyCodes = { + ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key + ENTER: 13, // KeyboardEvent.which value for Enter key + SPACE: 32, // KeyboardEvent.which value for space key + TAB: 9, // KeyboardEvent.which value for tab key + ARROW_UP: 38, // KeyboardEvent.which value for up arrow key + ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key + } - // Get the opt group label - var label = parent.label, - labelEscaped = htmlEscape(label), - labelSubtext = parentData.subtext, - labelIcon = parentData.icon; + var version = { + success: false, + major: '3' + }; - if (index !== 0 && mainElements.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? - liIndex++; - mainElements.push( - generateLI( - false, - classNames.DIVIDER, - optID + 'div' - ) - ); - mainData.push({ - type: 'divider', - optID: optID - }); - } - liIndex++; + try { + version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); + version.major = version.full[0]; + version.success = true; + } catch (err) { + console.warn( + 'There was an issue retrieving Bootstrap\'s version. ' + + 'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' + + 'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.', + err + ); + } - labelElement = generateLabel({ - labelEscaped: labelEscaped, - labelSubtext: labelSubtext, - labelIcon: labelIcon - }); + var selectId = 0; - mainElements.push(generateLI(labelElement, 'dropdown-header' + optGroupClass, optID)); - mainData.push({ - content: labelEscaped, - subtext: labelSubtext, - type: 'optgroup-label', - optID: optID - }); + var EVENT_KEY = '.bs.select'; - headerIndex = liIndex - 1; - } + var classNames = { + DISABLED: 'disabled', + DIVIDER: 'divider', + SHOW: 'open', + DROPUP: 'dropup', + MENU: 'dropdown-menu', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + // to-do: replace with more advanced template/customization options + BUTTONCLASS: 'btn-default', + POPOVERHEADER: 'popover-title' + } - textElement = generateText({ - text: text, - optionContent: optionContent, - optionSubtext: subtext, - optionIcon: icon - }); + var Selector = { + MENU: '.' + classNames.MENU + } - mainElements.push(generateLI(generateA(textElement, 'opt ' + optionClass + optGroupClass, inline), '', optID)); - mainData.push({ - content: optionContent || text, - subtext: subtext, - tokens: tokens, - type: 'option', - optID: optID, - headerIndex: headerIndex, - lastIndex: headerIndex + parent.childElementCount, - originalIndex: index, - data: thisData - }); + if (version.major === '4') { + classNames.DIVIDER = 'dropdown-divider'; + classNames.SHOW = 'show'; + classNames.BUTTONCLASS = 'btn-light'; + classNames.POPOVERHEADER = 'popover-header'; + } - availableOptionsCount++; - } else if (thisData.divider === true) { - mainElements.push(generateLI(false, classNames.DIVIDER)); - mainData.push({ - type: 'divider', - originalIndex: index, - data: thisData - }); - } else { - // if previous element is not an optgroup and hideDisabled is true - if (!showDivider && that.options.hideDisabled) { - prevHiddenIndex = thisData.prevHiddenIndex; + var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN); + var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE); - if (prevHiddenIndex !== undefined) { - // select the element **before** the first hidden element in the group - prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling; + var Selectpicker = function (element, options) { + var that = this; - if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) { - showDivider = true; - } - } - } + // bootstrap-select has been initialized - revert valHooks.select.set back to its original function + if (!valHooks.useDefault) { + $.valHooks.select.set = valHooks._set; + valHooks.useDefault = true; + } - if (showDivider && mainData[mainData.length - 1].type !== 'divider') { - liIndex++; - mainElements.push( - generateLI( - false, - classNames.DIVIDER, - optID + 'div' - ) - ); - mainData.push({ - type: 'divider', - optID: optID - }); + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.options = options; + this.selectpicker = { + main: { + // store originalIndex (key) and newIndex (value) in this.selectpicker.main.map.newIndex for fast accessibility + // allows us to do this.main.elements[this.selectpicker.main.map.newIndex[index]] to select an element based on the originalIndex + map: { + newIndex: {}, + originalIndex: {} + } + }, + current: { + map: {} + }, // current changes if a search is in progress + search: { + map: {} + }, + view: {}, + keydown: { + keyHistory: '', + resetKeyHistory: { + start: function () { + return setTimeout(function () { + that.selectpicker.keydown.keyHistory = ''; + }, 800); } - - textElement = generateText({ - text: text, - optionContent: optionContent, - optionSubtext: subtext, - optionIcon: icon - }); - - mainElements.push(generateLI(generateA(textElement, optionClass, inline))); - mainData.push({ - content: optionContent || text, - subtext: subtext, - tokens: tokens, - type: 'option', - originalIndex: index, - data: thisData - }); - - availableOptionsCount++; } + } + }; + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } - that.selectpicker.main.map.newIndex[index] = liIndex; - that.selectpicker.main.map.originalIndex[liIndex] = index; - - // get the most recent option info added to mainData - var _mainDataLast = mainData[mainData.length - 1]; - - _mainDataLast.disabled = isDisabled; + // Format window padding + var winPad = this.options.windowPadding; + if (typeof winPad === 'number') { + this.options.windowPadding = [winPad, winPad, winPad, winPad]; + } - var combinedLength = 0; + // Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.destroy; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; - // count the number of characters in the option - not perfect, but should work in most cases - if (_mainDataLast.content) combinedLength += _mainDataLast.content.length; - if (_mainDataLast.subtext) combinedLength += _mainDataLast.subtext.length; - // if there is an icon, ensure this option's width is checked - if (icon) combinedLength += 1; + this.init(); + }; - if (combinedLength > widestOptionLength) { - widestOptionLength = combinedLength; + Selectpicker.VERSION = '1.13.5'; - // guess which option is the widest - // use this when calculating menu width - // not perfect, but it's fast, and the width will be updating accordingly when scrolling - widestOption = mainElements[mainElements.length - 1]; - } - }); + Selectpicker.BootstrapVersion = version.major; - this.selectpicker.main.elements = mainElements; - this.selectpicker.main.data = mainData; - this.selectpicker.main.hidden = hiddenOptions; + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results matched {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? '{0} item selected' : '{0} items selected'; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + doneButton: false, + doneButtonText: 'Close', + multipleSeparator: ', ', + styleBase: 'btn', + style: classNames.BUTTONCLASS, + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + liveSearchPlaceholder: null, + liveSearchNormalize: false, + liveSearchStyle: 'contains', + actionsBox: false, + iconBase: 'glyphicon', + tickIcon: 'glyphicon-ok', + showTick: false, + template: { + caret: '<span class="caret"></span>' + }, + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false, + windowPadding: 0, + virtualScroll: 600, + display: false + }; - this.selectpicker.current = this.selectpicker.main; + if (version.major === '4') { + Selectpicker.DEFAULTS.style = 'btn-light'; + Selectpicker.DEFAULTS.iconBase = ''; + Selectpicker.DEFAULTS.tickIcon = 'bs-ok-default'; + } - this.selectpicker.view.widestOption = widestOption; - this.selectpicker.view.availableOptionsCount = availableOptionsCount; // faster way to get # of available options without filter - }, + Selectpicker.prototype = { - findLis: function () { - return this.$menuInner.find('.inner > li'); - }, + constructor: Selectpicker, - render: function () { + init: function () { var that = this, - $selectOptions = this.$element.find('option'), - selectedItems = [], - selectedItemsInTitle = []; + id = this.$element.attr('id'); - this.togglePlaceholder(); + this.selectId = selectId++; - this.tabIndex(); + this.$element.addClass('bs-select-hidden'); - for (var index = 0, len = $selectOptions.length; index < len; index++) { - var i = that.selectpicker.main.map.newIndex[index], - option = $selectOptions[index], - optionData = that.selectpicker.main.data[i] || that.selectpicker.main.hidden[index]; + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + this.$newElement = this.createDropdown(); + this.createLi(); + this.$element + .after(this.$newElement) + .prependTo(this.$newElement); + this.$button = this.$newElement.children('button'); + this.$menu = this.$newElement.children(Selector.MENU); + this.$menuInner = this.$menu.children('.inner'); + this.$searchbox = this.$menu.find('input'); - if (option && option.selected && optionData) { - selectedItems.push(option); + this.$element.removeClass('bs-select-hidden'); - if ((selectedItemsInTitle.length < 100 && that.options.selectedTextFormat !== 'count') || selectedItems.length === 1) { - var thisData = optionData.data, - icon = thisData.icon && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + thisData.icon + '"></i> ' : '', - subtext, - titleItem; + if (this.options.dropdownAlignRight === true) this.$menu.addClass(classNames.MENURIGHT); - if (that.options.showSubtext && thisData.subtext && !that.multiple) { - subtext = ' <small class="text-muted">' + thisData.subtext + '</small>'; - } else { - subtext = ''; - } + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + } - if (option.title) { - titleItem = option.title; - } else if (thisData.content && that.options.showContent) { - titleItem = thisData.content.toString(); - } else { - titleItem = icon + option.innerHTML.trim() + subtext; - } + this.checkDisabled(); + this.clickListener(); + if (this.options.liveSearch) this.liveSearchListener(); + this.render(); + this.setStyle(); + this.setWidth(); + if (this.options.container) { + this.selectPosition(); + } else { + this.$element.on('hide' + EVENT_KEY, function () { + if (that.isVirtual()) { + // empty menu on close + var menuInner = that.$menuInner[0], + emptyMenu = menuInner.firstChild.cloneNode(false); - selectedItemsInTitle.push(titleItem); + // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = '' + menuInner.replaceChild(emptyMenu, menuInner.firstChild); + menuInner.scrollTop = 0; } - } + }); } + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); - // Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled - // Convert all the values into a comma delimited string - var title = !this.multiple ? selectedItemsInTitle[0] : selectedItemsInTitle.join(this.options.multipleSeparator); + this.$newElement.on({ + 'hide.bs.dropdown': function (e) { + that.$menuInner.attr('aria-expanded', false); + that.$element.trigger('hide' + EVENT_KEY, e); + }, + 'hidden.bs.dropdown': function (e) { + that.$element.trigger('hidden' + EVENT_KEY, e); + }, + 'show.bs.dropdown': function (e) { + that.$menuInner.attr('aria-expanded', true); + that.$element.trigger('show' + EVENT_KEY, e); + }, + 'shown.bs.dropdown': function (e) { + that.$element.trigger('shown' + EVENT_KEY, e); + } + }); - // add ellipsis - if (selectedItems.length > 50) title += '...'; + if (that.$element[0].hasAttribute('required')) { + this.$element.on('invalid', function () { + that.$button.addClass('bs-invalid'); - // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected etc.. - if (this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1) { - var max = this.options.selectedTextFormat.split('>'); + that.$element + .on('shown' + EVENT_KEY + '.invalid', function () { + that.$element + .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened + .off('shown' + EVENT_KEY + '.invalid'); + }) + .on('rendered' + EVENT_KEY, function () { + // if select is no longer invalid, remove the bs-invalid class + if (this.validity.valid) that.$button.removeClass('bs-invalid'); + that.$element.off('rendered' + EVENT_KEY); + }); - if ((max.length > 1 && selectedItems.length > max[1]) || (max.length === 1 && selectedItems.length >= 2)) { - var totalCount = this.selectpicker.view.availableOptionsCount, - tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + that.$button.on('blur' + EVENT_KEY, function () { + that.$element.focus().blur(); + that.$button.off('blur' + EVENT_KEY); + }); + }); + } - title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); - } + setTimeout(function () { + that.$element.trigger('loaded' + EVENT_KEY); + }); + }, + + createDropdown: function () { + // Options + // If we are multiple or showTick option is set, then add the show-tick class + var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '', + autofocus = this.autofocus ? ' autofocus' : ''; + + // Elements + var drop, + header = '', + searchbox = '', + actionsbox = '', + donebutton = ''; + + if (this.options.header) { + header = + '<div class="' + classNames.POPOVERHEADER + '">' + + '<button type="button" class="close" aria-hidden="true">&times;</button>' + + this.options.header + + '</div>'; } - if (this.options.title == undefined) { - // use .attr to ensure undefined is returned if title attribute is not set - this.options.title = this.$element.attr('title'); + if (this.options.liveSearch) { + searchbox = + '<div class="bs-searchbox">' + + '<input type="text" class="form-control" autocomplete="off"' + + ( + this.options.liveSearchPlaceholder === null ? '' + : + ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"' + ) + + ' role="textbox" aria-label="Search">' + + '</div>'; } - if (this.options.selectedTextFormat == 'static') { - title = this.options.title; + if (this.multiple && this.options.actionsBox) { + actionsbox = + '<div class="bs-actionsbox">' + + '<div class="btn-group btn-group-sm btn-block">' + + '<button type="button" class="actions-btn bs-select-all btn ' + classNames.BUTTONCLASS + '">' + + this.options.selectAllText + + '</button>' + + '<button type="button" class="actions-btn bs-deselect-all btn ' + classNames.BUTTONCLASS + '">' + + this.options.deselectAllText + + '</button>' + + '</div>' + + '</div>'; } - // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText - if (!title) { - title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + if (this.multiple && this.options.doneButton) { + donebutton = + '<div class="bs-donebutton">' + + '<div class="btn-group btn-block">' + + '<button type="button" class="btn btn-sm ' + classNames.BUTTONCLASS + '">' + + this.options.doneButtonText + + '</button>' + + '</div>' + + '</div>'; } - // strip all HTML tags and trim the result, then unescape any escaped tags - this.$button[0].title = htmlUnescape(title.replace(/<[^>]*>?/g, '').trim()); - this.$button.find('.filter-option-inner-inner')[0].innerHTML = title; + drop = + '<div class="dropdown bootstrap-select' + showTick + '">' + + '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" ' + (this.options.display === 'static' ? 'data-display="static"' : '') + 'data-toggle="dropdown"' + autofocus + ' role="button">' + + '<div class="filter-option">' + + '<div class="filter-option-inner">' + + '<div class="filter-option-inner-inner"></div>' + + '</div> ' + + '</div>' + + ( + version.major === '4' ? '' + : + '<span class="bs-caret">' + + this.options.template.caret + + '</span>' + ) + + '</button>' + + '<div class="' + classNames.MENU + ' ' + (version.major === '4' ? '' : classNames.SHOW) + '" role="combobox">' + + header + + searchbox + + actionsbox + + '<div class="inner ' + classNames.SHOW + '" role="listbox" aria-expanded="false" tabindex="-1">' + + '<ul class="' + classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '') + '">' + + '</ul>' + + '</div>' + + donebutton + + '</div>' + + '</div>'; - this.$element.trigger('rendered' + EVENT_KEY); + return $(drop); }, - /** - * @param [style] - * @param [status] - */ - setStyle: function (style, status) { - if (this.$element.attr('class')) { - this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); - } + setPositionData: function () { + this.selectpicker.view.canHighlight = []; - var buttonClass = style || this.options.style; + for (var i = 0; i < this.selectpicker.current.data.length; i++) { + var li = this.selectpicker.current.data[i], + canHighlight = true; - if (status == 'add') { - this.$button.addClass(buttonClass); - } else if (status == 'remove') { - this.$button.removeClass(buttonClass); - } else { - this.$button.removeClass(this.options.style); - this.$button.addClass(buttonClass); + if (li.type === 'divider') { + canHighlight = false; + li.height = this.sizeInfo.dividerHeight; + } else if (li.type === 'optgroup-label') { + canHighlight = false; + li.height = this.sizeInfo.dropdownHeaderHeight; + } else { + li.height = this.sizeInfo.liHeight; + } + + if (li.disabled) canHighlight = false; + + this.selectpicker.view.canHighlight.push(canHighlight); + + li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height; } }, - liHeight: function (refresh) { - if (!refresh && (this.options.size === false || this.sizeInfo)) return; + isVirtual: function () { + return (this.options.virtualScroll !== false) && (this.selectpicker.main.elements.length >= this.options.virtualScroll) || this.options.virtualScroll === true; + }, - if (!this.sizeInfo) this.sizeInfo = {}; + createView: function (isSearching, scrollTop) { + scrollTop = scrollTop || 0; - var newElement = document.createElement('div'), - menu = document.createElement('div'), - menuInner = document.createElement('div'), - menuInnerInner = document.createElement('ul'), - divider = document.createElement('li'), - dropdownHeader = document.createElement('li'), - li = document.createElement('li'), - a = document.createElement('a'), - text = document.createElement('span'), - header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null, - search = this.options.liveSearch ? document.createElement('div') : null, - actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, - doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null, - firstOption = this.$element.find('option')[0]; + var that = this; - this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth; + this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main; - text.className = 'text'; - a.className = 'dropdown-item ' + (firstOption ? firstOption.className : ''); - newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW; - newElement.style.width = this.sizeInfo.selectWidth + 'px'; - if (this.options.width === 'auto') menu.style.minWidth = 0; - menu.className = classNames.MENU + ' ' + classNames.SHOW; - menuInner.className = 'inner ' + classNames.SHOW; - menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : ''); - divider.className = classNames.DIVIDER; - dropdownHeader.className = 'dropdown-header'; + var active = []; + var selected; + var prevActive; - text.appendChild(document.createTextNode('\u200b')); - a.appendChild(text); - li.appendChild(a); - dropdownHeader.appendChild(text.cloneNode(true)); + this.setPositionData(); - if (this.selectpicker.view.widestOption) { - menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true)); - } + scroll(scrollTop, true); - menuInnerInner.appendChild(li); - menuInnerInner.appendChild(divider); - menuInnerInner.appendChild(dropdownHeader); - if (header) menu.appendChild(header); - if (search) { - var input = document.createElement('input'); - search.className = 'bs-searchbox'; - input.className = 'form-control'; - search.appendChild(input); - menu.appendChild(search); - } - if (actions) menu.appendChild(actions); - menuInner.appendChild(menuInnerInner); - menu.appendChild(menuInner); - if (doneButton) menu.appendChild(doneButton); - newElement.appendChild(menu); + this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) { + if (!that.noScroll) scroll(this.scrollTop, updateValue); + that.noScroll = false; + }); - document.body.appendChild(newElement); + function scroll (scrollTop, init) { + var size = that.selectpicker.current.elements.length, + chunks = [], + chunkSize, + chunkCount, + firstChunk, + lastChunk, + currentChunk, + prevPositions, + positionIsDifferent, + previousElements, + menuIsDifferent = true, + isVirtual = that.isVirtual(); - var liHeight = a.offsetHeight, - dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0, - headerHeight = header ? header.offsetHeight : 0, - searchHeight = search ? search.offsetHeight : 0, - actionsHeight = actions ? actions.offsetHeight : 0, - doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, - dividerHeight = $(divider).outerHeight(true), - // fall back to jQuery if getComputedStyle is not supported - menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false, - menuWidth = menu.offsetWidth, - $menu = menuStyle ? null : $(menu), - menuPadding = { - vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + - toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + - toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + - toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), - horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + - toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + - toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + - toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth')) - }, - menuExtras = { - vert: menuPadding.vert + - toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + - toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2, - horiz: menuPadding.horiz + - toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + - toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2 - }, - scrollBarWidth; + that.selectpicker.view.scrollTop = scrollTop; - menuInner.style.overflowY = 'scroll'; + if (isVirtual === true) { + // if an option that is encountered that is wider than the current menu width, update the menu width accordingly + if (that.sizeInfo.hasScrollBar && that.$menu[0].offsetWidth > that.sizeInfo.totalMenuWidth) { + that.sizeInfo.menuWidth = that.$menu[0].offsetWidth; + that.sizeInfo.totalMenuWidth = that.sizeInfo.menuWidth + that.sizeInfo.scrollBarWidth; + that.$menu.css('min-width', that.sizeInfo.menuWidth); + } + } - scrollBarWidth = menu.offsetWidth - menuWidth; + chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk + chunkCount = Math.round(size / chunkSize) || 1; // number of chunks - document.body.removeChild(newElement); + for (var i = 0; i < chunkCount; i++) { + var endOfChunk = (i + 1) * chunkSize; - this.sizeInfo.liHeight = liHeight; - this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight; - this.sizeInfo.headerHeight = headerHeight; - this.sizeInfo.searchHeight = searchHeight; - this.sizeInfo.actionsHeight = actionsHeight; - this.sizeInfo.doneButtonHeight = doneButtonHeight; - this.sizeInfo.dividerHeight = dividerHeight; - this.sizeInfo.menuPadding = menuPadding; - this.sizeInfo.menuExtras = menuExtras; - this.sizeInfo.menuWidth = menuWidth; - this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth; - this.sizeInfo.scrollBarWidth = scrollBarWidth; - this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight; + if (i === chunkCount - 1) { + endOfChunk = size; + } - this.setPositionData(); - }, + chunks[i] = [ + (i) * chunkSize + (!i ? 0 : 1), + endOfChunk + ]; - getSelectPosition: function () { - var that = this, - $window = $(window), - pos = that.$newElement.offset(), - $container = $(that.options.container), - containerPos; + if (!size) break; - if (that.options.container && !$container.is('body')) { - containerPos = $container.offset(); - containerPos.top += parseInt($container.css('borderTopWidth')); - containerPos.left += parseInt($container.css('borderLeftWidth')); - } else { - containerPos = { top: 0, left: 0 }; - } + if (currentChunk === undefined && scrollTop <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) { + currentChunk = i; + } + } - var winPad = that.options.windowPadding; + if (currentChunk === undefined) currentChunk = 0; - this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop(); - this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2]; - this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft(); - this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1]; - this.sizeInfo.selectOffsetTop -= winPad[0]; - this.sizeInfo.selectOffsetLeft -= winPad[3]; - }, + prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1]; - setMenuSize: function (isAuto) { - this.getSelectPosition(); + // always display previous, current, and next chunks + firstChunk = Math.max(0, currentChunk - 1); + lastChunk = Math.min(chunkCount - 1, currentChunk + 1); - var selectWidth = this.sizeInfo.selectWidth, - liHeight = this.sizeInfo.liHeight, - headerHeight = this.sizeInfo.headerHeight, - searchHeight = this.sizeInfo.searchHeight, - actionsHeight = this.sizeInfo.actionsHeight, - doneButtonHeight = this.sizeInfo.doneButtonHeight, - divHeight = this.sizeInfo.dividerHeight, - menuPadding = this.sizeInfo.menuPadding, - menuInnerHeight, - menuHeight, - divLength = 0, - minHeight, - _minHeight, - maxHeight, - menuInnerMinHeight, - estimate; + that.selectpicker.view.position0 = Math.max(0, chunks[firstChunk][0]) || 0; + that.selectpicker.view.position1 = Math.min(size, chunks[lastChunk][1]) || 0; - if (this.options.dropupAuto) { - // Get the estimated height of the menu without scrollbars. - // This is useful for smaller menus, where there might be plenty of room - // below the button without setting dropup, but we can't know - // the exact height of the menu until createView is called later - estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert; - this.$newElement.toggleClass(classNames.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot); - } + positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1; - if (this.options.size === 'auto') { - _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0; - menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert; - minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; - menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0); + if (that.activeIndex !== undefined) { + prevActive = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.prevActiveIndex]]; + active = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.activeIndex]]; + selected = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.selectedIndex]]; - if (this.$newElement.hasClass(classNames.DROPUP)) { - menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert; + if (init) { + if (that.activeIndex !== that.selectedIndex) { + active.classList.remove('active'); + if (active.firstChild) active.firstChild.classList.remove('active'); + } + that.activeIndex = undefined; + } + + if (that.activeIndex && that.activeIndex !== that.selectedIndex && selected && selected.length) { + selected.classList.remove('active'); + if (selected.firstChild) selected.firstChild.classList.remove('active'); + } } - maxHeight = menuHeight; - menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert; - } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { - for (var i = 0; i < this.options.size; i++) { - if (this.selectpicker.current.data[i].type === 'divider') divLength++; + if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex && prevActive && prevActive.length) { + prevActive.classList.remove('active'); + if (prevActive.firstChild) prevActive.firstChild.classList.remove('active'); } - menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert; - menuInnerHeight = menuHeight - menuPadding.vert; - maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; - minHeight = menuInnerMinHeight = ''; - } + if (init || positionIsDifferent) { + previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : []; - if (this.options.dropdownAlignRight === 'auto') { - this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth)); - } + that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1); - this.$menu.css({ - 'max-height': maxHeight + 'px', - 'overflow': 'hidden', - 'min-height': minHeight + 'px' - }); + that.setOptionStatus(); - this.$menuInner.css({ - 'max-height': menuInnerHeight + 'px', - 'overflow-y': 'auto', - 'min-height': menuInnerMinHeight + 'px' - }); + // if searching, check to make sure the list has actually been updated before updating DOM + // this prevents unnecessary repaints + if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements); - this.sizeInfo.menuInnerHeight = menuInnerHeight; + // if virtual scroll is disabled and not searching, + // menu should never need to be updated more than once + if ((init || isVirtual === true) && menuIsDifferent) { + var menuInner = that.$menuInner[0], + menuFragment = document.createDocumentFragment(), + emptyMenu = menuInner.firstChild.cloneNode(false), + marginTop, + marginBottom, + elements = isVirtual === true ? that.selectpicker.view.visibleElements : that.selectpicker.current.elements; - if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) { - this.sizeInfo.hasScrollBar = true; - this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth; + // replace the existing UL with an empty one - this is faster than $.empty() + menuInner.replaceChild(emptyMenu, menuInner.firstChild); - this.$menu.css('min-width', this.sizeInfo.totalMenuWidth); - } + for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) { + menuFragment.appendChild(elements[i]); + } - if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update(); - }, + if (isVirtual === true) { + marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position); + marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position); - setSize: function (refresh) { - this.liHeight(refresh); + menuInner.firstChild.style.marginTop = marginTop + 'px'; + menuInner.firstChild.style.marginBottom = marginBottom + 'px'; + } - if (this.options.header) this.$menu.css('padding-top', 0); - if (this.options.size === false) return; + menuInner.firstChild.appendChild(menuFragment); + } + } - var that = this, - $window = $(window), - selectedIndex, - offset = 0; + that.prevActiveIndex = that.activeIndex; - this.setMenuSize(); + if (!that.options.liveSearch) { + that.$menuInner.focus(); + } else if (isSearching && init) { + var index = 0, + newActive; - if (this.options.size === 'auto') { - this.$searchbox - .off('input.setMenuSize propertychange.setMenuSize') - .on('input.setMenuSize propertychange.setMenuSize', function () { - return that.setMenuSize(); - }); + if (!that.selectpicker.view.canHighlight[index]) { + index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true); + } - $window - .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize') - .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () { - return that.setMenuSize(); - }); - } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { - this.$searchbox.off('input.setMenuSize propertychange.setMenuSize'); - $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize'); - } + newActive = that.selectpicker.view.visibleElements[index]; - if (refresh) { - offset = this.$menuInner[0].scrollTop; - } else if (!that.multiple) { - selectedIndex = that.selectpicker.main.map.newIndex[that.$element[0].selectedIndex]; + if (that.selectpicker.view.currentActive) { + that.selectpicker.view.currentActive.classList.remove('active'); + if (that.selectpicker.view.currentActive.firstChild) that.selectpicker.view.currentActive.firstChild.classList.remove('active'); + } - if (typeof selectedIndex === 'number' && that.options.size !== false) { - offset = that.sizeInfo.liHeight * selectedIndex; - offset = offset - (that.sizeInfo.menuInnerHeight / 2) + (that.sizeInfo.liHeight / 2); + if (newActive) { + newActive.classList.add('active'); + if (newActive.firstChild) newActive.firstChild.classList.add('active'); + } + + that.activeIndex = that.selectpicker.current.map.originalIndex[index]; } } - that.createView(false, offset); - }, - - setWidth: function () { - var that = this; - - if (this.options.width === 'auto') { - requestAnimationFrame(function () { - that.$menu.css('min-width', '0'); - that.liHeight(); - that.setMenuSize(); - - // Get correct width if element is hidden - var $selectClone = that.$newElement.clone().appendTo('body'), - btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth(); - - $selectClone.remove(); + $(window) + .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView') + .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () { + var isActive = that.$newElement.hasClass(classNames.SHOW); - // Set width to whatever's larger, button title or longest option - that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth); - that.$newElement.css('width', that.sizeInfo.selectWidth + 'px'); + if (isActive) scroll(that.$menuInner[0].scrollTop); }); - } else if (this.options.width === 'fit') { - // Remove inline min-width so width can be changed from 'auto' - this.$menu.css('min-width', ''); - this.$newElement.css('width', '').addClass('fit-width'); - } else if (this.options.width) { - // Remove inline min-width so width can be changed from 'auto' - this.$menu.css('min-width', ''); - this.$newElement.css('width', this.options.width); - } else { - // Remove inline min-width/width so width can be changed - this.$menu.css('min-width', ''); - this.$newElement.css('width', ''); - } - // Remove fit-width class if width is changed programmatically - if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { - this.$newElement.removeClass('fit-width'); - } }, - selectPosition: function () { - this.$bsContainer = $('<div class="bs-container" />'); - + createLi: function () { var that = this, - $container = $(this.options.container), - pos, - containerPos, - actualHeight, - getPlacement = function ($element) { - var containerPosition = {}, - // fall back to dropdown's default display setting if display is not manually set - display = that.options.display || ( - // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default - $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display - : false - ); + mainElements = [], + hiddenOptions = {}, + widestOption, + availableOptionsCount = 0, + widestOptionLength = 0, + mainData = [], + optID = 0, + headerIndex = 0, + liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure newIndex is correct - that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP)); - pos = $element.offset(); + if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option'); - if (!$container.is('body')) { - containerPos = $container.offset(); - containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop(); - containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft(); - } else { - containerPos = { top: 0, left: 0 }; - } + var elementTemplates = { + span: document.createElement('span'), + subtext: document.createElement('small'), + a: document.createElement('a'), + li: document.createElement('li'), + whitespace: document.createTextNode('\u00A0') + }, + checkMark, + fragment = document.createDocumentFragment(); - actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight; + if (that.options.showTick || that.multiple) { + checkMark = elementTemplates.span.cloneNode(false); + checkMark.className = that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark'; + elementTemplates.a.appendChild(checkMark); + } - // Bootstrap 4+ uses Popper for menu positioning - if (version.major < 4 || display === 'static') { - containerPosition.top = pos.top - containerPos.top + actualHeight; - containerPosition.left = pos.left - containerPos.left; - } + elementTemplates.a.setAttribute('role', 'option'); - containerPosition.width = $element[0].offsetWidth; + elementTemplates.subtext.className = 'text-muted'; - that.$bsContainer.css(containerPosition); - }; + elementTemplates.text = elementTemplates.span.cloneNode(false); + elementTemplates.text.className = 'text'; - this.$button.on('click.bs.dropdown.data-api', function () { - if (that.isDisabled()) { - return; + // Helper functions + /** + * @param content + * @param [classes] + * @param [optgroup] + * @returns {HTMLElement} + */ + var generateLI = function (content, classes, optgroup) { + var li = elementTemplates.li.cloneNode(false); + + if (content) { + if (content.nodeType === 1 || content.nodeType === 11) { + li.appendChild(content); + } else { + li.innerHTML = content; + } } - getPlacement(that.$newElement); + if (typeof classes !== 'undefined' && classes !== '') li.className = classes; + if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup); - that.$bsContainer - .appendTo(that.options.container) - .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW)) - .append(that.$menu); - }); + return li; + }; - $(window) - .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId) - .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () { - var isActive = that.$newElement.hasClass(classNames.SHOW); + /** + * @param text + * @param [classes] + * @param [inline] + * @returns {string} + */ + var generateA = function (text, classes, inline) { + var a = elementTemplates.a.cloneNode(true); - if (isActive) getPlacement(that.$newElement); - }); + if (text) { + if (text.nodeType === 11) { + a.appendChild(text); + } else { + a.insertAdjacentHTML('beforeend', text); + } + } - this.$element.on('hide' + EVENT_KEY, function () { - that.$menu.data('height', that.$menu.height()); - that.$bsContainer.detach(); - }); - }, + if (typeof classes !== 'undefined' && classes !== '') a.className = classes; + if (version.major === '4') a.classList.add('dropdown-item'); + if (inline) a.setAttribute('style', inline); - setOptionStatus: function () { - var that = this, - $selectOptions = this.$element.find('option'); + return a; + }; - that.noScroll = false; + var generateText = function (options) { + var textElement = elementTemplates.text.cloneNode(false), + optionSubtextElement, + optionIconElement; - if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) { - for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) { - var index = that.selectpicker.current.map.originalIndex[i + that.selectpicker.view.position0], // faster than $(li).data('originalIndex') - option = $selectOptions[index]; + if (options.optionContent) { + textElement.innerHTML = options.optionContent; + } else { + textElement.textContent = options.text; - if (option) { - var liIndex = this.selectpicker.main.map.newIndex[index], - li = this.selectpicker.main.elements[liIndex]; + if (options.optionIcon) { + var whitespace = elementTemplates.whitespace.cloneNode(false); - that.setDisabled( - index, - option.disabled || (option.parentNode.tagName === 'OPTGROUP' && option.parentNode.disabled), - liIndex, - li - ); + optionIconElement = elementTemplates.span.cloneNode(false); + optionIconElement.className = that.options.iconBase + ' ' + options.optionIcon; - that.setSelected( - index, - option.selected, - liIndex, - li - ); + fragment.appendChild(optionIconElement); + fragment.appendChild(whitespace); } - } - } - }, - /** - * @param {number} index - the index of the option that is being changed - * @param {boolean} selected - true if the option is being selected, false if being deselected - */ - setSelected: function (index, selected, liIndex, li) { - var activeIndexIsSet = this.activeIndex !== undefined, - thisIsActive = this.activeIndex === index, - prevActiveIndex, - prevActive, - a, - // if current option is already active - // OR - // if the current option is being selected, it's NOT multiple, and - // activeIndex is undefined: - // - when the menu is first being opened, OR - // - after a search has been performed, OR - // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex) - keepActive = thisIsActive || (selected && !this.multiple && !activeIndexIsSet); + if (options.optionSubtext) { + optionSubtextElement = elementTemplates.subtext.cloneNode(false); + optionSubtextElement.innerHTML = options.optionSubtext; + textElement.appendChild(optionSubtextElement); + } + } - if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index]; - if (!li) li = this.selectpicker.main.elements[liIndex]; + fragment.appendChild(textElement); - a = li.firstChild; + return fragment; + }; - if (selected) { - this.selectedIndex = index; - } + var generateLabel = function (options) { + var labelTextElement = elementTemplates.text.cloneNode(false), + labelSubtextElement, + labelIconElement; - li.classList.toggle('selected', selected); - li.classList.toggle('active', keepActive); + labelTextElement.innerHTML = options.labelEscaped; - if (keepActive) { - this.selectpicker.view.currentActive = li; - this.activeIndex = index; - } + if (options.labelIcon) { + var whitespace = elementTemplates.whitespace.cloneNode(false); - if (a) { - a.classList.toggle('selected', selected); - a.classList.toggle('active', keepActive); - a.setAttribute('aria-selected', selected); - } + labelIconElement = elementTemplates.span.cloneNode(false); + labelIconElement.className = that.options.iconBase + ' ' + options.labelIcon; - if (!keepActive) { - if (!activeIndexIsSet && selected && this.prevActiveIndex !== undefined) { - prevActiveIndex = this.selectpicker.main.map.newIndex[this.prevActiveIndex]; - prevActive = this.selectpicker.main.elements[prevActiveIndex]; + fragment.appendChild(labelIconElement); + fragment.appendChild(whitespace); + } - prevActive.classList.remove('active'); - if (prevActive.firstChild) { - prevActive.firstChild.classList.remove('active'); - } + if (options.labelSubtext) { + labelSubtextElement = elementTemplates.subtext.cloneNode(false); + labelSubtextElement.textContent = options.labelSubtext; + labelTextElement.appendChild(labelSubtextElement); } - } - }, - /** - * @param {number} index - the index of the option that is being disabled - * @param {boolean} disabled - true if the option is being disabled, false if being enabled - */ - setDisabled: function (index, disabled, liIndex, li) { - var a; + fragment.appendChild(labelTextElement); - if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index]; - if (!li) li = this.selectpicker.main.elements[liIndex]; + return fragment; + } - a = li.firstChild; + if (this.options.title && !this.multiple) { + // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased + // since newIndex is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended + liIndex--; - li.classList.toggle(classNames.DISABLED, disabled); + var element = this.$element[0], + isSelected = false, + titleNotAppended = !this.selectpicker.view.titleOption.parentNode; - if (a) { - if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled); + if (titleNotAppended) { + // Use native JS to prepend option (faster) + this.selectpicker.view.titleOption.className = 'bs-title-option'; + this.selectpicker.view.titleOption.value = ''; - a.setAttribute('aria-disabled', disabled); + // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option. + // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs, + // if so, the select will have the data-selected attribute + var $opt = $(element.options[element.selectedIndex]); + isSelected = $opt.attr('selected') === undefined && this.$element.data('selected') === undefined; + } - if (disabled) { - a.setAttribute('tabindex', -1); - } else { - a.setAttribute('tabindex', 0); + if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) { + element.insertBefore(this.selectpicker.view.titleOption, element.firstChild); } + + // Set selected *after* appending to select, + // otherwise the option doesn't get selected in IE + // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11 + if (isSelected) element.selectedIndex = 0; } - }, - isDisabled: function () { - return this.$element[0].disabled; - }, + var $selectOptions = this.$element.find('option'); - checkDisabled: function () { - var that = this; + $selectOptions.each(function (index) { + var $this = $(this); - if (this.isDisabled()) { - this.$newElement.addClass(classNames.DISABLED); - this.$button.addClass(classNames.DISABLED).attr('tabindex', -1).attr('aria-disabled', true); - } else { - if (this.$button.hasClass(classNames.DISABLED)) { - this.$newElement.removeClass(classNames.DISABLED); - this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false); - } + liIndex++; - if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { - this.$button.removeAttr('tabindex'); - } - } + if ($this.hasClass('bs-title-option')) return; - this.$button.click(function () { - return !that.isDisabled(); - }); - }, + var thisData = $this.data(); - togglePlaceholder: function () { - // much faster than calling $.val() - var element = this.$element[0], - selectedIndex = element.selectedIndex, - nothingSelected = selectedIndex === -1; + // Get the class and text for the option + var optionClass = this.className || '', + inline = htmlEscape(this.style.cssText), + optionContent = thisData.content, + text = this.textContent, + tokens = thisData.tokens, + subtext = thisData.subtext, + icon = thisData.icon, + $parent = $this.parent(), + parent = $parent[0], + isOptgroup = parent.tagName === 'OPTGROUP', + isOptgroupDisabled = isOptgroup && parent.disabled, + isDisabled = this.disabled || isOptgroupDisabled, + prevHiddenIndex, + showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP', + textElement, + labelElement, + prevHidden; - if (!nothingSelected && !element.options[selectedIndex].value) nothingSelected = true; + var parentData = $parent.data(); - this.$button.toggleClass('bs-placeholder', nothingSelected); - }, + if ((thisData.hidden === true || this.hidden) || (that.options.hideDisabled && (isDisabled || isOptgroupDisabled))) { + // set prevHiddenIndex - the index of the first hidden option in a group of hidden options + // used to determine whether or not a divider should be placed after an optgroup if there are + // hidden options between the optgroup and the first visible option + prevHiddenIndex = thisData.prevHiddenIndex; + $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index)); - tabIndex: function () { - if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && - (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { - this.$element.data('tabindex', this.$element.attr('tabindex')); - this.$button.attr('tabindex', this.$element.data('tabindex')); - } + liIndex--; - this.$element.attr('tabindex', -98); - }, + hiddenOptions[index] = { + type: 'hidden', + data: thisData + } - clickListener: function () { - var that = this, - $document = $(document); + // if previous element is not an optgroup + if (!showDivider) { + if (prevHiddenIndex !== undefined) { + // select the element **before** the first hidden element in the group + prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling; - $document.data('spaceSelect', false); + if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) { + showDivider = true; + } + } + } - this.$button.on('keyup', function (e) { - if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { - e.preventDefault(); - $document.data('spaceSelect', false); - } - }); + if (showDivider && mainData[mainData.length - 1].type !== 'divider') { + liIndex++; + mainElements.push( + generateLI( + false, + classNames.DIVIDER, + optID + 'div' + ) + ); + mainData.push({ + type: 'divider', + optID: optID + }); + } - this.$newElement.on('show.bs.dropdown', function () { - if (version.major > 3 && !that.dropdown) { - that.dropdown = that.$button.data('bs.dropdown'); - that.dropdown._menu = that.$menu[0]; + return; } - }); - this.$button.on('click.bs.dropdown.data-api', function () { - if (!that.$newElement.hasClass(classNames.SHOW)) { - that.setSize(); - } - }); + if (isOptgroup && thisData.divider !== true) { + if (that.options.hideDisabled && isDisabled) { + if (parentData.allOptionsDisabled === undefined) { + var $options = $parent.children(); + $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length); + } - function setFocus () { - if (that.options.liveSearch) { - that.$searchbox.focus(); - } else { - that.$menuInner.focus(); - } - } + if ($parent.data('allOptionsDisabled')) { + liIndex--; + return; + } + } - function checkPopperExists () { - if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) { - setFocus(); - } else { - requestAnimationFrame(checkPopperExists); - } - } + var optGroupClass = ' ' + parent.className || false, + previousOption = this.previousElementSibling; - this.$element.on('shown' + EVENT_KEY, function () { - if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) { - that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop; - } + prevHiddenIndex = thisData.prevHiddenIndex; - if (version.major > 3) { - requestAnimationFrame(checkPopperExists); - } else { - setFocus(); - } - }); + if (prevHiddenIndex !== undefined) { + previousOption = $selectOptions[prevHiddenIndex].previousElementSibling; + } - this.$menuInner.on('click', 'li a', function (e, retainActive) { - var $this = $(this), - position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, - clickedIndex = that.selectpicker.current.map.originalIndex[$this.parent().index() + position0], - prevValue = getSelectValues(that.$element[0]), - prevIndex = that.$element.prop('selectedIndex'), - triggerChange = true; + if (!previousOption) { // Is it the first option of the optgroup? + optID += 1; - // Don't close on multi choice menu - if (that.multiple && that.options.maxOptions !== 1) { - e.stopPropagation(); - } + // Get the opt group label + var label = parent.label, + labelEscaped = htmlEscape(label), + labelSubtext = parentData.subtext, + labelIcon = parentData.icon; - e.preventDefault(); + if (index !== 0 && mainElements.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + liIndex++; + mainElements.push( + generateLI( + false, + classNames.DIVIDER, + optID + 'div' + ) + ); + mainData.push({ + type: 'divider', + optID: optID + }); + } + liIndex++; - // Don't run if the select is disabled - if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) { - var $options = that.$element.find('option'), - $option = $options.eq(clickedIndex), - state = $option.prop('selected'), - $optgroup = $option.parent('optgroup'), - $optgroupOptions = $optgroup.find('option'), - maxOptions = that.options.maxOptions, - maxOptionsGrp = $optgroup.data('maxOptions') || false; + labelElement = generateLabel({ + labelEscaped: labelEscaped, + labelSubtext: labelSubtext, + labelIcon: labelIcon + }); - if (clickedIndex === that.activeIndex) retainActive = true; + mainElements.push(generateLI(labelElement, 'dropdown-header' + optGroupClass, optID)); + mainData.push({ + content: labelEscaped, + subtext: labelSubtext, + type: 'optgroup-label', + optID: optID + }); - if (!retainActive) { - that.prevActiveIndex = that.activeIndex; - that.activeIndex = undefined; + headerIndex = liIndex - 1; } - if (!that.multiple) { // Deselect all others if not multi select box - $options.prop('selected', false); - $option.prop('selected', true); - that.setSelected(clickedIndex, true); - } else { // Toggle the one we have chosen if we are multi select. - $option.prop('selected', !state); - - that.setSelected(clickedIndex, !state); - $this.blur(); - - if (maxOptions !== false || maxOptionsGrp !== false) { - var maxReached = maxOptions < $options.filter(':selected').length, - maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; - - if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { - if (maxOptions && maxOptions == 1) { - $options.prop('selected', false); - $option.prop('selected', true); - - for (var i = 0; i < $options.length; i++) { - that.setSelected(i, false); - } - - that.setSelected(clickedIndex, true); - } else if (maxOptionsGrp && maxOptionsGrp == 1) { - $optgroup.find('option:selected').prop('selected', false); - $option.prop('selected', true); - - for (var i = 0; i < $optgroupOptions.length; i++) { - var option = $optgroupOptions[i]; - that.setSelected($options.index(option), false); - } - - that.setSelected(clickedIndex, true); - } else { - var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText, - maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText, - maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), - maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), - $notify = $('<div class="notify"></div>'); - // If {var} is set in array, replace it - /** @deprecated */ - if (maxOptionsArr[2]) { - maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); - maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); - } - - $option.prop('selected', false); - - that.$menu.append($notify); + textElement = generateText({ + text: text, + optionContent: optionContent, + optionSubtext: subtext, + optionIcon: icon + }); - if (maxOptions && maxReached) { - $notify.append($('<div>' + maxTxt + '</div>')); - triggerChange = false; - that.$element.trigger('maxReached' + EVENT_KEY); - } + mainElements.push(generateLI(generateA(textElement, 'opt ' + optionClass + optGroupClass, inline), '', optID)); + mainData.push({ + content: optionContent || text, + subtext: subtext, + tokens: tokens, + type: 'option', + optID: optID, + headerIndex: headerIndex, + lastIndex: headerIndex + parent.childElementCount, + originalIndex: index, + data: thisData + }); - if (maxOptionsGrp && maxReachedGrp) { - $notify.append($('<div>' + maxTxtGrp + '</div>')); - triggerChange = false; - that.$element.trigger('maxReachedGrp' + EVENT_KEY); - } + availableOptionsCount++; + } else if (thisData.divider === true) { + mainElements.push(generateLI(false, classNames.DIVIDER)); + mainData.push({ + type: 'divider', + originalIndex: index, + data: thisData + }); + } else { + // if previous element is not an optgroup and hideDisabled is true + if (!showDivider && that.options.hideDisabled) { + prevHiddenIndex = thisData.prevHiddenIndex; - setTimeout(function () { - that.setSelected(clickedIndex, false); - }, 10); + if (prevHiddenIndex !== undefined) { + // select the element **before** the first hidden element in the group + prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling; - $notify.delay(750).fadeOut(300, function () { - $(this).remove(); - }); - } + if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) { + showDivider = true; } } } - if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) { - that.$button.focus(); - } else if (that.options.liveSearch) { - that.$searchbox.focus(); + if (showDivider && mainData[mainData.length - 1].type !== 'divider') { + liIndex++; + mainElements.push( + generateLI( + false, + classNames.DIVIDER, + optID + 'div' + ) + ); + mainData.push({ + type: 'divider', + optID: optID + }); } - // Trigger select 'change' - if (triggerChange) { - if ((prevValue != getSelectValues(that.$element[0]) && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { - // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed. - changedArguments = [clickedIndex, $option.prop('selected'), prevValue]; - that.$element - .triggerNative('change'); - } - } - } - }); + textElement = generateText({ + text: text, + optionContent: optionContent, + optionSubtext: subtext, + optionIcon: icon + }); - this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) { - if (e.currentTarget == this) { - e.preventDefault(); - e.stopPropagation(); - if (that.options.liveSearch && !$(e.target).hasClass('close')) { - that.$searchbox.focus(); - } else { - that.$button.focus(); - } - } - }); + mainElements.push(generateLI(generateA(textElement, optionClass, inline))); + mainData.push({ + content: optionContent || text, + subtext: subtext, + tokens: tokens, + type: 'option', + originalIndex: index, + data: thisData + }); - this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { - e.preventDefault(); - e.stopPropagation(); - if (that.options.liveSearch) { - that.$searchbox.focus(); - } else { - that.$button.focus(); + availableOptionsCount++; } - }); - - this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () { - that.$button.click(); - }); - this.$searchbox.on('click', function (e) { - e.stopPropagation(); - }); + that.selectpicker.main.map.newIndex[index] = liIndex; + that.selectpicker.main.map.originalIndex[liIndex] = index; - this.$menu.on('click', '.actions-btn', function (e) { - if (that.options.liveSearch) { - that.$searchbox.focus(); - } else { - that.$button.focus(); - } + // get the most recent option info added to mainData + var _mainDataLast = mainData[mainData.length - 1]; - e.preventDefault(); - e.stopPropagation(); + _mainDataLast.disabled = isDisabled; - if ($(this).hasClass('bs-select-all')) { - that.selectAll(); - } else { - that.deselectAll(); - } - }); + var combinedLength = 0; - this.$element.on({ - 'change': function () { - that.render(); - that.$element.trigger('changed' + EVENT_KEY, changedArguments); - changedArguments = null; - }, - 'focus': function () { - if (!that.options.mobile) that.$button.focus(); - } - }); - }, + // count the number of characters in the option - not perfect, but should work in most cases + if (_mainDataLast.content) combinedLength += _mainDataLast.content.length; + if (_mainDataLast.subtext) combinedLength += _mainDataLast.subtext.length; + // if there is an icon, ensure this option's width is checked + if (icon) combinedLength += 1; - liveSearchListener: function () { - var that = this, - noResults = document.createElement('li'); + if (combinedLength > widestOptionLength) { + widestOptionLength = combinedLength; - this.$button.on('click.bs.dropdown.data-api', function () { - if (!!that.$searchbox.val()) { - that.$searchbox.val(''); + // guess which option is the widest + // use this when calculating menu width + // not perfect, but it's fast, and the width will be updating accordingly when scrolling + widestOption = mainElements[mainElements.length - 1]; } }); - this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) { - e.stopPropagation(); - }); + this.selectpicker.main.elements = mainElements; + this.selectpicker.main.data = mainData; + this.selectpicker.main.hidden = hiddenOptions; - this.$searchbox.on('input propertychange', function () { - var searchValue = that.$searchbox.val(); + this.selectpicker.current = this.selectpicker.main; - that.selectpicker.search.map.newIndex = {}; - that.selectpicker.search.map.originalIndex = {}; - that.selectpicker.search.elements = []; - that.selectpicker.search.data = []; + this.selectpicker.view.widestOption = widestOption; + this.selectpicker.view.availableOptionsCount = availableOptionsCount; // faster way to get # of available options without filter + }, - if (searchValue) { - var i, - searchMatch = [], - q = searchValue.toUpperCase(), - cache = {}, - cacheArr = [], - searchStyle = that._searchStyle(), - normalizeSearch = that.options.liveSearchNormalize; + findLis: function () { + return this.$menuInner.find('.inner > li'); + }, - if (normalizeSearch) q = normalizeToBase(q); + render: function () { + var that = this, + $selectOptions = this.$element.find('option'), + selectedItems = [], + selectedItemsInTitle = []; - that._$lisSelected = that.$menuInner.find('.selected'); + this.togglePlaceholder(); - for (var i = 0; i < that.selectpicker.main.data.length; i++) { - var li = that.selectpicker.main.data[i]; + this.tabIndex(); - if (!cache[i]) { - cache[i] = stringSearch(li, q, searchStyle, normalizeSearch); - } + for (var index = 0, len = $selectOptions.length; index < len; index++) { + var i = that.selectpicker.main.map.newIndex[index], + option = $selectOptions[index], + optionData = that.selectpicker.main.data[i] || that.selectpicker.main.hidden[index]; - if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) { - if (li.headerIndex > 0) { - cache[li.headerIndex - 1] = true; - cacheArr.push(li.headerIndex - 1); - } + if (option && option.selected && optionData) { + selectedItems.push(option); - cache[li.headerIndex] = true; - cacheArr.push(li.headerIndex); + if ((selectedItemsInTitle.length < 100 && that.options.selectedTextFormat !== 'count') || selectedItems.length === 1) { + var thisData = optionData.data, + icon = thisData.icon && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + thisData.icon + '"></i> ' : '', + subtext, + titleItem; - cache[li.lastIndex + 1] = true; + if (that.options.showSubtext && thisData.subtext && !that.multiple) { + subtext = ' <small class="text-muted">' + thisData.subtext + '</small>'; + } else { + subtext = ''; } - if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i); - } - - for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) { - var index = cacheArr[i], - prevIndex = cacheArr[i - 1], - li = that.selectpicker.main.data[index], - liPrev = that.selectpicker.main.data[prevIndex]; - - if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) { - that.selectpicker.search.data.push(li); - searchMatch.push(that.selectpicker.main.elements[index]); - - if (li.hasOwnProperty('originalIndex')) { - that.selectpicker.search.map.newIndex[li.originalIndex] = searchMatch.length - 1; - that.selectpicker.search.map.originalIndex[searchMatch.length - 1] = li.originalIndex; - } + if (option.title) { + titleItem = option.title; + } else if (thisData.content && that.options.showContent) { + titleItem = thisData.content.toString(); + } else { + titleItem = icon + option.innerHTML.trim() + subtext; } - } - - that.activeIndex = undefined; - that.noScroll = true; - that.$menuInner.scrollTop(0); - that.selectpicker.search.elements = searchMatch; - that.createView(true); - if (!searchMatch.length) { - noResults.className = 'no-results'; - noResults.innerHTML = that.options.noneResultsText.replace('{0}', '"' + htmlEscape(searchValue) + '"'); - that.$menuInner[0].firstChild.appendChild(noResults); + selectedItemsInTitle.push(titleItem); } - } else { - that.$menuInner.scrollTop(0); - that.createView(false); } - }); - }, - - _searchStyle: function () { - return this.options.liveSearchStyle || 'contains'; - }, - - val: function (value) { - if (typeof value !== 'undefined') { - this.$element - .val(value) - .triggerNative('change'); - - return this.$element; - } else { - return this.$element.val(); } - }, - changeAll: function (status) { - if (!this.multiple) return; - if (typeof status === 'undefined') status = true; + // Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + // Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItemsInTitle[0] : selectedItemsInTitle.join(this.options.multipleSeparator); - var $selectOptions = this.$element.find('option'), - previousSelected = 0, - currentSelected = 0, - prevValue = getSelectValues(this.$element[0]); + // add ellipsis + if (selectedItems.length > 50) title += '...'; - this.$element.addClass('bs-select-hidden'); + // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1) { + var max = this.options.selectedTextFormat.split('>'); - for (var i = 0; i < this.selectpicker.current.elements.length; i++) { - var liData = this.selectpicker.current.data[i], - index = this.selectpicker.current.map.originalIndex[i], // faster than $(li).data('originalIndex') - option = $selectOptions[index]; + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length === 1 && selectedItems.length >= 2)) { + var totalCount = this.selectpicker.view.availableOptionsCount, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; - if (option && !option.disabled && liData.type !== 'divider') { - if (option.selected) previousSelected++; - option.selected = status; - if (option.selected) currentSelected++; + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); } } - this.$element.removeClass('bs-select-hidden'); - - if (previousSelected === currentSelected) return; - - this.setOptionStatus(); - - this.togglePlaceholder(); + if (this.options.title == undefined) { + // use .attr to ensure undefined is returned if title attribute is not set + this.options.title = this.$element.attr('title'); + } - changedArguments = [null, null, prevValue]; + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } - this.$element - .triggerNative('change'); - }, + // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } - selectAll: function () { - return this.changeAll(true); - }, + // strip all HTML tags and trim the result, then unescape any escaped tags + this.$button[0].title = htmlUnescape(title.replace(/<[^>]*>?/g, '').trim()); + this.$button.find('.filter-option-inner-inner')[0].innerHTML = title; - deselectAll: function () { - return this.changeAll(false); + this.$element.trigger('rendered' + EVENT_KEY); }, - toggle: function (e) { - e = e || window.event; + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); + } - if (e) e.stopPropagation(); + var buttonClass = style || this.options.style; - this.$button.trigger('click.bs.dropdown.data-api'); + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } }, - keydown: function (e) { - var $this = $(this), - isToggle = $this.hasClass('dropdown-toggle'), - $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU), - that = $parent.data('this'), - $items = that.findLis(), - index, - isActive, - liActive, - activeLi, - offset, - updateScroll = false, - downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab, - isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab, - scrollTop = that.$menuInner[0].scrollTop, - isVirtual = that.isVirtual(), - position0 = isVirtual === true ? that.selectpicker.view.position0 : 0; + liHeight: function (refresh) { + if (!refresh && (this.options.size === false || this.sizeInfo)) return; - isActive = that.$newElement.hasClass(classNames.SHOW); + if (!this.sizeInfo) this.sizeInfo = {}; - if ( - !isActive && - ( - isArrowKey || - (e.which >= 48 && e.which <= 57) || - (e.which >= 96 && e.which <= 105) || - (e.which >= 65 && e.which <= 90) - ) - ) { - that.$button.trigger('click.bs.dropdown.data-api'); - } + var newElement = document.createElement('div'), + menu = document.createElement('div'), + menuInner = document.createElement('div'), + menuInnerInner = document.createElement('ul'), + divider = document.createElement('li'), + dropdownHeader = document.createElement('li'), + li = document.createElement('li'), + a = document.createElement('a'), + text = document.createElement('span'), + header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null, + search = this.options.liveSearch ? document.createElement('div') : null, + actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, + doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null, + firstOption = this.$element.find('option')[0]; - if (e.which === keyCodes.ESCAPE && isActive) { - e.preventDefault(); - that.$button.trigger('click.bs.dropdown.data-api').focus(); - } + this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth; - if (isArrowKey) { // if up or down - if (!$items.length) return; + text.className = 'text'; + a.className = 'dropdown-item ' + (firstOption ? firstOption.className : ''); + newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW; + newElement.style.width = this.sizeInfo.selectWidth + 'px'; + if (this.options.width === 'auto') menu.style.minWidth = 0; + menu.className = classNames.MENU + ' ' + classNames.SHOW; + menuInner.className = 'inner ' + classNames.SHOW; + menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : ''); + divider.className = classNames.DIVIDER; + dropdownHeader.className = 'dropdown-header'; - // $items.index/.filter is too slow with a large list and no virtual scroll - index = isVirtual === true ? $items.index($items.filter('.active')) : that.selectpicker.current.map.newIndex[that.activeIndex]; + text.appendChild(document.createTextNode('\u200b')); + a.appendChild(text); + li.appendChild(a); + dropdownHeader.appendChild(text.cloneNode(true)); - if (index === undefined) index = -1; + if (this.selectpicker.view.widestOption) { + menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true)); + } - if (index !== -1) { - liActive = that.selectpicker.current.elements[index + position0]; - liActive.classList.remove('active'); - if (liActive.firstChild) liActive.firstChild.classList.remove('active'); - } + menuInnerInner.appendChild(li); + menuInnerInner.appendChild(divider); + menuInnerInner.appendChild(dropdownHeader); + if (header) menu.appendChild(header); + if (search) { + var input = document.createElement('input'); + search.className = 'bs-searchbox'; + input.className = 'form-control'; + search.appendChild(input); + menu.appendChild(search); + } + if (actions) menu.appendChild(actions); + menuInner.appendChild(menuInnerInner); + menu.appendChild(menuInner); + if (doneButton) menu.appendChild(doneButton); + newElement.appendChild(menu); - if (e.which === keyCodes.ARROW_UP) { // up - if (index !== -1) index--; - if (index + position0 < 0) index += $items.length; + document.body.appendChild(newElement); - if (!that.selectpicker.view.canHighlight[index + position0]) { - index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0; - if (index === -1) index = $items.length - 1; - } - } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down - index++; - if (index + position0 >= that.selectpicker.view.canHighlight.length) index = 0; + var liHeight = a.offsetHeight, + dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0, + headerHeight = header ? header.offsetHeight : 0, + searchHeight = search ? search.offsetHeight : 0, + actionsHeight = actions ? actions.offsetHeight : 0, + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, + dividerHeight = $(divider).outerHeight(true), + // fall back to jQuery if getComputedStyle is not supported + menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false, + menuWidth = menu.offsetWidth, + $menu = menuStyle ? null : $(menu), + menuPadding = { + vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + + toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + + toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + + toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), + horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + + toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + + toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + + toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth')) + }, + menuExtras = { + vert: menuPadding.vert + + toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + + toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2, + horiz: menuPadding.horiz + + toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + + toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2 + }, + scrollBarWidth; - if (!that.selectpicker.view.canHighlight[index + position0]) { - index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true); - } - } + menuInner.style.overflowY = 'scroll'; - e.preventDefault(); + scrollBarWidth = menu.offsetWidth - menuWidth; - var liActiveIndex = position0 + index; + document.body.removeChild(newElement); - if (e.which === keyCodes.ARROW_UP) { // up - // scroll to bottom and highlight last option - if (position0 === 0 && index === $items.length - 1) { - that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight; + this.sizeInfo.liHeight = liHeight; + this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight; + this.sizeInfo.headerHeight = headerHeight; + this.sizeInfo.searchHeight = searchHeight; + this.sizeInfo.actionsHeight = actionsHeight; + this.sizeInfo.doneButtonHeight = doneButtonHeight; + this.sizeInfo.dividerHeight = dividerHeight; + this.sizeInfo.menuPadding = menuPadding; + this.sizeInfo.menuExtras = menuExtras; + this.sizeInfo.menuWidth = menuWidth; + this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth; + this.sizeInfo.scrollBarWidth = scrollBarWidth; + this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight; - liActiveIndex = that.selectpicker.current.elements.length - 1; - } else { - activeLi = that.selectpicker.current.data[liActiveIndex]; - offset = activeLi.position - activeLi.height; + this.setPositionData(); + }, - updateScroll = offset < scrollTop; - } - } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down - // scroll to top and highlight first option - if (index === 0) { - that.$menuInner[0].scrollTop = 0; + getSelectPosition: function () { + var that = this, + $window = $(window), + pos = that.$newElement.offset(), + $container = $(that.options.container), + containerPos; - liActiveIndex = 0; - } else { - activeLi = that.selectpicker.current.data[liActiveIndex]; - offset = activeLi.position - that.sizeInfo.menuInnerHeight; + if (that.options.container && !$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')); + containerPos.left += parseInt($container.css('borderLeftWidth')); + } else { + containerPos = { top: 0, left: 0 }; + } - updateScroll = offset > scrollTop; - } - } + var winPad = that.options.windowPadding; - liActive = that.selectpicker.current.elements[liActiveIndex]; + this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop(); + this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2]; + this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft(); + this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1]; + this.sizeInfo.selectOffsetTop -= winPad[0]; + this.sizeInfo.selectOffsetLeft -= winPad[3]; + }, - if (liActive) { - liActive.classList.add('active'); - if (liActive.firstChild) liActive.firstChild.classList.add('active'); - } + setMenuSize: function (isAuto) { + this.getSelectPosition(); - that.activeIndex = that.selectpicker.current.map.originalIndex[liActiveIndex]; + var selectWidth = this.sizeInfo.selectWidth, + liHeight = this.sizeInfo.liHeight, + headerHeight = this.sizeInfo.headerHeight, + searchHeight = this.sizeInfo.searchHeight, + actionsHeight = this.sizeInfo.actionsHeight, + doneButtonHeight = this.sizeInfo.doneButtonHeight, + divHeight = this.sizeInfo.dividerHeight, + menuPadding = this.sizeInfo.menuPadding, + menuInnerHeight, + menuHeight, + divLength = 0, + minHeight, + _minHeight, + maxHeight, + menuInnerMinHeight, + estimate; - that.selectpicker.view.currentActive = liActive; + if (this.options.dropupAuto) { + // Get the estimated height of the menu without scrollbars. + // This is useful for smaller menus, where there might be plenty of room + // below the button without setting dropup, but we can't know + // the exact height of the menu until createView is called later + estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert; + this.$newElement.toggleClass(classNames.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot); + } - if (updateScroll) that.$menuInner[0].scrollTop = offset; + if (this.options.size === 'auto') { + _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0; + menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert; + minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; + menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0); - if (that.options.liveSearch) { - that.$searchbox.focus(); - } else { - $this.focus(); + if (this.$newElement.hasClass(classNames.DROPUP)) { + menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert; } - } else if ( - (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) || - (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory) - ) { - var searchMatch, - matches = [], - keyHistory; - - e.preventDefault(); - - that.selectpicker.keydown.keyHistory += keyCodeMap[e.which]; - - if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel); - that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start(); - keyHistory = that.selectpicker.keydown.keyHistory; - - // if all letters are the same, set keyHistory to just the first character when searching - if (/^(.)\1+$/.test(keyHistory)) { - keyHistory = keyHistory.charAt(0); + maxHeight = menuHeight; + menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert; + } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { + for (var i = 0; i < this.options.size; i++) { + if (this.selectpicker.current.data[i].type === 'divider') divLength++; } - // find matches - for (var i = 0; i < that.selectpicker.current.data.length; i++) { - var li = that.selectpicker.current.data[i], - hasMatch; + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert; + menuInnerHeight = menuHeight - menuPadding.vert; + maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; + minHeight = menuInnerMinHeight = ''; + } - hasMatch = stringSearch(li, keyHistory, 'startsWith', true); + if (this.options.dropdownAlignRight === 'auto') { + this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth)); + } - if (hasMatch && that.selectpicker.view.canHighlight[i]) { - li.index = i; - matches.push(li.originalIndex); - } - } + this.$menu.css({ + 'max-height': maxHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + 'px' + }); - if (matches.length) { - var matchIndex = 0; + this.$menuInner.css({ + 'max-height': menuInnerHeight + 'px', + 'overflow-y': 'auto', + 'min-height': menuInnerMinHeight + 'px' + }); - $items.removeClass('active').find('a').removeClass('active'); + this.sizeInfo.menuInnerHeight = menuInnerHeight; - // either only one key has been pressed or they are all the same key - if (keyHistory.length === 1) { - matchIndex = matches.indexOf(that.activeIndex); + if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) { + this.sizeInfo.hasScrollBar = true; + this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth; - if (matchIndex === -1 || matchIndex === matches.length - 1) { - matchIndex = 0; - } else { - matchIndex++; - } - } + this.$menu.css('min-width', this.sizeInfo.totalMenuWidth); + } - searchMatch = that.selectpicker.current.map.newIndex[matches[matchIndex]]; + if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update(); + }, - activeLi = that.selectpicker.current.data[searchMatch]; + setSize: function (refresh) { + this.liHeight(refresh); - if (scrollTop - activeLi.position > 0) { - offset = activeLi.position - activeLi.height; - updateScroll = true; - } else { - offset = activeLi.position - that.sizeInfo.menuInnerHeight; - // if the option is already visible at the current scroll position, just keep it the same - updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight; - } + if (this.options.header) this.$menu.css('padding-top', 0); + if (this.options.size === false) return; - liActive = that.selectpicker.current.elements[searchMatch]; - liActive.classList.add('active'); - if (liActive.firstChild) liActive.firstChild.classList.add('active'); - that.activeIndex = matches[matchIndex]; + var that = this, + $window = $(window), + selectedIndex, + offset = 0; - liActive.firstChild.focus(); + this.setMenuSize(); - if (updateScroll) that.$menuInner[0].scrollTop = offset; + if (this.options.size === 'auto') { + this.$searchbox + .off('input.setMenuSize propertychange.setMenuSize') + .on('input.setMenuSize propertychange.setMenuSize', function () { + return that.setMenuSize(); + }); - $this.focus(); - } + $window + .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize') + .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () { + return that.setMenuSize(); + }); + } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { + this.$searchbox.off('input.setMenuSize propertychange.setMenuSize'); + $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize'); } - // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. - if ( - isActive && - ( - (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) || - e.which === keyCodes.ENTER || - (e.which === keyCodes.TAB && that.options.selectOnTab) - ) - ) { - if (e.which !== keyCodes.SPACE) e.preventDefault(); - - if (!that.options.liveSearch || e.which !== keyCodes.SPACE) { - that.$menuInner.find('.active a').trigger('click', true); // retain active class - $this.focus(); + if (refresh) { + offset = this.$menuInner[0].scrollTop; + } else if (!that.multiple) { + selectedIndex = that.selectpicker.main.map.newIndex[that.$element[0].selectedIndex]; - if (!that.options.liveSearch) { - // Prevent screen from scrolling if the user hits the spacebar - e.preventDefault(); - // Fixes spacebar selection of dropdown items in FF & IE - $(document).data('spaceSelect', true); - } + if (typeof selectedIndex === 'number' && that.options.size !== false) { + offset = that.sizeInfo.liHeight * selectedIndex; + offset = offset - (that.sizeInfo.menuInnerHeight / 2) + (that.sizeInfo.liHeight / 2); } } - }, - - mobile: function () { - this.$element.addClass('mobile-device'); - }, - - refresh: function () { - // update options if data attributes have been changed - var config = $.extend({}, this.options, this.$element.data()); - this.options = config; - - this.selectpicker.main.map.newIndex = {}; - this.selectpicker.main.map.originalIndex = {}; - this.createLi(); - this.checkDisabled(); - this.render(); - this.setStyle(); - this.setWidth(); - this.setSize(true); - - this.$element.trigger('refreshed' + EVENT_KEY); + that.createView(false, offset); }, - hide: function () { - this.$newElement.hide(); - }, + setWidth: function () { + var that = this; - show: function () { - this.$newElement.show(); - }, + if (this.options.width === 'auto') { + requestAnimationFrame(function () { + that.$menu.css('min-width', '0'); + that.liHeight(); + that.setMenuSize(); - remove: function () { - this.$newElement.remove(); - this.$element.remove(); - }, + // Get correct width if element is hidden + var $selectClone = that.$newElement.clone().appendTo('body'), + btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth(); - destroy: function () { - this.$newElement.before(this.$element).remove(); + $selectClone.remove(); - if (this.$bsContainer) { - this.$bsContainer.remove(); + // Set width to whatever's larger, button title or longest option + that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth); + that.$newElement.css('width', that.sizeInfo.selectWidth + 'px'); + }); + } else if (this.options.width === 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); } else { - this.$menu.remove(); + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); } + }, - this.$element - .off(EVENT_KEY) - .removeData('selectpicker') - .removeClass('bs-select-hidden selectpicker'); + selectPosition: function () { + this.$bsContainer = $('<div class="bs-container" />'); - $(window).off(EVENT_KEY + '.' + this.selectId); - } - }; + var that = this, + $container = $(this.options.container), + pos, + containerPos, + actualHeight, + getPlacement = function ($element) { + var containerPosition = {}, + // fall back to dropdown's default display setting if display is not manually set + display = that.options.display || ( + // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default + $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display + : false + ); - // SELECTPICKER PLUGIN DEFINITION - // ============================== - function Plugin (option) { - // get the args of the outer function.. - var args = arguments; - // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them - // to get lost/corrupted in android 2.3 and IE9 #715 #775 - var _option = option; + that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP)); + pos = $element.offset(); - [].shift.apply(args); + if (!$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop(); + containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft(); + } else { + containerPos = { top: 0, left: 0 }; + } - // if the version was not set successfully - if (!version.success) { - // try to retreive it again - try { - version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); - } catch (err) { - // fall back to use BootstrapVersion - version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.'); - } + actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight; - version.major = version.full[0]; - version.success = true; + // Bootstrap 4+ uses Popper for menu positioning + if (version.major < 4 || display === 'static') { + containerPosition.top = pos.top - containerPos.top + actualHeight; + containerPosition.left = pos.left - containerPos.left; + } - if (version.major === '4') { - classNames.DIVIDER = 'dropdown-divider'; - classNames.SHOW = 'show'; - classNames.BUTTONCLASS = 'btn-light'; - Selectpicker.DEFAULTS.style = classNames.BUTTONCLASS = 'btn-light'; - classNames.POPOVERHEADER = 'popover-header'; - } - } + containerPosition.width = $element[0].offsetWidth; - var value; - var chain = this.each(function () { - var $this = $(this); - if ($this.is('select')) { - var data = $this.data('selectpicker'), - options = typeof _option == 'object' && _option; + that.$bsContainer.css(containerPosition); + }; - if (!data) { - var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); - config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template); - $this.data('selectpicker', (data = new Selectpicker(this, config))); - } else if (options) { - for (var i in options) { - if (options.hasOwnProperty(i)) { - data.options[i] = options[i]; - } - } + this.$button.on('click.bs.dropdown.data-api', function () { + if (that.isDisabled()) { + return; } - if (typeof _option == 'string') { - if (data[_option] instanceof Function) { - value = data[_option].apply(data, args); - } else { - value = data.options[_option]; - } - } - } - }); + getPlacement(that.$newElement); - if (typeof value !== 'undefined') { - // noinspection JSUnusedAssignment - return value; - } else { - return chain; - } - } + that.$bsContainer + .appendTo(that.options.container) + .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW)) + .append(that.$menu); + }); - var old = $.fn.selectpicker; - $.fn.selectpicker = Plugin; - $.fn.selectpicker.Constructor = Selectpicker; - - // SELECTPICKER NO CONFLICT - // ======================== - $.fn.selectpicker.noConflict = function () { - $.fn.selectpicker = old; - return this; - }; - - $(document) - .off('keydown.bs.dropdown.data-api') - .on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown) - .on('focusin.modal', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) { - e.stopPropagation(); - }); + $(window) + .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId) + .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () { + var isActive = that.$newElement.hasClass(classNames.SHOW); - // SELECTPICKER DATA-API - // ===================== - $(window).on('load' + EVENT_KEY + '.data-api', function () { - $('.selectpicker').each(function () { - var $selectpicker = $(this); - Plugin.call($selectpicker, $selectpicker.data()); - }) - }); -})(jQuery); + if (isActive) getPlacement(that.$newElement); + }); + this.$element.on('hide' + EVENT_KEY, function () { + that.$menu.data('height', that.$menu.height()); + that.$bsContainer.detach(); + }); + }, -})); + setOptionStatus: function () { + var that = this, + $selectOptions = this.$element.find('option'); + that.noScroll = false; -/***/ }), + if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) { + for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) { + var index = that.selectpicker.current.map.originalIndex[i + that.selectpicker.view.position0], // faster than $(li).data('originalIndex') + option = $selectOptions[index]; -/***/ "./node_modules/bootstrap-v4-rtl/dist/js/bootstrap.js": -/*!************************************************************!*\ - !*** ./node_modules/bootstrap-v4-rtl/dist/js/bootstrap.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (option) { + var liIndex = this.selectpicker.main.map.newIndex[index], + li = this.selectpicker.main.elements[liIndex]; -/*! - * Bootstrap v4.1.1-0 (https://github.com/MahdiMajidzadeh/bootstrap-v4-rtl) - * Copyright 2011-2018 Mahdi Majidzadeh - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -(function (global, factory) { - true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")) : - undefined; -}(this, (function (exports,$,Popper) { 'use strict'; + that.setDisabled( + index, + option.disabled || (option.parentNode.tagName === 'OPTGROUP' && option.parentNode.disabled), + liIndex, + li + ); - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; - Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper; + that.setSelected( + index, + option.selected, + liIndex, + li + ); + } + } + } + }, - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } + /** + * @param {number} index - the index of the option that is being changed + * @param {boolean} selected - true if the option is being selected, false if being deselected + */ + setSelected: function (index, selected, liIndex, li) { + var activeIndexIsSet = this.activeIndex !== undefined, + thisIsActive = this.activeIndex === index, + prevActiveIndex, + prevActive, + a, + // if current option is already active + // OR + // if the current option is being selected, it's NOT multiple, and + // activeIndex is undefined: + // - when the menu is first being opened, OR + // - after a search has been performed, OR + // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex) + keepActive = thisIsActive || (selected && !this.multiple && !activeIndexIsSet); - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } + if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index]; + if (!li) li = this.selectpicker.main.elements[liIndex]; - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } + a = li.firstChild; - return obj; - } + if (selected) { + this.selectedIndex = index; + } - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - var ownKeys = Object.keys(source); + li.classList.toggle('selected', selected); + li.classList.toggle('active', keepActive); - if (typeof Object.getOwnPropertySymbols === 'function') { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); + if (keepActive) { + this.selectpicker.view.currentActive = li; + this.activeIndex = index; } - ownKeys.forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } - - return target; - } + if (a) { + a.classList.toggle('selected', selected); + a.classList.toggle('active', keepActive); + a.setAttribute('aria-selected', selected); + } - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; - } + if (!keepActive) { + if (!activeIndexIsSet && selected && this.prevActiveIndex !== undefined) { + prevActiveIndex = this.selectpicker.main.map.newIndex[this.prevActiveIndex]; + prevActive = this.selectpicker.main.elements[prevActiveIndex]; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): util.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + prevActive.classList.remove('active'); + if (prevActive.firstChild) { + prevActive.firstChild.classList.remove('active'); + } + } + } + }, - var Util = function ($$$1) { /** - * ------------------------------------------------------------------------ - * Private TransitionEnd Helpers - * ------------------------------------------------------------------------ + * @param {number} index - the index of the option that is being disabled + * @param {boolean} disabled - true if the option is being disabled, false if being enabled */ - var TRANSITION_END = 'transitionend'; - var MAX_UID = 1000000; - var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - - function toType(obj) { - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); - } + setDisabled: function (index, disabled, liIndex, li) { + var a; - function getSpecialTransitionEndEvent() { - return { - bindType: TRANSITION_END, - delegateType: TRANSITION_END, - handle: function handle(event) { - if ($$$1(event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params - } + if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index]; + if (!li) li = this.selectpicker.main.elements[liIndex]; - return undefined; // eslint-disable-line no-undefined - } - }; - } + a = li.firstChild; - function transitionEndEmulator(duration) { - var _this = this; + li.classList.toggle(classNames.DISABLED, disabled); - var called = false; - $$$1(this).one(Util.TRANSITION_END, function () { - called = true; - }); - setTimeout(function () { - if (!called) { - Util.triggerTransitionEnd(_this); - } - }, duration); - return this; - } + if (a) { + if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled); - function setTransitionEndSupport() { - $$$1.fn.emulateTransitionEnd = transitionEndEmulator; - $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); - } - /** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ + a.setAttribute('aria-disabled', disabled); + if (disabled) { + a.setAttribute('tabindex', -1); + } else { + a.setAttribute('tabindex', 0); + } + } + }, - var Util = { - TRANSITION_END: 'bsTransitionEnd', - getUID: function getUID(prefix) { - do { - // eslint-disable-next-line no-bitwise - prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here - } while (document.getElementById(prefix)); + isDisabled: function () { + return this.$element[0].disabled; + }, - return prefix; - }, - getSelectorFromElement: function getSelectorFromElement(element) { - var selector = element.getAttribute('data-target'); + checkDisabled: function () { + var that = this; - if (!selector || selector === '#') { - selector = element.getAttribute('href') || ''; + if (this.isDisabled()) { + this.$newElement.addClass(classNames.DISABLED); + this.$button.addClass(classNames.DISABLED).attr('tabindex', -1).attr('aria-disabled', true); + } else { + if (this.$button.hasClass(classNames.DISABLED)) { + this.$newElement.removeClass(classNames.DISABLED); + this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false); } - try { - var $selector = $$$1(document).find(selector); - return $selector.length > 0 ? selector : null; - } catch (err) { - return null; + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { + this.$button.removeAttr('tabindex'); } - }, - getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } // Get transition-duration of the element - + } - var transitionDuration = $$$1(element).css('transition-duration'); - var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found + this.$button.click(function () { + return !that.isDisabled(); + }); + }, - if (!floatTransitionDuration) { - return 0; - } // If multiple durations are defined, take the first + togglePlaceholder: function () { + // much faster than calling $.val() + var element = this.$element[0], + selectedIndex = element.selectedIndex, + nothingSelected = selectedIndex === -1; + if (!nothingSelected && !element.options[selectedIndex].value) nothingSelected = true; - transitionDuration = transitionDuration.split(',')[0]; - return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER; - }, - reflow: function reflow(element) { - return element.offsetHeight; - }, - triggerTransitionEnd: function triggerTransitionEnd(element) { - $$$1(element).trigger(TRANSITION_END); - }, - // TODO: Remove in v5 - supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(TRANSITION_END); - }, - isElement: function isElement(obj) { - return (obj[0] || obj).nodeType; - }, - typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { - for (var property in configTypes) { - if (Object.prototype.hasOwnProperty.call(configTypes, property)) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && Util.isElement(value) ? 'element' : toType(value); + this.$button.toggleClass('bs-placeholder', nothingSelected); + }, - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); - } - } - } + tabIndex: function () { + if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && + (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); } - }; - setTransitionEndSupport(); - return Util; - }($); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): alert.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + this.$element.attr('tabindex', -98); + }, - var Alert = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'alert'; - var VERSION = '4.1.1'; - var DATA_KEY = 'bs.alert'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var Selector = { - DISMISS: '[data-dismiss="alert"]' - }; - var Event = { - CLOSE: "close" + EVENT_KEY, - CLOSED: "closed" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - ALERT: 'alert', - FADE: 'fade', - SHOW: 'show' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + clickListener: function () { + var that = this, + $document = $(document); - }; + $document.data('spaceSelect', false); - var Alert = - /*#__PURE__*/ - function () { - function Alert(element) { - this._element = element; - } // Getters + this.$button.on('keyup', function (e) { + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { + e.preventDefault(); + $document.data('spaceSelect', false); + } + }); + this.$newElement.on('show.bs.dropdown', function () { + if (version.major > 3 && !that.dropdown) { + that.dropdown = that.$button.data('bs.dropdown'); + that.dropdown._menu = that.$menu[0]; + } + }); - var _proto = Alert.prototype; + this.$button.on('click.bs.dropdown.data-api', function () { + if (!that.$newElement.hasClass(classNames.SHOW)) { + that.setSize(); + } + }); - // Public - _proto.close = function close(element) { - var rootElement = this._element; + function setFocus () { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$menuInner.focus(); + } + } - if (element) { - rootElement = this._getRootElement(element); + function checkPopperExists () { + if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) { + setFocus(); + } else { + requestAnimationFrame(checkPopperExists); } + } - var customEvent = this._triggerCloseEvent(rootElement); + this.$element.on('shown' + EVENT_KEY, function () { + if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) { + that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop; + } - if (customEvent.isDefaultPrevented()) { - return; + if (version.major > 3) { + requestAnimationFrame(checkPopperExists); + } else { + setFocus(); } + }); - this._removeElement(rootElement); - }; + this.$menuInner.on('click', 'li a', function (e, retainActive) { + var $this = $(this), + position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, + clickedIndex = that.selectpicker.current.map.originalIndex[$this.parent().index() + position0], + prevValue = getSelectValues(that.$element[0]), + prevIndex = that.$element.prop('selectedIndex'), + triggerChange = true; - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._element = null; - }; // Private + // Don't close on multi choice menu + if (that.multiple && that.options.maxOptions !== 1) { + e.stopPropagation(); + } + e.preventDefault(); - _proto._getRootElement = function _getRootElement(element) { - var selector = Util.getSelectorFromElement(element); - var parent = false; + // Don't run if the select is disabled + if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + $optgroupOptions = $optgroup.find('option'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; - if (selector) { - parent = $$$1(selector)[0]; - } + if (clickedIndex === that.activeIndex) retainActive = true; - if (!parent) { - parent = $$$1(element).closest("." + ClassName.ALERT)[0]; - } + if (!retainActive) { + that.prevActiveIndex = that.activeIndex; + that.activeIndex = undefined; + } - return parent; - }; + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - var closeEvent = $$$1.Event(Event.CLOSE); - $$$1(element).trigger(closeEvent); - return closeEvent; - }; + that.setSelected(clickedIndex, !state); + $this.blur(); - _proto._removeElement = function _removeElement(element) { - var _this = this; + if (maxOptions !== false || maxOptionsGrp !== false) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; - $$$1(element).removeClass(ClassName.SHOW); + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); - if (!$$$1(element).hasClass(ClassName.FADE)) { - this._destroyElement(element); + for (var i = 0; i < $options.length; i++) { + that.setSelected(i, false); + } - return; - } + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); - var transitionDuration = Util.getTransitionDurationFromElement(element); - $$$1(element).one(Util.TRANSITION_END, function (event) { - return _this._destroyElement(element, event); - }).emulateTransitionEnd(transitionDuration); - }; + for (var i = 0; i < $optgroupOptions.length; i++) { + var option = $optgroupOptions[i]; + that.setSelected($options.index(option), false); + } - _proto._destroyElement = function _destroyElement(element) { - $$$1(element).detach().trigger(Event.CLOSED).remove(); - }; // Static + that.setSelected(clickedIndex, true); + } else { + var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText, + maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('<div class="notify"></div>'); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + $option.prop('selected', false); - Alert._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $$$1(this); - var data = $element.data(DATA_KEY); + that.$menu.append($notify); - if (!data) { - data = new Alert(this); - $element.data(DATA_KEY, data); + if (maxOptions && maxReached) { + $notify.append($('<div>' + maxTxt + '</div>')); + triggerChange = false; + that.$element.trigger('maxReached' + EVENT_KEY); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('<div>' + maxTxtGrp + '</div>')); + triggerChange = false; + that.$element.trigger('maxReachedGrp' + EVENT_KEY); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } } - if (config === 'close') { - data[config](this); + if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); } - }); - }; - Alert._handleDismiss = function _handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); + // Trigger select 'change' + if (triggerChange) { + if ((prevValue != getSelectValues(that.$element[0]) && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed. + changedArguments = [clickedIndex, $option.prop('selected'), prevValue]; + that.$element + .triggerNative('change'); + } } + } + }); - alertInstance.close(this); - }; - }; + this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) { + if (e.currentTarget == this) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch && !$(e.target).hasClass('close')) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + } + }); - _createClass(Alert, null, [{ - key: "VERSION", - get: function get() { - return VERSION; + this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); } - }]); + }); - return Alert; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () { + that.$button.click(); + }); + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); - $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } - $$$1.fn[NAME] = Alert._jQueryInterface; - $$$1.fn[NAME].Constructor = Alert; + e.preventDefault(); + e.stopPropagation(); - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; + if ($(this).hasClass('bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + }); - return Alert; - }($); + this.$element.on({ + 'change': function () { + that.render(); + that.$element.trigger('changed' + EVENT_KEY, changedArguments); + changedArguments = null; + }, + 'focus': function () { + if (!that.options.mobile) that.$button.focus(); + } + }); + }, - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): button.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + liveSearchListener: function () { + var that = this, + noResults = document.createElement('li'); - var Button = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'button'; - var VERSION = '4.1.1'; - var DATA_KEY = 'bs.button'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var ClassName = { - ACTIVE: 'active', - BUTTON: 'btn', - FOCUS: 'focus' - }; - var Selector = { - DATA_TOGGLE_CARROT: '[data-toggle^="button"]', - DATA_TOGGLE: '[data-toggle="buttons"]', - INPUT: 'input', - ACTIVE: '.active', - BUTTON: '.btn' - }; - var Event = { - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, - FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY) - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + this.$button.on('click.bs.dropdown.data-api', function () { + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + } + }); - }; + this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) { + e.stopPropagation(); + }); - var Button = - /*#__PURE__*/ - function () { - function Button(element) { - this._element = element; - } // Getters + this.$searchbox.on('input propertychange', function () { + var searchValue = that.$searchbox.val(); + that.selectpicker.search.map.newIndex = {}; + that.selectpicker.search.map.originalIndex = {}; + that.selectpicker.search.elements = []; + that.selectpicker.search.data = []; - var _proto = Button.prototype; + if (searchValue) { + var i, + searchMatch = [], + q = searchValue.toUpperCase(), + cache = {}, + cacheArr = [], + searchStyle = that._searchStyle(), + normalizeSearch = that.options.liveSearchNormalize; - // Public - _proto.toggle = function toggle() { - var triggerChangeEvent = true; - var addAriaPressed = true; - var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; + if (normalizeSearch) q = normalizeToBase(q); - if (rootElement) { - var input = $$$1(this._element).find(Selector.INPUT)[0]; + that._$lisSelected = that.$menuInner.find('.selected'); - if (input) { - if (input.type === 'radio') { - if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { - triggerChangeEvent = false; - } else { - var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; + for (var i = 0; i < that.selectpicker.main.data.length; i++) { + var li = that.selectpicker.main.data[i]; - if (activeElement) { - $$$1(activeElement).removeClass(ClassName.ACTIVE); - } - } + if (!cache[i]) { + cache[i] = stringSearch(li, q, searchStyle, normalizeSearch); } - if (triggerChangeEvent) { - if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { - return; + if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) { + if (li.headerIndex > 0) { + cache[li.headerIndex - 1] = true; + cacheArr.push(li.headerIndex - 1); } - input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); - $$$1(input).trigger('change'); + cache[li.headerIndex] = true; + cacheArr.push(li.headerIndex); + + cache[li.lastIndex + 1] = true; } - input.focus(); - addAriaPressed = false; + if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i); } - } - - if (addAriaPressed) { - this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); - } - - if (triggerChangeEvent) { - $$$1(this._element).toggleClass(ClassName.ACTIVE); - } - }; - - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._element = null; - }; // Static + for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) { + var index = cacheArr[i], + prevIndex = cacheArr[i - 1], + li = that.selectpicker.main.data[index], + liPrev = that.selectpicker.main.data[prevIndex]; - Button._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) { + that.selectpicker.search.data.push(li); + searchMatch.push(that.selectpicker.main.elements[index]); - if (!data) { - data = new Button(this); - $$$1(this).data(DATA_KEY, data); + if (li.hasOwnProperty('originalIndex')) { + that.selectpicker.search.map.newIndex[li.originalIndex] = searchMatch.length - 1; + that.selectpicker.search.map.originalIndex[searchMatch.length - 1] = li.originalIndex; + } + } } - if (config === 'toggle') { - data[config](); - } - }); - }; + that.activeIndex = undefined; + that.noScroll = true; + that.$menuInner.scrollTop(0); + that.selectpicker.search.elements = searchMatch; + that.createView(true); - _createClass(Button, null, [{ - key: "VERSION", - get: function get() { - return VERSION; + if (!searchMatch.length) { + noResults.className = 'no-results'; + noResults.innerHTML = that.options.noneResultsText.replace('{0}', '"' + htmlEscape(searchValue) + '"'); + that.$menuInner[0].firstChild.appendChild(noResults); + } + } else { + that.$menuInner.scrollTop(0); + that.createView(false); } - }]); - - return Button; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + }); + }, + _searchStyle: function () { + return this.options.liveSearchStyle || 'contains'; + }, - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { - event.preventDefault(); - var button = event.target; + val: function (value) { + if (typeof value !== 'undefined') { + this.$element + .val(value) + .triggerNative('change'); - if (!$$$1(button).hasClass(ClassName.BUTTON)) { - button = $$$1(button).closest(Selector.BUTTON); + return this.$element; + } else { + return this.$element.val(); } + }, - Button._jQueryInterface.call($$$1(button), 'toggle'); - }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { - var button = $$$1(event.target).closest(Selector.BUTTON)[0]; - $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $$$1.fn[NAME] = Button._jQueryInterface; - $$$1.fn[NAME].Constructor = Button; + changeAll: function (status) { + if (!this.multiple) return; + if (typeof status === 'undefined') status = true; - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Button._jQueryInterface; - }; + var $selectOptions = this.$element.find('option'), + previousSelected = 0, + currentSelected = 0, + prevValue = getSelectValues(this.$element[0]); - return Button; - }($); + this.$element.addClass('bs-select-hidden'); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + for (var i = 0; i < this.selectpicker.current.elements.length; i++) { + var liData = this.selectpicker.current.data[i], + index = this.selectpicker.current.map.originalIndex[i], // faster than $(li).data('originalIndex') + option = $selectOptions[index]; - var Carousel = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'carousel'; - var VERSION = '4.1.1'; - var DATA_KEY = 'bs.carousel'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + if (option && !option.disabled && liData.type !== 'divider') { + if (option.selected) previousSelected++; + option.selected = status; + if (option.selected) currentSelected++; + } + } - var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + this.$element.removeClass('bs-select-hidden'); - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + if (previousSelected === currentSelected) return; - var Default = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true - }; - var DefaultType = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean' - }; - var Direction = { - NEXT: 'next', - PREV: 'prev', - LEFT: 'left', - RIGHT: 'right' - }; - var Event = { - SLIDE: "slide" + EVENT_KEY, - SLID: "slid" + EVENT_KEY, - KEYDOWN: "keydown" + EVENT_KEY, - MOUSEENTER: "mouseenter" + EVENT_KEY, - MOUSELEAVE: "mouseleave" + EVENT_KEY, - TOUCHEND: "touchend" + EVENT_KEY, - LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - CAROUSEL: 'carousel', - ACTIVE: 'active', - SLIDE: 'slide', - RIGHT: 'carousel-item-right', - LEFT: 'carousel-item-left', - NEXT: 'carousel-item-next', - PREV: 'carousel-item-prev', - ITEM: 'carousel-item' - }; - var Selector = { - ACTIVE: '.active', - ACTIVE_ITEM: '.active.carousel-item', - ITEM: '.carousel-item', - NEXT_PREV: '.carousel-item-next, .carousel-item-prev', - INDICATORS: '.carousel-indicators', - DATA_SLIDE: '[data-slide], [data-slide-to]', - DATA_RIDE: '[data-ride="carousel"]' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + this.setOptionStatus(); - }; + this.togglePlaceholder(); - var Carousel = - /*#__PURE__*/ - function () { - function Carousel(element, config) { - this._items = null; - this._interval = null; - this._activeElement = null; - this._isPaused = false; - this._isSliding = false; - this.touchTimeout = null; - this._config = this._getConfig(config); - this._element = $$$1(element)[0]; - this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; + changedArguments = [null, null, prevValue]; - this._addEventListeners(); - } // Getters + this.$element + .triggerNative('change'); + }, + selectAll: function () { + return this.changeAll(true); + }, - var _proto = Carousel.prototype; + deselectAll: function () { + return this.changeAll(false); + }, - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(Direction.NEXT); - } - }; + toggle: function (e) { + e = e || window.event; - _proto.nextWhenVisible = function nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') { - this.next(); - } - }; + if (e) e.stopPropagation(); - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(Direction.PREV); - } - }; + this.$button.trigger('click.bs.dropdown.data-api'); + }, - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - - if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) { - Util.triggerTransitionEnd(this._element); - this.cycle(true); - } - - clearInterval(this._interval); - this._interval = null; - }; + keydown: function (e) { + var $this = $(this), + isToggle = $this.hasClass('dropdown-toggle'), + $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU), + that = $parent.data('this'), + $items = that.findLis(), + index, + isActive, + liActive, + activeLi, + offset, + updateScroll = false, + downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab, + isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab, + scrollTop = that.$menuInner[0].scrollTop, + isVirtual = that.isVirtual(), + position0 = isVirtual === true ? that.selectpicker.view.position0 : 0; - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; - } + isActive = that.$newElement.hasClass(classNames.SHOW); - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } + if ( + !isActive && + ( + isArrowKey || + (e.which >= 48 && e.which <= 57) || + (e.which >= 96 && e.which <= 105) || + (e.which >= 65 && e.which <= 90) + ) + ) { + that.$button.trigger('click.bs.dropdown.data-api'); + } - if (this._config.interval && !this._isPaused) { - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; + if (e.which === keyCodes.ESCAPE && isActive) { + e.preventDefault(); + that.$button.trigger('click.bs.dropdown.data-api').focus(); + } - _proto.to = function to(index) { - var _this = this; + if (isArrowKey) { // if up or down + if (!$items.length) return; - this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + // $items.index/.filter is too slow with a large list and no virtual scroll + index = isVirtual === true ? $items.index($items.filter('.active')) : that.selectpicker.current.map.newIndex[that.activeIndex]; - var activeIndex = this._getItemIndex(this._activeElement); + if (index === undefined) index = -1; - if (index > this._items.length - 1 || index < 0) { - return; + if (index !== -1) { + liActive = that.selectpicker.current.elements[index + position0]; + liActive.classList.remove('active'); + if (liActive.firstChild) liActive.firstChild.classList.remove('active'); } - if (this._isSliding) { - $$$1(this._element).one(Event.SLID, function () { - return _this.to(index); - }); - return; - } + if (e.which === keyCodes.ARROW_UP) { // up + if (index !== -1) index--; + if (index + position0 < 0) index += $items.length; - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; + if (!that.selectpicker.view.canHighlight[index + position0]) { + index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0; + if (index === -1) index = $items.length - 1; + } + } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down + index++; + if (index + position0 >= that.selectpicker.view.canHighlight.length) index = 0; + + if (!that.selectpicker.view.canHighlight[index + position0]) { + index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true); + } } - var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; + e.preventDefault(); - this._slide(direction, this._items[index]); - }; + var liActiveIndex = position0 + index; - _proto.dispose = function dispose() { - $$$1(this._element).off(EVENT_KEY); - $$$1.removeData(this._element, DATA_KEY); - this._items = null; - this._config = null; - this._element = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - }; // Private + if (e.which === keyCodes.ARROW_UP) { // up + // scroll to bottom and highlight last option + if (position0 === 0 && index === $items.length - 1) { + that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight; + liActiveIndex = that.selectpicker.current.elements.length - 1; + } else { + activeLi = that.selectpicker.current.data[liActiveIndex]; + offset = activeLi.position - activeLi.height; - _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, Default, config); - Util.typeCheckConfig(NAME, config, DefaultType); - return config; - }; + updateScroll = offset < scrollTop; + } + } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down + // scroll to top and highlight first option + if (index === 0) { + that.$menuInner[0].scrollTop = 0; - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; + liActiveIndex = 0; + } else { + activeLi = that.selectpicker.current.data[liActiveIndex]; + offset = activeLi.position - that.sizeInfo.menuInnerHeight; - if (this._config.keyboard) { - $$$1(this._element).on(Event.KEYDOWN, function (event) { - return _this2._keydown(event); - }); + updateScroll = offset > scrollTop; + } } - if (this._config.pause === 'hover') { - $$$1(this._element).on(Event.MOUSEENTER, function (event) { - return _this2.pause(event); - }).on(Event.MOUSELEAVE, function (event) { - return _this2.cycle(event); - }); - - if ('ontouchstart' in document.documentElement) { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - $$$1(this._element).on(Event.TOUCHEND, function () { - _this2.pause(); - - if (_this2.touchTimeout) { - clearTimeout(_this2.touchTimeout); - } + liActive = that.selectpicker.current.elements[liActiveIndex]; - _this2.touchTimeout = setTimeout(function (event) { - return _this2.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); - }); - } + if (liActive) { + liActive.classList.add('active'); + if (liActive.firstChild) liActive.firstChild.classList.add('active'); } - }; - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } + that.activeIndex = that.selectpicker.current.map.originalIndex[liActiveIndex]; - switch (event.which) { - case ARROW_LEFT_KEYCODE: - event.preventDefault(); - this.prev(); - break; + that.selectpicker.view.currentActive = liActive; - case ARROW_RIGHT_KEYCODE: - event.preventDefault(); - this.next(); - break; + if (updateScroll) that.$menuInner[0].scrollTop = offset; - default: + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + $this.focus(); } - }; + } else if ( + (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) || + (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory) + ) { + var searchMatch, + matches = [], + keyHistory; - _proto._getItemIndex = function _getItemIndex(element) { - this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); - return this._items.indexOf(element); - }; + e.preventDefault(); - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === Direction.NEXT; - var isPrevDirection = direction === Direction.PREV; + that.selectpicker.keydown.keyHistory += keyCodeMap[e.which]; - var activeIndex = this._getItemIndex(activeElement); + if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel); + that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start(); - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + keyHistory = that.selectpicker.keydown.keyHistory; - if (isGoingToWrap && !this._config.wrap) { - return activeElement; + // if all letters are the same, set keyHistory to just the first character when searching + if (/^(.)\1+$/.test(keyHistory)) { + keyHistory = keyHistory.charAt(0); } - var delta = direction === Direction.PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; - - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - - var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); - - var slideEvent = $$$1.Event(Event.SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - $$$1(this._element).trigger(slideEvent); - return slideEvent; - }; - - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + // find matches + for (var i = 0; i < that.selectpicker.current.data.length; i++) { + var li = that.selectpicker.current.data[i], + hasMatch; - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + hasMatch = stringSearch(li, keyHistory, 'startsWith', true); - if (nextIndicator) { - $$$1(nextIndicator).addClass(ClassName.ACTIVE); + if (hasMatch && that.selectpicker.view.canHighlight[i]) { + li.index = i; + matches.push(li.originalIndex); } } - }; - _proto._slide = function _slide(direction, element) { - var _this3 = this; + if (matches.length) { + var matchIndex = 0; - var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; + $items.removeClass('active').find('a').removeClass('active'); - var activeElementIndex = this._getItemIndex(activeElement); + // either only one key has been pressed or they are all the same key + if (keyHistory.length === 1) { + matchIndex = matches.indexOf(that.activeIndex); - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + if (matchIndex === -1 || matchIndex === matches.length - 1) { + matchIndex = 0; + } else { + matchIndex++; + } + } - var nextElementIndex = this._getItemIndex(nextElement); + searchMatch = that.selectpicker.current.map.newIndex[matches[matchIndex]]; - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; + activeLi = that.selectpicker.current.data[searchMatch]; - if (direction === Direction.NEXT) { - directionalClassName = ClassName.LEFT; - orderClassName = ClassName.NEXT; - eventDirectionName = Direction.LEFT; - } else { - directionalClassName = ClassName.RIGHT; - orderClassName = ClassName.PREV; - eventDirectionName = Direction.RIGHT; - } + if (scrollTop - activeLi.position > 0) { + offset = activeLi.position - activeLi.height; + updateScroll = true; + } else { + offset = activeLi.position - that.sizeInfo.menuInnerHeight; + // if the option is already visible at the current scroll position, just keep it the same + updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight; + } - if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { - this._isSliding = false; - return; - } + liActive = that.selectpicker.current.elements[searchMatch]; + liActive.classList.add('active'); + if (liActive.firstChild) liActive.firstChild.classList.add('active'); + that.activeIndex = matches[matchIndex]; - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + liActive.firstChild.focus(); - if (slideEvent.isDefaultPrevented()) { - return; - } + if (updateScroll) that.$menuInner[0].scrollTop = offset; - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; + $this.focus(); } + } - this._isSliding = true; + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ( + isActive && + ( + (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) || + e.which === keyCodes.ENTER || + (e.which === keyCodes.TAB && that.options.selectOnTab) + ) + ) { + if (e.which !== keyCodes.SPACE) e.preventDefault(); - if (isCycling) { - this.pause(); + if (!that.options.liveSearch || e.which !== keyCodes.SPACE) { + that.$menuInner.find('.active a').trigger('click', true); // retain active class + $this.focus(); + + if (!that.options.liveSearch) { + // Prevent screen from scrolling if the user hits the spacebar + e.preventDefault(); + // Fixes spacebar selection of dropdown items in FF & IE + $(document).data('spaceSelect', true); + } } + } + }, - this._setActiveIndicatorElement(nextElement); + mobile: function () { + this.$element.addClass('mobile-device'); + }, - var slidEvent = $$$1.Event(Event.SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); + refresh: function () { + // update options if data attributes have been changed + var config = $.extend({}, this.options, this.$element.data()); + this.options = config; - if ($$$1(this._element).hasClass(ClassName.SLIDE)) { - $$$1(nextElement).addClass(orderClassName); - Util.reflow(nextElement); - $$$1(activeElement).addClass(directionalClassName); - $$$1(nextElement).addClass(directionalClassName); - var transitionDuration = Util.getTransitionDurationFromElement(activeElement); - $$$1(activeElement).one(Util.TRANSITION_END, function () { - $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); - $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); - _this3._isSliding = false; - setTimeout(function () { - return $$$1(_this3._element).trigger(slidEvent); - }, 0); - }).emulateTransitionEnd(transitionDuration); - } else { - $$$1(activeElement).removeClass(ClassName.ACTIVE); - $$$1(nextElement).addClass(ClassName.ACTIVE); - this._isSliding = false; - $$$1(this._element).trigger(slidEvent); - } + this.selectpicker.main.map.newIndex = {}; + this.selectpicker.main.map.originalIndex = {}; + this.createLi(); + this.checkDisabled(); + this.render(); + this.setStyle(); + this.setWidth(); - if (isCycling) { - this.cycle(); - } - }; // Static + this.setSize(true); + this.$element.trigger('refreshed' + EVENT_KEY); + }, - Carousel._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + hide: function () { + this.$newElement.hide(); + }, - var _config = _objectSpread({}, Default, $$$1(this).data()); + show: function () { + this.$newElement.show(); + }, - if (typeof config === 'object') { - _config = _objectSpread({}, _config, config); - } + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + }, - var action = typeof config === 'string' ? config : _config.slide; + destroy: function () { + this.$newElement.before(this.$element).remove(); - if (!data) { - data = new Carousel(this, _config); - $$$1(this).data(DATA_KEY, data); - } + if (this.$bsContainer) { + this.$bsContainer.remove(); + } else { + this.$menu.remove(); + } - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } + this.$element + .off(EVENT_KEY) + .removeData('selectpicker') + .removeClass('bs-select-hidden selectpicker'); - data[action](); - } else if (_config.interval) { - data.pause(); - data.cycle(); - } - }); - }; + $(window).off(EVENT_KEY + '.' + this.selectId); + } + }; - Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { - var selector = Util.getSelectorFromElement(this); + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin (option) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost/corrupted in android 2.3 and IE9 #715 #775 + var _option = option; - if (!selector) { - return; - } + [].shift.apply(args); - var target = $$$1(selector)[0]; + // if the version was not set successfully + if (!version.success) { + // try to retreive it again + try { + version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); + } catch (err) { + // fall back to use BootstrapVersion + version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.'); + } - if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { - return; - } + version.major = version.full[0]; + version.success = true; - var config = _objectSpread({}, $$$1(target).data(), $$$1(this).data()); + if (version.major === '4') { + classNames.DIVIDER = 'dropdown-divider'; + classNames.SHOW = 'show'; + classNames.BUTTONCLASS = 'btn-light'; + Selectpicker.DEFAULTS.style = classNames.BUTTONCLASS = 'btn-light'; + classNames.POPOVERHEADER = 'popover-header'; + } + } - var slideIndex = this.getAttribute('data-slide-to'); + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof _option == 'object' && _option; - if (slideIndex) { - config.interval = false; + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template); + $this.data('selectpicker', (data = new Selectpicker(this, config))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } } - Carousel._jQueryInterface.call($$$1(target), config); - - if (slideIndex) { - $$$1(target).data(DATA_KEY).to(slideIndex); + if (typeof _option == 'string') { + if (data[_option] instanceof Function) { + value = data[_option].apply(data, args); + } else { + value = data.options[_option]; + } } + } + }); - event.preventDefault(); - }; + if (typeof value !== 'undefined') { + // noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } - _createClass(Carousel, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; - return Carousel; - }(); + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .off('keydown.bs.dropdown.data-api') + .on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load' + EVENT_KEY + '.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); + + +})); + + +/***/ }), + +/***/ "./node_modules/bootstrap-v4-rtl/dist/js/bootstrap.js": +/*!************************************************************!*\ + !*** ./node_modules/bootstrap-v4-rtl/dist/js/bootstrap.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/*! + * Bootstrap v4.1.1-0 (https://github.com/MahdiMajidzadeh/bootstrap-v4-rtl) + * Copyright 2011-2018 Mahdi Majidzadeh + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +(function (global, factory) { + true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")) : + undefined; +}(this, (function (exports,$,Popper) { 'use strict'; + + $ = $ && $.hasOwnProperty('default') ? $['default'] : $; + Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper; + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } + + return target; + } + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Util = function ($$$1) { /** * ------------------------------------------------------------------------ - * Data Api implementation + * Private TransitionEnd Helpers * ------------------------------------------------------------------------ */ + var TRANSITION_END = 'transitionend'; + var MAX_UID = 1000000; + var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); + } - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); - $$$1(window).on(Event.LOAD_DATA_API, function () { - $$$1(Selector.DATA_RIDE).each(function () { - var $carousel = $$$1(this); + function getSpecialTransitionEndEvent() { + return { + bindType: TRANSITION_END, + delegateType: TRANSITION_END, + handle: function handle(event) { + if ($$$1(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } - Carousel._jQueryInterface.call($carousel, $carousel.data()); + return undefined; // eslint-disable-line no-undefined + } + }; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + $$$1(this).one(Util.TRANSITION_END, function () { + called = true; }); - }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + return this; + } + + function setTransitionEndSupport() { + $$$1.fn.emulateTransitionEnd = transitionEndEmulator; + $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- */ - $$$1.fn[NAME] = Carousel._jQueryInterface; - $$$1.fn[NAME].Constructor = Carousel; - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Carousel._jQueryInterface; - }; + var Util = { + TRANSITION_END: 'bsTransitionEnd', + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); - return Carousel; + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector || selector === '#') { + selector = element.getAttribute('href') || ''; + } + + try { + var $selector = $$$1(document).find(selector); + return $selector.length > 0 ? selector : null; + } catch (err) { + return null; + } + }, + getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { + if (!element) { + return 0; + } // Get transition-duration of the element + + + var transitionDuration = $$$1(element).css('transition-duration'); + var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $$$1(element).trigger(TRANSITION_END); + }, + // TODO: Remove in v5 + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(TRANSITION_END); + }, + isElement: function isElement(obj) { + return (obj[0] || obj).nodeType; + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (Object.prototype.hasOwnProperty.call(configTypes, property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && Util.isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + } + } + } + } + }; + setTransitionEndSupport(); + return Util; }($); /** * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): collapse.js + * Bootstrap (v4.1.1): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - var Collapse = function ($$$1) { + var Alert = function ($$$1) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - var NAME = 'collapse'; + var NAME = 'alert'; var VERSION = '4.1.1'; - var DATA_KEY = 'bs.collapse'; + var DATA_KEY = 'bs.alert'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var Default = { - toggle: true, - parent: '' - }; - var DefaultType = { - toggle: 'boolean', - parent: '(string|element)' + var Selector = { + DISMISS: '[data-dismiss="alert"]' }; var Event = { - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, + CLOSE: "close" + EVENT_KEY, + CLOSED: "closed" + EVENT_KEY, CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY }; var ClassName = { - SHOW: 'show', - COLLAPSE: 'collapse', - COLLAPSING: 'collapsing', - COLLAPSED: 'collapsed' - }; - var Dimension = { - WIDTH: 'width', - HEIGHT: 'height' - }; - var Selector = { - ACTIVES: '.show, .collapsing', - DATA_TOGGLE: '[data-toggle="collapse"]' + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' /** * ------------------------------------------------------------------------ * Class Definition @@ -5397,270 +5870,268 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }; - var Collapse = + var Alert = /*#__PURE__*/ function () { - function Collapse(element, config) { - this._isTransitioning = false; + function Alert(element) { this._element = element; - this._config = this._getConfig(config); - this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); - var tabToggles = $$$1(Selector.DATA_TOGGLE); - - for (var i = 0; i < tabToggles.length; i++) { - var elem = tabToggles[i]; - var selector = Util.getSelectorFromElement(elem); - - if (selector !== null && $$$1(selector).filter(element).length > 0) { - this._selector = selector; - - this._triggerArray.push(elem); - } - } - - this._parent = this._config.parent ? this._getParent() : null; - - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray); - } - - if (this._config.toggle) { - this.toggle(); - } } // Getters - var _proto = Collapse.prototype; + var _proto = Alert.prototype; // Public - _proto.toggle = function toggle() { - if ($$$1(this._element).hasClass(ClassName.SHOW)) { - this.hide(); - } else { - this.show(); - } - }; - - _proto.show = function show() { - var _this = this; - - if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); - - if (actives.length === 0) { - actives = null; - } - } - - if (actives) { - activesData = $$$1(actives).not(this._selector).data(DATA_KEY); + _proto.close = function close(element) { + var rootElement = this._element; - if (activesData && activesData._isTransitioning) { - return; - } + if (element) { + rootElement = this._getRootElement(element); } - var startEvent = $$$1.Event(Event.SHOW); - $$$1(this._element).trigger(startEvent); + var customEvent = this._triggerCloseEvent(rootElement); - if (startEvent.isDefaultPrevented()) { + if (customEvent.isDefaultPrevented()) { return; } - if (actives) { - Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide'); + this._removeElement(rootElement); + }; - if (!activesData) { - $$$1(actives).data(DATA_KEY, null); - } - } + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Private - var dimension = this._getDimension(); - $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); - this._element.style[dimension] = 0; + _proto._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; - if (this._triggerArray.length > 0) { - $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + if (selector) { + parent = $$$1(selector)[0]; } - this.setTransitioning(true); - - var complete = function complete() { - $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); - _this._element.style[dimension] = ''; - - _this.setTransitioning(false); + if (!parent) { + parent = $$$1(element).closest("." + ClassName.ALERT)[0]; + } - $$$1(_this._element).trigger(Event.SHOWN); - }; + return parent; + }; - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; + _proto._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $$$1.Event(Event.CLOSE); + $$$1(element).trigger(closeEvent); + return closeEvent; }; - _proto.hide = function hide() { - var _this2 = this; + _proto._removeElement = function _removeElement(element) { + var _this = this; - if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { - return; - } + $$$1(element).removeClass(ClassName.SHOW); - var startEvent = $$$1.Event(Event.HIDE); - $$$1(this._element).trigger(startEvent); + if (!$$$1(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); - if (startEvent.isDefaultPrevented()) { return; } - var dimension = this._getDimension(); + var transitionDuration = Util.getTransitionDurationFromElement(element); + $$$1(element).one(Util.TRANSITION_END, function (event) { + return _this._destroyElement(element, event); + }).emulateTransitionEnd(transitionDuration); + }; - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - Util.reflow(this._element); - $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + _proto._destroyElement = function _destroyElement(element) { + $$$1(element).detach().trigger(Event.CLOSED).remove(); + }; // Static - if (this._triggerArray.length > 0) { - for (var i = 0; i < this._triggerArray.length; i++) { - var trigger = this._triggerArray[i]; - var selector = Util.getSelectorFromElement(trigger); - if (selector !== null) { - var $elem = $$$1(selector); + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $$$1(this); + var data = $element.data(DATA_KEY); - if (!$elem.hasClass(ClassName.SHOW)) { - $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); - } - } + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); } - } - this.setTransitioning(true); + if (config === 'close') { + data[config](this); + } + }); + }; - var complete = function complete() { - _this2.setTransitioning(false); + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } - $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + alertInstance.close(this); }; - - this._element.style[dimension] = ''; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - }; - - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; }; - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._config = null; - this._parent = null; - this._element = null; - this._triggerArray = null; - this._isTransitioning = null; - }; // Private + _createClass(Alert, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }]); + return Alert; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, Default, config); - config.toggle = Boolean(config.toggle); // Coerce string values - Util.typeCheckConfig(NAME, config, DefaultType); - return config; - }; + $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - _proto._getDimension = function _getDimension() { - var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); - return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; - }; + $$$1.fn[NAME] = Alert._jQueryInterface; + $$$1.fn[NAME].Constructor = Alert; - _proto._getParent = function _getParent() { - var _this3 = this; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; - var parent = null; + return Alert; + }($); - if (Util.isElement(this._config.parent)) { - parent = this._config.parent; // It's a jQuery object + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - if (typeof this._config.parent.jquery !== 'undefined') { - parent = this._config.parent[0]; - } - } else { - parent = $$$1(this._config.parent)[0]; - } + var Button = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'button'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + var Event = { + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY) + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ - var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; - $$$1(parent).find(selector).each(function (i, element) { - _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); - }); - return parent; - }; + }; - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - if (element) { - var isOpen = $$$1(element).hasClass(ClassName.SHOW); + var Button = + /*#__PURE__*/ + function () { + function Button(element) { + this._element = element; + } // Getters - if (triggerArray.length > 0) { - $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + + var _proto = Button.prototype; + + // Public + _proto.toggle = function toggle() { + var triggerChangeEvent = true; + var addAriaPressed = true; + var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $$$1(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { + return; + } + + input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); + $$$1(input).trigger('change'); + } + + input.focus(); + addAriaPressed = false; } } - }; // Static + if (addAriaPressed) { + this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); + } - Collapse._getTargetFromElement = function _getTargetFromElement(element) { - var selector = Util.getSelectorFromElement(element); - return selector ? $$$1(selector)[0] : null; + if (triggerChangeEvent) { + $$$1(this._element).toggleClass(ClassName.ACTIVE); + } }; - Collapse._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $this = $$$1(this); - var data = $this.data(DATA_KEY); + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Static - var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {}); - if (!data && _config.toggle && /show|hide/.test(config)) { - _config.toggle = false; - } + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); if (!data) { - data = new Collapse(this, _config); - $this.data(DATA_KEY, data); + data = new Button(this); + $$$1(this).data(DATA_KEY, data); } - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - + if (config === 'toggle') { data[config](); } }); }; - _createClass(Collapse, null, [{ + _createClass(Button, null, [{ key: "VERSION", get: function get() { return VERSION; } - }, { - key: "Default", - get: function get() { - return Default; - } }]); - return Collapse; + return Button; }(); /** * ------------------------------------------------------------------------ @@ -5669,21 +6140,18 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! */ - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - // preventDefault only for <a> elements (which change the URL) not inside the collapsible element - if (event.currentTarget.tagName === 'A') { - event.preventDefault(); - } + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; - var $trigger = $$$1(this); - var selector = Util.getSelectorFromElement(this); - $$$1(selector).each(function () { - var $target = $$$1(this); - var data = $target.data(DATA_KEY); - var config = data ? 'toggle' : $trigger.data(); + if (!$$$1(button).hasClass(ClassName.BUTTON)) { + button = $$$1(button).closest(Selector.BUTTON); + } - Collapse._jQueryInterface.call($target, config); - }); + Button._jQueryInterface.call($$$1(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $$$1(event.target).closest(Selector.BUTTON)[0]; + $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); }); /** * ------------------------------------------------------------------------ @@ -5691,99 +6159,90 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! * ------------------------------------------------------------------------ */ - $$$1.fn[NAME] = Collapse._jQueryInterface; - $$$1.fn[NAME].Constructor = Collapse; + $$$1.fn[NAME] = Button._jQueryInterface; + $$$1.fn[NAME].Constructor = Button; $$$1.fn[NAME].noConflict = function () { $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Collapse._jQueryInterface; + return Button._jQueryInterface; }; - return Collapse; + return Button; }($); /** * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): dropdown.js + * Bootstrap (v4.1.1): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - var Dropdown = function ($$$1) { + var Carousel = function ($$$1) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - var NAME = 'dropdown'; + var NAME = 'carousel'; var VERSION = '4.1.1'; - var DATA_KEY = 'bs.dropdown'; + var DATA_KEY = 'bs.carousel'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - - var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key - - var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key - - var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key - var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key - var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); - var Event = { - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, - SHOW: "show" + EVENT_KEY, - SHOWN: "shown" + EVENT_KEY, - CLICK: "click" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, - KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, - KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true }; - var ClassName = { - DISABLED: 'disabled', - SHOW: 'show', - DROPUP: 'dropup', - DROPRIGHT: 'dropright', - DROPLEFT: 'dropleft', - MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left', - POSITION_STATIC: 'position-static' + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' }; - var Selector = { - DATA_TOGGLE: '[data-toggle="dropdown"]', - FORM_CHILD: '.dropdown form', - MENU: '.dropdown-menu', - NAVBAR_NAV: '.navbar-nav', - VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' }; - var AttachmentMap = { - TOP: 'top-start', - TOPEND: 'top-end', - BOTTOM: 'bottom-start', - BOTTOMEND: 'bottom-end', - RIGHT: 'right-start', - RIGHTEND: 'right-end', - LEFT: 'left-start', - LEFTEND: 'left-end' + var Event = { + SLIDE: "slide" + EVENT_KEY, + SLID: "slid" + EVENT_KEY, + KEYDOWN: "keydown" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY, + TOUCHEND: "touchend" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY }; - var Default = { - offset: 0, - flip: true, - boundary: 'scrollParent', - reference: 'toggle', - display: 'dynamic' + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item' }; - var DefaultType = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)', - reference: '(string|element)', - display: 'string' + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' /** * ------------------------------------------------------------------------ * Class Definition @@ -5792,348 +6251,381 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }; - var Dropdown = + var Carousel = /*#__PURE__*/ function () { - function Dropdown(element, config) { - this._element = element; - this._popper = null; + function Carousel(element, config) { + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; this._config = this._getConfig(config); - this._menu = this._getMenuElement(); - this._inNavbar = this._detectNavbar(); + this._element = $$$1(element)[0]; + this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; this._addEventListeners(); } // Getters - var _proto = Dropdown.prototype; + var _proto = Carousel.prototype; // Public - _proto.toggle = function toggle() { - if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { - return; + _proto.next = function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); } + }; - var parent = Dropdown._getParentFromElement(this._element); - - var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); - - Dropdown._clearMenus(); - - if (isActive) { - return; + _proto.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') { + this.next(); } + }; - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = $$$1.Event(Event.SHOW, relatedTarget); - $$$1(parent).trigger(showEvent); + _proto.prev = function prev() { + if (!this._isSliding) { + this._slide(Direction.PREV); + } + }; - if (showEvent.isDefaultPrevented()) { - return; - } // Disable totally Popper.js for Dropdown in Navbar + _proto.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } - if (!this._inNavbar) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); - } + clearInterval(this._interval); + this._interval = null; + }; - var referenceElement = this._element; + _proto.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (Util.isElement(this._config.reference)) { - referenceElement = this._config.reference; // Check if it's jQuery element + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } - if (typeof this._config.reference.jquery !== 'undefined') { - referenceElement = this._config.reference[0]; - } - } // If boundary is not `scrollParent`, then set position to `static` - // to allow the menu to "escape" the scroll parent's boundaries - // https://github.com/twbs/bootstrap/issues/24251 + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + _proto.to = function to(index) { + var _this = this; - if (this._config.boundary !== 'scrollParent') { - $$$1(parent).addClass(ClassName.POSITION_STATIC); - } + this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; - this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + var activeIndex = this._getItemIndex(this._activeElement); + if (index > this._items.length - 1 || index < 0) { + return; + } - if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) { - $$$1(document.body).children().on('mouseover', null, $$$1.noop); + if (this._isSliding) { + $$$1(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; } - this._element.focus(); + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } - this._element.setAttribute('aria-expanded', true); + var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; - $$$1(this._menu).toggleClass(ClassName.SHOW); - $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); + this._slide(direction, this._items[index]); }; _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); $$$1(this._element).off(EVENT_KEY); + $$$1.removeData(this._element, DATA_KEY); + this._items = null; + this._config = null; this._element = null; - this._menu = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; // Private - if (this._popper !== null) { - this._popper.destroy(); - this._popper = null; - } + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; }; - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); + _proto._addEventListeners = function _addEventListeners() { + var _this2 = this; - if (this._popper !== null) { - this._popper.scheduleUpdate(); + if (this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN, function (event) { + return _this2._keydown(event); + }); } - }; // Private + if (this._config.pause === 'hover') { + $$$1(this._element).on(Event.MOUSEENTER, function (event) { + return _this2.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this2.cycle(event); + }); - _proto._addEventListeners = function _addEventListeners() { - var _this = this; - - $$$1(this._element).on(Event.CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); + if ('ontouchstart' in document.documentElement) { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + $$$1(this._element).on(Event.TOUCHEND, function () { + _this2.pause(); - _this.toggle(); - }); - }; + if (_this2.touchTimeout) { + clearTimeout(_this2.touchTimeout); + } - _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, this.constructor.Default, $$$1(this._element).data(), config); - Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); - return config; + _this2.touchTimeout = setTimeout(function (event) { + return _this2.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); + }); + } + } }; - _proto._getMenuElement = function _getMenuElement() { - if (!this._menu) { - var parent = Dropdown._getParentFromElement(this._element); - - this._menu = $$$1(parent).find(Selector.MENU)[0]; + _proto._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; } - return this._menu; - }; - - _proto._getPlacement = function _getPlacement() { - var $parentDropdown = $$$1(this._element).parent(); - var placement = AttachmentMap.BOTTOM; // Handle dropup + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; - if ($parentDropdown.hasClass(ClassName.DROPUP)) { - placement = AttachmentMap.TOP; + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; - if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { - placement = AttachmentMap.TOPEND; - } - } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { - placement = AttachmentMap.RIGHT; - } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { - placement = AttachmentMap.LEFT; - } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { - placement = AttachmentMap.BOTTOMEND; + default: } - - return placement; }; - _proto._detectNavbar = function _detectNavbar() { - return $$$1(this._element).closest('.navbar').length > 0; + _proto._getItemIndex = function _getItemIndex(element) { + this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); }; - _proto._getPopperConfig = function _getPopperConfig() { - var _this2 = this; - - var offsetConf = {}; - - if (typeof this._config.offset === 'function') { - offsetConf.fn = function (data) { - data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {}); - return data; - }; - } else { - offsetConf.offset = this._config.offset; - } + _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREV; - var popperConfig = { - placement: this._getPlacement(), - modifiers: { - offset: offsetConf, - flip: { - enabled: this._config.flip - }, - preventOverflow: { - boundariesElement: this._config.boundary - } - } // Disable Popper.js if we have a static display + var activeIndex = this._getItemIndex(activeElement); - }; + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - if (this._config.display === 'static') { - popperConfig.modifiers.applyStyle = { - enabled: false - }; + if (isGoingToWrap && !this._config.wrap) { + return activeElement; } - return popperConfig; - }; // Static + var delta = direction === Direction.PREV ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); - Dropdown._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); - var _config = typeof config === 'object' ? config : null; + var slideEvent = $$$1.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + $$$1(this._element).trigger(slideEvent); + return slideEvent; + }; - if (!data) { - data = new Dropdown(this, _config); - $$$1(this).data(DATA_KEY, data); - } + _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - data[config](); + if (nextIndicator) { + $$$1(nextIndicator).addClass(ClassName.ACTIVE); } - }); + } }; - Dropdown._clearMenus = function _clearMenus(event) { - if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { - return; - } + _proto._slide = function _slide(direction, element) { + var _this3 = this; - var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); + var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; - for (var i = 0; i < toggles.length; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]); + var activeElementIndex = this._getItemIndex(activeElement); - var context = $$$1(toggles[i]).data(DATA_KEY); - var relatedTarget = { - relatedTarget: toggles[i] - }; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - if (!context) { - continue; - } + var nextElementIndex = this._getItemIndex(nextElement); - var dropdownMenu = context._menu; + var isCycling = Boolean(this._interval); + var directionalClassName; + var orderClassName; + var eventDirectionName; - if (!$$$1(parent).hasClass(ClassName.SHOW)) { - continue; - } + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) { - continue; - } + if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } - var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); - $$$1(parent).trigger(hideEvent); + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - if (hideEvent.isDefaultPrevented()) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support + if (slideEvent.isDefaultPrevented()) { + return; + } + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } - if ('ontouchstart' in document.documentElement) { - $$$1(document.body).children().off('mouseover', null, $$$1.noop); - } + this._isSliding = true; - toggles[i].setAttribute('aria-expanded', 'false'); - $$$1(dropdownMenu).removeClass(ClassName.SHOW); - $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget)); + if (isCycling) { + this.pause(); } - }; - Dropdown._getParentFromElement = function _getParentFromElement(element) { - var parent; - var selector = Util.getSelectorFromElement(element); + this._setActiveIndicatorElement(nextElement); - if (selector) { - parent = $$$1(selector)[0]; + var slidEvent = $$$1.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + + if ($$$1(this._element).hasClass(ClassName.SLIDE)) { + $$$1(nextElement).addClass(orderClassName); + Util.reflow(nextElement); + $$$1(activeElement).addClass(directionalClassName); + $$$1(nextElement).addClass(directionalClassName); + var transitionDuration = Util.getTransitionDurationFromElement(activeElement); + $$$1(activeElement).one(Util.TRANSITION_END, function () { + $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); + $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); + _this3._isSliding = false; + setTimeout(function () { + return $$$1(_this3._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(transitionDuration); + } else { + $$$1(activeElement).removeClass(ClassName.ACTIVE); + $$$1(nextElement).addClass(ClassName.ACTIVE); + this._isSliding = false; + $$$1(this._element).trigger(slidEvent); } - return parent || element.parentNode; - }; // eslint-disable-next-line complexity + if (isCycling) { + this.cycle(); + } + }; // Static - Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { - return; - } + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - event.preventDefault(); - event.stopPropagation(); + var _config = _objectSpread({}, Default, $$$1(this).data()); - if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { - return; - } + if (typeof config === 'object') { + _config = _objectSpread({}, _config, config); + } - var parent = Dropdown._getParentFromElement(this); + var action = typeof config === 'string' ? config : _config.slide; - var isActive = $$$1(parent).hasClass(ClassName.SHOW); + if (!data) { + data = new Carousel(this, _config); + $$$1(this).data(DATA_KEY, data); + } - if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { - if (event.which === ESCAPE_KEYCODE) { - var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; - $$$1(toggle).trigger('focus'); + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError("No method named \"" + action + "\""); + } + + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); } + }); + }; - $$$1(this).trigger('click'); + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { return; } - var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); + var target = $$$1(selector)[0]; - if (items.length === 0) { + if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { return; } - var index = items.indexOf(event.target); + var config = _objectSpread({}, $$$1(target).data(), $$$1(this).data()); - if (event.which === ARROW_UP_KEYCODE && index > 0) { - // Up - index--; - } + var slideIndex = this.getAttribute('data-slide-to'); - if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { - // Down - index++; + if (slideIndex) { + config.interval = false; } - if (index < 0) { - index = 0; + Carousel._jQueryInterface.call($$$1(target), config); + + if (slideIndex) { + $$$1(target).data(DATA_KEY).to(slideIndex); } - items[index].focus(); + event.preventDefault(); }; - _createClass(Dropdown, null, [{ + _createClass(Carousel, null, [{ key: "VERSION", get: function get() { return VERSION; @@ -6143,14 +6635,9 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! get: function get() { return Default; } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; - } }]); - return Dropdown; + return Carousel; }(); /** * ------------------------------------------------------------------------ @@ -6159,13 +6646,13 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! */ - $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - event.preventDefault(); - event.stopPropagation(); + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + $$$1(window).on(Event.LOAD_DATA_API, function () { + $$$1(Selector.DATA_RIDE).each(function () { + var $carousel = $$$1(this); - Dropdown._jQueryInterface.call($$$1(this), 'toggle'); - }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { - e.stopPropagation(); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); }); /** * ------------------------------------------------------------------------ @@ -6173,77 +6660,64 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! * ------------------------------------------------------------------------ */ - $$$1.fn[NAME] = Dropdown._jQueryInterface; - $$$1.fn[NAME].Constructor = Dropdown; + $$$1.fn[NAME] = Carousel._jQueryInterface; + $$$1.fn[NAME].Constructor = Carousel; $$$1.fn[NAME].noConflict = function () { $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Dropdown._jQueryInterface; + return Carousel._jQueryInterface; }; - return Dropdown; - }($, Popper); + return Carousel; + }($); /** * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): modal.js + * Bootstrap (v4.1.1): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - var Modal = function ($$$1) { + var Collapse = function ($$$1) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - var NAME = 'modal'; + var NAME = 'collapse'; var VERSION = '4.1.1'; - var DATA_KEY = 'bs.modal'; + var DATA_KEY = 'bs.collapse'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - var Default = { - backdrop: true, - keyboard: true, - focus: true, - show: true + toggle: true, + parent: '' }; var DefaultType = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean', - show: 'boolean' + toggle: 'boolean', + parent: '(string|element)' }; var Event = { - HIDE: "hide" + EVENT_KEY, - HIDDEN: "hidden" + EVENT_KEY, SHOW: "show" + EVENT_KEY, SHOWN: "shown" + EVENT_KEY, - FOCUSIN: "focusin" + EVENT_KEY, - RESIZE: "resize" + EVENT_KEY, - CLICK_DISMISS: "click.dismiss" + EVENT_KEY, - KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, - MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, - MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY }; var ClassName = { - SCROLLBAR_MEASURER: 'modal-scrollbar-measure', - BACKDROP: 'modal-backdrop', - OPEN: 'modal-open', - FADE: 'fade', - SHOW: 'show' + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' }; var Selector = { - DIALOG: '.modal-dialog', - DATA_TOGGLE: '[data-toggle="modal"]', - DATA_DISMISS: '[data-dismiss="modal"]', - FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', - STICKY_CONTENT: '.sticky-top', - NAVBAR_TOGGLER: '.navbar-toggler' + ACTIVES: '.show, .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' /** * ------------------------------------------------------------------------ * Class Definition @@ -6252,433 +6726,245 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }; - var Modal = + var Collapse = /*#__PURE__*/ function () { - function Modal(element, config) { - this._config = this._getConfig(config); + function Collapse(element, config) { + this._isTransitioning = false; this._element = element; - this._dialog = $$$1(element).find(Selector.DIALOG)[0]; - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._scrollbarWidth = 0; + this._config = this._getConfig(config); + this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); + var tabToggles = $$$1(Selector.DATA_TOGGLE); + + for (var i = 0; i < tabToggles.length; i++) { + var elem = tabToggles[i]; + var selector = Util.getSelectorFromElement(elem); + + if (selector !== null && $$$1(selector).filter(element).length > 0) { + this._selector = selector; + + this._triggerArray.push(elem); + } + } + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } } // Getters - var _proto = Modal.prototype; + var _proto = Collapse.prototype; // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); + _proto.toggle = function toggle() { + if ($$$1(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } }; - _proto.show = function show(relatedTarget) { + _proto.show = function show() { var _this = this; - if (this._isTransitioning || this._isShown) { + if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { return; } - if ($$$1(this._element).hasClass(ClassName.FADE)) { - this._isTransitioning = true; + var actives; + var activesData; + + if (this._parent) { + actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); + + if (actives.length === 0) { + actives = null; + } } - var showEvent = $$$1.Event(Event.SHOW, { - relatedTarget: relatedTarget - }); - $$$1(this._element).trigger(showEvent); + if (actives) { + activesData = $$$1(actives).not(this._selector).data(DATA_KEY); - if (this._isShown || showEvent.isDefaultPrevented()) { + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $$$1.Event(Event.SHOW); + $$$1(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { return; } - this._isShown = true; + if (actives) { + Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide'); - this._checkScrollbar(); + if (!activesData) { + $$$1(actives).data(DATA_KEY, null); + } + } - this._setScrollbar(); + var dimension = this._getDimension(); - this._adjustDialog(); + $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + this._element.style[dimension] = 0; - $$$1(document.body).addClass(ClassName.OPEN); + if (this._triggerArray.length > 0) { + $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } - this._setEscapeEvent(); + this.setTransitioning(true); - this._setResizeEvent(); + var complete = function complete() { + $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + _this._element.style[dimension] = ''; - $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { - return _this.hide(event); - }); - $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { - $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { - if ($$$1(event.target).is(_this._element)) { - _this._ignoreBackdropClick = true; - } - }); - }); + _this.setTransitioning(false); - this._showBackdrop(function () { - return _this._showElement(relatedTarget); - }); + $$$1(_this._element).trigger(Event.SHOWN); + }; + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = "scroll" + capitalizedDimension; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + this._element.style[dimension] = this._element[scrollSize] + "px"; }; - _proto.hide = function hide(event) { + _proto.hide = function hide() { var _this2 = this; - if (event) { - event.preventDefault(); - } - - if (this._isTransitioning || !this._isShown) { + if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { return; } - var hideEvent = $$$1.Event(Event.HIDE); - $$$1(this._element).trigger(hideEvent); + var startEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(startEvent); - if (!this._isShown || hideEvent.isDefaultPrevented()) { + if (startEvent.isDefaultPrevented()) { return; } - this._isShown = false; - var transition = $$$1(this._element).hasClass(ClassName.FADE); + var dimension = this._getDimension(); - if (transition) { - this._isTransitioning = true; + this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; + Util.reflow(this._element); + $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + + if (this._triggerArray.length > 0) { + for (var i = 0; i < this._triggerArray.length; i++) { + var trigger = this._triggerArray[i]; + var selector = Util.getSelectorFromElement(trigger); + + if (selector !== null) { + var $elem = $$$1(selector); + + if (!$elem.hasClass(ClassName.SHOW)) { + $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + } + } } - this._setEscapeEvent(); + this.setTransitioning(true); - this._setResizeEvent(); + var complete = function complete() { + _this2.setTransitioning(false); - $$$1(document).off(Event.FOCUSIN); - $$$1(this._element).removeClass(ClassName.SHOW); - $$$1(this._element).off(Event.CLICK_DISMISS); - $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); + $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $$$1(this._element).one(Util.TRANSITION_END, function (event) { - return _this2._hideModal(event); - }).emulateTransitionEnd(transitionDuration); - } else { - this._hideModal(); - } + this._element.style[dimension] = ''; + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + }; + + _proto.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; }; _proto.dispose = function dispose() { $$$1.removeData(this._element, DATA_KEY); - $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); this._config = null; + this._parent = null; this._element = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._scrollbarWidth = null; - }; - - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); + this._triggerArray = null; + this._isTransitioning = null; }; // Private _proto._getConfig = function _getConfig(config) { config = _objectSpread({}, Default, config); + config.toggle = Boolean(config.toggle); // Coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); return config; }; - _proto._showElement = function _showElement(relatedTarget) { - var _this3 = this; - - var transition = $$$1(this._element).hasClass(ClassName.FADE); - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(this._element); - } - - this._element.style.display = 'block'; - - this._element.removeAttribute('aria-hidden'); - - this._element.scrollTop = 0; - - if (transition) { - Util.reflow(this._element); - } - - $$$1(this._element).addClass(ClassName.SHOW); - - if (this._config.focus) { - this._enforceFocus(); - } - - var shownEvent = $$$1.Event(Event.SHOWN, { - relatedTarget: relatedTarget - }); - - var transitionComplete = function transitionComplete() { - if (_this3._config.focus) { - _this3._element.focus(); - } - - _this3._isTransitioning = false; - $$$1(_this3._element).trigger(shownEvent); - }; - - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); - } else { - transitionComplete(); - } - }; - - _proto._enforceFocus = function _enforceFocus() { - var _this4 = this; - - $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop - .on(Event.FOCUSIN, function (event) { - if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) { - _this4._element.focus(); - } - }); + _proto._getDimension = function _getDimension() { + var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; }; - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this5 = this; - - if (this._isShown && this._config.keyboard) { - $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { - if (event.which === ESCAPE_KEYCODE) { - event.preventDefault(); + _proto._getParent = function _getParent() { + var _this3 = this; - _this5.hide(); - } - }); - } else if (!this._isShown) { - $$$1(this._element).off(Event.KEYDOWN_DISMISS); - } - }; + var parent = null; - _proto._setResizeEvent = function _setResizeEvent() { - var _this6 = this; + if (Util.isElement(this._config.parent)) { + parent = this._config.parent; // It's a jQuery object - if (this._isShown) { - $$$1(window).on(Event.RESIZE, function (event) { - return _this6.handleUpdate(event); - }); + if (typeof this._config.parent.jquery !== 'undefined') { + parent = this._config.parent[0]; + } } else { - $$$1(window).off(Event.RESIZE); + parent = $$$1(this._config.parent)[0]; } - }; - - _proto._hideModal = function _hideModal() { - var _this7 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._isTransitioning = false; - - this._showBackdrop(function () { - $$$1(document.body).removeClass(ClassName.OPEN); - - _this7._resetAdjustments(); - _this7._resetScrollbar(); - - $$$1(_this7._element).trigger(Event.HIDDEN); + var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; + $$$1(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); }); + return parent; }; - _proto._removeBackdrop = function _removeBackdrop() { - if (this._backdrop) { - $$$1(this._backdrop).remove(); - this._backdrop = null; - } - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this8 = this; - - var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; - - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement('div'); - this._backdrop.className = ClassName.BACKDROP; - - if (animate) { - $$$1(this._backdrop).addClass(animate); - } - - $$$1(this._backdrop).appendTo(document.body); - $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { - if (_this8._ignoreBackdropClick) { - _this8._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this8._config.backdrop === 'static') { - _this8._element.focus(); - } else { - _this8.hide(); - } - }); - - if (animate) { - Util.reflow(this._backdrop); - } - - $$$1(this._backdrop).addClass(ClassName.SHOW); - - if (!callback) { - return; - } - - if (!animate) { - callback(); - return; - } - - var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); - $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - $$$1(this._backdrop).removeClass(ClassName.SHOW); - - var callbackRemove = function callbackRemove() { - _this8._removeBackdrop(); - - if (callback) { - callback(); - } - }; - - if ($$$1(this._element).hasClass(ClassName.FADE)) { - var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $$$1(element).hasClass(ClassName.SHOW); - $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); - } else { - callbackRemove(); + if (triggerArray.length > 0) { + $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); } - } else if (callback) { - callback(); - } - }; // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // todo (fat): these should probably be refactored out of modal.js - // ---------------------------------------------------------------------- - - - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } - - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; } - }; - - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - }; - - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - }; - - _proto._setScrollbar = function _setScrollbar() { - var _this9 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - // Adjust fixed content padding - $$$1(Selector.FIXED_CONTENT).each(function (index, element) { - var actualPadding = $$$1(element)[0].style.paddingRight; - var calculatedPadding = $$$1(element).css('padding-right'); - $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); - }); // Adjust sticky content margin - - $$$1(Selector.STICKY_CONTENT).each(function (index, element) { - var actualMargin = $$$1(element)[0].style.marginRight; - var calculatedMargin = $$$1(element).css('margin-right'); - $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); - }); // Adjust navbar-toggler margin + }; // Static - $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { - var actualMargin = $$$1(element)[0].style.marginRight; - var calculatedMargin = $$$1(element).css('margin-right'); - $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); - }); // Adjust body padding - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $$$1(document.body).css('padding-right'); - $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); - } + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $$$1(selector)[0] : null; }; - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - $$$1(Selector.FIXED_CONTENT).each(function (index, element) { - var padding = $$$1(element).data('padding-right'); - - if (typeof padding !== 'undefined') { - $$$1(element).css('padding-right', padding).removeData('padding-right'); - } - }); // Restore sticky content and navbar-toggler margin + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $$$1(this); + var data = $this.data(DATA_KEY); - $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) { - var margin = $$$1(element).data('margin-right'); + var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {}); - if (typeof margin !== 'undefined') { - $$$1(element).css('margin-right', margin).removeData('margin-right'); + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; } - }); // Restore body padding - - var padding = $$$1(document.body).data('padding-right'); - - if (typeof padding !== 'undefined') { - $$$1(document.body).css('padding-right', padding).removeData('padding-right'); - } - }; - - _proto._getScrollbarWidth = function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = ClassName.SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - }; // Static - - - Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); - - var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {}); if (!data) { - data = new Modal(this, _config); - $$$1(this).data(DATA_KEY, data); + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); } if (typeof config === 'string') { @@ -6686,14 +6972,12 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! throw new TypeError("No method named \"" + config + "\""); } - data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); + data[config](); } }); }; - _createClass(Modal, null, [{ + _createClass(Collapse, null, [{ key: "VERSION", get: function get() { return VERSION; @@ -6705,7 +6989,7 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! } }]); - return Modal; + return Collapse; }(); /** * ------------------------------------------------------------------------ @@ -6715,35 +6999,20 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - var _this10 = this; - - var target; - var selector = Util.getSelectorFromElement(this); - - if (selector) { - target = $$$1(selector)[0]; - } - - var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data()); - - if (this.tagName === 'A' || this.tagName === 'AREA') { + // preventDefault only for <a> elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === 'A') { event.preventDefault(); } - var $target = $$$1(target).one(Event.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - // Only register focus restorer if modal will actually get shown - return; - } + var $trigger = $$$1(this); + var selector = Util.getSelectorFromElement(this); + $$$1(selector).each(function () { + var $target = $$$1(this); + var data = $target.data(DATA_KEY); + var config = data ? 'toggle' : $trigger.data(); - $target.one(Event.HIDDEN, function () { - if ($$$1(_this10).is(':visible')) { - _this10.focus(); - } - }); + Collapse._jQueryInterface.call($target, config); }); - - Modal._jQueryInterface.call($$$1(target), config, this); }); /** * ------------------------------------------------------------------------ @@ -6751,628 +7020,449 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! * ------------------------------------------------------------------------ */ - $$$1.fn[NAME] = Modal._jQueryInterface; - $$$1.fn[NAME].Constructor = Modal; + $$$1.fn[NAME] = Collapse._jQueryInterface; + $$$1.fn[NAME].Constructor = Collapse; $$$1.fn[NAME].noConflict = function () { $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Modal._jQueryInterface; + return Collapse._jQueryInterface; }; - return Modal; + return Collapse; }($); /** * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): tooltip.js + * Bootstrap (v4.1.1): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - var Tooltip = function ($$$1) { + var Dropdown = function ($$$1) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - var NAME = 'tooltip'; + var NAME = 'dropdown'; var VERSION = '4.1.1'; - var DATA_KEY = 'bs.tooltip'; + var DATA_KEY = 'bs.dropdown'; var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var CLASS_PREFIX = 'bs-tooltip'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var DefaultType = { - animation: 'boolean', - template: 'string', - title: '(string|element|function)', - trigger: 'string', - delay: '(number|object)', - html: 'boolean', - selector: '(string|boolean)', - placement: '(string|function)', - offset: '(number|string)', - container: '(string|element|boolean)', - fallbackPlacement: '(string|array)', - boundary: '(string|element)' - }; - var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: 'right', - BOTTOM: 'bottom', - LEFT: 'left' - }; - var Default = { - animation: true, - template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - offset: 0, - container: false, - fallbackPlacement: 'flip', - boundary: 'scrollParent' - }; - var HoverState = { - SHOW: 'show', - OUT: 'out' - }; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); var Event = { HIDE: "hide" + EVENT_KEY, HIDDEN: "hidden" + EVENT_KEY, SHOW: "show" + EVENT_KEY, SHOWN: "shown" + EVENT_KEY, - INSERTED: "inserted" + EVENT_KEY, CLICK: "click" + EVENT_KEY, - FOCUSIN: "focusin" + EVENT_KEY, - FOCUSOUT: "focusout" + EVENT_KEY, - MOUSEENTER: "mouseenter" + EVENT_KEY, - MOUSELEAVE: "mouseleave" + EVENT_KEY + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, + KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY }; var ClassName = { - FADE: 'fade', - SHOW: 'show' + DISABLED: 'disabled', + SHOW: 'show', + DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + POSITION_STATIC: 'position-static' }; var Selector = { - TOOLTIP: '.tooltip', - TOOLTIP_INNER: '.tooltip-inner', - ARROW: '.arrow' - }; - var Trigger = { - HOVER: 'hover', - FOCUS: 'focus', - CLICK: 'click', - MANUAL: 'manual' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + MENU: '.dropdown-menu', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' }; + var AttachmentMap = { + TOP: 'top-start', + TOPEND: 'top-end', + BOTTOM: 'bottom-start', + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' + }; + var Default = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' + }; + var DefaultType = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ - var Tooltip = - /*#__PURE__*/ - function () { - function Tooltip(element, config) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); - } // private - - - this._isEnabled = true; - this._timeout = 0; - this._hoverState = ''; - this._activeTrigger = {}; - this._popper = null; // Protected + }; - this.element = element; - this.config = this._getConfig(config); - this.tip = null; + var Dropdown = + /*#__PURE__*/ + function () { + function Dropdown(element, config) { + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); - this._setListeners(); + this._addEventListeners(); } // Getters - var _proto = Tooltip.prototype; + var _proto = Dropdown.prototype; // Public - _proto.enable = function enable() { - this._isEnabled = true; - }; + _proto.toggle = function toggle() { + if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { + return; + } - _proto.disable = function disable() { - this._isEnabled = false; - }; + var parent = Dropdown._getParentFromElement(this._element); - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; + var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { + Dropdown._clearMenus(); + + if (isActive) { return; } - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = $$$1(event.currentTarget).data(dataKey); + var relatedTarget = { + relatedTarget: this._element + }; + var showEvent = $$$1.Event(Event.SHOW, relatedTarget); + $$$1(parent).trigger(showEvent); - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $$$1(event.currentTarget).data(dataKey, context); - } + if (showEvent.isDefaultPrevented()) { + return; + } // Disable totally Popper.js for Dropdown in Navbar - context._activeTrigger.click = !context._activeTrigger.click; - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); } - } else { - if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { - this._leave(null, this); - return; + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (Util.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + $$$1(parent).addClass(ClassName.POSITION_STATIC); } - this._enter(null, this); + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) { + $$$1(document.body).children().on('mouseover', null, $$$1.noop); } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + $$$1(this._menu).toggleClass(ClassName.SHOW); + $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); }; _proto.dispose = function dispose() { - clearTimeout(this._timeout); - $$$1.removeData(this.element, this.constructor.DATA_KEY); - $$$1(this.element).off(this.constructor.EVENT_KEY); - $$$1(this.element).closest('.modal').off('hide.bs.modal'); + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._element).off(EVENT_KEY); + this._element = null; + this._menu = null; - if (this.tip) { - $$$1(this.tip).remove(); + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; } + }; - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; + _proto.update = function update() { + this._inNavbar = this._detectNavbar(); if (this._popper !== null) { - this._popper.destroy(); + this._popper.scheduleUpdate(); } + }; // Private - this._popper = null; - this.element = null; - this.config = null; - this.tip = null; - }; - _proto.show = function show() { + _proto._addEventListeners = function _addEventListeners() { var _this = this; - if ($$$1(this.element).css('display') === 'none') { - throw new Error('Please use show on visible elements'); - } - - var showEvent = $$$1.Event(this.constructor.Event.SHOW); + $$$1(this._element).on(Event.CLICK, function (event) { + event.preventDefault(); + event.stopPropagation(); - if (this.isWithContent() && this._isEnabled) { - $$$1(this.element).trigger(showEvent); - var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element); + _this.toggle(); + }); + }; - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return; - } + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $$$1(this._element).data(), config); + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; - var tip = this.getTipElement(); - var tipId = Util.getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - this.element.setAttribute('aria-describedby', tipId); - this.setContent(); + _proto._getMenuElement = function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); - if (this.config.animation) { - $$$1(tip).addClass(ClassName.FADE); - } + this._menu = $$$1(parent).find(Selector.MENU)[0]; + } - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + return this._menu; + }; - var attachment = this._getAttachment(placement); + _proto._getPlacement = function _getPlacement() { + var $parentDropdown = $$$1(this._element).parent(); + var placement = AttachmentMap.BOTTOM; // Handle dropup - this.addAttachmentClass(attachment); - var container = this.config.container === false ? document.body : $$$1(this.config.container); - $$$1(tip).data(this.constructor.DATA_KEY, this); + if ($parentDropdown.hasClass(ClassName.DROPUP)) { + placement = AttachmentMap.TOP; - if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { - $$$1(tip).appendTo(container); + if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.TOPEND; } + } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } - $$$1(this.element).trigger(this.constructor.Event.INSERTED); - this._popper = new Popper(this.element, tip, { - placement: attachment, - modifiers: { - offset: { - offset: this.config.offset - }, - flip: { - behavior: this.config.fallbackPlacement - }, - arrow: { - element: Selector.ARROW - }, - preventOverflow: { - boundariesElement: this.config.boundary - } - }, - onCreate: function onCreate(data) { - if (data.originalPlacement !== data.placement) { - _this._handlePopperPlacementChange(data); - } - }, - onUpdate: function onUpdate(data) { - _this._handlePopperPlacementChange(data); - } - }); - $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + return placement; + }; - if ('ontouchstart' in document.documentElement) { - $$$1(document.body).children().on('mouseover', null, $$$1.noop); - } + _proto._detectNavbar = function _detectNavbar() { + return $$$1(this._element).closest('.navbar').length > 0; + }; - var complete = function complete() { - if (_this.config.animation) { - _this._fixTransition(); - } + _proto._getPopperConfig = function _getPopperConfig() { + var _this2 = this; - var prevHoverState = _this._hoverState; - _this._hoverState = null; - $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); + var offsetConf = {}; - if (prevHoverState === HoverState.OUT) { - _this._leave(null, _this); - } + if (typeof this._config.offset === 'function') { + offsetConf.fn = function (data) { + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {}); + return data; }; - - if ($$$1(this.tip).hasClass(ClassName.FADE)) { - var transitionDuration = Util.getTransitionDurationFromElement(this.tip); - $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } + } else { + offsetConf.offset = this._config.offset; } - }; - _proto.hide = function hide(callback) { - var _this2 = this; + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: offsetConf, + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } // Disable Popper.js if we have a static display - var tip = this.getTipElement(); - var hideEvent = $$$1.Event(this.constructor.Event.HIDE); + }; - var complete = function complete() { - if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } - _this2._cleanTipClass(); + return popperConfig; + }; // Static - _this2.element.removeAttribute('aria-describedby'); - $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - if (_this2._popper !== null) { - _this2._popper.destroy(); - } + var _config = typeof config === 'object' ? config : null; - if (callback) { - callback(); + if (!data) { + data = new Dropdown(this, _config); + $$$1(this).data(DATA_KEY, data); } - }; - $$$1(this.element).trigger(hideEvent); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } - if (hideEvent.isDefaultPrevented()) { + data[config](); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { return; } - $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support + var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); - if ('ontouchstart' in document.documentElement) { - $$$1(document.body).children().off('mouseover', null, $$$1.noop); - } + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); - this._activeTrigger[Trigger.CLICK] = false; - this._activeTrigger[Trigger.FOCUS] = false; - this._activeTrigger[Trigger.HOVER] = false; + var context = $$$1(toggles[i]).data(DATA_KEY); + var relatedTarget = { + relatedTarget: toggles[i] + }; - if ($$$1(this.tip).hasClass(ClassName.FADE)) { - var transitionDuration = Util.getTransitionDurationFromElement(tip); - $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } + if (!context) { + continue; + } - this._hoverState = ''; - }; + var dropdownMenu = context._menu; - _proto.update = function update() { - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; // Protected + if (!$$$1(parent).hasClass(ClassName.SHOW)) { + continue; + } + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) { + continue; + } - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; + var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); + $$$1(parent).trigger(hideEvent); - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); - }; + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $$$1(this.config.template)[0]; - return this.tip; - }; - _proto.setContent = function setContent() { - var $tip = $$$1(this.getTipElement()); - this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); - $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().off('mouseover', null, $$$1.noop); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + $$$1(dropdownMenu).removeClass(ClassName.SHOW); + $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget)); + } }; - _proto.setElementContent = function setElementContent($element, content) { - var html = this.config.html; + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent; + var selector = Util.getSelectorFromElement(element); - if (typeof content === 'object' && (content.nodeType || content.jquery)) { - // Content is a DOM node or a jQuery - if (html) { - if (!$$$1(content).parent().is($element)) { - $element.empty().append(content); - } - } else { - $element.text($$$1(content).text()); - } - } else { - $element[html ? 'html' : 'text'](content); + if (selector) { + parent = $$$1(selector)[0]; } - }; - _proto.getTitle = function getTitle() { - var title = this.element.getAttribute('data-original-title'); + return parent || element.parentNode; + }; // eslint-disable-next-line complexity - if (!title) { - title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + return; } - return title; - }; // Private + event.preventDefault(); + event.stopPropagation(); + if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { + return; + } - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; + var parent = Dropdown._getParentFromElement(this); - _proto._setListeners = function _setListeners() { - var _this3 = this; + var isActive = $$$1(parent).hasClass(ClassName.SHOW); - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { - if (trigger === 'click') { - $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) { - return _this3.toggle(event); - }); - } else if (trigger !== Trigger.MANUAL) { - var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; - var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; - $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) { - return _this3._enter(event); - }).on(eventOut, _this3.config.selector, function (event) { - return _this3._leave(event); - }); + if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { + if (event.which === ESCAPE_KEYCODE) { + var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; + $$$1(toggle).trigger('focus'); } - $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () { - return _this3.hide(); - }); - }); - - if (this.config.selector) { - this.config = _objectSpread({}, this.config, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); + $$$1(this).trigger('click'); + return; } - }; - _proto._fixTitle = function _fixTitle() { - var titleType = typeof this.element.getAttribute('data-original-title'); + var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); - if (this.element.getAttribute('title') || titleType !== 'string') { - this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); - this.element.setAttribute('title', ''); + if (items.length === 0) { + return; } - }; - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $$$1(event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $$$1(event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; - } - - if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { - context._hoverState = HoverState.SHOW; - return; - } - - clearTimeout(context._timeout); - context._hoverState = HoverState.SHOW; - - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HoverState.SHOW) { - context.show(); - } - }, context.config.delay.show); - }; - - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $$$1(event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $$$1(event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HoverState.OUT; - - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HoverState.OUT) { - context.hide(); - } - }, context.config.delay.hide); - }; - - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; - }; - - _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, this.constructor.Default, $$$1(this.element).data(), typeof config === 'object' && config ? config : {}); - - if (typeof config.delay === 'number') { - config.delay = { - show: config.delay, - hide: config.delay - }; - } - - if (typeof config.title === 'number') { - config.title = config.title.toString(); - } - - if (typeof config.content === 'number') { - config.content = config.content.toString(); - } - - Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); - return config; - }; - - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; + var index = items.indexOf(event.target); - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } - } + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; } - return config; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $$$1(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; } - }; - - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { - this._cleanTipClass(); - - this.addAttachmentClass(this._getAttachment(data.placement)); - }; - _proto._fixTransition = function _fixTransition() { - var tip = this.getTipElement(); - var initConfigAnimation = this.config.animation; - - if (tip.getAttribute('x-placement') !== null) { - return; + if (index < 0) { + index = 0; } - $$$1(tip).removeClass(ClassName.FADE); - this.config.animation = false; - this.hide(); - this.show(); - this.config.animation = initConfigAnimation; - }; // Static - - - Tooltip._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); - - var _config = typeof config === 'object' && config; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Tooltip(this, _config); - $$$1(this).data(DATA_KEY, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); + items[index].focus(); }; - _createClass(Tooltip, null, [{ + _createClass(Dropdown, null, [{ key: "VERSION", get: function get() { return VERSION; @@ -7382,26 +7472,6 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! get: function get() { return Default; } - }, { - key: "NAME", - get: function get() { - return NAME; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY; - } - }, { - key: "Event", - get: function get() { - return Event; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY; - } }, { key: "DefaultType", get: function get() { @@ -7409,77 +7479,100 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! } }]); - return Tooltip; + return Dropdown; }(); /** * ------------------------------------------------------------------------ - * jQuery + * Data Api implementation * ------------------------------------------------------------------------ */ - $$$1.fn[NAME] = Tooltip._jQueryInterface; - $$$1.fn[NAME].Constructor = Tooltip; + $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call($$$1(this), 'toggle'); + }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $$$1.fn[NAME] = Dropdown._jQueryInterface; + $$$1.fn[NAME].Constructor = Dropdown; $$$1.fn[NAME].noConflict = function () { $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Tooltip._jQueryInterface; + return Dropdown._jQueryInterface; }; - return Tooltip; + return Dropdown; }($, Popper); /** * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): popover.js + * Bootstrap (v4.1.1): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - var Popover = function ($$$1) { + var Modal = function ($$$1) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - var NAME = 'popover'; + var NAME = 'modal'; var VERSION = '4.1.1'; - var DATA_KEY = 'bs.popover'; + var DATA_KEY = 'bs.modal'; var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var CLASS_PREFIX = 'bs-popover'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - - var Default = _objectSpread({}, Tooltip.Default, { - placement: 'right', - trigger: 'click', - content: '', - template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' - }); - - var DefaultType = _objectSpread({}, Tooltip.DefaultType, { - content: '(string|element|function)' - }); + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - var ClassName = { - FADE: 'fade', - SHOW: 'show' + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true }; - var Selector = { - TITLE: '.popover-header', - CONTENT: '.popover-body' + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' }; var Event = { HIDE: "hide" + EVENT_KEY, HIDDEN: "hidden" + EVENT_KEY, SHOW: "show" + EVENT_KEY, SHOWN: "shown" + EVENT_KEY, - INSERTED: "inserted" + EVENT_KEY, - CLICK: "click" + EVENT_KEY, FOCUSIN: "focusin" + EVENT_KEY, - FOCUSOUT: "focusout" + EVENT_KEY, - MOUSEENTER: "mouseenter" + EVENT_KEY, - MOUSELEAVE: "mouseleave" + EVENT_KEY + RESIZE: "resize" + EVENT_KEY, + CLICK_DISMISS: "click.dismiss" + EVENT_KEY, + KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, + MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, + MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT: '.sticky-top', + NAVBAR_TOGGLER: '.navbar-toggler' /** * ------------------------------------------------------------------------ * Class Definition @@ -7488,396 +7581,432 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }; - var Popover = + var Modal = /*#__PURE__*/ - function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - - function Popover() { - return _Tooltip.apply(this, arguments) || this; - } - - var _proto = Popover.prototype; + function () { + function Modal(element, config) { + this._config = this._getConfig(config); + this._element = element; + this._dialog = $$$1(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._scrollbarWidth = 0; + } // Getters - // Overrides - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); - }; + var _proto = Modal.prototype; - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $$$1(this.config.template)[0]; - return this.tip; + // Public + _proto.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); }; - _proto.setContent = function setContent() { - var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events - - this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); - - var content = this._getContent(); + _proto.show = function show(relatedTarget) { + var _this = this; - if (typeof content === 'function') { - content = content.call(this.element); + if (this._isTransitioning || this._isShown) { + return; } - this.setElementContent($tip.find(Selector.CONTENT), content); - $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); - }; // Private + if ($$$1(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + var showEvent = $$$1.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + $$$1(this._element).trigger(showEvent); - _proto._getContent = function _getContent() { - return this.element.getAttribute('data-content') || this.config.content; - }; + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $$$1(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + this._isShown = true; - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); - } - }; // Static + this._checkScrollbar(); + this._setScrollbar(); - Popover._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $$$1(this).data(DATA_KEY); + this._adjustDialog(); - var _config = typeof config === 'object' ? config : null; + $$$1(document.body).addClass(ClassName.OPEN); - if (!data && /destroy|hide/.test(config)) { - return; - } + this._setEscapeEvent(); - if (!data) { - data = new Popover(this, _config); - $$$1(this).data(DATA_KEY, data); - } + this._setResizeEvent(); - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this.hide(event); + }); + $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($$$1(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; } + }); + }); - data[config](); - } + this._showBackdrop(function () { + return _this._showElement(relatedTarget); }); }; - _createClass(Popover, null, [{ - key: "VERSION", - // Getters - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }, { - key: "NAME", - get: function get() { - return NAME; + _proto.hide = function hide(event) { + var _this2 = this; + + if (event) { + event.preventDefault(); } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY; + + if (this._isTransitioning || !this._isShown) { + return; } - }, { - key: "Event", - get: function get() { - return Event; + + var hideEvent = $$$1.Event(Event.HIDE); + $$$1(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY; + + this._isShown = false; + var transition = $$$1(this._element).hasClass(ClassName.FADE); + + if (transition) { + this._isTransitioning = true; } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; + + this._setEscapeEvent(); + + this._setResizeEvent(); + + $$$1(document).off(Event.FOCUSIN); + $$$1(this._element).removeClass(ClassName.SHOW); + $$$1(this._element).off(Event.CLICK_DISMISS); + $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._element).one(Util.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }).emulateTransitionEnd(transitionDuration); + } else { + this._hideModal(); } - }]); + }; - return Popover; - }(Tooltip); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._scrollbarWidth = null; + }; + _proto.handleUpdate = function handleUpdate() { + this._adjustDialog(); + }; // Private - $$$1.fn[NAME] = Popover._jQueryInterface; - $$$1.fn[NAME].Constructor = Popover; - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Popover._jQueryInterface; - }; + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; - return Popover; - }($); + _proto._showElement = function _showElement(relatedTarget) { + var _this3 = this; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): scrollspy.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + var transition = $$$1(this._element).hasClass(ClassName.FADE); - var ScrollSpy = function ($$$1) { - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'scrollspy'; - var VERSION = '4.1.1'; - var DATA_KEY = 'bs.scrollspy'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; - var Default = { - offset: 10, - method: 'auto', - target: '' - }; - var DefaultType = { - offset: 'number', - method: 'string', - target: '(string|element)' - }; - var Event = { - ACTIVATE: "activate" + EVENT_KEY, - SCROLL: "scroll" + EVENT_KEY, - LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY - }; - var ClassName = { - DROPDOWN_ITEM: 'dropdown-item', - DROPDOWN_MENU: 'dropdown-menu', - ACTIVE: 'active' - }; - var Selector = { - DATA_SPY: '[data-spy="scroll"]', - ACTIVE: '.active', - NAV_LIST_GROUP: '.nav, .list-group', - NAV_LINKS: '.nav-link', - NAV_ITEMS: '.nav-item', - LIST_ITEMS: '.list-group-item', - DROPDOWN: '.dropdown', - DROPDOWN_ITEMS: '.dropdown-item', - DROPDOWN_TOGGLE: '.dropdown-toggle' - }; - var OffsetMethod = { - OFFSET: 'offset', - POSITION: 'position' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } - }; + this._element.style.display = 'block'; - var ScrollSpy = - /*#__PURE__*/ - function () { - function ScrollSpy(element, config) { - var _this = this; + this._element.removeAttribute('aria-hidden'); - this._element = element; - this._scrollElement = element.tagName === 'BODY' ? window : element; - this._config = this._getConfig(config); - this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS); - this._offsets = []; - this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - $$$1(this._scrollElement).on(Event.SCROLL, function (event) { - return _this._process(event); - }); - this.refresh(); + this._element.scrollTop = 0; - this._process(); - } // Getters + if (transition) { + Util.reflow(this._element); + } + $$$1(this._element).addClass(ClassName.SHOW); - var _proto = ScrollSpy.prototype; + if (this._config.focus) { + this._enforceFocus(); + } - // Public - _proto.refresh = function refresh() { - var _this2 = this; + var shownEvent = $$$1.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); - var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = $$$1.makeArray($$$1(this._selector)); - targets.map(function (element) { - var target; - var targetSelector = Util.getSelectorFromElement(element); + var transitionComplete = function transitionComplete() { + if (_this3._config.focus) { + _this3._element.focus(); + } - if (targetSelector) { - target = $$$1(targetSelector)[0]; + _this3._isTransitioning = false; + $$$1(_this3._element).trigger(shownEvent); + }; + + if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + } else { + transitionComplete(); + } + }; + + _proto._enforceFocus = function _enforceFocus() { + var _this4 = this; + + $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) { + _this4._element.focus(); } + }); + }; - if (target) { - var targetBCR = target.getBoundingClientRect(); + _proto._setEscapeEvent = function _setEscapeEvent() { + var _this5 = this; - if (targetBCR.width || targetBCR.height) { - // TODO (fat): remove sketch reliance on jQuery position/offset - return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; + if (this._isShown && this._config.keyboard) { + $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + event.preventDefault(); + + _this5.hide(); } - } + }); + } else if (!this._isShown) { + $$$1(this._element).off(Event.KEYDOWN_DISMISS); + } + }; - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); + _proto._setResizeEvent = function _setResizeEvent() { + var _this6 = this; - _this2._targets.push(item[1]); - }); + if (this._isShown) { + $$$1(window).on(Event.RESIZE, function (event) { + return _this6.handleUpdate(event); + }); + } else { + $$$1(window).off(Event.RESIZE); + } }; - _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - $$$1(this._scrollElement).off(EVENT_KEY); - this._element = null; - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - }; // Private + _proto._hideModal = function _hideModal() { + var _this7 = this; + this._element.style.display = 'none'; - _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {}); + this._element.setAttribute('aria-hidden', true); - if (typeof config.target !== 'string') { - var id = $$$1(config.target).attr('id'); + this._isTransitioning = false; - if (!id) { - id = Util.getUID(NAME); - $$$1(config.target).attr('id', id); - } + this._showBackdrop(function () { + $$$1(document.body).removeClass(ClassName.OPEN); - config.target = "#" + id; - } + _this7._resetAdjustments(); - Util.typeCheckConfig(NAME, config, DefaultType); - return config; - }; + _this7._resetScrollbar(); - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + $$$1(_this7._element).trigger(Event.HIDDEN); + }); }; - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + _proto._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $$$1(this._backdrop).remove(); + this._backdrop = null; + } }; - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; + _proto._showBackdrop = function _showBackdrop(callback) { + var _this8 = this; - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; + var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; - var scrollHeight = this._getScrollHeight(); + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + if (animate) { + $$$1(this._backdrop).addClass(animate); + } - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } + $$$1(this._backdrop).appendTo(document.body); + $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this8._ignoreBackdropClick) { + _this8._ignoreBackdropClick = false; + return; + } - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; + if (event.target !== event.currentTarget) { + return; + } - if (this._activeTarget !== target) { - this._activate(target); + if (_this8._config.backdrop === 'static') { + _this8._element.focus(); + } else { + _this8.hide(); + } + }); + + if (animate) { + Util.reflow(this._backdrop); } - return; - } + $$$1(this._backdrop).addClass(ClassName.SHOW); - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; + if (!callback) { + return; + } - this._clear(); + if (!animate) { + callback(); + return; + } - return; - } + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + $$$1(this._backdrop).removeClass(ClassName.SHOW); - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); + var callbackRemove = function callbackRemove() { + _this8._removeBackdrop(); - if (isActiveTarget) { - this._activate(this._targets[i]); + if (callback) { + callback(); + } + }; + + if ($$$1(this._element).hasClass(ClassName.FADE)) { + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + + $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + } else { + callbackRemove(); } + } else if (callback) { + callback(); } - }; + }; // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- - _proto._activate = function _activate(target) { - this._activeTarget = target; - this._clear(); + _proto._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + "px"; + } + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + "px"; + } + }; - queries = queries.map(function (selector) { - return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); - }); - var $link = $$$1(queries.join(',')); + _proto._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; - if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { - $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); - $link.addClass(ClassName.ACTIVE); - } else { - // Set triggered link as active - $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active - // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor + _proto._checkScrollbar = function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; - $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item + _proto._setScrollbar = function _setScrollbar() { + var _this9 = this; - $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + // Adjust fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var actualPadding = $$$1(element)[0].style.paddingRight; + var calculatedPadding = $$$1(element).css('padding-right'); + $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); + }); // Adjust sticky content margin + + $$$1(Selector.STICKY_CONTENT).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css('margin-right'); + $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); + }); // Adjust navbar-toggler margin + + $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { + var actualMargin = $$$1(element)[0].style.marginRight; + var calculatedMargin = $$$1(element).css('margin-right'); + $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $$$1(document.body).css('padding-right'); + $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); } + }; - $$$1(this._scrollElement).trigger(Event.ACTIVATE, { - relatedTarget: target - }); + _proto._resetScrollbar = function _resetScrollbar() { + // Restore fixed content padding + $$$1(Selector.FIXED_CONTENT).each(function (index, element) { + var padding = $$$1(element).data('padding-right'); + + if (typeof padding !== 'undefined') { + $$$1(element).css('padding-right', padding).removeData('padding-right'); + } + }); // Restore sticky content and navbar-toggler margin + + $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) { + var margin = $$$1(element).data('margin-right'); + + if (typeof margin !== 'undefined') { + $$$1(element).css('margin-right', margin).removeData('margin-right'); + } + }); // Restore body padding + + var padding = $$$1(document.body).data('padding-right'); + + if (typeof padding !== 'undefined') { + $$$1(document.body).css('padding-right', padding).removeData('padding-right'); + } }; - _proto._clear = function _clear() { - $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + _proto._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; }; // Static - ScrollSpy._jQueryInterface = function _jQueryInterface(config) { + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { return this.each(function () { var data = $$$1(this).data(DATA_KEY); - var _config = typeof config === 'object' && config; + var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {}); if (!data) { - data = new ScrollSpy(this, _config); + data = new Modal(this, _config); $$$1(this).data(DATA_KEY, data); } @@ -7886,12 +8015,14 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! throw new TypeError("No method named \"" + config + "\""); } - data[config](); + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); } }); }; - _createClass(ScrollSpy, null, [{ + _createClass(Modal, null, [{ key: "VERSION", get: function get() { return VERSION; @@ -7903,7 +8034,7 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! } }]); - return ScrollSpy; + return Modal; }(); /** * ------------------------------------------------------------------------ @@ -7912,14 +8043,36 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! */ - $$$1(window).on(Event.LOAD_DATA_API, function () { - var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY)); + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this10 = this; - for (var i = scrollSpys.length; i--;) { - var $spy = $$$1(scrollSpys[i]); + var target; + var selector = Util.getSelectorFromElement(this); - ScrollSpy._jQueryInterface.call($spy, $spy.data()); + if (selector) { + target = $$$1(selector)[0]; + } + + var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); } + + var $target = $$$1(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($$$1(_this10).is(':visible')) { + _this10.focus(); + } + }); + }); + + Modal._jQueryInterface.call($$$1(target), config, this); }); /** * ------------------------------------------------------------------------ @@ -7927,58 +8080,102 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! * ------------------------------------------------------------------------ */ - $$$1.fn[NAME] = ScrollSpy._jQueryInterface; - $$$1.fn[NAME].Constructor = ScrollSpy; + $$$1.fn[NAME] = Modal._jQueryInterface; + $$$1.fn[NAME].Constructor = Modal; $$$1.fn[NAME].noConflict = function () { $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return ScrollSpy._jQueryInterface; + return Modal._jQueryInterface; }; - return ScrollSpy; + return Modal; }($); /** * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): tab.js + * Bootstrap (v4.1.1): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ - var Tab = function ($$$1) { + var Tooltip = function ($$$1) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - var NAME = 'tab'; + var NAME = 'tooltip'; var VERSION = '4.1.1'; - var DATA_KEY = 'bs.tab'; + var DATA_KEY = 'bs.tooltip'; var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = 'bs-tooltip'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(number|string)', + container: '(string|element|boolean)', + fallbackPlacement: '(string|array)', + boundary: '(string|element)' + }; + var AttachmentMap = { + AUTO: 'auto', + TOP: 'top', + RIGHT: 'right', + BOTTOM: 'bottom', + LEFT: 'left' + }; + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: 0, + container: false, + fallbackPlacement: 'flip', + boundary: 'scrollParent' + }; + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; var Event = { HIDE: "hide" + EVENT_KEY, HIDDEN: "hidden" + EVENT_KEY, SHOW: "show" + EVENT_KEY, SHOWN: "shown" + EVENT_KEY, - CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY }; var ClassName = { - DROPDOWN_MENU: 'dropdown-menu', - ACTIVE: 'active', - DISABLED: 'disabled', FADE: 'fade', SHOW: 'show' }; var Selector = { - DROPDOWN: '.dropdown', - NAV_LIST_GROUP: '.nav, .list-group', - ACTIVE: '.active', - ACTIVE_UL: '> li > .active', - DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', - DROPDOWN_TOGGLE: '.dropdown-toggle', - DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner', + ARROW: '.arrow' + }; + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' /** * ------------------------------------------------------------------------ * Class Definition @@ -7987,1921 +8184,1706 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }; - var Tab = + var Tooltip = /*#__PURE__*/ function () { - function Tab(element) { - this._element = element; - } // Getters + function Tooltip(element, config) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); + } // private - var _proto = Tab.prototype; + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._popper = null; // Protected - // Public - _proto.show = function show() { - var _this = this; + this.element = element; + this.config = this._getConfig(config); + this.tip = null; - if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) { - return; - } + this._setListeners(); + } // Getters - var target; - var previous; - var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0]; - var selector = Util.getSelectorFromElement(this._element); - if (listElement) { - var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE; - previous = $$$1.makeArray($$$1(listElement).find(itemSelector)); - previous = previous[previous.length - 1]; - } + var _proto = Tooltip.prototype; - var hideEvent = $$$1.Event(Event.HIDE, { - relatedTarget: this._element - }); - var showEvent = $$$1.Event(Event.SHOW, { - relatedTarget: previous - }); + // Public + _proto.enable = function enable() { + this._isEnabled = true; + }; - if (previous) { - $$$1(previous).trigger(hideEvent); - } + _proto.disable = function disable() { + this._isEnabled = false; + }; - $$$1(this._element).trigger(showEvent); + _proto.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + _proto.toggle = function toggle(event) { + if (!this._isEnabled) { return; } - if (selector) { - target = $$$1(selector)[0]; - } + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $$$1(event.currentTarget).data(dataKey); - this._activate(this._element, listElement); + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } - var complete = function complete() { - var hiddenEvent = $$$1.Event(Event.HIDDEN, { - relatedTarget: _this._element - }); - var shownEvent = $$$1.Event(Event.SHOWN, { - relatedTarget: previous - }); - $$$1(previous).trigger(hiddenEvent); - $$$1(_this._element).trigger(shownEvent); - }; + context._activeTrigger.click = !context._activeTrigger.click; - if (target) { - this._activate(target, target.parentNode, complete); + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } } else { - complete(); + if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); + + return; + } + + this._enter(null, this); } }; _proto.dispose = function dispose() { - $$$1.removeData(this._element, DATA_KEY); - this._element = null; - }; // Private - + clearTimeout(this._timeout); + $$$1.removeData(this.element, this.constructor.DATA_KEY); + $$$1(this.element).off(this.constructor.EVENT_KEY); + $$$1(this.element).closest('.modal').off('hide.bs.modal'); - _proto._activate = function _activate(element, container, callback) { - var _this2 = this; + if (this.tip) { + $$$1(this.tip).remove(); + } - var activeElements; + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; - if (container.nodeName === 'UL') { - activeElements = $$$1(container).find(Selector.ACTIVE_UL); - } else { - activeElements = $$$1(container).children(Selector.ACTIVE); + if (this._popper !== null) { + this._popper.destroy(); } - var active = activeElements[0]; - var isTransitioning = callback && active && $$$1(active).hasClass(ClassName.FADE); + this._popper = null; + this.element = null; + this.config = null; + this.tip = null; + }; - var complete = function complete() { - return _this2._transitionComplete(element, active, callback); - }; + _proto.show = function show() { + var _this = this; - if (active && isTransitioning) { - var transitionDuration = Util.getTransitionDurationFromElement(active); - $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); + if ($$$1(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); } - }; - _proto._transitionComplete = function _transitionComplete(element, active, callback) { - if (active) { - $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE); - var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + var showEvent = $$$1.Event(this.constructor.Event.SHOW); - if (dropdownChild) { - $$$1(dropdownChild).removeClass(ClassName.ACTIVE); - } + if (this.isWithContent() && this._isEnabled) { + $$$1(this.element).trigger(showEvent); + var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element); - if (active.getAttribute('role') === 'tab') { - active.setAttribute('aria-selected', false); + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; } - } - $$$1(element).addClass(ClassName.ACTIVE); + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + this.setContent(); - if (element.getAttribute('role') === 'tab') { - element.setAttribute('aria-selected', true); - } + if (this.config.animation) { + $$$1(tip).addClass(ClassName.FADE); + } - Util.reflow(element); - $$$1(element).addClass(ClassName.SHOW); + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; - if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { - var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0]; + var attachment = this._getAttachment(placement); - if (dropdownElement) { - $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); - } + this.addAttachmentClass(attachment); + var container = this.config.container === false ? document.body : $$$1(this.config.container); + $$$1(tip).data(this.constructor.DATA_KEY, this); - element.setAttribute('aria-expanded', true); - } + if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { + $$$1(tip).appendTo(container); + } - if (callback) { - callback(); - } - }; // Static + $$$1(this.element).trigger(this.constructor.Event.INSERTED); + this._popper = new Popper(this.element, tip, { + placement: attachment, + modifiers: { + offset: { + offset: this.config.offset + }, + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: Selector.ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: function onCreate(data) { + if (data.originalPlacement !== data.placement) { + _this._handlePopperPlacementChange(data); + } + }, + onUpdate: function onUpdate(data) { + _this._handlePopperPlacementChange(data); + } + }); + $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().on('mouseover', null, $$$1.noop); + } - Tab._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $this = $$$1(this); - var data = $this.data(DATA_KEY); + var complete = function complete() { + if (_this.config.animation) { + _this._fixTransition(); + } - if (!data) { - data = new Tab(this); - $this.data(DATA_KEY, data); - } + var prevHoverState = _this._hoverState; + _this._hoverState = null; + $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); } + }; - data[config](); + if ($$$1(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(this.tip); + $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); } - }); - }; - - _createClass(Tab, null, [{ - key: "VERSION", - get: function get() { - return VERSION; } - }]); + }; - return Tab; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + _proto.hide = function hide(callback) { + var _this2 = this; + var tip = this.getTipElement(); + var hideEvent = $$$1.Event(this.constructor.Event.HIDE); - $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - event.preventDefault(); + var complete = function complete() { + if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } - Tab._jQueryInterface.call($$$1(this), 'show'); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + _this2._cleanTipClass(); - $$$1.fn[NAME] = Tab._jQueryInterface; - $$$1.fn[NAME].Constructor = Tab; + _this2.element.removeAttribute('aria-describedby'); - $$$1.fn[NAME].noConflict = function () { - $$$1.fn[NAME] = JQUERY_NO_CONFLICT; - return Tab._jQueryInterface; - }; + $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); - return Tab; - }($); + if (_this2._popper !== null) { + _this2._popper.destroy(); + } - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.1.1): index.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- - */ + if (callback) { + callback(); + } + }; - (function ($$$1) { - if (typeof $$$1 === 'undefined') { - throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); - } + $$$1(this.element).trigger(hideEvent); - var version = $$$1.fn.jquery.split(' ')[0].split('.'); - var minMajor = 1; - var ltMajor = 2; - var minMinor = 9; - var minPatch = 1; - var maxMajor = 4; + if (hideEvent.isDefaultPrevented()) { + return; + } - if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { - throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); - } - })($); + $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support - exports.Util = Util; - exports.Alert = Alert; - exports.Button = Button; - exports.Carousel = Carousel; - exports.Collapse = Collapse; - exports.Dropdown = Dropdown; - exports.Modal = Modal; - exports.Popover = Popover; - exports.Scrollspy = ScrollSpy; - exports.Tab = Tab; - exports.Tooltip = Tooltip; + if ('ontouchstart' in document.documentElement) { + $$$1(document.body).children().off('mouseover', null, $$$1.noop); + } - Object.defineProperty(exports, '__esModule', { value: true }); + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; -}))); -//# sourceMappingURL=bootstrap.js.map + if ($$$1(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(tip); + $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + this._hoverState = ''; + }; -/***/ }), + _proto.update = function update() { + if (this._popper !== null) { + this._popper.scheduleUpdate(); + } + }; // Protected -/***/ "./node_modules/bootstrap-v4-rtl/scss/bootstrap-rtl.scss": -/*!***************************************************************!*\ - !*** ./node_modules/bootstrap-v4-rtl/scss/bootstrap-rtl.scss ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + _proto.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; -var content = __webpack_require__(/*! !../../css-loader!../../postcss-loader/src??ref--6-2!../../sass-loader/lib/loader.js??ref--6-3!./bootstrap-rtl.scss */ "./node_modules/css-loader/index.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/lib/loader.js?!./node_modules/bootstrap-v4-rtl/scss/bootstrap-rtl.scss"); + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; -if(typeof content === 'string') content = [[module.i, content, '']]; + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; -var transform; -var insertInto; + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; + _proto.setElementContent = function setElementContent($element, content) { + var html = this.config.html; + if (typeof content === 'object' && (content.nodeType || content.jquery)) { + // Content is a DOM node or a jQuery + if (html) { + if (!$$$1(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($$$1(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + }; -var options = {"hmr":true} + _proto.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); -options.transform = transform -options.insertInto = undefined; + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } -var update = __webpack_require__(/*! ../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); + return title; + }; // Private -if(content.locals) module.exports = content.locals; -if(false) {} + _proto._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; -/***/ }), + _proto._setListeners = function _setListeners() { + var _this3 = this; -/***/ "./node_modules/chart.js/src/chart.js": -/*!********************************************!*\ - !*** ./node_modules/chart.js/src/chart.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + var triggers = this.config.trigger.split(' '); + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) { + return _this3.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) { + return _this3._enter(event); + }).on(eventOut, _this3.config.selector, function (event) { + return _this3._leave(event); + }); + } -/** - * @namespace Chart - */ -var Chart = __webpack_require__(/*! ./core/core */ "./node_modules/chart.js/src/core/core.js")(); + $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () { + return _this3.hide(); + }); + }); -Chart.helpers = __webpack_require__(/*! ./helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + if (this.config.selector) { + this.config = _objectSpread({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; -// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! -__webpack_require__(/*! ./core/core.helpers */ "./node_modules/chart.js/src/core/core.helpers.js")(Chart); + _proto._fixTitle = function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); -Chart.Animation = __webpack_require__(/*! ./core/core.animation */ "./node_modules/chart.js/src/core/core.animation.js"); -Chart.animationService = __webpack_require__(/*! ./core/core.animations */ "./node_modules/chart.js/src/core/core.animations.js"); -Chart.defaults = __webpack_require__(/*! ./core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -Chart.Element = __webpack_require__(/*! ./core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); -Chart.elements = __webpack_require__(/*! ./elements/index */ "./node_modules/chart.js/src/elements/index.js"); -Chart.Interaction = __webpack_require__(/*! ./core/core.interaction */ "./node_modules/chart.js/src/core/core.interaction.js"); -Chart.layouts = __webpack_require__(/*! ./core/core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); -Chart.platform = __webpack_require__(/*! ./platforms/platform */ "./node_modules/chart.js/src/platforms/platform.js"); -Chart.plugins = __webpack_require__(/*! ./core/core.plugins */ "./node_modules/chart.js/src/core/core.plugins.js"); -Chart.Scale = __webpack_require__(/*! ./core/core.scale */ "./node_modules/chart.js/src/core/core.scale.js"); -Chart.scaleService = __webpack_require__(/*! ./core/core.scaleService */ "./node_modules/chart.js/src/core/core.scaleService.js"); -Chart.Ticks = __webpack_require__(/*! ./core/core.ticks */ "./node_modules/chart.js/src/core/core.ticks.js"); -Chart.Tooltip = __webpack_require__(/*! ./core/core.tooltip */ "./node_modules/chart.js/src/core/core.tooltip.js"); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; -__webpack_require__(/*! ./core/core.controller */ "./node_modules/chart.js/src/core/core.controller.js")(Chart); -__webpack_require__(/*! ./core/core.datasetController */ "./node_modules/chart.js/src/core/core.datasetController.js")(Chart); + _proto._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); -__webpack_require__(/*! ./scales/scale.linearbase */ "./node_modules/chart.js/src/scales/scale.linearbase.js")(Chart); -__webpack_require__(/*! ./scales/scale.category */ "./node_modules/chart.js/src/scales/scale.category.js")(Chart); -__webpack_require__(/*! ./scales/scale.linear */ "./node_modules/chart.js/src/scales/scale.linear.js")(Chart); -__webpack_require__(/*! ./scales/scale.logarithmic */ "./node_modules/chart.js/src/scales/scale.logarithmic.js")(Chart); -__webpack_require__(/*! ./scales/scale.radialLinear */ "./node_modules/chart.js/src/scales/scale.radialLinear.js")(Chart); -__webpack_require__(/*! ./scales/scale.time */ "./node_modules/chart.js/src/scales/scale.time.js")(Chart); + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } -// Controllers must be loaded after elements -// See Chart.core.datasetController.dataElementType -__webpack_require__(/*! ./controllers/controller.bar */ "./node_modules/chart.js/src/controllers/controller.bar.js")(Chart); -__webpack_require__(/*! ./controllers/controller.bubble */ "./node_modules/chart.js/src/controllers/controller.bubble.js")(Chart); -__webpack_require__(/*! ./controllers/controller.doughnut */ "./node_modules/chart.js/src/controllers/controller.doughnut.js")(Chart); -__webpack_require__(/*! ./controllers/controller.line */ "./node_modules/chart.js/src/controllers/controller.line.js")(Chart); -__webpack_require__(/*! ./controllers/controller.polarArea */ "./node_modules/chart.js/src/controllers/controller.polarArea.js")(Chart); -__webpack_require__(/*! ./controllers/controller.radar */ "./node_modules/chart.js/src/controllers/controller.radar.js")(Chart); -__webpack_require__(/*! ./controllers/controller.scatter */ "./node_modules/chart.js/src/controllers/controller.scatter.js")(Chart); + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } -__webpack_require__(/*! ./charts/Chart.Bar */ "./node_modules/chart.js/src/charts/Chart.Bar.js")(Chart); -__webpack_require__(/*! ./charts/Chart.Bubble */ "./node_modules/chart.js/src/charts/Chart.Bubble.js")(Chart); -__webpack_require__(/*! ./charts/Chart.Doughnut */ "./node_modules/chart.js/src/charts/Chart.Doughnut.js")(Chart); -__webpack_require__(/*! ./charts/Chart.Line */ "./node_modules/chart.js/src/charts/Chart.Line.js")(Chart); -__webpack_require__(/*! ./charts/Chart.PolarArea */ "./node_modules/chart.js/src/charts/Chart.PolarArea.js")(Chart); -__webpack_require__(/*! ./charts/Chart.Radar */ "./node_modules/chart.js/src/charts/Chart.Radar.js")(Chart); -__webpack_require__(/*! ./charts/Chart.Scatter */ "./node_modules/chart.js/src/charts/Chart.Scatter.js")(Chart); - -// Loading built-in plugins -var plugins = __webpack_require__(/*! ./plugins */ "./node_modules/chart.js/src/plugins/index.js"); -for (var k in plugins) { - if (plugins.hasOwnProperty(k)) { - Chart.plugins.register(plugins[k]); - } -} + if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } -Chart.platform.initialize(); + clearTimeout(context._timeout); + context._hoverState = HoverState.SHOW; -module.exports = Chart; -if (typeof window !== 'undefined') { - window.Chart = Chart; -} + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } -// DEPRECATIONS + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Legend - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -Chart.Legend = plugins.legend._element; + _proto._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $$$1(event.currentTarget).data(dataKey); -/** - * Provided for backward compatibility, not available anymore - * @namespace Chart.Title - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -Chart.Title = plugins.title._element; + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $$$1(event.currentTarget).data(dataKey, context); + } -/** - * Provided for backward compatibility, use Chart.plugins instead - * @namespace Chart.pluginService - * @deprecated since version 2.1.5 - * @todo remove at version 3 - * @private - */ -Chart.pluginService = Chart.plugins; + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } -/** - * Provided for backward compatibility, inheriting from Chart.PlugingBase has no - * effect, instead simply create/register plugins via plain JavaScript objects. - * @interface Chart.PluginBase - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ -Chart.PluginBase = Chart.Element.extend({}); + if (context._isWithActiveTrigger()) { + return; + } -/** - * Provided for backward compatibility, use Chart.helpers.canvas instead. - * @namespace Chart.canvasHelpers - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -Chart.canvasHelpers = Chart.helpers.canvas; + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; -/** - * Provided for backward compatibility, use Chart.layouts instead. - * @namespace Chart.layoutService - * @deprecated since version 2.8.0 - * @todo remove at version 3 - * @private - */ -Chart.layoutService = Chart.layouts; + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; -/***/ }), + _proto._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } -/***/ "./node_modules/chart.js/src/charts/Chart.Bar.js": -/*!*******************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.Bar.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + return false; + }; -"use strict"; + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, $$$1(this.element).data(), typeof config === 'object' && config ? config : {}); + if (typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } -module.exports = function(Chart) { + if (typeof config.title === 'number') { + config.title = config.title.toString(); + } - Chart.Bar = function(context, config) { - config.type = 'bar'; + if (typeof config.content === 'number') { + config.content = config.content.toString(); + } - return new Chart(context, config); - }; + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + }; -}; + _proto._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } -/***/ }), + return config; + }; -/***/ "./node_modules/chart.js/src/charts/Chart.Bubble.js": -/*!**********************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.Bubble.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); -"use strict"; + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + }; + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { + this._cleanTipClass(); -module.exports = function(Chart) { + this.addAttachmentClass(this._getAttachment(data.placement)); + }; - Chart.Bubble = function(context, config) { - config.type = 'bubble'; - return new Chart(context, config); - }; + _proto._fixTransition = function _fixTransition() { + var tip = this.getTipElement(); + var initConfigAnimation = this.config.animation; -}; + if (tip.getAttribute('x-placement') !== null) { + return; + } + $$$1(tip).removeClass(ClassName.FADE); + this.config.animation = false; + this.hide(); + this.show(); + this.config.animation = initConfigAnimation; + }; // Static -/***/ }), -/***/ "./node_modules/chart.js/src/charts/Chart.Doughnut.js": -/*!************************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.Doughnut.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); -"use strict"; + var _config = typeof config === 'object' && config; + if (!data && /dispose|hide/.test(config)) { + return; + } -module.exports = function(Chart) { + if (!data) { + data = new Tooltip(this, _config); + $$$1(this).data(DATA_KEY, data); + } - Chart.Doughnut = function(context, config) { - config.type = 'doughnut'; + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } - return new Chart(context, config); - }; + data[config](); + } + }); + }; -}; + _createClass(Tooltip, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); + return Tooltip; + }(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/***/ }), -/***/ "./node_modules/chart.js/src/charts/Chart.Line.js": -/*!********************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.Line.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + $$$1.fn[NAME] = Tooltip._jQueryInterface; + $$$1.fn[NAME].Constructor = Tooltip; -"use strict"; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + return Tooltip; + }($, Popper); -module.exports = function(Chart) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - Chart.Line = function(context, config) { - config.type = 'line'; + var Popover = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'popover'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = "." + DATA_KEY; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var CLASS_PREFIX = 'bs-popover'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - return new Chart(context, config); - }; + var Default = _objectSpread({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' + }); -}; + var DefaultType = _objectSpread({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + TITLE: '.popover-header', + CONTENT: '.popover-body' + }; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + INSERTED: "inserted" + EVENT_KEY, + CLICK: "click" + EVENT_KEY, + FOCUSIN: "focusin" + EVENT_KEY, + FOCUSOUT: "focusout" + EVENT_KEY, + MOUSEENTER: "mouseenter" + EVENT_KEY, + MOUSELEAVE: "mouseleave" + EVENT_KEY + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ -/***/ }), + }; -/***/ "./node_modules/chart.js/src/charts/Chart.PolarArea.js": -/*!*************************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.PolarArea.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + var Popover = + /*#__PURE__*/ + function (_Tooltip) { + _inheritsLoose(Popover, _Tooltip); -"use strict"; + function Popover() { + return _Tooltip.apply(this, arguments) || this; + } + var _proto = Popover.prototype; -module.exports = function(Chart) { + // Overrides + _proto.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; - Chart.PolarArea = function(context, config) { - config.type = 'polarArea'; + _proto.addAttachmentClass = function addAttachmentClass(attachment) { + $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + }; - return new Chart(context, config); - }; + _proto.getTipElement = function getTipElement() { + this.tip = this.tip || $$$1(this.config.template)[0]; + return this.tip; + }; -}; + _proto.setContent = function setContent() { + var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); -/***/ }), + var content = this._getContent(); -/***/ "./node_modules/chart.js/src/charts/Chart.Radar.js": -/*!*********************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.Radar.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (typeof content === 'function') { + content = content.call(this.element); + } -"use strict"; + this.setElementContent($tip.find(Selector.CONTENT), content); + $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); + }; // Private -module.exports = function(Chart) { + _proto._getContent = function _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + }; - Chart.Radar = function(context, config) { - config.type = 'radar'; + _proto._cleanTipClass = function _cleanTipClass() { + var $tip = $$$1(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); - return new Chart(context, config); - }; + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); + } + }; // Static -}; + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); -/***/ }), + var _config = typeof config === 'object' ? config : null; -/***/ "./node_modules/chart.js/src/charts/Chart.Scatter.js": -/*!***********************************************************!*\ - !*** ./node_modules/chart.js/src/charts/Chart.Scatter.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (!data && /destroy|hide/.test(config)) { + return; + } -"use strict"; + if (!data) { + data = new Popover(this, _config); + $$$1(this).data(DATA_KEY, data); + } + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } -module.exports = function(Chart) { - Chart.Scatter = function(context, config) { - config.type = 'scatter'; - return new Chart(context, config); - }; -}; + data[config](); + } + }); + }; + _createClass(Popover, null, [{ + key: "VERSION", + // Getters + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); -/***/ }), + return Popover; + }(Tooltip); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/***/ "./node_modules/chart.js/src/controllers/controller.bar.js": -/*!*****************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.bar.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; + $$$1.fn[NAME] = Popover._jQueryInterface; + $$$1.fn[NAME].Constructor = Popover; + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + return Popover; + }($); -defaults._set('bar', { - hover: { - mode: 'label' - }, + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - scales: { - xAxes: [{ - type: 'category', + var ScrollSpy = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'scrollspy'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + var Event = { + ACTIVATE: "activate" + EVENT_KEY, + SCROLL: "scroll" + EVENT_KEY, + LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + NAV_LIST_GROUP: '.nav, .list-group', + NAV_LINKS: '.nav-link', + NAV_ITEMS: '.nav-item', + LIST_ITEMS: '.list-group-item', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ - // Specific to Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, + }; - // offset settings - offset: true, + var ScrollSpy = + /*#__PURE__*/ + function () { + function ScrollSpy(element, config) { + var _this = this; - // grid line settings - gridLines: { - offsetGridLines: true - } - }], + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $$$1(this._scrollElement).on(Event.SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); - yAxes: [{ - type: 'linear' - }] - } -}); + this._process(); + } // Getters -defaults._set('horizontalBar', { - hover: { - mode: 'index', - axis: 'y' - }, - scales: { - xAxes: [{ - type: 'linear', - position: 'bottom' - }], + var _proto = ScrollSpy.prototype; - yAxes: [{ - position: 'left', - type: 'category', + // Public + _proto.refresh = function refresh() { + var _this2 = this; - // Specific to Horizontal Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, + var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = $$$1.makeArray($$$1(this._selector)); + targets.map(function (element) { + var target; + var targetSelector = Util.getSelectorFromElement(element); - // offset settings - offset: true, + if (targetSelector) { + target = $$$1(targetSelector)[0]; + } - // grid line settings - gridLines: { - offsetGridLines: true - } - }] - }, + if (target) { + var targetBCR = target.getBoundingClientRect(); - elements: { - rectangle: { - borderSkipped: 'left' - } - }, + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } - tooltips: { - callbacks: { - title: function(item, data) { - // Pick first xLabel for now - var title = ''; + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this2._offsets.push(item[0]); - if (item.length > 0) { - if (item[0].yLabel) { - title = item[0].yLabel; - } else if (data.labels.length > 0 && item[0].index < data.labels.length) { - title = data.labels[item[0].index]; - } - } + _this2._targets.push(item[1]); + }); + }; - return title; - }, + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + $$$1(this._scrollElement).off(EVENT_KEY); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; // Private - label: function(item, data) { - var datasetLabel = data.datasets[item.datasetIndex].label || ''; - return datasetLabel + ': ' + item.xLabel; - } - }, - mode: 'index', - axis: 'y' - } -}); -/** - * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. - * @private - */ -function computeMinSampleSize(scale, pixels) { - var min = scale.isHorizontal() ? scale.width : scale.height; - var ticks = scale.getTicks(); - var prev, curr, i, ilen; + _proto._getConfig = function _getConfig(config) { + config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {}); - for (i = 1, ilen = pixels.length; i < ilen; ++i) { - min = Math.min(min, pixels[i] - pixels[i - 1]); - } + if (typeof config.target !== 'string') { + var id = $$$1(config.target).attr('id'); - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - curr = scale.getPixelForTick(i); - min = i > 0 ? Math.min(min, curr - prev) : min; - prev = curr; - } + if (!id) { + id = Util.getUID(NAME); + $$$1(config.target).attr('id', id); + } - return min; -} + config.target = "#" + id; + } -/** - * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, - * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This - * mode currently always generates bars equally sized (until we introduce scriptable options?). - * @private - */ -function computeFitCategoryTraits(index, ruler, options) { - var thickness = options.barThickness; - var count = ruler.stackCount; - var curr = ruler.pixels[index]; - var size, ratio; + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; - if (helpers.isNullOrUndef(thickness)) { - size = ruler.min * options.categoryPercentage; - ratio = options.barPercentage; - } else { - // When bar thickness is enforced, category and bar percentages are ignored. - // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') - // and deprecate barPercentage since this value is ignored when thickness is absolute. - size = thickness * count; - ratio = 1; - } + _proto._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; - return { - chunk: size / count, - ratio: ratio, - start: curr - (size / 2) - }; -} + _proto._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; -/** - * Computes an "optimal" category that globally arranges bars side by side (no gap when - * percentage options are 1), based on the previous and following categories. This mode - * generates bars with different widths when data are not evenly spaced. - * @private - */ -function computeFlexCategoryTraits(index, ruler, options) { - var pixels = ruler.pixels; - var curr = pixels[index]; - var prev = index > 0 ? pixels[index - 1] : null; - var next = index < pixels.length - 1 ? pixels[index + 1] : null; - var percent = options.categoryPercentage; - var start, size; + _proto._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + }; - if (prev === null) { - // first data: its size is double based on the next point or, - // if it's also the last data, we use the scale end extremity. - prev = curr - (next === null ? ruler.end - curr : next - curr); - } + _proto._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; - if (next === null) { - // last data: its size is also double based on the previous point. - next = curr + curr - prev; - } + var scrollHeight = this._getScrollHeight(); - start = curr - ((curr - prev) / 2) * percent; - size = ((next - prev) / 2) * percent; + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - return { - chunk: size / ruler.stackCount, - ratio: options.barPercentage, - start: start - }; -} + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } -module.exports = function(Chart) { + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; - Chart.controllers.bar = Chart.DatasetController.extend({ + if (this._activeTarget !== target) { + this._activate(target); + } - dataElementType: elements.Rectangle, + return; + } - initialize: function() { - var me = this; - var meta; + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; - Chart.DatasetController.prototype.initialize.apply(me, arguments); + this._clear(); - meta = me.getMeta(); - meta.stack = me.getDataset().stack; - meta.bar = true; - }, + return; + } - update: function(reset) { - var me = this; - var rects = me.getMeta().data; - var i, ilen; + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - me._ruler = me.getRuler(); + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; - for (i = 0, ilen = rects.length; i < ilen; ++i) { - me.updateElement(rects[i], i, reset); - } - }, + _proto._activate = function _activate(target) { + this._activeTarget = target; - updateElement: function(rectangle, index, reset) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var dataset = me.getDataset(); - var custom = rectangle.custom || {}; - var rectangleOptions = chart.options.elements.rectangle; + this._clear(); - rectangle._xScale = me.getScaleForId(meta.xAxisID); - rectangle._yScale = me.getScaleForId(meta.yAxisID); - rectangle._datasetIndex = me.index; - rectangle._index = index; + var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style - rectangle._model = { - datasetLabel: dataset.label, - label: chart.data.labels[index], - borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), - borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) - }; - me.updateElementGeometry(rectangle, index, reset); + queries = queries.map(function (selector) { + return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); + }); + var $link = $$$1(queries.join(',')); - rectangle.pivot(); - }, + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // Set triggered link as active + $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active + // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor - /** - * @private - */ - updateElementGeometry: function(rectangle, index, reset) { - var me = this; - var model = rectangle._model; - var vscale = me.getValueScale(); - var base = vscale.getBasePixel(); - var horizontal = vscale.isHorizontal(); - var ruler = me._ruler || me.getRuler(); - var vpixels = me.calculateBarValuePixels(me.index, index); - var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); + $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item - model.horizontal = horizontal; - model.base = reset ? base : vpixels.base; - model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; - model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; - model.height = horizontal ? ipixels.size : undefined; - model.width = horizontal ? undefined : ipixels.size; - }, + $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + } - /** - * @private - */ - getValueScaleId: function() { - return this.getMeta().yAxisID; - }, + $$$1(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + }; - /** - * @private - */ - getIndexScaleId: function() { - return this.getMeta().xAxisID; - }, + _proto._clear = function _clear() { + $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + }; // Static - /** - * @private - */ - getValueScale: function() { - return this.getScaleForId(this.getValueScaleId()); - }, - /** - * @private - */ - getIndexScale: function() { - return this.getScaleForId(this.getIndexScaleId()); - }, + ScrollSpy._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $$$1(this).data(DATA_KEY); - /** - * Returns the stacks based on groups and bar visibility. - * @param {Number} [last] - The dataset index - * @returns {Array} The stack list - * @private - */ - _getStacks: function(last) { - var me = this; - var chart = me.chart; - var scale = me.getIndexScale(); - var stacked = scale.options.stacked; - var ilen = last === undefined ? chart.data.datasets.length : last + 1; - var stacks = []; - var i, meta; + var _config = typeof config === 'object' && config; - for (i = 0; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - if (meta.bar && chart.isDatasetVisible(i) && - (stacked === false || - (stacked === true && stacks.indexOf(meta.stack) === -1) || - (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { - stacks.push(meta.stack); - } - } + if (!data) { + data = new ScrollSpy(this, _config); + $$$1(this).data(DATA_KEY, data); + } - return stacks; - }, + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } - /** - * Returns the effective number of stacks based on groups and bar visibility. - * @private - */ - getStackCount: function() { - return this._getStacks().length; - }, + data[config](); + } + }); + }; - /** - * Returns the stack index for the given dataset based on groups and bar visibility. - * @param {Number} [datasetIndex] - The dataset index - * @param {String} [name] - The stack name to find - * @returns {Number} The stack index - * @private - */ - getStackIndex: function(datasetIndex, name) { - var stacks = this._getStacks(datasetIndex); - var index = (name !== undefined) - ? stacks.indexOf(name) - : -1; // indexOf returns -1 if element is not present + _createClass(ScrollSpy, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); - return (index === -1) - ? stacks.length - 1 - : index; - }, + return ScrollSpy; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - /** - * @private - */ - getRuler: function() { - var me = this; - var scale = me.getIndexScale(); - var stackCount = me.getStackCount(); - var datasetIndex = me.index; - var isHorizontal = scale.isHorizontal(); - var start = isHorizontal ? scale.left : scale.top; - var end = start + (isHorizontal ? scale.width : scale.height); - var pixels = []; - var i, ilen, min; - for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { - pixels.push(scale.getPixelForValue(null, i, datasetIndex)); - } + $$$1(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY)); - min = helpers.isNullOrUndef(scale.options.barThickness) - ? computeMinSampleSize(scale, pixels) - : -1; + for (var i = scrollSpys.length; i--;) { + var $spy = $$$1(scrollSpys[i]); - return { - min: min, - pixels: pixels, - start: start, - end: end, - stackCount: stackCount, - scale: scale - }; - }, + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - /** - * Note: pixel values are not clamped to the scale area. - * @private - */ - calculateBarValuePixels: function(datasetIndex, index) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var scale = me.getValueScale(); - var datasets = chart.data.datasets; - var value = scale.getRightValue(datasets[datasetIndex].data[index]); - var stacked = scale.options.stacked; - var stack = meta.stack; - var start = 0; - var i, imeta, ivalue, base, head, size; + $$$1.fn[NAME] = ScrollSpy._jQueryInterface; + $$$1.fn[NAME].Constructor = ScrollSpy; - if (stacked || (stacked === undefined && stack !== undefined)) { - for (i = 0; i < datasetIndex; ++i) { - imeta = chart.getDatasetMeta(i); + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; - if (imeta.bar && - imeta.stack === stack && - imeta.controller.getValueScaleId() === scale.id && - chart.isDatasetVisible(i)) { + return ScrollSpy; + }($); - ivalue = scale.getRightValue(datasets[i].data[index]); - if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { - start += ivalue; - } - } - } - } + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - base = scale.getPixelForValue(start); - head = scale.getPixelForValue(start + value); - size = (head - base) / 2; + var Tab = function ($$$1) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'tab'; + var VERSION = '4.1.1'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = "." + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; + var Event = { + HIDE: "hide" + EVENT_KEY, + HIDDEN: "hidden" + EVENT_KEY, + SHOW: "show" + EVENT_KEY, + SHOWN: "shown" + EVENT_KEY, + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY + }; + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + DISABLED: 'disabled', + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + DROPDOWN: '.dropdown', + NAV_LIST_GROUP: '.nav, .list-group', + ACTIVE: '.active', + ACTIVE_UL: '> li > .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', + DROPDOWN_TOGGLE: '.dropdown-toggle', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ - return { - size: size, - base: base, - head: head, - center: head + size / 2 - }; - }, + }; - /** - * @private - */ - calculateBarIndexPixels: function(datasetIndex, index, ruler) { - var me = this; - var options = ruler.scale.options; - var range = options.barThickness === 'flex' - ? computeFlexCategoryTraits(index, ruler, options) - : computeFitCategoryTraits(index, ruler, options); + var Tab = + /*#__PURE__*/ + function () { + function Tab(element) { + this._element = element; + } // Getters - var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); - var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); - var size = Math.min( - helpers.valueOrDefault(options.maxBarThickness, Infinity), - range.chunk * range.ratio); - return { - base: center - size / 2, - head: center + size / 2, - center: center, - size: size - }; - }, + var _proto = Tab.prototype; - draw: function() { - var me = this; - var chart = me.chart; - var scale = me.getValueScale(); - var rects = me.getMeta().data; - var dataset = me.getDataset(); - var ilen = rects.length; - var i = 0; + // Public + _proto.show = function show() { + var _this = this; - helpers.canvas.clipArea(chart.ctx, chart.chartArea); + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) { + return; + } - for (; i < ilen; ++i) { - if (!isNaN(scale.getRightValue(dataset.data[i]))) { - rects[i].draw(); - } - } + var target; + var previous; + var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0]; + var selector = Util.getSelectorFromElement(this._element); - helpers.canvas.unclipArea(chart.ctx); - }, - }); + if (listElement) { + var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE; + previous = $$$1.makeArray($$$1(listElement).find(itemSelector)); + previous = previous[previous.length - 1]; + } - Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ - /** - * @private - */ - getValueScaleId: function() { - return this.getMeta().xAxisID; - }, + var hideEvent = $$$1.Event(Event.HIDE, { + relatedTarget: this._element + }); + var showEvent = $$$1.Event(Event.SHOW, { + relatedTarget: previous + }); - /** - * @private - */ - getIndexScaleId: function() { - return this.getMeta().yAxisID; - } - }); -}; + if (previous) { + $$$1(previous).trigger(hideEvent); + } + $$$1(this._element).trigger(showEvent); -/***/ }), + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } -/***/ "./node_modules/chart.js/src/controllers/controller.bubble.js": -/*!********************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.bubble.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (selector) { + target = $$$1(selector)[0]; + } -"use strict"; + this._activate(this._element, listElement); + var complete = function complete() { + var hiddenEvent = $$$1.Event(Event.HIDDEN, { + relatedTarget: _this._element + }); + var shownEvent = $$$1.Event(Event.SHOWN, { + relatedTarget: previous + }); + $$$1(previous).trigger(hiddenEvent); + $$$1(_this._element).trigger(shownEvent); + }; -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + }; -defaults._set('bubble', { - hover: { - mode: 'single' - }, + _proto.dispose = function dispose() { + $$$1.removeData(this._element, DATA_KEY); + this._element = null; + }; // Private - scales: { - xAxes: [{ - type: 'linear', // bubble should probably use a linear scale by default - position: 'bottom', - id: 'x-axis-0' // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: 'linear', - position: 'left', - id: 'y-axis-0' - }] - }, - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(item, data) { - var datasetLabel = data.datasets[item.datasetIndex].label || ''; - var dataPoint = data.datasets[item.datasetIndex].data[item.index]; - return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; - } - } - } -}); + _proto._activate = function _activate(element, container, callback) { + var _this2 = this; + var activeElements; -module.exports = function(Chart) { + if (container.nodeName === 'UL') { + activeElements = $$$1(container).find(Selector.ACTIVE_UL); + } else { + activeElements = $$$1(container).children(Selector.ACTIVE); + } - Chart.controllers.bubble = Chart.DatasetController.extend({ - /** - * @protected - */ - dataElementType: elements.Point, + var active = activeElements[0]; + var isTransitioning = callback && active && $$$1(active).hasClass(ClassName.FADE); - /** - * @protected - */ - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var points = meta.data; + var complete = function complete() { + return _this2._transitionComplete(element, active, callback); + }; - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }); - }, + if (active && isTransitioning) { + var transitionDuration = Util.getTransitionDurationFromElement(active); + $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } else { + complete(); + } + }; - /** - * @protected - */ - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var options = me._resolveElementOptions(point, index); - var data = me.getDataset().data[index]; - var dsIndex = me.index; + _proto._transitionComplete = function _transitionComplete(element, active, callback) { + if (active) { + $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE); + var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; - var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); - var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); + if (dropdownChild) { + $$$1(dropdownChild).removeClass(ClassName.ACTIVE); + } - point._xScale = xScale; - point._yScale = yScale; - point._options = options; - point._datasetIndex = dsIndex; - point._index = index; - point._model = { - backgroundColor: options.backgroundColor, - borderColor: options.borderColor, - borderWidth: options.borderWidth, - hitRadius: options.hitRadius, - pointStyle: options.pointStyle, - rotation: options.rotation, - radius: reset ? 0 : options.radius, - skip: custom.skip || isNaN(x) || isNaN(y), - x: x, - y: y, - }; + if (active.getAttribute('role') === 'tab') { + active.setAttribute('aria-selected', false); + } + } - point.pivot(); - }, + $$$1(element).addClass(ClassName.ACTIVE); - /** - * @protected - */ - setHoverStyle: function(point) { - var model = point._model; - var options = point._options; - point.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; - model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); - model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); - model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); - model.radius = options.radius + options.hoverRadius; - }, + if (element.getAttribute('role') === 'tab') { + element.setAttribute('aria-selected', true); + } - /** - * @private - */ - _resolveElementOptions: function(point, index) { - var me = this; - var chart = me.chart; - var datasets = chart.data.datasets; - var dataset = datasets[me.index]; - var custom = point.custom || {}; - var options = chart.options.elements.point; - var resolve = helpers.options.resolve; - var data = dataset.data[index]; - var values = {}; - var i, ilen, key; + Util.reflow(element); + $$$1(element).addClass(ClassName.SHOW); - // Scriptable options - var context = { - chart: chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; + if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0]; - var keys = [ - 'backgroundColor', - 'borderColor', - 'borderWidth', - 'hoverBackgroundColor', - 'hoverBorderColor', - 'hoverBorderWidth', - 'hoverRadius', - 'hitRadius', - 'pointStyle', - 'rotation' - ]; + if (dropdownElement) { + $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + } - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; - values[key] = resolve([ - custom[key], - dataset[key], - options[key] - ], context, index); - } + element.setAttribute('aria-expanded', true); + } - // Custom radius resolution - values.radius = resolve([ - custom.radius, - data ? data.r : undefined, - dataset.radius, - options.radius - ], context, index); - return values; - } - }); -}; + if (callback) { + callback(); + } + }; // Static -/***/ }), + Tab._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $$$1(this); + var data = $this.data(DATA_KEY); -/***/ "./node_modules/chart.js/src/controllers/controller.doughnut.js": -/*!**********************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.doughnut.js ***! - \**********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (!data) { + data = new Tab(this); + $this.data(DATA_KEY, data); + } -"use strict"; + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + data[config](); + } + }); + }; -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + _createClass(Tab, null, [{ + key: "VERSION", + get: function get() { + return VERSION; + } + }]); -defaults._set('doughnut', { - animation: { - // Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - // Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false - }, - hover: { - mode: 'single' - }, - legendCallback: function(chart) { - var text = []; - text.push('<ul class="' + chart.id + '-legend">'); + return Tab; + }(); + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>'); - if (labels[i]) { - text.push(labels[i]); - } - text.push('</li>'); - } - } + $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); - text.push('</ul>'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc && arc.custom || {}; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); + Tab._jQueryInterface.call($$$1(this), 'show'); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + $$$1.fn[NAME] = Tab._jQueryInterface; + $$$1.fn[NAME].Constructor = Tab; - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, + $$$1.fn[NAME].noConflict = function () { + $$$1.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; + return Tab; + }($); - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - // toggle visibility of index if exists - if (meta.data[index]) { - meta.data[index].hidden = !meta.data[index].hidden; - } - } + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.1.1): index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ - chart.update(); - } - }, + (function ($$$1) { + if (typeof $$$1 === 'undefined') { + throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); + } - // The percentage of the chart that we cut out of the middle. - cutoutPercentage: 50, + var version = $$$1.fn.jquery.split(' ')[0].split('.'); + var minMajor = 1; + var ltMajor = 2; + var minMinor = 9; + var minPatch = 1; + var maxMajor = 4; - // The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, + if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); + } + })($); - // The total circumference of the chart. - circumference: Math.PI * 2.0, + exports.Util = Util; + exports.Alert = Alert; + exports.Button = Button; + exports.Carousel = Carousel; + exports.Collapse = Collapse; + exports.Dropdown = Dropdown; + exports.Modal = Modal; + exports.Popover = Popover; + exports.Scrollspy = ScrollSpy; + exports.Tab = Tab; + exports.Tooltip = Tooltip; - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - var dataLabel = data.labels[tooltipItem.index]; - var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; + Object.defineProperty(exports, '__esModule', { value: true }); - if (helpers.isArray(dataLabel)) { - // show value on first line of multiline label - // need to clone because we are changing the value - dataLabel = dataLabel.slice(); - dataLabel[0] += value; - } else { - dataLabel += value; - } +}))); +//# sourceMappingURL=bootstrap.js.map - return dataLabel; - } - } - } -}); -defaults._set('pie', helpers.clone(defaults.doughnut)); -defaults._set('pie', { - cutoutPercentage: 0 -}); +/***/ }), -module.exports = function(Chart) { +/***/ "./node_modules/bootstrap-v4-rtl/scss/bootstrap-rtl.scss": +/*!***************************************************************!*\ + !*** ./node_modules/bootstrap-v4-rtl/scss/bootstrap-rtl.scss ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ - dataElementType: elements.Arc, +var content = __webpack_require__(/*! !../../css-loader!../../postcss-loader/src??ref--6-2!../../sass-loader/lib/loader.js??ref--6-3!./bootstrap-rtl.scss */ "./node_modules/css-loader/index.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/lib/loader.js?!./node_modules/bootstrap-v4-rtl/scss/bootstrap-rtl.scss"); - linkScales: helpers.noop, +if(typeof content === 'string') content = [[module.i, content, '']]; - // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly - getRingIndex: function(datasetIndex) { - var ringIndex = 0; +var transform; +var insertInto; - for (var j = 0; j < datasetIndex; ++j) { - if (this.chart.isDatasetVisible(j)) { - ++ringIndex; - } - } - return ringIndex; - }, - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var arcOpts = opts.elements.arc; - var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; - var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; - var minSize = Math.min(availableWidth, availableHeight); - var offset = {x: 0, y: 0}; - var meta = me.getMeta(); - var cutoutPercentage = opts.cutoutPercentage; - var circumference = opts.circumference; +var options = {"hmr":true} - // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); - var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; - } +options.transform = transform +options.insertInto = undefined; - chart.borderWidth = me.getMaxBorderWidth(meta.data); - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; +var update = __webpack_require__(/*! ../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); - meta.total = me.calculateTotal(); +if(content.locals) module.exports = content.locals; - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); - me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); +if(false) {} - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, +/***/ }), - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var animationOpts = opts.animation; - var centerX = (chartArea.left + chartArea.right) / 2; - var centerY = (chartArea.top + chartArea.bottom) / 2; - var startAngle = opts.rotation; // non reset case handled later - var endAngle = opts.rotation; // non reset case handled later - var dataset = me.getDataset(); - var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); - var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; - var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; +/***/ "./node_modules/chart.js/src/chart.js": +/*!********************************************!*\ + !*** ./node_modules/chart.js/src/chart.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, +/** + * @namespace Chart + */ +var Chart = __webpack_require__(/*! ./core/core */ "./node_modules/chart.js/src/core/core.js")(); - // Desired view properties - _model: { - x: centerX + chart.offsetX, - y: centerY + chart.offsetY, - startAngle: startAngle, - endAngle: endAngle, - circumference: circumference, - outerRadius: outerRadius, - innerRadius: innerRadius, - label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) - } - }); +Chart.helpers = __webpack_require__(/*! ./helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - var model = arc._model; +// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! +__webpack_require__(/*! ./core/core.helpers */ "./node_modules/chart.js/src/core/core.helpers.js")(Chart); - // Resets the visual styles - var custom = arc.custom || {}; - var valueOrDefault = helpers.valueAtIndexOrDefault; - var elementOpts = this.chart.options.elements.arc; - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); +Chart.Animation = __webpack_require__(/*! ./core/core.animation */ "./node_modules/chart.js/src/core/core.animation.js"); +Chart.animationService = __webpack_require__(/*! ./core/core.animations */ "./node_modules/chart.js/src/core/core.animations.js"); +Chart.defaults = __webpack_require__(/*! ./core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +Chart.Element = __webpack_require__(/*! ./core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); +Chart.elements = __webpack_require__(/*! ./elements/index */ "./node_modules/chart.js/src/elements/index.js"); +Chart.Interaction = __webpack_require__(/*! ./core/core.interaction */ "./node_modules/chart.js/src/core/core.interaction.js"); +Chart.layouts = __webpack_require__(/*! ./core/core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); +Chart.platform = __webpack_require__(/*! ./platforms/platform */ "./node_modules/chart.js/src/platforms/platform.js"); +Chart.plugins = __webpack_require__(/*! ./core/core.plugins */ "./node_modules/chart.js/src/core/core.plugins.js"); +Chart.Scale = __webpack_require__(/*! ./core/core.scale */ "./node_modules/chart.js/src/core/core.scale.js"); +Chart.scaleService = __webpack_require__(/*! ./core/core.scaleService */ "./node_modules/chart.js/src/core/core.scaleService.js"); +Chart.Ticks = __webpack_require__(/*! ./core/core.ticks */ "./node_modules/chart.js/src/core/core.ticks.js"); +Chart.Tooltip = __webpack_require__(/*! ./core/core.tooltip */ "./node_modules/chart.js/src/core/core.tooltip.js"); - // Set correct angles if not resetting - if (!reset || !animationOpts.animateRotate) { - if (index === 0) { - model.startAngle = opts.rotation; - } else { - model.startAngle = me.getMeta().data[index - 1]._model.endAngle; - } +__webpack_require__(/*! ./core/core.controller */ "./node_modules/chart.js/src/core/core.controller.js")(Chart); +__webpack_require__(/*! ./core/core.datasetController */ "./node_modules/chart.js/src/core/core.datasetController.js")(Chart); - model.endAngle = model.startAngle + model.circumference; - } +__webpack_require__(/*! ./scales/scale.linearbase */ "./node_modules/chart.js/src/scales/scale.linearbase.js")(Chart); +__webpack_require__(/*! ./scales/scale.category */ "./node_modules/chart.js/src/scales/scale.category.js")(Chart); +__webpack_require__(/*! ./scales/scale.linear */ "./node_modules/chart.js/src/scales/scale.linear.js")(Chart); +__webpack_require__(/*! ./scales/scale.logarithmic */ "./node_modules/chart.js/src/scales/scale.logarithmic.js")(Chart); +__webpack_require__(/*! ./scales/scale.radialLinear */ "./node_modules/chart.js/src/scales/scale.radialLinear.js")(Chart); +__webpack_require__(/*! ./scales/scale.time */ "./node_modules/chart.js/src/scales/scale.time.js")(Chart); - arc.pivot(); - }, +// Controllers must be loaded after elements +// See Chart.core.datasetController.dataElementType +__webpack_require__(/*! ./controllers/controller.bar */ "./node_modules/chart.js/src/controllers/controller.bar.js")(Chart); +__webpack_require__(/*! ./controllers/controller.bubble */ "./node_modules/chart.js/src/controllers/controller.bubble.js")(Chart); +__webpack_require__(/*! ./controllers/controller.doughnut */ "./node_modules/chart.js/src/controllers/controller.doughnut.js")(Chart); +__webpack_require__(/*! ./controllers/controller.line */ "./node_modules/chart.js/src/controllers/controller.line.js")(Chart); +__webpack_require__(/*! ./controllers/controller.polarArea */ "./node_modules/chart.js/src/controllers/controller.polarArea.js")(Chart); +__webpack_require__(/*! ./controllers/controller.radar */ "./node_modules/chart.js/src/controllers/controller.radar.js")(Chart); +__webpack_require__(/*! ./controllers/controller.scatter */ "./node_modules/chart.js/src/controllers/controller.scatter.js")(Chart); - calculateTotal: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var total = 0; - var value; +__webpack_require__(/*! ./charts/Chart.Bar */ "./node_modules/chart.js/src/charts/Chart.Bar.js")(Chart); +__webpack_require__(/*! ./charts/Chart.Bubble */ "./node_modules/chart.js/src/charts/Chart.Bubble.js")(Chart); +__webpack_require__(/*! ./charts/Chart.Doughnut */ "./node_modules/chart.js/src/charts/Chart.Doughnut.js")(Chart); +__webpack_require__(/*! ./charts/Chart.Line */ "./node_modules/chart.js/src/charts/Chart.Line.js")(Chart); +__webpack_require__(/*! ./charts/Chart.PolarArea */ "./node_modules/chart.js/src/charts/Chart.PolarArea.js")(Chart); +__webpack_require__(/*! ./charts/Chart.Radar */ "./node_modules/chart.js/src/charts/Chart.Radar.js")(Chart); +__webpack_require__(/*! ./charts/Chart.Scatter */ "./node_modules/chart.js/src/charts/Chart.Scatter.js")(Chart); - helpers.each(meta.data, function(element, index) { - value = dataset.data[index]; - if (!isNaN(value) && !element.hidden) { - total += Math.abs(value); - } - }); +// Loading built-in plugins +var plugins = __webpack_require__(/*! ./plugins */ "./node_modules/chart.js/src/plugins/index.js"); +for (var k in plugins) { + if (plugins.hasOwnProperty(k)) { + Chart.plugins.register(plugins[k]); + } +} - /* if (total === 0) { - total = NaN; - }*/ +Chart.platform.initialize(); - return total; - }, +module.exports = Chart; +if (typeof window !== 'undefined') { + window.Chart = Chart; +} - calculateCircumference: function(value) { - var total = this.getMeta().total; - if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (Math.abs(value) / total); - } - return 0; - }, +// DEPRECATIONS - // gets the max border or hover width to properly scale pie charts - getMaxBorderWidth: function(arcs) { - var max = 0; - var index = this.index; - var length = arcs.length; - var borderWidth; - var hoverWidth; +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Legend + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +Chart.Legend = plugins.legend._element; - for (var i = 0; i < length; i++) { - borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; - hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; +/** + * Provided for backward compatibility, not available anymore + * @namespace Chart.Title + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +Chart.Title = plugins.title._element; - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; - } - return max; - } - }); -}; +/** + * Provided for backward compatibility, use Chart.plugins instead + * @namespace Chart.pluginService + * @deprecated since version 2.1.5 + * @todo remove at version 3 + * @private + */ +Chart.pluginService = Chart.plugins; + +/** + * Provided for backward compatibility, inheriting from Chart.PlugingBase has no + * effect, instead simply create/register plugins via plain JavaScript objects. + * @interface Chart.PluginBase + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ +Chart.PluginBase = Chart.Element.extend({}); + +/** + * Provided for backward compatibility, use Chart.helpers.canvas instead. + * @namespace Chart.canvasHelpers + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ +Chart.canvasHelpers = Chart.helpers.canvas; + +/** + * Provided for backward compatibility, use Chart.layouts instead. + * @namespace Chart.layoutService + * @deprecated since version 2.8.0 + * @todo remove at version 3 + * @private + */ +Chart.layoutService = Chart.layouts; /***/ }), -/***/ "./node_modules/chart.js/src/controllers/controller.line.js": -/*!******************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.line.js ***! - \******************************************************************/ +/***/ "./node_modules/chart.js/src/charts/Chart.Bar.js": +/*!*******************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.Bar.js ***! + \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); +module.exports = function(Chart) { -defaults._set('line', { - showLines: true, - spanGaps: false, + Chart.Bar = function(context, config) { + config.type = 'bar'; - hover: { - mode: 'label' - }, + return new Chart(context, config); + }; - scales: { - xAxes: [{ - type: 'category', - id: 'x-axis-0' - }], - yAxes: [{ - type: 'linear', - id: 'y-axis-0' - }] - } -}); +}; -module.exports = function(Chart) { - function lineEnabled(dataset, options) { - return helpers.valueOrDefault(dataset.showLine, options.showLines); - } +/***/ }), - Chart.controllers.line = Chart.DatasetController.extend({ +/***/ "./node_modules/chart.js/src/charts/Chart.Bubble.js": +/*!**********************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.Bubble.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - datasetElementType: elements.Line, +"use strict"; - dataElementType: elements.Point, - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var options = me.chart.options; - var lineElementOptions = options.elements.line; - var scale = me.getScaleForId(meta.yAxisID); - var i, ilen, custom; - var dataset = me.getDataset(); - var showLine = lineEnabled(dataset, options); +module.exports = function(Chart) { - // Update Line - if (showLine) { - custom = line.custom || {}; + Chart.Bubble = function(context, config) { + config.type = 'bubble'; + return new Chart(context, config); + }; - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } +}; - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - // Model - line._model = { - // Appearance - // The default behavior of lines is to break at null values, according - // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 - // This option gives lines the ability to span gaps - spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, - tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), - cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), - }; - line.pivot(); - } +/***/ }), - // Update Points - for (i = 0, ilen = points.length; i < ilen; ++i) { - me.updateElement(points[i], i, reset); - } +/***/ "./node_modules/chart.js/src/charts/Chart.Doughnut.js": +/*!************************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.Doughnut.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - if (showLine && line._model.tension !== 0) { - me.updateBezierControlPoints(); - } +"use strict"; - // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; ++i) { - points[i].pivot(); - } - }, - getPointBackgroundColor: function(point, index) { - var backgroundColor = this.chart.options.elements.point.backgroundColor; - var dataset = this.getDataset(); - var custom = point.custom || {}; +module.exports = function(Chart) { - if (custom.backgroundColor) { - backgroundColor = custom.backgroundColor; - } else if (dataset.pointBackgroundColor) { - backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); - } else if (dataset.backgroundColor) { - backgroundColor = dataset.backgroundColor; - } + Chart.Doughnut = function(context, config) { + config.type = 'doughnut'; - return backgroundColor; - }, + return new Chart(context, config); + }; - getPointBorderColor: function(point, index) { - var borderColor = this.chart.options.elements.point.borderColor; - var dataset = this.getDataset(); - var custom = point.custom || {}; +}; - if (custom.borderColor) { - borderColor = custom.borderColor; - } else if (dataset.pointBorderColor) { - borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); - } else if (dataset.borderColor) { - borderColor = dataset.borderColor; - } - return borderColor; - }, +/***/ }), - getPointBorderWidth: function(point, index) { - var borderWidth = this.chart.options.elements.point.borderWidth; - var dataset = this.getDataset(); - var custom = point.custom || {}; +/***/ "./node_modules/chart.js/src/charts/Chart.Line.js": +/*!********************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.Line.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - if (!isNaN(custom.borderWidth)) { - borderWidth = custom.borderWidth; - } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { - borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); - } else if (!isNaN(dataset.borderWidth)) { - borderWidth = dataset.borderWidth; - } +"use strict"; - return borderWidth; - }, - getPointRotation: function(point, index) { - var pointRotation = this.chart.options.elements.point.rotation; - var dataset = this.getDataset(); - var custom = point.custom || {}; +module.exports = function(Chart) { - if (!isNaN(custom.rotation)) { - pointRotation = custom.rotation; - } else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) { - pointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation); - } - return pointRotation; - }, + Chart.Line = function(context, config) { + config.type = 'line'; - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var custom = point.custom || {}; - var dataset = me.getDataset(); - var datasetIndex = me.index; - var value = dataset.data[index]; - var yScale = me.getScaleForId(meta.yAxisID); - var xScale = me.getScaleForId(meta.xAxisID); - var pointOptions = me.chart.options.elements.point; - var x, y; + return new Chart(context, config); + }; - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { - dataset.pointRadius = dataset.radius; - } - if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { - dataset.pointHitRadius = dataset.hitRadius; - } +}; - x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); - y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); - // Utility - point._xScale = xScale; - point._yScale = yScale; - point._datasetIndex = datasetIndex; - point._index = index; +/***/ }), - // Desired view properties - point._model = { - x: x, - y: y, - skip: custom.skip || isNaN(x) || isNaN(y), - // Appearance - radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), - pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), - rotation: me.getPointRotation(point, index), - backgroundColor: me.getPointBackgroundColor(point, index), - borderColor: me.getPointBorderColor(point, index), - borderWidth: me.getPointBorderWidth(point, index), - tension: meta.dataset._model ? meta.dataset._model.tension : 0, - steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, - // Tooltip - hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) - }; - }, +/***/ "./node_modules/chart.js/src/charts/Chart.PolarArea.js": +/*!*************************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.PolarArea.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - calculatePointY: function(value, index, datasetIndex) { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var sumPos = 0; - var sumNeg = 0; - var i, ds, dsMeta; +"use strict"; - if (yScale.options.stacked) { - for (i = 0; i < datasetIndex; i++) { - ds = chart.data.datasets[i]; - dsMeta = chart.getDatasetMeta(i); - if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { - var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); - if (stackedRightValue < 0) { - sumNeg += stackedRightValue || 0; - } else { - sumPos += stackedRightValue || 0; - } - } - } - var rightValue = Number(yScale.getRightValue(value)); - if (rightValue < 0) { - return yScale.getPixelForValue(sumNeg + rightValue); - } - return yScale.getPixelForValue(sumPos + rightValue); - } +module.exports = function(Chart) { - return yScale.getPixelForValue(value); - }, + Chart.PolarArea = function(context, config) { + config.type = 'polarArea'; - updateBezierControlPoints: function() { - var me = this; - var meta = me.getMeta(); - var area = me.chart.chartArea; - var points = (meta.data || []); - var i, ilen, point, model, controlPoints; + return new Chart(context, config); + }; - // Only consider points that are drawn in case the spanGaps option is used - if (meta.dataset._model.spanGaps) { - points = points.filter(function(pt) { - return !pt._model.skip; - }); - } +}; - function capControlPoint(pt, min, max) { - return Math.max(Math.min(pt, max), min); - } - if (meta.dataset._model.cubicInterpolationMode === 'monotone') { - helpers.splineCurveMonotone(points); - } else { - for (i = 0, ilen = points.length; i < ilen; ++i) { - point = points[i]; - model = point._model; - controlPoints = helpers.splineCurve( - helpers.previousItem(points, i)._model, - model, - helpers.nextItem(points, i)._model, - meta.dataset._model.tension - ); - model.controlPointPreviousX = controlPoints.previous.x; - model.controlPointPreviousY = controlPoints.previous.y; - model.controlPointNextX = controlPoints.next.x; - model.controlPointNextY = controlPoints.next.y; - } - } +/***/ }), - if (me.chart.options.elements.line.capBezierPoints) { - for (i = 0, ilen = points.length; i < ilen; ++i) { - model = points[i]._model; - model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); - model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); - model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); - model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); - } - } - }, +/***/ "./node_modules/chart.js/src/charts/Chart.Radar.js": +/*!*********************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.Radar.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - draw: function() { - var me = this; - var chart = me.chart; - var meta = me.getMeta(); - var points = meta.data || []; - var area = chart.chartArea; - var ilen = points.length; - var halfBorderWidth; - var i = 0; +"use strict"; - if (lineEnabled(me.getDataset(), chart.options)) { - halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; - helpers.canvas.clipArea(chart.ctx, { - left: area.left, - right: area.right, - top: area.top - halfBorderWidth, - bottom: area.bottom + halfBorderWidth - }); +module.exports = function(Chart) { - meta.dataset.draw(); + Chart.Radar = function(context, config) { + config.type = 'radar'; - helpers.canvas.unclipArea(chart.ctx); - } + return new Chart(context, config); + }; - // Draw the points - for (; i < ilen; ++i) { - points[i].draw(area); - } - }, +}; - setHoverStyle: function(element) { - // Point - var dataset = this.chart.data.datasets[element._datasetIndex]; - var index = element._index; - var custom = element.custom || {}; - var model = element._model; - element.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth, - radius: model.radius - }; +/***/ }), - model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); - model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); - }, - }); +/***/ "./node_modules/chart.js/src/charts/Chart.Scatter.js": +/*!***********************************************************!*\ + !*** ./node_modules/chart.js/src/charts/Chart.Scatter.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function(Chart) { + Chart.Scatter = function(context, config) { + config.type = 'scatter'; + return new Chart(context, config); + }; }; /***/ }), -/***/ "./node_modules/chart.js/src/controllers/controller.polarArea.js": -/*!***********************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.polarArea.js ***! - \***********************************************************************/ +/***/ "./node_modules/chart.js/src/controllers/controller.bar.js": +/*!*****************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.bar.js ***! + \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -9912,252 +9894,478 @@ var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/ var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -defaults._set('polarArea', { - scale: { - type: 'radialLinear', - angleLines: { - display: false - }, - gridLines: { - circular: true - }, - pointLabels: { - display: false - }, - ticks: { - beginAtZero: true - } +defaults._set('bar', { + hover: { + mode: 'label' }, - // Boolean - Whether to animate the rotation of the chart - animation: { - animateRotate: true, - animateScale: true - }, + scales: { + xAxes: [{ + type: 'category', - startAngle: -0.5 * Math.PI, - legendCallback: function(chart) { - var text = []; - text.push('<ul class="' + chart.id + '-legend">'); + // Specific to Bar Controller + categoryPercentage: 0.8, + barPercentage: 0.9, - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; + // offset settings + offset: true, - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>'); - if (labels[i]) { - text.push(labels[i]); - } - text.push('</li>'); + // grid line settings + gridLines: { + offsetGridLines: true } - } + }], - text.push('</ul>'); - return text.join(''); + yAxes: [{ + type: 'linear' + }] + } +}); + +defaults._set('horizontalBar', { + hover: { + mode: 'index', + axis: 'y' }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc.custom || {}; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + scales: { + xAxes: [{ + type: 'linear', + position: 'bottom' + }], - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, + yAxes: [{ + position: 'left', + type: 'category', - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; + // Specific to Horizontal Bar Controller + categoryPercentage: 0.8, + barPercentage: 0.9, - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; + // offset settings + offset: true, + + // grid line settings + gridLines: { + offsetGridLines: true } + }] + }, - chart.update(); + elements: { + rectangle: { + borderSkipped: 'left' } }, - // Need to override these to give a nice default tooltips: { callbacks: { - title: function() { - return ''; + title: function(item, data) { + // Pick first xLabel for now + var title = ''; + + if (item.length > 0) { + if (item[0].yLabel) { + title = item[0].yLabel; + } else if (data.labels.length > 0 && item[0].index < data.labels.length) { + title = data.labels[item[0].index]; + } + } + + return title; }, + label: function(item, data) { - return data.labels[item.index] + ': ' + item.yLabel; + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + return datasetLabel + ': ' + item.xLabel; } - } + }, + mode: 'index', + axis: 'y' } }); -module.exports = function(Chart) { +/** + * Computes the "optimal" sample size to maintain bars equally sized while preventing overlap. + * @private + */ +function computeMinSampleSize(scale, pixels) { + var min = scale.isHorizontal() ? scale.width : scale.height; + var ticks = scale.getTicks(); + var prev, curr, i, ilen; - Chart.controllers.polarArea = Chart.DatasetController.extend({ + for (i = 1, ilen = pixels.length; i < ilen; ++i) { + min = Math.min(min, pixels[i] - pixels[i - 1]); + } - dataElementType: elements.Arc, + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + curr = scale.getPixelForTick(i); + min = i > 0 ? Math.min(min, curr - prev) : min; + prev = curr; + } - linkScales: helpers.noop, + return min; +} - update: function(reset) { - var me = this; - var dataset = me.getDataset(); - var meta = me.getMeta(); - var start = me.chart.options.startAngle || 0; - var starts = me._starts = []; - var angles = me._angles = []; - var i, ilen, angle; +/** + * Computes an "ideal" category based on the absolute bar thickness or, if undefined or null, + * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This + * mode currently always generates bars equally sized (until we introduce scriptable options?). + * @private + */ +function computeFitCategoryTraits(index, ruler, options) { + var thickness = options.barThickness; + var count = ruler.stackCount; + var curr = ruler.pixels[index]; + var size, ratio; - me._updateRadius(); + if (helpers.isNullOrUndef(thickness)) { + size = ruler.min * options.categoryPercentage; + ratio = options.barPercentage; + } else { + // When bar thickness is enforced, category and bar percentages are ignored. + // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%') + // and deprecate barPercentage since this value is ignored when thickness is absolute. + size = thickness * count; + ratio = 1; + } - meta.count = me.countVisibleElements(); + return { + chunk: size / count, + ratio: ratio, + start: curr - (size / 2) + }; +} - for (i = 0, ilen = dataset.data.length; i < ilen; i++) { - starts[i] = start; - angle = me._computeAngle(i); - angles[i] = angle; - start += angle; - } +/** + * Computes an "optimal" category that globally arranges bars side by side (no gap when + * percentage options are 1), based on the previous and following categories. This mode + * generates bars with different widths when data are not evenly spaced. + * @private + */ +function computeFlexCategoryTraits(index, ruler, options) { + var pixels = ruler.pixels; + var curr = pixels[index]; + var prev = index > 0 ? pixels[index - 1] : null; + var next = index < pixels.length - 1 ? pixels[index + 1] : null; + var percent = options.categoryPercentage; + var start, size; - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); + if (prev === null) { + // first data: its size is double based on the next point or, + // if it's also the last data, we use the scale end extremity. + prev = curr - (next === null ? ruler.end - curr : next - curr); + } + + if (next === null) { + // last data: its size is also double based on the previous point. + next = curr + curr - prev; + } + + start = curr - ((curr - prev) / 2) * percent; + size = ((next - prev) / 2) * percent; + + return { + chunk: size / ruler.stackCount, + ratio: options.barPercentage, + start: start + }; +} + +module.exports = function(Chart) { + + Chart.controllers.bar = Chart.DatasetController.extend({ + + dataElementType: elements.Rectangle, + + initialize: function() { + var me = this; + var meta; + + Chart.DatasetController.prototype.initialize.apply(me, arguments); + + meta = me.getMeta(); + meta.stack = me.getDataset().stack; + meta.bar = true; + }, + + update: function(reset) { + var me = this; + var rects = me.getMeta().data; + var i, ilen; + + me._ruler = me.getRuler(); + + for (i = 0, ilen = rects.length; i < ilen; ++i) { + me.updateElement(rects[i], i, reset); + } + }, + + updateElement: function(rectangle, index, reset) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var dataset = me.getDataset(); + var custom = rectangle.custom || {}; + var rectangleOptions = chart.options.elements.rectangle; + + rectangle._xScale = me.getScaleForId(meta.xAxisID); + rectangle._yScale = me.getScaleForId(meta.yAxisID); + rectangle._datasetIndex = me.index; + rectangle._index = index; + + rectangle._model = { + datasetLabel: dataset.label, + label: chart.data.labels[index], + borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, + backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) + }; + + me.updateElementGeometry(rectangle, index, reset); + + rectangle.pivot(); }, /** * @private */ - _updateRadius: function() { + updateElementGeometry: function(rectangle, index, reset) { var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var opts = chart.options; - var arcOpts = opts.elements.arc; - var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); + var model = rectangle._model; + var vscale = me.getValueScale(); + var base = vscale.getBasePixel(); + var horizontal = vscale.isHorizontal(); + var ruler = me._ruler || me.getRuler(); + var vpixels = me.calculateBarValuePixels(me.index, index); + var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); - chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); - chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + model.horizontal = horizontal; + model.base = reset ? base : vpixels.base; + model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; + model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; + model.height = horizontal ? ipixels.size : undefined; + model.width = horizontal ? undefined : ipixels.size; + }, - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); - me.innerRadius = me.outerRadius - chart.radiusLength; + /** + * @private + */ + getValueScaleId: function() { + return this.getMeta().yAxisID; }, - updateElement: function(arc, index, reset) { + /** + * @private + */ + getIndexScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + getValueScale: function() { + return this.getScaleForId(this.getValueScaleId()); + }, + + /** + * @private + */ + getIndexScale: function() { + return this.getScaleForId(this.getIndexScaleId()); + }, + + /** + * Returns the stacks based on groups and bar visibility. + * @param {Number} [last] - The dataset index + * @returns {Array} The stack list + * @private + */ + _getStacks: function(last) { var me = this; var chart = me.chart; - var dataset = me.getDataset(); - var opts = chart.options; - var animationOpts = opts.animation; - var scale = chart.scale; - var labels = chart.data.labels; + var scale = me.getIndexScale(); + var stacked = scale.options.stacked; + var ilen = last === undefined ? chart.data.datasets.length : last + 1; + var stacks = []; + var i, meta; - var centerX = scale.xCenter; - var centerY = scale.yCenter; + for (i = 0; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + if (meta.bar && chart.isDatasetVisible(i) && + (stacked === false || + (stacked === true && stacks.indexOf(meta.stack) === -1) || + (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { + stacks.push(meta.stack); + } + } - // var negHalfPI = -0.5 * Math.PI; - var datasetStartAngle = opts.startAngle; - var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var startAngle = me._starts[index]; - var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); + return stacks; + }, - var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + /** + * Returns the effective number of stacks based on groups and bar visibility. + * @private + */ + getStackCount: function() { + return this._getStacks().length; + }, - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, + /** + * Returns the stack index for the given dataset based on groups and bar visibility. + * @param {Number} [datasetIndex] - The dataset index + * @param {String} [name] - The stack name to find + * @returns {Number} The stack index + * @private + */ + getStackIndex: function(datasetIndex, name) { + var stacks = this._getStacks(datasetIndex); + var index = (name !== undefined) + ? stacks.indexOf(name) + : -1; // indexOf returns -1 if element is not present - // Desired view properties - _model: { - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius: reset ? resetRadius : distance, - startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, - endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, - label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) - } - }); + return (index === -1) + ? stacks.length - 1 + : index; + }, - // Apply border and fill style - var elementOpts = this.chart.options.elements.arc; - var custom = arc.custom || {}; - var valueOrDefault = helpers.valueAtIndexOrDefault; - var model = arc._model; + /** + * @private + */ + getRuler: function() { + var me = this; + var scale = me.getIndexScale(); + var stackCount = me.getStackCount(); + var datasetIndex = me.index; + var isHorizontal = scale.isHorizontal(); + var start = isHorizontal ? scale.left : scale.top; + var end = start + (isHorizontal ? scale.width : scale.height); + var pixels = []; + var i, ilen, min; - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); + for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { + pixels.push(scale.getPixelForValue(null, i, datasetIndex)); + } - arc.pivot(); + min = helpers.isNullOrUndef(scale.options.barThickness) + ? computeMinSampleSize(scale, pixels) + : -1; + + return { + min: min, + pixels: pixels, + start: start, + end: end, + stackCount: stackCount, + scale: scale + }; }, - countVisibleElements: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var count = 0; + /** + * Note: pixel values are not clamped to the scale area. + * @private + */ + calculateBarValuePixels: function(datasetIndex, index) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var scale = me.getValueScale(); + var datasets = chart.data.datasets; + var value = scale.getRightValue(datasets[datasetIndex].data[index]); + var stacked = scale.options.stacked; + var stack = meta.stack; + var start = 0; + var i, imeta, ivalue, base, head, size; - helpers.each(meta.data, function(element, index) { - if (!isNaN(dataset.data[index]) && !element.hidden) { - count++; + if (stacked || (stacked === undefined && stack !== undefined)) { + for (i = 0; i < datasetIndex; ++i) { + imeta = chart.getDatasetMeta(i); + + if (imeta.bar && + imeta.stack === stack && + imeta.controller.getValueScaleId() === scale.id && + chart.isDatasetVisible(i)) { + + ivalue = scale.getRightValue(datasets[i].data[index]); + if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { + start += ivalue; + } + } } - }); + } - return count; + base = scale.getPixelForValue(start); + head = scale.getPixelForValue(start + value); + size = (head - base) / 2; + + return { + size: size, + base: base, + head: head, + center: head + size / 2 + }; }, /** * @private */ - _computeAngle: function(index) { + calculateBarIndexPixels: function(datasetIndex, index, ruler) { var me = this; - var count = this.getMeta().count; + var options = ruler.scale.options; + var range = options.barThickness === 'flex' + ? computeFlexCategoryTraits(index, ruler, options) + : computeFitCategoryTraits(index, ruler, options); + + var stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack); + var center = range.start + (range.chunk * stackIndex) + (range.chunk / 2); + var size = Math.min( + helpers.valueOrDefault(options.maxBarThickness, Infinity), + range.chunk * range.ratio); + + return { + base: center - size / 2, + head: center + size / 2, + center: center, + size: size + }; + }, + + draw: function() { + var me = this; + var chart = me.chart; + var scale = me.getValueScale(); + var rects = me.getMeta().data; var dataset = me.getDataset(); - var meta = me.getMeta(); + var ilen = rects.length; + var i = 0; - if (isNaN(dataset.data[index]) || meta.data[index].hidden) { - return 0; + helpers.canvas.clipArea(chart.ctx, chart.chartArea); + + for (; i < ilen; ++i) { + if (!isNaN(scale.getRightValue(dataset.data[i]))) { + rects[i].draw(); + } } - // Scriptable options - var context = { - chart: me.chart, - dataIndex: index, - dataset: dataset, - datasetIndex: me.index - }; + helpers.canvas.unclipArea(chart.ctx); + }, + }); - return helpers.options.resolve([ - me.chart.options.elements.arc.angle, - (2 * Math.PI) / count - ], context, index); + Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ + /** + * @private + */ + getValueScaleId: function() { + return this.getMeta().xAxisID; + }, + + /** + * @private + */ + getIndexScaleId: function() { + return this.getMeta().yAxisID; } }); }; @@ -10165,10 +10373,10 @@ module.exports = function(Chart) { /***/ }), -/***/ "./node_modules/chart.js/src/controllers/controller.radar.js": -/*!*******************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.radar.js ***! - \*******************************************************************/ +/***/ "./node_modules/chart.js/src/controllers/controller.bubble.js": +/*!********************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.bubble.js ***! + \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -10179,171 +10387,181 @@ var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/ var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -defaults._set('radar', { - scale: { - type: 'radialLinear' +defaults._set('bubble', { + hover: { + mode: 'single' }, - elements: { - line: { - tension: 0 // no bezier in radar + + scales: { + xAxes: [{ + type: 'linear', // bubble should probably use a linear scale by default + position: 'bottom', + id: 'x-axis-0' // need an ID so datasets can reference the scale + }], + yAxes: [{ + type: 'linear', + position: 'left', + id: 'y-axis-0' + }] + }, + + tooltips: { + callbacks: { + title: function() { + // Title doesn't make sense for scatter since we format the data as a point + return ''; + }, + label: function(item, data) { + var datasetLabel = data.datasets[item.datasetIndex].label || ''; + var dataPoint = data.datasets[item.datasetIndex].data[item.index]; + return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; + } } } }); -module.exports = function(Chart) { - - Chart.controllers.radar = Chart.DatasetController.extend({ - datasetElementType: elements.Line, +module.exports = function(Chart) { + Chart.controllers.bubble = Chart.DatasetController.extend({ + /** + * @protected + */ dataElementType: elements.Point, - linkScales: helpers.noop, - + /** + * @protected + */ update: function(reset) { var me = this; var meta = me.getMeta(); - var line = meta.dataset; var points = meta.data; - var custom = line.custom || {}; - var dataset = me.getDataset(); - var lineElementOptions = me.chart.options.elements.line; - var scale = me.chart.scale; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - helpers.extend(meta.dataset, { - // Utility - _datasetIndex: me.index, - _scale: scale, - // Data - _children: points, - _loop: true, - // Model - _model: { - // Appearance - tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - } - }); - - meta.dataset.pivot(); // Update Points helpers.each(points, function(point, index) { me.updateElement(point, index, reset); - }, me); - - // Update bezier control points - me.updateBezierControlPoints(); + }); }, + + /** + * @protected + */ updateElement: function(point, index, reset) { var me = this; + var meta = me.getMeta(); var custom = point.custom || {}; - var dataset = me.getDataset(); - var scale = me.chart.scale; - var pointElementOptions = me.chart.options.elements.point; - var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + var xScale = me.getScaleForId(meta.xAxisID); + var yScale = me.getScaleForId(meta.yAxisID); + var options = me._resolveElementOptions(point, index); + var data = me.getDataset().data[index]; + var dsIndex = me.index; - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { - dataset.pointRadius = dataset.radius; - } - if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { - dataset.pointHitRadius = dataset.hitRadius; - } + var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); + var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); - helpers.extend(point, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, + point._xScale = xScale; + point._yScale = yScale; + point._options = options; + point._datasetIndex = dsIndex; + point._index = index; + point._model = { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + hitRadius: options.hitRadius, + pointStyle: options.pointStyle, + rotation: options.rotation, + radius: reset ? 0 : options.radius, + skip: custom.skip || isNaN(x) || isNaN(y), + x: x, + y: y, + }; - // Desired view properties - _model: { - x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales - y: reset ? scale.yCenter : pointPosition.y, - - // Appearance - tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), - radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), - borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), - pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), - rotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation), - - // Tooltip - hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) - } - }); - - point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); - }, - updateBezierControlPoints: function() { - var chartArea = this.chart.chartArea; - var meta = this.getMeta(); - - helpers.each(meta.data, function(point, index) { - var model = point._model; - var controlPoints = helpers.splineCurve( - helpers.previousItem(meta.data, index, true)._model, - model, - helpers.nextItem(meta.data, index, true)._model, - model.tension - ); - - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); - model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); - - model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); - model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); - - // Now pivot the point for animation - point.pivot(); - }); + point.pivot(); }, + /** + * @protected + */ setHoverStyle: function(point) { - // Point - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; var model = point._model; - + var options = point._options; point.$previousStyle = { backgroundColor: model.backgroundColor, borderColor: model.borderColor, borderWidth: model.borderWidth, radius: model.radius }; - - model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); + model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); + model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); + model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); + model.radius = options.radius + options.hoverRadius; }, + + /** + * @private + */ + _resolveElementOptions: function(point, index) { + var me = this; + var chart = me.chart; + var datasets = chart.data.datasets; + var dataset = datasets[me.index]; + var custom = point.custom || {}; + var options = chart.options.elements.point; + var resolve = helpers.options.resolve; + var data = dataset.data[index]; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var keys = [ + 'backgroundColor', + 'borderColor', + 'borderWidth', + 'hoverBackgroundColor', + 'hoverBorderColor', + 'hoverBorderWidth', + 'hoverRadius', + 'hitRadius', + 'pointStyle', + 'rotation' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + dataset[key], + options[key] + ], context, index); + } + + // Custom radius resolution + values.radius = resolve([ + custom.radius, + data ? data.r : undefined, + dataset.radius, + options.radius + ], context, index); + return values; + } }); }; /***/ }), -/***/ "./node_modules/chart.js/src/controllers/controller.scatter.js": -/*!*********************************************************************!*\ - !*** ./node_modules/chart.js/src/controllers/controller.scatter.js ***! - \*********************************************************************/ +/***/ "./node_modules/chart.js/src/controllers/controller.doughnut.js": +/*!**********************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.doughnut.js ***! + \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -10351,2359 +10569,2332 @@ module.exports = function(Chart) { var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -defaults._set('scatter', { +defaults._set('doughnut', { + animation: { + // Boolean - Whether we animate the rotation of the Doughnut + animateRotate: true, + // Boolean - Whether we animate scaling the Doughnut from the centre + animateScale: false + }, hover: { mode: 'single' }, + legendCallback: function(chart) { + var text = []; + text.push('<ul class="' + chart.id + '-legend">'); - scales: { - xAxes: [{ - id: 'x-axis-1', // need an ID so datasets can reference the scale - type: 'linear', // scatter should not use a category axis - position: 'bottom' - }], - yAxes: [{ - id: 'y-axis-1', - type: 'linear', - position: 'left' - }] - }, - - showLines: false, + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; - tooltips: { - callbacks: { - title: function() { - return ''; // doesn't make sense for scatter since data are formatted as a point - }, - label: function(item) { - return '(' + item.xLabel + ', ' + item.yLabel + ')'; + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>'); + if (labels[i]) { + text.push(labels[i]); + } + text.push('</li>'); } } - } -}); - -module.exports = function(Chart) { - // Scatter charts use line controllers - Chart.controllers.scatter = Chart.controllers.line; + text.push('</ul>'); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc && arc.custom || {}; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var arcOpts = chart.options.elements.arc; + var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); + var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); + var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); -}; + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; + } + }, -/***/ }), + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; -/***/ "./node_modules/chart.js/src/core/core.animation.js": -/*!**********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.animation.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + // toggle visibility of index if exists + if (meta.data[index]) { + meta.data[index].hidden = !meta.data[index].hidden; + } + } -"use strict"; + chart.update(); + } + }, + // The percentage of the chart that we cut out of the middle. + cutoutPercentage: 50, -var Element = __webpack_require__(/*! ./core.element */ "./node_modules/chart.js/src/core/core.element.js"); + // The rotation of the chart, where the first data arc begins. + rotation: Math.PI * -0.5, -var exports = module.exports = Element.extend({ - chart: null, // the animation associated chart instance - currentStep: 0, // the current animation step - numSteps: 60, // default number of steps - easing: '', // the easing to use for this animation - render: null, // render function used by the animation service + // The total circumference of the chart. + circumference: Math.PI * 2.0, - onAnimationProgress: null, // user specified callback to fire on each step of the animation - onAnimationComplete: null, // user specified callback to fire when the animation finishes -}); + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(tooltipItem, data) { + var dataLabel = data.labels[tooltipItem.index]; + var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; -// DEPRECATIONS + if (helpers.isArray(dataLabel)) { + // show value on first line of multiline label + // need to clone because we are changing the value + dataLabel = dataLabel.slice(); + dataLabel[0] += value; + } else { + dataLabel += value; + } -/** - * Provided for backward compatibility, use Chart.Animation instead - * @prop Chart.Animation#animationObject - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ -Object.defineProperty(exports.prototype, 'animationObject', { - get: function() { - return this; + return dataLabel; + } + } } }); -/** - * Provided for backward compatibility, use Chart.Animation#chart instead - * @prop Chart.Animation#chartInstance - * @deprecated since version 2.6.0 - * @todo remove at version 3 - */ -Object.defineProperty(exports.prototype, 'chartInstance', { - get: function() { - return this.chart; - }, - set: function(value) { - this.chart = value; - } +defaults._set('pie', helpers.clone(defaults.doughnut)); +defaults._set('pie', { + cutoutPercentage: 0 }); +module.exports = function(Chart) { -/***/ }), - -/***/ "./node_modules/chart.js/src/core/core.animations.js": -/*!***********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.animations.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ -"use strict"; -/* global window: false */ + dataElementType: elements.Arc, + linkScales: helpers.noop, -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly + getRingIndex: function(datasetIndex) { + var ringIndex = 0; -defaults._set('global', { - animation: { - duration: 1000, - easing: 'easeOutQuart', - onProgress: helpers.noop, - onComplete: helpers.noop - } -}); + for (var j = 0; j < datasetIndex; ++j) { + if (this.chart.isDatasetVisible(j)) { + ++ringIndex; + } + } -module.exports = { - frameDuration: 17, - animations: [], - dropFrames: 0, - request: null, + return ringIndex; + }, - /** - * @param {Chart} chart - The chart to animate. - * @param {Chart.Animation} animation - The animation that we will animate. - * @param {Number} duration - The animation duration in ms. - * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions - */ - addAnimation: function(chart, animation, duration, lazy) { - var animations = this.animations; - var i, ilen; + update: function(reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var arcOpts = opts.elements.arc; + var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; + var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; + var minSize = Math.min(availableWidth, availableHeight); + var offset = {x: 0, y: 0}; + var meta = me.getMeta(); + var cutoutPercentage = opts.cutoutPercentage; + var circumference = opts.circumference; - animation.chart = chart; + // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc + if (circumference < Math.PI * 2.0) { + var startAngle = opts.rotation % (Math.PI * 2.0); + startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); + var endAngle = startAngle + circumference; + var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; + var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; + var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); + var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); + var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); + var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); + var cutout = cutoutPercentage / 100.0; + var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; + var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; + var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; + minSize = Math.min(availableWidth / size.width, availableHeight / size.height); + offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; + } - if (!lazy) { - chart.animating = true; - } + chart.borderWidth = me.getMaxBorderWidth(meta.data); + chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); + chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); + chart.offsetX = offset.x * chart.outerRadius; + chart.offsetY = offset.y * chart.outerRadius; - for (i = 0, ilen = animations.length; i < ilen; ++i) { - if (animations[i].chart === chart) { - animations[i] = animation; - return; - } - } + meta.total = me.calculateTotal(); - animations.push(animation); + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); + me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); - // If there are no animations queued, manually kickstart a digest, for lack of a better word - if (animations.length === 1) { - this.requestAnimationFrame(); - } - }, + helpers.each(meta.data, function(arc, index) { + me.updateElement(arc, index, reset); + }); + }, - cancelAnimation: function(chart) { - var index = helpers.findIndex(this.animations, function(animation) { - return animation.chart === chart; - }); + updateElement: function(arc, index, reset) { + var me = this; + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var animationOpts = opts.animation; + var centerX = (chartArea.left + chartArea.right) / 2; + var centerY = (chartArea.top + chartArea.bottom) / 2; + var startAngle = opts.rotation; // non reset case handled later + var endAngle = opts.rotation; // non reset case handled later + var dataset = me.getDataset(); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); + var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; + var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; - if (index !== -1) { - this.animations.splice(index, 1); - chart.animating = false; - } - }, + helpers.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, - requestAnimationFrame: function() { - var me = this; - if (me.request === null) { - // Skip animation frame requests until the active one is executed. - // This can happen when processing mouse events, e.g. 'mousemove' - // and 'mouseout' events will trigger multiple renders. - me.request = helpers.requestAnimFrame.call(window, function() { - me.request = null; - me.startDigest(); + // Desired view properties + _model: { + x: centerX + chart.offsetX, + y: centerY + chart.offsetY, + startAngle: startAngle, + endAngle: endAngle, + circumference: circumference, + outerRadius: outerRadius, + innerRadius: innerRadius, + label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + } }); - } - }, - /** - * @private - */ - startDigest: function() { - var me = this; - var startTime = Date.now(); - var framesToDrop = 0; + var model = arc._model; - if (me.dropFrames > 1) { - framesToDrop = Math.floor(me.dropFrames); - me.dropFrames = me.dropFrames % 1; - } + // Resets the visual styles + var custom = arc.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var elementOpts = this.chart.options.elements.arc; + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); - me.advance(1 + framesToDrop); + // Set correct angles if not resetting + if (!reset || !animationOpts.animateRotate) { + if (index === 0) { + model.startAngle = opts.rotation; + } else { + model.startAngle = me.getMeta().data[index - 1]._model.endAngle; + } - var endTime = Date.now(); + model.endAngle = model.startAngle + model.circumference; + } - me.dropFrames += (endTime - startTime) / me.frameDuration; + arc.pivot(); + }, - // Do we have more stuff to animate? - if (me.animations.length > 0) { - me.requestAnimationFrame(); - } - }, + calculateTotal: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var total = 0; + var value; - /** - * @private - */ - advance: function(count) { - var animations = this.animations; - var animation, chart; - var i = 0; + helpers.each(meta.data, function(element, index) { + value = dataset.data[index]; + if (!isNaN(value) && !element.hidden) { + total += Math.abs(value); + } + }); - while (i < animations.length) { - animation = animations[i]; - chart = animation.chart; + /* if (total === 0) { + total = NaN; + }*/ - animation.currentStep = (animation.currentStep || 0) + count; - animation.currentStep = Math.min(animation.currentStep, animation.numSteps); + return total; + }, - helpers.callback(animation.render, [chart, animation], chart); - helpers.callback(animation.onAnimationProgress, [animation], chart); + calculateCircumference: function(value) { + var total = this.getMeta().total; + if (total > 0 && !isNaN(value)) { + return (Math.PI * 2.0) * (Math.abs(value) / total); + } + return 0; + }, - if (animation.currentStep >= animation.numSteps) { - helpers.callback(animation.onAnimationComplete, [animation], chart); - chart.animating = false; - animations.splice(i, 1); - } else { - ++i; + // gets the max border or hover width to properly scale pie charts + getMaxBorderWidth: function(arcs) { + var max = 0; + var index = this.index; + var length = arcs.length; + var borderWidth; + var hoverWidth; + + for (var i = 0; i < length; i++) { + borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; + hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; + + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; } + return max; } - } + }); }; /***/ }), -/***/ "./node_modules/chart.js/src/core/core.controller.js": -/*!***********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.controller.js ***! - \***********************************************************/ +/***/ "./node_modules/chart.js/src/controllers/controller.line.js": +/*!******************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.line.js ***! + \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Animation = __webpack_require__(/*! ./core.animation */ "./node_modules/chart.js/src/core/core.animation.js"); -var animations = __webpack_require__(/*! ./core.animations */ "./node_modules/chart.js/src/core/core.animations.js"); -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -var Interaction = __webpack_require__(/*! ./core.interaction */ "./node_modules/chart.js/src/core/core.interaction.js"); -var layouts = __webpack_require__(/*! ./core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); -var platform = __webpack_require__(/*! ../platforms/platform */ "./node_modules/chart.js/src/platforms/platform.js"); -var plugins = __webpack_require__(/*! ./core.plugins */ "./node_modules/chart.js/src/core/core.plugins.js"); -var scaleService = __webpack_require__(/*! ../core/core.scaleService */ "./node_modules/chart.js/src/core/core.scaleService.js"); -var Tooltip = __webpack_require__(/*! ./core.tooltip */ "./node_modules/chart.js/src/core/core.tooltip.js"); - -module.exports = function(Chart) { - - // Create a dictionary of chart types, to allow for extension of existing types - Chart.types = {}; - - // Store a reference to each instance - allowing us to globally resize chart instances on window resize. - // Destroy method on the chart will remove the instance of the chart from this reference. - Chart.instances = {}; - - // Controllers available for dataset visualization eg. bar, line, slice, etc. - Chart.controllers = {}; - - /** - * Initializes the given config with global and chart default values. - */ - function initConfig(config) { - config = config || {}; - // Do NOT use configMerge() for the data object because this method merges arrays - // and so would change references to labels and datasets, preventing data updates. - var data = config.data = config.data || {}; - data.datasets = data.datasets || []; - data.labels = data.labels || []; +defaults._set('line', { + showLines: true, + spanGaps: false, - config.options = helpers.configMerge( - defaults.global, - defaults[config.type], - config.options || {}); + hover: { + mode: 'label' + }, - return config; + scales: { + xAxes: [{ + type: 'category', + id: 'x-axis-0' + }], + yAxes: [{ + type: 'linear', + id: 'y-axis-0' + }] } +}); - /** - * Updates the config of the chart - * @param chart {Chart} chart to update the options for - */ - function updateConfig(chart) { - var newOptions = chart.options; +module.exports = function(Chart) { - helpers.each(chart.scales, function(scale) { - layouts.removeBox(chart, scale); - }); + function lineEnabled(dataset, options) { + return helpers.valueOrDefault(dataset.showLine, options.showLines); + } - newOptions = helpers.configMerge( - Chart.defaults.global, - Chart.defaults[chart.config.type], - newOptions); + Chart.controllers.line = Chart.DatasetController.extend({ - chart.options = chart.config.options = newOptions; - chart.ensureScalesHaveIDs(); - chart.buildOrUpdateScales(); - // Tooltip - chart.tooltip._options = newOptions.tooltips; - chart.tooltip.initialize(); - } + datasetElementType: elements.Line, - function positionIsHorizontal(position) { - return position === 'top' || position === 'bottom'; - } + dataElementType: elements.Point, - helpers.extend(Chart.prototype, /** @lends Chart */ { - /** - * @private - */ - construct: function(item, config) { + update: function(reset) { var me = this; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data || []; + var options = me.chart.options; + var lineElementOptions = options.elements.line; + var scale = me.getScaleForId(meta.yAxisID); + var i, ilen, custom; + var dataset = me.getDataset(); + var showLine = lineEnabled(dataset, options); - config = initConfig(config); - - var context = platform.acquireContext(item, config); - var canvas = context && context.canvas; - var height = canvas && canvas.height; - var width = canvas && canvas.width; + // Update Line + if (showLine) { + custom = line.custom || {}; - me.id = helpers.uid(); - me.ctx = context; - me.canvas = canvas; - me.config = config; - me.width = width; - me.height = height; - me.aspectRatio = height ? width / height : null; - me.options = config.options; - me._bufferedRender = false; + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; + } - /** - * Provided for backward compatibility, Chart and Chart.Controller have been merged, - * the "instance" still need to be defined since it might be called from plugins. - * @prop Chart#chart - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ - me.chart = me; - me.controller = me; // chart.chart.controller #inception + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + // Model + line._model = { + // Appearance + // The default behavior of lines is to break at null values, according + // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 + // This option gives lines the ability to span gaps + spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), + borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), + borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), + borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), + borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), + borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), + borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), + fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), + steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), + cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), + }; - // Add the chart instance to the global namespace - Chart.instances[me.id] = me; + line.pivot(); + } - // Define alias to the config data: `chart.data === chart.config.data` - Object.defineProperty(me, 'data', { - get: function() { - return me.config.data; - }, - set: function(value) { - me.config.data = value; - } - }); + // Update Points + for (i = 0, ilen = points.length; i < ilen; ++i) { + me.updateElement(points[i], i, reset); + } - if (!context || !canvas) { - // The given item is not a compatible context2d element, let's return before finalizing - // the chart initialization but after setting basic chart / controller properties that - // can help to figure out that the chart is not valid (e.g chart.canvas !== null); - // https://github.com/chartjs/Chart.js/issues/2807 - console.error("Failed to create chart: can't acquire context from the given item"); - return; + if (showLine && line._model.tension !== 0) { + me.updateBezierControlPoints(); } - me.initialize(); - me.update(); + // Now pivot the point for animation + for (i = 0, ilen = points.length; i < ilen; ++i) { + points[i].pivot(); + } }, - /** - * @private - */ - initialize: function() { - var me = this; + getPointBackgroundColor: function(point, index) { + var backgroundColor = this.chart.options.elements.point.backgroundColor; + var dataset = this.getDataset(); + var custom = point.custom || {}; - // Before init plugin notification - plugins.notify(me, 'beforeInit'); + if (custom.backgroundColor) { + backgroundColor = custom.backgroundColor; + } else if (dataset.pointBackgroundColor) { + backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); + } else if (dataset.backgroundColor) { + backgroundColor = dataset.backgroundColor; + } - helpers.retinaScale(me, me.options.devicePixelRatio); + return backgroundColor; + }, - me.bindEvents(); + getPointBorderColor: function(point, index) { + var borderColor = this.chart.options.elements.point.borderColor; + var dataset = this.getDataset(); + var custom = point.custom || {}; - if (me.options.responsive) { - // Initial resize before chart draws (must be silent to preserve initial animations). - me.resize(true); + if (custom.borderColor) { + borderColor = custom.borderColor; + } else if (dataset.pointBorderColor) { + borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); + } else if (dataset.borderColor) { + borderColor = dataset.borderColor; } - // Make sure scales have IDs and are built before we build any controllers. - me.ensureScalesHaveIDs(); - me.buildOrUpdateScales(); - me.initToolTip(); + return borderColor; + }, - // After init plugin notification - plugins.notify(me, 'afterInit'); + getPointBorderWidth: function(point, index) { + var borderWidth = this.chart.options.elements.point.borderWidth; + var dataset = this.getDataset(); + var custom = point.custom || {}; - return me; - }, + if (!isNaN(custom.borderWidth)) { + borderWidth = custom.borderWidth; + } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { + borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); + } else if (!isNaN(dataset.borderWidth)) { + borderWidth = dataset.borderWidth; + } - clear: function() { - helpers.canvas.clear(this); - return this; + return borderWidth; }, - stop: function() { - // Stops any current animation loop occurring - animations.cancelAnimation(this); - return this; + getPointRotation: function(point, index) { + var pointRotation = this.chart.options.elements.point.rotation; + var dataset = this.getDataset(); + var custom = point.custom || {}; + + if (!isNaN(custom.rotation)) { + pointRotation = custom.rotation; + } else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) { + pointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation); + } + return pointRotation; }, - resize: function(silent) { + updateElement: function(point, index, reset) { var me = this; - var options = me.options; - var canvas = me.canvas; - var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; - - // the canvas render width and height will be casted to integers so make sure that - // the canvas display style uses the same integer values to avoid blurring effect. - - // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed - var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); - var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); + var meta = me.getMeta(); + var custom = point.custom || {}; + var dataset = me.getDataset(); + var datasetIndex = me.index; + var value = dataset.data[index]; + var yScale = me.getScaleForId(meta.yAxisID); + var xScale = me.getScaleForId(meta.xAxisID); + var pointOptions = me.chart.options.elements.point; + var x, y; - if (me.width === newWidth && me.height === newHeight) { - return; + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; + } + if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { + dataset.pointHitRadius = dataset.hitRadius; } - canvas.width = me.width = newWidth; - canvas.height = me.height = newHeight; - canvas.style.width = newWidth + 'px'; - canvas.style.height = newHeight + 'px'; + x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); + y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); - helpers.retinaScale(me, options.devicePixelRatio); + // Utility + point._xScale = xScale; + point._yScale = yScale; + point._datasetIndex = datasetIndex; + point._index = index; - if (!silent) { - // Notify any plugins about the resize - var newSize = {width: newWidth, height: newHeight}; - plugins.notify(me, 'resize', [newSize]); + // Desired view properties + point._model = { + x: x, + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), + pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), + rotation: me.getPointRotation(point, index), + backgroundColor: me.getPointBackgroundColor(point, index), + borderColor: me.getPointBorderColor(point, index), + borderWidth: me.getPointBorderWidth(point, index), + tension: meta.dataset._model ? meta.dataset._model.tension : 0, + steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, + // Tooltip + hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) + }; + }, - // Notify of resize - if (me.options.onResize) { - me.options.onResize(me, newSize); + calculatePointY: function(value, index, datasetIndex) { + var me = this; + var chart = me.chart; + var meta = me.getMeta(); + var yScale = me.getScaleForId(meta.yAxisID); + var sumPos = 0; + var sumNeg = 0; + var i, ds, dsMeta; + + if (yScale.options.stacked) { + for (i = 0; i < datasetIndex; i++) { + ds = chart.data.datasets[i]; + dsMeta = chart.getDatasetMeta(i); + if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { + var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); + if (stackedRightValue < 0) { + sumNeg += stackedRightValue || 0; + } else { + sumPos += stackedRightValue || 0; + } + } } - me.stop(); - me.update({ - duration: me.options.responsiveAnimationDuration - }); + var rightValue = Number(yScale.getRightValue(value)); + if (rightValue < 0) { + return yScale.getPixelForValue(sumNeg + rightValue); + } + return yScale.getPixelForValue(sumPos + rightValue); } + + return yScale.getPixelForValue(value); }, - ensureScalesHaveIDs: function() { - var options = this.options; - var scalesOptions = options.scales || {}; - var scaleOptions = options.scale; + updateBezierControlPoints: function() { + var me = this; + var meta = me.getMeta(); + var area = me.chart.chartArea; + var points = (meta.data || []); + var i, ilen, point, model, controlPoints; - helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { - xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); - }); + // Only consider points that are drawn in case the spanGaps option is used + if (meta.dataset._model.spanGaps) { + points = points.filter(function(pt) { + return !pt._model.skip; + }); + } - helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { - yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); - }); + function capControlPoint(pt, min, max) { + return Math.max(Math.min(pt, max), min); + } - if (scaleOptions) { - scaleOptions.id = scaleOptions.id || 'scale'; + if (meta.dataset._model.cubicInterpolationMode === 'monotone') { + helpers.splineCurveMonotone(points); + } else { + for (i = 0, ilen = points.length; i < ilen; ++i) { + point = points[i]; + model = point._model; + controlPoints = helpers.splineCurve( + helpers.previousItem(points, i)._model, + model, + helpers.nextItem(points, i)._model, + meta.dataset._model.tension + ); + model.controlPointPreviousX = controlPoints.previous.x; + model.controlPointPreviousY = controlPoints.previous.y; + model.controlPointNextX = controlPoints.next.x; + model.controlPointNextY = controlPoints.next.y; + } + } + + if (me.chart.options.elements.line.capBezierPoints) { + for (i = 0, ilen = points.length; i < ilen; ++i) { + model = points[i]._model; + model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); + model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); + model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); + model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); + } } }, - /** - * Builds a map of scale ID to scale object for future lookup. - */ - buildOrUpdateScales: function() { + draw: function() { var me = this; - var options = me.options; - var scales = me.scales || {}; - var items = []; - var updated = Object.keys(scales).reduce(function(obj, id) { - obj[id] = false; - return obj; - }, {}); + var chart = me.chart; + var meta = me.getMeta(); + var points = meta.data || []; + var area = chart.chartArea; + var ilen = points.length; + var halfBorderWidth; + var i = 0; - if (options.scales) { - items = items.concat( - (options.scales.xAxes || []).map(function(xAxisOptions) { - return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; - }), - (options.scales.yAxes || []).map(function(yAxisOptions) { - return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; - }) - ); - } + if (lineEnabled(me.getDataset(), chart.options)) { + halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; - if (options.scale) { - items.push({ - options: options.scale, - dtype: 'radialLinear', - isDefault: true, - dposition: 'chartArea' + helpers.canvas.clipArea(chart.ctx, { + left: area.left, + right: area.right, + top: area.top - halfBorderWidth, + bottom: area.bottom + halfBorderWidth }); - } - helpers.each(items, function(item) { - var scaleOptions = item.options; - var id = scaleOptions.id; - var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); + meta.dataset.draw(); - if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { - scaleOptions.position = item.dposition; - } + helpers.canvas.unclipArea(chart.ctx); + } - updated[id] = true; - var scale = null; - if (id in scales && scales[id].type === scaleType) { - scale = scales[id]; - scale.options = scaleOptions; - scale.ctx = me.ctx; - scale.chart = me; - } else { - var scaleClass = scaleService.getScaleConstructor(scaleType); - if (!scaleClass) { - return; - } - scale = new scaleClass({ - id: id, - type: scaleType, - options: scaleOptions, - ctx: me.ctx, - chart: me - }); - scales[scale.id] = scale; - } - - scale.mergeTicksOptions(); + // Draw the points + for (; i < ilen; ++i) { + points[i].draw(area); + } + }, - // TODO(SB): I think we should be able to remove this custom case (options.scale) - // and consider it as a regular scale part of the "scales"" map only! This would - // make the logic easier and remove some useless? custom code. - if (item.isDefault) { - me.scale = scale; - } - }); - // clear up discarded scales - helpers.each(updated, function(hasUpdated, id) { - if (!hasUpdated) { - delete scales[id]; - } - }); + setHoverStyle: function(element) { + // Point + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var model = element._model; - me.scales = scales; + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius + }; - scaleService.addScalesToLayout(this); + model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); + model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); }, + }); +}; - buildOrUpdateControllers: function() { - var me = this; - var types = []; - var newControllers = []; - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - var meta = me.getDatasetMeta(datasetIndex); - var type = dataset.type || me.config.type; +/***/ }), - if (meta.type && meta.type !== type) { - me.destroyDatasetMeta(datasetIndex); - meta = me.getDatasetMeta(datasetIndex); - } - meta.type = type; +/***/ "./node_modules/chart.js/src/controllers/controller.polarArea.js": +/*!***********************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.polarArea.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - types.push(meta.type); +"use strict"; - if (meta.controller) { - meta.controller.updateIndex(datasetIndex); - meta.controller.linkScales(); - } else { - var ControllerClass = Chart.controllers[meta.type]; - if (ControllerClass === undefined) { - throw new Error('"' + meta.type + '" is not a chart type.'); - } - meta.controller = new ControllerClass(me, datasetIndex); - newControllers.push(meta.controller); - } - }, me); +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - return newControllers; +defaults._set('polarArea', { + scale: { + type: 'radialLinear', + angleLines: { + display: false }, - - /** - * Reset the elements of all datasets - * @private - */ - resetElements: function() { - var me = this; - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.reset(); - }, me); + gridLines: { + circular: true }, - - /** - * Resets the chart back to it's state before the initial animation - */ - reset: function() { - this.resetElements(); - this.tooltip.initialize(); + pointLabels: { + display: false }, + ticks: { + beginAtZero: true + } + }, - update: function(config) { - var me = this; - - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } + // Boolean - Whether to animate the rotation of the chart + animation: { + animateRotate: true, + animateScale: true + }, - updateConfig(me); + startAngle: -0.5 * Math.PI, + legendCallback: function(chart) { + var text = []; + text.push('<ul class="' + chart.id + '-legend">'); - // plugins options references might have change, let's invalidate the cache - // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - plugins._invalidate(me); + var data = chart.data; + var datasets = data.datasets; + var labels = data.labels; - if (plugins.notify(me, 'beforeUpdate') === false) { - return; + if (datasets.length) { + for (var i = 0; i < datasets[0].data.length; ++i) { + text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>'); + if (labels[i]) { + text.push(labels[i]); + } + text.push('</li>'); } + } - // In case the entire data object changed - me.tooltip._data = me.data; - - // Make sure dataset controllers are updated and new controllers are reset - var newControllers = me.buildOrUpdateControllers(); - - // Make sure all dataset controllers have correct meta data counts - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); - }, me); + text.push('</ul>'); + return text.join(''); + }, + legend: { + labels: { + generateLabels: function(chart) { + var data = chart.data; + if (data.labels.length && data.datasets.length) { + return data.labels.map(function(label, i) { + var meta = chart.getDatasetMeta(0); + var ds = data.datasets[0]; + var arc = meta.data[i]; + var custom = arc.custom || {}; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var arcOpts = chart.options.elements.arc; + var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); + var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); + var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - me.updateLayout(); + return { + text: label, + fillStyle: fill, + strokeStyle: stroke, + lineWidth: bw, + hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - // Can only reset the new controllers after the scales have been updated - if (me.options.animation && me.options.animation.duration) { - helpers.each(newControllers, function(controller) { - controller.reset(); - }); + // Extra data used for toggling the correct item + index: i + }; + }); + } + return []; } + }, - me.updateDatasets(); - - // Need to reset tooltip in case it is displayed with elements that are removed - // after update. - me.tooltip.initialize(); + onClick: function(e, legendItem) { + var index = legendItem.index; + var chart = this.chart; + var i, ilen, meta; - // Last active contains items that were previously in the tooltip. - // When we reset the tooltip, we need to clear it - me.lastActive = []; + for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { + meta = chart.getDatasetMeta(i); + meta.data[index].hidden = !meta.data[index].hidden; + } - // Do this before render so that any plugins that need final scale updates can use it - plugins.notify(me, 'afterUpdate'); + chart.update(); + } + }, - if (me._bufferedRender) { - me._bufferedRequest = { - duration: config.duration, - easing: config.easing, - lazy: config.lazy - }; - } else { - me.render(config); + // Need to override these to give a nice default + tooltips: { + callbacks: { + title: function() { + return ''; + }, + label: function(item, data) { + return data.labels[item.index] + ': ' + item.yLabel; } - }, + } + } +}); - /** - * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` - * hook, in which case, plugins will not be called on `afterLayout`. - * @private - */ - updateLayout: function() { - var me = this; +module.exports = function(Chart) { - if (plugins.notify(me, 'beforeLayout') === false) { - return; - } + Chart.controllers.polarArea = Chart.DatasetController.extend({ - layouts.update(this, this.width, this.height); + dataElementType: elements.Arc, - /** - * Provided for backward compatibility, use `afterLayout` instead. - * @method IPlugin#afterScaleUpdate - * @deprecated since version 2.5.0 - * @todo remove at version 3 - * @private - */ - plugins.notify(me, 'afterScaleUpdate'); - plugins.notify(me, 'afterLayout'); - }, + linkScales: helpers.noop, - /** - * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` - * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. - * @private - */ - updateDatasets: function() { + update: function(reset) { var me = this; + var dataset = me.getDataset(); + var meta = me.getMeta(); + var start = me.chart.options.startAngle || 0; + var starts = me._starts = []; + var angles = me._angles = []; + var i, ilen, angle; - if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { - return; - } + me._updateRadius(); - for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.updateDataset(i); + meta.count = me.countVisibleElements(); + + for (i = 0, ilen = dataset.data.length; i < ilen; i++) { + starts[i] = start; + angle = me._computeAngle(i); + angles[i] = angle; + start += angle; } - plugins.notify(me, 'afterDatasetsUpdate'); + helpers.each(meta.data, function(arc, index) { + me.updateElement(arc, index, reset); + }); }, /** - * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` - * hook, in which case, plugins will not be called on `afterDatasetUpdate`. * @private */ - updateDataset: function(index) { + _updateRadius: function() { var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index - }; - - if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { - return; - } + var chart = me.chart; + var chartArea = chart.chartArea; + var opts = chart.options; + var arcOpts = opts.elements.arc; + var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - meta.controller.update(); + chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); + chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); + chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - plugins.notify(me, 'afterDatasetUpdate', [args]); + me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); + me.innerRadius = me.outerRadius - chart.radiusLength; }, - render: function(config) { + updateElement: function(arc, index, reset) { var me = this; + var chart = me.chart; + var dataset = me.getDataset(); + var opts = chart.options; + var animationOpts = opts.animation; + var scale = chart.scale; + var labels = chart.data.labels; - if (!config || typeof config !== 'object') { - // backwards compatibility - config = { - duration: config, - lazy: arguments[1] - }; - } + var centerX = scale.xCenter; + var centerY = scale.yCenter; - var duration = config.duration; - var lazy = config.lazy; + // var negHalfPI = -0.5 * Math.PI; + var datasetStartAngle = opts.startAngle; + var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); + var startAngle = me._starts[index]; + var endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]); - if (plugins.notify(me, 'beforeRender') === false) { - return; - } + var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var animationOptions = me.options.animation; - var onComplete = function(animation) { - plugins.notify(me, 'afterRender'); - helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); - }; + helpers.extend(arc, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, - if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { - var animation = new Animation({ - numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps - easing: config.easing || animationOptions.easing, + // Desired view properties + _model: { + x: centerX, + y: centerY, + innerRadius: 0, + outerRadius: reset ? resetRadius : distance, + startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, + endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, + label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) + } + }); - render: function(chart, animationObject) { - var easingFunction = helpers.easing.effects[animationObject.easing]; - var currentStep = animationObject.currentStep; - var stepDecimal = currentStep / animationObject.numSteps; + // Apply border and fill style + var elementOpts = this.chart.options.elements.arc; + var custom = arc.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var model = arc._model; - chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); - }, + model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); + model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); + model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); - onAnimationProgress: animationOptions.onProgress, - onAnimationComplete: onComplete - }); + arc.pivot(); + }, - animations.addAnimation(me, animation, duration, lazy); - } else { - me.draw(); + countVisibleElements: function() { + var dataset = this.getDataset(); + var meta = this.getMeta(); + var count = 0; - // See https://github.com/chartjs/Chart.js/issues/3781 - onComplete(new Animation({numSteps: 0, chart: me})); - } + helpers.each(meta.data, function(element, index) { + if (!isNaN(dataset.data[index]) && !element.hidden) { + count++; + } + }); - return me; + return count; }, - draw: function(easingValue) { + /** + * @private + */ + _computeAngle: function(index) { var me = this; + var count = this.getMeta().count; + var dataset = me.getDataset(); + var meta = me.getMeta(); - me.clear(); - - if (helpers.isNullOrUndef(easingValue)) { - easingValue = 1; + if (isNaN(dataset.data[index]) || meta.data[index].hidden) { + return 0; } - me.transition(easingValue); + // Scriptable options + var context = { + chart: me.chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; - if (me.width <= 0 || me.height <= 0) { - return; - } + return helpers.options.resolve([ + me.chart.options.elements.arc.angle, + (2 * Math.PI) / count + ], context, index); + } + }); +}; - if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { - return; - } - // Draw all the scales - helpers.each(me.boxes, function(box) { - box.draw(me.chartArea); - }, me); +/***/ }), - if (me.scale) { - me.scale.draw(); - } +/***/ "./node_modules/chart.js/src/controllers/controller.radar.js": +/*!*******************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.radar.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - me.drawDatasets(easingValue); - me._drawTooltip(easingValue); +"use strict"; - plugins.notify(me, 'afterDraw', [easingValue]); - }, - /** - * @private - */ - transition: function(easingValue) { - var me = this; +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { - if (me.isDatasetVisible(i)) { - me.getDatasetMeta(i).controller.transition(easingValue); - } - } +defaults._set('radar', { + scale: { + type: 'radialLinear' + }, + elements: { + line: { + tension: 0 // no bezier in radar + } + } +}); - me.tooltip.transition(easingValue); - }, +module.exports = function(Chart) { - /** - * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` - * hook, in which case, plugins will not be called on `afterDatasetsDraw`. - * @private - */ - drawDatasets: function(easingValue) { - var me = this; + Chart.controllers.radar = Chart.DatasetController.extend({ - if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { - return; - } + datasetElementType: elements.Line, - // Draw datasets reversed to support proper line stacking - for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { - if (me.isDatasetVisible(i)) { - me.drawDataset(i, easingValue); - } - } - - plugins.notify(me, 'afterDatasetsDraw', [easingValue]); - }, - - /** - * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` - * hook, in which case, plugins will not be called on `afterDatasetDraw`. - * @private - */ - drawDataset: function(index, easingValue) { - var me = this; - var meta = me.getDatasetMeta(index); - var args = { - meta: meta, - index: index, - easingValue: easingValue - }; - - if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { - return; - } - - meta.controller.draw(easingValue); + dataElementType: elements.Point, - plugins.notify(me, 'afterDatasetDraw', [args]); - }, + linkScales: helpers.noop, - /** - * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` - * hook, in which case, plugins will not be called on `afterTooltipDraw`. - * @private - */ - _drawTooltip: function(easingValue) { + update: function(reset) { var me = this; - var tooltip = me.tooltip; - var args = { - tooltip: tooltip, - easingValue: easingValue - }; + var meta = me.getMeta(); + var line = meta.dataset; + var points = meta.data; + var custom = line.custom || {}; + var dataset = me.getDataset(); + var lineElementOptions = me.chart.options.elements.line; + var scale = me.chart.scale; - if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { - return; + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { + dataset.lineTension = dataset.tension; } - tooltip.draw(); - - plugins.notify(me, 'afterTooltipDraw', [args]); - }, - - // Get the single element that was clicked on - // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw - getElementAtEvent: function(e) { - return Interaction.modes.single(this, e); - }, - - getElementsAtEvent: function(e) { - return Interaction.modes.label(this, e, {intersect: true}); - }, - - getElementsAtXAxis: function(e) { - return Interaction.modes['x-axis'](this, e, {intersect: true}); - }, + helpers.extend(meta.dataset, { + // Utility + _datasetIndex: me.index, + _scale: scale, + // Data + _children: points, + _loop: true, + // Model + _model: { + // Appearance + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), + borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), + borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), + fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), + borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), + borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), + borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), + borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), + } + }); - getElementsAtEventForMode: function(e, mode, options) { - var method = Interaction.modes[mode]; - if (typeof method === 'function') { - return method(this, e, options); - } + meta.dataset.pivot(); - return []; - }, + // Update Points + helpers.each(points, function(point, index) { + me.updateElement(point, index, reset); + }, me); - getDatasetAtEvent: function(e) { - return Interaction.modes.dataset(this, e, {intersect: true}); + // Update bezier control points + me.updateBezierControlPoints(); }, - - getDatasetMeta: function(datasetIndex) { + updateElement: function(point, index, reset) { var me = this; - var dataset = me.data.datasets[datasetIndex]; - if (!dataset._meta) { - dataset._meta = {}; - } + var custom = point.custom || {}; + var dataset = me.getDataset(); + var scale = me.chart.scale; + var pointElementOptions = me.chart.options.elements.point; + var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); - var meta = dataset._meta[me.id]; - if (!meta) { - meta = dataset._meta[me.id] = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, // See isDatasetVisible() comment - xAxisID: null, - yAxisID: null - }; + // Compatibility: If the properties are defined with only the old name, use those values + if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { + dataset.pointRadius = dataset.radius; } - - return meta; - }, - - getVisibleDatasetCount: function() { - var count = 0; - for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { - if (this.isDatasetVisible(i)) { - count++; - } + if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { + dataset.pointHitRadius = dataset.hitRadius; } - return count; - }, - isDatasetVisible: function(datasetIndex) { - var meta = this.getDatasetMeta(datasetIndex); + helpers.extend(point, { + // Utility + _datasetIndex: me.index, + _index: index, + _scale: scale, - // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, - // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. - return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; - }, + // Desired view properties + _model: { + x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales + y: reset ? scale.yCenter : pointPosition.y, - generateLegend: function() { - return this.options.legendCallback(this); - }, + // Appearance + tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), + radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), + backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), + pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), + rotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation), - /** - * @private - */ - destroyDatasetMeta: function(datasetIndex) { - var id = this.id; - var dataset = this.data.datasets[datasetIndex]; - var meta = dataset._meta && dataset._meta[id]; + // Tooltip + hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) + } + }); - if (meta) { - meta.controller.destroy(); - delete dataset._meta[id]; - } + point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); }, + updateBezierControlPoints: function() { + var chartArea = this.chart.chartArea; + var meta = this.getMeta(); - destroy: function() { - var me = this; - var canvas = me.canvas; - var i, ilen; - - me.stop(); - - // dataset controllers need to cleanup associated data - for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.destroyDatasetMeta(i); - } - - if (canvas) { - me.unbindEvents(); - helpers.canvas.clear(me); - platform.releaseContext(me.ctx); - me.canvas = null; - me.ctx = null; - } + helpers.each(meta.data, function(point, index) { + var model = point._model; + var controlPoints = helpers.splineCurve( + helpers.previousItem(meta.data, index, true)._model, + model, + helpers.nextItem(meta.data, index, true)._model, + model.tension + ); - plugins.notify(me, 'destroy'); + // Prevent the bezier going outside of the bounds of the graph + model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); + model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); - delete Chart.instances[me.id]; - }, + model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); + model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); - toBase64Image: function() { - return this.canvas.toDataURL.apply(this.canvas, arguments); + // Now pivot the point for animation + point.pivot(); + }); }, - initToolTip: function() { - var me = this; - me.tooltip = new Tooltip({ - _chart: me, - _chartInstance: me, // deprecated, backward compatibility - _data: me.data, - _options: me.options.tooltips - }, me); - }, + setHoverStyle: function(point) { + // Point + var dataset = this.chart.data.datasets[point._datasetIndex]; + var custom = point.custom || {}; + var index = point._index; + var model = point._model; - /** - * @private - */ - bindEvents: function() { - var me = this; - var listeners = me._listeners = {}; - var listener = function() { - me.eventHandler.apply(me, arguments); + point.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth, + radius: model.radius }; - helpers.each(me.options.events, function(type) { - platform.addEventListener(me, type, listener); - listeners[type] = listener; - }); - - // Elements used to detect size change should not be injected for non responsive charts. - // See https://github.com/chartjs/Chart.js/issues/2210 - if (me.options.responsive) { - listener = function() { - me.resize(); - }; - - platform.addEventListener(me, 'resize', listener); - listeners.resize = listener; - } + model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); }, + }); +}; - /** - * @private - */ - unbindEvents: function() { - var me = this; - var listeners = me._listeners; - if (!listeners) { - return; - } - - delete me._listeners; - helpers.each(listeners, function(listener, type) { - platform.removeEventListener(me, type, listener); - }); - }, - updateHoverStyle: function(elements, mode, enabled) { - var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; - var element, i, ilen; +/***/ }), - for (i = 0, ilen = elements.length; i < ilen; ++i) { - element = elements[i]; - if (element) { - this.getDatasetMeta(element._datasetIndex).controller[method](element); - } - } - }, +/***/ "./node_modules/chart.js/src/controllers/controller.scatter.js": +/*!*********************************************************************!*\ + !*** ./node_modules/chart.js/src/controllers/controller.scatter.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - /** - * @private - */ - eventHandler: function(e) { - var me = this; - var tooltip = me.tooltip; +"use strict"; - if (plugins.notify(me, 'beforeEvent', [e]) === false) { - return; - } - // Buffer any update calls so that renders do not occur - me._bufferedRender = true; - me._bufferedRequest = null; +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); - var changed = me.handleEvent(e); - // for smooth tooltip animations issue #4989 - // the tooltip should be the source of change - // Animation check workaround: - // tooltip._start will be null when tooltip isn't animating - if (tooltip) { - changed = tooltip._start - ? tooltip.handleEvent(e) - : changed | tooltip.handleEvent(e); - } +defaults._set('scatter', { + hover: { + mode: 'single' + }, - plugins.notify(me, 'afterEvent', [e]); + scales: { + xAxes: [{ + id: 'x-axis-1', // need an ID so datasets can reference the scale + type: 'linear', // scatter should not use a category axis + position: 'bottom' + }], + yAxes: [{ + id: 'y-axis-1', + type: 'linear', + position: 'left' + }] + }, - var bufferedRequest = me._bufferedRequest; - if (bufferedRequest) { - // If we have an update that was triggered, we need to do a normal render - me.render(bufferedRequest); - } else if (changed && !me.animating) { - // If entering, leaving, or changing elements, animate the change via pivot - me.stop(); + showLines: false, - // We only need to render at this point. Updating will cause scales to be - // recomputed generating flicker & using more memory than necessary. - me.render({ - duration: me.options.hover.animationDuration, - lazy: true - }); + tooltips: { + callbacks: { + title: function() { + return ''; // doesn't make sense for scatter since data are formatted as a point + }, + label: function(item) { + return '(' + item.xLabel + ', ' + item.yLabel + ')'; } + } + } +}); - me._bufferedRender = false; - me._bufferedRequest = null; +module.exports = function(Chart) { - return me; - }, + // Scatter charts use line controllers + Chart.controllers.scatter = Chart.controllers.line; - /** - * Handle an event - * @private - * @param {IEvent} event the event to handle - * @return {Boolean} true if the chart needs to re-render - */ - handleEvent: function(e) { - var me = this; - var options = me.options || {}; - var hoverOptions = options.hover; - var changed = false; +}; - me.lastActive = me.lastActive || []; - // Find Active Elements for hover and tooltips - if (e.type === 'mouseout') { - me.active = []; - } else { - me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); - } +/***/ }), - // Invoke onHover hook - // Need to call with native event here to not break backwards compatibility - helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); +/***/ "./node_modules/chart.js/src/core/core.animation.js": +/*!**********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.animation.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - if (e.type === 'mouseup' || e.type === 'click') { - if (options.onClick) { - // Use e.native here for backwards compatibility - options.onClick.call(me, e.native, me.active); - } - } +"use strict"; - // Remove styling for last active (even if it may still be active) - if (me.lastActive.length) { - me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); - } - // Built in hover styling - if (me.active.length && hoverOptions.mode) { - me.updateHoverStyle(me.active, hoverOptions.mode, true); - } +var Element = __webpack_require__(/*! ./core.element */ "./node_modules/chart.js/src/core/core.element.js"); - changed = !helpers.arrayEquals(me.active, me.lastActive); +var exports = module.exports = Element.extend({ + chart: null, // the animation associated chart instance + currentStep: 0, // the current animation step + numSteps: 60, // default number of steps + easing: '', // the easing to use for this animation + render: null, // render function used by the animation service - // Remember Last Actives - me.lastActive = me.active; + onAnimationProgress: null, // user specified callback to fire on each step of the animation + onAnimationComplete: null, // user specified callback to fire when the animation finishes +}); - return changed; - } - }); +// DEPRECATIONS - /** - * Provided for backward compatibility, use Chart instead. - * @class Chart.Controller - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ - Chart.Controller = Chart; -}; +/** + * Provided for backward compatibility, use Chart.Animation instead + * @prop Chart.Animation#animationObject + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports.prototype, 'animationObject', { + get: function() { + return this; + } +}); + +/** + * Provided for backward compatibility, use Chart.Animation#chart instead + * @prop Chart.Animation#chartInstance + * @deprecated since version 2.6.0 + * @todo remove at version 3 + */ +Object.defineProperty(exports.prototype, 'chartInstance', { + get: function() { + return this.chart; + }, + set: function(value) { + this.chart = value; + } +}); /***/ }), -/***/ "./node_modules/chart.js/src/core/core.datasetController.js": -/*!******************************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.datasetController.js ***! - \******************************************************************/ +/***/ "./node_modules/chart.js/src/core/core.animations.js": +/*!***********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.animations.js ***! + \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +/* global window: false */ +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -module.exports = function(Chart) { +defaults._set('global', { + animation: { + duration: 1000, + easing: 'easeOutQuart', + onProgress: helpers.noop, + onComplete: helpers.noop + } +}); - var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; +module.exports = { + frameDuration: 17, + animations: [], + dropFrames: 0, + request: null, /** - * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', - * 'unshift') and notify the listener AFTER the array has been altered. Listeners are - * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + * @param {Chart} chart - The chart to animate. + * @param {Chart.Animation} animation - The animation that we will animate. + * @param {Number} duration - The animation duration in ms. + * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions */ - function listenArrayEvents(array, listener) { - if (array._chartjs) { - array._chartjs.listeners.push(listener); - return; + addAnimation: function(chart, animation, duration, lazy) { + var animations = this.animations; + var i, ilen; + + animation.chart = chart; + + if (!lazy) { + chart.animating = true; } - Object.defineProperty(array, '_chartjs', { - configurable: true, - enumerable: false, - value: { - listeners: [listener] + for (i = 0, ilen = animations.length; i < ilen; ++i) { + if (animations[i].chart === chart) { + animations[i] = animation; + return; } - }); + } - arrayEvents.forEach(function(key) { - var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); - var base = array[key]; + animations.push(animation); - Object.defineProperty(array, key, { - configurable: true, - enumerable: false, - value: function() { - var args = Array.prototype.slice.call(arguments); - var res = base.apply(this, args); + // If there are no animations queued, manually kickstart a digest, for lack of a better word + if (animations.length === 1) { + this.requestAnimationFrame(); + } + }, - helpers.each(array._chartjs.listeners, function(object) { - if (typeof object[method] === 'function') { - object[method].apply(object, args); - } - }); + cancelAnimation: function(chart) { + var index = helpers.findIndex(this.animations, function(animation) { + return animation.chart === chart; + }); - return res; - } + if (index !== -1) { + this.animations.splice(index, 1); + chart.animating = false; + } + }, + + requestAnimationFrame: function() { + var me = this; + if (me.request === null) { + // Skip animation frame requests until the active one is executed. + // This can happen when processing mouse events, e.g. 'mousemove' + // and 'mouseout' events will trigger multiple renders. + me.request = helpers.requestAnimFrame.call(window, function() { + me.request = null; + me.startDigest(); }); - }); - } + } + }, /** - * Removes the given array event listener and cleanup extra attached properties (such as - * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + * @private */ - function unlistenArrayEvents(array, listener) { - var stub = array._chartjs; - if (!stub) { - return; - } + startDigest: function() { + var me = this; + var startTime = Date.now(); + var framesToDrop = 0; - var listeners = stub.listeners; - var index = listeners.indexOf(listener); - if (index !== -1) { - listeners.splice(index, 1); + if (me.dropFrames > 1) { + framesToDrop = Math.floor(me.dropFrames); + me.dropFrames = me.dropFrames % 1; } - if (listeners.length > 0) { - return; - } + me.advance(1 + framesToDrop); - arrayEvents.forEach(function(key) { - delete array[key]; - }); + var endTime = Date.now(); - delete array._chartjs; - } + me.dropFrames += (endTime - startTime) / me.frameDuration; - // Base class for all dataset controllers (line, bar, etc) - Chart.DatasetController = function(chart, datasetIndex) { - this.initialize(chart, datasetIndex); - }; + // Do we have more stuff to animate? + if (me.animations.length > 0) { + me.requestAnimationFrame(); + } + }, - helpers.extend(Chart.DatasetController.prototype, { + /** + * @private + */ + advance: function(count) { + var animations = this.animations; + var animation, chart; + var i = 0; - /** - * Element type used to generate a meta dataset (e.g. Chart.element.Line). - * @type {Chart.core.element} - */ - datasetElementType: null, + while (i < animations.length) { + animation = animations[i]; + chart = animation.chart; - /** - * Element type used to generate a meta data (e.g. Chart.element.Point). - * @type {Chart.core.element} - */ - dataElementType: null, + animation.currentStep = (animation.currentStep || 0) + count; + animation.currentStep = Math.min(animation.currentStep, animation.numSteps); - initialize: function(chart, datasetIndex) { - var me = this; - me.chart = chart; - me.index = datasetIndex; - me.linkScales(); - me.addElements(); - }, + helpers.callback(animation.render, [chart, animation], chart); + helpers.callback(animation.onAnimationProgress, [animation], chart); - updateIndex: function(datasetIndex) { - this.index = datasetIndex; - }, + if (animation.currentStep >= animation.numSteps) { + helpers.callback(animation.onAnimationComplete, [animation], chart); + chart.animating = false; + animations.splice(i, 1); + } else { + ++i; + } + } + } +}; - linkScales: function() { - var me = this; - var meta = me.getMeta(); - var dataset = me.getDataset(); - if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { - meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; - } - if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { - meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; - } - }, +/***/ }), - getDataset: function() { - return this.chart.data.datasets[this.index]; - }, +/***/ "./node_modules/chart.js/src/core/core.controller.js": +/*!***********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.controller.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - getMeta: function() { - return this.chart.getDatasetMeta(this.index); - }, +"use strict"; - getScaleForId: function(scaleID) { - return this.chart.scales[scaleID]; - }, - reset: function() { - this.update(true); - }, +var Animation = __webpack_require__(/*! ./core.animation */ "./node_modules/chart.js/src/core/core.animation.js"); +var animations = __webpack_require__(/*! ./core.animations */ "./node_modules/chart.js/src/core/core.animations.js"); +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); +var Interaction = __webpack_require__(/*! ./core.interaction */ "./node_modules/chart.js/src/core/core.interaction.js"); +var layouts = __webpack_require__(/*! ./core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); +var platform = __webpack_require__(/*! ../platforms/platform */ "./node_modules/chart.js/src/platforms/platform.js"); +var plugins = __webpack_require__(/*! ./core.plugins */ "./node_modules/chart.js/src/core/core.plugins.js"); +var scaleService = __webpack_require__(/*! ../core/core.scaleService */ "./node_modules/chart.js/src/core/core.scaleService.js"); +var Tooltip = __webpack_require__(/*! ./core.tooltip */ "./node_modules/chart.js/src/core/core.tooltip.js"); - /** - * @private - */ - destroy: function() { - if (this._data) { - unlistenArrayEvents(this._data, this); - } - }, +module.exports = function(Chart) { - createMetaDataset: function() { - var me = this; - var type = me.datasetElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index - }); - }, + // Create a dictionary of chart types, to allow for extension of existing types + Chart.types = {}; - createMetaData: function(index) { - var me = this; - var type = me.dataElementType; - return type && new type({ - _chart: me.chart, - _datasetIndex: me.index, - _index: index - }); - }, + // Store a reference to each instance - allowing us to globally resize chart instances on window resize. + // Destroy method on the chart will remove the instance of the chart from this reference. + Chart.instances = {}; - addElements: function() { - var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data || []; - var metaData = meta.data; - var i, ilen; + // Controllers available for dataset visualization eg. bar, line, slice, etc. + Chart.controllers = {}; - for (i = 0, ilen = data.length; i < ilen; ++i) { - metaData[i] = metaData[i] || me.createMetaData(i); - } + /** + * Initializes the given config with global and chart default values. + */ + function initConfig(config) { + config = config || {}; - meta.dataset = meta.dataset || me.createMetaDataset(); - }, + // Do NOT use configMerge() for the data object because this method merges arrays + // and so would change references to labels and datasets, preventing data updates. + var data = config.data = config.data || {}; + data.datasets = data.datasets || []; + data.labels = data.labels || []; - addElementAndReset: function(index) { - var element = this.createMetaData(index); - this.getMeta().data.splice(index, 0, element); - this.updateElement(element, index, true); - }, + config.options = helpers.configMerge( + defaults.global, + defaults[config.type], + config.options || {}); - buildOrUpdateElements: function() { - var me = this; - var dataset = me.getDataset(); - var data = dataset.data || (dataset.data = []); + return config; + } - // In order to correctly handle data addition/deletion animation (an thus simulate - // real-time charts), we need to monitor these data modifications and synchronize - // the internal meta data accordingly. - if (me._data !== data) { - if (me._data) { - // This case happens when the user replaced the data array instance. - unlistenArrayEvents(me._data, me); - } + /** + * Updates the config of the chart + * @param chart {Chart} chart to update the options for + */ + function updateConfig(chart) { + var newOptions = chart.options; - listenArrayEvents(data, me); - me._data = data; - } + helpers.each(chart.scales, function(scale) { + layouts.removeBox(chart, scale); + }); - // Re-sync meta data in case the user replaced the data array or if we missed - // any updates and so make sure that we handle number of datapoints changing. - me.resyncElements(); - }, + newOptions = helpers.configMerge( + Chart.defaults.global, + Chart.defaults[chart.config.type], + newOptions); - update: helpers.noop, + chart.options = chart.config.options = newOptions; + chart.ensureScalesHaveIDs(); + chart.buildOrUpdateScales(); + // Tooltip + chart.tooltip._options = newOptions.tooltips; + chart.tooltip.initialize(); + } - transition: function(easingValue) { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; + function positionIsHorizontal(position) { + return position === 'top' || position === 'bottom'; + } - for (; i < ilen; ++i) { - elements[i].transition(easingValue); - } + helpers.extend(Chart.prototype, /** @lends Chart */ { + /** + * @private + */ + construct: function(item, config) { + var me = this; - if (meta.dataset) { - meta.dataset.transition(easingValue); - } - }, + config = initConfig(config); - draw: function() { - var meta = this.getMeta(); - var elements = meta.data || []; - var ilen = elements.length; - var i = 0; + var context = platform.acquireContext(item, config); + var canvas = context && context.canvas; + var height = canvas && canvas.height; + var width = canvas && canvas.width; - if (meta.dataset) { - meta.dataset.draw(); - } + me.id = helpers.uid(); + me.ctx = context; + me.canvas = canvas; + me.config = config; + me.width = width; + me.height = height; + me.aspectRatio = height ? width / height : null; + me.options = config.options; + me._bufferedRender = false; - for (; i < ilen; ++i) { - elements[i].draw(); - } - }, + /** + * Provided for backward compatibility, Chart and Chart.Controller have been merged, + * the "instance" still need to be defined since it might be called from plugins. + * @prop Chart#chart + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + me.chart = me; + me.controller = me; // chart.chart.controller #inception - removeHoverStyle: function(element) { - helpers.merge(element._model, element.$previousStyle || {}); - delete element.$previousStyle; - }, + // Add the chart instance to the global namespace + Chart.instances[me.id] = me; - setHoverStyle: function(element) { - var dataset = this.chart.data.datasets[element._datasetIndex]; - var index = element._index; - var custom = element.custom || {}; - var valueOrDefault = helpers.valueAtIndexOrDefault; - var getHoverColor = helpers.getHoverColor; - var model = element._model; + // Define alias to the config data: `chart.data === chart.config.data` + Object.defineProperty(me, 'data', { + get: function() { + return me.config.data; + }, + set: function(value) { + me.config.data = value; + } + }); - element.$previousStyle = { - backgroundColor: model.backgroundColor, - borderColor: model.borderColor, - borderWidth: model.borderWidth - }; + if (!context || !canvas) { + // The given item is not a compatible context2d element, let's return before finalizing + // the chart initialization but after setting basic chart / controller properties that + // can help to figure out that the chart is not valid (e.g chart.canvas !== null); + // https://github.com/chartjs/Chart.js/issues/2807 + console.error("Failed to create chart: can't acquire context from the given item"); + return; + } - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); + me.initialize(); + me.update(); }, /** * @private */ - resyncElements: function() { + initialize: function() { var me = this; - var meta = me.getMeta(); - var data = me.getDataset().data; - var numMeta = meta.data.length; - var numData = data.length; - if (numData < numMeta) { - meta.data.splice(numData, numMeta - numData); - } else if (numData > numMeta) { - me.insertElements(numMeta, numData - numMeta); - } - }, + // Before init plugin notification + plugins.notify(me, 'beforeInit'); - /** - * @private - */ - insertElements: function(start, count) { - for (var i = 0; i < count; ++i) { - this.addElementAndReset(start + i); + helpers.retinaScale(me, me.options.devicePixelRatio); + + me.bindEvents(); + + if (me.options.responsive) { + // Initial resize before chart draws (must be silent to preserve initial animations). + me.resize(true); } - }, - /** - * @private - */ - onDataPush: function() { - this.insertElements(this.getDataset().data.length - 1, arguments.length); - }, + // Make sure scales have IDs and are built before we build any controllers. + me.ensureScalesHaveIDs(); + me.buildOrUpdateScales(); + me.initToolTip(); - /** - * @private - */ - onDataPop: function() { - this.getMeta().data.pop(); + // After init plugin notification + plugins.notify(me, 'afterInit'); + + return me; }, - /** - * @private - */ - onDataShift: function() { - this.getMeta().data.shift(); + clear: function() { + helpers.canvas.clear(this); + return this; }, - /** - * @private - */ - onDataSplice: function(start, count) { - this.getMeta().data.splice(start, count); - this.insertElements(start, arguments.length - 2); + stop: function() { + // Stops any current animation loop occurring + animations.cancelAnimation(this); + return this; }, - /** - * @private - */ - onDataUnshift: function() { - this.insertElements(0, arguments.length); - } - }); + resize: function(silent) { + var me = this; + var options = me.options; + var canvas = me.canvas; + var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; - Chart.DatasetController.extend = helpers.inherits; -}; + // the canvas render width and height will be casted to integers so make sure that + // the canvas display style uses the same integer values to avoid blurring effect. + // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed + var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); + var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); -/***/ }), + if (me.width === newWidth && me.height === newHeight) { + return; + } -/***/ "./node_modules/chart.js/src/core/core.defaults.js": -/*!*********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.defaults.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + canvas.width = me.width = newWidth; + canvas.height = me.height = newHeight; + canvas.style.width = newWidth + 'px'; + canvas.style.height = newHeight + 'px'; -"use strict"; + helpers.retinaScale(me, options.devicePixelRatio); + if (!silent) { + // Notify any plugins about the resize + var newSize = {width: newWidth, height: newHeight}; + plugins.notify(me, 'resize', [newSize]); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + // Notify of resize + if (me.options.onResize) { + me.options.onResize(me, newSize); + } -module.exports = { - /** - * @private - */ - _set: function(scope, values) { - return helpers.merge(this[scope] || (this[scope] = {}), values); - } -}; + me.stop(); + me.update({ + duration: me.options.responsiveAnimationDuration + }); + } + }, + ensureScalesHaveIDs: function() { + var options = this.options; + var scalesOptions = options.scales || {}; + var scaleOptions = options.scale; -/***/ }), + helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { + xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); + }); -/***/ "./node_modules/chart.js/src/core/core.element.js": -/*!********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.element.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { + yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); + }); -"use strict"; + if (scaleOptions) { + scaleOptions.id = scaleOptions.id || 'scale'; + } + }, + /** + * Builds a map of scale ID to scale object for future lookup. + */ + buildOrUpdateScales: function() { + var me = this; + var options = me.options; + var scales = me.scales || {}; + var items = []; + var updated = Object.keys(scales).reduce(function(obj, id) { + obj[id] = false; + return obj; + }, {}); -var color = __webpack_require__(/*! chartjs-color */ "./node_modules/chartjs-color/index.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + if (options.scales) { + items = items.concat( + (options.scales.xAxes || []).map(function(xAxisOptions) { + return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; + }), + (options.scales.yAxes || []).map(function(yAxisOptions) { + return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; + }) + ); + } -function interpolate(start, view, model, ease) { - var keys = Object.keys(model); - var i, ilen, key, actual, origin, target, type, c0, c1; + if (options.scale) { + items.push({ + options: options.scale, + dtype: 'radialLinear', + isDefault: true, + dposition: 'chartArea' + }); + } - for (i = 0, ilen = keys.length; i < ilen; ++i) { - key = keys[i]; + helpers.each(items, function(item) { + var scaleOptions = item.options; + var id = scaleOptions.id; + var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); - target = model[key]; + if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { + scaleOptions.position = item.dposition; + } - // if a value is added to the model after pivot() has been called, the view - // doesn't contain it, so let's initialize the view to the target value. - if (!view.hasOwnProperty(key)) { - view[key] = target; - } + updated[id] = true; + var scale = null; + if (id in scales && scales[id].type === scaleType) { + scale = scales[id]; + scale.options = scaleOptions; + scale.ctx = me.ctx; + scale.chart = me; + } else { + var scaleClass = scaleService.getScaleConstructor(scaleType); + if (!scaleClass) { + return; + } + scale = new scaleClass({ + id: id, + type: scaleType, + options: scaleOptions, + ctx: me.ctx, + chart: me + }); + scales[scale.id] = scale; + } - actual = view[key]; + scale.mergeTicksOptions(); - if (actual === target || key[0] === '_') { - continue; - } + // TODO(SB): I think we should be able to remove this custom case (options.scale) + // and consider it as a regular scale part of the "scales"" map only! This would + // make the logic easier and remove some useless? custom code. + if (item.isDefault) { + me.scale = scale; + } + }); + // clear up discarded scales + helpers.each(updated, function(hasUpdated, id) { + if (!hasUpdated) { + delete scales[id]; + } + }); - if (!start.hasOwnProperty(key)) { - start[key] = actual; - } + me.scales = scales; - origin = start[key]; + scaleService.addScalesToLayout(this); + }, - type = typeof target; + buildOrUpdateControllers: function() { + var me = this; + var types = []; + var newControllers = []; - if (type === typeof origin) { - if (type === 'string') { - c0 = color(origin); - if (c0.valid) { - c1 = color(target); - if (c1.valid) { - view[key] = c1.mix(c0, ease).rgbString(); - continue; + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + var meta = me.getDatasetMeta(datasetIndex); + var type = dataset.type || me.config.type; + + if (meta.type && meta.type !== type) { + me.destroyDatasetMeta(datasetIndex); + meta = me.getDatasetMeta(datasetIndex); + } + meta.type = type; + + types.push(meta.type); + + if (meta.controller) { + meta.controller.updateIndex(datasetIndex); + meta.controller.linkScales(); + } else { + var ControllerClass = Chart.controllers[meta.type]; + if (ControllerClass === undefined) { + throw new Error('"' + meta.type + '" is not a chart type.'); } + + meta.controller = new ControllerClass(me, datasetIndex); + newControllers.push(meta.controller); } - } else if (type === 'number' && isFinite(origin) && isFinite(target)) { - view[key] = origin + (target - origin) * ease; - continue; - } - } + }, me); - view[key] = target; - } -} + return newControllers; + }, -var Element = function(configuration) { - helpers.extend(this, configuration); - this.initialize.apply(this, arguments); -}; + /** + * Reset the elements of all datasets + * @private + */ + resetElements: function() { + var me = this; + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.reset(); + }, me); + }, -helpers.extend(Element.prototype, { + /** + * Resets the chart back to it's state before the initial animation + */ + reset: function() { + this.resetElements(); + this.tooltip.initialize(); + }, - initialize: function() { - this.hidden = false; - }, + update: function(config) { + var me = this; - pivot: function() { - var me = this; - if (!me._view) { - me._view = helpers.clone(me._model); - } - me._start = {}; - return me; - }, + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; + } - transition: function(ease) { - var me = this; - var model = me._model; - var start = me._start; - var view = me._view; + updateConfig(me); - // No animation -> No Transition - if (!model || ease === 1) { - me._view = model; - me._start = null; - return me; - } + // plugins options references might have change, let's invalidate the cache + // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + plugins._invalidate(me); - if (!view) { - view = me._view = {}; - } + if (plugins.notify(me, 'beforeUpdate') === false) { + return; + } - if (!start) { - start = me._start = {}; - } + // In case the entire data object changed + me.tooltip._data = me.data; - interpolate(start, view, model, ease); + // Make sure dataset controllers are updated and new controllers are reset + var newControllers = me.buildOrUpdateControllers(); - return me; - }, + // Make sure all dataset controllers have correct meta data counts + helpers.each(me.data.datasets, function(dataset, datasetIndex) { + me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); + }, me); - tooltipPosition: function() { - return { - x: this._model.x, - y: this._model.y - }; - }, + me.updateLayout(); - hasValue: function() { - return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); - } -}); + // Can only reset the new controllers after the scales have been updated + if (me.options.animation && me.options.animation.duration) { + helpers.each(newControllers, function(controller) { + controller.reset(); + }); + } -Element.extend = helpers.inherits; + me.updateDatasets(); -module.exports = Element; + // Need to reset tooltip in case it is displayed with elements that are removed + // after update. + me.tooltip.initialize(); + // Last active contains items that were previously in the tooltip. + // When we reset the tooltip, we need to clear it + me.lastActive = []; -/***/ }), + // Do this before render so that any plugins that need final scale updates can use it + plugins.notify(me, 'afterUpdate'); -/***/ "./node_modules/chart.js/src/core/core.helpers.js": -/*!********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.helpers.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (me._bufferedRender) { + me._bufferedRequest = { + duration: config.duration, + easing: config.easing, + lazy: config.lazy + }; + } else { + me.render(config); + } + }, -"use strict"; -/* global window: false */ -/* global document: false */ + /** + * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` + * hook, in which case, plugins will not be called on `afterLayout`. + * @private + */ + updateLayout: function() { + var me = this; + if (plugins.notify(me, 'beforeLayout') === false) { + return; + } -var color = __webpack_require__(/*! chartjs-color */ "./node_modules/chartjs-color/index.js"); -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -var scaleService = __webpack_require__(/*! ../core/core.scaleService */ "./node_modules/chart.js/src/core/core.scaleService.js"); + layouts.update(this, this.width, this.height); -module.exports = function() { + /** + * Provided for backward compatibility, use `afterLayout` instead. + * @method IPlugin#afterScaleUpdate + * @deprecated since version 2.5.0 + * @todo remove at version 3 + * @private + */ + plugins.notify(me, 'afterScaleUpdate'); + plugins.notify(me, 'afterLayout'); + }, - // -- Basic js utility methods + /** + * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` + * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. + * @private + */ + updateDatasets: function() { + var me = this; - helpers.configMerge = function(/* objects ... */) { - return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { - merger: function(key, target, source, options) { - var tval = target[key] || {}; - var sval = source[key]; + if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { + return; + } - if (key === 'scales') { - // scale config merging is complex. Add our own function here for that - target[key] = helpers.scaleMerge(tval, sval); - } else if (key === 'scale') { - // used in polar area & radar charts since there is only one scale - target[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]); - } else { - helpers._merger(key, target, source, options); - } + for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.updateDataset(i); } - }); - }; - helpers.scaleMerge = function(/* objects ... */) { - return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { - merger: function(key, target, source, options) { - if (key === 'xAxes' || key === 'yAxes') { - var slen = source[key].length; - var i, type, scale; + plugins.notify(me, 'afterDatasetsUpdate'); + }, - if (!target[key]) { - target[key] = []; - } + /** + * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` + * hook, in which case, plugins will not be called on `afterDatasetUpdate`. + * @private + */ + updateDataset: function(index) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index + }; - for (i = 0; i < slen; ++i) { - scale = source[key][i]; - type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); + if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { + return; + } - if (i >= target[key].length) { - target[key].push({}); - } + meta.controller.update(); - if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { - // new/untyped scale or type changed: let's apply the new defaults - // then merge source scale to correctly overwrite the defaults. - helpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]); - } else { - // scales type are the same - helpers.merge(target[key][i], scale); - } - } - } else { - helpers._merger(key, target, source, options); - } + plugins.notify(me, 'afterDatasetUpdate', [args]); + }, + + render: function(config) { + var me = this; + + if (!config || typeof config !== 'object') { + // backwards compatibility + config = { + duration: config, + lazy: arguments[1] + }; } - }); - }; - helpers.where = function(collection, filterCallback) { - if (helpers.isArray(collection) && Array.prototype.filter) { - return collection.filter(filterCallback); - } - var filtered = []; + var duration = config.duration; + var lazy = config.lazy; - helpers.each(collection, function(item) { - if (filterCallback(item)) { - filtered.push(item); + if (plugins.notify(me, 'beforeRender') === false) { + return; } - }); - return filtered; - }; - helpers.findIndex = Array.prototype.findIndex ? - function(array, callback, scope) { - return array.findIndex(callback, scope); - } : - function(array, callback, scope) { - scope = scope === undefined ? array : scope; - for (var i = 0, ilen = array.length; i < ilen; ++i) { - if (callback.call(scope, array[i], i, array)) { - return i; - } + var animationOptions = me.options.animation; + var onComplete = function(animation) { + plugins.notify(me, 'afterRender'); + helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); + }; + + if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { + var animation = new Animation({ + numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps + easing: config.easing || animationOptions.easing, + + render: function(chart, animationObject) { + var easingFunction = helpers.easing.effects[animationObject.easing]; + var currentStep = animationObject.currentStep; + var stepDecimal = currentStep / animationObject.numSteps; + + chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); + }, + + onAnimationProgress: animationOptions.onProgress, + onAnimationComplete: onComplete + }); + + animations.addAnimation(me, animation, duration, lazy); + } else { + me.draw(); + + // See https://github.com/chartjs/Chart.js/issues/3781 + onComplete(new Animation({numSteps: 0, chart: me})); } - return -1; - }; - helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to start of the array - if (helpers.isNullOrUndef(startIndex)) { - startIndex = -1; - } - for (var i = startIndex + 1; i < arrayToSearch.length; i++) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; + + return me; + }, + + draw: function(easingValue) { + var me = this; + + me.clear(); + + if (helpers.isNullOrUndef(easingValue)) { + easingValue = 1; } - } - }; - helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { - // Default to end of the array - if (helpers.isNullOrUndef(startIndex)) { - startIndex = arrayToSearch.length; - } - for (var i = startIndex - 1; i >= 0; i--) { - var currentItem = arrayToSearch[i]; - if (filterCallback(currentItem)) { - return currentItem; + + me.transition(easingValue); + + if (me.width <= 0 || me.height <= 0) { + return; } - } - }; - // -- Math methods - helpers.isNumber = function(n) { - return !isNaN(parseFloat(n)) && isFinite(n); - }; - helpers.almostEquals = function(x, y, epsilon) { - return Math.abs(x - y) < epsilon; - }; - helpers.almostWhole = function(x, epsilon) { - var rounded = Math.round(x); - return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); - }; - helpers.max = function(array) { - return array.reduce(function(max, value) { - if (!isNaN(value)) { - return Math.max(max, value); - } - return max; - }, Number.NEGATIVE_INFINITY); - }; - helpers.min = function(array) { - return array.reduce(function(min, value) { - if (!isNaN(value)) { - return Math.min(min, value); + if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { + return; } - return min; - }, Number.POSITIVE_INFINITY); - }; - helpers.sign = Math.sign ? - function(x) { - return Math.sign(x); - } : - function(x) { - x = +x; // convert to a number - if (x === 0 || isNaN(x)) { - return x; + + // Draw all the scales + helpers.each(me.boxes, function(box) { + box.draw(me.chartArea); + }, me); + + if (me.scale) { + me.scale.draw(); } - return x > 0 ? 1 : -1; - }; - helpers.log10 = Math.log10 ? - function(x) { - return Math.log10(x); - } : - function(x) { - var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. - // Check for whole powers of 10, - // which due to floating point rounding error should be corrected. - var powerOf10 = Math.round(exponent); - var isPowerOf10 = x === Math.pow(10, powerOf10); - return isPowerOf10 ? powerOf10 : exponent; - }; - helpers.toRadians = function(degrees) { - return degrees * (Math.PI / 180); - }; - helpers.toDegrees = function(radians) { - return radians * (180 / Math.PI); - }; - // Gets the angle from vertical upright to the point about a centre. - helpers.getAngleFromPoint = function(centrePoint, anglePoint) { - var distanceFromXCenter = anglePoint.x - centrePoint.x; - var distanceFromYCenter = anglePoint.y - centrePoint.y; - var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); + me.drawDatasets(easingValue); + me._drawTooltip(easingValue); - var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); + plugins.notify(me, 'afterDraw', [easingValue]); + }, - if (angle < (-0.5 * Math.PI)) { - angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] - } + /** + * @private + */ + transition: function(easingValue) { + var me = this; - return { - angle: angle, - distance: radialDistanceFromCenter - }; - }; - helpers.distanceBetweenPoints = function(pt1, pt2) { - return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); - }; - helpers.aliasPixel = function(pixelWidth) { - return (pixelWidth % 2 === 0) ? 0 : 0.5; - }; - helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { - // Props to Rob Spencer at scaled innovation for his post on splining between points - // http://scaledinnovation.com/analytics/splines/aboutSplines.html + for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { + if (me.isDatasetVisible(i)) { + me.getDatasetMeta(i).controller.transition(easingValue); + } + } - // This function must also respect "skipped" points + me.tooltip.transition(easingValue); + }, - var previous = firstPoint.skip ? middlePoint : firstPoint; - var current = middlePoint; - var next = afterPoint.skip ? middlePoint : afterPoint; + /** + * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` + * hook, in which case, plugins will not be called on `afterDatasetsDraw`. + * @private + */ + drawDatasets: function(easingValue) { + var me = this; - var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); - var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); + if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { + return; + } - var s01 = d01 / (d01 + d12); - var s12 = d12 / (d01 + d12); + // Draw datasets reversed to support proper line stacking + for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { + if (me.isDatasetVisible(i)) { + me.drawDataset(i, easingValue); + } + } - // If all points are the same, s01 & s02 will be inf - s01 = isNaN(s01) ? 0 : s01; - s12 = isNaN(s12) ? 0 : s12; + plugins.notify(me, 'afterDatasetsDraw', [easingValue]); + }, - var fa = t * s01; // scaling factor for triangle Ta - var fb = t * s12; + /** + * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` + * hook, in which case, plugins will not be called on `afterDatasetDraw`. + * @private + */ + drawDataset: function(index, easingValue) { + var me = this; + var meta = me.getDatasetMeta(index); + var args = { + meta: meta, + index: index, + easingValue: easingValue + }; - return { - previous: { - x: current.x - fa * (next.x - previous.x), - y: current.y - fa * (next.y - previous.y) - }, - next: { - x: current.x + fb * (next.x - previous.x), - y: current.y + fb * (next.y - previous.y) + if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { + return; } - }; - }; - helpers.EPSILON = Number.EPSILON || 1e-14; - helpers.splineCurveMonotone = function(points) { - // This function calculates Bézier control points in a similar way than |splineCurve|, - // but preserves monotonicity of the provided data and ensures no local extremums are added - // between the dataset discrete points due to the interpolation. - // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation - var pointsWithTangents = (points || []).map(function(point) { - return { - model: point._model, - deltaK: 0, - mK: 0 + meta.controller.draw(easingValue); + + plugins.notify(me, 'afterDatasetDraw', [args]); + }, + + /** + * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` + * hook, in which case, plugins will not be called on `afterTooltipDraw`. + * @private + */ + _drawTooltip: function(easingValue) { + var me = this; + var tooltip = me.tooltip; + var args = { + tooltip: tooltip, + easingValue: easingValue }; - }); - // Calculate slopes (deltaK) and initialize tangents (mK) - var pointsLen = pointsWithTangents.length; - var i, pointBefore, pointCurrent, pointAfter; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; + if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { + return; } - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointAfter && !pointAfter.model.skip) { - var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); + tooltip.draw(); - // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 - pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; - } + plugins.notify(me, 'afterTooltipDraw', [args]); + }, - if (!pointBefore || pointBefore.model.skip) { - pointCurrent.mK = pointCurrent.deltaK; - } else if (!pointAfter || pointAfter.model.skip) { - pointCurrent.mK = pointBefore.deltaK; - } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { - pointCurrent.mK = 0; - } else { - pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; - } - } + // Get the single element that was clicked on + // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw + getElementAtEvent: function(e) { + return Interaction.modes.single(this, e); + }, - // Adjust tangents to ensure monotonic properties - var alphaK, betaK, tauK, squaredMagnitude; - for (i = 0; i < pointsLen - 1; ++i) { - pointCurrent = pointsWithTangents[i]; - pointAfter = pointsWithTangents[i + 1]; - if (pointCurrent.model.skip || pointAfter.model.skip) { - continue; - } + getElementsAtEvent: function(e) { + return Interaction.modes.label(this, e, {intersect: true}); + }, - if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { - pointCurrent.mK = pointAfter.mK = 0; - continue; - } + getElementsAtXAxis: function(e) { + return Interaction.modes['x-axis'](this, e, {intersect: true}); + }, - alphaK = pointCurrent.mK / pointCurrent.deltaK; - betaK = pointAfter.mK / pointCurrent.deltaK; - squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); - if (squaredMagnitude <= 9) { - continue; + getElementsAtEventForMode: function(e, mode, options) { + var method = Interaction.modes[mode]; + if (typeof method === 'function') { + return method(this, e, options); } - tauK = 3 / Math.sqrt(squaredMagnitude); - pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; - pointAfter.mK = betaK * tauK * pointCurrent.deltaK; - } + return []; + }, - // Compute control points - var deltaX; - for (i = 0; i < pointsLen; ++i) { - pointCurrent = pointsWithTangents[i]; - if (pointCurrent.model.skip) { - continue; - } + getDatasetAtEvent: function(e) { + return Interaction.modes.dataset(this, e, {intersect: true}); + }, - pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; - pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; - if (pointBefore && !pointBefore.model.skip) { - deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; - pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; - pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; + getDatasetMeta: function(datasetIndex) { + var me = this; + var dataset = me.data.datasets[datasetIndex]; + if (!dataset._meta) { + dataset._meta = {}; } - if (pointAfter && !pointAfter.model.skip) { - deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; - pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; - pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + + var meta = dataset._meta[me.id]; + if (!meta) { + meta = dataset._meta[me.id] = { + type: null, + data: [], + dataset: null, + controller: null, + hidden: null, // See isDatasetVisible() comment + xAxisID: null, + yAxisID: null + }; } - } - }; - helpers.nextItem = function(collection, index, loop) { - if (loop) { - return index >= collection.length - 1 ? collection[0] : collection[index + 1]; - } - return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; - }; - helpers.previousItem = function(collection, index, loop) { - if (loop) { - return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; - } - return index <= 0 ? collection[0] : collection[index - 1]; - }; - // Implementation of the nice number algorithm used in determining where axis labels will go - helpers.niceNum = function(range, round) { - var exponent = Math.floor(helpers.log10(range)); - var fraction = range / Math.pow(10, exponent); - var niceFraction; - if (round) { - if (fraction < 1.5) { - niceFraction = 1; - } else if (fraction < 3) { - niceFraction = 2; - } else if (fraction < 7) { - niceFraction = 5; - } else { - niceFraction = 10; + return meta; + }, + + getVisibleDatasetCount: function() { + var count = 0; + for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { + if (this.isDatasetVisible(i)) { + count++; + } } - } else if (fraction <= 1.0) { - niceFraction = 1; - } else if (fraction <= 2) { - niceFraction = 2; - } else if (fraction <= 5) { - niceFraction = 5; - } else { - niceFraction = 10; - } + return count; + }, - return niceFraction * Math.pow(10, exponent); - }; - // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ - helpers.requestAnimFrame = (function() { - if (typeof window === 'undefined') { - return function(callback) { - callback(); - }; - } - return window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback) { - return window.setTimeout(callback, 1000 / 60); - }; - }()); - // -- DOM methods - helpers.getRelativePosition = function(evt, chart) { - var mouseX, mouseY; - var e = evt.originalEvent || evt; - var canvas = evt.target || evt.srcElement; - var boundingRect = canvas.getBoundingClientRect(); + isDatasetVisible: function(datasetIndex) { + var meta = this.getDatasetMeta(datasetIndex); - var touches = e.touches; - if (touches && touches.length > 0) { - mouseX = touches[0].clientX; - mouseY = touches[0].clientY; + // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, + // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. + return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; + }, - } else { - mouseX = e.clientX; - mouseY = e.clientY; - } + generateLegend: function() { + return this.options.legendCallback(this); + }, - // Scale mouse coordinates into canvas coordinates - // by following the pattern laid out by 'jerryj' in the comments of - // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ - var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); - var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); - var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); - var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); - var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; - var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; + /** + * @private + */ + destroyDatasetMeta: function(datasetIndex) { + var id = this.id; + var dataset = this.data.datasets[datasetIndex]; + var meta = dataset._meta && dataset._meta[id]; - // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However - // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here - mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); - mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); + if (meta) { + meta.controller.destroy(); + delete dataset._meta[id]; + } + }, - return { - x: mouseX, - y: mouseY - }; + destroy: function() { + var me = this; + var canvas = me.canvas; + var i, ilen; - }; + me.stop(); - // Private helper function to convert max-width/max-height values that may be percentages into a number - function parseMaxStyle(styleValue, node, parentProperty) { - var valueInPixels; - if (typeof styleValue === 'string') { - valueInPixels = parseInt(styleValue, 10); + // dataset controllers need to cleanup associated data + for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { + me.destroyDatasetMeta(i); + } - if (styleValue.indexOf('%') !== -1) { - // percentage * size in dimension - valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; + if (canvas) { + me.unbindEvents(); + helpers.canvas.clear(me); + platform.releaseContext(me.ctx); + me.canvas = null; + me.ctx = null; } - } else { - valueInPixels = styleValue; - } - return valueInPixels; - } + plugins.notify(me, 'destroy'); - /** - * Returns if the given value contains an effective constraint. - * @private - */ - function isConstrainedValue(value) { - return value !== undefined && value !== null && value !== 'none'; - } + delete Chart.instances[me.id]; + }, - // Private helper to get a constraint dimension - // @param domNode : the node to check the constraint on - // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) - // @param percentageProperty : property of parent to use when calculating width as a percentage - // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser - function getConstraintDimension(domNode, maxStyle, percentageProperty) { - var view = document.defaultView; - var parentNode = helpers._getParentNode(domNode); - var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; - var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; - var hasCNode = isConstrainedValue(constrainedNode); - var hasCContainer = isConstrainedValue(constrainedContainer); - var infinity = Number.POSITIVE_INFINITY; + toBase64Image: function() { + return this.canvas.toDataURL.apply(this.canvas, arguments); + }, - if (hasCNode || hasCContainer) { - return Math.min( - hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, - hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); - } + initToolTip: function() { + var me = this; + me.tooltip = new Tooltip({ + _chart: me, + _chartInstance: me, // deprecated, backward compatibility + _data: me.data, + _options: me.options.tooltips + }, me); + }, - return 'none'; - } - // returns Number or undefined if no constraint - helpers.getConstraintWidth = function(domNode) { - return getConstraintDimension(domNode, 'max-width', 'clientWidth'); - }; - // returns Number or undefined if no constraint - helpers.getConstraintHeight = function(domNode) { - return getConstraintDimension(domNode, 'max-height', 'clientHeight'); - }; - /** - * @private - */ - helpers._calculatePadding = function(container, padding, parentDimension) { - padding = helpers.getStyle(container, padding); + /** + * @private + */ + bindEvents: function() { + var me = this; + var listeners = me._listeners = {}; + var listener = function() { + me.eventHandler.apply(me, arguments); + }; - return padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10); - }; - /** - * @private - */ - helpers._getParentNode = function(domNode) { - var parent = domNode.parentNode; - if (parent && parent.host) { - parent = parent.host; - } - return parent; - }; - helpers.getMaximumWidth = function(domNode) { - var container = helpers._getParentNode(domNode); - if (!container) { - return domNode.clientWidth; - } + helpers.each(me.options.events, function(type) { + platform.addEventListener(me, type, listener); + listeners[type] = listener; + }); - var clientWidth = container.clientWidth; - var paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth); - var paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth); + // Elements used to detect size change should not be injected for non responsive charts. + // See https://github.com/chartjs/Chart.js/issues/2210 + if (me.options.responsive) { + listener = function() { + me.resize(); + }; - var w = clientWidth - paddingLeft - paddingRight; - var cw = helpers.getConstraintWidth(domNode); - return isNaN(cw) ? w : Math.min(w, cw); - }; - helpers.getMaximumHeight = function(domNode) { - var container = helpers._getParentNode(domNode); - if (!container) { - return domNode.clientHeight; - } + platform.addEventListener(me, 'resize', listener); + listeners.resize = listener; + } + }, - var clientHeight = container.clientHeight; - var paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight); - var paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight); + /** + * @private + */ + unbindEvents: function() { + var me = this; + var listeners = me._listeners; + if (!listeners) { + return; + } - var h = clientHeight - paddingTop - paddingBottom; - var ch = helpers.getConstraintHeight(domNode); - return isNaN(ch) ? h : Math.min(h, ch); - }; - helpers.getStyle = function(el, property) { - return el.currentStyle ? - el.currentStyle[property] : - document.defaultView.getComputedStyle(el, null).getPropertyValue(property); - }; - helpers.retinaScale = function(chart, forceRatio) { - var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; - if (pixelRatio === 1) { - return; - } + delete me._listeners; + helpers.each(listeners, function(listener, type) { + platform.removeEventListener(me, type, listener); + }); + }, - var canvas = chart.canvas; - var height = chart.height; - var width = chart.width; + updateHoverStyle: function(elements, mode, enabled) { + var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; + var element, i, ilen; - canvas.height = height * pixelRatio; - canvas.width = width * pixelRatio; - chart.ctx.scale(pixelRatio, pixelRatio); + for (i = 0, ilen = elements.length; i < ilen; ++i) { + element = elements[i]; + if (element) { + this.getDatasetMeta(element._datasetIndex).controller[method](element); + } + } + }, - // If no style has been set on the canvas, the render size is used as display size, - // making the chart visually bigger, so let's enforce it to the "correct" values. - // See https://github.com/chartjs/Chart.js/issues/3575 - if (!canvas.style.height && !canvas.style.width) { - canvas.style.height = height + 'px'; - canvas.style.width = width + 'px'; - } - }; - // -- Canvas methods - helpers.fontString = function(pixelSize, fontStyle, fontFamily) { - return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; - }; - helpers.longestText = function(ctx, font, arrayOfThings, cache) { - cache = cache || {}; - var data = cache.data = cache.data || {}; - var gc = cache.garbageCollect = cache.garbageCollect || []; + /** + * @private + */ + eventHandler: function(e) { + var me = this; + var tooltip = me.tooltip; - if (cache.font !== font) { - data = cache.data = {}; - gc = cache.garbageCollect = []; - cache.font = font; - } + if (plugins.notify(me, 'beforeEvent', [e]) === false) { + return; + } - ctx.font = font; - var longest = 0; - helpers.each(arrayOfThings, function(thing) { - // Undefined strings and arrays should not be measured - if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { - longest = helpers.measureText(ctx, data, gc, longest, thing); - } else if (helpers.isArray(thing)) { - // if it is an array lets measure each element - // to do maybe simplify this function a bit so we can do this more recursively? - helpers.each(thing, function(nestedThing) { - // Undefined strings and arrays should not be measured - if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { - longest = helpers.measureText(ctx, data, gc, longest, nestedThing); - } + // Buffer any update calls so that renders do not occur + me._bufferedRender = true; + me._bufferedRequest = null; + + var changed = me.handleEvent(e); + // for smooth tooltip animations issue #4989 + // the tooltip should be the source of change + // Animation check workaround: + // tooltip._start will be null when tooltip isn't animating + if (tooltip) { + changed = tooltip._start + ? tooltip.handleEvent(e) + : changed | tooltip.handleEvent(e); + } + + plugins.notify(me, 'afterEvent', [e]); + + var bufferedRequest = me._bufferedRequest; + if (bufferedRequest) { + // If we have an update that was triggered, we need to do a normal render + me.render(bufferedRequest); + } else if (changed && !me.animating) { + // If entering, leaving, or changing elements, animate the change via pivot + me.stop(); + + // We only need to render at this point. Updating will cause scales to be + // recomputed generating flicker & using more memory than necessary. + me.render({ + duration: me.options.hover.animationDuration, + lazy: true }); } - }); - var gcLen = gc.length / 2; - if (gcLen > arrayOfThings.length) { - for (var i = 0; i < gcLen; i++) { - delete data[gc[i]]; + me._bufferedRender = false; + me._bufferedRequest = null; + + return me; + }, + + /** + * Handle an event + * @private + * @param {IEvent} event the event to handle + * @return {Boolean} true if the chart needs to re-render + */ + handleEvent: function(e) { + var me = this; + var options = me.options || {}; + var hoverOptions = options.hover; + var changed = false; + + me.lastActive = me.lastActive || []; + + // Find Active Elements for hover and tooltips + if (e.type === 'mouseout') { + me.active = []; + } else { + me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); } - gc.splice(0, gcLen); - } - return longest; - }; - helpers.measureText = function(ctx, data, gc, longest, string) { - var textWidth = data[string]; - if (!textWidth) { - textWidth = data[string] = ctx.measureText(string).width; - gc.push(string); - } - if (textWidth > longest) { - longest = textWidth; - } - return longest; - }; - helpers.numberOfLabelLines = function(arrayOfThings) { - var numberOfLines = 1; - helpers.each(arrayOfThings, function(thing) { - if (helpers.isArray(thing)) { - if (thing.length > numberOfLines) { - numberOfLines = thing.length; + + // Invoke onHover hook + // Need to call with native event here to not break backwards compatibility + helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); + + if (e.type === 'mouseup' || e.type === 'click') { + if (options.onClick) { + // Use e.native here for backwards compatibility + options.onClick.call(me, e.native, me.active); } } - }); - return numberOfLines; - }; - helpers.color = !color ? - function(value) { - console.error('Color.js not found!'); - return value; - } : - function(value) { - /* global CanvasGradient */ - if (value instanceof CanvasGradient) { - value = defaults.global.defaultColor; + // Remove styling for last active (even if it may still be active) + if (me.lastActive.length) { + me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); } - return color(value); - }; + // Built in hover styling + if (me.active.length && hoverOptions.mode) { + me.updateHoverStyle(me.active, hoverOptions.mode, true); + } - helpers.getHoverColor = function(colorValue) { - /* global CanvasPattern */ - return (colorValue instanceof CanvasPattern) ? - colorValue : - helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); - }; + changed = !helpers.arrayEquals(me.active, me.lastActive); + + // Remember Last Actives + me.lastActive = me.active; + + return changed; + } + }); + + /** + * Provided for backward compatibility, use Chart instead. + * @class Chart.Controller + * @deprecated since version 2.6.0 + * @todo remove at version 3 + * @private + */ + Chart.Controller = Chart; }; /***/ }), -/***/ "./node_modules/chart.js/src/core/core.interaction.js": -/*!************************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.interaction.js ***! - \************************************************************/ +/***/ "./node_modules/chart.js/src/core/core.datasetController.js": +/*!******************************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.datasetController.js ***! + \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -12712,400 +12903,362 @@ module.exports = function() { var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -/** - * Helper function to get relative position for an event - * @param {Event|IEvent} event - The event to get the position for - * @param {Chart} chart - The chart - * @returns {Point} the event position - */ -function getRelativePosition(e, chart) { - if (e.native) { - return { - x: e.x, - y: e.y - }; - } - - return helpers.getRelativePosition(e, chart); -} +module.exports = function(Chart) { -/** - * Helper function to traverse all of the visible elements in the chart - * @param chart {chart} the chart - * @param handler {Function} the callback to execute for each visible item - */ -function parseVisibleItems(chart, handler) { - var datasets = chart.data.datasets; - var meta, i, j, ilen, jlen; + var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; - for (i = 0, ilen = datasets.length; i < ilen; ++i) { - if (!chart.isDatasetVisible(i)) { - continue; + /** + * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', + * 'unshift') and notify the listener AFTER the array has been altered. Listeners are + * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. + */ + function listenArrayEvents(array, listener) { + if (array._chartjs) { + array._chartjs.listeners.push(listener); + return; } - meta = chart.getDatasetMeta(i); - for (j = 0, jlen = meta.data.length; j < jlen; ++j) { - var element = meta.data[j]; - if (!element._view.skip) { - handler(element); + Object.defineProperty(array, '_chartjs', { + configurable: true, + enumerable: false, + value: { + listeners: [listener] } - } - } -} + }); -/** - * Helper function to get the items that intersect the event position - * @param items {ChartElement[]} elements to filter - * @param position {Point} the point to be nearest to - * @return {ChartElement[]} the nearest items - */ -function getIntersectItems(chart, position) { - var elements = []; + arrayEvents.forEach(function(key) { + var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); + var base = array[key]; - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - } - }); + Object.defineProperty(array, key, { + configurable: true, + enumerable: false, + value: function() { + var args = Array.prototype.slice.call(arguments); + var res = base.apply(this, args); - return elements; -} + helpers.each(array._chartjs.listeners, function(object) { + if (typeof object[method] === 'function') { + object[method].apply(object, args); + } + }); -/** - * Helper function to get the items nearest to the event position considering all visible items in teh chart - * @param chart {Chart} the chart to look at elements from - * @param position {Point} the point to be nearest to - * @param intersect {Boolean} if true, only consider items that intersect the position - * @param distanceMetric {Function} function to provide the distance between points - * @return {ChartElement[]} the nearest items - */ -function getNearestItems(chart, position, intersect, distanceMetric) { - var minDistance = Number.POSITIVE_INFINITY; - var nearestItems = []; + return res; + } + }); + }); + } - parseVisibleItems(chart, function(element) { - if (intersect && !element.inRange(position.x, position.y)) { + /** + * Removes the given array event listener and cleanup extra attached properties (such as + * the _chartjs stub and overridden methods) if array doesn't have any more listeners. + */ + function unlistenArrayEvents(array, listener) { + var stub = array._chartjs; + if (!stub) { return; } - var center = element.getCenterPoint(); - var distance = distanceMetric(position, center); + var listeners = stub.listeners; + var index = listeners.indexOf(listener); + if (index !== -1) { + listeners.splice(index, 1); + } - if (distance < minDistance) { - nearestItems = [element]; - minDistance = distance; - } else if (distance === minDistance) { - // Can have multiple items at the same distance in which case we sort by size - nearestItems.push(element); + if (listeners.length > 0) { + return; } - }); - return nearestItems; -} + arrayEvents.forEach(function(key) { + delete array[key]; + }); -/** - * Get a distance metric function for two points based on the - * axis mode setting - * @param {String} axis the axis mode. x|y|xy - */ -function getDistanceMetricForAxis(axis) { - var useX = axis.indexOf('x') !== -1; - var useY = axis.indexOf('y') !== -1; + delete array._chartjs; + } - return function(pt1, pt2) { - var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; - var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; - return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + // Base class for all dataset controllers (line, bar, etc) + Chart.DatasetController = function(chart, datasetIndex) { + this.initialize(chart, datasetIndex); }; -} -function indexMode(chart, e, options) { - var position = getRelativePosition(e, chart); - // Default axis for index mode is 'x' to match old behaviour - options.axis = options.axis || 'x'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); - var elements = []; + helpers.extend(Chart.DatasetController.prototype, { - if (!items.length) { - return []; - } + /** + * Element type used to generate a meta dataset (e.g. Chart.element.Line). + * @type {Chart.core.element} + */ + datasetElementType: null, - chart.data.datasets.forEach(function(dataset, datasetIndex) { - if (chart.isDatasetVisible(datasetIndex)) { - var meta = chart.getDatasetMeta(datasetIndex); - var element = meta.data[items[0]._index]; + /** + * Element type used to generate a meta data (e.g. Chart.element.Point). + * @type {Chart.core.element} + */ + dataElementType: null, - // don't count items that are skipped (null data) - if (element && !element._view.skip) { - elements.push(element); - } - } - }); + initialize: function(chart, datasetIndex) { + var me = this; + me.chart = chart; + me.index = datasetIndex; + me.linkScales(); + me.addElements(); + }, - return elements; -} + updateIndex: function(datasetIndex) { + this.index = datasetIndex; + }, -/** - * @interface IInteractionOptions - */ -/** - * If true, only consider items that intersect the point - * @name IInterfaceOptions#boolean - * @type Boolean - */ + linkScales: function() { + var me = this; + var meta = me.getMeta(); + var dataset = me.getDataset(); -/** - * Contains interaction related functions - * @namespace Chart.Interaction - */ -module.exports = { - // Helper function for different modes - modes: { - single: function(chart, e) { - var position = getRelativePosition(e, chart); - var elements = []; + if (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) { + meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; + } + if (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) { + meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; + } + }, - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - return elements; - } - }); + getDataset: function() { + return this.chart.data.datasets[this.index]; + }, - return elements.slice(0, 1); + getMeta: function() { + return this.chart.getDatasetMeta(this.index); + }, + + getScaleForId: function(scaleID) { + return this.chart.scales[scaleID]; + }, + + reset: function() { + this.update(true); }, /** - * @function Chart.Interaction.modes.label - * @deprecated since version 2.4.0 - * @todo remove at version 3 * @private */ - label: indexMode, + destroy: function() { + if (this._data) { + unlistenArrayEvents(this._data, this); + } + }, - /** - * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item - * @function Chart.Interaction.modes.index - * @since v2.4.0 - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - index: indexMode, + createMetaDataset: function() { + var me = this; + var type = me.datasetElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index + }); + }, - /** - * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something - * If the options.intersect is false, we find the nearest item and return the items in that dataset - * @function Chart.Interaction.modes.dataset - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use during interaction - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - dataset: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + createMetaData: function(index) { + var me = this; + var type = me.dataElementType; + return type && new type({ + _chart: me.chart, + _datasetIndex: me.index, + _index: index + }); + }, - if (items.length > 0) { - items = chart.getDatasetMeta(items[0]._datasetIndex).data; + addElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data || []; + var metaData = meta.data; + var i, ilen; + + for (i = 0, ilen = data.length; i < ilen; ++i) { + metaData[i] = metaData[i] || me.createMetaData(i); } - return items; + meta.dataset = meta.dataset || me.createMetaDataset(); }, - /** - * @function Chart.Interaction.modes.x-axis - * @deprecated since version 2.4.0. Use index mode and intersect == true - * @todo remove at version 3 - * @private - */ - 'x-axis': function(chart, e) { - return indexMode(chart, e, {intersect: false}); + addElementAndReset: function(index) { + var element = this.createMetaData(index); + this.getMeta().data.splice(index, 0, element); + this.updateElement(element, index, true); }, - /** - * Point mode returns all elements that hit test based on the event position - * of the event - * @function Chart.Interaction.modes.intersect - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - point: function(chart, e) { - var position = getRelativePosition(e, chart); - return getIntersectItems(chart, position); + buildOrUpdateElements: function() { + var me = this; + var dataset = me.getDataset(); + var data = dataset.data || (dataset.data = []); + + // In order to correctly handle data addition/deletion animation (an thus simulate + // real-time charts), we need to monitor these data modifications and synchronize + // the internal meta data accordingly. + if (me._data !== data) { + if (me._data) { + // This case happens when the user replaced the data array instance. + unlistenArrayEvents(me._data, me); + } + + listenArrayEvents(data, me); + me._data = data; + } + + // Re-sync meta data in case the user replaced the data array or if we missed + // any updates and so make sure that we handle number of datapoints changing. + me.resyncElements(); }, - /** - * nearest mode returns the element closest to the point - * @function Chart.Interaction.modes.intersect - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned - */ - nearest: function(chart, e, options) { - var position = getRelativePosition(e, chart); - options.axis = options.axis || 'xy'; - var distanceMetric = getDistanceMetricForAxis(options.axis); - var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); + update: helpers.noop, - // We have multiple items at the same distance from the event. Now sort by smallest - if (nearestItems.length > 1) { - nearestItems.sort(function(a, b) { - var sizeA = a.getArea(); - var sizeB = b.getArea(); - var ret = sizeA - sizeB; + transition: function(easingValue) { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; - if (ret === 0) { - // if equal sort by dataset index - ret = a._datasetIndex - b._datasetIndex; - } + for (; i < ilen; ++i) { + elements[i].transition(easingValue); + } - return ret; - }); + if (meta.dataset) { + meta.dataset.transition(easingValue); } + }, - // Return only 1 item - return nearestItems.slice(0, 1); + draw: function() { + var meta = this.getMeta(); + var elements = meta.data || []; + var ilen = elements.length; + var i = 0; + + if (meta.dataset) { + meta.dataset.draw(); + } + + for (; i < ilen; ++i) { + elements[i].draw(); + } + }, + + removeHoverStyle: function(element) { + helpers.merge(element._model, element.$previousStyle || {}); + delete element.$previousStyle; + }, + + setHoverStyle: function(element) { + var dataset = this.chart.data.datasets[element._datasetIndex]; + var index = element._index; + var custom = element.custom || {}; + var valueOrDefault = helpers.valueAtIndexOrDefault; + var getHoverColor = helpers.getHoverColor; + var model = element._model; + + element.$previousStyle = { + backgroundColor: model.backgroundColor, + borderColor: model.borderColor, + borderWidth: model.borderWidth + }; + + model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); + model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); + model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); }, /** - * x mode returns the elements that hit-test at the current x coordinate - * @function Chart.Interaction.modes.x - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + * @private */ - x: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; - - parseVisibleItems(chart, function(element) { - if (element.inXRange(position.x)) { - items.push(element); - } + resyncElements: function() { + var me = this; + var meta = me.getMeta(); + var data = me.getDataset().data; + var numMeta = meta.data.length; + var numData = data.length; - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); + if (numData < numMeta) { + meta.data.splice(numData, numMeta - numData); + } else if (numData > numMeta) { + me.insertElements(numMeta, numData - numMeta); + } + }, - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; + /** + * @private + */ + insertElements: function(start, count) { + for (var i = 0; i < count; ++i) { + this.addElementAndReset(start + i); } - return items; }, /** - * y mode returns the elements that hit-test at the current y coordinate - * @function Chart.Interaction.modes.y - * @param chart {chart} the chart we are returning items from - * @param e {Event} the event we are find things at - * @param options {IInteractionOptions} options to use - * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + * @private */ - y: function(chart, e, options) { - var position = getRelativePosition(e, chart); - var items = []; - var intersectsItem = false; + onDataPush: function() { + this.insertElements(this.getDataset().data.length - 1, arguments.length); + }, - parseVisibleItems(chart, function(element) { - if (element.inYRange(position.y)) { - items.push(element); - } + /** + * @private + */ + onDataPop: function() { + this.getMeta().data.pop(); + }, - if (element.inRange(position.x, position.y)) { - intersectsItem = true; - } - }); + /** + * @private + */ + onDataShift: function() { + this.getMeta().data.shift(); + }, - // If we want to trigger on an intersect and we don't have any items - // that intersect the position, return nothing - if (options.intersect && !intersectsItem) { - items = []; - } - return items; + /** + * @private + */ + onDataSplice: function(start, count) { + this.getMeta().data.splice(start, count); + this.insertElements(start, arguments.length - 2); + }, + + /** + * @private + */ + onDataUnshift: function() { + this.insertElements(0, arguments.length); } - } + }); + + Chart.DatasetController.extend = helpers.inherits; }; /***/ }), -/***/ "./node_modules/chart.js/src/core/core.js": -/*!************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.js ***! - \************************************************/ +/***/ "./node_modules/chart.js/src/core/core.defaults.js": +/*!*********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.defaults.js ***! + \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); - -defaults._set('global', { - responsive: true, - responsiveAnimationDuration: 0, - maintainAspectRatio: true, - events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], - hover: { - onHover: null, - mode: 'nearest', - intersect: true, - animationDuration: 400 - }, - onClick: null, - defaultColor: 'rgba(0,0,0,0.1)', - defaultFontColor: '#666', - defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - defaultFontSize: 12, - defaultFontStyle: 'normal', - showLines: true, - - // Element defaults defined in element extensions - elements: {}, +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - // Layout options such as padding - layout: { - padding: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } +module.exports = { + /** + * @private + */ + _set: function(scope, values) { + return helpers.merge(this[scope] || (this[scope] = {}), values); } -}); - -module.exports = function() { - - // Occupy the global variable of Chart, and create a simple base class - var Chart = function(item, config) { - this.construct(item, config); - return this; - }; - - Chart.Chart = Chart; - - return Chart; }; /***/ }), -/***/ "./node_modules/chart.js/src/core/core.layouts.js": +/***/ "./node_modules/chart.js/src/core/core.element.js": /*!********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.layouts.js ***! + !*** ./node_modules/chart.js/src/core/core.element.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -13113,5010 +13266,5587 @@ module.exports = function() { "use strict"; +var color = __webpack_require__(/*! chartjs-color */ "./node_modules/chartjs-color/index.js"); var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -function filterByPosition(array, position) { - return helpers.where(array, function(v) { - return v.position === position; - }); -} - -function sortByWeight(array, reverse) { - array.forEach(function(v, i) { - v._tmpIndex_ = i; - return v; - }); - array.sort(function(a, b) { - var v0 = reverse ? b : a; - var v1 = reverse ? a : b; - return v0.weight === v1.weight ? - v0._tmpIndex_ - v1._tmpIndex_ : - v0.weight - v1.weight; - }); - array.forEach(function(v) { - delete v._tmpIndex_; - }); -} +function interpolate(start, view, model, ease) { + var keys = Object.keys(model); + var i, ilen, key, actual, origin, target, type, c0, c1; -/** - * @interface ILayoutItem - * @prop {String} position - The position of the item in the chart layout. Possible values are - * 'left', 'top', 'right', 'bottom', and 'chartArea' - * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area - * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down - * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) - * @prop {Function} update - Takes two parameters: width and height. Returns size of item - * @prop {Function} getPadding - Returns an object with padding on the edges - * @prop {Number} width - Width of item. Must be valid after update() - * @prop {Number} height - Height of item. Must be valid after update() - * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update - * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update - * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update - * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update - */ + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; -// The layout service is very self explanatory. It's responsible for the layout within a chart. -// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need -// It is this service's responsibility of carrying out that layout. -module.exports = { - defaults: {}, + target = model[key]; - /** - * Register a box to a chart. - * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. - * @param {Chart} chart - the chart to use - * @param {ILayoutItem} item - the item to add to be layed out - */ - addBox: function(chart, item) { - if (!chart.boxes) { - chart.boxes = []; + // if a value is added to the model after pivot() has been called, the view + // doesn't contain it, so let's initialize the view to the target value. + if (!view.hasOwnProperty(key)) { + view[key] = target; } - // initialize item with default values - item.fullWidth = item.fullWidth || false; - item.position = item.position || 'top'; - item.weight = item.weight || 0; + actual = view[key]; - chart.boxes.push(item); - }, + if (actual === target || key[0] === '_') { + continue; + } - /** - * Remove a layoutItem from a chart - * @param {Chart} chart - the chart to remove the box from - * @param {Object} layoutItem - the item to remove from the layout - */ - removeBox: function(chart, layoutItem) { - var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; - if (index !== -1) { - chart.boxes.splice(index, 1); + if (!start.hasOwnProperty(key)) { + start[key] = actual; } - }, - /** - * Sets (or updates) options on the given `item`. - * @param {Chart} chart - the chart in which the item lives (or will be added to) - * @param {Object} item - the item to configure with the given options - * @param {Object} options - the new item options. - */ - configure: function(chart, item, options) { - var props = ['fullWidth', 'position', 'weight']; - var ilen = props.length; - var i = 0; - var prop; + origin = start[key]; - for (; i < ilen; ++i) { - prop = props[i]; - if (options.hasOwnProperty(prop)) { - item[prop] = options[prop]; + type = typeof target; + + if (type === typeof origin) { + if (type === 'string') { + c0 = color(origin); + if (c0.valid) { + c1 = color(target); + if (c1.valid) { + view[key] = c1.mix(c0, ease).rgbString(); + continue; + } + } + } else if (type === 'number' && isFinite(origin) && isFinite(target)) { + view[key] = origin + (target - origin) * ease; + continue; } } + + view[key] = target; + } +} + +var Element = function(configuration) { + helpers.extend(this, configuration); + this.initialize.apply(this, arguments); +}; + +helpers.extend(Element.prototype, { + + initialize: function() { + this.hidden = false; }, - /** - * Fits boxes of the given chart into the given size by having each box measure itself - * then running a fitting algorithm - * @param {Chart} chart - the chart - * @param {Number} width - the width to fit into - * @param {Number} height - the height to fit into - */ - update: function(chart, width, height) { - if (!chart) { - return; + pivot: function() { + var me = this; + if (!me._view) { + me._view = helpers.clone(me._model); } + me._start = {}; + return me; + }, - var layoutOptions = chart.options.layout || {}; - var padding = helpers.options.toPadding(layoutOptions.padding); - var leftPadding = padding.left; - var rightPadding = padding.right; - var topPadding = padding.top; - var bottomPadding = padding.bottom; + transition: function(ease) { + var me = this; + var model = me._model; + var start = me._start; + var view = me._view; - var leftBoxes = filterByPosition(chart.boxes, 'left'); - var rightBoxes = filterByPosition(chart.boxes, 'right'); - var topBoxes = filterByPosition(chart.boxes, 'top'); - var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); - var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); + // No animation -> No Transition + if (!model || ease === 1) { + me._view = model; + me._start = null; + return me; + } - // Sort boxes by weight. A higher weight is further away from the chart area - sortByWeight(leftBoxes, true); - sortByWeight(rightBoxes, false); - sortByWeight(topBoxes, true); - sortByWeight(bottomBoxes, false); + if (!view) { + view = me._view = {}; + } - // Essentially we now have any number of boxes on each of the 4 sides. - // Our canvas looks like the following. - // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and - // B1 is the bottom axis - // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays - // These locations are single-box locations only, when trying to register a chartArea location that is already taken, - // an error will be thrown. - // - // |----------------------------------------------------| - // | T1 (Full Width) | - // |----------------------------------------------------| - // | | | T2 | | - // | |----|-------------------------------------|----| - // | | | C1 | | C2 | | - // | | |----| |----| | - // | | | | | - // | L1 | L2 | ChartArea (C0) | R1 | - // | | | | | - // | | |----| |----| | - // | | | C3 | | C4 | | - // | |----|-------------------------------------|----| - // | | | B1 | | - // |----------------------------------------------------| - // | B2 (Full Width) | - // |----------------------------------------------------| - // - // What we do to find the best sizing, we do the following - // 1. Determine the minimum size of the chart area. - // 2. Split the remaining width equally between each vertical axis - // 3. Split the remaining height equally between each horizontal axis - // 4. Give each layout the maximum size it can be. The layout will return it's minimum size - // 5. Adjust the sizes of each axis based on it's minimum reported size. - // 6. Refit each axis - // 7. Position each axis in the final location - // 8. Tell the chart the final location of the chart area - // 9. Tell any axes that overlay the chart area the positions of the chart area + if (!start) { + start = me._start = {}; + } - // Step 1 - var chartWidth = width - leftPadding - rightPadding; - var chartHeight = height - topPadding - bottomPadding; - var chartAreaWidth = chartWidth / 2; // min 50% - var chartAreaHeight = chartHeight / 2; // min 50% + interpolate(start, view, model, ease); - // Step 2 - var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); + return me; + }, - // Step 3 - var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); + tooltipPosition: function() { + return { + x: this._model.x, + y: this._model.y + }; + }, - // Step 4 - var maxChartAreaWidth = chartWidth; - var maxChartAreaHeight = chartHeight; - var minBoxSizes = []; + hasValue: function() { + return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); + } +}); - function getMinimumBoxSize(box) { - var minSize; - var isHorizontal = box.isHorizontal(); +Element.extend = helpers.inherits; - if (isHorizontal) { - minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); - maxChartAreaHeight -= minSize.height; - } else { - minSize = box.update(verticalBoxWidth, maxChartAreaHeight); - maxChartAreaWidth -= minSize.width; - } +module.exports = Element; - minBoxSizes.push({ - horizontal: isHorizontal, - minSize: minSize, - box: box, - }); - } - helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); +/***/ }), - // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) - var maxHorizontalLeftPadding = 0; - var maxHorizontalRightPadding = 0; - var maxVerticalTopPadding = 0; - var maxVerticalBottomPadding = 0; +/***/ "./node_modules/chart.js/src/core/core.helpers.js": +/*!********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.helpers.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { - if (horizontalBox.getPadding) { - var boxPadding = horizontalBox.getPadding(); - maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); - maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); - } - }); +"use strict"; +/* global window: false */ +/* global document: false */ - helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { - if (verticalBox.getPadding) { - var boxPadding = verticalBox.getPadding(); - maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); - maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); - } - }); - // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could - // be if the axes are drawn at their minimum sizes. - // Steps 5 & 6 - var totalLeftBoxesWidth = leftPadding; - var totalRightBoxesWidth = rightPadding; - var totalTopBoxesHeight = topPadding; - var totalBottomBoxesHeight = bottomPadding; +var color = __webpack_require__(/*! chartjs-color */ "./node_modules/chartjs-color/index.js"); +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); +var scaleService = __webpack_require__(/*! ../core/core.scaleService */ "./node_modules/chart.js/src/core/core.scaleService.js"); - // Function to fit a box - function fitBox(box) { - var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { - return minBox.box === box; - }); +module.exports = function() { - if (minBoxSize) { - if (box.isHorizontal()) { - var scaleMargin = { - left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), - right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), - top: 0, - bottom: 0 - }; + // -- Basic js utility methods - // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends - // on the margin. Sometimes they need to increase in size slightly - box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); + helpers.configMerge = function(/* objects ... */) { + return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { + merger: function(key, target, source, options) { + var tval = target[key] || {}; + var sval = source[key]; + + if (key === 'scales') { + // scale config merging is complex. Add our own function here for that + target[key] = helpers.scaleMerge(tval, sval); + } else if (key === 'scale') { + // used in polar area & radar charts since there is only one scale + target[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]); } else { - box.update(minBoxSize.minSize.width, maxChartAreaHeight); + helpers._merger(key, target, source, options); } } - } - - // Update, and calculate the left and right margins for the horizontal boxes - helpers.each(leftBoxes.concat(rightBoxes), fitBox); - - helpers.each(leftBoxes, function(box) { - totalLeftBoxesWidth += box.width; }); + }; - helpers.each(rightBoxes, function(box) { - totalRightBoxesWidth += box.width; - }); + helpers.scaleMerge = function(/* objects ... */) { + return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { + merger: function(key, target, source, options) { + if (key === 'xAxes' || key === 'yAxes') { + var slen = source[key].length; + var i, type, scale; - // Set the Left and Right margins for the horizontal boxes - helpers.each(topBoxes.concat(bottomBoxes), fitBox); + if (!target[key]) { + target[key] = []; + } - // Figure out how much margin is on the top and bottom of the vertical boxes - helpers.each(topBoxes, function(box) { - totalTopBoxesHeight += box.height; - }); + for (i = 0; i < slen; ++i) { + scale = source[key][i]; + type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); - helpers.each(bottomBoxes, function(box) { - totalBottomBoxesHeight += box.height; + if (i >= target[key].length) { + target[key].push({}); + } + + if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { + // new/untyped scale or type changed: let's apply the new defaults + // then merge source scale to correctly overwrite the defaults. + helpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]); + } else { + // scales type are the same + helpers.merge(target[key][i], scale); + } + } + } else { + helpers._merger(key, target, source, options); + } + } }); + }; - function finalFitVerticalBox(box) { - var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { - return minSize.box === box; - }); + helpers.where = function(collection, filterCallback) { + if (helpers.isArray(collection) && Array.prototype.filter) { + return collection.filter(filterCallback); + } + var filtered = []; - var scaleMargin = { - left: 0, - right: 0, - top: totalTopBoxesHeight, - bottom: totalBottomBoxesHeight - }; + helpers.each(collection, function(item) { + if (filterCallback(item)) { + filtered.push(item); + } + }); - if (minBoxSize) { - box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); + return filtered; + }; + helpers.findIndex = Array.prototype.findIndex ? + function(array, callback, scope) { + return array.findIndex(callback, scope); + } : + function(array, callback, scope) { + scope = scope === undefined ? array : scope; + for (var i = 0, ilen = array.length; i < ilen; ++i) { + if (callback.call(scope, array[i], i, array)) { + return i; + } + } + return -1; + }; + helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to start of the array + if (helpers.isNullOrUndef(startIndex)) { + startIndex = -1; + } + for (var i = startIndex + 1; i < arrayToSearch.length; i++) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; + } + } + }; + helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { + // Default to end of the array + if (helpers.isNullOrUndef(startIndex)) { + startIndex = arrayToSearch.length; + } + for (var i = startIndex - 1; i >= 0; i--) { + var currentItem = arrayToSearch[i]; + if (filterCallback(currentItem)) { + return currentItem; } } + }; - // Let the left layout know the final margin - helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); + // -- Math methods + helpers.isNumber = function(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + }; + helpers.almostEquals = function(x, y, epsilon) { + return Math.abs(x - y) < epsilon; + }; + helpers.almostWhole = function(x, epsilon) { + var rounded = Math.round(x); + return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); + }; + helpers.max = function(array) { + return array.reduce(function(max, value) { + if (!isNaN(value)) { + return Math.max(max, value); + } + return max; + }, Number.NEGATIVE_INFINITY); + }; + helpers.min = function(array) { + return array.reduce(function(min, value) { + if (!isNaN(value)) { + return Math.min(min, value); + } + return min; + }, Number.POSITIVE_INFINITY); + }; + helpers.sign = Math.sign ? + function(x) { + return Math.sign(x); + } : + function(x) { + x = +x; // convert to a number + if (x === 0 || isNaN(x)) { + return x; + } + return x > 0 ? 1 : -1; + }; + helpers.log10 = Math.log10 ? + function(x) { + return Math.log10(x); + } : + function(x) { + var exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10. + // Check for whole powers of 10, + // which due to floating point rounding error should be corrected. + var powerOf10 = Math.round(exponent); + var isPowerOf10 = x === Math.pow(10, powerOf10); - // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) - totalLeftBoxesWidth = leftPadding; - totalRightBoxesWidth = rightPadding; - totalTopBoxesHeight = topPadding; - totalBottomBoxesHeight = bottomPadding; + return isPowerOf10 ? powerOf10 : exponent; + }; + helpers.toRadians = function(degrees) { + return degrees * (Math.PI / 180); + }; + helpers.toDegrees = function(radians) { + return radians * (180 / Math.PI); + }; + // Gets the angle from vertical upright to the point about a centre. + helpers.getAngleFromPoint = function(centrePoint, anglePoint) { + var distanceFromXCenter = anglePoint.x - centrePoint.x; + var distanceFromYCenter = anglePoint.y - centrePoint.y; + var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); - helpers.each(leftBoxes, function(box) { - totalLeftBoxesWidth += box.width; - }); + var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); - helpers.each(rightBoxes, function(box) { - totalRightBoxesWidth += box.width; - }); + if (angle < (-0.5 * Math.PI)) { + angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] + } - helpers.each(topBoxes, function(box) { - totalTopBoxesHeight += box.height; - }); - helpers.each(bottomBoxes, function(box) { - totalBottomBoxesHeight += box.height; - }); + return { + angle: angle, + distance: radialDistanceFromCenter + }; + }; + helpers.distanceBetweenPoints = function(pt1, pt2) { + return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); + }; + helpers.aliasPixel = function(pixelWidth) { + return (pixelWidth % 2 === 0) ? 0 : 0.5; + }; + helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { + // Props to Rob Spencer at scaled innovation for his post on splining between points + // http://scaledinnovation.com/analytics/splines/aboutSplines.html - // We may be adding some padding to account for rotated x axis labels - var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); - totalLeftBoxesWidth += leftPaddingAddition; - totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); + // This function must also respect "skipped" points - var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); - totalTopBoxesHeight += topPaddingAddition; - totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); + var previous = firstPoint.skip ? middlePoint : firstPoint; + var current = middlePoint; + var next = afterPoint.skip ? middlePoint : afterPoint; - // Figure out if our chart area changed. This would occur if the dataset layout label rotation - // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do - // without calling `fit` again - var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; - var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; + var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); + var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); - if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { - helpers.each(leftBoxes, function(box) { - box.height = newMaxChartAreaHeight; - }); + var s01 = d01 / (d01 + d12); + var s12 = d12 / (d01 + d12); - helpers.each(rightBoxes, function(box) { - box.height = newMaxChartAreaHeight; - }); + // If all points are the same, s01 & s02 will be inf + s01 = isNaN(s01) ? 0 : s01; + s12 = isNaN(s12) ? 0 : s12; - helpers.each(topBoxes, function(box) { - if (!box.fullWidth) { - box.width = newMaxChartAreaWidth; - } - }); + var fa = t * s01; // scaling factor for triangle Ta + var fb = t * s12; - helpers.each(bottomBoxes, function(box) { - if (!box.fullWidth) { - box.width = newMaxChartAreaWidth; - } - }); + return { + previous: { + x: current.x - fa * (next.x - previous.x), + y: current.y - fa * (next.y - previous.y) + }, + next: { + x: current.x + fb * (next.x - previous.x), + y: current.y + fb * (next.y - previous.y) + } + }; + }; + helpers.EPSILON = Number.EPSILON || 1e-14; + helpers.splineCurveMonotone = function(points) { + // This function calculates Bézier control points in a similar way than |splineCurve|, + // but preserves monotonicity of the provided data and ensures no local extremums are added + // between the dataset discrete points due to the interpolation. + // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation - maxChartAreaHeight = newMaxChartAreaHeight; - maxChartAreaWidth = newMaxChartAreaWidth; - } + var pointsWithTangents = (points || []).map(function(point) { + return { + model: point._model, + deltaK: 0, + mK: 0 + }; + }); - // Step 7 - Position the boxes - var left = leftPadding + leftPaddingAddition; - var top = topPadding + topPaddingAddition; + // Calculate slopes (deltaK) and initialize tangents (mK) + var pointsLen = pointsWithTangents.length; + var i, pointBefore, pointCurrent, pointAfter; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } - function placeBox(box) { - if (box.isHorizontal()) { - box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; - box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; - box.top = top; - box.bottom = top + box.height; + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointAfter && !pointAfter.model.skip) { + var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); - // Move to next point - top = box.bottom; + // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 + pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; + } + if (!pointBefore || pointBefore.model.skip) { + pointCurrent.mK = pointCurrent.deltaK; + } else if (!pointAfter || pointAfter.model.skip) { + pointCurrent.mK = pointBefore.deltaK; + } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { + pointCurrent.mK = 0; } else { - - box.left = left; - box.right = left + box.width; - box.top = totalTopBoxesHeight; - box.bottom = totalTopBoxesHeight + maxChartAreaHeight; - - // Move to next point - left = box.right; + pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; } } - helpers.each(leftBoxes.concat(topBoxes), placeBox); + // Adjust tangents to ensure monotonic properties + var alphaK, betaK, tauK, squaredMagnitude; + for (i = 0; i < pointsLen - 1; ++i) { + pointCurrent = pointsWithTangents[i]; + pointAfter = pointsWithTangents[i + 1]; + if (pointCurrent.model.skip || pointAfter.model.skip) { + continue; + } - // Account for chart width and height - left += maxChartAreaWidth; - top += maxChartAreaHeight; + if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { + pointCurrent.mK = pointAfter.mK = 0; + continue; + } - helpers.each(rightBoxes, placeBox); - helpers.each(bottomBoxes, placeBox); + alphaK = pointCurrent.mK / pointCurrent.deltaK; + betaK = pointAfter.mK / pointCurrent.deltaK; + squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); + if (squaredMagnitude <= 9) { + continue; + } - // Step 8 - chart.chartArea = { - left: totalLeftBoxesWidth, - top: totalTopBoxesHeight, - right: totalLeftBoxesWidth + maxChartAreaWidth, - bottom: totalTopBoxesHeight + maxChartAreaHeight - }; + tauK = 3 / Math.sqrt(squaredMagnitude); + pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; + pointAfter.mK = betaK * tauK * pointCurrent.deltaK; + } - // Step 9 - helpers.each(chartAreaBoxes, function(box) { - box.left = chart.chartArea.left; - box.top = chart.chartArea.top; - box.right = chart.chartArea.right; - box.bottom = chart.chartArea.bottom; + // Compute control points + var deltaX; + for (i = 0; i < pointsLen; ++i) { + pointCurrent = pointsWithTangents[i]; + if (pointCurrent.model.skip) { + continue; + } - box.update(maxChartAreaWidth, maxChartAreaHeight); - }); - } -}; + pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; + pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; + if (pointBefore && !pointBefore.model.skip) { + deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; + pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; + pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; + } + if (pointAfter && !pointAfter.model.skip) { + deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; + pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; + pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; + } + } + }; + helpers.nextItem = function(collection, index, loop) { + if (loop) { + return index >= collection.length - 1 ? collection[0] : collection[index + 1]; + } + return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; + }; + helpers.previousItem = function(collection, index, loop) { + if (loop) { + return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; + } + return index <= 0 ? collection[0] : collection[index - 1]; + }; + // Implementation of the nice number algorithm used in determining where axis labels will go + helpers.niceNum = function(range, round) { + var exponent = Math.floor(helpers.log10(range)); + var fraction = range / Math.pow(10, exponent); + var niceFraction; + if (round) { + if (fraction < 1.5) { + niceFraction = 1; + } else if (fraction < 3) { + niceFraction = 2; + } else if (fraction < 7) { + niceFraction = 5; + } else { + niceFraction = 10; + } + } else if (fraction <= 1.0) { + niceFraction = 1; + } else if (fraction <= 2) { + niceFraction = 2; + } else if (fraction <= 5) { + niceFraction = 5; + } else { + niceFraction = 10; + } -/***/ }), + return niceFraction * Math.pow(10, exponent); + }; + // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ + helpers.requestAnimFrame = (function() { + if (typeof window === 'undefined') { + return function(callback) { + callback(); + }; + } + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + return window.setTimeout(callback, 1000 / 60); + }; + }()); + // -- DOM methods + helpers.getRelativePosition = function(evt, chart) { + var mouseX, mouseY; + var e = evt.originalEvent || evt; + var canvas = evt.target || evt.srcElement; + var boundingRect = canvas.getBoundingClientRect(); -/***/ "./node_modules/chart.js/src/core/core.plugins.js": -/*!********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.plugins.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + var touches = e.touches; + if (touches && touches.length > 0) { + mouseX = touches[0].clientX; + mouseY = touches[0].clientY; -"use strict"; + } else { + mouseX = e.clientX; + mouseY = e.clientY; + } + // Scale mouse coordinates into canvas coordinates + // by following the pattern laid out by 'jerryj' in the comments of + // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ + var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); + var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); + var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); + var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); + var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; + var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However + // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here + mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); + mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); -defaults._set('global', { - plugins: {} -}); + return { + x: mouseX, + y: mouseY + }; -/** - * The plugin service singleton - * @namespace Chart.plugins - * @since 2.1.0 - */ -module.exports = { - /** - * Globally registered plugins. - * @private - */ - _plugins: [], + }; - /** - * This identifier is used to invalidate the descriptors cache attached to each chart - * when a global plugin is registered or unregistered. In this case, the cache ID is - * incremented and descriptors are regenerated during following API calls. - * @private - */ - _cacheId: 0, + // Private helper function to convert max-width/max-height values that may be percentages into a number + function parseMaxStyle(styleValue, node, parentProperty) { + var valueInPixels; + if (typeof styleValue === 'string') { + valueInPixels = parseInt(styleValue, 10); - /** - * Registers the given plugin(s) if not already registered. - * @param {Array|Object} plugins plugin instance(s). - */ - register: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - if (p.indexOf(plugin) === -1) { - p.push(plugin); + if (styleValue.indexOf('%') !== -1) { + // percentage * size in dimension + valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; } - }); + } else { + valueInPixels = styleValue; + } - this._cacheId++; - }, + return valueInPixels; + } /** - * Unregisters the given plugin(s) only if registered. - * @param {Array|Object} plugins plugin instance(s). + * Returns if the given value contains an effective constraint. + * @private */ - unregister: function(plugins) { - var p = this._plugins; - ([]).concat(plugins).forEach(function(plugin) { - var idx = p.indexOf(plugin); - if (idx !== -1) { - p.splice(idx, 1); - } - }); + function isConstrainedValue(value) { + return value !== undefined && value !== null && value !== 'none'; + } - this._cacheId++; - }, + // Private helper to get a constraint dimension + // @param domNode : the node to check the constraint on + // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) + // @param percentageProperty : property of parent to use when calculating width as a percentage + // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser + function getConstraintDimension(domNode, maxStyle, percentageProperty) { + var view = document.defaultView; + var parentNode = helpers._getParentNode(domNode); + var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; + var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; + var hasCNode = isConstrainedValue(constrainedNode); + var hasCContainer = isConstrainedValue(constrainedContainer); + var infinity = Number.POSITIVE_INFINITY; - /** - * Remove all registered plugins. - * @since 2.1.5 - */ - clear: function() { - this._plugins = []; - this._cacheId++; - }, + if (hasCNode || hasCContainer) { + return Math.min( + hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, + hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); + } + return 'none'; + } + // returns Number or undefined if no constraint + helpers.getConstraintWidth = function(domNode) { + return getConstraintDimension(domNode, 'max-width', 'clientWidth'); + }; + // returns Number or undefined if no constraint + helpers.getConstraintHeight = function(domNode) { + return getConstraintDimension(domNode, 'max-height', 'clientHeight'); + }; /** - * Returns the number of registered plugins? - * @returns {Number} - * @since 2.1.5 - */ - count: function() { - return this._plugins.length; - }, + * @private + */ + helpers._calculatePadding = function(container, padding, parentDimension) { + padding = helpers.getStyle(container, padding); + return padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10); + }; /** - * Returns all registered plugin instances. - * @returns {Array} array of plugin objects. - * @since 2.1.5 + * @private */ - getAll: function() { - return this._plugins; - }, + helpers._getParentNode = function(domNode) { + var parent = domNode.parentNode; + if (parent && parent.host) { + parent = parent.host; + } + return parent; + }; + helpers.getMaximumWidth = function(domNode) { + var container = helpers._getParentNode(domNode); + if (!container) { + return domNode.clientWidth; + } - /** - * Calls enabled plugins for `chart` on the specified hook and with the given args. - * This method immediately returns as soon as a plugin explicitly returns false. The - * returned value can be used, for instance, to interrupt the current action. - * @param {Object} chart - The chart instance for which plugins should be called. - * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). - * @param {Array} [args] - Extra arguments to apply to the hook call. - * @returns {Boolean} false if any of the plugins return false, else returns true. - */ - notify: function(chart, hook, args) { - var descriptors = this.descriptors(chart); - var ilen = descriptors.length; - var i, descriptor, plugin, params, method; + var clientWidth = container.clientWidth; + var paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth); + var paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth); - for (i = 0; i < ilen; ++i) { - descriptor = descriptors[i]; - plugin = descriptor.plugin; - method = plugin[hook]; - if (typeof method === 'function') { - params = [chart].concat(args || []); - params.push(descriptor.options); - if (method.apply(plugin, params) === false) { - return false; - } - } + var w = clientWidth - paddingLeft - paddingRight; + var cw = helpers.getConstraintWidth(domNode); + return isNaN(cw) ? w : Math.min(w, cw); + }; + helpers.getMaximumHeight = function(domNode) { + var container = helpers._getParentNode(domNode); + if (!container) { + return domNode.clientHeight; } - return true; - }, + var clientHeight = container.clientHeight; + var paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight); + var paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight); - /** - * Returns descriptors of enabled plugins for the given chart. - * @returns {Array} [{ plugin, options }] - * @private - */ - descriptors: function(chart) { - var cache = chart.$plugins || (chart.$plugins = {}); - if (cache.id === this._cacheId) { - return cache.descriptors; + var h = clientHeight - paddingTop - paddingBottom; + var ch = helpers.getConstraintHeight(domNode); + return isNaN(ch) ? h : Math.min(h, ch); + }; + helpers.getStyle = function(el, property) { + return el.currentStyle ? + el.currentStyle[property] : + document.defaultView.getComputedStyle(el, null).getPropertyValue(property); + }; + helpers.retinaScale = function(chart, forceRatio) { + var pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1; + if (pixelRatio === 1) { + return; } - var plugins = []; - var descriptors = []; - var config = (chart && chart.config) || {}; - var options = (config.options && config.options.plugins) || {}; + var canvas = chart.canvas; + var height = chart.height; + var width = chart.width; - this._plugins.concat(config.plugins || []).forEach(function(plugin) { - var idx = plugins.indexOf(plugin); - if (idx !== -1) { - return; - } + canvas.height = height * pixelRatio; + canvas.width = width * pixelRatio; + chart.ctx.scale(pixelRatio, pixelRatio); - var id = plugin.id; - var opts = options[id]; - if (opts === false) { - return; - } + // If no style has been set on the canvas, the render size is used as display size, + // making the chart visually bigger, so let's enforce it to the "correct" values. + // See https://github.com/chartjs/Chart.js/issues/3575 + if (!canvas.style.height && !canvas.style.width) { + canvas.style.height = height + 'px'; + canvas.style.width = width + 'px'; + } + }; + // -- Canvas methods + helpers.fontString = function(pixelSize, fontStyle, fontFamily) { + return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; + }; + helpers.longestText = function(ctx, font, arrayOfThings, cache) { + cache = cache || {}; + var data = cache.data = cache.data || {}; + var gc = cache.garbageCollect = cache.garbageCollect || []; - if (opts === true) { - opts = helpers.clone(defaults.global.plugins[id]); + if (cache.font !== font) { + data = cache.data = {}; + gc = cache.garbageCollect = []; + cache.font = font; + } + + ctx.font = font; + var longest = 0; + helpers.each(arrayOfThings, function(thing) { + // Undefined strings and arrays should not be measured + if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { + longest = helpers.measureText(ctx, data, gc, longest, thing); + } else if (helpers.isArray(thing)) { + // if it is an array lets measure each element + // to do maybe simplify this function a bit so we can do this more recursively? + helpers.each(thing, function(nestedThing) { + // Undefined strings and arrays should not be measured + if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { + longest = helpers.measureText(ctx, data, gc, longest, nestedThing); + } + }); } + }); - plugins.push(plugin); - descriptors.push({ - plugin: plugin, - options: opts || {} - }); + var gcLen = gc.length / 2; + if (gcLen > arrayOfThings.length) { + for (var i = 0; i < gcLen; i++) { + delete data[gc[i]]; + } + gc.splice(0, gcLen); + } + return longest; + }; + helpers.measureText = function(ctx, data, gc, longest, string) { + var textWidth = data[string]; + if (!textWidth) { + textWidth = data[string] = ctx.measureText(string).width; + gc.push(string); + } + if (textWidth > longest) { + longest = textWidth; + } + return longest; + }; + helpers.numberOfLabelLines = function(arrayOfThings) { + var numberOfLines = 1; + helpers.each(arrayOfThings, function(thing) { + if (helpers.isArray(thing)) { + if (thing.length > numberOfLines) { + numberOfLines = thing.length; + } + } }); + return numberOfLines; + }; - cache.descriptors = descriptors; - cache.id = this._cacheId; - return descriptors; - }, + helpers.color = !color ? + function(value) { + console.error('Color.js not found!'); + return value; + } : + function(value) { + /* global CanvasGradient */ + if (value instanceof CanvasGradient) { + value = defaults.global.defaultColor; + } - /** - * Invalidates cache for the given chart: descriptors hold a reference on plugin option, - * but in some cases, this reference can be changed by the user when updating options. - * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 - * @private - */ - _invalidate: function(chart) { - delete chart.$plugins; - } + return color(value); + }; + + helpers.getHoverColor = function(colorValue) { + /* global CanvasPattern */ + return (colorValue instanceof CanvasPattern) ? + colorValue : + helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); + }; }; + +/***/ }), + +/***/ "./node_modules/chart.js/src/core/core.interaction.js": +/*!************************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.interaction.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + /** - * Plugin extension hooks. - * @interface IPlugin - * @since 2.1.0 + * Helper function to get relative position for an event + * @param {Event|IEvent} event - The event to get the position for + * @param {Chart} chart - The chart + * @returns {Point} the event position */ +function getRelativePosition(e, chart) { + if (e.native) { + return { + x: e.x, + y: e.y + }; + } + + return helpers.getRelativePosition(e, chart); +} + /** - * @method IPlugin#beforeInit - * @desc Called before initializing `chart`. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. + * Helper function to traverse all of the visible elements in the chart + * @param chart {chart} the chart + * @param handler {Function} the callback to execute for each visible item */ +function parseVisibleItems(chart, handler) { + var datasets = chart.data.datasets; + var meta, i, j, ilen, jlen; + + for (i = 0, ilen = datasets.length; i < ilen; ++i) { + if (!chart.isDatasetVisible(i)) { + continue; + } + + meta = chart.getDatasetMeta(i); + for (j = 0, jlen = meta.data.length; j < jlen; ++j) { + var element = meta.data[j]; + if (!element._view.skip) { + handler(element); + } + } + } +} + /** - * @method IPlugin#afterInit - * @desc Called after `chart` has been initialized and before the first update. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeUpdate - * @desc Called before updating `chart`. If any plugin returns `false`, the update - * is cancelled (and thus subsequent render(s)) until another `update` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart update. - */ -/** - * @method IPlugin#afterUpdate - * @desc Called after `chart` has been updated and before rendering. Note that this - * hook will not be called if the chart update has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDatasetsUpdate - * @desc Called before updating the `chart` datasets. If any plugin returns `false`, - * the datasets update is cancelled until another `update` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} false to cancel the datasets update. - * @since version 2.1.5 -*/ -/** - * @method IPlugin#afterDatasetsUpdate - * @desc Called after the `chart` datasets have been updated. Note that this hook - * will not be called if the datasets update has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @since version 2.1.5 - */ -/** - * @method IPlugin#beforeDatasetUpdate - * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin - * returns `false`, the datasets update is cancelled until another `update` is triggered. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart datasets drawing. - */ -/** - * @method IPlugin#afterDatasetUpdate - * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note - * that this hook will not be called if the datasets update has been previously cancelled. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeLayout - * @desc Called before laying out `chart`. If any plugin returns `false`, - * the layout update is cancelled until another `update` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart layout. - */ -/** - * @method IPlugin#afterLayout - * @desc Called after the `chart` has been layed out. Note that this hook will not - * be called if the layout update has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeRender - * @desc Called before rendering `chart`. If any plugin returns `false`, - * the rendering is cancelled until another `render` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart rendering. - */ -/** - * @method IPlugin#afterRender - * @desc Called after the `chart` has been fully rendered (and animation completed). Note - * that this hook will not be called if the rendering has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDraw - * @desc Called before drawing `chart` at every animation frame specified by the given - * easing value. If any plugin returns `false`, the frame drawing is cancelled until - * another `render` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart drawing. - */ -/** - * @method IPlugin#afterDraw - * @desc Called after the `chart` has been drawn for the specific easing value. Note - * that this hook will not be called if the drawing has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDatasetsDraw - * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, - * the datasets drawing is cancelled until another `render` is triggered. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart datasets drawing. - */ -/** - * @method IPlugin#afterDatasetsDraw - * @desc Called after the `chart` datasets have been drawn. Note that this hook - * will not be called if the datasets drawing has been previously cancelled. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeDatasetDraw - * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets - * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing - * is cancelled until another `render` is triggered. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart datasets drawing. - */ -/** - * @method IPlugin#afterDatasetDraw - * @desc Called after the `chart` datasets at the given `args.index` have been drawn - * (datasets are drawn in the reverse order). Note that this hook will not be called - * if the datasets drawing has been previously cancelled. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Number} args.index - The dataset index. - * @param {Object} args.meta - The dataset metadata. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - */ -/** - * @method IPlugin#beforeTooltipDraw - * @desc Called before drawing the `tooltip`. If any plugin returns `false`, - * the tooltip drawing is cancelled until another `render` is triggered. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Object} args.tooltip - The tooltip. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. - * @returns {Boolean} `false` to cancel the chart tooltip drawing. + * Helper function to get the items that intersect the event position + * @param items {ChartElement[]} elements to filter + * @param position {Point} the point to be nearest to + * @return {ChartElement[]} the nearest items */ +function getIntersectItems(chart, position) { + var elements = []; + + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + } + }); + + return elements; +} + /** - * @method IPlugin#afterTooltipDraw - * @desc Called after drawing the `tooltip`. Note that this hook will not - * be called if the tooltip drawing has been previously cancelled. - * @param {Chart} chart - The chart instance. - * @param {Object} args - The call arguments. - * @param {Object} args.tooltip - The tooltip. - * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. - * @param {Object} options - The plugin options. + * Helper function to get the items nearest to the event position considering all visible items in teh chart + * @param chart {Chart} the chart to look at elements from + * @param position {Point} the point to be nearest to + * @param intersect {Boolean} if true, only consider items that intersect the position + * @param distanceMetric {Function} function to provide the distance between points + * @return {ChartElement[]} the nearest items */ +function getNearestItems(chart, position, intersect, distanceMetric) { + var minDistance = Number.POSITIVE_INFINITY; + var nearestItems = []; + + parseVisibleItems(chart, function(element) { + if (intersect && !element.inRange(position.x, position.y)) { + return; + } + + var center = element.getCenterPoint(); + var distance = distanceMetric(position, center); + + if (distance < minDistance) { + nearestItems = [element]; + minDistance = distance; + } else if (distance === minDistance) { + // Can have multiple items at the same distance in which case we sort by size + nearestItems.push(element); + } + }); + + return nearestItems; +} + /** - * @method IPlugin#beforeEvent - * @desc Called before processing the specified `event`. If any plugin returns `false`, - * the event will be discarded. - * @param {Chart.Controller} chart - The chart instance. - * @param {IEvent} event - The event object. - * @param {Object} options - The plugin options. + * Get a distance metric function for two points based on the + * axis mode setting + * @param {String} axis the axis mode. x|y|xy */ +function getDistanceMetricForAxis(axis) { + var useX = axis.indexOf('x') !== -1; + var useY = axis.indexOf('y') !== -1; + + return function(pt1, pt2) { + var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; + var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; + return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); + }; +} + +function indexMode(chart, e, options) { + var position = getRelativePosition(e, chart); + // Default axis for index mode is 'x' to match old behaviour + options.axis = options.axis || 'x'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); + var elements = []; + + if (!items.length) { + return []; + } + + chart.data.datasets.forEach(function(dataset, datasetIndex) { + if (chart.isDatasetVisible(datasetIndex)) { + var meta = chart.getDatasetMeta(datasetIndex); + var element = meta.data[items[0]._index]; + + // don't count items that are skipped (null data) + if (element && !element._view.skip) { + elements.push(element); + } + } + }); + + return elements; +} + /** - * @method IPlugin#afterEvent - * @desc Called after the `event` has been consumed. Note that this hook - * will not be called if the `event` has been previously discarded. - * @param {Chart.Controller} chart - The chart instance. - * @param {IEvent} event - The event object. - * @param {Object} options - The plugin options. + * @interface IInteractionOptions */ /** - * @method IPlugin#resize - * @desc Called after the chart as been resized. - * @param {Chart.Controller} chart - The chart instance. - * @param {Number} size - The new canvas display size (eq. canvas.style width & height). - * @param {Object} options - The plugin options. + * If true, only consider items that intersect the point + * @name IInterfaceOptions#boolean + * @type Boolean */ + /** - * @method IPlugin#destroy - * @desc Called after the chart as been destroyed. - * @param {Chart.Controller} chart - The chart instance. - * @param {Object} options - The plugin options. + * Contains interaction related functions + * @namespace Chart.Interaction */ +module.exports = { + // Helper function for different modes + modes: { + single: function(chart, e) { + var position = getRelativePosition(e, chart); + var elements = []; + parseVisibleItems(chart, function(element) { + if (element.inRange(position.x, position.y)) { + elements.push(element); + return elements; + } + }); -/***/ }), + return elements.slice(0, 1); + }, -/***/ "./node_modules/chart.js/src/core/core.scale.js": -/*!******************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.scale.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /** + * @function Chart.Interaction.modes.label + * @deprecated since version 2.4.0 + * @todo remove at version 3 + * @private + */ + label: indexMode, -"use strict"; + /** + * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item + * @function Chart.Interaction.modes.index + * @since v2.4.0 + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + index: indexMode, + /** + * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something + * If the options.intersect is false, we find the nearest item and return the items in that dataset + * @function Chart.Interaction.modes.dataset + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use during interaction + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + dataset: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ./core.element */ "./node_modules/chart.js/src/core/core.element.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -var Ticks = __webpack_require__(/*! ./core.ticks */ "./node_modules/chart.js/src/core/core.ticks.js"); + if (items.length > 0) { + items = chart.getDatasetMeta(items[0]._datasetIndex).data; + } -defaults._set('scale', { - display: true, - position: 'left', - offset: false, + return items; + }, - // grid line settings - gridLines: { - display: true, - color: 'rgba(0, 0, 0, 0.1)', - lineWidth: 1, - drawBorder: true, - drawOnChartArea: true, - drawTicks: true, - tickMarkLength: 10, - zeroLineWidth: 1, - zeroLineColor: 'rgba(0,0,0,0.25)', - zeroLineBorderDash: [], - zeroLineBorderDashOffset: 0.0, - offsetGridLines: false, - borderDash: [], - borderDashOffset: 0.0 - }, + /** + * @function Chart.Interaction.modes.x-axis + * @deprecated since version 2.4.0. Use index mode and intersect == true + * @todo remove at version 3 + * @private + */ + 'x-axis': function(chart, e) { + return indexMode(chart, e, {intersect: false}); + }, - // scale label - scaleLabel: { - // display property - display: false, + /** + * Point mode returns all elements that hit test based on the event position + * of the event + * @function Chart.Interaction.modes.intersect + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + point: function(chart, e) { + var position = getRelativePosition(e, chart); + return getIntersectItems(chart, position); + }, - // actual label - labelString: '', + /** + * nearest mode returns the element closest to the point + * @function Chart.Interaction.modes.intersect + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + nearest: function(chart, e, options) { + var position = getRelativePosition(e, chart); + options.axis = options.axis || 'xy'; + var distanceMetric = getDistanceMetricForAxis(options.axis); + var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); - // line height - lineHeight: 1.2, + // We have multiple items at the same distance from the event. Now sort by smallest + if (nearestItems.length > 1) { + nearestItems.sort(function(a, b) { + var sizeA = a.getArea(); + var sizeB = b.getArea(); + var ret = sizeA - sizeB; - // top/bottom padding - padding: { - top: 4, - bottom: 4 - } - }, + if (ret === 0) { + // if equal sort by dataset index + ret = a._datasetIndex - b._datasetIndex; + } - // label settings - ticks: { - beginAtZero: false, - minRotation: 0, - maxRotation: 50, - mirror: false, - padding: 0, - reverse: false, - display: true, - autoSkip: true, - autoSkipPadding: 0, - labelOffset: 0, - // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. - callback: Ticks.formatters.values, - minor: {}, - major: {} - } -}); + return ret; + }); + } -function labelsFromTicks(ticks) { - var labels = []; - var i, ilen; + // Return only 1 item + return nearestItems.slice(0, 1); + }, - for (i = 0, ilen = ticks.length; i < ilen; ++i) { - labels.push(ticks[i].label); - } + /** + * x mode returns the elements that hit-test at the current x coordinate + * @function Chart.Interaction.modes.x + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + x: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; - return labels; -} + parseVisibleItems(chart, function(element) { + if (element.inXRange(position.x)) { + items.push(element); + } -function getLineValue(scale, index, offsetGridLines) { - var lineValue = scale.getPixelForTick(index); + if (element.inRange(position.x, position.y)) { + intersectsItem = true; + } + }); - if (offsetGridLines) { - if (index === 0) { - lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; - } else { - lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; - } - } - return lineValue; -} + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; + } + return items; + }, -function computeTextSize(context, tick, font) { - return helpers.isArray(tick) ? - helpers.longestText(context, font, tick) : - context.measureText(tick).width; -} + /** + * y mode returns the elements that hit-test at the current y coordinate + * @function Chart.Interaction.modes.y + * @param chart {chart} the chart we are returning items from + * @param e {Event} the event we are find things at + * @param options {IInteractionOptions} options to use + * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned + */ + y: function(chart, e, options) { + var position = getRelativePosition(e, chart); + var items = []; + var intersectsItem = false; -function parseFontOptions(options) { - var valueOrDefault = helpers.valueOrDefault; - var globalDefaults = defaults.global; - var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); - var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); - var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); + parseVisibleItems(chart, function(element) { + if (element.inYRange(position.y)) { + items.push(element); + } - return { - size: size, - style: style, - family: family, - font: helpers.fontString(size, style, family) - }; -} - -function parseLineHeight(options) { - return helpers.options.toLineHeight( - helpers.valueOrDefault(options.lineHeight, 1.2), - helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); -} - -module.exports = Element.extend({ - /** - * Get the padding needed for the scale - * @method getPadding - * @private - * @returns {Padding} the necessary padding - */ - getPadding: function() { - var me = this; - return { - left: me.paddingLeft || 0, - top: me.paddingTop || 0, - right: me.paddingRight || 0, - bottom: me.paddingBottom || 0 - }; - }, - - /** - * Returns the scale tick objects ({label, major}) - * @since 2.7 - */ - getTicks: function() { - return this._ticks; - }, - - // These methods are ordered by lifecyle. Utilities then follow. - // Any function defined here is inherited by all scale types. - // Any function can be extended by the scale type - - mergeTicksOptions: function() { - var ticks = this.options.ticks; - if (ticks.minor === false) { - ticks.minor = { - display: false - }; - } - if (ticks.major === false) { - ticks.major = { - display: false - }; - } - for (var key in ticks) { - if (key !== 'major' && key !== 'minor') { - if (typeof ticks.minor[key] === 'undefined') { - ticks.minor[key] = ticks[key]; - } - if (typeof ticks.major[key] === 'undefined') { - ticks.major[key] = ticks[key]; + if (element.inRange(position.x, position.y)) { + intersectsItem = true; } + }); + + // If we want to trigger on an intersect and we don't have any items + // that intersect the position, return nothing + if (options.intersect && !intersectsItem) { + items = []; } + return items; } - }, - beforeUpdate: function() { - helpers.callback(this.options.beforeUpdate, [this]); - }, + } +}; - update: function(maxWidth, maxHeight, margins) { - var me = this; - var i, ilen, labels, label, ticks, tick; - // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) - me.beforeUpdate(); +/***/ }), - // Absorb the master measurements - me.maxWidth = maxWidth; - me.maxHeight = maxHeight; - me.margins = helpers.extend({ - left: 0, - right: 0, - top: 0, - bottom: 0 - }, margins); - me.longestTextCache = me.longestTextCache || {}; +/***/ "./node_modules/chart.js/src/core/core.js": +/*!************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - // Dimensions - me.beforeSetDimensions(); - me.setDimensions(); - me.afterSetDimensions(); +"use strict"; - // Data min/max - me.beforeDataLimits(); - me.determineDataLimits(); - me.afterDataLimits(); - // Ticks - `this.ticks` is now DEPRECATED! - // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member - // and must not be accessed directly from outside this class. `this.ticks` being - // around for long time and not marked as private, we can't change its structure - // without unexpected breaking changes. If you need to access the scale ticks, - // use scale.getTicks() instead. +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); - me.beforeBuildTicks(); +defaults._set('global', { + responsive: true, + responsiveAnimationDuration: 0, + maintainAspectRatio: true, + events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], + hover: { + onHover: null, + mode: 'nearest', + intersect: true, + animationDuration: 400 + }, + onClick: null, + defaultColor: 'rgba(0,0,0,0.1)', + defaultFontColor: '#666', + defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", + defaultFontSize: 12, + defaultFontStyle: 'normal', + showLines: true, - // New implementations should return an array of objects but for BACKWARD COMPAT, - // we still support no return (`this.ticks` internally set by calling this method). - ticks = me.buildTicks() || []; + // Element defaults defined in element extensions + elements: {}, - me.afterBuildTicks(); + // Layout options such as padding + layout: { + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } +}); - me.beforeTickToLabelConversion(); +module.exports = function() { - // New implementations should return the formatted tick labels but for BACKWARD - // COMPAT, we still support no return (`this.ticks` internally changed by calling - // this method and supposed to contain only string values). - labels = me.convertTicksToLabels(ticks) || me.ticks; + // Occupy the global variable of Chart, and create a simple base class + var Chart = function(item, config) { + this.construct(item, config); + return this; + }; - me.afterTickToLabelConversion(); + Chart.Chart = Chart; - me.ticks = labels; // BACKWARD COMPATIBILITY + return Chart; +}; - // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! - // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) - for (i = 0, ilen = labels.length; i < ilen; ++i) { - label = labels[i]; - tick = ticks[i]; - if (!tick) { - ticks.push(tick = { - label: label, - major: false - }); - } else { - tick.label = label; - } - } +/***/ }), - me._ticks = ticks; +/***/ "./node_modules/chart.js/src/core/core.layouts.js": +/*!********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.layouts.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - // Tick Rotation - me.beforeCalculateTickRotation(); - me.calculateTickRotation(); - me.afterCalculateTickRotation(); - // Fit - me.beforeFit(); - me.fit(); - me.afterFit(); - // - me.afterUpdate(); +"use strict"; - return me.minSize; - }, - afterUpdate: function() { - helpers.callback(this.options.afterUpdate, [this]); - }, +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - // +function filterByPosition(array, position) { + return helpers.where(array, function(v) { + return v.position === position; + }); +} - beforeSetDimensions: function() { - helpers.callback(this.options.beforeSetDimensions, [this]); - }, - setDimensions: function() { - var me = this; - // Set the unconstrained dimension before label rotation - if (me.isHorizontal()) { - // Reset position before calculating rotation - me.width = me.maxWidth; - me.left = 0; - me.right = me.width; - } else { - me.height = me.maxHeight; +function sortByWeight(array, reverse) { + array.forEach(function(v, i) { + v._tmpIndex_ = i; + return v; + }); + array.sort(function(a, b) { + var v0 = reverse ? b : a; + var v1 = reverse ? a : b; + return v0.weight === v1.weight ? + v0._tmpIndex_ - v1._tmpIndex_ : + v0.weight - v1.weight; + }); + array.forEach(function(v) { + delete v._tmpIndex_; + }); +} - // Reset position before calculating rotation - me.top = 0; - me.bottom = me.height; - } +/** + * @interface ILayoutItem + * @prop {String} position - The position of the item in the chart layout. Possible values are + * 'left', 'top', 'right', 'bottom', and 'chartArea' + * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area + * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down + * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) + * @prop {Function} update - Takes two parameters: width and height. Returns size of item + * @prop {Function} getPadding - Returns an object with padding on the edges + * @prop {Number} width - Width of item. Must be valid after update() + * @prop {Number} height - Height of item. Must be valid after update() + * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update + * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update + * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update + * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update + */ - // Reset padding - me.paddingLeft = 0; - me.paddingTop = 0; - me.paddingRight = 0; - me.paddingBottom = 0; - }, - afterSetDimensions: function() { - helpers.callback(this.options.afterSetDimensions, [this]); - }, +// The layout service is very self explanatory. It's responsible for the layout within a chart. +// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need +// It is this service's responsibility of carrying out that layout. +module.exports = { + defaults: {}, - // Data limits - beforeDataLimits: function() { - helpers.callback(this.options.beforeDataLimits, [this]); - }, - determineDataLimits: helpers.noop, - afterDataLimits: function() { - helpers.callback(this.options.afterDataLimits, [this]); - }, + /** + * Register a box to a chart. + * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. + * @param {Chart} chart - the chart to use + * @param {ILayoutItem} item - the item to add to be layed out + */ + addBox: function(chart, item) { + if (!chart.boxes) { + chart.boxes = []; + } - // - beforeBuildTicks: function() { - helpers.callback(this.options.beforeBuildTicks, [this]); - }, - buildTicks: helpers.noop, - afterBuildTicks: function() { - helpers.callback(this.options.afterBuildTicks, [this]); - }, + // initialize item with default values + item.fullWidth = item.fullWidth || false; + item.position = item.position || 'top'; + item.weight = item.weight || 0; - beforeTickToLabelConversion: function() { - helpers.callback(this.options.beforeTickToLabelConversion, [this]); - }, - convertTicksToLabels: function() { - var me = this; - // Convert ticks to strings - var tickOpts = me.options.ticks; - me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); - }, - afterTickToLabelConversion: function() { - helpers.callback(this.options.afterTickToLabelConversion, [this]); + chart.boxes.push(item); }, - // - - beforeCalculateTickRotation: function() { - helpers.callback(this.options.beforeCalculateTickRotation, [this]); + /** + * Remove a layoutItem from a chart + * @param {Chart} chart - the chart to remove the box from + * @param {Object} layoutItem - the item to remove from the layout + */ + removeBox: function(chart, layoutItem) { + var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; + if (index !== -1) { + chart.boxes.splice(index, 1); + } }, - calculateTickRotation: function() { - var me = this; - var context = me.ctx; - var tickOpts = me.options.ticks; - var labels = labelsFromTicks(me._ticks); - - // Get the width of each grid by calculating the difference - // between x offsets between 0 and 1. - var tickFont = parseFontOptions(tickOpts); - context.font = tickFont.font; - - var labelRotation = tickOpts.minRotation || 0; - - if (labels.length && me.options.display && me.isHorizontal()) { - var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); - var labelWidth = originalLabelWidth; - var cosRotation, sinRotation; - - // Allow 3 pixels x2 padding either side for label readability - var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; - - // Max label rotation can be set or default to 90 - also act as a loop counter - while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { - var angleRadians = helpers.toRadians(labelRotation); - cosRotation = Math.cos(angleRadians); - sinRotation = Math.sin(angleRadians); - if (sinRotation * originalLabelWidth > me.maxHeight) { - // go back one step - labelRotation--; - break; - } + /** + * Sets (or updates) options on the given `item`. + * @param {Chart} chart - the chart in which the item lives (or will be added to) + * @param {Object} item - the item to configure with the given options + * @param {Object} options - the new item options. + */ + configure: function(chart, item, options) { + var props = ['fullWidth', 'position', 'weight']; + var ilen = props.length; + var i = 0; + var prop; - labelRotation++; - labelWidth = cosRotation * originalLabelWidth; + for (; i < ilen; ++i) { + prop = props[i]; + if (options.hasOwnProperty(prop)) { + item[prop] = options[prop]; } } - - me.labelRotation = labelRotation; - }, - afterCalculateTickRotation: function() { - helpers.callback(this.options.afterCalculateTickRotation, [this]); }, - // + /** + * Fits boxes of the given chart into the given size by having each box measure itself + * then running a fitting algorithm + * @param {Chart} chart - the chart + * @param {Number} width - the width to fit into + * @param {Number} height - the height to fit into + */ + update: function(chart, width, height) { + if (!chart) { + return; + } - beforeFit: function() { - helpers.callback(this.options.beforeFit, [this]); - }, - fit: function() { - var me = this; - // Reset - var minSize = me.minSize = { - width: 0, - height: 0 - }; + var layoutOptions = chart.options.layout || {}; + var padding = helpers.options.toPadding(layoutOptions.padding); + var leftPadding = padding.left; + var rightPadding = padding.right; + var topPadding = padding.top; + var bottomPadding = padding.bottom; - var labels = labelsFromTicks(me._ticks); + var leftBoxes = filterByPosition(chart.boxes, 'left'); + var rightBoxes = filterByPosition(chart.boxes, 'right'); + var topBoxes = filterByPosition(chart.boxes, 'top'); + var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); + var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); - var opts = me.options; - var tickOpts = opts.ticks; - var scaleLabelOpts = opts.scaleLabel; - var gridLineOpts = opts.gridLines; - var display = opts.display; - var isHorizontal = me.isHorizontal(); + // Sort boxes by weight. A higher weight is further away from the chart area + sortByWeight(leftBoxes, true); + sortByWeight(rightBoxes, false); + sortByWeight(topBoxes, true); + sortByWeight(bottomBoxes, false); - var tickFont = parseFontOptions(tickOpts); - var tickMarkLength = opts.gridLines.tickMarkLength; + // Essentially we now have any number of boxes on each of the 4 sides. + // Our canvas looks like the following. + // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and + // B1 is the bottom axis + // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays + // These locations are single-box locations only, when trying to register a chartArea location that is already taken, + // an error will be thrown. + // + // |----------------------------------------------------| + // | T1 (Full Width) | + // |----------------------------------------------------| + // | | | T2 | | + // | |----|-------------------------------------|----| + // | | | C1 | | C2 | | + // | | |----| |----| | + // | | | | | + // | L1 | L2 | ChartArea (C0) | R1 | + // | | | | | + // | | |----| |----| | + // | | | C3 | | C4 | | + // | |----|-------------------------------------|----| + // | | | B1 | | + // |----------------------------------------------------| + // | B2 (Full Width) | + // |----------------------------------------------------| + // + // What we do to find the best sizing, we do the following + // 1. Determine the minimum size of the chart area. + // 2. Split the remaining width equally between each vertical axis + // 3. Split the remaining height equally between each horizontal axis + // 4. Give each layout the maximum size it can be. The layout will return it's minimum size + // 5. Adjust the sizes of each axis based on it's minimum reported size. + // 6. Refit each axis + // 7. Position each axis in the final location + // 8. Tell the chart the final location of the chart area + // 9. Tell any axes that overlay the chart area the positions of the chart area - // Width - if (isHorizontal) { - // subtract the margins to line up with the chartArea if we are a full width scale - minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; - } else { - minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } + // Step 1 + var chartWidth = width - leftPadding - rightPadding; + var chartHeight = height - topPadding - bottomPadding; + var chartAreaWidth = chartWidth / 2; // min 50% + var chartAreaHeight = chartHeight / 2; // min 50% - // height - if (isHorizontal) { - minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; - } else { - minSize.height = me.maxHeight; // fill all the height - } + // Step 2 + var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); - // Are we showing a title for the scale? - if (scaleLabelOpts.display && display) { - var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); - var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); - var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; + // Step 3 + var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); + + // Step 4 + var maxChartAreaWidth = chartWidth; + var maxChartAreaHeight = chartHeight; + var minBoxSizes = []; + + function getMinimumBoxSize(box) { + var minSize; + var isHorizontal = box.isHorizontal(); if (isHorizontal) { - minSize.height += deltaHeight; + minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); + maxChartAreaHeight -= minSize.height; } else { - minSize.width += deltaHeight; + minSize = box.update(verticalBoxWidth, maxChartAreaHeight); + maxChartAreaWidth -= minSize.width; } + + minBoxSizes.push({ + horizontal: isHorizontal, + minSize: minSize, + box: box, + }); } - // Don't bother fitting the ticks if we are not showing them - if (tickOpts.display && display) { - var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); - var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); - var lineSpace = tickFont.size * 0.5; - var tickPadding = me.options.ticks.padding; + helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); - if (isHorizontal) { - // A horizontal axis is more constrained by the height. - me.longestLabelWidth = largestTextWidth; + // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) + var maxHorizontalLeftPadding = 0; + var maxHorizontalRightPadding = 0; + var maxVerticalTopPadding = 0; + var maxVerticalBottomPadding = 0; - var angleRadians = helpers.toRadians(me.labelRotation); - var cosRotation = Math.cos(angleRadians); - var sinRotation = Math.sin(angleRadians); + helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { + if (horizontalBox.getPadding) { + var boxPadding = horizontalBox.getPadding(); + maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); + maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); + } + }); - // TODO - improve this calculation - var labelHeight = (sinRotation * largestTextWidth) - + (tickFont.size * tallestLabelHeightInLines) - + (lineSpace * (tallestLabelHeightInLines - 1)) - + lineSpace; // padding + helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { + if (verticalBox.getPadding) { + var boxPadding = verticalBox.getPadding(); + maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); + maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); + } + }); - minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); + // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could + // be if the axes are drawn at their minimum sizes. + // Steps 5 & 6 + var totalLeftBoxesWidth = leftPadding; + var totalRightBoxesWidth = rightPadding; + var totalTopBoxesHeight = topPadding; + var totalBottomBoxesHeight = bottomPadding; - me.ctx.font = tickFont.font; - var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); - var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); + // Function to fit a box + function fitBox(box) { + var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { + return minBox.box === box; + }); - // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned - // which means that the right padding is dominated by the font height - if (me.labelRotation !== 0) { - me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges - me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; - } else { - me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges - me.paddingRight = lastLabelWidth / 2 + 3; - } - } else { - // A vertical axis is more constrained by the width. Labels are the - // dominant factor here, so get that length first and account for padding - if (tickOpts.mirror) { - largestTextWidth = 0; + if (minBoxSize) { + if (box.isHorizontal()) { + var scaleMargin = { + left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), + right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), + top: 0, + bottom: 0 + }; + + // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends + // on the margin. Sometimes they need to increase in size slightly + box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); } else { - // use lineSpace for consistency with horizontal axis - // tickPadding is not implemented for horizontal - largestTextWidth += tickPadding + lineSpace; + box.update(minBoxSize.minSize.width, maxChartAreaHeight); } + } + } - minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + // Update, and calculate the left and right margins for the horizontal boxes + helpers.each(leftBoxes.concat(rightBoxes), fitBox); - me.paddingTop = tickFont.size / 2; - me.paddingBottom = tickFont.size / 2; + helpers.each(leftBoxes, function(box) { + totalLeftBoxesWidth += box.width; + }); + + helpers.each(rightBoxes, function(box) { + totalRightBoxesWidth += box.width; + }); + + // Set the Left and Right margins for the horizontal boxes + helpers.each(topBoxes.concat(bottomBoxes), fitBox); + + // Figure out how much margin is on the top and bottom of the vertical boxes + helpers.each(topBoxes, function(box) { + totalTopBoxesHeight += box.height; + }); + + helpers.each(bottomBoxes, function(box) { + totalBottomBoxesHeight += box.height; + }); + + function finalFitVerticalBox(box) { + var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { + return minSize.box === box; + }); + + var scaleMargin = { + left: 0, + right: 0, + top: totalTopBoxesHeight, + bottom: totalBottomBoxesHeight + }; + + if (minBoxSize) { + box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); } } - me.handleMargins(); + // Let the left layout know the final margin + helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); - me.width = minSize.width; - me.height = minSize.height; - }, + // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) + totalLeftBoxesWidth = leftPadding; + totalRightBoxesWidth = rightPadding; + totalTopBoxesHeight = topPadding; + totalBottomBoxesHeight = bottomPadding; - /** - * Handle margins and padding interactions - * @private - */ - handleMargins: function() { - var me = this; - if (me.margins) { - me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); - me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); - me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); - me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); - } - }, + helpers.each(leftBoxes, function(box) { + totalLeftBoxesWidth += box.width; + }); - afterFit: function() { - helpers.callback(this.options.afterFit, [this]); - }, + helpers.each(rightBoxes, function(box) { + totalRightBoxesWidth += box.width; + }); - // Shared Methods - isHorizontal: function() { - return this.options.position === 'top' || this.options.position === 'bottom'; - }, - isFullWidth: function() { - return (this.options.fullWidth); - }, + helpers.each(topBoxes, function(box) { + totalTopBoxesHeight += box.height; + }); + helpers.each(bottomBoxes, function(box) { + totalBottomBoxesHeight += box.height; + }); - // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not - getRightValue: function(rawValue) { - // Null and undefined values first - if (helpers.isNullOrUndef(rawValue)) { - return NaN; - } - // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values - if (typeof rawValue === 'number' && !isFinite(rawValue)) { - return NaN; - } - // If it is in fact an object, dive in one more level - if (rawValue) { - if (this.isHorizontal()) { - if (rawValue.x !== undefined) { - return this.getRightValue(rawValue.x); + // We may be adding some padding to account for rotated x axis labels + var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); + totalLeftBoxesWidth += leftPaddingAddition; + totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); + + var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); + totalTopBoxesHeight += topPaddingAddition; + totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); + + // Figure out if our chart area changed. This would occur if the dataset layout label rotation + // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do + // without calling `fit` again + var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; + var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; + + if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { + helpers.each(leftBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers.each(rightBoxes, function(box) { + box.height = newMaxChartAreaHeight; + }); + + helpers.each(topBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; } - } else if (rawValue.y !== undefined) { - return this.getRightValue(rawValue.y); + }); + + helpers.each(bottomBoxes, function(box) { + if (!box.fullWidth) { + box.width = newMaxChartAreaWidth; + } + }); + + maxChartAreaHeight = newMaxChartAreaHeight; + maxChartAreaWidth = newMaxChartAreaWidth; + } + + // Step 7 - Position the boxes + var left = leftPadding + leftPaddingAddition; + var top = topPadding + topPaddingAddition; + + function placeBox(box) { + if (box.isHorizontal()) { + box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; + box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; + box.top = top; + box.bottom = top + box.height; + + // Move to next point + top = box.bottom; + + } else { + + box.left = left; + box.right = left + box.width; + box.top = totalTopBoxesHeight; + box.bottom = totalTopBoxesHeight + maxChartAreaHeight; + + // Move to next point + left = box.right; } } - // Value is good, return it - return rawValue; - }, + helpers.each(leftBoxes.concat(topBoxes), placeBox); + + // Account for chart width and height + left += maxChartAreaWidth; + top += maxChartAreaHeight; + helpers.each(rightBoxes, placeBox); + helpers.each(bottomBoxes, placeBox); + + // Step 8 + chart.chartArea = { + left: totalLeftBoxesWidth, + top: totalTopBoxesHeight, + right: totalLeftBoxesWidth + maxChartAreaWidth, + bottom: totalTopBoxesHeight + maxChartAreaHeight + }; + + // Step 9 + helpers.each(chartAreaBoxes, function(box) { + box.left = chart.chartArea.left; + box.top = chart.chartArea.top; + box.right = chart.chartArea.right; + box.bottom = chart.chartArea.bottom; + + box.update(maxChartAreaWidth, maxChartAreaHeight); + }); + } +}; + + +/***/ }), + +/***/ "./node_modules/chart.js/src/core/core.plugins.js": +/*!********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.plugins.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + +defaults._set('global', { + plugins: {} +}); + +/** + * The plugin service singleton + * @namespace Chart.plugins + * @since 2.1.0 + */ +module.exports = { /** - * Used to get the value to display in the tooltip for the data at the given index - * @param index - * @param datasetIndex + * Globally registered plugins. + * @private */ - getLabelForIndex: helpers.noop, + _plugins: [], /** - * Returns the location of the given data point. Value can either be an index or a numerical value - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param value - * @param index - * @param datasetIndex + * This identifier is used to invalidate the descriptors cache attached to each chart + * when a global plugin is registered or unregistered. In this case, the cache ID is + * incremented and descriptors are regenerated during following API calls. + * @private */ - getPixelForValue: helpers.noop, + _cacheId: 0, /** - * Used to get the data value from a given pixel. This is the inverse of getPixelForValue - * The coordinate (0, 0) is at the upper-left corner of the canvas - * @param pixel + * Registers the given plugin(s) if not already registered. + * @param {Array|Object} plugins plugin instance(s). */ - getValueForPixel: helpers.noop, + register: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + if (p.indexOf(plugin) === -1) { + p.push(plugin); + } + }); + + this._cacheId++; + }, /** - * Returns the location of the tick at the given index - * The coordinate (0, 0) is at the upper-left corner of the canvas + * Unregisters the given plugin(s) only if registered. + * @param {Array|Object} plugins plugin instance(s). */ - getPixelForTick: function(index) { - var me = this; - var offset = me.options.offset; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); - var pixel = (tickWidth * index) + me.paddingLeft; - - if (offset) { - pixel += tickWidth / 2; + unregister: function(plugins) { + var p = this._plugins; + ([]).concat(plugins).forEach(function(plugin) { + var idx = p.indexOf(plugin); + if (idx !== -1) { + p.splice(idx, 1); } + }); - var finalVal = me.left + Math.round(pixel); - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - var innerHeight = me.height - (me.paddingTop + me.paddingBottom); - return me.top + (index * (innerHeight / (me._ticks.length - 1))); + this._cacheId++; }, /** - * Utility for getting the pixel location of a percentage of scale - * The coordinate (0, 0) is at the upper-left corner of the canvas + * Remove all registered plugins. + * @since 2.1.5 */ - getPixelForDecimal: function(decimal) { - var me = this; - if (me.isHorizontal()) { - var innerWidth = me.width - (me.paddingLeft + me.paddingRight); - var valueOffset = (innerWidth * decimal) + me.paddingLeft; + clear: function() { + this._plugins = []; + this._cacheId++; + }, - var finalVal = me.left + Math.round(valueOffset); - finalVal += me.isFullWidth() ? me.margins.left : 0; - return finalVal; - } - return me.top + (decimal * me.height); + /** + * Returns the number of registered plugins? + * @returns {Number} + * @since 2.1.5 + */ + count: function() { + return this._plugins.length; }, /** - * Returns the pixel for the minimum chart value - * The coordinate (0, 0) is at the upper-left corner of the canvas + * Returns all registered plugin instances. + * @returns {Array} array of plugin objects. + * @since 2.1.5 */ - getBasePixel: function() { - return this.getPixelForValue(this.getBaseValue()); + getAll: function() { + return this._plugins; }, - getBaseValue: function() { - var me = this; - var min = me.min; - var max = me.max; + /** + * Calls enabled plugins for `chart` on the specified hook and with the given args. + * This method immediately returns as soon as a plugin explicitly returns false. The + * returned value can be used, for instance, to interrupt the current action. + * @param {Object} chart - The chart instance for which plugins should be called. + * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). + * @param {Array} [args] - Extra arguments to apply to the hook call. + * @returns {Boolean} false if any of the plugins return false, else returns true. + */ + notify: function(chart, hook, args) { + var descriptors = this.descriptors(chart); + var ilen = descriptors.length; + var i, descriptor, plugin, params, method; - return me.beginAtZero ? 0 : - min < 0 && max < 0 ? max : - min > 0 && max > 0 ? min : - 0; + for (i = 0; i < ilen; ++i) { + descriptor = descriptors[i]; + plugin = descriptor.plugin; + method = plugin[hook]; + if (typeof method === 'function') { + params = [chart].concat(args || []); + params.push(descriptor.options); + if (method.apply(plugin, params) === false) { + return false; + } + } + } + + return true; }, /** - * Returns a subset of ticks to be plotted to avoid overlapping labels. + * Returns descriptors of enabled plugins for the given chart. + * @returns {Array} [{ plugin, options }] * @private */ - _autoSkip: function(ticks) { - var skipRatio; - var me = this; - var isHorizontal = me.isHorizontal(); - var optionTicks = me.options.ticks.minor; - var tickCount = ticks.length; - var labelRotationRadians = helpers.toRadians(me.labelRotation); - var cosRotation = Math.cos(labelRotationRadians); - var longestRotatedLabel = me.longestLabelWidth * cosRotation; - var result = []; - var i, tick, shouldSkip; - - // figure out the maximum number of gridlines to show - var maxTicks; - if (optionTicks.maxTicksLimit) { - maxTicks = optionTicks.maxTicksLimit; + descriptors: function(chart) { + var cache = chart.$plugins || (chart.$plugins = {}); + if (cache.id === this._cacheId) { + return cache.descriptors; } - if (isHorizontal) { - skipRatio = false; + var plugins = []; + var descriptors = []; + var config = (chart && chart.config) || {}; + var options = (config.options && config.options.plugins) || {}; - if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { - skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); + this._plugins.concat(config.plugins || []).forEach(function(plugin) { + var idx = plugins.indexOf(plugin); + if (idx !== -1) { + return; } - // if they defined a max number of optionTicks, - // increase skipRatio until that number is met - if (maxTicks && tickCount > maxTicks) { - skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); + var id = plugin.id; + var opts = options[id]; + if (opts === false) { + return; } - } - for (i = 0; i < tickCount; i++) { - tick = ticks[i]; - - // Since we always show the last tick,we need may need to hide the last shown one before - shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); - if (shouldSkip && i !== tickCount - 1) { - // leave tick in place but make sure it's not displayed (#4635) - delete tick.label; + if (opts === true) { + opts = helpers.clone(defaults.global.plugins[id]); } - result.push(tick); - } - return result; - }, - // Actually draw the scale on the canvas - // @param {rectangle} chartArea : the area of the chart to draw full grid lines on - draw: function(chartArea) { - var me = this; - var options = me.options; - if (!options.display) { - return; - } + plugins.push(plugin); + descriptors.push({ + plugin: plugin, + options: opts || {} + }); + }); - var context = me.ctx; - var globalDefaults = defaults.global; - var optionTicks = options.ticks.minor; - var optionMajorTicks = options.ticks.major || optionTicks; - var gridLines = options.gridLines; - var scaleLabel = options.scaleLabel; + cache.descriptors = descriptors; + cache.id = this._cacheId; + return descriptors; + }, - var isRotated = me.labelRotation !== 0; - var isHorizontal = me.isHorizontal(); + /** + * Invalidates cache for the given chart: descriptors hold a reference on plugin option, + * but in some cases, this reference can be changed by the user when updating options. + * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167 + * @private + */ + _invalidate: function(chart) { + delete chart.$plugins; + } +}; - var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); - var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); - var tickFont = parseFontOptions(optionTicks); - var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); - var majorTickFont = parseFontOptions(optionMajorTicks); +/** + * Plugin extension hooks. + * @interface IPlugin + * @since 2.1.0 + */ +/** + * @method IPlugin#beforeInit + * @desc Called before initializing `chart`. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#afterInit + * @desc Called after `chart` has been initialized and before the first update. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeUpdate + * @desc Called before updating `chart`. If any plugin returns `false`, the update + * is cancelled (and thus subsequent render(s)) until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart update. + */ +/** + * @method IPlugin#afterUpdate + * @desc Called after `chart` has been updated and before rendering. Note that this + * hook will not be called if the chart update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDatasetsUpdate + * @desc Called before updating the `chart` datasets. If any plugin returns `false`, + * the datasets update is cancelled until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} false to cancel the datasets update. + * @since version 2.1.5 +*/ +/** + * @method IPlugin#afterDatasetsUpdate + * @desc Called after the `chart` datasets have been updated. Note that this hook + * will not be called if the datasets update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @since version 2.1.5 + */ +/** + * @method IPlugin#beforeDatasetUpdate + * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin + * returns `false`, the datasets update is cancelled until another `update` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ +/** + * @method IPlugin#afterDatasetUpdate + * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note + * that this hook will not be called if the datasets update has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeLayout + * @desc Called before laying out `chart`. If any plugin returns `false`, + * the layout update is cancelled until another `update` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart layout. + */ +/** + * @method IPlugin#afterLayout + * @desc Called after the `chart` has been layed out. Note that this hook will not + * be called if the layout update has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeRender + * @desc Called before rendering `chart`. If any plugin returns `false`, + * the rendering is cancelled until another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart rendering. + */ +/** + * @method IPlugin#afterRender + * @desc Called after the `chart` has been fully rendered (and animation completed). Note + * that this hook will not be called if the rendering has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDraw + * @desc Called before drawing `chart` at every animation frame specified by the given + * easing value. If any plugin returns `false`, the frame drawing is cancelled until + * another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart drawing. + */ +/** + * @method IPlugin#afterDraw + * @desc Called after the `chart` has been drawn for the specific easing value. Note + * that this hook will not be called if the drawing has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDatasetsDraw + * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, + * the datasets drawing is cancelled until another `render` is triggered. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ +/** + * @method IPlugin#afterDatasetsDraw + * @desc Called after the `chart` datasets have been drawn. Note that this hook + * will not be called if the datasets drawing has been previously cancelled. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeDatasetDraw + * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets + * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing + * is cancelled until another `render` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart datasets drawing. + */ +/** + * @method IPlugin#afterDatasetDraw + * @desc Called after the `chart` datasets at the given `args.index` have been drawn + * (datasets are drawn in the reverse order). Note that this hook will not be called + * if the datasets drawing has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Number} args.index - The dataset index. + * @param {Object} args.meta - The dataset metadata. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeTooltipDraw + * @desc Called before drawing the `tooltip`. If any plugin returns `false`, + * the tooltip drawing is cancelled until another `render` is triggered. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Object} args.tooltip - The tooltip. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + * @returns {Boolean} `false` to cancel the chart tooltip drawing. + */ +/** + * @method IPlugin#afterTooltipDraw + * @desc Called after drawing the `tooltip`. Note that this hook will not + * be called if the tooltip drawing has been previously cancelled. + * @param {Chart} chart - The chart instance. + * @param {Object} args - The call arguments. + * @param {Object} args.tooltip - The tooltip. + * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#beforeEvent + * @desc Called before processing the specified `event`. If any plugin returns `false`, + * the event will be discarded. + * @param {Chart.Controller} chart - The chart instance. + * @param {IEvent} event - The event object. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#afterEvent + * @desc Called after the `event` has been consumed. Note that this hook + * will not be called if the `event` has been previously discarded. + * @param {Chart.Controller} chart - The chart instance. + * @param {IEvent} event - The event object. + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#resize + * @desc Called after the chart as been resized. + * @param {Chart.Controller} chart - The chart instance. + * @param {Number} size - The new canvas display size (eq. canvas.style width & height). + * @param {Object} options - The plugin options. + */ +/** + * @method IPlugin#destroy + * @desc Called after the chart as been destroyed. + * @param {Chart.Controller} chart - The chart instance. + * @param {Object} options - The plugin options. + */ - var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; - var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); - var scaleLabelFont = parseFontOptions(scaleLabel); - var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); - var labelRotationRadians = helpers.toRadians(me.labelRotation); +/***/ }), - var itemsToDraw = []; +/***/ "./node_modules/chart.js/src/core/core.scale.js": +/*!******************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.scale.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - var axisWidth = me.options.gridLines.lineWidth; - var xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl; - var xTickEnd = options.position === 'right' ? me.left + tl : me.right; - var yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth; - var yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth; +"use strict"; - helpers.each(ticks, function(tick, index) { - // autoskipper skipped this tick (#4635) - if (helpers.isNullOrUndef(tick.label)) { - return; - } - var label = tick.label; - var lineWidth, lineColor, borderDash, borderDashOffset; - if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { - // Draw the first index specially - lineWidth = gridLines.zeroLineWidth; - lineColor = gridLines.zeroLineColor; - borderDash = gridLines.zeroLineBorderDash; - borderDashOffset = gridLines.zeroLineBorderDashOffset; - } else { - lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); - lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); - borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); - borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); - } +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ./core.element */ "./node_modules/chart.js/src/core/core.element.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); +var Ticks = __webpack_require__(/*! ./core.ticks */ "./node_modules/chart.js/src/core/core.ticks.js"); - // Common properties - var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; - var textAlign = 'middle'; - var textBaseline = 'middle'; - var tickPadding = optionTicks.padding; +defaults._set('scale', { + display: true, + position: 'left', + offset: false, - if (isHorizontal) { - var labelYOffset = tl + tickPadding; + // grid line settings + gridLines: { + display: true, + color: 'rgba(0, 0, 0, 0.1)', + lineWidth: 1, + drawBorder: true, + drawOnChartArea: true, + drawTicks: true, + tickMarkLength: 10, + zeroLineWidth: 1, + zeroLineColor: 'rgba(0,0,0,0.25)', + zeroLineBorderDash: [], + zeroLineBorderDashOffset: 0.0, + offsetGridLines: false, + borderDash: [], + borderDashOffset: 0.0 + }, - if (options.position === 'bottom') { - // bottom - textBaseline = !isRotated ? 'top' : 'middle'; - textAlign = !isRotated ? 'center' : 'right'; - labelY = me.top + labelYOffset; - } else { - // top - textBaseline = !isRotated ? 'bottom' : 'middle'; - textAlign = !isRotated ? 'center' : 'left'; - labelY = me.bottom - labelYOffset; - } + // scale label + scaleLabel: { + // display property + display: false, - var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); - if (xLineValue < me.left) { - lineColor = 'rgba(0,0,0,0)'; - } - xLineValue += helpers.aliasPixel(lineWidth); + // actual label + labelString: '', - labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) + // line height + lineHeight: 1.2, - tx1 = tx2 = x1 = x2 = xLineValue; - ty1 = yTickStart; - ty2 = yTickEnd; - y1 = chartArea.top; - y2 = chartArea.bottom + axisWidth; - } else { - var isLeft = options.position === 'left'; - var labelXOffset; + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } + }, - if (optionTicks.mirror) { - textAlign = isLeft ? 'left' : 'right'; - labelXOffset = tickPadding; - } else { - textAlign = isLeft ? 'right' : 'left'; - labelXOffset = tl + tickPadding; - } + // label settings + ticks: { + beginAtZero: false, + minRotation: 0, + maxRotation: 50, + mirror: false, + padding: 0, + reverse: false, + display: true, + autoSkip: true, + autoSkipPadding: 0, + labelOffset: 0, + // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. + callback: Ticks.formatters.values, + minor: {}, + major: {} + } +}); - labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; +function labelsFromTicks(ticks) { + var labels = []; + var i, ilen; - var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); - if (yLineValue < me.top) { - lineColor = 'rgba(0,0,0,0)'; - } - yLineValue += helpers.aliasPixel(lineWidth); + for (i = 0, ilen = ticks.length; i < ilen; ++i) { + labels.push(ticks[i].label); + } - labelY = me.getPixelForTick(index) + optionTicks.labelOffset; + return labels; +} - tx1 = xTickStart; - tx2 = xTickEnd; - x1 = chartArea.left; - x2 = chartArea.right + axisWidth; - ty1 = ty2 = y1 = y2 = yLineValue; - } +function getLineValue(scale, index, offsetGridLines) { + var lineValue = scale.getPixelForTick(index); - itemsToDraw.push({ - tx1: tx1, - ty1: ty1, - tx2: tx2, - ty2: ty2, - x1: x1, - y1: y1, - x2: x2, - y2: y2, - labelX: labelX, - labelY: labelY, - glWidth: lineWidth, - glColor: lineColor, - glBorderDash: borderDash, - glBorderDashOffset: borderDashOffset, - rotation: -1 * labelRotationRadians, - label: label, - major: tick.major, - textBaseline: textBaseline, - textAlign: textAlign - }); - }); + if (offsetGridLines) { + if (index === 0) { + lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; + } else { + lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; + } + } + return lineValue; +} - // Draw all of the tick labels, tick marks, and grid lines at the correct places - helpers.each(itemsToDraw, function(itemToDraw) { - if (gridLines.display) { - context.save(); - context.lineWidth = itemToDraw.glWidth; - context.strokeStyle = itemToDraw.glColor; - if (context.setLineDash) { - context.setLineDash(itemToDraw.glBorderDash); - context.lineDashOffset = itemToDraw.glBorderDashOffset; - } +function computeTextSize(context, tick, font) { + return helpers.isArray(tick) ? + helpers.longestText(context, font, tick) : + context.measureText(tick).width; +} - context.beginPath(); +function parseFontOptions(options) { + var valueOrDefault = helpers.valueOrDefault; + var globalDefaults = defaults.global; + var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); + var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); + var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); - if (gridLines.drawTicks) { - context.moveTo(itemToDraw.tx1, itemToDraw.ty1); - context.lineTo(itemToDraw.tx2, itemToDraw.ty2); - } + return { + size: size, + style: style, + family: family, + font: helpers.fontString(size, style, family) + }; +} - if (gridLines.drawOnChartArea) { - context.moveTo(itemToDraw.x1, itemToDraw.y1); - context.lineTo(itemToDraw.x2, itemToDraw.y2); - } +function parseLineHeight(options) { + return helpers.options.toLineHeight( + helpers.valueOrDefault(options.lineHeight, 1.2), + helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); +} - context.stroke(); - context.restore(); - } +module.exports = Element.extend({ + /** + * Get the padding needed for the scale + * @method getPadding + * @private + * @returns {Padding} the necessary padding + */ + getPadding: function() { + var me = this; + return { + left: me.paddingLeft || 0, + top: me.paddingTop || 0, + right: me.paddingRight || 0, + bottom: me.paddingBottom || 0 + }; + }, - if (optionTicks.display) { - // Make sure we draw text in the correct color and font - context.save(); - context.translate(itemToDraw.labelX, itemToDraw.labelY); - context.rotate(itemToDraw.rotation); - context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; - context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; - context.textBaseline = itemToDraw.textBaseline; - context.textAlign = itemToDraw.textAlign; + /** + * Returns the scale tick objects ({label, major}) + * @since 2.7 + */ + getTicks: function() { + return this._ticks; + }, - var label = itemToDraw.label; - if (helpers.isArray(label)) { - var lineCount = label.length; - var lineHeight = tickFont.size * 1.5; - var y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2; + // These methods are ordered by lifecyle. Utilities then follow. + // Any function defined here is inherited by all scale types. + // Any function can be extended by the scale type - for (var i = 0; i < lineCount; ++i) { - // We just make sure the multiline element is a string here.. - context.fillText('' + label[i], 0, y); - // apply same lineSpacing as calculated @ L#320 - y += lineHeight; - } - } else { - context.fillText(label, 0, 0); + mergeTicksOptions: function() { + var ticks = this.options.ticks; + if (ticks.minor === false) { + ticks.minor = { + display: false + }; + } + if (ticks.major === false) { + ticks.major = { + display: false + }; + } + for (var key in ticks) { + if (key !== 'major' && key !== 'minor') { + if (typeof ticks.minor[key] === 'undefined') { + ticks.minor[key] = ticks[key]; + } + if (typeof ticks.major[key] === 'undefined') { + ticks.major[key] = ticks[key]; } - context.restore(); } - }); + } + }, + beforeUpdate: function() { + helpers.callback(this.options.beforeUpdate, [this]); + }, - if (scaleLabel.display) { - // Draw the scale label - var scaleLabelX; - var scaleLabelY; - var rotation = 0; - var halfLineHeight = parseLineHeight(scaleLabel) / 2; + update: function(maxWidth, maxHeight, margins) { + var me = this; + var i, ilen, labels, label, ticks, tick; - if (isHorizontal) { - scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width - scaleLabelY = options.position === 'bottom' - ? me.bottom - halfLineHeight - scaleLabelPadding.bottom - : me.top + halfLineHeight + scaleLabelPadding.top; - } else { - var isLeft = options.position === 'left'; - scaleLabelX = isLeft - ? me.left + halfLineHeight + scaleLabelPadding.top - : me.right - halfLineHeight - scaleLabelPadding.top; - scaleLabelY = me.top + ((me.bottom - me.top) / 2); - rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; - } + // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) + me.beforeUpdate(); - context.save(); - context.translate(scaleLabelX, scaleLabelY); - context.rotate(rotation); - context.textAlign = 'center'; - context.textBaseline = 'middle'; - context.fillStyle = scaleLabelFontColor; // render in correct colour - context.font = scaleLabelFont.font; - context.fillText(scaleLabel.labelString, 0, 0); - context.restore(); - } + // Absorb the master measurements + me.maxWidth = maxWidth; + me.maxHeight = maxHeight; + me.margins = helpers.extend({ + left: 0, + right: 0, + top: 0, + bottom: 0 + }, margins); + me.longestTextCache = me.longestTextCache || {}; - if (gridLines.drawBorder) { - // Draw the line at the edge of the axis - context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); - context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); - var x1 = me.left; - var x2 = me.right + axisWidth; - var y1 = me.top; - var y2 = me.bottom + axisWidth; + // Dimensions + me.beforeSetDimensions(); + me.setDimensions(); + me.afterSetDimensions(); - var aliasPixel = helpers.aliasPixel(context.lineWidth); - if (isHorizontal) { - y1 = y2 = options.position === 'top' ? me.bottom : me.top; - y1 += aliasPixel; - y2 += aliasPixel; - } else { - x1 = x2 = options.position === 'left' ? me.right : me.left; - x1 += aliasPixel; - x2 += aliasPixel; - } + // Data min/max + me.beforeDataLimits(); + me.determineDataLimits(); + me.afterDataLimits(); - context.beginPath(); - context.moveTo(x1, y1); - context.lineTo(x2, y2); - context.stroke(); - } - } -}); + // Ticks - `this.ticks` is now DEPRECATED! + // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member + // and must not be accessed directly from outside this class. `this.ticks` being + // around for long time and not marked as private, we can't change its structure + // without unexpected breaking changes. If you need to access the scale ticks, + // use scale.getTicks() instead. + + me.beforeBuildTicks(); + // New implementations should return an array of objects but for BACKWARD COMPAT, + // we still support no return (`this.ticks` internally set by calling this method). + ticks = me.buildTicks() || []; -/***/ }), + me.afterBuildTicks(); -/***/ "./node_modules/chart.js/src/core/core.scaleService.js": -/*!*************************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.scaleService.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + me.beforeTickToLabelConversion(); -"use strict"; + // New implementations should return the formatted tick labels but for BACKWARD + // COMPAT, we still support no return (`this.ticks` internally changed by calling + // this method and supposed to contain only string values). + labels = me.convertTicksToLabels(ticks) || me.ticks; + me.afterTickToLabelConversion(); -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -var layouts = __webpack_require__(/*! ./core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); + me.ticks = labels; // BACKWARD COMPATIBILITY -module.exports = { - // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then - // use the new chart options to grab the correct scale - constructors: {}, - // Use a registration function so that we can move to an ES6 map when we no longer need to support - // old browsers + // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! + + // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) + for (i = 0, ilen = labels.length; i < ilen; ++i) { + label = labels[i]; + tick = ticks[i]; + if (!tick) { + ticks.push(tick = { + label: label, + major: false + }); + } else { + tick.label = label; + } + } + + me._ticks = ticks; + + // Tick Rotation + me.beforeCalculateTickRotation(); + me.calculateTickRotation(); + me.afterCalculateTickRotation(); + // Fit + me.beforeFit(); + me.fit(); + me.afterFit(); + // + me.afterUpdate(); + + return me.minSize; - // Scale config defaults - defaults: {}, - registerScaleType: function(type, scaleConstructor, scaleDefaults) { - this.constructors[type] = scaleConstructor; - this.defaults[type] = helpers.clone(scaleDefaults); }, - getScaleConstructor: function(type) { - return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; + afterUpdate: function() { + helpers.callback(this.options.afterUpdate, [this]); }, - getScaleDefaults: function(type) { - // Return the scale defaults merged with the global settings so that we always use the latest ones - return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; + + // + + beforeSetDimensions: function() { + helpers.callback(this.options.beforeSetDimensions, [this]); }, - updateScaleDefaults: function(type, additions) { + setDimensions: function() { var me = this; - if (me.defaults.hasOwnProperty(type)) { - me.defaults[type] = helpers.extend(me.defaults[type], additions); + // Set the unconstrained dimension before label rotation + if (me.isHorizontal()) { + // Reset position before calculating rotation + me.width = me.maxWidth; + me.left = 0; + me.right = me.width; + } else { + me.height = me.maxHeight; + + // Reset position before calculating rotation + me.top = 0; + me.bottom = me.height; } + + // Reset padding + me.paddingLeft = 0; + me.paddingTop = 0; + me.paddingRight = 0; + me.paddingBottom = 0; + }, + afterSetDimensions: function() { + helpers.callback(this.options.afterSetDimensions, [this]); }, - addScalesToLayout: function(chart) { - // Adds each scale to the chart.boxes array to be sized accordingly - helpers.each(chart.scales, function(scale) { - // Set ILayoutItem parameters for backwards compatibility - scale.fullWidth = scale.options.fullWidth; - scale.position = scale.options.position; - scale.weight = scale.options.weight; - layouts.addBox(chart, scale); - }); - } -}; + // Data limits + beforeDataLimits: function() { + helpers.callback(this.options.beforeDataLimits, [this]); + }, + determineDataLimits: helpers.noop, + afterDataLimits: function() { + helpers.callback(this.options.afterDataLimits, [this]); + }, -/***/ }), + // + beforeBuildTicks: function() { + helpers.callback(this.options.beforeBuildTicks, [this]); + }, + buildTicks: helpers.noop, + afterBuildTicks: function() { + helpers.callback(this.options.afterBuildTicks, [this]); + }, -/***/ "./node_modules/chart.js/src/core/core.ticks.js": -/*!******************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.ticks.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + beforeTickToLabelConversion: function() { + helpers.callback(this.options.beforeTickToLabelConversion, [this]); + }, + convertTicksToLabels: function() { + var me = this; + // Convert ticks to strings + var tickOpts = me.options.ticks; + me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); + }, + afterTickToLabelConversion: function() { + helpers.callback(this.options.afterTickToLabelConversion, [this]); + }, -"use strict"; + // + beforeCalculateTickRotation: function() { + helpers.callback(this.options.beforeCalculateTickRotation, [this]); + }, + calculateTickRotation: function() { + var me = this; + var context = me.ctx; + var tickOpts = me.options.ticks; + var labels = labelsFromTicks(me._ticks); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + // Get the width of each grid by calculating the difference + // between x offsets between 0 and 1. + var tickFont = parseFontOptions(tickOpts); + context.font = tickFont.font; -/** - * Namespace to hold static tick generation functions - * @namespace Chart.Ticks - */ -module.exports = { - /** - * Namespace to hold formatters for different types of ticks - * @namespace Chart.Ticks.formatters - */ - formatters: { - /** - * Formatter for value labels - * @method Chart.Ticks.formatters.values - * @param value the value to display - * @return {String|Array} the label to display - */ - values: function(value) { - return helpers.isArray(value) ? value : '' + value; - }, + var labelRotation = tickOpts.minRotation || 0; - /** - * Formatter for linear numeric ticks - * @method Chart.Ticks.formatters.linear - * @param tickValue {Number} the value to be formatted - * @param index {Number} the position of the tickValue parameter in the ticks array - * @param ticks {Array<Number>} the list of ticks being converted - * @return {String} string representation of the tickValue parameter - */ - linear: function(tickValue, index, ticks) { - // If we have lots of ticks, don't use the ones - var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; + if (labels.length && me.options.display && me.isHorizontal()) { + var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); + var labelWidth = originalLabelWidth; + var cosRotation, sinRotation; - // If we have a number like 2.5 as the delta, figure out how many decimal places we need - if (Math.abs(delta) > 1) { - if (tickValue !== Math.floor(tickValue)) { - // not an integer - delta = tickValue - Math.floor(tickValue); - } - } + // Allow 3 pixels x2 padding either side for label readability + var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; - var logDelta = helpers.log10(Math.abs(delta)); - var tickString = ''; + // Max label rotation can be set or default to 90 - also act as a loop counter + while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { + var angleRadians = helpers.toRadians(labelRotation); + cosRotation = Math.cos(angleRadians); + sinRotation = Math.sin(angleRadians); - if (tickValue !== 0) { - var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); - if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation - var logTick = helpers.log10(Math.abs(tickValue)); - tickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta)); - } else { - var numDecimal = -1 * Math.floor(logDelta); - numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places - tickString = tickValue.toFixed(numDecimal); + if (sinRotation * originalLabelWidth > me.maxHeight) { + // go back one step + labelRotation--; + break; } - } else { - tickString = '0'; // never show decimal places for 0 - } - - return tickString; - }, - logarithmic: function(tickValue, index, ticks) { - var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); - - if (tickValue === 0) { - return '0'; - } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { - return tickValue.toExponential(); + labelRotation++; + labelWidth = cosRotation * originalLabelWidth; } - return ''; } - } -}; + me.labelRotation = labelRotation; + }, + afterCalculateTickRotation: function() { + helpers.callback(this.options.afterCalculateTickRotation, [this]); + }, -/***/ }), + // -/***/ "./node_modules/chart.js/src/core/core.tooltip.js": -/*!********************************************************!*\ - !*** ./node_modules/chart.js/src/core/core.tooltip.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + beforeFit: function() { + helpers.callback(this.options.beforeFit, [this]); + }, + fit: function() { + var me = this; + // Reset + var minSize = me.minSize = { + width: 0, + height: 0 + }; -"use strict"; + var labels = labelsFromTicks(me._ticks); + var opts = me.options; + var tickOpts = opts.ticks; + var scaleLabelOpts = opts.scaleLabel; + var gridLineOpts = opts.gridLines; + var display = opts.display; + var isHorizontal = me.isHorizontal(); -var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ./core.element */ "./node_modules/chart.js/src/core/core.element.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + var tickFont = parseFontOptions(tickOpts); + var tickMarkLength = opts.gridLines.tickMarkLength; -defaults._set('global', { - tooltips: { - enabled: true, - custom: null, - mode: 'nearest', - position: 'average', - intersect: true, - backgroundColor: 'rgba(0,0,0,0.8)', - titleFontStyle: 'bold', - titleSpacing: 2, - titleMarginBottom: 6, - titleFontColor: '#fff', - titleAlign: 'left', - bodySpacing: 2, - bodyFontColor: '#fff', - bodyAlign: 'left', - footerFontStyle: 'bold', - footerSpacing: 2, - footerMarginTop: 6, - footerFontColor: '#fff', - footerAlign: 'left', - yPadding: 6, - xPadding: 6, - caretPadding: 2, - caretSize: 5, - cornerRadius: 6, - multiKeyBackground: '#fff', - displayColors: true, - borderColor: 'rgba(0,0,0,0)', - borderWidth: 0, - callbacks: { - // Args are: (tooltipItems, data) - beforeTitle: helpers.noop, - title: function(tooltipItems, data) { - // Pick first xLabel for now - var title = ''; - var labels = data.labels; - var labelCount = labels ? labels.length : 0; + // Width + if (isHorizontal) { + // subtract the margins to line up with the chartArea if we are a full width scale + minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; + } else { + minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } - if (tooltipItems.length > 0) { - var item = tooltipItems[0]; + // height + if (isHorizontal) { + minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; + } else { + minSize.height = me.maxHeight; // fill all the height + } - if (item.xLabel) { - title = item.xLabel; - } else if (labelCount > 0 && item.index < labelCount) { - title = labels[item.index]; - } - } + // Are we showing a title for the scale? + if (scaleLabelOpts.display && display) { + var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); + var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); + var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; - return title; - }, - afterTitle: helpers.noop, + if (isHorizontal) { + minSize.height += deltaHeight; + } else { + minSize.width += deltaHeight; + } + } - // Args are: (tooltipItems, data) - beforeBody: helpers.noop, + // Don't bother fitting the ticks if we are not showing them + if (tickOpts.display && display) { + var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); + var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); + var lineSpace = tickFont.size * 0.5; + var tickPadding = me.options.ticks.padding; - // Args are: (tooltipItem, data) - beforeLabel: helpers.noop, - label: function(tooltipItem, data) { - var label = data.datasets[tooltipItem.datasetIndex].label || ''; + if (isHorizontal) { + // A horizontal axis is more constrained by the height. + me.longestLabelWidth = largestTextWidth; - if (label) { - label += ': '; - } - label += tooltipItem.yLabel; - return label; - }, - labelColor: function(tooltipItem, chart) { - var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); - var activeElement = meta.data[tooltipItem.index]; - var view = activeElement._view; - return { - borderColor: view.borderColor, - backgroundColor: view.backgroundColor - }; - }, - labelTextColor: function() { - return this._options.bodyFontColor; - }, - afterLabel: helpers.noop, + var angleRadians = helpers.toRadians(me.labelRotation); + var cosRotation = Math.cos(angleRadians); + var sinRotation = Math.sin(angleRadians); - // Args are: (tooltipItems, data) - afterBody: helpers.noop, + // TODO - improve this calculation + var labelHeight = (sinRotation * largestTextWidth) + + (tickFont.size * tallestLabelHeightInLines) + + (lineSpace * (tallestLabelHeightInLines - 1)) + + lineSpace; // padding - // Args are: (tooltipItems, data) - beforeFooter: helpers.noop, - footer: helpers.noop, - afterFooter: helpers.noop + minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); + + me.ctx.font = tickFont.font; + var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); + var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); + + // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned + // which means that the right padding is dominated by the font height + if (me.labelRotation !== 0) { + me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges + me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; + } else { + me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges + me.paddingRight = lastLabelWidth / 2 + 3; + } + } else { + // A vertical axis is more constrained by the width. Labels are the + // dominant factor here, so get that length first and account for padding + if (tickOpts.mirror) { + largestTextWidth = 0; + } else { + // use lineSpace for consistency with horizontal axis + // tickPadding is not implemented for horizontal + largestTextWidth += tickPadding + lineSpace; + } + + minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + + me.paddingTop = tickFont.size / 2; + me.paddingBottom = tickFont.size / 2; + } } - } -}); -var positioners = { + me.handleMargins(); + + me.width = minSize.width; + me.height = minSize.height; + }, + /** - * Average mode places the tooltip at the average position of the elements shown - * @function Chart.Tooltip.positioners.average - * @param elements {ChartElement[]} the elements being displayed in the tooltip - * @returns {Point} tooltip position + * Handle margins and padding interactions + * @private */ - average: function(elements) { - if (!elements.length) { - return false; + handleMargins: function() { + var me = this; + if (me.margins) { + me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); + me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); + me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); + me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); } + }, - var i, len; - var x = 0; - var y = 0; - var count = 0; + afterFit: function() { + helpers.callback(this.options.afterFit, [this]); + }, - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var pos = el.tooltipPosition(); - x += pos.x; - y += pos.y; - ++count; + // Shared Methods + isHorizontal: function() { + return this.options.position === 'top' || this.options.position === 'bottom'; + }, + isFullWidth: function() { + return (this.options.fullWidth); + }, + + // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not + getRightValue: function(rawValue) { + // Null and undefined values first + if (helpers.isNullOrUndef(rawValue)) { + return NaN; + } + // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values + if (typeof rawValue === 'number' && !isFinite(rawValue)) { + return NaN; + } + // If it is in fact an object, dive in one more level + if (rawValue) { + if (this.isHorizontal()) { + if (rawValue.x !== undefined) { + return this.getRightValue(rawValue.x); + } + } else if (rawValue.y !== undefined) { + return this.getRightValue(rawValue.y); } } - return { - x: Math.round(x / count), - y: Math.round(y / count) - }; + // Value is good, return it + return rawValue; }, /** - * Gets the tooltip position nearest of the item nearest to the event position - * @function Chart.Tooltip.positioners.nearest - * @param elements {Chart.Element[]} the tooltip elements - * @param eventPosition {Point} the position of the event in canvas coordinates - * @returns {Point} the tooltip position + * Used to get the value to display in the tooltip for the data at the given index + * @param index + * @param datasetIndex */ - nearest: function(elements, eventPosition) { - var x = eventPosition.x; - var y = eventPosition.y; - var minDistance = Number.POSITIVE_INFINITY; - var i, len, nearestElement; + getLabelForIndex: helpers.noop, - for (i = 0, len = elements.length; i < len; ++i) { - var el = elements[i]; - if (el && el.hasValue()) { - var center = el.getCenterPoint(); - var d = helpers.distanceBetweenPoints(eventPosition, center); + /** + * Returns the location of the given data point. Value can either be an index or a numerical value + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param value + * @param index + * @param datasetIndex + */ + getPixelForValue: helpers.noop, - if (d < minDistance) { - minDistance = d; - nearestElement = el; - } + /** + * Used to get the data value from a given pixel. This is the inverse of getPixelForValue + * The coordinate (0, 0) is at the upper-left corner of the canvas + * @param pixel + */ + getValueForPixel: helpers.noop, + + /** + * Returns the location of the tick at the given index + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForTick: function(index) { + var me = this; + var offset = me.options.offset; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); + var pixel = (tickWidth * index) + me.paddingLeft; + + if (offset) { + pixel += tickWidth / 2; } - } - if (nearestElement) { - var tp = nearestElement.tooltipPosition(); - x = tp.x; - y = tp.y; + var finalVal = me.left + Math.round(pixel); + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; } + var innerHeight = me.height - (me.paddingTop + me.paddingBottom); + return me.top + (index * (innerHeight / (me._ticks.length - 1))); + }, - return { - x: x, - y: y - }; - } -}; - -/** - * Helper method to merge the opacity into a color - */ -function mergeOpacity(colorString, opacity) { - var color = helpers.color(colorString); - return color.alpha(opacity * color.alpha()).rgbaString(); -} + /** + * Utility for getting the pixel location of a percentage of scale + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getPixelForDecimal: function(decimal) { + var me = this; + if (me.isHorizontal()) { + var innerWidth = me.width - (me.paddingLeft + me.paddingRight); + var valueOffset = (innerWidth * decimal) + me.paddingLeft; -// Helper to push or concat based on if the 2nd parameter is an array or not -function pushOrConcat(base, toPush) { - if (toPush) { - if (helpers.isArray(toPush)) { - // base = base.concat(toPush); - Array.prototype.push.apply(base, toPush); - } else { - base.push(toPush); + var finalVal = me.left + Math.round(valueOffset); + finalVal += me.isFullWidth() ? me.margins.left : 0; + return finalVal; } - } + return me.top + (decimal * me.height); + }, - return base; -} + /** + * Returns the pixel for the minimum chart value + * The coordinate (0, 0) is at the upper-left corner of the canvas + */ + getBasePixel: function() { + return this.getPixelForValue(this.getBaseValue()); + }, -/** - * Returns array of strings split by newline - * @param {String} value - The value to split by newline. - * @returns {Array} value if newline present - Returned from String split() method - * @function - */ -function splitNewlines(str) { - if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { - return str.split('\n'); - } - return str; -} + getBaseValue: function() { + var me = this; + var min = me.min; + var max = me.max; + return me.beginAtZero ? 0 : + min < 0 && max < 0 ? max : + min > 0 && max > 0 ? min : + 0; + }, -// Private helper to create a tooltip item model -// @param element : the chart element (point, arc, bar) to create the tooltip item for -// @return : new tooltip item -function createTooltipItem(element) { - var xScale = element._xScale; - var yScale = element._yScale || element._scale; // handle radar || polarArea charts - var index = element._index; - var datasetIndex = element._datasetIndex; + /** + * Returns a subset of ticks to be plotted to avoid overlapping labels. + * @private + */ + _autoSkip: function(ticks) { + var skipRatio; + var me = this; + var isHorizontal = me.isHorizontal(); + var optionTicks = me.options.ticks.minor; + var tickCount = ticks.length; + var labelRotationRadians = helpers.toRadians(me.labelRotation); + var cosRotation = Math.cos(labelRotationRadians); + var longestRotatedLabel = me.longestLabelWidth * cosRotation; + var result = []; + var i, tick, shouldSkip; - return { - xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', - yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', - index: index, - datasetIndex: datasetIndex, - x: element._model.x, - y: element._model.y - }; -} + // figure out the maximum number of gridlines to show + var maxTicks; + if (optionTicks.maxTicksLimit) { + maxTicks = optionTicks.maxTicksLimit; + } -/** - * Helper to get the reset model for the tooltip - * @param tooltipOpts {Object} the tooltip options - */ -function getBaseModel(tooltipOpts) { - var globalDefaults = defaults.global; - var valueOrDefault = helpers.valueOrDefault; + if (isHorizontal) { + skipRatio = false; - return { - // Positioning - xPadding: tooltipOpts.xPadding, - yPadding: tooltipOpts.yPadding, - xAlign: tooltipOpts.xAlign, - yAlign: tooltipOpts.yAlign, + if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { + skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); + } - // Body - bodyFontColor: tooltipOpts.bodyFontColor, - _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), - _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), - _bodyAlign: tooltipOpts.bodyAlign, - bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), - bodySpacing: tooltipOpts.bodySpacing, + // if they defined a max number of optionTicks, + // increase skipRatio until that number is met + if (maxTicks && tickCount > maxTicks) { + skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); + } + } - // Title - titleFontColor: tooltipOpts.titleFontColor, - _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), - _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), - titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), - _titleAlign: tooltipOpts.titleAlign, - titleSpacing: tooltipOpts.titleSpacing, - titleMarginBottom: tooltipOpts.titleMarginBottom, + for (i = 0; i < tickCount; i++) { + tick = ticks[i]; - // Footer - footerFontColor: tooltipOpts.footerFontColor, - _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), - _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), - footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), - _footerAlign: tooltipOpts.footerAlign, - footerSpacing: tooltipOpts.footerSpacing, - footerMarginTop: tooltipOpts.footerMarginTop, + // Since we always show the last tick,we need may need to hide the last shown one before + shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); + if (shouldSkip && i !== tickCount - 1) { + // leave tick in place but make sure it's not displayed (#4635) + delete tick.label; + } + result.push(tick); + } + return result; + }, - // Appearance - caretSize: tooltipOpts.caretSize, - cornerRadius: tooltipOpts.cornerRadius, - backgroundColor: tooltipOpts.backgroundColor, - opacity: 0, - legendColorBackground: tooltipOpts.multiKeyBackground, - displayColors: tooltipOpts.displayColors, - borderColor: tooltipOpts.borderColor, - borderWidth: tooltipOpts.borderWidth - }; -} + // Actually draw the scale on the canvas + // @param {rectangle} chartArea : the area of the chart to draw full grid lines on + draw: function(chartArea) { + var me = this; + var options = me.options; + if (!options.display) { + return; + } -/** - * Get the size of the tooltip - */ -function getTooltipSize(tooltip, model) { - var ctx = tooltip._chart.ctx; + var context = me.ctx; + var globalDefaults = defaults.global; + var optionTicks = options.ticks.minor; + var optionMajorTicks = options.ticks.major || optionTicks; + var gridLines = options.gridLines; + var scaleLabel = options.scaleLabel; - var height = model.yPadding * 2; // Tooltip Padding - var width = 0; + var isRotated = me.labelRotation !== 0; + var isHorizontal = me.isHorizontal(); - // Count of all lines in the body - var body = model.body; - var combinedBodyLength = body.reduce(function(count, bodyItem) { - return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; - }, 0); - combinedBodyLength += model.beforeBody.length + model.afterBody.length; + var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); + var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); + var tickFont = parseFontOptions(optionTicks); + var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); + var majorTickFont = parseFontOptions(optionMajorTicks); - var titleLineCount = model.title.length; - var footerLineCount = model.footer.length; - var titleFontSize = model.titleFontSize; - var bodyFontSize = model.bodyFontSize; - var footerFontSize = model.footerFontSize; + var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; - height += titleLineCount * titleFontSize; // Title Lines - height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing - height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin - height += combinedBodyLength * bodyFontSize; // Body Lines - height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing - height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin - height += footerLineCount * (footerFontSize); // Footer Lines - height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing + var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); + var scaleLabelFont = parseFontOptions(scaleLabel); + var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); + var labelRotationRadians = helpers.toRadians(me.labelRotation); - // Title width - var widthPadding = 0; - var maxLineWidth = function(line) { - width = Math.max(width, ctx.measureText(line).width + widthPadding); - }; + var itemsToDraw = []; - ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); - helpers.each(model.title, maxLineWidth); + var axisWidth = me.options.gridLines.lineWidth; + var xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl; + var xTickEnd = options.position === 'right' ? me.left + tl : me.right; + var yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth; + var yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth; - // Body width - ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); - helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); + helpers.each(ticks, function(tick, index) { + // autoskipper skipped this tick (#4635) + if (helpers.isNullOrUndef(tick.label)) { + return; + } - // Body lines may include some extra width due to the color box - widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; - helpers.each(body, function(bodyItem) { - helpers.each(bodyItem.before, maxLineWidth); - helpers.each(bodyItem.lines, maxLineWidth); - helpers.each(bodyItem.after, maxLineWidth); - }); + var label = tick.label; + var lineWidth, lineColor, borderDash, borderDashOffset; + if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { + // Draw the first index specially + lineWidth = gridLines.zeroLineWidth; + lineColor = gridLines.zeroLineColor; + borderDash = gridLines.zeroLineBorderDash; + borderDashOffset = gridLines.zeroLineBorderDashOffset; + } else { + lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); + lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); + borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); + borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); + } - // Reset back to 0 - widthPadding = 0; + // Common properties + var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; + var textAlign = 'middle'; + var textBaseline = 'middle'; + var tickPadding = optionTicks.padding; - // Footer width - ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); - helpers.each(model.footer, maxLineWidth); + if (isHorizontal) { + var labelYOffset = tl + tickPadding; - // Add padding - width += 2 * model.xPadding; + if (options.position === 'bottom') { + // bottom + textBaseline = !isRotated ? 'top' : 'middle'; + textAlign = !isRotated ? 'center' : 'right'; + labelY = me.top + labelYOffset; + } else { + // top + textBaseline = !isRotated ? 'bottom' : 'middle'; + textAlign = !isRotated ? 'center' : 'left'; + labelY = me.bottom - labelYOffset; + } - return { - width: width, - height: height - }; -} + var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); + if (xLineValue < me.left) { + lineColor = 'rgba(0,0,0,0)'; + } + xLineValue += helpers.aliasPixel(lineWidth); -/** - * Helper to get the alignment of a tooltip given the size - */ -function determineAlignment(tooltip, size) { - var model = tooltip._model; - var chart = tooltip._chart; - var chartArea = tooltip._chart.chartArea; - var xAlign = 'center'; - var yAlign = 'center'; + labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) - if (model.y < size.height) { - yAlign = 'top'; - } else if (model.y > (chart.height - size.height)) { - yAlign = 'bottom'; - } + tx1 = tx2 = x1 = x2 = xLineValue; + ty1 = yTickStart; + ty2 = yTickEnd; + y1 = chartArea.top; + y2 = chartArea.bottom + axisWidth; + } else { + var isLeft = options.position === 'left'; + var labelXOffset; - var lf, rf; // functions to determine left, right alignment - var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart - var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges - var midX = (chartArea.left + chartArea.right) / 2; - var midY = (chartArea.top + chartArea.bottom) / 2; + if (optionTicks.mirror) { + textAlign = isLeft ? 'left' : 'right'; + labelXOffset = tickPadding; + } else { + textAlign = isLeft ? 'right' : 'left'; + labelXOffset = tl + tickPadding; + } - if (yAlign === 'center') { - lf = function(x) { - return x <= midX; - }; - rf = function(x) { - return x > midX; - }; - } else { - lf = function(x) { - return x <= (size.width / 2); - }; - rf = function(x) { - return x >= (chart.width - (size.width / 2)); - }; - } - - olf = function(x) { - return x + size.width + model.caretSize + model.caretPadding > chart.width; - }; - orf = function(x) { - return x - size.width - model.caretSize - model.caretPadding < 0; - }; - yf = function(y) { - return y <= midY ? 'top' : 'bottom'; - }; + labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; - if (lf(model.x)) { - xAlign = 'left'; + var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); + if (yLineValue < me.top) { + lineColor = 'rgba(0,0,0,0)'; + } + yLineValue += helpers.aliasPixel(lineWidth); - // Is tooltip too wide and goes over the right side of the chart.? - if (olf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } else if (rf(model.x)) { - xAlign = 'right'; + labelY = me.getPixelForTick(index) + optionTicks.labelOffset; - // Is tooltip too wide and goes outside left edge of canvas? - if (orf(model.x)) { - xAlign = 'center'; - yAlign = yf(model.y); - } - } + tx1 = xTickStart; + tx2 = xTickEnd; + x1 = chartArea.left; + x2 = chartArea.right + axisWidth; + ty1 = ty2 = y1 = y2 = yLineValue; + } - var opts = tooltip._options; - return { - xAlign: opts.xAlign ? opts.xAlign : xAlign, - yAlign: opts.yAlign ? opts.yAlign : yAlign - }; -} + itemsToDraw.push({ + tx1: tx1, + ty1: ty1, + tx2: tx2, + ty2: ty2, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + labelX: labelX, + labelY: labelY, + glWidth: lineWidth, + glColor: lineColor, + glBorderDash: borderDash, + glBorderDashOffset: borderDashOffset, + rotation: -1 * labelRotationRadians, + label: label, + major: tick.major, + textBaseline: textBaseline, + textAlign: textAlign + }); + }); -/** - * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment - */ -function getBackgroundPoint(vm, size, alignment, chart) { - // Background Position - var x = vm.x; - var y = vm.y; + // Draw all of the tick labels, tick marks, and grid lines at the correct places + helpers.each(itemsToDraw, function(itemToDraw) { + if (gridLines.display) { + context.save(); + context.lineWidth = itemToDraw.glWidth; + context.strokeStyle = itemToDraw.glColor; + if (context.setLineDash) { + context.setLineDash(itemToDraw.glBorderDash); + context.lineDashOffset = itemToDraw.glBorderDashOffset; + } - var caretSize = vm.caretSize; - var caretPadding = vm.caretPadding; - var cornerRadius = vm.cornerRadius; - var xAlign = alignment.xAlign; - var yAlign = alignment.yAlign; - var paddingAndSize = caretSize + caretPadding; - var radiusAndPadding = cornerRadius + caretPadding; + context.beginPath(); - if (xAlign === 'right') { - x -= size.width; - } else if (xAlign === 'center') { - x -= (size.width / 2); - if (x + size.width > chart.width) { - x = chart.width - size.width; - } - if (x < 0) { - x = 0; - } - } + if (gridLines.drawTicks) { + context.moveTo(itemToDraw.tx1, itemToDraw.ty1); + context.lineTo(itemToDraw.tx2, itemToDraw.ty2); + } - if (yAlign === 'top') { - y += paddingAndSize; - } else if (yAlign === 'bottom') { - y -= size.height + paddingAndSize; - } else { - y -= (size.height / 2); - } + if (gridLines.drawOnChartArea) { + context.moveTo(itemToDraw.x1, itemToDraw.y1); + context.lineTo(itemToDraw.x2, itemToDraw.y2); + } - if (yAlign === 'center') { - if (xAlign === 'left') { - x += paddingAndSize; - } else if (xAlign === 'right') { - x -= paddingAndSize; - } - } else if (xAlign === 'left') { - x -= radiusAndPadding; - } else if (xAlign === 'right') { - x += radiusAndPadding; - } + context.stroke(); + context.restore(); + } - return { - x: x, - y: y - }; -} + if (optionTicks.display) { + // Make sure we draw text in the correct color and font + context.save(); + context.translate(itemToDraw.labelX, itemToDraw.labelY); + context.rotate(itemToDraw.rotation); + context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; + context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; + context.textBaseline = itemToDraw.textBaseline; + context.textAlign = itemToDraw.textAlign; -/** - * Helper to build before and after body lines - */ -function getBeforeAfterBodyLines(callback) { - return pushOrConcat([], splitNewlines(callback)); -} + var label = itemToDraw.label; + if (helpers.isArray(label)) { + var lineCount = label.length; + var lineHeight = tickFont.size * 1.5; + var y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2; -var exports = module.exports = Element.extend({ - initialize: function() { - this._model = getBaseModel(this._options); - this._lastActive = []; - }, + for (var i = 0; i < lineCount; ++i) { + // We just make sure the multiline element is a string here.. + context.fillText('' + label[i], 0, y); + // apply same lineSpacing as calculated @ L#320 + y += lineHeight; + } + } else { + context.fillText(label, 0, 0); + } + context.restore(); + } + }); - // Get the title - // Args are: (tooltipItem, data) - getTitle: function() { - var me = this; - var opts = me._options; - var callbacks = opts.callbacks; + if (scaleLabel.display) { + // Draw the scale label + var scaleLabelX; + var scaleLabelY; + var rotation = 0; + var halfLineHeight = parseLineHeight(scaleLabel) / 2; - var beforeTitle = callbacks.beforeTitle.apply(me, arguments); - var title = callbacks.title.apply(me, arguments); - var afterTitle = callbacks.afterTitle.apply(me, arguments); + if (isHorizontal) { + scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width + scaleLabelY = options.position === 'bottom' + ? me.bottom - halfLineHeight - scaleLabelPadding.bottom + : me.top + halfLineHeight + scaleLabelPadding.top; + } else { + var isLeft = options.position === 'left'; + scaleLabelX = isLeft + ? me.left + halfLineHeight + scaleLabelPadding.top + : me.right - halfLineHeight - scaleLabelPadding.top; + scaleLabelY = me.top + ((me.bottom - me.top) / 2); + rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; + } - var lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeTitle)); - lines = pushOrConcat(lines, splitNewlines(title)); - lines = pushOrConcat(lines, splitNewlines(afterTitle)); + context.save(); + context.translate(scaleLabelX, scaleLabelY); + context.rotate(rotation); + context.textAlign = 'center'; + context.textBaseline = 'middle'; + context.fillStyle = scaleLabelFontColor; // render in correct colour + context.font = scaleLabelFont.font; + context.fillText(scaleLabel.labelString, 0, 0); + context.restore(); + } - return lines; - }, + if (gridLines.drawBorder) { + // Draw the line at the edge of the axis + context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); + context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); + var x1 = me.left; + var x2 = me.right + axisWidth; + var y1 = me.top; + var y2 = me.bottom + axisWidth; - // Args are: (tooltipItem, data) - getBeforeBody: function() { - return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); - }, + var aliasPixel = helpers.aliasPixel(context.lineWidth); + if (isHorizontal) { + y1 = y2 = options.position === 'top' ? me.bottom : me.top; + y1 += aliasPixel; + y2 += aliasPixel; + } else { + x1 = x2 = options.position === 'left' ? me.right : me.left; + x1 += aliasPixel; + x2 += aliasPixel; + } - // Args are: (tooltipItem, data) - getBody: function(tooltipItems, data) { - var me = this; - var callbacks = me._options.callbacks; - var bodyItems = []; + context.beginPath(); + context.moveTo(x1, y1); + context.lineTo(x2, y2); + context.stroke(); + } + } +}); - helpers.each(tooltipItems, function(tooltipItem) { - var bodyItem = { - before: [], - lines: [], - after: [] - }; - pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); - pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); - pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); - bodyItems.push(bodyItem); - }); +/***/ }), - return bodyItems; - }, +/***/ "./node_modules/chart.js/src/core/core.scaleService.js": +/*!*************************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.scaleService.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - // Args are: (tooltipItem, data) - getAfterBody: function() { - return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); - }, +"use strict"; - // Get the footer and beforeFooter and afterFooter lines - // Args are: (tooltipItem, data) - getFooter: function() { - var me = this; - var callbacks = me._options.callbacks; - var beforeFooter = callbacks.beforeFooter.apply(me, arguments); - var footer = callbacks.footer.apply(me, arguments); - var afterFooter = callbacks.afterFooter.apply(me, arguments); +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); +var layouts = __webpack_require__(/*! ./core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); - var lines = []; - lines = pushOrConcat(lines, splitNewlines(beforeFooter)); - lines = pushOrConcat(lines, splitNewlines(footer)); - lines = pushOrConcat(lines, splitNewlines(afterFooter)); +module.exports = { + // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then + // use the new chart options to grab the correct scale + constructors: {}, + // Use a registration function so that we can move to an ES6 map when we no longer need to support + // old browsers - return lines; + // Scale config defaults + defaults: {}, + registerScaleType: function(type, scaleConstructor, scaleDefaults) { + this.constructors[type] = scaleConstructor; + this.defaults[type] = helpers.clone(scaleDefaults); }, - - update: function(changed) { + getScaleConstructor: function(type) { + return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; + }, + getScaleDefaults: function(type) { + // Return the scale defaults merged with the global settings so that we always use the latest ones + return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; + }, + updateScaleDefaults: function(type, additions) { var me = this; - var opts = me._options; + if (me.defaults.hasOwnProperty(type)) { + me.defaults[type] = helpers.extend(me.defaults[type], additions); + } + }, + addScalesToLayout: function(chart) { + // Adds each scale to the chart.boxes array to be sized accordingly + helpers.each(chart.scales, function(scale) { + // Set ILayoutItem parameters for backwards compatibility + scale.fullWidth = scale.options.fullWidth; + scale.position = scale.options.position; + scale.weight = scale.options.weight; + layouts.addBox(chart, scale); + }); + } +}; - // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition - // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time - // which breaks any animations. - var existingModel = me._model; - var model = me._model = getBaseModel(opts); - var active = me._active; - var data = me._data; +/***/ }), - // In the case where active.length === 0 we need to keep these at existing values for good animations - var alignment = { - xAlign: existingModel.xAlign, - yAlign: existingModel.yAlign - }; - var backgroundPoint = { - x: existingModel.x, - y: existingModel.y - }; - var tooltipSize = { - width: existingModel.width, - height: existingModel.height - }; - var tooltipPosition = { - x: existingModel.caretX, - y: existingModel.caretY - }; +/***/ "./node_modules/chart.js/src/core/core.ticks.js": +/*!******************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.ticks.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - var i, len; +"use strict"; - if (active.length) { - model.opacity = 1; - var labelColors = []; - var labelTextColors = []; - tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - var tooltipItems = []; - for (i = 0, len = active.length; i < len; ++i) { - tooltipItems.push(createTooltipItem(active[i])); - } +/** + * Namespace to hold static tick generation functions + * @namespace Chart.Ticks + */ +module.exports = { + /** + * Namespace to hold formatters for different types of ticks + * @namespace Chart.Ticks.formatters + */ + formatters: { + /** + * Formatter for value labels + * @method Chart.Ticks.formatters.values + * @param value the value to display + * @return {String|Array} the label to display + */ + values: function(value) { + return helpers.isArray(value) ? value : '' + value; + }, - // If the user provided a filter function, use it to modify the tooltip items - if (opts.filter) { - tooltipItems = tooltipItems.filter(function(a) { - return opts.filter(a, data); - }); - } + /** + * Formatter for linear numeric ticks + * @method Chart.Ticks.formatters.linear + * @param tickValue {Number} the value to be formatted + * @param index {Number} the position of the tickValue parameter in the ticks array + * @param ticks {Array<Number>} the list of ticks being converted + * @return {String} string representation of the tickValue parameter + */ + linear: function(tickValue, index, ticks) { + // If we have lots of ticks, don't use the ones + var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; - // If the user provided a sorting function, use it to modify the tooltip items - if (opts.itemSort) { - tooltipItems = tooltipItems.sort(function(a, b) { - return opts.itemSort(a, b, data); - }); + // If we have a number like 2.5 as the delta, figure out how many decimal places we need + if (Math.abs(delta) > 1) { + if (tickValue !== Math.floor(tickValue)) { + // not an integer + delta = tickValue - Math.floor(tickValue); + } } - // Determine colors for boxes - helpers.each(tooltipItems, function(tooltipItem) { - labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); - labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); - }); - + var logDelta = helpers.log10(Math.abs(delta)); + var tickString = ''; - // Build the Text Lines - model.title = me.getTitle(tooltipItems, data); - model.beforeBody = me.getBeforeBody(tooltipItems, data); - model.body = me.getBody(tooltipItems, data); - model.afterBody = me.getAfterBody(tooltipItems, data); - model.footer = me.getFooter(tooltipItems, data); + if (tickValue !== 0) { + var maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1])); + if (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation + var logTick = helpers.log10(Math.abs(tickValue)); + tickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta)); + } else { + var numDecimal = -1 * Math.floor(logDelta); + numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places + tickString = tickValue.toFixed(numDecimal); + } + } else { + tickString = '0'; // never show decimal places for 0 + } - // Initial positioning and colors - model.x = Math.round(tooltipPosition.x); - model.y = Math.round(tooltipPosition.y); - model.caretPadding = opts.caretPadding; - model.labelColors = labelColors; - model.labelTextColors = labelTextColors; + return tickString; + }, - // data points - model.dataPoints = tooltipItems; + logarithmic: function(tickValue, index, ticks) { + var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); - // We need to determine alignment of the tooltip - tooltipSize = getTooltipSize(this, model); - alignment = determineAlignment(this, tooltipSize); - // Final Size and Position - backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); - } else { - model.opacity = 0; + if (tickValue === 0) { + return '0'; + } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { + return tickValue.toExponential(); + } + return ''; } + } +}; - model.xAlign = alignment.xAlign; - model.yAlign = alignment.yAlign; - model.x = backgroundPoint.x; - model.y = backgroundPoint.y; - model.width = tooltipSize.width; - model.height = tooltipSize.height; - // Point where the caret on the tooltip points to - model.caretX = tooltipPosition.x; - model.caretY = tooltipPosition.y; +/***/ }), - me._model = model; +/***/ "./node_modules/chart.js/src/core/core.tooltip.js": +/*!********************************************************!*\ + !*** ./node_modules/chart.js/src/core/core.tooltip.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - if (changed && opts.custom) { - opts.custom.call(me, model); - } +"use strict"; - return me; - }, - drawCaret: function(tooltipPoint, size) { - var ctx = this._chart.ctx; - var vm = this._view; - var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); +var defaults = __webpack_require__(/*! ./core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ./core.element */ "./node_modules/chart.js/src/core/core.element.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - ctx.lineTo(caretPosition.x1, caretPosition.y1); - ctx.lineTo(caretPosition.x2, caretPosition.y2); - ctx.lineTo(caretPosition.x3, caretPosition.y3); - }, - getCaretPosition: function(tooltipPoint, size, vm) { - var x1, x2, x3, y1, y2, y3; - var caretSize = vm.caretSize; - var cornerRadius = vm.cornerRadius; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var ptX = tooltipPoint.x; - var ptY = tooltipPoint.y; - var width = size.width; - var height = size.height; +defaults._set('global', { + tooltips: { + enabled: true, + custom: null, + mode: 'nearest', + position: 'average', + intersect: true, + backgroundColor: 'rgba(0,0,0,0.8)', + titleFontStyle: 'bold', + titleSpacing: 2, + titleMarginBottom: 6, + titleFontColor: '#fff', + titleAlign: 'left', + bodySpacing: 2, + bodyFontColor: '#fff', + bodyAlign: 'left', + footerFontStyle: 'bold', + footerSpacing: 2, + footerMarginTop: 6, + footerFontColor: '#fff', + footerAlign: 'left', + yPadding: 6, + xPadding: 6, + caretPadding: 2, + caretSize: 5, + cornerRadius: 6, + multiKeyBackground: '#fff', + displayColors: true, + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + callbacks: { + // Args are: (tooltipItems, data) + beforeTitle: helpers.noop, + title: function(tooltipItems, data) { + // Pick first xLabel for now + var title = ''; + var labels = data.labels; + var labelCount = labels ? labels.length : 0; - if (yAlign === 'center') { - y2 = ptY + (height / 2); + if (tooltipItems.length > 0) { + var item = tooltipItems[0]; - if (xAlign === 'left') { - x1 = ptX; - x2 = x1 - caretSize; - x3 = x1; + if (item.xLabel) { + title = item.xLabel; + } else if (labelCount > 0 && item.index < labelCount) { + title = labels[item.index]; + } + } - y1 = y2 + caretSize; - y3 = y2 - caretSize; - } else { - x1 = ptX + width; - x2 = x1 + caretSize; - x3 = x1; + return title; + }, + afterTitle: helpers.noop, - y1 = y2 - caretSize; - y3 = y2 + caretSize; - } - } else { - if (xAlign === 'left') { - x2 = ptX + cornerRadius + (caretSize); - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else if (xAlign === 'right') { - x2 = ptX + width - cornerRadius - caretSize; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } else { - x2 = vm.caretX; - x1 = x2 - caretSize; - x3 = x2 + caretSize; - } - if (yAlign === 'top') { - y1 = ptY; - y2 = y1 - caretSize; - y3 = y1; - } else { - y1 = ptY + height; - y2 = y1 + caretSize; - y3 = y1; - // invert drawing order - var tmp = x3; - x3 = x1; - x1 = tmp; - } - } - return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; - }, + // Args are: (tooltipItems, data) + beforeBody: helpers.noop, - drawTitle: function(pt, vm, ctx, opacity) { - var title = vm.title; + // Args are: (tooltipItem, data) + beforeLabel: helpers.noop, + label: function(tooltipItem, data) { + var label = data.datasets[tooltipItem.datasetIndex].label || ''; - if (title.length) { - ctx.textAlign = vm._titleAlign; - ctx.textBaseline = 'top'; + if (label) { + label += ': '; + } + label += tooltipItem.yLabel; + return label; + }, + labelColor: function(tooltipItem, chart) { + var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); + var activeElement = meta.data[tooltipItem.index]; + var view = activeElement._view; + return { + borderColor: view.borderColor, + backgroundColor: view.backgroundColor + }; + }, + labelTextColor: function() { + return this._options.bodyFontColor; + }, + afterLabel: helpers.noop, - var titleFontSize = vm.titleFontSize; - var titleSpacing = vm.titleSpacing; + // Args are: (tooltipItems, data) + afterBody: helpers.noop, - ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); - ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); + // Args are: (tooltipItems, data) + beforeFooter: helpers.noop, + footer: helpers.noop, + afterFooter: helpers.noop + } + } +}); - var i, len; - for (i = 0, len = title.length; i < len; ++i) { - ctx.fillText(title[i], pt.x, pt.y); - pt.y += titleFontSize + titleSpacing; // Line Height and spacing +var positioners = { + /** + * Average mode places the tooltip at the average position of the elements shown + * @function Chart.Tooltip.positioners.average + * @param elements {ChartElement[]} the elements being displayed in the tooltip + * @returns {Point} tooltip position + */ + average: function(elements) { + if (!elements.length) { + return false; + } - if (i + 1 === title.length) { - pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing - } + var i, len; + var x = 0; + var y = 0; + var count = 0; + + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var pos = el.tooltipPosition(); + x += pos.x; + y += pos.y; + ++count; } } + + return { + x: Math.round(x / count), + y: Math.round(y / count) + }; }, - drawBody: function(pt, vm, ctx, opacity) { - var bodyFontSize = vm.bodyFontSize; - var bodySpacing = vm.bodySpacing; - var body = vm.body; + /** + * Gets the tooltip position nearest of the item nearest to the event position + * @function Chart.Tooltip.positioners.nearest + * @param elements {Chart.Element[]} the tooltip elements + * @param eventPosition {Point} the position of the event in canvas coordinates + * @returns {Point} the tooltip position + */ + nearest: function(elements, eventPosition) { + var x = eventPosition.x; + var y = eventPosition.y; + var minDistance = Number.POSITIVE_INFINITY; + var i, len, nearestElement; - ctx.textAlign = vm._bodyAlign; - ctx.textBaseline = 'top'; - ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); + for (i = 0, len = elements.length; i < len; ++i) { + var el = elements[i]; + if (el && el.hasValue()) { + var center = el.getCenterPoint(); + var d = helpers.distanceBetweenPoints(eventPosition, center); - // Before Body - var xLinePadding = 0; - var fillLineOfText = function(line) { - ctx.fillText(line, pt.x + xLinePadding, pt.y); - pt.y += bodyFontSize + bodySpacing; - }; + if (d < minDistance) { + minDistance = d; + nearestElement = el; + } + } + } - // Before body lines - ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity); - helpers.each(vm.beforeBody, fillLineOfText); + if (nearestElement) { + var tp = nearestElement.tooltipPosition(); + x = tp.x; + y = tp.y; + } - var drawColorBoxes = vm.displayColors; - xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; + return { + x: x, + y: y + }; + } +}; - // Draw body lines now - helpers.each(body, function(bodyItem, i) { - var textColor = mergeOpacity(vm.labelTextColors[i], opacity); - ctx.fillStyle = textColor; - helpers.each(bodyItem.before, fillLineOfText); +/** + * Helper method to merge the opacity into a color + */ +function mergeOpacity(colorString, opacity) { + var color = helpers.color(colorString); + return color.alpha(opacity * color.alpha()).rgbaString(); +} - helpers.each(bodyItem.lines, function(line) { - // Draw Legend-like boxes if needed - if (drawColorBoxes) { - // Fill a white rect so that colours merge nicely if the opacity is < 1 - ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); - ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); +// Helper to push or concat based on if the 2nd parameter is an array or not +function pushOrConcat(base, toPush) { + if (toPush) { + if (helpers.isArray(toPush)) { + // base = base.concat(toPush); + Array.prototype.push.apply(base, toPush); + } else { + base.push(toPush); + } + } - // Border - ctx.lineWidth = 1; - ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); - ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); + return base; +} - // Inner square - ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); - ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); - ctx.fillStyle = textColor; - } +/** + * Returns array of strings split by newline + * @param {String} value - The value to split by newline. + * @returns {Array} value if newline present - Returned from String split() method + * @function + */ +function splitNewlines(str) { + if ((typeof str === 'string' || str instanceof String) && str.indexOf('\n') > -1) { + return str.split('\n'); + } + return str; +} - fillLineOfText(line); - }); - helpers.each(bodyItem.after, fillLineOfText); - }); +// Private helper to create a tooltip item model +// @param element : the chart element (point, arc, bar) to create the tooltip item for +// @return : new tooltip item +function createTooltipItem(element) { + var xScale = element._xScale; + var yScale = element._yScale || element._scale; // handle radar || polarArea charts + var index = element._index; + var datasetIndex = element._datasetIndex; - // Reset back to 0 for after body - xLinePadding = 0; + return { + xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', + yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', + index: index, + datasetIndex: datasetIndex, + x: element._model.x, + y: element._model.y + }; +} - // After body lines - helpers.each(vm.afterBody, fillLineOfText); - pt.y -= bodySpacing; // Remove last body spacing - }, +/** + * Helper to get the reset model for the tooltip + * @param tooltipOpts {Object} the tooltip options + */ +function getBaseModel(tooltipOpts) { + var globalDefaults = defaults.global; + var valueOrDefault = helpers.valueOrDefault; - drawFooter: function(pt, vm, ctx, opacity) { - var footer = vm.footer; + return { + // Positioning + xPadding: tooltipOpts.xPadding, + yPadding: tooltipOpts.yPadding, + xAlign: tooltipOpts.xAlign, + yAlign: tooltipOpts.yAlign, - if (footer.length) { - pt.y += vm.footerMarginTop; + // Body + bodyFontColor: tooltipOpts.bodyFontColor, + _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), + _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), + _bodyAlign: tooltipOpts.bodyAlign, + bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), + bodySpacing: tooltipOpts.bodySpacing, - ctx.textAlign = vm._footerAlign; - ctx.textBaseline = 'top'; + // Title + titleFontColor: tooltipOpts.titleFontColor, + _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), + _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), + titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), + _titleAlign: tooltipOpts.titleAlign, + titleSpacing: tooltipOpts.titleSpacing, + titleMarginBottom: tooltipOpts.titleMarginBottom, - ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); - ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); + // Footer + footerFontColor: tooltipOpts.footerFontColor, + _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), + _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), + footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), + _footerAlign: tooltipOpts.footerAlign, + footerSpacing: tooltipOpts.footerSpacing, + footerMarginTop: tooltipOpts.footerMarginTop, - helpers.each(footer, function(line) { - ctx.fillText(line, pt.x, pt.y); - pt.y += vm.footerFontSize + vm.footerSpacing; - }); - } - }, + // Appearance + caretSize: tooltipOpts.caretSize, + cornerRadius: tooltipOpts.cornerRadius, + backgroundColor: tooltipOpts.backgroundColor, + opacity: 0, + legendColorBackground: tooltipOpts.multiKeyBackground, + displayColors: tooltipOpts.displayColors, + borderColor: tooltipOpts.borderColor, + borderWidth: tooltipOpts.borderWidth + }; +} - drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { - ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); - ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); - ctx.lineWidth = vm.borderWidth; - var xAlign = vm.xAlign; - var yAlign = vm.yAlign; - var x = pt.x; - var y = pt.y; - var width = tooltipSize.width; - var height = tooltipSize.height; - var radius = vm.cornerRadius; +/** + * Get the size of the tooltip + */ +function getTooltipSize(tooltip, model) { + var ctx = tooltip._chart.ctx; - ctx.beginPath(); - ctx.moveTo(x + radius, y); - if (yAlign === 'top') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - if (yAlign === 'center' && xAlign === 'right') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - if (yAlign === 'bottom') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - if (yAlign === 'center' && xAlign === 'left') { - this.drawCaret(pt, tooltipSize); - } - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); + var height = model.yPadding * 2; // Tooltip Padding + var width = 0; - ctx.fill(); + // Count of all lines in the body + var body = model.body; + var combinedBodyLength = body.reduce(function(count, bodyItem) { + return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; + }, 0); + combinedBodyLength += model.beforeBody.length + model.afterBody.length; - if (vm.borderWidth > 0) { - ctx.stroke(); - } - }, + var titleLineCount = model.title.length; + var footerLineCount = model.footer.length; + var titleFontSize = model.titleFontSize; + var bodyFontSize = model.bodyFontSize; + var footerFontSize = model.footerFontSize; - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; + height += titleLineCount * titleFontSize; // Title Lines + height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing + height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin + height += combinedBodyLength * bodyFontSize; // Body Lines + height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing + height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin + height += footerLineCount * (footerFontSize); // Footer Lines + height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing - if (vm.opacity === 0) { - return; - } + // Title width + var widthPadding = 0; + var maxLineWidth = function(line) { + width = Math.max(width, ctx.measureText(line).width + widthPadding); + }; - var tooltipSize = { - width: vm.width, - height: vm.height - }; - var pt = { - x: vm.x, - y: vm.y - }; + ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); + helpers.each(model.title, maxLineWidth); - // IE11/Edge does not like very small opacities, so snap to 0 - var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; + // Body width + ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); + helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); - // Truthy/falsey value for empty tooltip - var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; + // Body lines may include some extra width due to the color box + widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; + helpers.each(body, function(bodyItem) { + helpers.each(bodyItem.before, maxLineWidth); + helpers.each(bodyItem.lines, maxLineWidth); + helpers.each(bodyItem.after, maxLineWidth); + }); - if (this._options.enabled && hasTooltipContent) { - // Draw Background - this.drawBackground(pt, vm, ctx, tooltipSize, opacity); + // Reset back to 0 + widthPadding = 0; - // Draw Title, Body, and Footer - pt.x += vm.xPadding; - pt.y += vm.yPadding; + // Footer width + ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); + helpers.each(model.footer, maxLineWidth); - // Titles - this.drawTitle(pt, vm, ctx, opacity); + // Add padding + width += 2 * model.xPadding; - // Body - this.drawBody(pt, vm, ctx, opacity); + return { + width: width, + height: height + }; +} - // Footer - this.drawFooter(pt, vm, ctx, opacity); - } - }, +/** + * Helper to get the alignment of a tooltip given the size + */ +function determineAlignment(tooltip, size) { + var model = tooltip._model; + var chart = tooltip._chart; + var chartArea = tooltip._chart.chartArea; + var xAlign = 'center'; + var yAlign = 'center'; - /** - * Handle an event - * @private - * @param {IEvent} event - The event to handle - * @returns {Boolean} true if the tooltip changed - */ - handleEvent: function(e) { - var me = this; - var options = me._options; - var changed = false; - - me._lastActive = me._lastActive || []; + if (model.y < size.height) { + yAlign = 'top'; + } else if (model.y > (chart.height - size.height)) { + yAlign = 'bottom'; + } - // Find Active Elements for tooltips - if (e.type === 'mouseout') { - me._active = []; - } else { - me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); - } + var lf, rf; // functions to determine left, right alignment + var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart + var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges + var midX = (chartArea.left + chartArea.right) / 2; + var midY = (chartArea.top + chartArea.bottom) / 2; - // Remember Last Actives - changed = !helpers.arrayEquals(me._active, me._lastActive); + if (yAlign === 'center') { + lf = function(x) { + return x <= midX; + }; + rf = function(x) { + return x > midX; + }; + } else { + lf = function(x) { + return x <= (size.width / 2); + }; + rf = function(x) { + return x >= (chart.width - (size.width / 2)); + }; + } - // Only handle target event on tooltip change - if (changed) { - me._lastActive = me._active; + olf = function(x) { + return x + size.width + model.caretSize + model.caretPadding > chart.width; + }; + orf = function(x) { + return x - size.width - model.caretSize - model.caretPadding < 0; + }; + yf = function(y) { + return y <= midY ? 'top' : 'bottom'; + }; - if (options.enabled || options.custom) { - me._eventPosition = { - x: e.x, - y: e.y - }; + if (lf(model.x)) { + xAlign = 'left'; - me.update(true); - me.pivot(); - } + // Is tooltip too wide and goes over the right side of the chart.? + if (olf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); } + } else if (rf(model.x)) { + xAlign = 'right'; - return changed; + // Is tooltip too wide and goes outside left edge of canvas? + if (orf(model.x)) { + xAlign = 'center'; + yAlign = yf(model.y); + } } -}); + + var opts = tooltip._options; + return { + xAlign: opts.xAlign ? opts.xAlign : xAlign, + yAlign: opts.yAlign ? opts.yAlign : yAlign + }; +} /** - * @namespace Chart.Tooltip.positioners + * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment */ -exports.positioners = positioners; - - - -/***/ }), - -/***/ "./node_modules/chart.js/src/elements/element.arc.js": -/*!***********************************************************!*\ - !*** ./node_modules/chart.js/src/elements/element.arc.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +function getBackgroundPoint(vm, size, alignment, chart) { + // Background Position + var x = vm.x; + var y = vm.y; -"use strict"; + var caretSize = vm.caretSize; + var caretPadding = vm.caretPadding; + var cornerRadius = vm.cornerRadius; + var xAlign = alignment.xAlign; + var yAlign = alignment.yAlign; + var paddingAndSize = caretSize + caretPadding; + var radiusAndPadding = cornerRadius + caretPadding; + if (xAlign === 'right') { + x -= size.width; + } else if (xAlign === 'center') { + x -= (size.width / 2); + if (x + size.width > chart.width) { + x = chart.width - size.width; + } + if (x < 0) { + x = 0; + } + } -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + if (yAlign === 'top') { + y += paddingAndSize; + } else if (yAlign === 'bottom') { + y -= size.height + paddingAndSize; + } else { + y -= (size.height / 2); + } -defaults._set('global', { - elements: { - arc: { - backgroundColor: defaults.global.defaultColor, - borderColor: '#fff', - borderWidth: 2 + if (yAlign === 'center') { + if (xAlign === 'left') { + x += paddingAndSize; + } else if (xAlign === 'right') { + x -= paddingAndSize; } + } else if (xAlign === 'left') { + x -= radiusAndPadding; + } else if (xAlign === 'right') { + x += radiusAndPadding; } -}); -module.exports = Element.extend({ - inLabelRange: function(mouseX) { - var vm = this._view; + return { + x: x, + y: y + }; +} - if (vm) { - return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); - } - return false; - }, +/** + * Helper to build before and after body lines + */ +function getBeforeAfterBodyLines(callback) { + return pushOrConcat([], splitNewlines(callback)); +} - inRange: function(chartX, chartY) { - var vm = this._view; +var exports = module.exports = Element.extend({ + initialize: function() { + this._model = getBaseModel(this._options); + this._lastActive = []; + }, - if (vm) { - var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); - var angle = pointRelativePosition.angle; - var distance = pointRelativePosition.distance; + // Get the title + // Args are: (tooltipItem, data) + getTitle: function() { + var me = this; + var opts = me._options; + var callbacks = opts.callbacks; - // Sanitise angle range - var startAngle = vm.startAngle; - var endAngle = vm.endAngle; - while (endAngle < startAngle) { - endAngle += 2.0 * Math.PI; - } - while (angle > endAngle) { - angle -= 2.0 * Math.PI; - } - while (angle < startAngle) { - angle += 2.0 * Math.PI; - } + var beforeTitle = callbacks.beforeTitle.apply(me, arguments); + var title = callbacks.title.apply(me, arguments); + var afterTitle = callbacks.afterTitle.apply(me, arguments); - // Check if within the range of the open/close angle - var betweenAngles = (angle >= startAngle && angle <= endAngle); - var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeTitle)); + lines = pushOrConcat(lines, splitNewlines(title)); + lines = pushOrConcat(lines, splitNewlines(afterTitle)); - return (betweenAngles && withinRadius); - } - return false; + return lines; }, - getCenterPoint: function() { - var vm = this._view; - var halfAngle = (vm.startAngle + vm.endAngle) / 2; - var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; - return { - x: vm.x + Math.cos(halfAngle) * halfRadius, - y: vm.y + Math.sin(halfAngle) * halfRadius - }; + // Args are: (tooltipItem, data) + getBeforeBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments)); }, - getArea: function() { - var vm = this._view; - return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); - }, + // Args are: (tooltipItem, data) + getBody: function(tooltipItems, data) { + var me = this; + var callbacks = me._options.callbacks; + var bodyItems = []; - tooltipPosition: function() { - var vm = this._view; - var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); - var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; + helpers.each(tooltipItems, function(tooltipItem) { + var bodyItem = { + before: [], + lines: [], + after: [] + }; + pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data))); + pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); + pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data))); - return { - x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), - y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) - }; + bodyItems.push(bodyItem); + }); + + return bodyItems; }, - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var sA = vm.startAngle; - var eA = vm.endAngle; + // Args are: (tooltipItem, data) + getAfterBody: function() { + return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments)); + }, - ctx.beginPath(); + // Get the footer and beforeFooter and afterFooter lines + // Args are: (tooltipItem, data) + getFooter: function() { + var me = this; + var callbacks = me._options.callbacks; - ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); - ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + var beforeFooter = callbacks.beforeFooter.apply(me, arguments); + var footer = callbacks.footer.apply(me, arguments); + var afterFooter = callbacks.afterFooter.apply(me, arguments); - ctx.closePath(); - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; + var lines = []; + lines = pushOrConcat(lines, splitNewlines(beforeFooter)); + lines = pushOrConcat(lines, splitNewlines(footer)); + lines = pushOrConcat(lines, splitNewlines(afterFooter)); - ctx.fillStyle = vm.backgroundColor; + return lines; + }, - ctx.fill(); - ctx.lineJoin = 'bevel'; + update: function(changed) { + var me = this; + var opts = me._options; - if (vm.borderWidth) { - ctx.stroke(); - } - } -}); + // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition + // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time + // which breaks any animations. + var existingModel = me._model; + var model = me._model = getBaseModel(opts); + var active = me._active; + var data = me._data; -/***/ }), + // In the case where active.length === 0 we need to keep these at existing values for good animations + var alignment = { + xAlign: existingModel.xAlign, + yAlign: existingModel.yAlign + }; + var backgroundPoint = { + x: existingModel.x, + y: existingModel.y + }; + var tooltipSize = { + width: existingModel.width, + height: existingModel.height + }; + var tooltipPosition = { + x: existingModel.caretX, + y: existingModel.caretY + }; -/***/ "./node_modules/chart.js/src/elements/element.line.js": -/*!************************************************************!*\ - !*** ./node_modules/chart.js/src/elements/element.line.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + var i, len; -"use strict"; + if (active.length) { + model.opacity = 1; + var labelColors = []; + var labelTextColors = []; + tooltipPosition = positioners[opts.position].call(me, active, me._eventPosition); -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + var tooltipItems = []; + for (i = 0, len = active.length; i < len; ++i) { + tooltipItems.push(createTooltipItem(active[i])); + } -var globalDefaults = defaults.global; + // If the user provided a filter function, use it to modify the tooltip items + if (opts.filter) { + tooltipItems = tooltipItems.filter(function(a) { + return opts.filter(a, data); + }); + } -defaults._set('global', { - elements: { - line: { - tension: 0.4, - backgroundColor: globalDefaults.defaultColor, - borderWidth: 3, - borderColor: globalDefaults.defaultColor, - borderCapStyle: 'butt', - borderDash: [], - borderDashOffset: 0.0, - borderJoinStyle: 'miter', - capBezierPoints: true, - fill: true, // do we fill in the area between the line and its base axis - } - } -}); + // If the user provided a sorting function, use it to modify the tooltip items + if (opts.itemSort) { + tooltipItems = tooltipItems.sort(function(a, b) { + return opts.itemSort(a, b, data); + }); + } -module.exports = Element.extend({ - draw: function() { - var me = this; - var vm = me._view; - var ctx = me._chart.ctx; - var spanGaps = vm.spanGaps; - var points = me._children.slice(); // clone array - var globalOptionLineElements = globalDefaults.elements.line; - var lastDrawnIndex = -1; - var index, current, previous, currentVM; + // Determine colors for boxes + helpers.each(tooltipItems, function(tooltipItem) { + labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); + labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); + }); - // If we are looping, adding the first point again - if (me._loop && points.length) { - points.push(points[0]); - } - ctx.save(); + // Build the Text Lines + model.title = me.getTitle(tooltipItems, data); + model.beforeBody = me.getBeforeBody(tooltipItems, data); + model.body = me.getBody(tooltipItems, data); + model.afterBody = me.getAfterBody(tooltipItems, data); + model.footer = me.getFooter(tooltipItems, data); - // Stroke Line Options - ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; + // Initial positioning and colors + model.x = Math.round(tooltipPosition.x); + model.y = Math.round(tooltipPosition.y); + model.caretPadding = opts.caretPadding; + model.labelColors = labelColors; + model.labelTextColors = labelTextColors; - // IE 9 and 10 do not support line dash - if (ctx.setLineDash) { - ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); - } + // data points + model.dataPoints = tooltipItems; - ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; - ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; - ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; - ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + // We need to determine alignment of the tooltip + tooltipSize = getTooltipSize(this, model); + alignment = determineAlignment(this, tooltipSize); + // Final Size and Position + backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart); + } else { + model.opacity = 0; + } - // Stroke Line - ctx.beginPath(); - lastDrawnIndex = -1; + model.xAlign = alignment.xAlign; + model.yAlign = alignment.yAlign; + model.x = backgroundPoint.x; + model.y = backgroundPoint.y; + model.width = tooltipSize.width; + model.height = tooltipSize.height; - for (index = 0; index < points.length; ++index) { - current = points[index]; - previous = helpers.previousItem(points, index); - currentVM = current._view; + // Point where the caret on the tooltip points to + model.caretX = tooltipPosition.x; + model.caretY = tooltipPosition.y; - // First point moves to it's starting position no matter what - if (index === 0) { - if (!currentVM.skip) { - ctx.moveTo(currentVM.x, currentVM.y); - lastDrawnIndex = index; - } - } else { - previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; + me._model = model; - if (!currentVM.skip) { - if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { - // There was a gap and this is the first point after the gap - ctx.moveTo(currentVM.x, currentVM.y); - } else { - // Line to next point - helpers.canvas.lineTo(ctx, previous._view, current._view); - } - lastDrawnIndex = index; - } - } + if (changed && opts.custom) { + opts.custom.call(me, model); } - ctx.stroke(); - ctx.restore(); - } -}); - - -/***/ }), + return me; + }, -/***/ "./node_modules/chart.js/src/elements/element.point.js": -/*!*************************************************************!*\ - !*** ./node_modules/chart.js/src/elements/element.point.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + drawCaret: function(tooltipPoint, size) { + var ctx = this._chart.ctx; + var vm = this._view; + var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); -"use strict"; + ctx.lineTo(caretPosition.x1, caretPosition.y1); + ctx.lineTo(caretPosition.x2, caretPosition.y2); + ctx.lineTo(caretPosition.x3, caretPosition.y3); + }, + getCaretPosition: function(tooltipPoint, size, vm) { + var x1, x2, x3, y1, y2, y3; + var caretSize = vm.caretSize; + var cornerRadius = vm.cornerRadius; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var ptX = tooltipPoint.x; + var ptY = tooltipPoint.y; + var width = size.width; + var height = size.height; + if (yAlign === 'center') { + y2 = ptY + (height / 2); -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + if (xAlign === 'left') { + x1 = ptX; + x2 = x1 - caretSize; + x3 = x1; -var defaultColor = defaults.global.defaultColor; + y1 = y2 + caretSize; + y3 = y2 - caretSize; + } else { + x1 = ptX + width; + x2 = x1 + caretSize; + x3 = x1; -defaults._set('global', { - elements: { - point: { - radius: 3, - pointStyle: 'circle', - backgroundColor: defaultColor, - borderColor: defaultColor, - borderWidth: 1, - // Hover - hitRadius: 1, - hoverRadius: 4, - hoverBorderWidth: 1 + y1 = y2 - caretSize; + y3 = y2 + caretSize; + } + } else { + if (xAlign === 'left') { + x2 = ptX + cornerRadius + (caretSize); + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else if (xAlign === 'right') { + x2 = ptX + width - cornerRadius - caretSize; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } else { + x2 = vm.caretX; + x1 = x2 - caretSize; + x3 = x2 + caretSize; + } + if (yAlign === 'top') { + y1 = ptY; + y2 = y1 - caretSize; + y3 = y1; + } else { + y1 = ptY + height; + y2 = y1 + caretSize; + y3 = y1; + // invert drawing order + var tmp = x3; + x3 = x1; + x1 = tmp; + } } - } -}); + return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; + }, -function xRange(mouseX) { - var vm = this._view; - return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; -} + drawTitle: function(pt, vm, ctx, opacity) { + var title = vm.title; -function yRange(mouseY) { - var vm = this._view; - return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; -} + if (title.length) { + ctx.textAlign = vm._titleAlign; + ctx.textBaseline = 'top'; -module.exports = Element.extend({ - inRange: function(mouseX, mouseY) { - var vm = this._view; - return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; - }, + var titleFontSize = vm.titleFontSize; + var titleSpacing = vm.titleSpacing; - inLabelRange: xRange, - inXRange: xRange, - inYRange: yRange, + ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); + ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); - getCenterPoint: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; - }, + var i, len; + for (i = 0, len = title.length; i < len; ++i) { + ctx.fillText(title[i], pt.x, pt.y); + pt.y += titleFontSize + titleSpacing; // Line Height and spacing - getArea: function() { - return Math.PI * Math.pow(this._view.radius, 2); + if (i + 1 === title.length) { + pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing + } + } + } }, - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y, - padding: vm.radius + vm.borderWidth - }; - }, + drawBody: function(pt, vm, ctx, opacity) { + var bodyFontSize = vm.bodyFontSize; + var bodySpacing = vm.bodySpacing; + var body = vm.body; - draw: function(chartArea) { - var vm = this._view; - var model = this._model; - var ctx = this._chart.ctx; - var pointStyle = vm.pointStyle; - var rotation = vm.rotation; - var radius = vm.radius; - var x = vm.x; - var y = vm.y; - var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) + ctx.textAlign = vm._bodyAlign; + ctx.textBaseline = 'top'; + ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); - if (vm.skip) { - return; - } + // Before Body + var xLinePadding = 0; + var fillLineOfText = function(line) { + ctx.fillText(line, pt.x + xLinePadding, pt.y); + pt.y += bodyFontSize + bodySpacing; + }; - // Clipping for Points. - if (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) { - ctx.strokeStyle = vm.borderColor || defaultColor; - ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); - ctx.fillStyle = vm.backgroundColor || defaultColor; - helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); - } - } -}); + // Before body lines + ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity); + helpers.each(vm.beforeBody, fillLineOfText); + var drawColorBoxes = vm.displayColors; + xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; -/***/ }), + // Draw body lines now + helpers.each(body, function(bodyItem, i) { + var textColor = mergeOpacity(vm.labelTextColors[i], opacity); + ctx.fillStyle = textColor; + helpers.each(bodyItem.before, fillLineOfText); -/***/ "./node_modules/chart.js/src/elements/element.rectangle.js": -/*!*****************************************************************!*\ - !*** ./node_modules/chart.js/src/elements/element.rectangle.js ***! - \*****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + helpers.each(bodyItem.lines, function(line) { + // Draw Legend-like boxes if needed + if (drawColorBoxes) { + // Fill a white rect so that colours merge nicely if the opacity is < 1 + ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); + ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); -"use strict"; + // Border + ctx.lineWidth = 1; + ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); + ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); + // Inner square + ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); + ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); + ctx.fillStyle = textColor; + } -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); + fillLineOfText(line); + }); -defaults._set('global', { - elements: { - rectangle: { - backgroundColor: defaults.global.defaultColor, - borderColor: defaults.global.defaultColor, - borderSkipped: 'bottom', - borderWidth: 0 - } - } -}); + helpers.each(bodyItem.after, fillLineOfText); + }); -function isVertical(bar) { - return bar._view.width !== undefined; -} + // Reset back to 0 for after body + xLinePadding = 0; -/** - * Helper function to get the bounds of the bar regardless of the orientation - * @param bar {Chart.Element.Rectangle} the bar - * @return {Bounds} bounds of the bar - * @private - */ -function getBarBounds(bar) { - var vm = bar._view; - var x1, x2, y1, y2; + // After body lines + helpers.each(vm.afterBody, fillLineOfText); + pt.y -= bodySpacing; // Remove last body spacing + }, - if (isVertical(bar)) { - // vertical - var halfWidth = vm.width / 2; - x1 = vm.x - halfWidth; - x2 = vm.x + halfWidth; - y1 = Math.min(vm.y, vm.base); - y2 = Math.max(vm.y, vm.base); - } else { - // horizontal bar - var halfHeight = vm.height / 2; - x1 = Math.min(vm.x, vm.base); - x2 = Math.max(vm.x, vm.base); - y1 = vm.y - halfHeight; - y2 = vm.y + halfHeight; - } + drawFooter: function(pt, vm, ctx, opacity) { + var footer = vm.footer; - return { - left: x1, - top: y1, - right: x2, - bottom: y2 - }; -} + if (footer.length) { + pt.y += vm.footerMarginTop; -module.exports = Element.extend({ - draw: function() { - var ctx = this._chart.ctx; - var vm = this._view; - var left, right, top, bottom, signX, signY, borderSkipped; - var borderWidth = vm.borderWidth; + ctx.textAlign = vm._footerAlign; + ctx.textBaseline = 'top'; - if (!vm.horizontal) { - // bar - left = vm.x - vm.width / 2; - right = vm.x + vm.width / 2; - top = vm.y; - bottom = vm.base; - signX = 1; - signY = bottom > top ? 1 : -1; - borderSkipped = vm.borderSkipped || 'bottom'; - } else { - // horizontal bar - left = vm.base; - right = vm.x; - top = vm.y - vm.height / 2; - bottom = vm.y + vm.height / 2; - signX = right > left ? 1 : -1; - signY = 1; - borderSkipped = vm.borderSkipped || 'left'; - } + ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); + ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); - // Canvas doesn't allow us to stroke inside the width so we can - // adjust the sizes to fit if we're setting a stroke on the line - if (borderWidth) { - // borderWidth shold be less than bar width and bar height. - var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); - borderWidth = borderWidth > barSize ? barSize : borderWidth; - var halfStroke = borderWidth / 2; - // Adjust borderWidth when bar top position is near vm.base(zero). - var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); - var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); - var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); - var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); - // not become a vertical line? - if (borderLeft !== borderRight) { - top = borderTop; - bottom = borderBottom; - } - // not become a horizontal line? - if (borderTop !== borderBottom) { - left = borderLeft; - right = borderRight; - } + helpers.each(footer, function(line) { + ctx.fillText(line, pt.x, pt.y); + pt.y += vm.footerFontSize + vm.footerSpacing; + }); } + }, - ctx.beginPath(); - ctx.fillStyle = vm.backgroundColor; - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = borderWidth; - - // Corner points, from bottom-left to bottom-right clockwise - // | 1 2 | - // | 0 3 | - var corners = [ - [left, bottom], - [left, top], - [right, top], - [right, bottom] - ]; + drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { + ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); + ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); + ctx.lineWidth = vm.borderWidth; + var xAlign = vm.xAlign; + var yAlign = vm.yAlign; + var x = pt.x; + var y = pt.y; + var width = tooltipSize.width; + var height = tooltipSize.height; + var radius = vm.cornerRadius; - // Find first (starting) corner with fallback to 'bottom' - var borders = ['bottom', 'left', 'top', 'right']; - var startCorner = borders.indexOf(borderSkipped, 0); - if (startCorner === -1) { - startCorner = 0; + ctx.beginPath(); + ctx.moveTo(x + radius, y); + if (yAlign === 'top') { + this.drawCaret(pt, tooltipSize); } - - function cornerAt(index) { - return corners[(startCorner + index) % 4]; + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + if (yAlign === 'center' && xAlign === 'right') { + this.drawCaret(pt, tooltipSize); } - - // Draw rectangle from 'startCorner' - var corner = cornerAt(0); - ctx.moveTo(corner[0], corner[1]); - - for (var i = 1; i < 4; i++) { - corner = cornerAt(i); - ctx.lineTo(corner[0], corner[1]); + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + if (yAlign === 'bottom') { + this.drawCaret(pt, tooltipSize); } + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + if (yAlign === 'center' && xAlign === 'left') { + this.drawCaret(pt, tooltipSize); + } + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); ctx.fill(); - if (borderWidth) { + + if (vm.borderWidth > 0) { ctx.stroke(); } }, - height: function() { + draw: function() { + var ctx = this._chart.ctx; var vm = this._view; - return vm.base - vm.y; - }, - inRange: function(mouseX, mouseY) { - var inRange = false; - - if (this._view) { - var bounds = getBarBounds(this); - inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; + if (vm.opacity === 0) { + return; } - return inRange; - }, + var tooltipSize = { + width: vm.width, + height: vm.height + }; + var pt = { + x: vm.x, + y: vm.y + }; - inLabelRange: function(mouseX, mouseY) { - var me = this; - if (!me._view) { - return false; - } + // IE11/Edge does not like very small opacities, so snap to 0 + var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; - var inRange = false; - var bounds = getBarBounds(me); + // Truthy/falsey value for empty tooltip + var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; - if (isVertical(me)) { - inRange = mouseX >= bounds.left && mouseX <= bounds.right; - } else { - inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; - } + if (this._options.enabled && hasTooltipContent) { + // Draw Background + this.drawBackground(pt, vm, ctx, tooltipSize, opacity); - return inRange; - }, + // Draw Title, Body, and Footer + pt.x += vm.xPadding; + pt.y += vm.yPadding; - inXRange: function(mouseX) { - var bounds = getBarBounds(this); - return mouseX >= bounds.left && mouseX <= bounds.right; - }, + // Titles + this.drawTitle(pt, vm, ctx, opacity); - inYRange: function(mouseY) { - var bounds = getBarBounds(this); - return mouseY >= bounds.top && mouseY <= bounds.bottom; + // Body + this.drawBody(pt, vm, ctx, opacity); + + // Footer + this.drawFooter(pt, vm, ctx, opacity); + } }, - getCenterPoint: function() { - var vm = this._view; - var x, y; - if (isVertical(this)) { - x = vm.x; - y = (vm.y + vm.base) / 2; + /** + * Handle an event + * @private + * @param {IEvent} event - The event to handle + * @returns {Boolean} true if the tooltip changed + */ + handleEvent: function(e) { + var me = this; + var options = me._options; + var changed = false; + + me._lastActive = me._lastActive || []; + + // Find Active Elements for tooltips + if (e.type === 'mouseout') { + me._active = []; } else { - x = (vm.x + vm.base) / 2; - y = vm.y; + me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); } - return {x: x, y: y}; - }, + // Remember Last Actives + changed = !helpers.arrayEquals(me._active, me._lastActive); - getArea: function() { - var vm = this._view; - return vm.width * Math.abs(vm.y - vm.base); - }, + // Only handle target event on tooltip change + if (changed) { + me._lastActive = me._active; - tooltipPosition: function() { - var vm = this._view; - return { - x: vm.x, - y: vm.y - }; + if (options.enabled || options.custom) { + me._eventPosition = { + x: e.x, + y: e.y + }; + + me.update(true); + me.pivot(); + } + } + + return changed; } }); +/** + * @namespace Chart.Tooltip.positioners + */ +exports.positioners = positioners; + + /***/ }), -/***/ "./node_modules/chart.js/src/elements/index.js": -/*!*****************************************************!*\ - !*** ./node_modules/chart.js/src/elements/index.js ***! - \*****************************************************/ +/***/ "./node_modules/chart.js/src/elements/element.arc.js": +/*!***********************************************************!*\ + !*** ./node_modules/chart.js/src/elements/element.arc.js ***! + \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = {}; -module.exports.Arc = __webpack_require__(/*! ./element.arc */ "./node_modules/chart.js/src/elements/element.arc.js"); -module.exports.Line = __webpack_require__(/*! ./element.line */ "./node_modules/chart.js/src/elements/element.line.js"); -module.exports.Point = __webpack_require__(/*! ./element.point */ "./node_modules/chart.js/src/elements/element.point.js"); -module.exports.Rectangle = __webpack_require__(/*! ./element.rectangle */ "./node_modules/chart.js/src/elements/element.rectangle.js"); - +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -/***/ }), +defaults._set('global', { + elements: { + arc: { + backgroundColor: defaults.global.defaultColor, + borderColor: '#fff', + borderWidth: 2 + } + } +}); -/***/ "./node_modules/chart.js/src/helpers/helpers.canvas.js": -/*!*************************************************************!*\ - !*** ./node_modules/chart.js/src/helpers/helpers.canvas.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +module.exports = Element.extend({ + inLabelRange: function(mouseX) { + var vm = this._view; -"use strict"; + if (vm) { + return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); + } + return false; + }, + inRange: function(chartX, chartY) { + var vm = this._view; -var helpers = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); + if (vm) { + var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); + var angle = pointRelativePosition.angle; + var distance = pointRelativePosition.distance; -/** - * @namespace Chart.helpers.canvas - */ -var exports = module.exports = { - /** - * Clears the entire canvas associated to the given `chart`. - * @param {Chart} chart - The chart for which to clear the canvas. - */ - clear: function(chart) { - chart.ctx.clearRect(0, 0, chart.width, chart.height); - }, + // Sanitise angle range + var startAngle = vm.startAngle; + var endAngle = vm.endAngle; + while (endAngle < startAngle) { + endAngle += 2.0 * Math.PI; + } + while (angle > endAngle) { + angle -= 2.0 * Math.PI; + } + while (angle < startAngle) { + angle += 2.0 * Math.PI; + } - /** - * Creates a "path" for a rectangle with rounded corners at position (x, y) with a - * given size (width, height) and the same `radius` for all corners. - * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. - * @param {Number} x - The x axis of the coordinate for the rectangle starting point. - * @param {Number} y - The y axis of the coordinate for the rectangle starting point. - * @param {Number} width - The rectangle's width. - * @param {Number} height - The rectangle's height. - * @param {Number} radius - The rounded amount (in pixels) for the four corners. - * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? - */ - roundedRect: function(ctx, x, y, width, height, radius) { - if (radius) { - // NOTE(SB) `epsilon` helps to prevent minor artifacts appearing - // on Chrome when `r` is exactly half the height or the width. - var epsilon = 0.0000001; - var r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon); + // Check if within the range of the open/close angle + var betweenAngles = (angle >= startAngle && angle <= endAngle); + var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); - ctx.moveTo(x + r, y); - ctx.lineTo(x + width - r, y); - ctx.arcTo(x + width, y, x + width, y + r, r); - ctx.lineTo(x + width, y + height - r); - ctx.arcTo(x + width, y + height, x + width - r, y + height, r); - ctx.lineTo(x + r, y + height); - ctx.arcTo(x, y + height, x, y + height - r, r); - ctx.lineTo(x, y + r); - ctx.arcTo(x, y, x + r, y, r); - ctx.closePath(); - ctx.moveTo(x, y); - } else { - ctx.rect(x, y, width, height); + return (betweenAngles && withinRadius); } + return false; }, - drawPoint: function(ctx, style, radius, x, y, rotation) { - var type, edgeLength, xOffset, yOffset, height, size; - rotation = rotation || 0; + getCenterPoint: function() { + var vm = this._view; + var halfAngle = (vm.startAngle + vm.endAngle) / 2; + var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; + return { + x: vm.x + Math.cos(halfAngle) * halfRadius, + y: vm.y + Math.sin(halfAngle) * halfRadius + }; + }, - if (style && typeof style === 'object') { - type = style.toString(); - if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { - ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); - return; - } - } + getArea: function() { + var vm = this._view; + return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); + }, - if (isNaN(radius) || radius <= 0) { - return; - } + tooltipPosition: function() { + var vm = this._view; + var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); + var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; - ctx.save(); - ctx.translate(x, y); - ctx.rotate(rotation * Math.PI / 180); - ctx.beginPath(); + return { + x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), + y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) + }; + }, - switch (style) { - // Default includes circle - default: - ctx.arc(0, 0, radius, 0, Math.PI * 2); - ctx.closePath(); - break; - case 'triangle': - edgeLength = 3 * radius / Math.sqrt(3); - height = edgeLength * Math.sqrt(3) / 2; - ctx.moveTo(-edgeLength / 2, height / 3); - ctx.lineTo(edgeLength / 2, height / 3); - ctx.lineTo(0, -2 * height / 3); - ctx.closePath(); - break; - case 'rect': - size = 1 / Math.SQRT2 * radius; - ctx.rect(-size, -size, 2 * size, 2 * size); - break; - case 'rectRounded': - var offset = radius / Math.SQRT2; - var leftX = -offset; - var topY = -offset; - var sideSize = Math.SQRT2 * radius; + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var sA = vm.startAngle; + var eA = vm.endAngle; - // NOTE(SB) the rounded rect implementation changed to use `arcTo` - // instead of `quadraticCurveTo` since it generates better results - // when rect is almost a circle. 0.425 (instead of 0.5) produces - // results visually closer to the previous impl. - this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425); - break; - case 'rectRot': - size = 1 / Math.SQRT2 * radius; - ctx.moveTo(-size, 0); - ctx.lineTo(0, size); - ctx.lineTo(size, 0); - ctx.lineTo(0, -size); - ctx.closePath(); - break; - case 'cross': - ctx.moveTo(0, radius); - ctx.lineTo(0, -radius); - ctx.moveTo(-radius, 0); - ctx.lineTo(radius, 0); - break; - case 'crossRot': - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(-xOffset, -yOffset); - ctx.lineTo(xOffset, yOffset); - ctx.moveTo(-xOffset, yOffset); - ctx.lineTo(xOffset, -yOffset); - break; - case 'star': - ctx.moveTo(0, radius); - ctx.lineTo(0, -radius); - ctx.moveTo(-radius, 0); - ctx.lineTo(radius, 0); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(-xOffset, -yOffset); - ctx.lineTo(xOffset, yOffset); - ctx.moveTo(-xOffset, yOffset); - ctx.lineTo(xOffset, -yOffset); - break; - case 'line': - ctx.moveTo(-radius, 0); - ctx.lineTo(radius, 0); - break; - case 'dash': - ctx.moveTo(0, 0); - ctx.lineTo(radius, 0); - break; - } + ctx.beginPath(); - ctx.fill(); - ctx.stroke(); - ctx.restore(); - }, + ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); + ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); - clipArea: function(ctx, area) { - ctx.save(); - ctx.beginPath(); - ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); - ctx.clip(); - }, + ctx.closePath(); + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = vm.borderWidth; - unclipArea: function(ctx) { - ctx.restore(); - }, + ctx.fillStyle = vm.backgroundColor; - lineTo: function(ctx, previous, target, flip) { - if (target.steppedLine) { - if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { - ctx.lineTo(previous.x, target.y); - } else { - ctx.lineTo(target.x, previous.y); - } - ctx.lineTo(target.x, target.y); - return; - } + ctx.fill(); + ctx.lineJoin = 'bevel'; - if (!target.tension) { - ctx.lineTo(target.x, target.y); - return; + if (vm.borderWidth) { + ctx.stroke(); } - - ctx.bezierCurveTo( - flip ? previous.controlPointPreviousX : previous.controlPointNextX, - flip ? previous.controlPointPreviousY : previous.controlPointNextY, - flip ? target.controlPointNextX : target.controlPointPreviousX, - flip ? target.controlPointNextY : target.controlPointPreviousY, - target.x, - target.y); } -}; - -// DEPRECATIONS - -/** - * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. - * @namespace Chart.helpers.clear - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.clear = exports.clear; - -/** - * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. - * @namespace Chart.helpers.drawRoundedRectangle - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.drawRoundedRectangle = function(ctx) { - ctx.beginPath(); - exports.roundedRect.apply(exports, arguments); -}; +}); /***/ }), -/***/ "./node_modules/chart.js/src/helpers/helpers.core.js": -/*!***********************************************************!*\ - !*** ./node_modules/chart.js/src/helpers/helpers.core.js ***! - \***********************************************************/ +/***/ "./node_modules/chart.js/src/elements/element.line.js": +/*!************************************************************!*\ + !*** ./node_modules/chart.js/src/elements/element.line.js ***! + \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -/** - * @namespace Chart.helpers - */ -var helpers = { - /** - * An empty function that can be used, for example, for optional callback. - */ - noop: function() {}, +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - /** - * Returns a unique id, sequentially generated from a global variable. - * @returns {Number} - * @function - */ - uid: (function() { - var id = 0; - return function() { - return id++; - }; - }()), +var globalDefaults = defaults.global; - /** - * Returns true if `value` is neither null nor undefined, else returns false. - * @param {*} value - The value to test. - * @returns {Boolean} - * @since 2.7.0 - */ - isNullOrUndef: function(value) { - return value === null || typeof value === 'undefined'; - }, +defaults._set('global', { + elements: { + line: { + tension: 0.4, + backgroundColor: globalDefaults.defaultColor, + borderWidth: 3, + borderColor: globalDefaults.defaultColor, + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + capBezierPoints: true, + fill: true, // do we fill in the area between the line and its base axis + } + } +}); - /** - * Returns true if `value` is an array, else returns false. - * @param {*} value - The value to test. - * @returns {Boolean} - * @function - */ - isArray: Array.isArray ? Array.isArray : function(value) { - return Object.prototype.toString.call(value) === '[object Array]'; - }, +module.exports = Element.extend({ + draw: function() { + var me = this; + var vm = me._view; + var ctx = me._chart.ctx; + var spanGaps = vm.spanGaps; + var points = me._children.slice(); // clone array + var globalOptionLineElements = globalDefaults.elements.line; + var lastDrawnIndex = -1; + var index, current, previous, currentVM; - /** - * Returns true if `value` is an object (excluding null), else returns false. - * @param {*} value - The value to test. - * @returns {Boolean} - * @since 2.7.0 - */ - isObject: function(value) { - return value !== null && Object.prototype.toString.call(value) === '[object Object]'; - }, + // If we are looping, adding the first point again + if (me._loop && points.length) { + points.push(points[0]); + } - /** - * Returns `value` if defined, else returns `defaultValue`. - * @param {*} value - The value to return if defined. - * @param {*} defaultValue - The value to return if `value` is undefined. - * @returns {*} - */ - valueOrDefault: function(value, defaultValue) { - return typeof value === 'undefined' ? defaultValue : value; - }, + ctx.save(); - /** - * Returns value at the given `index` in array if defined, else returns `defaultValue`. - * @param {Array} value - The array to lookup for value at `index`. - * @param {Number} index - The index in `value` to lookup for value. - * @param {*} defaultValue - The value to return if `value[index]` is undefined. - * @returns {*} - */ - valueAtIndexOrDefault: function(value, index, defaultValue) { - return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); - }, + // Stroke Line Options + ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; - /** - * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the - * value returned by `fn`. If `fn` is not a function, this method returns undefined. - * @param {Function} fn - The function to call. - * @param {Array|undefined|null} args - The arguments with which `fn` should be called. - * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. - * @returns {*} - */ - callback: function(fn, args, thisArg) { - if (fn && typeof fn.call === 'function') { - return fn.apply(thisArg, args); + // IE 9 and 10 do not support line dash + if (ctx.setLineDash) { + ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); } - }, - /** - * Note(SB) for performance sake, this method should only be used when loopable type - * is unknown or in none intensive code (not called often and small loopable). Else - * it's preferable to use a regular for() loop and save extra function calls. - * @param {Object|Array} loopable - The object or array to be iterated. - * @param {Function} fn - The function to call for each item. - * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. - * @param {Boolean} [reverse] - If true, iterates backward on the loopable. - */ - each: function(loopable, fn, thisArg, reverse) { - var i, len, keys; - if (helpers.isArray(loopable)) { - len = loopable.length; - if (reverse) { - for (i = len - 1; i >= 0; i--) { - fn.call(thisArg, loopable[i], i); + ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; + ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; + ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; + ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; + + // Stroke Line + ctx.beginPath(); + lastDrawnIndex = -1; + + for (index = 0; index < points.length; ++index) { + current = points[index]; + previous = helpers.previousItem(points, index); + currentVM = current._view; + + // First point moves to it's starting position no matter what + if (index === 0) { + if (!currentVM.skip) { + ctx.moveTo(currentVM.x, currentVM.y); + lastDrawnIndex = index; } } else { - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[i], i); + previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; + + if (!currentVM.skip) { + if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { + // There was a gap and this is the first point after the gap + ctx.moveTo(currentVM.x, currentVM.y); + } else { + // Line to next point + helpers.canvas.lineTo(ctx, previous._view, current._view); + } + lastDrawnIndex = index; } } - } else if (helpers.isObject(loopable)) { - keys = Object.keys(loopable); - len = keys.length; - for (i = 0; i < len; i++) { - fn.call(thisArg, loopable[keys[i]], keys[i]); - } } - }, - /** - * Returns true if the `a0` and `a1` arrays have the same content, else returns false. - * @see http://stackoverflow.com/a/14853974 - * @param {Array} a0 - The array to compare - * @param {Array} a1 - The array to compare - * @returns {Boolean} - */ - arrayEquals: function(a0, a1) { - var i, ilen, v0, v1; + ctx.stroke(); + ctx.restore(); + } +}); - if (!a0 || !a1 || a0.length !== a1.length) { - return false; - } - for (i = 0, ilen = a0.length; i < ilen; ++i) { - v0 = a0[i]; - v1 = a1[i]; +/***/ }), - if (v0 instanceof Array && v1 instanceof Array) { - if (!helpers.arrayEquals(v0, v1)) { - return false; - } - } else if (v0 !== v1) { - // NOTE: two different object instances will never be equal: {x:20} != {x:20} - return false; - } - } +/***/ "./node_modules/chart.js/src/elements/element.point.js": +/*!*************************************************************!*\ + !*** ./node_modules/chart.js/src/elements/element.point.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - return true; - }, +"use strict"; - /** - * Returns a deep copy of `source` without keeping references on objects and arrays. - * @param {*} source - The value to clone. - * @returns {*} - */ - clone: function(source) { - if (helpers.isArray(source)) { - return source.map(helpers.clone); - } - if (helpers.isObject(source)) { - var target = {}; - var keys = Object.keys(source); - var klen = keys.length; - var k = 0; +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - for (; k < klen; ++k) { - target[keys[k]] = helpers.clone(source[keys[k]]); - } +var defaultColor = defaults.global.defaultColor; - return target; +defaults._set('global', { + elements: { + point: { + radius: 3, + pointStyle: 'circle', + backgroundColor: defaultColor, + borderColor: defaultColor, + borderWidth: 1, + // Hover + hitRadius: 1, + hoverRadius: 4, + hoverBorderWidth: 1 } + } +}); - return source; +function xRange(mouseX) { + var vm = this._view; + return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false; +} + +function yRange(mouseY) { + var vm = this._view; + return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false; +} + +module.exports = Element.extend({ + inRange: function(mouseX, mouseY) { + var vm = this._view; + return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; }, - /** - * The default merger when Chart.helpers.merge is called without merger option. - * Note(SB): this method is also used by configMerge and scaleMerge as fallback. - * @private - */ - _merger: function(key, target, source, options) { - var tval = target[key]; - var sval = source[key]; + inLabelRange: xRange, + inXRange: xRange, + inYRange: yRange, - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.merge(tval, sval, options); - } else { - target[key] = helpers.clone(sval); - } + getCenterPoint: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; }, - /** - * Merges source[key] in target[key] only if target[key] is undefined. - * @private - */ - _mergerIf: function(key, target, source) { - var tval = target[key]; - var sval = source[key]; + getArea: function() { + return Math.PI * Math.pow(this._view.radius, 2); + }, - if (helpers.isObject(tval) && helpers.isObject(sval)) { - helpers.mergeIf(tval, sval); - } else if (!target.hasOwnProperty(key)) { - target[key] = helpers.clone(sval); - } + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y, + padding: vm.radius + vm.borderWidth + }; }, - /** - * Recursively deep copies `source` properties into `target` with the given `options`. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {Object} target - The target object in which all sources are merged into. - * @param {Object|Array(Object)} source - Object(s) to merge into `target`. - * @param {Object} [options] - Merging options: - * @param {Function} [options.merger] - The merge method (key, target, source, options) - * @returns {Object} The `target` object. - */ - merge: function(target, source, options) { - var sources = helpers.isArray(source) ? source : [source]; - var ilen = sources.length; - var merge, i, keys, klen, k; + draw: function(chartArea) { + var vm = this._view; + var model = this._model; + var ctx = this._chart.ctx; + var pointStyle = vm.pointStyle; + var rotation = vm.rotation; + var radius = vm.radius; + var x = vm.x; + var y = vm.y; + var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) - if (!helpers.isObject(target)) { - return target; + if (vm.skip) { + return; } - options = options || {}; - merge = options.merger || helpers._merger; - - for (i = 0; i < ilen; ++i) { - source = sources[i]; - if (!helpers.isObject(source)) { - continue; - } - - keys = Object.keys(source); - for (k = 0, klen = keys.length; k < klen; ++k) { - merge(keys[k], target, source, options); - } + // Clipping for Points. + if (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) { + ctx.strokeStyle = vm.borderColor || defaultColor; + ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); + ctx.fillStyle = vm.backgroundColor || defaultColor; + helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation); } + } +}); - return target; - }, - /** - * Recursively deep copies `source` properties into `target` *only* if not defined in target. - * IMPORTANT: `target` is not cloned and will be updated with `source` properties. - * @param {Object} target - The target object in which all sources are merged into. - * @param {Object|Array(Object)} source - Object(s) to merge into `target`. - * @returns {Object} The `target` object. - */ - mergeIf: function(target, source) { - return helpers.merge(target, source, {merger: helpers._mergerIf}); - }, +/***/ }), - /** - * Applies the contents of two or more objects together into the first object. - * @param {Object} target - The target object in which all objects are merged into. - * @param {Object} arg1 - Object containing additional properties to merge in target. - * @param {Object} argN - Additional objects containing properties to merge in target. - * @returns {Object} The `target` object. - */ - extend: function(target) { - var setFn = function(value, key) { - target[key] = value; - }; - for (var i = 1, ilen = arguments.length; i < ilen; ++i) { - helpers.each(arguments[i], setFn); - } - return target; - }, +/***/ "./node_modules/chart.js/src/elements/element.rectangle.js": +/*!*****************************************************************!*\ + !*** ./node_modules/chart.js/src/elements/element.rectangle.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - /** - * Basic javascript inheritance based on the model created in Backbone.js - */ - inherits: function(extensions) { - var me = this; - var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { - return me.apply(this, arguments); - }; +"use strict"; - var Surrogate = function() { - this.constructor = ChartElement; - }; - Surrogate.prototype = me.prototype; - ChartElement.prototype = new Surrogate(); - ChartElement.extend = helpers.inherits; +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); - if (extensions) { - helpers.extend(ChartElement.prototype, extensions); +defaults._set('global', { + elements: { + rectangle: { + backgroundColor: defaults.global.defaultColor, + borderColor: defaults.global.defaultColor, + borderSkipped: 'bottom', + borderWidth: 0 } - - ChartElement.__super__ = me.prototype; - return ChartElement; } -}; - -module.exports = helpers; - -// DEPRECATIONS +}); -/** - * Provided for backward compatibility, use Chart.helpers.callback instead. - * @function Chart.helpers.callCallback - * @deprecated since version 2.6.0 - * @todo remove at version 3 - * @private - */ -helpers.callCallback = helpers.callback; +function isVertical(bar) { + return bar._view.width !== undefined; +} /** - * Provided for backward compatibility, use Array.prototype.indexOf instead. - * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ - * @function Chart.helpers.indexOf - * @deprecated since version 2.7.0 - * @todo remove at version 3 + * Helper function to get the bounds of the bar regardless of the orientation + * @param bar {Chart.Element.Rectangle} the bar + * @return {Bounds} bounds of the bar * @private */ -helpers.indexOf = function(array, item, fromIndex) { - return Array.prototype.indexOf.call(array, item, fromIndex); -}; +function getBarBounds(bar) { + var vm = bar._view; + var x1, x2, y1, y2; -/** - * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. - * @function Chart.helpers.getValueOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueOrDefault = helpers.valueOrDefault; + if (isVertical(bar)) { + // vertical + var halfWidth = vm.width / 2; + x1 = vm.x - halfWidth; + x2 = vm.x + halfWidth; + y1 = Math.min(vm.y, vm.base); + y2 = Math.max(vm.y, vm.base); + } else { + // horizontal bar + var halfHeight = vm.height / 2; + x1 = Math.min(vm.x, vm.base); + x2 = Math.max(vm.x, vm.base); + y1 = vm.y - halfHeight; + y2 = vm.y + halfHeight; + } -/** - * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. - * @function Chart.helpers.getValueAtIndexOrDefault - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + return { + left: x1, + top: y1, + right: x2, + bottom: y2 + }; +} +module.exports = Element.extend({ + draw: function() { + var ctx = this._chart.ctx; + var vm = this._view; + var left, right, top, bottom, signX, signY, borderSkipped; + var borderWidth = vm.borderWidth; -/***/ }), + if (!vm.horizontal) { + // bar + left = vm.x - vm.width / 2; + right = vm.x + vm.width / 2; + top = vm.y; + bottom = vm.base; + signX = 1; + signY = bottom > top ? 1 : -1; + borderSkipped = vm.borderSkipped || 'bottom'; + } else { + // horizontal bar + left = vm.base; + right = vm.x; + top = vm.y - vm.height / 2; + bottom = vm.y + vm.height / 2; + signX = right > left ? 1 : -1; + signY = 1; + borderSkipped = vm.borderSkipped || 'left'; + } -/***/ "./node_modules/chart.js/src/helpers/helpers.easing.js": -/*!*************************************************************!*\ - !*** ./node_modules/chart.js/src/helpers/helpers.easing.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + // Canvas doesn't allow us to stroke inside the width so we can + // adjust the sizes to fit if we're setting a stroke on the line + if (borderWidth) { + // borderWidth shold be less than bar width and bar height. + var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); + borderWidth = borderWidth > barSize ? barSize : borderWidth; + var halfStroke = borderWidth / 2; + // Adjust borderWidth when bar top position is near vm.base(zero). + var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); + var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); + var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); + var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); + // not become a vertical line? + if (borderLeft !== borderRight) { + top = borderTop; + bottom = borderBottom; + } + // not become a horizontal line? + if (borderTop !== borderBottom) { + left = borderLeft; + right = borderRight; + } + } -"use strict"; + ctx.beginPath(); + ctx.fillStyle = vm.backgroundColor; + ctx.strokeStyle = vm.borderColor; + ctx.lineWidth = borderWidth; + // Corner points, from bottom-left to bottom-right clockwise + // | 1 2 | + // | 0 3 | + var corners = [ + [left, bottom], + [left, top], + [right, top], + [right, bottom] + ]; -var helpers = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); + // Find first (starting) corner with fallback to 'bottom' + var borders = ['bottom', 'left', 'top', 'right']; + var startCorner = borders.indexOf(borderSkipped, 0); + if (startCorner === -1) { + startCorner = 0; + } -/** - * Easing functions adapted from Robert Penner's easing equations. - * @namespace Chart.helpers.easingEffects - * @see http://www.robertpenner.com/easing/ - */ -var effects = { - linear: function(t) { - return t; - }, + function cornerAt(index) { + return corners[(startCorner + index) % 4]; + } - easeInQuad: function(t) { - return t * t; - }, + // Draw rectangle from 'startCorner' + var corner = cornerAt(0); + ctx.moveTo(corner[0], corner[1]); - easeOutQuad: function(t) { - return -t * (t - 2); - }, + for (var i = 1; i < 4; i++) { + corner = cornerAt(i); + ctx.lineTo(corner[0], corner[1]); + } - easeInOutQuad: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t; + ctx.fill(); + if (borderWidth) { + ctx.stroke(); } - return -0.5 * ((--t) * (t - 2) - 1); }, - easeInCubic: function(t) { - return t * t * t; + height: function() { + var vm = this._view; + return vm.base - vm.y; }, - easeOutCubic: function(t) { - return (t = t - 1) * t * t + 1; - }, + inRange: function(mouseX, mouseY) { + var inRange = false; - easeInOutCubic: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t; + if (this._view) { + var bounds = getBarBounds(this); + inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; } - return 0.5 * ((t -= 2) * t * t + 2); - }, - easeInQuart: function(t) { - return t * t * t * t; + return inRange; }, - easeOutQuart: function(t) { - return -((t = t - 1) * t * t * t - 1); - }, + inLabelRange: function(mouseX, mouseY) { + var me = this; + if (!me._view) { + return false; + } - easeInOutQuart: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t; + var inRange = false; + var bounds = getBarBounds(me); + + if (isVertical(me)) { + inRange = mouseX >= bounds.left && mouseX <= bounds.right; + } else { + inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; } - return -0.5 * ((t -= 2) * t * t * t - 2); + + return inRange; }, - easeInQuint: function(t) { - return t * t * t * t * t; + inXRange: function(mouseX) { + var bounds = getBarBounds(this); + return mouseX >= bounds.left && mouseX <= bounds.right; }, - easeOutQuint: function(t) { - return (t = t - 1) * t * t * t * t + 1; + inYRange: function(mouseY) { + var bounds = getBarBounds(this); + return mouseY >= bounds.top && mouseY <= bounds.bottom; }, - easeInOutQuint: function(t) { - if ((t /= 0.5) < 1) { - return 0.5 * t * t * t * t * t; + getCenterPoint: function() { + var vm = this._view; + var x, y; + if (isVertical(this)) { + x = vm.x; + y = (vm.y + vm.base) / 2; + } else { + x = (vm.x + vm.base) / 2; + y = vm.y; } - return 0.5 * ((t -= 2) * t * t * t * t + 2); - }, - easeInSine: function(t) { - return -Math.cos(t * (Math.PI / 2)) + 1; + return {x: x, y: y}; }, - easeOutSine: function(t) { - return Math.sin(t * (Math.PI / 2)); + getArea: function() { + var vm = this._view; + return vm.width * Math.abs(vm.y - vm.base); }, - easeInOutSine: function(t) { - return -0.5 * (Math.cos(Math.PI * t) - 1); - }, + tooltipPosition: function() { + var vm = this._view; + return { + x: vm.x, + y: vm.y + }; + } +}); - easeInExpo: function(t) { - return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); - }, - easeOutExpo: function(t) { - return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; - }, +/***/ }), - easeInOutExpo: function(t) { - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if ((t /= 0.5) < 1) { - return 0.5 * Math.pow(2, 10 * (t - 1)); - } - return 0.5 * (-Math.pow(2, -10 * --t) + 2); - }, +/***/ "./node_modules/chart.js/src/elements/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/chart.js/src/elements/index.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - easeInCirc: function(t) { - if (t >= 1) { - return t; - } - return -(Math.sqrt(1 - t * t) - 1); - }, +"use strict"; - easeOutCirc: function(t) { - return Math.sqrt(1 - (t = t - 1) * t); - }, - easeInOutCirc: function(t) { - if ((t /= 0.5) < 1) { - return -0.5 * (Math.sqrt(1 - t * t) - 1); - } - return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); - }, +module.exports = {}; +module.exports.Arc = __webpack_require__(/*! ./element.arc */ "./node_modules/chart.js/src/elements/element.arc.js"); +module.exports.Line = __webpack_require__(/*! ./element.line */ "./node_modules/chart.js/src/elements/element.line.js"); +module.exports.Point = __webpack_require__(/*! ./element.point */ "./node_modules/chart.js/src/elements/element.point.js"); +module.exports.Rectangle = __webpack_require__(/*! ./element.rectangle */ "./node_modules/chart.js/src/elements/element.rectangle.js"); - easeInElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); - }, - easeOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if (t === 1) { - return 1; - } - if (!p) { - p = 0.3; - } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); - } - return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; - }, +/***/ }), - easeInOutElastic: function(t) { - var s = 1.70158; - var p = 0; - var a = 1; - if (t === 0) { - return 0; - } - if ((t /= 0.5) === 2) { - return 1; +/***/ "./node_modules/chart.js/src/helpers/helpers.canvas.js": +/*!*************************************************************!*\ + !*** ./node_modules/chart.js/src/helpers/helpers.canvas.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var helpers = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); + +/** + * @namespace Chart.helpers.canvas + */ +var exports = module.exports = { + /** + * Clears the entire canvas associated to the given `chart`. + * @param {Chart} chart - The chart for which to clear the canvas. + */ + clear: function(chart) { + chart.ctx.clearRect(0, 0, chart.width, chart.height); + }, + + /** + * Creates a "path" for a rectangle with rounded corners at position (x, y) with a + * given size (width, height) and the same `radius` for all corners. + * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. + * @param {Number} x - The x axis of the coordinate for the rectangle starting point. + * @param {Number} y - The y axis of the coordinate for the rectangle starting point. + * @param {Number} width - The rectangle's width. + * @param {Number} height - The rectangle's height. + * @param {Number} radius - The rounded amount (in pixels) for the four corners. + * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? + */ + roundedRect: function(ctx, x, y, width, height, radius) { + if (radius) { + // NOTE(SB) `epsilon` helps to prevent minor artifacts appearing + // on Chrome when `r` is exactly half the height or the width. + var epsilon = 0.0000001; + var r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon); + + ctx.moveTo(x + r, y); + ctx.lineTo(x + width - r, y); + ctx.arcTo(x + width, y, x + width, y + r, r); + ctx.lineTo(x + width, y + height - r); + ctx.arcTo(x + width, y + height, x + width - r, y + height, r); + ctx.lineTo(x + r, y + height); + ctx.arcTo(x, y + height, x, y + height - r, r); + ctx.lineTo(x, y + r); + ctx.arcTo(x, y, x + r, y, r); + ctx.closePath(); + ctx.moveTo(x, y); + } else { + ctx.rect(x, y, width, height); } - if (!p) { - p = 0.45; + }, + + drawPoint: function(ctx, style, radius, x, y, rotation) { + var type, edgeLength, xOffset, yOffset, height, size; + rotation = rotation || 0; + + if (style && typeof style === 'object') { + type = style.toString(); + if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { + ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); + return; + } } - if (a < 1) { - a = 1; - s = p / 4; - } else { - s = p / (2 * Math.PI) * Math.asin(1 / a); + + if (isNaN(radius) || radius <= 0) { + return; } - if (t < 1) { - return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + + ctx.save(); + ctx.translate(x, y); + ctx.rotate(rotation * Math.PI / 180); + ctx.beginPath(); + + switch (style) { + // Default includes circle + default: + ctx.arc(0, 0, radius, 0, Math.PI * 2); + ctx.closePath(); + break; + case 'triangle': + edgeLength = 3 * radius / Math.sqrt(3); + height = edgeLength * Math.sqrt(3) / 2; + ctx.moveTo(-edgeLength / 2, height / 3); + ctx.lineTo(edgeLength / 2, height / 3); + ctx.lineTo(0, -2 * height / 3); + ctx.closePath(); + break; + case 'rect': + size = 1 / Math.SQRT2 * radius; + ctx.rect(-size, -size, 2 * size, 2 * size); + break; + case 'rectRounded': + var offset = radius / Math.SQRT2; + var leftX = -offset; + var topY = -offset; + var sideSize = Math.SQRT2 * radius; + + // NOTE(SB) the rounded rect implementation changed to use `arcTo` + // instead of `quadraticCurveTo` since it generates better results + // when rect is almost a circle. 0.425 (instead of 0.5) produces + // results visually closer to the previous impl. + this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425); + break; + case 'rectRot': + size = 1 / Math.SQRT2 * radius; + ctx.moveTo(-size, 0); + ctx.lineTo(0, size); + ctx.lineTo(size, 0); + ctx.lineTo(0, -size); + ctx.closePath(); + break; + case 'cross': + ctx.moveTo(0, radius); + ctx.lineTo(0, -radius); + ctx.moveTo(-radius, 0); + ctx.lineTo(radius, 0); + break; + case 'crossRot': + xOffset = Math.cos(Math.PI / 4) * radius; + yOffset = Math.sin(Math.PI / 4) * radius; + ctx.moveTo(-xOffset, -yOffset); + ctx.lineTo(xOffset, yOffset); + ctx.moveTo(-xOffset, yOffset); + ctx.lineTo(xOffset, -yOffset); + break; + case 'star': + ctx.moveTo(0, radius); + ctx.lineTo(0, -radius); + ctx.moveTo(-radius, 0); + ctx.lineTo(radius, 0); + xOffset = Math.cos(Math.PI / 4) * radius; + yOffset = Math.sin(Math.PI / 4) * radius; + ctx.moveTo(-xOffset, -yOffset); + ctx.lineTo(xOffset, yOffset); + ctx.moveTo(-xOffset, yOffset); + ctx.lineTo(xOffset, -yOffset); + break; + case 'line': + ctx.moveTo(-radius, 0); + ctx.lineTo(radius, 0); + break; + case 'dash': + ctx.moveTo(0, 0); + ctx.lineTo(radius, 0); + break; } - return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; - }, - easeInBack: function(t) { - var s = 1.70158; - return t * t * ((s + 1) * t - s); - }, - easeOutBack: function(t) { - var s = 1.70158; - return (t = t - 1) * t * ((s + 1) * t + s) + 1; + ctx.fill(); + ctx.stroke(); + ctx.restore(); }, - easeInOutBack: function(t) { - var s = 1.70158; - if ((t /= 0.5) < 1) { - return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); - } - return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + clipArea: function(ctx, area) { + ctx.save(); + ctx.beginPath(); + ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); + ctx.clip(); }, - easeInBounce: function(t) { - return 1 - effects.easeOutBounce(1 - t); + unclipArea: function(ctx) { + ctx.restore(); }, - easeOutBounce: function(t) { - if (t < (1 / 2.75)) { - return 7.5625 * t * t; - } - if (t < (2 / 2.75)) { - return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; - } - if (t < (2.5 / 2.75)) { - return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + lineTo: function(ctx, previous, target, flip) { + if (target.steppedLine) { + if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { + ctx.lineTo(previous.x, target.y); + } else { + ctx.lineTo(target.x, previous.y); + } + ctx.lineTo(target.x, target.y); + return; } - return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; - }, - easeInOutBounce: function(t) { - if (t < 0.5) { - return effects.easeInBounce(t * 2) * 0.5; + if (!target.tension) { + ctx.lineTo(target.x, target.y); + return; } - return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; - } -}; -module.exports = { - effects: effects + ctx.bezierCurveTo( + flip ? previous.controlPointPreviousX : previous.controlPointNextX, + flip ? previous.controlPointPreviousY : previous.controlPointNextY, + flip ? target.controlPointNextX : target.controlPointPreviousX, + flip ? target.controlPointNextY : target.controlPointPreviousY, + target.x, + target.y); + } }; // DEPRECATIONS /** - * Provided for backward compatibility, use Chart.helpers.easing.effects instead. - * @function Chart.helpers.easingEffects + * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. + * @namespace Chart.helpers.clear * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ -helpers.easingEffects = effects; +helpers.clear = exports.clear; + +/** + * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. + * @namespace Chart.helpers.drawRoundedRectangle + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.drawRoundedRectangle = function(ctx) { + ctx.beginPath(); + exports.roundedRect.apply(exports, arguments); +}; /***/ }), -/***/ "./node_modules/chart.js/src/helpers/helpers.options.js": -/*!**************************************************************!*\ - !*** ./node_modules/chart.js/src/helpers/helpers.options.js ***! - \**************************************************************/ +/***/ "./node_modules/chart.js/src/helpers/helpers.core.js": +/*!***********************************************************!*\ + !*** ./node_modules/chart.js/src/helpers/helpers.core.js ***! + \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var helpers = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); - /** - * @alias Chart.helpers.options - * @namespace + * @namespace Chart.helpers */ -module.exports = { +var helpers = { /** - * Converts the given line height `value` in pixels for a specific font `size`. - * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). - * @param {Number} size - The font size (in pixels) used to resolve relative `value`. - * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height - * @since 2.7.0 + * An empty function that can be used, for example, for optional callback. */ - toLineHeight: function(value, size) { - var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); - if (!matches || matches[1] === 'normal') { - return size * 1.2; - } + noop: function() {}, - value = +matches[2]; + /** + * Returns a unique id, sequentially generated from a global variable. + * @returns {Number} + * @function + */ + uid: (function() { + var id = 0; + return function() { + return id++; + }; + }()), - switch (matches[3]) { - case 'px': - return value; - case '%': - value /= 100; - break; - default: - break; - } + /** + * Returns true if `value` is neither null nor undefined, else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @since 2.7.0 + */ + isNullOrUndef: function(value) { + return value === null || typeof value === 'undefined'; + }, - return size * value; + /** + * Returns true if `value` is an array, else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} + * @function + */ + isArray: Array.isArray ? Array.isArray : function(value) { + return Object.prototype.toString.call(value) === '[object Array]'; }, /** - * Converts the given value into a padding object with pre-computed width/height. - * @param {Number|Object} value - If a number, set the value to all TRBL component, - * else, if and object, use defined properties and sets undefined ones to 0. - * @returns {Object} The padding values (top, right, bottom, left, width, height) + * Returns true if `value` is an object (excluding null), else returns false. + * @param {*} value - The value to test. + * @returns {Boolean} * @since 2.7.0 */ - toPadding: function(value) { - var t, r, b, l; + isObject: function(value) { + return value !== null && Object.prototype.toString.call(value) === '[object Object]'; + }, - if (helpers.isObject(value)) { - t = +value.top || 0; - r = +value.right || 0; - b = +value.bottom || 0; - l = +value.left || 0; - } else { - t = r = b = l = +value || 0; - } + /** + * Returns `value` if defined, else returns `defaultValue`. + * @param {*} value - The value to return if defined. + * @param {*} defaultValue - The value to return if `value` is undefined. + * @returns {*} + */ + valueOrDefault: function(value, defaultValue) { + return typeof value === 'undefined' ? defaultValue : value; + }, - return { - top: t, - right: r, - bottom: b, - left: l, - height: t + b, - width: l + r - }; + /** + * Returns value at the given `index` in array if defined, else returns `defaultValue`. + * @param {Array} value - The array to lookup for value at `index`. + * @param {Number} index - The index in `value` to lookup for value. + * @param {*} defaultValue - The value to return if `value[index]` is undefined. + * @returns {*} + */ + valueAtIndexOrDefault: function(value, index, defaultValue) { + return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); }, /** - * Evaluates the given `inputs` sequentially and returns the first defined value. - * @param {Array[]} inputs - An array of values, falling back to the last value. - * @param {Object} [context] - If defined and the current value is a function, the value - * is called with `context` as first argument and the result becomes the new input. - * @param {Number} [index] - If defined and the current value is an array, the value - * at `index` become the new input. - * @since 2.7.0 + * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the + * value returned by `fn`. If `fn` is not a function, this method returns undefined. + * @param {Function} fn - The function to call. + * @param {Array|undefined|null} args - The arguments with which `fn` should be called. + * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. + * @returns {*} */ - resolve: function(inputs, context, index) { - var i, ilen, value; + callback: function(fn, args, thisArg) { + if (fn && typeof fn.call === 'function') { + return fn.apply(thisArg, args); + } + }, - for (i = 0, ilen = inputs.length; i < ilen; ++i) { - value = inputs[i]; - if (value === undefined) { - continue; - } - if (context !== undefined && typeof value === 'function') { - value = value(context); - } - if (index !== undefined && helpers.isArray(value)) { - value = value[index]; + /** + * Note(SB) for performance sake, this method should only be used when loopable type + * is unknown or in none intensive code (not called often and small loopable). Else + * it's preferable to use a regular for() loop and save extra function calls. + * @param {Object|Array} loopable - The object or array to be iterated. + * @param {Function} fn - The function to call for each item. + * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. + * @param {Boolean} [reverse] - If true, iterates backward on the loopable. + */ + each: function(loopable, fn, thisArg, reverse) { + var i, len, keys; + if (helpers.isArray(loopable)) { + len = loopable.length; + if (reverse) { + for (i = len - 1; i >= 0; i--) { + fn.call(thisArg, loopable[i], i); + } + } else { + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[i], i); + } } - if (value !== undefined) { - return value; + } else if (helpers.isObject(loopable)) { + keys = Object.keys(loopable); + len = keys.length; + for (i = 0; i < len; i++) { + fn.call(thisArg, loopable[keys[i]], keys[i]); } } - } -}; - - -/***/ }), + }, -/***/ "./node_modules/chart.js/src/helpers/index.js": -/*!****************************************************!*\ - !*** ./node_modules/chart.js/src/helpers/index.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /** + * Returns true if the `a0` and `a1` arrays have the same content, else returns false. + * @see http://stackoverflow.com/a/14853974 + * @param {Array} a0 - The array to compare + * @param {Array} a1 - The array to compare + * @returns {Boolean} + */ + arrayEquals: function(a0, a1) { + var i, ilen, v0, v1; -"use strict"; + if (!a0 || !a1 || a0.length !== a1.length) { + return false; + } + for (i = 0, ilen = a0.length; i < ilen; ++i) { + v0 = a0[i]; + v1 = a1[i]; -module.exports = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); -module.exports.easing = __webpack_require__(/*! ./helpers.easing */ "./node_modules/chart.js/src/helpers/helpers.easing.js"); -module.exports.canvas = __webpack_require__(/*! ./helpers.canvas */ "./node_modules/chart.js/src/helpers/helpers.canvas.js"); -module.exports.options = __webpack_require__(/*! ./helpers.options */ "./node_modules/chart.js/src/helpers/helpers.options.js"); + if (v0 instanceof Array && v1 instanceof Array) { + if (!helpers.arrayEquals(v0, v1)) { + return false; + } + } else if (v0 !== v1) { + // NOTE: two different object instances will never be equal: {x:20} != {x:20} + return false; + } + } + return true; + }, -/***/ }), + /** + * Returns a deep copy of `source` without keeping references on objects and arrays. + * @param {*} source - The value to clone. + * @returns {*} + */ + clone: function(source) { + if (helpers.isArray(source)) { + return source.map(helpers.clone); + } -/***/ "./node_modules/chart.js/src/platforms/platform.basic.js": -/*!***************************************************************!*\ - !*** ./node_modules/chart.js/src/platforms/platform.basic.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + if (helpers.isObject(source)) { + var target = {}; + var keys = Object.keys(source); + var klen = keys.length; + var k = 0; -/** - * Platform fallback implementation (minimal). - * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 - */ + for (; k < klen; ++k) { + target[keys[k]] = helpers.clone(source[keys[k]]); + } -module.exports = { - acquireContext: function(item) { - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; + return target; } - return item && item.getContext('2d') || null; - } -}; + return source; + }, + /** + * The default merger when Chart.helpers.merge is called without merger option. + * Note(SB): this method is also used by configMerge and scaleMerge as fallback. + * @private + */ + _merger: function(key, target, source, options) { + var tval = target[key]; + var sval = source[key]; -/***/ }), + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.merge(tval, sval, options); + } else { + target[key] = helpers.clone(sval); + } + }, -/***/ "./node_modules/chart.js/src/platforms/platform.dom.js": -/*!*************************************************************!*\ - !*** ./node_modules/chart.js/src/platforms/platform.dom.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Chart.Platform implementation for targeting a web browser - */ + /** + * Merges source[key] in target[key] only if target[key] is undefined. + * @private + */ + _mergerIf: function(key, target, source) { + var tval = target[key]; + var sval = source[key]; + if (helpers.isObject(tval) && helpers.isObject(sval)) { + helpers.mergeIf(tval, sval); + } else if (!target.hasOwnProperty(key)) { + target[key] = helpers.clone(sval); + } + }, + /** + * Recursively deep copies `source` properties into `target` with the given `options`. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {Object} target - The target object in which all sources are merged into. + * @param {Object|Array(Object)} source - Object(s) to merge into `target`. + * @param {Object} [options] - Merging options: + * @param {Function} [options.merger] - The merge method (key, target, source, options) + * @returns {Object} The `target` object. + */ + merge: function(target, source, options) { + var sources = helpers.isArray(source) ? source : [source]; + var ilen = sources.length; + var merge, i, keys, klen, k; -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + if (!helpers.isObject(target)) { + return target; + } -var EXPANDO_KEY = '$chartjs'; -var CSS_PREFIX = 'chartjs-'; -var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; -var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; -var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; + options = options || {}; + merge = options.merger || helpers._merger; -/** - * DOM event types -> Chart.js event types. - * Note: only events with different types are mapped. - * @see https://developer.mozilla.org/en-US/docs/Web/Events - */ -var EVENT_TYPES = { - touchstart: 'mousedown', - touchmove: 'mousemove', - touchend: 'mouseup', - pointerenter: 'mouseenter', - pointerdown: 'mousedown', - pointermove: 'mousemove', - pointerup: 'mouseup', - pointerleave: 'mouseout', - pointerout: 'mouseout' -}; + for (i = 0; i < ilen; ++i) { + source = sources[i]; + if (!helpers.isObject(source)) { + continue; + } -/** - * The "used" size is the final value of a dimension property after all calculations have - * been performed. This method uses the computed style of `element` but returns undefined - * if the computed style is not expressed in pixels. That can happen in some cases where - * `element` has a size relative to its parent and this last one is not yet displayed, - * for example because of `display: none` on a parent node. - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value - * @returns {Number} Size in pixels or undefined if unknown. - */ -function readUsedSize(element, property) { - var value = helpers.getStyle(element, property); - var matches = value && value.match(/^(\d+)(\.\d+)?px$/); - return matches ? Number(matches[1]) : undefined; -} + keys = Object.keys(source); + for (k = 0, klen = keys.length; k < klen; ++k) { + merge(keys[k], target, source, options); + } + } -/** - * Initializes the canvas style and render size without modifying the canvas display size, - * since responsiveness is handled by the controller.resize() method. The config is used - * to determine the aspect ratio to apply in case no explicit height has been specified. - */ -function initCanvas(canvas, config) { - var style = canvas.style; + return target; + }, - // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it - // returns null or '' if no explicit value has been set to the canvas attribute. - var renderHeight = canvas.getAttribute('height'); - var renderWidth = canvas.getAttribute('width'); + /** + * Recursively deep copies `source` properties into `target` *only* if not defined in target. + * IMPORTANT: `target` is not cloned and will be updated with `source` properties. + * @param {Object} target - The target object in which all sources are merged into. + * @param {Object|Array(Object)} source - Object(s) to merge into `target`. + * @returns {Object} The `target` object. + */ + mergeIf: function(target, source) { + return helpers.merge(target, source, {merger: helpers._mergerIf}); + }, - // Chart.js modifies some canvas values that we want to restore on destroy - canvas[EXPANDO_KEY] = { - initial: { - height: renderHeight, - width: renderWidth, - style: { - display: style.display, - height: style.height, - width: style.width - } + /** + * Applies the contents of two or more objects together into the first object. + * @param {Object} target - The target object in which all objects are merged into. + * @param {Object} arg1 - Object containing additional properties to merge in target. + * @param {Object} argN - Additional objects containing properties to merge in target. + * @returns {Object} The `target` object. + */ + extend: function(target) { + var setFn = function(value, key) { + target[key] = value; + }; + for (var i = 1, ilen = arguments.length; i < ilen; ++i) { + helpers.each(arguments[i], setFn); } - }; + return target; + }, - // Force canvas to display as block to avoid extra space caused by inline - // elements, which would interfere with the responsive resize process. - // https://github.com/chartjs/Chart.js/issues/2538 - style.display = style.display || 'block'; + /** + * Basic javascript inheritance based on the model created in Backbone.js + */ + inherits: function(extensions) { + var me = this; + var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { + return me.apply(this, arguments); + }; - if (renderWidth === null || renderWidth === '') { - var displayWidth = readUsedSize(canvas, 'width'); - if (displayWidth !== undefined) { - canvas.width = displayWidth; - } - } + var Surrogate = function() { + this.constructor = ChartElement; + }; - if (renderHeight === null || renderHeight === '') { - if (canvas.style.height === '') { - // If no explicit render height and style height, let's apply the aspect ratio, - // which one can be specified by the user but also by charts as default option - // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. - canvas.height = canvas.width / (config.options.aspectRatio || 2); - } else { - var displayHeight = readUsedSize(canvas, 'height'); - if (displayWidth !== undefined) { - canvas.height = displayHeight; - } + Surrogate.prototype = me.prototype; + ChartElement.prototype = new Surrogate(); + ChartElement.extend = helpers.inherits; + + if (extensions) { + helpers.extend(ChartElement.prototype, extensions); } + + ChartElement.__super__ = me.prototype; + return ChartElement; } +}; - return canvas; -} +module.exports = helpers; + +// DEPRECATIONS /** - * Detects support for options object argument in addEventListener. - * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * Provided for backward compatibility, use Chart.helpers.callback instead. + * @function Chart.helpers.callCallback + * @deprecated since version 2.6.0 + * @todo remove at version 3 * @private */ -var supportsEventListenerOptions = (function() { - var supports = false; - try { - var options = Object.defineProperty({}, 'passive', { - get: function() { - supports = true; - } - }); - window.addEventListener('e', null, options); - } catch (e) { - // continue regardless of error - } - return supports; -}()); - -// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. -// https://github.com/chartjs/Chart.js/issues/4287 -var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; - -function addEventListener(node, type, listener) { - node.addEventListener(type, listener, eventListenerOptions); -} +helpers.callCallback = helpers.callback; -function removeEventListener(node, type, listener) { - node.removeEventListener(type, listener, eventListenerOptions); -} +/** + * Provided for backward compatibility, use Array.prototype.indexOf instead. + * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ + * @function Chart.helpers.indexOf + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.indexOf = function(array, item, fromIndex) { + return Array.prototype.indexOf.call(array, item, fromIndex); +}; -function createEvent(type, chart, x, y, nativeEvent) { - return { - type: type, - chart: chart, - native: nativeEvent || null, - x: x !== undefined ? x : null, - y: y !== undefined ? y : null, - }; -} +/** + * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. + * @function Chart.helpers.getValueOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueOrDefault = helpers.valueOrDefault; -function fromNativeEvent(event, chart) { - var type = EVENT_TYPES[event.type] || event.type; - var pos = helpers.getRelativePosition(event, chart); - return createEvent(type, chart, pos.x, pos.y, event); -} +/** + * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. + * @function Chart.helpers.getValueAtIndexOrDefault + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; -function throttled(fn, thisArg) { - var ticking = false; - var args = []; - return function() { - args = Array.prototype.slice.call(arguments); - thisArg = thisArg || this; +/***/ }), - if (!ticking) { - ticking = true; - helpers.requestAnimFrame.call(window, function() { - ticking = false; - fn.apply(thisArg, args); - }); - } - }; -} +/***/ "./node_modules/chart.js/src/helpers/helpers.easing.js": +/*!*************************************************************!*\ + !*** ./node_modules/chart.js/src/helpers/helpers.easing.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { -// Implementation based on https://github.com/marcj/css-element-queries -function createResizer(handler) { - var resizer = document.createElement('div'); - var cls = CSS_PREFIX + 'size-monitor'; - var maxSize = 1000000; - var style = - 'position:absolute;' + - 'left:0;' + - 'top:0;' + - 'right:0;' + - 'bottom:0;' + - 'overflow:hidden;' + - 'pointer-events:none;' + - 'visibility:hidden;' + - 'z-index:-1;'; +"use strict"; - resizer.style.cssText = style; - resizer.className = cls; - resizer.innerHTML = - '<div class="' + cls + '-expand" style="' + style + '">' + - '<div style="' + - 'position:absolute;' + - 'width:' + maxSize + 'px;' + - 'height:' + maxSize + 'px;' + - 'left:0;' + - 'top:0">' + - '</div>' + - '</div>' + - '<div class="' + cls + '-shrink" style="' + style + '">' + - '<div style="' + - 'position:absolute;' + - 'width:200%;' + - 'height:200%;' + - 'left:0; ' + - 'top:0">' + - '</div>' + - '</div>'; - var expand = resizer.childNodes[0]; - var shrink = resizer.childNodes[1]; +var helpers = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); - resizer._reset = function() { - expand.scrollLeft = maxSize; - expand.scrollTop = maxSize; - shrink.scrollLeft = maxSize; - shrink.scrollTop = maxSize; - }; - var onScroll = function() { - resizer._reset(); - handler(); - }; +/** + * Easing functions adapted from Robert Penner's easing equations. + * @namespace Chart.helpers.easingEffects + * @see http://www.robertpenner.com/easing/ + */ +var effects = { + linear: function(t) { + return t; + }, - addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); - addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); + easeInQuad: function(t) { + return t * t; + }, - return resizer; -} + easeOutQuad: function(t) { + return -t * (t - 2); + }, -// https://davidwalsh.name/detect-node-insertion -function watchForRender(node, handler) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - var proxy = expando.renderProxy = function(e) { - if (e.animationName === CSS_RENDER_ANIMATION) { - handler(); + easeInOutQuad: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t; } - }; + return -0.5 * ((--t) * (t - 2) - 1); + }, - helpers.each(ANIMATION_START_EVENTS, function(type) { - addEventListener(node, type, proxy); - }); + easeInCubic: function(t) { + return t * t * t; + }, - // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class - // is removed then added back immediately (same animation frame?). Accessing the - // `offsetParent` property will force a reflow and re-evaluate the CSS animation. - // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics - // https://github.com/chartjs/Chart.js/issues/4737 - expando.reflow = !!node.offsetParent; + easeOutCubic: function(t) { + return (t = t - 1) * t * t + 1; + }, - node.classList.add(CSS_RENDER_MONITOR); -} + easeInOutCubic: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t; + } + return 0.5 * ((t -= 2) * t * t + 2); + }, -function unwatchForRender(node) { - var expando = node[EXPANDO_KEY] || {}; - var proxy = expando.renderProxy; + easeInQuart: function(t) { + return t * t * t * t; + }, - if (proxy) { - helpers.each(ANIMATION_START_EVENTS, function(type) { - removeEventListener(node, type, proxy); - }); + easeOutQuart: function(t) { + return -((t = t - 1) * t * t * t - 1); + }, - delete expando.renderProxy; - } + easeInOutQuart: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t; + } + return -0.5 * ((t -= 2) * t * t * t - 2); + }, - node.classList.remove(CSS_RENDER_MONITOR); -} + easeInQuint: function(t) { + return t * t * t * t * t; + }, -function addResizeListener(node, listener, chart) { - var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + easeOutQuint: function(t) { + return (t = t - 1) * t * t * t * t + 1; + }, - // Let's keep track of this added resizer and thus avoid DOM query when removing it. - var resizer = expando.resizer = createResizer(throttled(function() { - if (expando.resizer) { - return listener(createEvent('resize', chart)); + easeInOutQuint: function(t) { + if ((t /= 0.5) < 1) { + return 0.5 * t * t * t * t * t; } - })); + return 0.5 * ((t -= 2) * t * t * t * t + 2); + }, - // The resizer needs to be attached to the node parent, so we first need to be - // sure that `node` is attached to the DOM before injecting the resizer element. - watchForRender(node, function() { - if (expando.resizer) { - var container = node.parentNode; - if (container && container !== resizer.parentNode) { - container.insertBefore(resizer, container.firstChild); - } + easeInSine: function(t) { + return -Math.cos(t * (Math.PI / 2)) + 1; + }, - // The container size might have changed, let's reset the resizer state. - resizer._reset(); - } - }); -} + easeOutSine: function(t) { + return Math.sin(t * (Math.PI / 2)); + }, -function removeResizeListener(node) { - var expando = node[EXPANDO_KEY] || {}; - var resizer = expando.resizer; + easeInOutSine: function(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1); + }, - delete expando.resizer; - unwatchForRender(node); + easeInExpo: function(t) { + return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); + }, - if (resizer && resizer.parentNode) { - resizer.parentNode.removeChild(resizer); - } -} + easeOutExpo: function(t) { + return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; + }, -function injectCSS(platform, css) { - // http://stackoverflow.com/q/3922139 - var style = platform._style || document.createElement('style'); - if (!platform._style) { - platform._style = style; - css = '/* Chart.js */\n' + css; - style.setAttribute('type', 'text/css'); - document.getElementsByTagName('head')[0].appendChild(style); - } + easeInOutExpo: function(t) { + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if ((t /= 0.5) < 1) { + return 0.5 * Math.pow(2, 10 * (t - 1)); + } + return 0.5 * (-Math.pow(2, -10 * --t) + 2); + }, - style.appendChild(document.createTextNode(css)); -} + easeInCirc: function(t) { + if (t >= 1) { + return t; + } + return -(Math.sqrt(1 - t * t) - 1); + }, -module.exports = { - /** - * This property holds whether this platform is enabled for the current environment. - * Currently used by platform.js to select the proper implementation. - * @private - */ - _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', + easeOutCirc: function(t) { + return Math.sqrt(1 - (t = t - 1) * t); + }, - initialize: function() { - var keyframes = 'from{opacity:0.99}to{opacity:1}'; + easeInOutCirc: function(t) { + if ((t /= 0.5) < 1) { + return -0.5 * (Math.sqrt(1 - t * t) - 1); + } + return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }, - injectCSS(this, - // DOM rendering detection - // https://davidwalsh.name/detect-node-insertion - '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + - '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + - '.' + CSS_RENDER_MONITOR + '{' + - '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + - 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + - '}' - ); + easeInElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; + } + if (t === 1) { + return 1; + } + if (!p) { + p = 0.3; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); }, - acquireContext: function(item, config) { - if (typeof item === 'string') { - item = document.getElementById(item); - } else if (item.length) { - // Support for array based queries (such as jQuery) - item = item[0]; + easeOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; } - - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; + if (t === 1) { + return 1; } - - // To prevent canvas fingerprinting, some add-ons undefine the getContext - // method, for example: https://github.com/kkapsner/CanvasBlocker - // https://github.com/chartjs/Chart.js/issues/2807 - var context = item && item.getContext && item.getContext('2d'); - - // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is - // inside an iframe or when running in a protected environment. We could guess the - // types from their toString() value but let's keep things flexible and assume it's - // a sufficient condition if the item has a context2D which has item as `canvas`. - // https://github.com/chartjs/Chart.js/issues/3887 - // https://github.com/chartjs/Chart.js/issues/4102 - // https://github.com/chartjs/Chart.js/issues/4152 - if (context && context.canvas === item) { - initCanvas(item, config); - return context; + if (!p) { + p = 0.3; } - - return null; + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; }, - releaseContext: function(context) { - var canvas = context.canvas; - if (!canvas[EXPANDO_KEY]) { - return; + easeInOutElastic: function(t) { + var s = 1.70158; + var p = 0; + var a = 1; + if (t === 0) { + return 0; } + if ((t /= 0.5) === 2) { + return 1; + } + if (!p) { + p = 0.45; + } + if (a < 1) { + a = 1; + s = p / 4; + } else { + s = p / (2 * Math.PI) * Math.asin(1 / a); + } + if (t < 1) { + return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; + }, + easeInBack: function(t) { + var s = 1.70158; + return t * t * ((s + 1) * t - s); + }, - var initial = canvas[EXPANDO_KEY].initial; - ['height', 'width'].forEach(function(prop) { - var value = initial[prop]; - if (helpers.isNullOrUndef(value)) { - canvas.removeAttribute(prop); - } else { - canvas.setAttribute(prop, value); - } - }); - - helpers.each(initial.style || {}, function(value, key) { - canvas.style[key] = value; - }); - - // The canvas render size might have been changed (and thus the state stack discarded), - // we can't use save() and restore() to restore the initial state. So make sure that at - // least the canvas context is reset to the default state by setting the canvas width. - // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html - canvas.width = canvas.width; - - delete canvas[EXPANDO_KEY]; + easeOutBack: function(t) { + var s = 1.70158; + return (t = t - 1) * t * ((s + 1) * t + s) + 1; }, - addEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - addResizeListener(canvas, listener, chart); - return; + easeInOutBack: function(t) { + var s = 1.70158; + if ((t /= 0.5) < 1) { + return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); } + return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); + }, - var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); - var proxies = expando.proxies || (expando.proxies = {}); - var proxy = proxies[chart.id + '_' + type] = function(event) { - listener(fromNativeEvent(event, chart)); - }; - - addEventListener(canvas, type, proxy); + easeInBounce: function(t) { + return 1 - effects.easeOutBounce(1 - t); }, - removeEventListener: function(chart, type, listener) { - var canvas = chart.canvas; - if (type === 'resize') { - // Note: the resize event is not supported on all browsers. - removeResizeListener(canvas, listener); - return; + easeOutBounce: function(t) { + if (t < (1 / 2.75)) { + return 7.5625 * t * t; } - - var expando = listener[EXPANDO_KEY] || {}; - var proxies = expando.proxies || {}; - var proxy = proxies[chart.id + '_' + type]; - if (!proxy) { - return; + if (t < (2 / 2.75)) { + return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; } + if (t < (2.5 / 2.75)) { + return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; + } + return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; + }, - removeEventListener(canvas, type, proxy); + easeInOutBounce: function(t) { + if (t < 0.5) { + return effects.easeInBounce(t * 2) * 0.5; + } + return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; } }; -// DEPRECATIONS +module.exports = { + effects: effects +}; -/** - * Provided for backward compatibility, use EventTarget.addEventListener instead. - * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener - * @function Chart.helpers.addEvent - * @deprecated since version 2.7.0 - * @todo remove at version 3 - * @private - */ -helpers.addEvent = addEventListener; +// DEPRECATIONS /** - * Provided for backward compatibility, use EventTarget.removeEventListener instead. - * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ - * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener - * @function Chart.helpers.removeEvent + * Provided for backward compatibility, use Chart.helpers.easing.effects instead. + * @function Chart.helpers.easingEffects * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ -helpers.removeEvent = removeEventListener; +helpers.easingEffects = effects; /***/ }), -/***/ "./node_modules/chart.js/src/platforms/platform.js": -/*!*********************************************************!*\ - !*** ./node_modules/chart.js/src/platforms/platform.js ***! - \*********************************************************/ +/***/ "./node_modules/chart.js/src/helpers/helpers.options.js": +/*!**************************************************************!*\ + !*** ./node_modules/chart.js/src/helpers/helpers.options.js ***! + \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -var basic = __webpack_require__(/*! ./platform.basic */ "./node_modules/chart.js/src/platforms/platform.basic.js"); -var dom = __webpack_require__(/*! ./platform.dom */ "./node_modules/chart.js/src/platforms/platform.dom.js"); - -// @TODO Make possible to select another platform at build time. -var implementation = dom._enabled ? dom : basic; +var helpers = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); /** - * @namespace Chart.platform - * @see https://chartjs.gitbooks.io/proposals/content/Platform.html - * @since 2.4.0 + * @alias Chart.helpers.options + * @namespace */ -module.exports = helpers.extend({ +module.exports = { /** + * Converts the given line height `value` in pixels for a specific font `size`. + * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). + * @param {Number} size - The font size (in pixels) used to resolve relative `value`. + * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height * @since 2.7.0 */ - initialize: function() {}, + toLineHeight: function(value, size) { + var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); + if (!matches || matches[1] === 'normal') { + return size * 1.2; + } - /** - * Called at chart construction time, returns a context2d instance implementing - * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. - * @param {*} item - The native item from which to acquire context (platform specific) - * @param {Object} options - The chart options - * @returns {CanvasRenderingContext2D} context2d instance - */ - acquireContext: function() {}, + value = +matches[2]; - /** - * Called at chart destruction time, releases any resources associated to the context - * previously returned by the acquireContext() method. - * @param {CanvasRenderingContext2D} context - The context2d instance - * @returns {Boolean} true if the method succeeded, else false - */ - releaseContext: function() {}, + switch (matches[3]) { + case 'px': + return value; + case '%': + value /= 100; + break; + default: + break; + } - /** - * Registers the specified listener on the given chart. - * @param {Chart} chart - Chart from which to listen for event - * @param {String} type - The ({@link IEvent}) type to listen for - * @param {Function} listener - Receives a notification (an object that implements - * the {@link IEvent} interface) when an event of the specified type occurs. - */ - addEventListener: function() {}, + return size * value; + }, /** - * Removes the specified listener previously registered with addEventListener. - * @param {Chart} chart -Chart from which to remove the listener - * @param {String} type - The ({@link IEvent}) type to remove - * @param {Function} listener - The listener function to remove from the event target. + * Converts the given value into a padding object with pre-computed width/height. + * @param {Number|Object} value - If a number, set the value to all TRBL component, + * else, if and object, use defined properties and sets undefined ones to 0. + * @returns {Object} The padding values (top, right, bottom, left, width, height) + * @since 2.7.0 */ - removeEventListener: function() {} + toPadding: function(value) { + var t, r, b, l; -}, implementation); + if (helpers.isObject(value)) { + t = +value.top || 0; + r = +value.right || 0; + b = +value.bottom || 0; + l = +value.left || 0; + } else { + t = r = b = l = +value || 0; + } -/** - * @interface IPlatform - * Allows abstracting platform dependencies away from the chart - * @borrows Chart.platform.acquireContext as acquireContext - * @borrows Chart.platform.releaseContext as releaseContext - * @borrows Chart.platform.addEventListener as addEventListener - * @borrows Chart.platform.removeEventListener as removeEventListener - */ + return { + top: t, + right: r, + bottom: b, + left: l, + height: t + b, + width: l + r + }; + }, -/** - * @interface IEvent - * @prop {String} type - The event type name, possible values are: - * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', - * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' - * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') - * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) - * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) - */ + /** + * Evaluates the given `inputs` sequentially and returns the first defined value. + * @param {Array[]} inputs - An array of values, falling back to the last value. + * @param {Object} [context] - If defined and the current value is a function, the value + * is called with `context` as first argument and the result becomes the new input. + * @param {Number} [index] - If defined and the current value is an array, the value + * at `index` become the new input. + * @since 2.7.0 + */ + resolve: function(inputs, context, index) { + var i, ilen, value; + + for (i = 0, ilen = inputs.length; i < ilen; ++i) { + value = inputs[i]; + if (value === undefined) { + continue; + } + if (context !== undefined && typeof value === 'function') { + value = value(context); + } + if (index !== undefined && helpers.isArray(value)) { + value = value[index]; + } + if (value !== undefined) { + return value; + } + } + } +}; /***/ }), -/***/ "./node_modules/chart.js/src/plugins/index.js": +/***/ "./node_modules/chart.js/src/helpers/index.js": /*!****************************************************!*\ - !*** ./node_modules/chart.js/src/plugins/index.js ***! + !*** ./node_modules/chart.js/src/helpers/index.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -18124,358 +18854,957 @@ module.exports = helpers.extend({ "use strict"; -module.exports = {}; -module.exports.filler = __webpack_require__(/*! ./plugin.filler */ "./node_modules/chart.js/src/plugins/plugin.filler.js"); -module.exports.legend = __webpack_require__(/*! ./plugin.legend */ "./node_modules/chart.js/src/plugins/plugin.legend.js"); -module.exports.title = __webpack_require__(/*! ./plugin.title */ "./node_modules/chart.js/src/plugins/plugin.title.js"); +module.exports = __webpack_require__(/*! ./helpers.core */ "./node_modules/chart.js/src/helpers/helpers.core.js"); +module.exports.easing = __webpack_require__(/*! ./helpers.easing */ "./node_modules/chart.js/src/helpers/helpers.easing.js"); +module.exports.canvas = __webpack_require__(/*! ./helpers.canvas */ "./node_modules/chart.js/src/helpers/helpers.canvas.js"); +module.exports.options = __webpack_require__(/*! ./helpers.options */ "./node_modules/chart.js/src/helpers/helpers.options.js"); /***/ }), -/***/ "./node_modules/chart.js/src/plugins/plugin.filler.js": -/*!************************************************************!*\ - !*** ./node_modules/chart.js/src/plugins/plugin.filler.js ***! - \************************************************************/ +/***/ "./node_modules/chart.js/src/platforms/platform.basic.js": +/*!***************************************************************!*\ + !*** ./node_modules/chart.js/src/platforms/platform.basic.js ***! + \***************************************************************/ /*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, exports) { -"use strict"; /** - * Plugin based on discussion from the following Chart.js issues: - * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 - * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 + * Platform fallback implementation (minimal). + * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 */ +module.exports = { + acquireContext: function(item) { + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; + } + return item && item.getContext('2d') || null; + } +}; -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); -var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -defaults._set('global', { - plugins: { - filler: { - propagate: true - } - } -}); +/***/ }), -var mappers = { - dataset: function(source) { - var index = source.fill; - var chart = source.chart; - var meta = chart.getDatasetMeta(index); - var visible = meta && chart.isDatasetVisible(index); - var points = (visible && meta.dataset._children) || []; - var length = points.length || 0; +/***/ "./node_modules/chart.js/src/platforms/platform.dom.js": +/*!*************************************************************!*\ + !*** ./node_modules/chart.js/src/platforms/platform.dom.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - return !length ? null : function(point, i) { - return (i < length && points[i]._view) || null; - }; - }, +"use strict"; +/** + * Chart.Platform implementation for targeting a web browser + */ - boundary: function(source) { - var boundary = source.boundary; - var x = boundary ? boundary.x : null; - var y = boundary ? boundary.y : null; - return function(point) { - return { - x: x === null ? point.x : x, - y: y === null ? point.y : y, - }; - }; - } -}; -// @todo if (fill[0] === '#') -function decodeFill(el, index, count) { - var model = el._model || {}; - var fill = model.fill; - var target; +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); - if (fill === undefined) { - fill = !!model.backgroundColor; - } +var EXPANDO_KEY = '$chartjs'; +var CSS_PREFIX = 'chartjs-'; +var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; +var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; +var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; - if (fill === false || fill === null) { - return false; - } +/** + * DOM event types -> Chart.js event types. + * Note: only events with different types are mapped. + * @see https://developer.mozilla.org/en-US/docs/Web/Events + */ +var EVENT_TYPES = { + touchstart: 'mousedown', + touchmove: 'mousemove', + touchend: 'mouseup', + pointerenter: 'mouseenter', + pointerdown: 'mousedown', + pointermove: 'mousemove', + pointerup: 'mouseup', + pointerleave: 'mouseout', + pointerout: 'mouseout' +}; - if (fill === true) { - return 'origin'; - } +/** + * The "used" size is the final value of a dimension property after all calculations have + * been performed. This method uses the computed style of `element` but returns undefined + * if the computed style is not expressed in pixels. That can happen in some cases where + * `element` has a size relative to its parent and this last one is not yet displayed, + * for example because of `display: none` on a parent node. + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * @returns {Number} Size in pixels or undefined if unknown. + */ +function readUsedSize(element, property) { + var value = helpers.getStyle(element, property); + var matches = value && value.match(/^(\d+)(\.\d+)?px$/); + return matches ? Number(matches[1]) : undefined; +} - target = parseFloat(fill, 10); - if (isFinite(target) && Math.floor(target) === target) { - if (fill[0] === '-' || fill[0] === '+') { - target = index + target; - } +/** + * Initializes the canvas style and render size without modifying the canvas display size, + * since responsiveness is handled by the controller.resize() method. The config is used + * to determine the aspect ratio to apply in case no explicit height has been specified. + */ +function initCanvas(canvas, config) { + var style = canvas.style; - if (target === index || target < 0 || target >= count) { - return false; + // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it + // returns null or '' if no explicit value has been set to the canvas attribute. + var renderHeight = canvas.getAttribute('height'); + var renderWidth = canvas.getAttribute('width'); + + // Chart.js modifies some canvas values that we want to restore on destroy + canvas[EXPANDO_KEY] = { + initial: { + height: renderHeight, + width: renderWidth, + style: { + display: style.display, + height: style.height, + width: style.width + } } + }; - return target; - } + // Force canvas to display as block to avoid extra space caused by inline + // elements, which would interfere with the responsive resize process. + // https://github.com/chartjs/Chart.js/issues/2538 + style.display = style.display || 'block'; - switch (fill) { - // compatibility - case 'bottom': - return 'start'; - case 'top': - return 'end'; - case 'zero': - return 'origin'; - // supported boundaries - case 'origin': - case 'start': - case 'end': - return fill; - // invalid fill values - default: - return false; + if (renderWidth === null || renderWidth === '') { + var displayWidth = readUsedSize(canvas, 'width'); + if (displayWidth !== undefined) { + canvas.width = displayWidth; + } } -} - -function computeBoundary(source) { - var model = source.el._model || {}; - var scale = source.el._scale || {}; - var fill = source.fill; - var target = null; - var horizontal; - if (isFinite(fill)) { - return null; + if (renderHeight === null || renderHeight === '') { + if (canvas.style.height === '') { + // If no explicit render height and style height, let's apply the aspect ratio, + // which one can be specified by the user but also by charts as default option + // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. + canvas.height = canvas.width / (config.options.aspectRatio || 2); + } else { + var displayHeight = readUsedSize(canvas, 'height'); + if (displayWidth !== undefined) { + canvas.height = displayHeight; + } + } } - // Backward compatibility: until v3, we still need to support boundary values set on - // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and - // controllers might still use it (e.g. the Smith chart). + return canvas; +} - if (fill === 'start') { - target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; - } else if (fill === 'end') { - target = model.scaleTop === undefined ? scale.top : model.scaleTop; - } else if (model.scaleZero !== undefined) { - target = model.scaleZero; - } else if (scale.getBasePosition) { - target = scale.getBasePosition(); - } else if (scale.getBasePixel) { - target = scale.getBasePixel(); +/** + * Detects support for options object argument in addEventListener. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support + * @private + */ +var supportsEventListenerOptions = (function() { + var supports = false; + try { + var options = Object.defineProperty({}, 'passive', { + get: function() { + supports = true; + } + }); + window.addEventListener('e', null, options); + } catch (e) { + // continue regardless of error } + return supports; +}()); - if (target !== undefined && target !== null) { - if (target.x !== undefined && target.y !== undefined) { - return target; - } +// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. +// https://github.com/chartjs/Chart.js/issues/4287 +var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; - if (typeof target === 'number' && isFinite(target)) { - horizontal = scale.isHorizontal(); - return { - x: horizontal ? target : null, - y: horizontal ? null : target - }; - } - } +function addEventListener(node, type, listener) { + node.addEventListener(type, listener, eventListenerOptions); +} - return null; +function removeEventListener(node, type, listener) { + node.removeEventListener(type, listener, eventListenerOptions); } -function resolveTarget(sources, index, propagate) { - var source = sources[index]; - var fill = source.fill; - var visited = [index]; - var target; +function createEvent(type, chart, x, y, nativeEvent) { + return { + type: type, + chart: chart, + native: nativeEvent || null, + x: x !== undefined ? x : null, + y: y !== undefined ? y : null, + }; +} - if (!propagate) { - return fill; - } +function fromNativeEvent(event, chart) { + var type = EVENT_TYPES[event.type] || event.type; + var pos = helpers.getRelativePosition(event, chart); + return createEvent(type, chart, pos.x, pos.y, event); +} - while (fill !== false && visited.indexOf(fill) === -1) { - if (!isFinite(fill)) { - return fill; - } +function throttled(fn, thisArg) { + var ticking = false; + var args = []; - target = sources[fill]; - if (!target) { - return false; - } + return function() { + args = Array.prototype.slice.call(arguments); + thisArg = thisArg || this; - if (target.visible) { - return fill; + if (!ticking) { + ticking = true; + helpers.requestAnimFrame.call(window, function() { + ticking = false; + fn.apply(thisArg, args); + }); } + }; +} - visited.push(fill); - fill = target.fill; - } +// Implementation based on https://github.com/marcj/css-element-queries +function createResizer(handler) { + var resizer = document.createElement('div'); + var cls = CSS_PREFIX + 'size-monitor'; + var maxSize = 1000000; + var style = + 'position:absolute;' + + 'left:0;' + + 'top:0;' + + 'right:0;' + + 'bottom:0;' + + 'overflow:hidden;' + + 'pointer-events:none;' + + 'visibility:hidden;' + + 'z-index:-1;'; - return false; -} + resizer.style.cssText = style; + resizer.className = cls; + resizer.innerHTML = + '<div class="' + cls + '-expand" style="' + style + '">' + + '<div style="' + + 'position:absolute;' + + 'width:' + maxSize + 'px;' + + 'height:' + maxSize + 'px;' + + 'left:0;' + + 'top:0">' + + '</div>' + + '</div>' + + '<div class="' + cls + '-shrink" style="' + style + '">' + + '<div style="' + + 'position:absolute;' + + 'width:200%;' + + 'height:200%;' + + 'left:0; ' + + 'top:0">' + + '</div>' + + '</div>'; -function createMapper(source) { - var fill = source.fill; - var type = 'dataset'; + var expand = resizer.childNodes[0]; + var shrink = resizer.childNodes[1]; - if (fill === false) { - return null; - } + resizer._reset = function() { + expand.scrollLeft = maxSize; + expand.scrollTop = maxSize; + shrink.scrollLeft = maxSize; + shrink.scrollTop = maxSize; + }; + var onScroll = function() { + resizer._reset(); + handler(); + }; - if (!isFinite(fill)) { - type = 'boundary'; - } + addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); + addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); - return mappers[type](source); + return resizer; } -function isDrawable(point) { - return point && !point.skip; -} +// https://davidwalsh.name/detect-node-insertion +function watchForRender(node, handler) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); + var proxy = expando.renderProxy = function(e) { + if (e.animationName === CSS_RENDER_ANIMATION) { + handler(); + } + }; -function drawArea(ctx, curve0, curve1, len0, len1) { - var i; + helpers.each(ANIMATION_START_EVENTS, function(type) { + addEventListener(node, type, proxy); + }); - if (!len0 || !len1) { - return; - } + // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class + // is removed then added back immediately (same animation frame?). Accessing the + // `offsetParent` property will force a reflow and re-evaluate the CSS animation. + // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics + // https://github.com/chartjs/Chart.js/issues/4737 + expando.reflow = !!node.offsetParent; - // building first area curve (normal) - ctx.moveTo(curve0[0].x, curve0[0].y); - for (i = 1; i < len0; ++i) { - helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); - } + node.classList.add(CSS_RENDER_MONITOR); +} - // joining the two area curves - ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); +function unwatchForRender(node) { + var expando = node[EXPANDO_KEY] || {}; + var proxy = expando.renderProxy; - // building opposite area curve (reverse) - for (i = len1 - 1; i > 0; --i) { - helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); + if (proxy) { + helpers.each(ANIMATION_START_EVENTS, function(type) { + removeEventListener(node, type, proxy); + }); + + delete expando.renderProxy; } -} -function doFill(ctx, points, mapper, view, color, loop) { - var count = points.length; - var span = view.spanGaps; - var curve0 = []; - var curve1 = []; - var len0 = 0; - var len1 = 0; - var i, ilen, index, p0, p1, d0, d1; + node.classList.remove(CSS_RENDER_MONITOR); +} - ctx.beginPath(); +function addResizeListener(node, listener, chart) { + var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); - for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { - index = i % count; - p0 = points[index]._view; - p1 = mapper(p0, index, view); - d0 = isDrawable(p0); - d1 = isDrawable(p1); + // Let's keep track of this added resizer and thus avoid DOM query when removing it. + var resizer = expando.resizer = createResizer(throttled(function() { + if (expando.resizer) { + return listener(createEvent('resize', chart)); + } + })); - if (d0 && d1) { - len0 = curve0.push(p0); - len1 = curve1.push(p1); - } else if (len0 && len1) { - if (!span) { - drawArea(ctx, curve0, curve1, len0, len1); - len0 = len1 = 0; - curve0 = []; - curve1 = []; - } else { - if (d0) { - curve0.push(p0); - } - if (d1) { - curve1.push(p1); - } + // The resizer needs to be attached to the node parent, so we first need to be + // sure that `node` is attached to the DOM before injecting the resizer element. + watchForRender(node, function() { + if (expando.resizer) { + var container = node.parentNode; + if (container && container !== resizer.parentNode) { + container.insertBefore(resizer, container.firstChild); } + + // The container size might have changed, let's reset the resizer state. + resizer._reset(); } + }); +} + +function removeResizeListener(node) { + var expando = node[EXPANDO_KEY] || {}; + var resizer = expando.resizer; + + delete expando.resizer; + unwatchForRender(node); + + if (resizer && resizer.parentNode) { + resizer.parentNode.removeChild(resizer); } +} - drawArea(ctx, curve0, curve1, len0, len1); +function injectCSS(platform, css) { + // http://stackoverflow.com/q/3922139 + var style = platform._style || document.createElement('style'); + if (!platform._style) { + platform._style = style; + css = '/* Chart.js */\n' + css; + style.setAttribute('type', 'text/css'); + document.getElementsByTagName('head')[0].appendChild(style); + } - ctx.closePath(); - ctx.fillStyle = color; - ctx.fill(); + style.appendChild(document.createTextNode(css)); } module.exports = { - id: 'filler', + /** + * This property holds whether this platform is enabled for the current environment. + * Currently used by platform.js to select the proper implementation. + * @private + */ + _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', - afterDatasetsUpdate: function(chart, options) { - var count = (chart.data.datasets || []).length; - var propagate = options.propagate; - var sources = []; - var meta, i, el, source; + initialize: function() { + var keyframes = 'from{opacity:0.99}to{opacity:1}'; - for (i = 0; i < count; ++i) { - meta = chart.getDatasetMeta(i); - el = meta.dataset; - source = null; + injectCSS(this, + // DOM rendering detection + // https://davidwalsh.name/detect-node-insertion + '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + + '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + + '.' + CSS_RENDER_MONITOR + '{' + + '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + + 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + + '}' + ); + }, - if (el && el._model && el instanceof elements.Line) { - source = { - visible: chart.isDatasetVisible(i), - fill: decodeFill(el, i, count), - chart: chart, - el: el - }; - } + acquireContext: function(item, config) { + if (typeof item === 'string') { + item = document.getElementById(item); + } else if (item.length) { + // Support for array based queries (such as jQuery) + item = item[0]; + } - meta.$filler = source; - sources.push(source); + if (item && item.canvas) { + // Support for any object associated to a canvas (including a context2d) + item = item.canvas; } - for (i = 0; i < count; ++i) { - source = sources[i]; - if (!source) { - continue; - } + // To prevent canvas fingerprinting, some add-ons undefine the getContext + // method, for example: https://github.com/kkapsner/CanvasBlocker + // https://github.com/chartjs/Chart.js/issues/2807 + var context = item && item.getContext && item.getContext('2d'); - source.fill = resolveTarget(sources, i, propagate); - source.boundary = computeBoundary(source); - source.mapper = createMapper(source); + // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is + // inside an iframe or when running in a protected environment. We could guess the + // types from their toString() value but let's keep things flexible and assume it's + // a sufficient condition if the item has a context2D which has item as `canvas`. + // https://github.com/chartjs/Chart.js/issues/3887 + // https://github.com/chartjs/Chart.js/issues/4102 + // https://github.com/chartjs/Chart.js/issues/4152 + if (context && context.canvas === item) { + initCanvas(item, config); + return context; } + + return null; }, - beforeDatasetDraw: function(chart, args) { - var meta = args.meta.$filler; - if (!meta) { + releaseContext: function(context) { + var canvas = context.canvas; + if (!canvas[EXPANDO_KEY]) { return; } - var ctx = chart.ctx; - var el = meta.el; - var view = el._view; - var points = el._children || []; - var mapper = meta.mapper; - var color = view.backgroundColor || defaults.global.defaultColor; + var initial = canvas[EXPANDO_KEY].initial; + ['height', 'width'].forEach(function(prop) { + var value = initial[prop]; + if (helpers.isNullOrUndef(value)) { + canvas.removeAttribute(prop); + } else { + canvas.setAttribute(prop, value); + } + }); - if (mapper && color && points.length) { - helpers.canvas.clipArea(ctx, chart.chartArea); - doFill(ctx, points, mapper, view, color, el._loop); - helpers.canvas.unclipArea(ctx); + helpers.each(initial.style || {}, function(value, key) { + canvas.style[key] = value; + }); + + // The canvas render size might have been changed (and thus the state stack discarded), + // we can't use save() and restore() to restore the initial state. So make sure that at + // least the canvas context is reset to the default state by setting the canvas width. + // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html + canvas.width = canvas.width; + + delete canvas[EXPANDO_KEY]; + }, + + addEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + addResizeListener(canvas, listener, chart); + return; + } + + var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); + var proxies = expando.proxies || (expando.proxies = {}); + var proxy = proxies[chart.id + '_' + type] = function(event) { + listener(fromNativeEvent(event, chart)); + }; + + addEventListener(canvas, type, proxy); + }, + + removeEventListener: function(chart, type, listener) { + var canvas = chart.canvas; + if (type === 'resize') { + // Note: the resize event is not supported on all browsers. + removeResizeListener(canvas, listener); + return; + } + + var expando = listener[EXPANDO_KEY] || {}; + var proxies = expando.proxies || {}; + var proxy = proxies[chart.id + '_' + type]; + if (!proxy) { + return; } + + removeEventListener(canvas, type, proxy); } }; +// DEPRECATIONS + +/** + * Provided for backward compatibility, use EventTarget.addEventListener instead. + * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + * @function Chart.helpers.addEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.addEvent = addEventListener; + +/** + * Provided for backward compatibility, use EventTarget.removeEventListener instead. + * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ + * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener + * @function Chart.helpers.removeEvent + * @deprecated since version 2.7.0 + * @todo remove at version 3 + * @private + */ +helpers.removeEvent = removeEventListener; + /***/ }), -/***/ "./node_modules/chart.js/src/plugins/plugin.legend.js": -/*!************************************************************!*\ - !*** ./node_modules/chart.js/src/plugins/plugin.legend.js ***! - \************************************************************/ +/***/ "./node_modules/chart.js/src/platforms/platform.js": +/*!*********************************************************!*\ + !*** ./node_modules/chart.js/src/platforms/platform.js ***! + \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); -var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); -var layouts = __webpack_require__(/*! ../core/core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); +var basic = __webpack_require__(/*! ./platform.basic */ "./node_modules/chart.js/src/platforms/platform.basic.js"); +var dom = __webpack_require__(/*! ./platform.dom */ "./node_modules/chart.js/src/platforms/platform.dom.js"); + +// @TODO Make possible to select another platform at build time. +var implementation = dom._enabled ? dom : basic; + +/** + * @namespace Chart.platform + * @see https://chartjs.gitbooks.io/proposals/content/Platform.html + * @since 2.4.0 + */ +module.exports = helpers.extend({ + /** + * @since 2.7.0 + */ + initialize: function() {}, + + /** + * Called at chart construction time, returns a context2d instance implementing + * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. + * @param {*} item - The native item from which to acquire context (platform specific) + * @param {Object} options - The chart options + * @returns {CanvasRenderingContext2D} context2d instance + */ + acquireContext: function() {}, + + /** + * Called at chart destruction time, releases any resources associated to the context + * previously returned by the acquireContext() method. + * @param {CanvasRenderingContext2D} context - The context2d instance + * @returns {Boolean} true if the method succeeded, else false + */ + releaseContext: function() {}, + + /** + * Registers the specified listener on the given chart. + * @param {Chart} chart - Chart from which to listen for event + * @param {String} type - The ({@link IEvent}) type to listen for + * @param {Function} listener - Receives a notification (an object that implements + * the {@link IEvent} interface) when an event of the specified type occurs. + */ + addEventListener: function() {}, + + /** + * Removes the specified listener previously registered with addEventListener. + * @param {Chart} chart -Chart from which to remove the listener + * @param {String} type - The ({@link IEvent}) type to remove + * @param {Function} listener - The listener function to remove from the event target. + */ + removeEventListener: function() {} + +}, implementation); + +/** + * @interface IPlatform + * Allows abstracting platform dependencies away from the chart + * @borrows Chart.platform.acquireContext as acquireContext + * @borrows Chart.platform.releaseContext as releaseContext + * @borrows Chart.platform.addEventListener as addEventListener + * @borrows Chart.platform.removeEventListener as removeEventListener + */ + +/** + * @interface IEvent + * @prop {String} type - The event type name, possible values are: + * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', + * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' + * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') + * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) + * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) + */ + + +/***/ }), + +/***/ "./node_modules/chart.js/src/plugins/index.js": +/*!****************************************************!*\ + !*** ./node_modules/chart.js/src/plugins/index.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = {}; +module.exports.filler = __webpack_require__(/*! ./plugin.filler */ "./node_modules/chart.js/src/plugins/plugin.filler.js"); +module.exports.legend = __webpack_require__(/*! ./plugin.legend */ "./node_modules/chart.js/src/plugins/plugin.legend.js"); +module.exports.title = __webpack_require__(/*! ./plugin.title */ "./node_modules/chart.js/src/plugins/plugin.title.js"); + + +/***/ }), + +/***/ "./node_modules/chart.js/src/plugins/plugin.filler.js": +/*!************************************************************!*\ + !*** ./node_modules/chart.js/src/plugins/plugin.filler.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Plugin based on discussion from the following Chart.js issues: + * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 + * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 + */ + + + +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var elements = __webpack_require__(/*! ../elements/index */ "./node_modules/chart.js/src/elements/index.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); + +defaults._set('global', { + plugins: { + filler: { + propagate: true + } + } +}); + +var mappers = { + dataset: function(source) { + var index = source.fill; + var chart = source.chart; + var meta = chart.getDatasetMeta(index); + var visible = meta && chart.isDatasetVisible(index); + var points = (visible && meta.dataset._children) || []; + var length = points.length || 0; + + return !length ? null : function(point, i) { + return (i < length && points[i]._view) || null; + }; + }, + + boundary: function(source) { + var boundary = source.boundary; + var x = boundary ? boundary.x : null; + var y = boundary ? boundary.y : null; + + return function(point) { + return { + x: x === null ? point.x : x, + y: y === null ? point.y : y, + }; + }; + } +}; + +// @todo if (fill[0] === '#') +function decodeFill(el, index, count) { + var model = el._model || {}; + var fill = model.fill; + var target; + + if (fill === undefined) { + fill = !!model.backgroundColor; + } + + if (fill === false || fill === null) { + return false; + } + + if (fill === true) { + return 'origin'; + } + + target = parseFloat(fill, 10); + if (isFinite(target) && Math.floor(target) === target) { + if (fill[0] === '-' || fill[0] === '+') { + target = index + target; + } + + if (target === index || target < 0 || target >= count) { + return false; + } + + return target; + } + + switch (fill) { + // compatibility + case 'bottom': + return 'start'; + case 'top': + return 'end'; + case 'zero': + return 'origin'; + // supported boundaries + case 'origin': + case 'start': + case 'end': + return fill; + // invalid fill values + default: + return false; + } +} + +function computeBoundary(source) { + var model = source.el._model || {}; + var scale = source.el._scale || {}; + var fill = source.fill; + var target = null; + var horizontal; + + if (isFinite(fill)) { + return null; + } + + // Backward compatibility: until v3, we still need to support boundary values set on + // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and + // controllers might still use it (e.g. the Smith chart). + + if (fill === 'start') { + target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; + } else if (fill === 'end') { + target = model.scaleTop === undefined ? scale.top : model.scaleTop; + } else if (model.scaleZero !== undefined) { + target = model.scaleZero; + } else if (scale.getBasePosition) { + target = scale.getBasePosition(); + } else if (scale.getBasePixel) { + target = scale.getBasePixel(); + } + + if (target !== undefined && target !== null) { + if (target.x !== undefined && target.y !== undefined) { + return target; + } + + if (typeof target === 'number' && isFinite(target)) { + horizontal = scale.isHorizontal(); + return { + x: horizontal ? target : null, + y: horizontal ? null : target + }; + } + } + + return null; +} + +function resolveTarget(sources, index, propagate) { + var source = sources[index]; + var fill = source.fill; + var visited = [index]; + var target; + + if (!propagate) { + return fill; + } + + while (fill !== false && visited.indexOf(fill) === -1) { + if (!isFinite(fill)) { + return fill; + } + + target = sources[fill]; + if (!target) { + return false; + } + + if (target.visible) { + return fill; + } + + visited.push(fill); + fill = target.fill; + } + + return false; +} + +function createMapper(source) { + var fill = source.fill; + var type = 'dataset'; + + if (fill === false) { + return null; + } + + if (!isFinite(fill)) { + type = 'boundary'; + } + + return mappers[type](source); +} + +function isDrawable(point) { + return point && !point.skip; +} + +function drawArea(ctx, curve0, curve1, len0, len1) { + var i; + + if (!len0 || !len1) { + return; + } + + // building first area curve (normal) + ctx.moveTo(curve0[0].x, curve0[0].y); + for (i = 1; i < len0; ++i) { + helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); + } + + // joining the two area curves + ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); + + // building opposite area curve (reverse) + for (i = len1 - 1; i > 0; --i) { + helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); + } +} + +function doFill(ctx, points, mapper, view, color, loop) { + var count = points.length; + var span = view.spanGaps; + var curve0 = []; + var curve1 = []; + var len0 = 0; + var len1 = 0; + var i, ilen, index, p0, p1, d0, d1; + + ctx.beginPath(); + + for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { + index = i % count; + p0 = points[index]._view; + p1 = mapper(p0, index, view); + d0 = isDrawable(p0); + d1 = isDrawable(p1); + + if (d0 && d1) { + len0 = curve0.push(p0); + len1 = curve1.push(p1); + } else if (len0 && len1) { + if (!span) { + drawArea(ctx, curve0, curve1, len0, len1); + len0 = len1 = 0; + curve0 = []; + curve1 = []; + } else { + if (d0) { + curve0.push(p0); + } + if (d1) { + curve1.push(p1); + } + } + } + } + + drawArea(ctx, curve0, curve1, len0, len1); + + ctx.closePath(); + ctx.fillStyle = color; + ctx.fill(); +} + +module.exports = { + id: 'filler', + + afterDatasetsUpdate: function(chart, options) { + var count = (chart.data.datasets || []).length; + var propagate = options.propagate; + var sources = []; + var meta, i, el, source; + + for (i = 0; i < count; ++i) { + meta = chart.getDatasetMeta(i); + el = meta.dataset; + source = null; + + if (el && el._model && el instanceof elements.Line) { + source = { + visible: chart.isDatasetVisible(i), + fill: decodeFill(el, i, count), + chart: chart, + el: el + }; + } + + meta.$filler = source; + sources.push(source); + } + + for (i = 0; i < count; ++i) { + source = sources[i]; + if (!source) { + continue; + } + + source.fill = resolveTarget(sources, i, propagate); + source.boundary = computeBoundary(source); + source.mapper = createMapper(source); + } + }, + + beforeDatasetDraw: function(chart, args) { + var meta = args.meta.$filler; + if (!meta) { + return; + } + + var ctx = chart.ctx; + var el = meta.el; + var view = el._view; + var points = el._children || []; + var mapper = meta.mapper; + var color = view.backgroundColor || defaults.global.defaultColor; + + if (mapper && color && points.length) { + helpers.canvas.clipArea(ctx, chart.chartArea); + doFill(ctx, points, mapper, view, color, el._loop); + helpers.canvas.unclipArea(ctx); + } + } +}; + + +/***/ }), + +/***/ "./node_modules/chart.js/src/plugins/plugin.legend.js": +/*!************************************************************!*\ + !*** ./node_modules/chart.js/src/plugins/plugin.legend.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var defaults = __webpack_require__(/*! ../core/core.defaults */ "./node_modules/chart.js/src/core/core.defaults.js"); +var Element = __webpack_require__(/*! ../core/core.element */ "./node_modules/chart.js/src/core/core.element.js"); +var helpers = __webpack_require__(/*! ../helpers/index */ "./node_modules/chart.js/src/helpers/index.js"); +var layouts = __webpack_require__(/*! ../core/core.layouts */ "./node_modules/chart.js/src/core/core.layouts.js"); var noop = helpers.noop; @@ -23309,7 +24638,7 @@ exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loa // module -exports.push([module.i, "@font-face {\n font-family: \"Montserrat-Regular\";\n src: url(" + escape(__webpack_require__(/*! ../assets/Fonts/Montserrat/Montserrat-Regular.woff2 */ "./resources/js/assets/Fonts/Montserrat/Montserrat-Regular.woff2")) + ") format(\"woff2\"), url(" + escape(__webpack_require__(/*! ../assets/Fonts/Montserrat/Montserrat-Regular.ttf */ "./resources/js/assets/Fonts/Montserrat/Montserrat-Regular.ttf")) + ") format(\"truetype\");\n font-weight: normal;\n font-style: normal;\n}\n@font-face {\n font-family: \"BYekan\";\n src: url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan.woff */ "./resources/js/assets/Fonts/BYekan.woff")) + ") format(\"woff\"), url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan.otf */ "./resources/js/assets/Fonts/BYekan.otf")) + ") format(\"truetype\");\n font-weight: normal;\n font-style: normal;\n}\n@font-face {\n font-family: \"BYekan-Edited\";\n src: url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan-Edited.woff */ "./resources/js/assets/Fonts/BYekan-Edited.woff")) + ") format(\"woff\"), url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan-Edited.otf */ "./resources/js/assets/Fonts/BYekan-Edited.otf")) + ") format(\"truetype\");\n font-weight: normal;\n font-style: normal;\n}\nbody {\n color: #5c6873;\n font-family: \"BYekan\", \"Montserrat-Regular\" !important;\n padding: 0px !important;\n margin: 0px !important;\n font-weight: 100;\n font-size: 17px;\n}\n\na {\n transition: 0.2s;\n}\n\na:hover {\n text-decoration: none !important;\n}\n\n/* --------------------------------------------------------\n General :: Begin\n-------------------------------------------------------- */\n.En-Raleway {\n font-family: \"Raleway\", sans-serif;\n}\n\n.RTL {\n direction: rtl;\n}\n\n.LTR {\n direction: ltr;\n}\n\n.RotateX {\n transform: rotate(180deg);\n webkit-transform: rotate(180deg);\n}\n\n.Material-Shoadow-SM {\n box-shadow: 0 8px 10px rgba(0, 0, 0, 0.3), 0 4px 3px rgba(0, 0, 0, 0.22);\n}\n\n.CoverBG {\n background-size: cover !important;\n}\n\n.CubeTransition {\n transition-property: all;\n transition-duration: 0.5s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.WhiteTheme .WM-SubText {\n background-color: #fff !important;\n color: #000;\n}\n\n.WhiteTheme .Notification {\n background-color: transparent !important;\n}\n\n[class^=WM-Hover],\n[class*=WM-Hover] {\n transition: 0.2s;\n cursor: pointer;\n}\n\n.application {\n font-family: \"BYekan\", \"Montserrat-Regular\" !important;\n}\n\n/* --------------------------------------------------------\r\n Borders :: Begin\r\n-------------------------------------------------------- */\n.WM-Border {\n border: 1px solid;\n}\n\n.WM-Border-2x {\n border: 2px solid;\n}\n\n.WM-Border-R {\n border-right: 1px solid;\n}\n\n.WM-Border-L {\n border-left: 1px solid;\n}\n\n.WM-Border-T {\n border-top: 1px solid;\n}\n\n.WM-Border-B {\n border-bottom: 1px solid;\n}\n\n/* --------------------------------------------------------\r\n SectionTitle :: Begin\r\n-------------------------------------------------------- */\n.SectionTitle .TitleFa {\n font-size: 1.7rem;\n}\n\n.SectionTitle .TitleEn span {\n color: #fff;\n padding: 5px 25px 1px 25px;\n border-radius: 0.2em;\n letter-spacing: 0.5em;\n}\n.SectionTitle .TitleEn .Line {\n flex-grow: 1;\n position: relative;\n}\n.SectionTitle .TitleEn .Line .inner {\n position: absolute;\n top: 50%;\n width: calc(100% - 1em);\n left: 0;\n height: 1px;\n}\n\n/* --------------------------------------------------------\r\n Labels :: Begin\r\n-------------------------------------------------------- */\n.WM-SubText {\n display: inline-block;\n padding: 10px 25px 5px 25px;\n color: #fff;\n border-radius: 5px;\n margin: 3px 0px 10px 0px;\n}\n\n.WM-SubText.SmallPad {\n padding: 3px 15px 0px 15px;\n}\n\n.WM-Notification {\n display: inline-block;\n text-align: center;\n line-height: 24px;\n width: 26px;\n height: 26px;\n color: #fff;\n border-radius: 13px;\n}\n\n/* --------------------------------------------------------\r\n Navigation :: Begin\r\n-------------------------------------------------------- */\n.WM-NavWrapper {\n z-index: 1000;\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);\n background: #fff;\n width: calc(100% - 2em);\n margin: 0 1em;\n position: fixed;\n top: 1em;\n}\n.WM-NavWrapper .WM-Nav {\n padding: 0.8em 1em;\n list-style: none;\n margin-bottom: 0;\n}\n\n.WM-PageNav {\n border-left: 1px solid #c7c8c9;\n padding: 3px 25px;\n}\n\n.modal-mask {\n position: fixed;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: table;\n transition: opacity 0.3s ease;\n}\n\n.modal-wrapper {\n display: table-cell;\n vertical-align: middle;\n}\n\n/* --------------------------------------------------------\r\n Inputs :: Begin\r\n-------------------------------------------------------- */\n.WM-Input {\n outline: none;\n border: none;\n}\n\n.WM-TextArea {\n outline: none;\n border: none;\n}\n\n.WM-TextArea:focus, .WM-Input:focus {\n border-color: transparent !important;\n}\n\n.WM-Input:focus::-webkit-input-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus::-webkit-input-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus:-moz-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus::-moz-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus:-ms-input-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus::-webkit-input-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus:-moz-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus::-moz-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus:-ms-input-placeholder {\n color: transparent;\n}\n\n.WM-Input::-webkit-input-placeholder {\n color: #555555;\n}\n\n.WM-Input:-moz-placeholder {\n color: #555555;\n}\n\n.WM-Input::-moz-placeholder {\n color: #555555;\n}\n\n.WM-Input:-ms-input-placeholder {\n color: #555555;\n}\n\n.WM-TextArea::-webkit-input-placeholder {\n color: #555555;\n}\n\n.WM-TextArea:-moz-placeholder {\n color: #555555;\n}\n\n.WM-TextArea::-moz-placeholder {\n color: #555555;\n}\n\n.WM-TextArea:-ms-input-placeholder {\n color: #555555;\n}\n\n.WM-InputWrapper {\n width: 100%;\n position: relative;\n border-bottom: 2px solid #d9d9d9;\n padding-bottom: 0px;\n margin-bottom: 35px;\n}\n\n.WM-InputLabel {\n font-size: 15px;\n color: #999999;\n line-height: 1.5;\n padding-left: 5px;\n}\n\n.WM-Input100 {\n display: block;\n width: 100%;\n background: transparent;\n font-size: 18px;\n color: #555555;\n line-height: 1.2;\n}\n\n.WM-Input100-Focus {\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\n.WM-Input100-Focus::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: -2px;\n left: 0;\n width: 0;\n height: 2px;\n -webkit-transition: all 0.4s;\n -o-transition: all 0.4s;\n -moz-transition: all 0.4s;\n transition: all 0.4s;\n background: #ff4b5a;\n}\n\n.WM-Input.WM-Input100 {\n height: 40px;\n}\n\n.WM-InputWrapper input:disabled {\n cursor: not-allowed;\n}\n\n.WM-TextArea.WM-Input100 {\n min-height: 110px;\n padding-top: 9px;\n padding-bottom: 13px;\n}\n\n.WM-Input100:focus + .WM-Input100-Focus::before {\n width: 100%;\n}\n\n.WM-Select {\n background-color: transparent !important;\n -webkit-appearance: none;\n}\n\n/* --------------------------------------------------------\r\n Buttons :: Begin\r\n-------------------------------------------------------- */\n.WM-Btn {\n outline: none !important;\n border: none;\n background: transparent;\n display: -webkit-box;\n display: -webkit-flex;\n display: -moz-box;\n display: -ms-flexbox;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0 20px;\n min-width: 160px;\n height: 50px;\n border-radius: 25px;\n font-size: 16px;\n color: #fff;\n line-height: 1.2;\n -webkit-transition: all 0.4s;\n -o-transition: all 0.4s;\n -moz-transition: all 0.4s;\n transition: all 0.4s;\n}\n\n.WM-Btn-Red {\n background-color: #ee3552;\n box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n}\n\n.WM-Btn-Orange {\n background-color: #FF6B57;\n box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n}\n\n.WM-Btn-Purple {\n background-color: #32c5d2;\n box-shadow: 0 10px 30px 0px rgba(250, 197, 210, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n}\n\n.WM-Btn-Yellow {\n background-color: #ffd63a;\n color: #2f353b;\n box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n}\n\n.WM-Btn-Purple {\n background-color: #ac3773;\n color: #fff;\n box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n}\n\n.WM-Btn-Black {\n background-color: #2f353b;\n box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n}\n\n.WM-Btn-White {\n background-color: #fff;\n color: #2f353b;\n box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n}\n\n.WM-Btn-Green {\n background-color: #0d7e00;\n box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -moz-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -webkit-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -o-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -ms-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n}\n\n.WM-Btn-Cyan {\n background-color: #32c5d2;\n box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -moz-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -webkit-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -o-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -ms-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n}\n\n.WM-Btn i {\n margin-left: 5px;\n -webkit-transition: all 0.4s;\n -o-transition: all 0.4s;\n -moz-transition: all 0.4s;\n transition: all 0.4s;\n}\n\n.WM-Btn:hover {\n background-color: #333333;\n cursor: pointer;\n color: #fff;\n box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n}\n\n.WM-Btn-RedHover:hover {\n background-color: #ee3552;\n cursor: pointer;\n color: #fff;\n box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n}\n\n.WM-Btn-SM {\n min-width: 50px;\n padding: 0 10px;\n}\n\n.WM-Btn-SM i {\n margin-left: 0px;\n}\n\nbutton, html [type=button], [type=reset], [type=submit] {\n -webkit-appearance: none;\n}\n\n/* --------------------------------------------------------\r\n Links :: Begin\r\n-------------------------------------------------------- */\n.WM-Link {\n display: inline-block;\n color: #000;\n direction: rtl;\n text-decoration: none;\n}\n\n.WM-Link::after {\n content: \"\";\n display: block;\n width: 0;\n height: 2px;\n background: #000;\n transition: width 0.3s;\n margin-top: 2px;\n}\n\n.WM-Link:hover::after, .WM-Link.WM-Selected::after, .WM-Link.WM-Active::after {\n width: 100%;\n}\n\n.WM-Height-90 {\n height: 90px;\n}\n\n.WM-Height-110 {\n height: 110px;\n}\n\n.WM-Width-220 {\n width: 220px;\n}\n\n.WM-Width-100 {\n width: 100%;\n}\n\n.WM-Absolute {\n position: absolute;\n}\n\n.WM-Block {\n display: block;\n}\n\n.WM-InlineBlock {\n display: inline-block;\n}\n\n.WM-Flex {\n display: flex !important;\n}\n\n.WM-Flex > *, .WM-Inline-Flex > * {\n -webkit-box-flex: 1 !important;\n}\n\n.WM-Float-L {\n float: left;\n}\n\n.WM-Float-R {\n float: right;\n}\n\n.WM-Align-R {\n text-align: right;\n}\n\n.WM-Align-L {\n text-align: left;\n}\n\n.WM-Align-C {\n text-align: center;\n}\n\n/* --------------------------------------------------------\r\n Margins :: Begin\r\n-------------------------------------------------------- */\n.WM-Margin-T-10 {\n margin-top: 10px;\n}\n\n.WM-Margin-T-15 {\n margin-top: 15px;\n}\n\n.WM-Margin-T-20 {\n margin-top: 20px;\n}\n\n.WM-Margin-T-45 {\n margin-top: 45px;\n}\n\n.WM-Margin-T-55 {\n margin-top: 55px;\n}\n\n.WM-Margin-T-100 {\n margin-top: 100px;\n}\n\n.WM-Margin-L-10 {\n margin-left: 10px;\n}\n\n.WM-Margin-R-10 {\n margin-right: 10px;\n}\n\n.WM-Margin-BT-20 {\n margin-top: 20px;\n margin-bottom: 20px;\n}\n\n.WM-Margin-BT-5 {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n\n.WM-Margin-B-10 {\n margin-bottom: 10px;\n}\n\n.WM-Margin-RL-15 {\n margin-left: 15px;\n margin-right: 15px;\n}\n\n/* --------------------------------------------------------\r\n Paddings :: Begin\r\n-------------------------------------------------------- */\n.WM-Padding-10 {\n padding: 10px;\n}\n\n/* --------------------------------------------------------\r\n Fonts :: Begin\r\n-------------------------------------------------------- */\n.WM-Font-12 {\n font-size: 12px;\n}\n\n.WM-Font-14 {\n font-size: 14px;\n}\n\n.WM-Font-16 {\n font-size: 16px;\n}\n\n.WM-Font-18 {\n font-size: 18px;\n}\n\n.WM-Font-20 {\n font-size: 20px;\n}\n\n.WM-Font-22 {\n font-size: 22px;\n}\n\n.WM-Font-24 {\n font-size: 24px;\n}\n\n.WM-Font-30 {\n font-size: 30px;\n}\n\n.WM-Font-36 {\n font-size: 36px;\n}\n\n.WM-Font-48 {\n font-size: 48px;\n}\n\n.WM-Font-52 {\n font-size: 52px;\n}\n\n.WM-Font-60 {\n font-size: 60px;\n}\n\n.WM-LineHeight-40 {\n line-height: 40px;\n}\n\n.WM-LetterSpacing-5 {\n letter-spacing: 5px;\n}\n\n.WM-LetterSpacing-10 {\n letter-spacing: 10px;\n}\n\n.WM-LetterSpacing-15 {\n letter-spacing: 15px;\n}\n\n/* --------------------------------------------------------\r\n Colors :: Begin\r\n-------------------------------------------------------- */\n.WM-BG-Red, .WM-Link-Red::after, .WM-Input.WM-Red + .WM-Input100-Focus::before {\n background-color: #ee3552;\n color: #fff;\n}\n\n.WM-Color-Red, .WM-Link-Red:hover, .WM-Link-Red.WM-Selected, .WM-Link-Red.WM-Active {\n color: #ee3552;\n}\n\n.WM-Border-Red, .WM-Hover-Red:hover {\n border-color: #ee3552;\n}\n\n.WM-BG-Orange, .WM-Link-Orange::after, .WM-Input.WM-Orange + .WM-Input100-Focus::before {\n background-color: #FF6B57;\n color: #fff;\n}\n\n.WM-Color-Orange, .WM-Link-Orange:hover, .WM-Link-Orange.WM-Selected, .WM-Link-Orange.WM-Active {\n color: #FF6B57;\n}\n\n.WM-Border-Orange, .WM-Hover-Orange:hover {\n border-color: #FF6B57;\n}\n\n.WM-BG-Yellow, .WM-Link-Yellow::after, .WM-Input.WM-Yellow + .WM-Input100-Focus::before {\n background-color: #ffd63a;\n color: #fff;\n}\n\n.WM-Color-Yellow, .WM-Link-Yellow:hover, .WM-Link-Yellow.WM-Selected, .WM-Link-Yellow.WM-Active {\n color: #ffd63a;\n}\n\n.WM-Border-Yellow, .WM-Hover-Yellow:hover {\n border-color: #ffd63a;\n}\n\n.WM-BG-Gold, .WM-Link-Gold::after, .WM-Input.WM-Gold + .WM-Input100-Focus::before {\n background-color: #ddcfbb;\n color: #fff;\n}\n\n.WM-Color-Gold, .WM-Link-Gold:hover, .WM-Link-Gold.WM-Selected, .WM-Link-Gold.WM-Active {\n color: #ddcfbb;\n}\n\n.WM-Border-Gold, .WM-Hover-Gold:hover {\n border-color: #ddcfbb;\n}\n\n.WM-BG-Purple, .WM-Link-Purple::after, .WM-Input.WM-Purple + .WM-Input100-Focus::before {\n background-color: #ac3773;\n color: #fff;\n}\n\n.WM-Color-Purple, .WM-Link-Purple:hover, .WM-Link-Purple.WM-Selected, .WM-Link-Purple.WM-Active {\n color: #ac3773;\n}\n\n.WM-Border-Purple, .WM-Hover-Purple:hover {\n border-color: #ac3773;\n}\n\n.WM-BG-Blue, .WM-Link-Blue::after, .WM-Input.WM-Blue + .WM-Input100-Focus::before {\n background-color: #3498DB;\n color: #fff;\n}\n\n.WM-Color-Blue, .WM-Link-Blue:hover, .WM-Link-Blue.WM-Selected, .WM-Link-Blue.WM-Active {\n color: #3498DB;\n}\n\n.WM-Border-Blue, .WM-Hover-Blue:hover {\n border-color: #3498DB;\n}\n\n.WM-BG-Green, .WM-Link-Green::after, .WM-Input.WM-Green + .WM-Input100-Focus::before {\n background-color: #0d7e00;\n color: #fff;\n}\n\n.WM-Color-Green, .WM-Link-Green:hover, .WM-Link-Green.WM-Selected, .WM-Link-Green.WM-Active {\n color: #0d7e00;\n}\n\n.WM-Border-Green, .WM-Hover-Green:hover {\n border-color: #0d7e00;\n}\n\n.WM-BG-Cyan, .WM-Link-Cyan::after, .WM-Input.WM-Cyan + .WM-Input100-Focus::before {\n background-color: #32c5d2;\n color: #fff;\n}\n\n.WM-Color-Cyan, .WM-Link-Cyan:hover, .WM-Link-Cyan.WM-Selected, .WM-Link-Cyan.WM-Active {\n color: #32c5d2;\n}\n\n.WM-Border-Cyan, .WM-Hover-Cyan:hover {\n border-color: #32c5d2;\n}\n\n.WM-BG-LightGray, .WM-Link-LightGray::after, .WM-Input.WM-LightGray + .WM-Input100-Focus::before {\n background-color: #e6e6e6;\n color: #fff;\n}\n\n.WM-Color-LightGray, .WM-Link-LightGray:hover, .WM-Link-LightGray.WM-Selected, .WM-Link-LightGray.WM-Active {\n color: #e6e6e6;\n}\n\n.WM-Border-LightGray, .WM-Hover-LightGray:hover {\n border-color: #e6e6e6;\n}\n\n.WM-BG-Gray, .WM-Link-Gray::after, .WM-Input.WM-Gray + .WM-Input100-Focus::before {\n background-color: #797979;\n color: #fff;\n}\n\n.WM-Color-Gray, .WM-Link-Gray:hover, .WM-Link-Gray.WM-Selected, .WM-Link-Gray.WM-Active {\n color: #797979;\n}\n\n.WM-Border-Gray, .WM-Hover-Gray:hover {\n border-color: #797979;\n}\n\n.WM-BG-Dark, .WM-Link-Dark::after, .WM-Input.WM-Dark + .WM-Input100-Focus::before {\n background-color: #2f353b;\n color: #fff;\n}\n\n.WM-Color-Dark, .WM-Link-Dark:hover, .WM-Link-Dark.WM-Selected, .WM-Link-Dark.WM-Active {\n color: #2f353b;\n}\n\n.WM-Border-Dark, .WM-Hover-Dark:hover {\n border-color: #2f353b;\n}\n\n.WM-BG-Black, .WM-Link-Black::after, .WM-Input.WM-Black + .WM-Input100-Focus::before {\n background-color: #2f353b;\n color: #fff;\n}\n\n.WM-Color-Black, .WM-Link-Black:hover, .WM-Link-Black.WM-Selected, .WM-Link-Black.WM-Active {\n color: #2f353b;\n}\n\n.WM-Border-Black, .WM-Hover-Black:hover {\n border-color: #2f353b;\n}\n\n.WM-BG-White, .WM-Link-White::after, .WM-Input.WM-White + .WM-Input100-Focus::before {\n background-color: #fff;\n color: #fff;\n}\n\n.WM-Color-White, .WM-Link-White:hover, .WM-Link-White.WM-Selected, .WM-Link-White.WM-Active {\n color: #fff;\n}\n\n.WM-Border-White, .WM-Hover-White:hover {\n border-color: #fff;\n}\n\n.WM-BG-LightGray {\n color: #000 !important;\n}", ""]); +exports.push([module.i, "@font-face {\n font-family: \"Montserrat-Regular\";\n src: url(" + escape(__webpack_require__(/*! ../assets/Fonts/Montserrat/Montserrat-Regular.woff2 */ "./resources/js/assets/Fonts/Montserrat/Montserrat-Regular.woff2")) + ") format(\"woff2\"), url(" + escape(__webpack_require__(/*! ../assets/Fonts/Montserrat/Montserrat-Regular.ttf */ "./resources/js/assets/Fonts/Montserrat/Montserrat-Regular.ttf")) + ") format(\"truetype\");\n font-weight: normal;\n font-style: normal;\n}\n@font-face {\n font-family: \"BYekan\";\n src: url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan.woff */ "./resources/js/assets/Fonts/BYekan.woff")) + ") format(\"woff\"), url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan.otf */ "./resources/js/assets/Fonts/BYekan.otf")) + ") format(\"truetype\");\n font-weight: normal;\n font-style: normal;\n}\n@font-face {\n font-family: \"BYekan-Edited\";\n src: url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan-Edited.woff */ "./resources/js/assets/Fonts/BYekan-Edited.woff")) + ") format(\"woff\"), url(" + escape(__webpack_require__(/*! ../assets/Fonts/BYekan-Edited.otf */ "./resources/js/assets/Fonts/BYekan-Edited.otf")) + ") format(\"truetype\");\n font-weight: normal;\n font-style: normal;\n}\nbody {\n color: #5c6873;\n font-family: \"BYekan\", \"Montserrat-Regular\" !important;\n padding: 0px !important;\n margin: 0px !important;\n font-weight: 100;\n font-size: 17px;\n}\n\na {\n transition: 0.2s;\n}\n\na:hover {\n text-decoration: none !important;\n}\n\n/* --------------------------------------------------------\n General :: Begin\n-------------------------------------------------------- */\n.En-Raleway {\n font-family: \"Raleway\", sans-serif;\n}\n\n.RTL {\n direction: rtl;\n}\n\n.LTR {\n direction: ltr;\n}\n\n.RotateX {\n transform: rotate(180deg);\n webkit-transform: rotate(180deg);\n}\n\n.Material-Shoadow-SM {\n box-shadow: 0 8px 10px rgba(0, 0, 0, 0.3), 0 4px 3px rgba(0, 0, 0, 0.22);\n}\n\n.CoverBG {\n background-size: cover !important;\n}\n\n.CubeTransition {\n transition-property: all;\n transition-duration: 0.5s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.WhiteTheme .WM-SubText {\n background-color: #fff !important;\n color: #000;\n}\n\n.WhiteTheme .Notification {\n background-color: transparent !important;\n}\n\n[class^=WM-Hover],\n[class*=WM-Hover] {\n transition: 0.2s;\n cursor: pointer;\n}\n\n.application {\n font-family: \"BYekan\", \"Montserrat-Regular\" !important;\n}\n\n/* --------------------------------------------------------\r\n Borders :: Begin\r\n-------------------------------------------------------- */\n.WM-Border {\n border: 1px solid;\n}\n\n.WM-Border-2x {\n border: 2px solid;\n}\n\n.WM-Border-R {\n border-right: 1px solid;\n}\n\n.WM-Border-L {\n border-left: 1px solid;\n}\n\n.WM-Border-T {\n border-top: 1px solid;\n}\n\n.WM-Border-B {\n border-bottom: 1px solid;\n}\n\n/* --------------------------------------------------------\r\n SectionTitle :: Begin\r\n-------------------------------------------------------- */\n.SectionTitle .TitleFa {\n font-size: 1.7rem;\n}\n\n.SectionTitle .TitleEn span {\n color: #fff;\n padding: 5px 25px 1px 25px;\n border-radius: 0.2em;\n letter-spacing: 0.5em;\n}\n.SectionTitle .TitleEn .Line {\n flex-grow: 1;\n position: relative;\n}\n.SectionTitle .TitleEn .Line .inner {\n position: absolute;\n top: 50%;\n width: calc(100% - 1em);\n left: 0;\n height: 1px;\n}\n\n/* --------------------------------------------------------\r\n Labels :: Begin\r\n-------------------------------------------------------- */\n.WM-SubText {\n display: inline-block;\n padding: 10px 25px 5px 25px;\n color: #fff;\n border-radius: 5px;\n margin: 3px 0px 10px 0px;\n}\n\n.WM-SubText.SmallPad {\n padding: 3px 15px 0px 15px;\n}\n\n.WM-Notification {\n display: inline-block;\n text-align: center;\n line-height: 24px;\n width: 26px;\n height: 26px;\n color: #fff;\n border-radius: 13px;\n}\n\n/* --------------------------------------------------------\r\n Navigation :: Begin\r\n-------------------------------------------------------- */\n.WM-NavWrapper {\n z-index: 1000;\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);\n background: #fff;\n width: calc(100% - 2em);\n margin: 0 1em;\n position: fixed;\n top: 1em;\n}\n.WM-NavWrapper .WM-Nav {\n padding: 0.8em 1em;\n list-style: none;\n margin-bottom: 0;\n}\n\n.WM-PageNav {\n border-left: 1px solid #c7c8c9;\n padding: 3px 25px;\n}\n\n.modal-mask {\n position: fixed;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: table;\n transition: opacity 0.3s ease;\n}\n\n.modal-wrapper {\n display: table-cell;\n vertical-align: middle;\n}\n\n/* --------------------------------------------------------\r\n Inputs :: Begin\r\n-------------------------------------------------------- */\n.WM-Input {\n outline: none;\n border: none;\n}\n\n.WM-TextArea {\n outline: none;\n border: none;\n}\n\n.WM-TextArea:focus, .WM-Input:focus {\n border-color: transparent !important;\n}\n\n.WM-Input:focus::-webkit-input-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus::-webkit-input-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus:-moz-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus::-moz-placeholder {\n color: transparent;\n}\n\n.WM-Input:focus:-ms-input-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus::-webkit-input-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus:-moz-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus::-moz-placeholder {\n color: transparent;\n}\n\n.WM-TextArea:focus:-ms-input-placeholder {\n color: transparent;\n}\n\n.WM-Input::-webkit-input-placeholder {\n color: #555555;\n}\n\n.WM-Input:-moz-placeholder {\n color: #555555;\n}\n\n.WM-Input::-moz-placeholder {\n color: #555555;\n}\n\n.WM-Input:-ms-input-placeholder {\n color: #555555;\n}\n\n.WM-TextArea::-webkit-input-placeholder {\n color: #555555;\n}\n\n.WM-TextArea:-moz-placeholder {\n color: #555555;\n}\n\n.WM-TextArea::-moz-placeholder {\n color: #555555;\n}\n\n.WM-TextArea:-ms-input-placeholder {\n color: #555555;\n}\n\n.WM-InputWrapper {\n width: 100%;\n position: relative;\n border-bottom: 2px solid #d9d9d9;\n padding-bottom: 0px;\n margin-bottom: 35px;\n}\n\n.WM-InputLabel {\n font-size: 15px;\n color: #999999;\n line-height: 1.5;\n padding-left: 5px;\n}\n\n.WM-Input100 {\n display: block;\n width: 100%;\n background: transparent;\n font-size: 18px;\n color: #555555;\n line-height: 1.2;\n}\n\n.WM-Input100-Focus {\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n\n.WM-Input100-Focus::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: -2px;\n left: 0;\n width: 0;\n height: 2px;\n -webkit-transition: all 0.4s;\n -o-transition: all 0.4s;\n -moz-transition: all 0.4s;\n transition: all 0.4s;\n background: #ff4b5a;\n}\n\n.WM-Input.WM-Input100 {\n height: 40px;\n}\n\n.WM-InputWrapper input:disabled {\n cursor: not-allowed;\n}\n\n.WM-TextArea.WM-Input100 {\n min-height: 110px;\n padding-top: 9px;\n padding-bottom: 13px;\n}\n\n.WM-Input100:focus + .WM-Input100-Focus::before {\n width: 100%;\n}\n\n.WM-Select {\n background-color: transparent !important;\n -webkit-appearance: none;\n}\n\n.WM-Checkbox {\n position: relative;\n /* handling click events */\n /* when checkbox is checked */\n}\n\n.WM-Checkbox.WM-Checkbox-inline {\n display: inline-block;\n}\n\n.form-inline .WM-Checkbox.WM-Checkbox-inline {\n margin-left: 20px;\n top: 3px;\n}\n\n.WM-Checkbox input[type=checkbox] {\n visibility: hidden;\n position: absolute;\n}\n\n.WM-Checkbox label {\n cursor: pointer;\n padding-right: 30px;\n}\n\n.WM-Checkbox label > span {\n display: block;\n position: absolute;\n right: 0;\n -webkit-transition-duration: 0.3s;\n -moz-transition-duration: 0.3s;\n transition-duration: 0.3s;\n}\n\n.WM-Checkbox label > span.inc {\n background: #fff;\n right: -10px;\n top: -10px;\n height: 40px;\n width: 40px;\n opacity: 0;\n border-radius: 50% !important;\n -moz-border-radius: 50% !important;\n -webkit-border-radius: 50% !important;\n}\n\n.WM-Checkbox label > .box {\n top: 1px;\n border: 2px solid #d0d7de;\n height: 20px;\n width: 20px;\n z-index: 5;\n -webkit-transition-delay: 0.2s;\n -moz-transition-delay: 0.2s;\n transition-delay: 0.2s;\n}\n\n.ie .WM-Checkbox label > .box {\n top: 2px;\n}\n\n.WM-Checkbox label > .check {\n top: 2px;\n left: 6px;\n width: 20px;\n height: 10px;\n border: 2px solid #ee3552;\n border-top: none;\n border-right: none;\n opacity: 0;\n z-index: 5;\n -webkit-transform: rotate(-180deg);\n -moz-transform: rotate(-180deg);\n transform: rotate(-180deg);\n -webkit-transition-delay: 0.3s;\n -moz-transition-delay: 0.3s;\n transition-delay: 0.3s;\n}\n\n.WM-Checkbox label > span.inc {\n -webkit-animation: growCircle 0.3s ease;\n -moz-animation: growCircle 0.3s ease;\n animation: growCircle 0.3s ease;\n}\n\n.WM-Checkbox input[type=checkbox]:checked ~ label > .box {\n opacity: 0;\n -webkit-transform: scale(0) rotate(180deg);\n -moz-transform: scale(0) rotate(180deg);\n transform: scale(0) rotate(180deg);\n}\n\n.WM-Checkbox input[type=checkbox]:checked ~ label > .check {\n opacity: 1;\n -webkit-transform: scale(1) rotate(-45deg);\n -moz-transform: scale(1) rotate(-45deg);\n transform: scale(1) rotate(-45deg);\n}\n\n.WM-Checkbox input[type=checkbox]:disabled ~ label,\n.WM-Checkbox input[type=checkbox][disabled] ~ label {\n cursor: not-allowed;\n opacity: 0.7;\n filter: alpha(opacity=70);\n}\n\n.WM-Checkbox input[type=checkbox]:disabled ~ label > .box,\n.WM-Checkbox input[type=checkbox][disabled] ~ label > .box {\n cursor: not-allowed;\n opacity: 0.7;\n filter: alpha(opacity=70);\n}\n\n.WM-Checkbox input[type=checkbox]:disabled:checked ~ label > .check,\n.WM-Checkbox input[type=checkbox][disabled]:checked ~ label > .check {\n cursor: not-allowed;\n opacity: 0.7;\n filter: alpha(opacity=70);\n}\n\n.WM-Checkbox.has-error label {\n color: #e7505a;\n}\n\n.WM-Checkbox.has-error label > .box {\n border-color: #e7505a;\n}\n\n.WM-Checkbox.has-error label > .check {\n border-color: #e7505a;\n}\n\n.WM-Checkbox.has-info label {\n color: #4eabe6;\n}\n\n.WM-Checkbox.has-info label > .box {\n border-color: #4eabe6;\n}\n\n.WM-Checkbox.has-info label > .check {\n border-color: #4eabe6;\n}\n\n.WM-Checkbox.has-success label {\n color: #5dc09c;\n}\n\n.WM-Checkbox.has-success label > .box {\n border-color: #5dc09c;\n}\n\n.WM-Checkbox.has-success label > .check {\n border-color: #5dc09c;\n}\n\n.WM-Checkbox.has-warning label {\n color: #c8d046;\n}\n\n.WM-Checkbox.has-warning label > .box {\n border-color: #c8d046;\n}\n\n.WM-Checkbox.has-warning label > .check {\n border-color: #c8d046;\n}\n\n.c-form-checkboxes.has-error > label {\n color: #e7505a;\n}\n\n.c-form-checkboxes.has-info > label {\n color: #4eabe6;\n}\n\n.c-form-checkboxes.has-success > label {\n color: #5dc09c;\n}\n\n.c-form-checkboxes.has-warning > label {\n color: #c8d046;\n}\n\n.WM-Checkbox-list {\n margin: 10px 0;\n}\n\n.form-horizontal .WM-Checkbox-list {\n margin-top: 0px;\n}\n\n.WM-Checkbox-list .WM-Checkbox {\n display: block;\n margin-bottom: 10px;\n}\n\n.WM-Checkbox-inline {\n margin: 10px 0;\n}\n\n.form-horizontal .WM-Checkbox-inline {\n margin-top: 8px;\n}\n\n.WM-Checkbox-inline .WM-Checkbox {\n display: inline-block;\n margin-left: 20px;\n}\n\n.WM-Checkbox-inline .WM-Checkbox:last-child {\n margin-left: 0;\n}\n\n/* bubble animation */\n@-webkit-keyframes growCircle {\n 0%, 100% {\n -webkit-transform: scale(0);\n opacity: 1;\n }\n 70% {\n background: #eee;\n -webkit-transform: scale(1.25);\n }\n}\n@-moz-keyframes growCircle {\n 0%, 100% {\n -moz-transform: scale(0);\n opacity: 1;\n }\n 70% {\n background: #eee;\n -moz-transform: scale(1.25);\n }\n}\n@keyframes growCircle {\n 0%, 100% {\n transform: scale(0);\n opacity: 1;\n }\n 70% {\n background: #eee;\n transform: scale(1.25);\n }\n}\n/* --------------------------------------------------------\r\n Buttons :: Begin\r\n-------------------------------------------------------- */\n.WM-Btn {\n outline: none !important;\n border: none;\n background: transparent;\n display: -webkit-box;\n display: -webkit-flex;\n display: -moz-box;\n display: -ms-flexbox;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0 20px;\n min-width: 160px;\n height: 50px;\n border-radius: 25px;\n font-size: 16px;\n color: #fff;\n line-height: 1.2;\n -webkit-transition: all 0.4s;\n -o-transition: all 0.4s;\n -moz-transition: all 0.4s;\n transition: all 0.4s;\n}\n\n.WM-Btn-Red {\n background-color: #ee3552;\n box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n}\n\n.WM-Btn-Orange {\n background-color: #FF6B57;\n box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n}\n\n.WM-Btn-Purple {\n background-color: #32c5d2;\n box-shadow: 0 10px 30px 0px rgba(250, 197, 210, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.5);\n}\n\n.WM-Btn-Yellow {\n background-color: #ffd63a;\n color: #2f353b;\n box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(234, 223, 131, 0.5);\n}\n\n.WM-Btn-Purple {\n background-color: #ac3773;\n color: #fff;\n box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(172, 55, 115, 0.5);\n}\n\n.WM-Btn-Black {\n background-color: #2f353b;\n box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(0, 0, 0, 0.5);\n}\n\n.WM-Btn-White {\n background-color: #fff;\n color: #2f353b;\n box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 255, 255, 0.2);\n}\n\n.WM-Btn-Green {\n background-color: #0d7e00;\n box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -moz-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -webkit-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -o-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n -ms-box-shadow: 0 10px 30px 0px rgba(13, 126, 0, 0.35);\n}\n\n.WM-Btn-Cyan {\n background-color: #32c5d2;\n box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -moz-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -webkit-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -o-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n -ms-box-shadow: 0 10px 30px 0px rgba(50, 197, 210, 0.32);\n}\n\n.WM-Btn i {\n margin-left: 5px;\n -webkit-transition: all 0.4s;\n -o-transition: all 0.4s;\n -moz-transition: all 0.4s;\n transition: all 0.4s;\n}\n\n.WM-Btn:hover {\n background-color: #333333;\n cursor: pointer;\n color: #fff;\n box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(51, 51, 51, 0.5);\n}\n\n.WM-Btn-RedHover:hover {\n background-color: #ee3552;\n cursor: pointer;\n color: #fff;\n box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -moz-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -webkit-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -o-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n -ms-box-shadow: 0 10px 30px 0px rgba(255, 75, 90, 0.5);\n}\n\n.WM-Btn-SM {\n min-width: 50px;\n padding: 0 10px;\n}\n\n.WM-Btn-SM i {\n margin-left: 0px;\n}\n\nbutton, html [type=button], [type=reset], [type=submit] {\n -webkit-appearance: none;\n}\n\n/* --------------------------------------------------------\r\n Links :: Begin\r\n-------------------------------------------------------- */\n.WM-Link {\n display: inline-block;\n color: #000;\n direction: rtl;\n text-decoration: none;\n}\n\n.WM-Link::after {\n content: \"\";\n display: block;\n width: 0;\n height: 2px;\n background: #000;\n transition: width 0.3s;\n margin-top: 2px;\n}\n\n.WM-Link:hover::after, .WM-Link.WM-Selected::after, .WM-Link.WM-Active::after {\n width: 100%;\n}\n\n.WM-Height-90 {\n height: 90px;\n}\n\n.WM-Height-110 {\n height: 110px;\n}\n\n.WM-Width-220 {\n width: 220px;\n}\n\n.WM-Width-100 {\n width: 100%;\n}\n\n.WM-Absolute {\n position: absolute;\n}\n\n.WM-Block {\n display: block;\n}\n\n.WM-InlineBlock {\n display: inline-block;\n}\n\n.WM-Flex {\n display: flex !important;\n}\n\n.WM-Flex > *, .WM-Inline-Flex > * {\n -webkit-box-flex: 1 !important;\n}\n\n.WM-Float-L {\n float: left;\n}\n\n.WM-Float-R {\n float: right;\n}\n\n.WM-Align-R {\n text-align: right;\n}\n\n.WM-Align-L {\n text-align: left;\n}\n\n.WM-Align-C {\n text-align: center;\n}\n\n/* --------------------------------------------------------\r\n Margins :: Begin\r\n-------------------------------------------------------- */\n.WM-Margin-T-10 {\n margin-top: 10px;\n}\n\n.WM-Margin-T-15 {\n margin-top: 15px;\n}\n\n.WM-Margin-T-20 {\n margin-top: 20px;\n}\n\n.WM-Margin-T-45 {\n margin-top: 45px;\n}\n\n.WM-Margin-T-55 {\n margin-top: 55px;\n}\n\n.WM-Margin-T-100 {\n margin-top: 100px;\n}\n\n.WM-Margin-L-10 {\n margin-left: 10px;\n}\n\n.WM-Margin-R-10 {\n margin-right: 10px;\n}\n\n.WM-Margin-BT-20 {\n margin-top: 20px;\n margin-bottom: 20px;\n}\n\n.WM-Margin-BT-5 {\n margin-top: 5px;\n margin-bottom: 5px;\n}\n\n.WM-Margin-B-10 {\n margin-bottom: 10px;\n}\n\n.WM-Margin-RL-15 {\n margin-left: 15px;\n margin-right: 15px;\n}\n\n/* --------------------------------------------------------\r\n Paddings :: Begin\r\n-------------------------------------------------------- */\n.WM-Padding-10 {\n padding: 10px;\n}\n\n.WM-Padding-RL-20 {\n padding-right: 20px;\n padding-left: 20px;\n}\n\n/* --------------------------------------------------------\r\n Fonts :: Begin\r\n-------------------------------------------------------- */\n.WM-Font-12 {\n font-size: 12px;\n}\n\n.WM-Font-14 {\n font-size: 14px;\n}\n\n.WM-Font-16 {\n font-size: 16px;\n}\n\n.WM-Font-18 {\n font-size: 18px;\n}\n\n.WM-Font-20 {\n font-size: 20px;\n}\n\n.WM-Font-22 {\n font-size: 22px;\n}\n\n.WM-Font-24 {\n font-size: 24px;\n}\n\n.WM-Font-30 {\n font-size: 30px;\n}\n\n.WM-Font-36 {\n font-size: 36px;\n}\n\n.WM-Font-48 {\n font-size: 48px;\n}\n\n.WM-Font-52 {\n font-size: 52px;\n}\n\n.WM-Font-60 {\n font-size: 60px;\n}\n\n.WM-LineHeight-40 {\n line-height: 40px;\n}\n\n.WM-LetterSpacing-5 {\n letter-spacing: 5px;\n}\n\n.WM-LetterSpacing-10 {\n letter-spacing: 10px;\n}\n\n.WM-LetterSpacing-15 {\n letter-spacing: 15px;\n}\n\n/* --------------------------------------------------------\r\n Colors :: Begin\r\n-------------------------------------------------------- */\n.WM-BG-Red, .WM-Link-Red::after, .WM-Input.WM-Red + .WM-Input100-Focus::before {\n background-color: #ee3552;\n color: #fff;\n}\n\n.WM-Color-Red, .WM-Link-Red:hover, .WM-Link-Red.WM-Selected, .WM-Link-Red.WM-Active {\n color: #ee3552;\n}\n\n.WM-Border-Red, .WM-Hover-Red:hover {\n border-color: #ee3552;\n}\n\n.WM-BG-Orange, .WM-Link-Orange::after, .WM-Input.WM-Orange + .WM-Input100-Focus::before {\n background-color: #FF6B57;\n color: #fff;\n}\n\n.WM-Color-Orange, .WM-Link-Orange:hover, .WM-Link-Orange.WM-Selected, .WM-Link-Orange.WM-Active {\n color: #FF6B57;\n}\n\n.WM-Border-Orange, .WM-Hover-Orange:hover {\n border-color: #FF6B57;\n}\n\n.WM-BG-Yellow, .WM-Link-Yellow::after, .WM-Input.WM-Yellow + .WM-Input100-Focus::before {\n background-color: #ffd63a;\n color: #fff;\n}\n\n.WM-Color-Yellow, .WM-Link-Yellow:hover, .WM-Link-Yellow.WM-Selected, .WM-Link-Yellow.WM-Active {\n color: #ffd63a;\n}\n\n.WM-Border-Yellow, .WM-Hover-Yellow:hover {\n border-color: #ffd63a;\n}\n\n.WM-BG-Gold, .WM-Link-Gold::after, .WM-Input.WM-Gold + .WM-Input100-Focus::before {\n background-color: #ddcfbb;\n color: #fff;\n}\n\n.WM-Color-Gold, .WM-Link-Gold:hover, .WM-Link-Gold.WM-Selected, .WM-Link-Gold.WM-Active {\n color: #ddcfbb;\n}\n\n.WM-Border-Gold, .WM-Hover-Gold:hover {\n border-color: #ddcfbb;\n}\n\n.WM-BG-Purple, .WM-Link-Purple::after, .WM-Input.WM-Purple + .WM-Input100-Focus::before {\n background-color: #ac3773;\n color: #fff;\n}\n\n.WM-Color-Purple, .WM-Link-Purple:hover, .WM-Link-Purple.WM-Selected, .WM-Link-Purple.WM-Active {\n color: #ac3773;\n}\n\n.WM-Border-Purple, .WM-Hover-Purple:hover {\n border-color: #ac3773;\n}\n\n.WM-BG-Blue, .WM-Link-Blue::after, .WM-Input.WM-Blue + .WM-Input100-Focus::before {\n background-color: #3498DB;\n color: #fff;\n}\n\n.WM-Color-Blue, .WM-Link-Blue:hover, .WM-Link-Blue.WM-Selected, .WM-Link-Blue.WM-Active {\n color: #3498DB;\n}\n\n.WM-Border-Blue, .WM-Hover-Blue:hover {\n border-color: #3498DB;\n}\n\n.WM-BG-Green, .WM-Link-Green::after, .WM-Input.WM-Green + .WM-Input100-Focus::before {\n background-color: #0d7e00;\n color: #fff;\n}\n\n.WM-Color-Green, .WM-Link-Green:hover, .WM-Link-Green.WM-Selected, .WM-Link-Green.WM-Active {\n color: #0d7e00;\n}\n\n.WM-Border-Green, .WM-Hover-Green:hover {\n border-color: #0d7e00;\n}\n\n.WM-BG-Cyan, .WM-Link-Cyan::after, .WM-Input.WM-Cyan + .WM-Input100-Focus::before {\n background-color: #32c5d2;\n color: #fff;\n}\n\n.WM-Color-Cyan, .WM-Link-Cyan:hover, .WM-Link-Cyan.WM-Selected, .WM-Link-Cyan.WM-Active {\n color: #32c5d2;\n}\n\n.WM-Border-Cyan, .WM-Hover-Cyan:hover {\n border-color: #32c5d2;\n}\n\n.WM-BG-LightGray, .WM-Link-LightGray::after, .WM-Input.WM-LightGray + .WM-Input100-Focus::before {\n background-color: #e6e6e6;\n color: #fff;\n}\n\n.WM-Color-LightGray, .WM-Link-LightGray:hover, .WM-Link-LightGray.WM-Selected, .WM-Link-LightGray.WM-Active {\n color: #e6e6e6;\n}\n\n.WM-Border-LightGray, .WM-Hover-LightGray:hover {\n border-color: #e6e6e6;\n}\n\n.WM-BG-Gray, .WM-Link-Gray::after, .WM-Input.WM-Gray + .WM-Input100-Focus::before {\n background-color: #797979;\n color: #fff;\n}\n\n.WM-Color-Gray, .WM-Link-Gray:hover, .WM-Link-Gray.WM-Selected, .WM-Link-Gray.WM-Active {\n color: #797979;\n}\n\n.WM-Border-Gray, .WM-Hover-Gray:hover {\n border-color: #797979;\n}\n\n.WM-BG-Dark, .WM-Link-Dark::after, .WM-Input.WM-Dark + .WM-Input100-Focus::before {\n background-color: #2f353b;\n color: #fff;\n}\n\n.WM-Color-Dark, .WM-Link-Dark:hover, .WM-Link-Dark.WM-Selected, .WM-Link-Dark.WM-Active {\n color: #2f353b;\n}\n\n.WM-Border-Dark, .WM-Hover-Dark:hover {\n border-color: #2f353b;\n}\n\n.WM-BG-Black, .WM-Link-Black::after, .WM-Input.WM-Black + .WM-Input100-Focus::before {\n background-color: #2f353b;\n color: #fff;\n}\n\n.WM-Color-Black, .WM-Link-Black:hover, .WM-Link-Black.WM-Selected, .WM-Link-Black.WM-Active {\n color: #2f353b;\n}\n\n.WM-Border-Black, .WM-Hover-Black:hover {\n border-color: #2f353b;\n}\n\n.WM-BG-White, .WM-Link-White::after, .WM-Input.WM-White + .WM-Input100-Focus::before {\n background-color: #fff;\n color: #fff;\n}\n\n.WM-Color-White, .WM-Link-White:hover, .WM-Link-White.WM-Selected, .WM-Link-White.WM-Active {\n color: #fff;\n}\n\n.WM-Border-White, .WM-Hover-White:hover {\n border-color: #fff;\n}\n\n.WM-BG-LightGray {\n color: #000 !important;\n}\n\n#app {\n padding: 0em 0;\n}\n\n/* --------------------------------------------------------\r\n Navigation :: Bootstrap Tabs\r\n-------------------------------------------------------- */\n.nav-tabs {\n justify-content: center;\n}\n\n.nav-item {\n text-align: center;\n}\n\n.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border: 1px solid transparent;\n border-bottom: 1px solid #ee3552;\n color: #ee3552;\n}\n\n.nav-tabs .nav-link {\n color: #000;\n}\n\n.nav-tabs .nav-link .WM-Notification {\n background-color: #000;\n margin: 12px 10px;\n transition: 0.2s;\n}\n\n.nav-tabs .nav-link.WM-Red.active, .nav-tabs .nav-link.WM-Red:hover, .nav-tabs .nav-link.WM-Red:focus {\n border-bottom: 1px solid #ee3552;\n color: #ee3552;\n}\n\n.nav-tabs .nav-link.WM-Red.active .WM-Notification, .nav-tabs .nav-link.WM-Red:hover .WM-Notification, .nav-tabs .nav-link.WM-Red:focus .WM-Notification {\n background-color: #ee3552;\n}\n\n.nav-tabs .nav-link.WM-Orange.active, .nav-tabs .nav-link.WM-Orange:hover, .nav-tabs .nav-link.WM-Orange:focus {\n border-bottom: 1px solid #FF6B57;\n color: #FF6B57;\n}\n\n.nav-tabs .nav-link.WM-Orange.active .WM-Notification, .nav-tabs .nav-link.WM-Orange:hover .WM-Notification, .nav-tabs .nav-link.WM-Orange:focus .WM-Notification {\n background-color: #FF6B57;\n}\n\n.nav-tabs .nav-link.WM-Yellow.active, .nav-tabs .nav-link.WM-Yellow:hover, .nav-tabs .nav-link.WM-Yellow:focus {\n border-bottom: 1px solid #ffd63a;\n color: #ffd63a;\n}\n\n.nav-tabs .nav-link.WM-Yellow.active .WM-Notification, .nav-tabs .nav-link.WM-Yellow:hover .WM-Notification, .nav-tabs .nav-link.WM-Yellow:focus .WM-Notification {\n background-color: #ffd63a;\n}\n\n.nav-tabs .nav-link.WM-Gold.active, .nav-tabs .nav-link.WM-Gold:hover, .nav-tabs .nav-link.WM-Gold:focus {\n border-bottom: 1px solid #ddcfbb;\n color: #ddcfbb;\n}\n\n.nav-tabs .nav-link.WM-Gold.active .WM-Notification, .nav-tabs .nav-link.WM-Gold:hover .WM-Notification, .nav-tabs .nav-link.WM-Gold:focus .WM-Notification {\n background-color: #ddcfbb;\n}\n\n.nav-tabs .nav-link.WM-Purple.active, .nav-tabs .nav-link.WM-Purple:hover, .nav-tabs .nav-link.WM-Purple:focus {\n border-bottom: 1px solid #ac3773;\n color: #ac3773;\n}\n\n.nav-tabs .nav-link.WM-Purple.active .WM-Notification, .nav-tabs .nav-link.WM-Purple:hover .WM-Notification, .nav-tabs .nav-link.WM-Purple:focus .WM-Notification {\n background-color: #ac3773;\n}\n\n.nav-tabs .nav-link.WM-Blue.active, .nav-tabs .nav-link.WM-Blue:hover, .nav-tabs .nav-link.WM-Blue:focus {\n border-bottom: 1px solid #3498DB;\n color: #3498DB;\n}\n\n.nav-tabs .nav-link.WM-Blue.active .WM-Notification, .nav-tabs .nav-link.WM-Blue:hover .WM-Notification, .nav-tabs .nav-link.WM-Blue:focus .WM-Notification {\n background-color: #3498DB;\n}\n\n.nav-tabs .nav-link.WM-Green.active, .nav-tabs .nav-link.WM-Green:hover, .nav-tabs .nav-link.WM-Green:focus {\n border-bottom: 1px solid #0d7e00;\n color: #0d7e00;\n}\n\n.nav-tabs .nav-link.WM-Green.active .WM-Notification, .nav-tabs .nav-link.WM-Green:hover .WM-Notification, .nav-tabs .nav-link.WM-Green:focus .WM-Notification {\n background-color: #0d7e00;\n}\n\n.nav-tabs .nav-link.WM-Cyan.active, .nav-tabs .nav-link.WM-Cyan:hover, .nav-tabs .nav-link.WM-Cyan:focus {\n border-bottom: 1px solid #32c5d2;\n color: #32c5d2;\n}\n\n.nav-tabs .nav-link.WM-Cyan.active .WM-Notification, .nav-tabs .nav-link.WM-Cyan:hover .WM-Notification, .nav-tabs .nav-link.WM-Cyan:focus .WM-Notification {\n background-color: #32c5d2;\n}\n\n.nav-tabs .nav-link.WM-LightGray.active, .nav-tabs .nav-link.WM-LightGray:hover, .nav-tabs .nav-link.WM-LightGray:focus {\n border-bottom: 1px solid #e6e6e6;\n color: #e6e6e6;\n}\n\n.nav-tabs .nav-link.WM-LightGray.active .WM-Notification, .nav-tabs .nav-link.WM-LightGray:hover .WM-Notification, .nav-tabs .nav-link.WM-LightGray:focus .WM-Notification {\n background-color: #e6e6e6;\n}\n\n.nav-tabs .nav-link.WM-Gray.active, .nav-tabs .nav-link.WM-Gray:hover, .nav-tabs .nav-link.WM-Gray:focus {\n border-bottom: 1px solid #797979;\n color: #797979;\n}\n\n.nav-tabs .nav-link.WM-Gray.active .WM-Notification, .nav-tabs .nav-link.WM-Gray:hover .WM-Notification, .nav-tabs .nav-link.WM-Gray:focus .WM-Notification {\n background-color: #797979;\n}\n\n.nav-tabs .nav-link.WM-Dark.active, .nav-tabs .nav-link.WM-Dark:hover, .nav-tabs .nav-link.WM-Dark:focus {\n border-bottom: 1px solid #2f353b;\n color: #2f353b;\n}\n\n.nav-tabs .nav-link.WM-Dark.active .WM-Notification, .nav-tabs .nav-link.WM-Dark:hover .WM-Notification, .nav-tabs .nav-link.WM-Dark:focus .WM-Notification {\n background-color: #2f353b;\n}\n\n.nav-tabs .nav-link.WM-Black.active, .nav-tabs .nav-link.WM-Black:hover, .nav-tabs .nav-link.WM-Black:focus {\n border-bottom: 1px solid #2f353b;\n color: #2f353b;\n}\n\n.nav-tabs .nav-link.WM-Black.active .WM-Notification, .nav-tabs .nav-link.WM-Black:hover .WM-Notification, .nav-tabs .nav-link.WM-Black:focus .WM-Notification {\n background-color: #2f353b;\n}\n\n.nav-tabs .nav-link.WM-White.active, .nav-tabs .nav-link.WM-White:hover, .nav-tabs .nav-link.WM-White:focus {\n border-bottom: 1px solid #fff;\n color: #fff;\n}\n\n.nav-tabs .nav-link.WM-White.active .WM-Notification, .nav-tabs .nav-link.WM-White:hover .WM-Notification, .nav-tabs .nav-link.WM-White:focus .WM-Notification {\n background-color: #fff;\n}\n\n/* --------------------------------------------------------\r\n Vuetify :: Dialog\r\n-------------------------------------------------------- */\n.v-card__title--primary {\n padding-top: 10px;\n}\n\n.theme--light.v-text-field > .v-input__control > .v-input__slot:before {\n border-color: rgba(0, 0, 0, 0.22);\n}\n\n.theme--light.v-icon {\n font-size: 16px;\n}", ""]); // exports @@ -23367,7 +24696,7 @@ exports = module.exports = __webpack_require__(/*! ../../../../../node_modules/c // module -exports.push([module.i, ".header[data-v-6b05fbd2] {\n height: 7em;\n background: url(" + escape(__webpack_require__(/*! ../../../assets/bg.jpg */ "./resources/js/assets/bg.jpg")) + ") repeat-x;\n}", ""]); +exports.push([module.i, ".header[data-v-6b05fbd2] {\n height: 7em;\n background: url(" + escape(__webpack_require__(/*! ../../../assets/bg.jpg */ "./resources/js/assets/bg.jpg")) + ") repeat-x;\n margin-bottom: 20px;\n}", ""]); // exports @@ -23429,26 +24758,6 @@ exports.push([module.i, "/*!\r\n * Bootstrap-select v1.13.5 (https://developer.s // exports -/***/ }), - -/***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-design-icons-iconfont/dist/material-design-icons.css": -/*!********************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader??ref--5-1!./node_modules/postcss-loader/src??ref--5-2!./node_modules/material-design-icons-iconfont/dist/material-design-icons.css ***! - \********************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var escape = __webpack_require__(/*! ../../css-loader/lib/url/escape.js */ "./node_modules/css-loader/lib/url/escape.js"); -exports = module.exports = __webpack_require__(/*! ../../css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false); -// imports - - -// module -exports.push([module.i, "@font-face {\n font-family: 'Material Icons';\n font-style: normal;\n font-weight: 400;\n src: url(" + escape(__webpack_require__(/*! ./fonts/MaterialIcons-Regular.eot */ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.eot")) + ");\n /* For IE6-8 */\n src: local(\"Material Icons\"), local(\"MaterialIcons-Regular\"), url(" + escape(__webpack_require__(/*! ./fonts/MaterialIcons-Regular.woff2 */ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.woff2")) + ") format(\"woff2\"), url(" + escape(__webpack_require__(/*! ./fonts/MaterialIcons-Regular.woff */ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.woff")) + ") format(\"woff\"), url(" + escape(__webpack_require__(/*! ./fonts/MaterialIcons-Regular.ttf */ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.ttf")) + ") format(\"truetype\"); }\n\n.material-icons {\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n /* Preferred icon size */\n display: inline-block;\n line-height: 1;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n /* Support for IE. */\n font-feature-settings: 'liga';\n font-display: block; }\n", ""]); - -// exports - - /***/ }), /***/ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuetify/dist/vuetify.min.css": @@ -34229,80 +35538,6 @@ return jQuery; } ); -/***/ }), - -/***/ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.eot": -/*!******************************************************************************************!*\ - !*** ./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.eot ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = "/fonts/vendor/material-design-icons-icondist/MaterialIcons-Regular.eot?016c14adad95a0e21a2ae4fbc36955c6"; - -/***/ }), - -/***/ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.ttf": -/*!******************************************************************************************!*\ - !*** ./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.ttf ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = "/fonts/vendor/material-design-icons-icondist/MaterialIcons-Regular.ttf?55242ea5c378da626cab5b4aaf9c2255"; - -/***/ }), - -/***/ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.woff": -/*!*******************************************************************************************!*\ - !*** ./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.woff ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = "/fonts/vendor/material-design-icons-icondist/MaterialIcons-Regular.woff?c38ebd3cd38c98fbd16bf31d1d24ce64"; - -/***/ }), - -/***/ "./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.woff2": -/*!********************************************************************************************!*\ - !*** ./node_modules/material-design-icons-iconfont/dist/fonts/MaterialIcons-Regular.woff2 ***! - \********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = "/fonts/vendor/material-design-icons-icondist/MaterialIcons-Regular.woff2?8a9a261c8b8dfe90db11f1817a9d22e1"; - -/***/ }), - -/***/ "./node_modules/material-design-icons-iconfont/dist/material-design-icons.css": -/*!************************************************************************************!*\ - !*** ./node_modules/material-design-icons-iconfont/dist/material-design-icons.css ***! - \************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - - -var content = __webpack_require__(/*! !../../css-loader??ref--5-1!../../postcss-loader/src??ref--5-2!./material-design-icons.css */ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/material-design-icons-iconfont/dist/material-design-icons.css"); - -if(typeof content === 'string') content = [[module.i, content, '']]; - -var transform; -var insertInto; - - - -var options = {"hmr":true} - -options.transform = transform -options.insertInto = undefined; - -var update = __webpack_require__(/*! ../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); - -if(content.locals) module.exports = content.locals; - -if(false) {} - /***/ }), /***/ "./node_modules/miniraf/dist/miniraf.es.js": @@ -57760,7 +58995,7 @@ var render = function() { attrs: { TitleFa: " مجموعه ی من ", TitleEn: " My Business ", - ThemeColor: "Cyan", + ThemeColor: "Black", Route: "MyBusiness" } }) @@ -57782,6 +59017,21 @@ var render = function() { 1 ), _vm._v(" "), + _c( + "li", + [ + _c("NavItem", { + attrs: { + TitleFa: " سفارشات ", + TitleEn: " Orders ", + ThemeColor: "Orange", + Route: "OrderManagement" + } + }) + ], + 1 + ), + _vm._v(" "), _c( "li", [ @@ -57818,7 +59068,7 @@ var render = function() { TitleFa: " مدیریت سایت ", TitleEn: " Website Management ", ThemeColor: "Green", - Route: "WebsiteManagment" + Route: "WebsiteManagement" } }) ], @@ -57973,7 +59223,7 @@ var render = function() { { staticClass: "WM-Link WM-Align-C WM-PageNav", class: _vm.HoverClass, - attrs: { to: _vm.Route } + attrs: { to: { name: _vm.Route } } }, [ _c("div", { staticClass: "WM-Font-18" }, [ @@ -58088,7 +59338,7 @@ var render = function() { _vm._v(" "), _c("div", { staticClass: "TitleEn WM-Flex" }, [ _c("span", { - class: _vm.Color, + class: [_vm.Color, _vm.TextColor], domProps: { textContent: _vm._s(_vm.TitleEn) } }), _vm._v(" "), @@ -58144,6 +59394,48 @@ render._withStripped = true +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/Checkbox.vue?vue&type=template&id=fb3cd5a4&": +/*!******************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Inputs/Checkbox.vue?vue&type=template&id=fb3cd5a4& ***! + \******************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + { staticClass: "WM-Checkbox c-toggle-hide RTL WM-Align-R" }, + [ + _c("input", { + staticClass: "c-check", + attrs: { type: "checkbox", id: _vm.ItemID } + }), + _vm._v(" "), + _c("label", { attrs: { for: _vm.ItemID } }, [ + _c("span", { staticClass: "inc" }), + _vm._v(" "), + _c("span", { staticClass: "check" }), + _vm._v(" "), + _c("span", { staticClass: "box" }), + _vm._v(" " + _vm._s(_vm.ItemText) + "\n ") + ]) + ] + ) +} +var staticRenderFns = [] +render._withStripped = true + + + /***/ }), /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/SelectPicker.vue?vue&type=template&id=66d86dd6&": @@ -58229,10 +59521,10 @@ render._withStripped = true /***/ }), -/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&lang=pug&": -/*!**************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&lang=pug& ***! - \**************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&": +/*!*****************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f& ***! + \*****************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -58352,15 +59644,23 @@ var render = function() { _c( "a", { - staticClass: "nav-link", + staticClass: "nav-link WM-Flex", class: [_vm.aClass, _vm.Status == "Active" ? "active" : ""], attrs: { "data-toggle": "tab", href: _vm.TabHref } }, [ - _c("div", { staticClass: "WM-Font-18" }, [ - _vm._v(" " + _vm._s(_vm.TitleFa) + " ") - ]), - _vm._v(" " + _vm._s(_vm.TitleEn) + "\n ") + _vm.Quantity > 0 + ? _c("div", { staticClass: "WM-Notification" }, [ + _vm._v(" " + _vm._s(_vm.Quantity) + " ") + ]) + : _vm._e(), + _vm._v(" "), + _c("div", [ + _c("div", { staticClass: "WM-Font-18" }, [ + _vm._v(" " + _vm._s(_vm.TitleFa) + " ") + ]), + _vm._v(" " + _vm._s(_vm.TitleEn) + "\n ") + ]) ] ) ]) @@ -58372,10 +59672,10 @@ render._withStripped = true /***/ }), -/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Title.vue?vue&type=template&id=5309aefd&": -/*!********************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Title.vue?vue&type=template&id=5309aefd& ***! - \********************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendEmailModal.vue?vue&type=template&id=479b69a7&": +/*!************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/SendEmailModal.vue?vue&type=template&id=479b69a7& ***! + \************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -58387,7 +59687,124 @@ var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h - return _c("div") + return _c( + "v-dialog", + { + attrs: { width: "60%", transition: "slide-x-transition" }, + model: { + value: _vm.$store.state.SendEmail, + callback: function($$v) { + _vm.$set(_vm.$store.state, "SendEmail", $$v) + }, + expression: "$store.state.SendEmail" + } + }, + [ + _c( + "v-card", + { staticClass: "RTL" }, + [ + _c( + "v-card-title", + { staticClass: " grey lighten-3", attrs: { "primary-title": "" } }, + [ + _c("PartTitle", { + staticClass: "WM-Margin-T-20", + attrs: { + TitleFa: " ارسال ایمیل ", + TitleEn: " Sending an Email ", + Color: "pink darken-4" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "v-card-text", + [ + _c( + "v-layout", + { + staticClass: "WM-Padding-RL-20", + attrs: { row: "", wrap: "" } + }, + [ + _c( + "v-flex", + { attrs: { md8: "" } }, + [ + _c("v-text-field", { + attrs: { + label: " لطفا عنوان پیام را بنویسید ", + hint: "حداکثر 50 کاراکتر ", + color: "pink darken-4", + width: "60%", + "prepend-icon": "fas fa-info" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "v-flex", + { attrs: { md12: "" } }, + [ + _c("v-textarea", { + attrs: { + name: "input-7-1", + label: "لطفا پیام خود را بنویسید", + value: "", + hint: "حداکثر 2500 کاراکتر ", + color: "pink darken-4", + "prepend-icon": "fas fa-envelope" + } + }) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c("v-divider"), + _vm._v(" "), + _c( + "v-card-actions", + [ + _c("v-spacer"), + _vm._v(" "), + _c( + "v-btn", + { + attrs: { color: "pink darken-4", depressed: "", dark: "" }, + on: { + click: function($event) { + _vm.$store.state.SendEmail = false + } + } + }, + [ + _c("v-icon", { attrs: { dark: "", right: "" } }, [ + _vm._v("fas fa-envelope") + ]), + _vm._v(" ارسال ایمیل\n ") + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) } var staticRenderFns = [] render._withStripped = true @@ -58396,9 +59813,260 @@ render._withStripped = true /***/ }), -/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/AccountBalance.vue?vue&type=template&id=c487d964&scoped=true&": +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendSMSModal.vue?vue&type=template&id=147e500a&": +/*!**********************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/SendSMSModal.vue?vue&type=template&id=147e500a& ***! + \**********************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "v-dialog", + { + attrs: { width: "60%", transition: "slide-x-transition" }, + model: { + value: _vm.$store.state.SendSMS, + callback: function($$v) { + _vm.$set(_vm.$store.state, "SendSMS", $$v) + }, + expression: "$store.state.SendSMS" + } + }, + [ + _c( + "v-card", + { staticClass: "RTL" }, + [ + _c( + "v-card-title", + { staticClass: "grey lighten-3", attrs: { "primary-title": "" } }, + [ + _c("PartTitle", { + staticClass: "WM-Margin-T-20", + attrs: { + TitleFa: " ارسال پیام کوتاه ", + TitleEn: " Sending a Text Message ", + Color: "orange darken-3" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "v-card-text", + [ + _c( + "v-layout", + { + staticClass: "WM-Padding-RL-20", + attrs: { row: "", wrap: "" } + }, + [ + _c( + "v-flex", + { attrs: { md12: "" } }, + [ + _c("v-textarea", { + attrs: { + name: "input-7-1", + label: "لطفا پیام خود را بنویسید", + value: "", + hint: " هر پیام 53 کاراکتر ", + color: "orange darken-3", + "append-icon": "fas fa-comment-alt" + } + }) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c("v-divider"), + _vm._v(" "), + _c( + "v-card-actions", + [ + _c("v-spacer"), + _vm._v(" "), + _c( + "v-btn", + { + attrs: { color: "orange darken-3", depressed: "", dark: "" }, + on: { + click: function($event) { + _vm.$store.state.SendSMS = false + } + } + }, + [ + _c("v-icon", { attrs: { dark: "", right: "" } }, [ + _vm._v("fa fa-angle-left") + ]), + _vm._v(" ارسال پیام\n ") + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true + + + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserDetailsModal.vue?vue&type=template&id=6da876f8&": +/*!**************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/UserDetailsModal.vue?vue&type=template&id=6da876f8& ***! + \**************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "v-dialog", + { + attrs: { width: "90%", transition: "slide-x-transition" }, + model: { + value: _vm.$store.state.UserDetail, + callback: function($$v) { + _vm.$set(_vm.$store.state, "UserDetail", $$v) + }, + expression: "$store.state.UserDetail" + } + }, + [ + _c( + "v-card", + { staticClass: "RTL" }, + [ + _c( + "v-card-title", + { staticClass: " grey lighten-3", attrs: { "primary-title": "" } }, + [ + _c("PartTitle", { + staticClass: "WM-Margin-T-20", + attrs: { + TitleFa: " اطلاعات کاربر ", + TitleEn: " Member's Info ", + Color: "cyan" + } + }) + ], + 1 + ), + _vm._v(" "), + _c("v-card-text", [ + _c("div", { staticClass: "row" }, [ + _c("div", { staticClass: "col-md-3 WM-Align-R" }, [ + _c("div", { staticClass: "WM-Font-14 WM-Color-Gray" }, [ + _c("i", { staticClass: "WMi-user" }), + _vm._v(" نام و نام خانوادگی ") + ]), + _vm._v(" "), + _c("div", { staticClass: "WM-Font-20" }, [ + _vm._v(" علیرضا حسنی ") + ]) + ]), + _vm._v(" "), + _c("div", { staticClass: "col-md-3 WM-Align-R" }, [ + _c("div", { staticClass: "WM-Font-14 WM-Color-Gray" }, [ + _c("i", { staticClass: "WMi-mail-alt" }), + _vm._v(" آدرس آیمیل ") + ]), + _vm._v(" "), + _c("div", { staticClass: "WM-Font-20" }, [ + _vm._v(" Alireza-Hassani@outlook.com ") + ]) + ]), + _vm._v(" "), + _c("div", { staticClass: "col-md-3 WM-Align-R" }, [ + _c("div", { staticClass: "WM-Font-14 WM-Color-Gray" }, [ + _c("i", { staticClass: "WMi-phone" }), + _vm._v(" شماره ی همراه ") + ]), + _vm._v(" "), + _c("div", { staticClass: "WM-Font-20" }, [ + _vm._v(" 09127004945 ") + ]) + ]) + ]) + ]), + _vm._v(" "), + _c("v-divider"), + _vm._v(" "), + _c( + "v-card-actions", + [ + _c("v-spacer"), + _vm._v(" "), + _c( + "v-btn", + { + attrs: { color: "cyan", depressed: "", dark: "" }, + on: { + click: function($event) { + _vm.$store.state.UserDetail = false + } + } + }, + [ + _c("v-icon", { attrs: { dark: "", right: "" } }, [ + _vm._v("fas fa-check") + ]), + _vm._v(" بسیار خب، ممنونم\n ") + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true + + + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserRolesModal.vue?vue&type=template&id=3a4306a9&": /*!************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/AccountBalance.vue?vue&type=template&id=c487d964&scoped=true& ***! + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Modals/UserRolesModal.vue?vue&type=template&id=3a4306a9& ***! \************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -58411,7 +60079,291 @@ var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h - return _c("div") + return _c( + "v-dialog", + { + attrs: { width: "60%", transition: "slide-x-transition" }, + model: { + value: _vm.$store.state.UserRoles, + callback: function($$v) { + _vm.$set(_vm.$store.state, "UserRoles", $$v) + }, + expression: "$store.state.UserRoles" + } + }, + [ + _c( + "v-card", + { staticClass: "RTL" }, + [ + _c( + "v-card-title", + { staticClass: " grey lighten-3", attrs: { "primary-title": "" } }, + [ + _c("PartTitle", { + staticClass: "WM-Margin-T-20", + attrs: { + TitleFa: " دسترسی های این کاربر ", + TitleEn: " Member's Roles " + } + }) + ], + 1 + ), + _vm._v(" "), + _c("v-card-text", [ + _c( + "table", + { + staticClass: "table table-striped WM-Margin-T-20 WM-Align-R RTL" + }, + [ + _c("thead", [ + _c("tr", [ + _c("th", { staticStyle: { width: "25%" } }), + _vm._v(" "), + _c( + "th", + { + staticClass: "WM-Color-Cyan", + staticStyle: { width: "25%" } + }, + [ + _c("i", { staticClass: "WMi-plus" }), + _vm._v(" قابلیت ثبت ") + ] + ), + _vm._v(" "), + _c( + "th", + { + staticClass: "WM-Color-Orange", + staticStyle: { width: "25%" } + }, + [ + _c("i", { staticClass: "WMi-edit" }), + _vm._v(" قابلیت ویرایش ") + ] + ), + _vm._v(" "), + _c( + "th", + { + staticClass: "WM-Color-Red", + staticStyle: { width: "25%" } + }, + [ + _c("i", { staticClass: "WMi-trash" }), + _vm._v(" قابلیت حذف ") + ] + ) + ]) + ]), + _vm._v(" "), + _c( + "tbody", + [ + _vm._l(_vm.Permissions, function(Permission, index) { + return _c("tr", [ + _c("td", { staticClass: "WM-Align-C" }, [ + _c("i", { + staticClass: "WM-Font-36 WM-Float-R", + class: [Permission.Icon] + }), + _vm._v(" "), + _c( + "div", + { staticClass: "WM-Float-R WM-Margin-R-10" }, + [ + _c("h4", { staticClass: "WM-Font-16" }, [ + _vm._v(" " + _vm._s(Permission.Name) + " ") + ]), + _vm._v(" "), + _c("h4", { staticClass: "WM-Font-14" }, [ + _vm._v(" " + _vm._s(index) + " ") + ]) + ] + ) + ]), + _vm._v(" "), + _c( + "td", + [ + _c("Checkbox", { + attrs: { + ItemText: " امکان افزودن آیتم ", + ItemID: index + "Add" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "td", + { staticClass: "WM-Align-L" }, + [ + _c("Checkbox", { + attrs: { + ItemText: + " امکان ویرایش آیتم های متعلق به خود ", + ItemID: index + "EditSelfOwned" + } + }), + _vm._v(" "), + _c("Checkbox", { + attrs: { + ItemText: " امکان ویرایش همه ی آیتم ها ", + ItemID: index + "EditAll" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "td", + [ + _c("Checkbox", { + attrs: { + ItemText: + " امکان ویرایش آیتم های متعلق به خود ", + ItemID: index + "DeleteSelfOwned" + } + }), + _vm._v(" "), + _c("Checkbox", { + attrs: { + ItemText: " امکان ویرایش همه ی آیتم ها ", + ItemID: index + "DeleteAll" + } + }) + ], + 1 + ) + ]) + }), + _vm._v(" "), + _c("tr", [ + _c("td", { staticClass: "WM-Align-C" }, [ + _c("i", { + staticClass: "WM-Font-36 WM-Float-R WMi-shop" + }), + _vm._v(" "), + _c( + "div", + { staticClass: "WM-Float-R WM-Margin-R-10" }, + [ + _c("h4", { staticClass: "WM-Font-16" }, [ + _vm._v(" سفارشات ") + ]), + _vm._v(" "), + _c("h4", { staticClass: "WM-Font-14" }, [ + _vm._v(" Orders ") + ]) + ] + ) + ]), + _vm._v(" "), + _c("td"), + _vm._v(" "), + _c( + "td", + { staticClass: "WM-Align-L" }, + [ + _c("Checkbox", { + attrs: { + ItemText: " مدیریت سفارشات ", + ItemID: "OrdersManagement" + } + }) + ], + 1 + ), + _vm._v(" "), + _c("td") + ]), + _vm._v(" "), + _c("tr", [ + _c("td", { staticClass: "WM-Align-C" }, [ + _c("i", { + staticClass: "WM-Font-36 WM-Float-R WMi-globe" + }), + _vm._v(" "), + _c( + "div", + { staticClass: "WM-Float-R WM-Margin-R-10" }, + [ + _c("h4", { staticClass: "WM-Font-16" }, [ + _vm._v(" وبسایت ") + ]), + _vm._v(" "), + _c("h4", { staticClass: "WM-Font-14" }, [ + _vm._v(" Website ") + ]) + ] + ) + ]), + _vm._v(" "), + _c("td"), + _vm._v(" "), + _c( + "td", + { staticClass: "WM-Align-L" }, + [ + _c("Checkbox", { + attrs: { + ItemText: " ویرایش وبسایت ", + ItemID: "WebsiteEdit" + } + }) + ], + 1 + ), + _vm._v(" "), + _c("td") + ]) + ], + 2 + ) + ] + ) + ]), + _vm._v(" "), + _c("v-divider"), + _vm._v(" "), + _c( + "v-card-actions", + [ + _c("v-spacer"), + _vm._v(" "), + _c( + "v-btn", + { + attrs: { color: "black", depressed: "", dark: "" }, + on: { + click: function($event) { + _vm.$store.state.UserRoles = false + } + } + }, + [ + _c("v-icon", { attrs: { dark: "", right: "" } }, [ + _vm._v("fas fa-check") + ]), + _vm._v(" ذخیره ی دسترسی ها\n ") + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) } var staticRenderFns = [] render._withStripped = true @@ -58420,10 +60372,10 @@ render._withStripped = true /***/ }), -/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Comments.vue?vue&type=template&id=7b8fc813&scoped=true&": -/*!******************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Comments.vue?vue&type=template&id=7b8fc813&scoped=true& ***! - \******************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Title.vue?vue&type=template&id=5309aefd&": +/*!********************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Title.vue?vue&type=template&id=5309aefd& ***! + \********************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -58444,9 +60396,57 @@ render._withStripped = true /***/ }), -/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/CreateBusiness.vue?vue&type=template&id=d5ba848a&scoped=true&": +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/AccountBalance.vue?vue&type=template&id=c487d964&scoped=true&": /*!************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/CreateBusiness.vue?vue&type=template&id=d5ba848a&scoped=true& ***! + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/AccountBalance.vue?vue&type=template&id=c487d964&scoped=true& ***! + \************************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div") +} +var staticRenderFns = [] +render._withStripped = true + + + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Comments.vue?vue&type=template&id=7b8fc813&scoped=true&": +/*!******************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Comments.vue?vue&type=template&id=7b8fc813&scoped=true& ***! + \******************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div") +} +var staticRenderFns = [] +render._withStripped = true + + + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/CreateBusiness.vue?vue&type=template&id=d5ba848a&scoped=true&": +/*!************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/CreateBusiness.vue?vue&type=template&id=d5ba848a&scoped=true& ***! \************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -58608,6 +60608,268 @@ render._withStripped = true +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Order/Management.vue?vue&type=template&id=2970ace3&": +/*!**************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Order/Management.vue?vue&type=template&id=2970ace3& ***! + \**************************************************************************************************************************************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + { staticClass: "container_fluid" }, + [ + _c("PageTitle", { + attrs: { + TitleFa: " مدیریت سفارشات ", + TitleEn: " Orders Management ", + Color: "orange darken-3", + TitleFaClass: "WM-Color-Black" + } + }), + _vm._v(" "), + _c( + "v-alert", + { + attrs: { + value: true, + color: "grey lighten-2", + dismissible: "", + outline: "" + } + }, + [ + _c("PartTitle", { + staticClass: "WM-Margin-T-20", + attrs: { + TitleFa: " خلاصه ای از آمار ", + TitleEn: " Statistics Summery ", + ThemeColor: "Orange" + } + }), + _vm._v(" "), + _c( + "v-layout", + { staticClass: "WM-Margin-T-20", attrs: { row: "", wrap: "" } }, + [ + _c( + "v-flex", + { attrs: { xs12: "", sm6: "", md4: "" } }, + [_c("DoughnutChart", { attrs: { height: 280 } })], + 1 + ) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c( + "ul", + { staticClass: "nav nav-tabs WM-Margin-T-20", attrs: { id: "WMTabs" } }, + [ + _vm._l(_vm.Tabs, function(Tab, index) { + return [ + _c(Tab.Type, { + tag: "component", + attrs: { + TitleFa: Tab.NameFa, + TitleEn: Tab.NameEn, + Status: Tab.Status, + Quantity: Tab.Quantity, + SubItems: Tab.SubItems, + TabContent: index, + Color: "Orange" + } + }) + ] + }) + ], + 2 + ), + _vm._v(" "), + _c("div", { staticClass: "tab-content" }, [ + _c( + "div", + { + staticClass: "tab-pane container-fluid active", + attrs: { id: "OngoingOrders" } + }, + [ + _c("PartTitle", { + staticClass: "WM-Margin-T-20", + attrs: { + TitleFa: " سفارشات در حال انجام ", + TitleEn: " Ongoing Orders ", + ThemeColor: "Orange" + } + }), + _vm._v(" "), + _c( + "v-layout", + { staticClass: "WM-Margin-T-20", attrs: { row: "", wrap: "" } }, + [ + _c( + "v-flex", + { attrs: { xs12: "", sm4: "", md3: "" } }, + [ + _c( + "v-menu", + { + attrs: { + "close-on-content-click": false, + "nudge-right": 40, + lazy: "", + transition: "slide-y-transition", + "offset-y": "", + "full-width": "", + "min-width": "290px" + }, + model: { + value: _vm.DateFilterBefore, + callback: function($$v) { + _vm.DateFilterBefore = $$v + }, + expression: "DateFilterBefore" + } + }, + [ + _c("v-text-field", { + attrs: { + slot: "activator", + label: " سفارشات قبل از تاریخ ", + "prepend-icon": "fas fa-calendar-alt", + color: "orange darken-3", + readonly: "" + }, + slot: "activator", + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }), + _vm._v(" "), + _c("v-date-picker", { + attrs: { color: "orange darken-3", locale: "fa-ir" }, + on: { + input: function($event) { + _vm.DateFilterBefore = false + } + }, + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c( + "v-flex", + { attrs: { xs12: "", sm4: "", md3: "" } }, + [ + _c( + "v-menu", + { + attrs: { + "close-on-content-click": false, + "nudge-right": 40, + lazy: "", + transition: "slide-y-transition", + "offset-y": "", + "full-width": "", + "min-width": "290px" + }, + model: { + value: _vm.DateFilterAfter, + callback: function($$v) { + _vm.DateFilterAfter = $$v + }, + expression: "DateFilterAfter" + } + }, + [ + _c("v-text-field", { + attrs: { + slot: "activator", + label: " سفارشات بعد از تاریخ ", + "prepend-icon": "fas fa-calendar-alt", + color: "orange darken-3", + readonly: "" + }, + slot: "activator", + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }), + _vm._v(" "), + _c("v-date-picker", { + attrs: { color: "orange darken-3", locale: "fa-ir" }, + on: { + input: function($event) { + _vm.DateFilterAfter = false + } + }, + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c("div", { + staticClass: "tab-pane container fade", + attrs: { id: "CompletedOrders" } + }) + ]) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true + + + /***/ }), /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/PMs.vue?vue&type=template&id=d5d02832&": @@ -58667,7 +60929,8 @@ var render = function() { attrs: { TitleFa: " دسترسی سریع ", TitleEn: " Quick Links ", - ThemeColor: "LightGray" + Color: "grey lighten-2", + TextColor: "black--text" } }) ], @@ -58756,7 +61019,8 @@ var render = function() { attrs: { TitleFa: " خلاصه ای از آمار ", TitleEn: " Summery of Statistics ", - ThemeColor: "Black" + Color: "grey lighten-2", + TextColor: "black--text" } }) ], @@ -58851,10 +61115,10 @@ render._withStripped = true /***/ }), -/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/WebsiteManagment.vue?vue&type=template&id=43f7e9a2&": -/*!**************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/WebsiteManagment.vue?vue&type=template&id=43f7e9a2& ***! - \**************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Website/Management.vue?vue&type=template&id=17032b94&": +/*!****************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/views/Website/Management.vue?vue&type=template&id=17032b94& ***! + \****************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -58874,7 +61138,7 @@ var render = function() { attrs: { TitleFa: " مدیریت وبسایت ", TitleEn: " Website Management ", - ThemeColor: "Green", + Color: "green darken-3", TitleFaClass: "WM-Color-Black" } }), @@ -58915,10 +61179,177 @@ var render = function() { attrs: { TitleFa: " باشگاه مشتریان ", TitleEn: " Members Club ", - ThemeColor: "Green" + Color: "green darken-3" } }), _vm._v(" "), + _c( + "div", + { staticClass: "row WM-Margin-T-20" }, + [ + _c( + "v-flex", + { attrs: { xs12: "", sm4: "", md3: "" } }, + [ + _c("v-text-field", { + attrs: { + label: " نام کاربر ", + color: "green darken-3", + "prepend-icon": "fas fa-user" + } + }) + ], + 1 + ), + _vm._v(" "), + _c( + "v-flex", + { attrs: { xs12: "", sm4: "", md3: "" } }, + [ + _c( + "v-menu", + { + attrs: { + "close-on-content-click": false, + "nudge-right": 40, + lazy: "", + transition: "slide-y-transition", + "offset-y": "", + "full-width": "", + "min-width": "290px" + }, + model: { + value: _vm.DateFilterBefore, + callback: function($$v) { + _vm.DateFilterBefore = $$v + }, + expression: "DateFilterBefore" + } + }, + [ + _c("v-text-field", { + attrs: { + slot: "activator", + label: " تاریخ عضویت قبل از تاریخ ", + "prepend-icon": "fas fa-calendar-alt", + color: "green darken-3", + readonly: "" + }, + slot: "activator", + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }), + _vm._v(" "), + _c("v-date-picker", { + attrs: { color: "green darken-3", locale: "fa-ir" }, + on: { + input: function($event) { + _vm.DateFilterBefore = false + } + }, + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c( + "v-flex", + { attrs: { xs12: "", sm4: "", md3: "" } }, + [ + _c( + "v-menu", + { + attrs: { + "close-on-content-click": false, + "nudge-right": 40, + lazy: "", + transition: "slide-y-transition", + "offset-y": "", + "full-width": "", + "min-width": "290px" + }, + model: { + value: _vm.DateFilterAfter, + callback: function($$v) { + _vm.DateFilterAfter = $$v + }, + expression: "DateFilterAfter" + } + }, + [ + _c("v-text-field", { + attrs: { + slot: "activator", + label: " تاریخ عضویت بعد از تاریخ ", + "prepend-icon": "fas fa-calendar-alt", + color: "green darken-3", + readonly: "" + }, + slot: "activator", + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }), + _vm._v(" "), + _c("v-date-picker", { + attrs: { color: "green darken-3", locale: "fa-ir" }, + on: { + input: function($event) { + _vm.DateFilterAfter = false + } + }, + model: { + value: _vm.date, + callback: function($$v) { + _vm.date = $$v + }, + expression: "date" + } + }) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), + _c( + "v-flex", + { attrs: { xs12: "", sm4: "", md3: "" } }, + [ + _c("ButtonShodowed", { + attrs: { + BtnClass: "WM-Btn-Green", + Icon: "filter", + Text: " فیلتر " + } + }) + ], + 1 + ) + ], + 1 + ), + _vm._v(" "), _c( "table", { @@ -58958,7 +61389,7 @@ var render = function() { }, nativeOn: { click: function($event) { - _vm.UserDetails = true + _vm.$store.state.UserDetail = true } } }), @@ -58970,7 +61401,7 @@ var render = function() { }, nativeOn: { click: function($event) { - _vm.UserRoles = true + _vm.$store.state.UserRoles = true } } }), @@ -58979,6 +61410,11 @@ var render = function() { attrs: { BtnClass: "WM-Btn-Purple WM-Btn-SM", Icon: "mail" + }, + nativeOn: { + click: function($event) { + _vm.$store.state.SendEmail = true + } } }), _vm._v(" "), @@ -58986,6 +61422,11 @@ var render = function() { attrs: { BtnClass: "WM-Btn-Orange WM-Btn-SM", Icon: "message-text-outline" + }, + nativeOn: { + click: function($event) { + _vm.$store.state.SendSMS = true + } } }), _vm._v(" "), @@ -59030,223 +61471,15 @@ var render = function() { [ _c( "div", - { staticClass: "text-xs-center" }, + { staticClass: "text-xs-center " }, [ - _c( - "v-dialog", - { - attrs: { width: "90%", transition: "slide-x-transition" }, - model: { - value: _vm.UserDetails, - callback: function($$v) { - _vm.UserDetails = $$v - }, - expression: "UserDetails" - } - }, - [ - _c( - "v-card", - [ - _c( - "v-card-title", - { - staticClass: " grey lighten-3", - attrs: { "primary-title": "" } - }, - [ - _c("PartTitle", { - staticClass: "WM-Margin-T-20", - attrs: { - TitleFa: " اطلاعات کاربر ", - TitleEn: " Member's Info ", - ThemeColor: "Cyan" - } - }) - ], - 1 - ), - _vm._v(" "), - _c("v-card-text", [ - _c("div", { staticClass: "row" }, [ - _c("div", { staticClass: "col-md-3 WM-Align-R" }, [ - _c( - "div", - { staticClass: "WM-Font-14 WM-Color-Gray" }, - [ - _c("i", { staticClass: "WMi-user" }), - _vm._v(" نام و نام خانوادگی ") - ] - ), - _vm._v(" "), - _c("div", { staticClass: "WM-Font-20" }, [ - _vm._v(" علیرضا حسنی ") - ]) - ]), - _vm._v(" "), - _c("div", { staticClass: "col-md-3 WM-Align-R" }, [ - _c( - "div", - { staticClass: "WM-Font-14 WM-Color-Gray" }, - [ - _c("i", { staticClass: "WMi-mail-alt" }), - _vm._v(" آدرس آیمیل ") - ] - ), - _vm._v(" "), - _c("div", { staticClass: "WM-Font-20" }, [ - _vm._v(" Alireza-Hassani@outlook.com ") - ]) - ]), - _vm._v(" "), - _c("div", { staticClass: "col-md-3 WM-Align-R" }, [ - _c( - "div", - { staticClass: "WM-Font-14 WM-Color-Gray" }, - [ - _c("i", { staticClass: "WMi-phone" }), - _vm._v(" شماره ی همراه ") - ] - ), - _vm._v(" "), - _c("div", { staticClass: "WM-Font-20" }, [ - _vm._v(" 09127004945 ") - ]) - ]) - ]) - ]), - _vm._v(" "), - _c("v-divider"), - _vm._v(" "), - _c( - "v-card-actions", - [ - _c("v-spacer"), - _vm._v(" "), - _c( - "v-btn", - { - attrs: { color: "cyan", depressed: "", dark: "" }, - on: { - click: function($event) { - _vm.UserDetails = false - } - } - }, - [ - _c("v-icon", { attrs: { dark: "", right: "" } }, [ - _vm._v("check") - ]), - _vm._v( - " بسیار خب، ممنونم\n " - ) - ], - 1 - ) - ], - 1 - ) - ], - 1 - ) - ], - 1 - ) - ], - 1 - ) - ], - _vm._v(" "), - [ - _c( - "div", - { staticClass: "text-xs-center" }, - [ - _c( - "v-dialog", - { - attrs: { width: "60%", transition: "slide-x-transition" }, - model: { - value: _vm.UserRoles, - callback: function($$v) { - _vm.UserRoles = $$v - }, - expression: "UserRoles" - } - }, - [ - _c( - "v-card", - [ - _c( - "v-card-title", - { - staticClass: " grey lighten-3", - attrs: { "primary-title": "" } - }, - [ - _c("PartTitle", { - staticClass: "WM-Margin-T-20", - attrs: { - TitleFa: " دسترسی های این کاربر ", - TitleEn: " Member's Roles ", - ThemeColor: "Black" - } - }) - ], - 1 - ), - _vm._v(" "), - _c("v-card-text", [ - _c("div", { staticClass: "row" }, [ - _c("div", { staticClass: "col-md-1" }, [ - _c("i", { staticClass: "WMi-rss WM-Font-36" }), - _vm._v(" "), - _c( - "div", - { staticStyle: { "margin-top": "-15px" } }, - [_vm._v(" اخبار ")] - ) - ]) - ]) - ]), - _vm._v(" "), - _c("v-divider"), - _vm._v(" "), - _c( - "v-card-actions", - [ - _c("v-spacer"), - _vm._v(" "), - _c( - "v-btn", - { - attrs: { color: "black", depressed: "", dark: "" }, - on: { - click: function($event) { - _vm.UserRoles = false - } - } - }, - [ - _c("v-icon", { attrs: { dark: "", right: "" } }, [ - _vm._v("check") - ]), - _vm._v( - " ذخیره ی دسترسی ها\n " - ) - ], - 1 - ) - ], - 1 - ) - ], - 1 - ) - ], - 1 - ) + _c("UserDetailsModal"), + _vm._v(" "), + _c("UserRolesModal"), + _vm._v(" "), + _c("SendEmailModal"), + _vm._v(" "), + _c("SendSMSModal") ], 1 ) @@ -96854,1158 +99087,207 @@ __webpack_require__.r(__webpack_exports__); * @param {function} h * @returns {array} */ -function rebuildFunctionalSlots(slots, h) { - var children = []; - for (var slot in slots) { - if (slots.hasOwnProperty(slot)) { - children.push(h('template', { slot: slot }, slots[slot])); - } - } - return children; -} - -/***/ }), - -/***/ "./src/util/theme.ts": -/*!***************************!*\ - !*** ./src/util/theme.ts ***! - \***************************/ -/*! exports provided: parse, genStyles, genVariations */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return parse; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "genStyles", function() { return genStyles; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "genVariations", function() { return genVariations; }); -/* harmony import */ var _colorUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colorUtils */ "./src/util/colorUtils.ts"); -/* harmony import */ var _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color/transformSRGB */ "./src/util/color/transformSRGB.ts"); -/* harmony import */ var _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./color/transformCIELAB */ "./src/util/color/transformCIELAB.ts"); -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var __read = undefined && undefined.__read || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { - ar.push(r.value); - } - } catch (error) { - e = { error: error }; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - return ar; -}; - - - -function parse(theme, isItem) { - if (isItem === void 0) { - isItem = false; - } - var colors = Object.keys(theme); - var parsedTheme = {}; - for (var i = 0; i < colors.length; ++i) { - var name = colors[i]; - var value = theme[name]; - if (isItem) { - if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) { - parsedTheme[name] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["colorToHex"])(value); - } - } else if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === 'object') { - parsedTheme[name] = parse(value, true); - } else { - parsedTheme[name] = genVariations(name, Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["colorToInt"])(value)); - } - } - return parsedTheme; -} -/** - * Generate the CSS for a base color (.primary) - */ -var genBaseColor = function genBaseColor(name, value) { - return "\n." + name + " {\n background-color: " + value + " !important;\n border-color: " + value + " !important;\n}\n." + name + "--text {\n color: " + value + " !important;\n caret-color: " + value + " !important;\n}"; -}; -/** - * Generate the CSS for a variant color (.primary.darken-2) - */ -var genVariantColor = function genVariantColor(name, variant, value) { - var _a = __read(variant.split(/(\d)/, 2), 2), - type = _a[0], - n = _a[1]; - return "\n." + name + "." + type + "-" + n + " {\n background-color: " + value + " !important;\n border-color: " + value + " !important;\n}\n." + name + "--text.text--" + type + "-" + n + " {\n color: " + value + " !important;\n caret-color: " + value + " !important;\n}"; -}; -var genColorVariableName = function genColorVariableName(name, variant) { - if (variant === void 0) { - variant = 'base'; - } - return "--v-" + name + "-" + variant; -}; -var genColorVariable = function genColorVariable(name, variant) { - if (variant === void 0) { - variant = 'base'; - } - return "var(" + genColorVariableName(name, variant) + ")"; -}; -function genStyles(theme, cssVar) { - if (cssVar === void 0) { - cssVar = false; - } - var colors = Object.keys(theme); - if (!colors.length) return ''; - var variablesCss = ''; - var css = ''; - var aColor = cssVar ? genColorVariable('primary') : theme.primary.base; - css += "a { color: " + aColor + "; }"; - for (var i = 0; i < colors.length; ++i) { - var name = colors[i]; - var value = theme[name]; - if ((typeof value === "undefined" ? "undefined" : _typeof(value)) !== 'object') continue; - css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base); - cssVar && (variablesCss += " " + genColorVariableName(name) + ": " + value.base + ";\n"); - var variants = Object.keys(value); - for (var i_1 = 0; i_1 < variants.length; ++i_1) { - var variant = variants[i_1]; - var variantValue = value[variant]; - if (variant === 'base') continue; - css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue); - cssVar && (variablesCss += " " + genColorVariableName(name, variant) + ": " + variantValue + ";\n"); - } - } - if (cssVar) { - variablesCss = ":root {\n" + variablesCss + "}\n\n"; - } - return variablesCss + css; -} -function genVariations(name, value) { - var values = { - base: Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["intToHex"])(value) - }; - for (var i = 5; i > 0; --i) { - values["lighten" + i] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["intToHex"])(lighten(value, i)); - } - for (var i = 1; i <= 4; ++i) { - values["darken" + i] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["intToHex"])(darken(value, i)); - } - return values; -} -function lighten(value, amount) { - var lab = _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["fromXYZ"](_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["toXYZ"](value)); - lab[0] = lab[0] + amount * 10; - return _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["fromXYZ"](_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["toXYZ"](lab)); -} -function darken(value, amount) { - var lab = _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["fromXYZ"](_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["toXYZ"](value)); - lab[0] = lab[0] - amount * 10; - return _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["fromXYZ"](_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["toXYZ"](lab)); -} - -/***/ }), - -/***/ "vue": -/*!******************************************************************************!*\ - !*** external {"commonjs":"vue","commonjs2":"vue","amd":"vue","root":"Vue"} ***! - \******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_vue__; - -/***/ }) - -/******/ })["default"]; -}); -//# sourceMappingURL=vuetify.js.map - -/***/ }), - -/***/ "./node_modules/vuetify/dist/vuetify.min.css": -/*!***************************************************!*\ - !*** ./node_modules/vuetify/dist/vuetify.min.css ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - - -var content = __webpack_require__(/*! !../../css-loader??ref--5-1!../../postcss-loader/src??ref--5-2!./vuetify.min.css */ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuetify/dist/vuetify.min.css"); - -if(typeof content === 'string') content = [[module.i, content, '']]; - -var transform; -var insertInto; - - - -var options = {"hmr":true} - -options.transform = transform -options.insertInto = undefined; - -var update = __webpack_require__(/*! ../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); - -if(content.locals) module.exports = content.locals; - -if(false) {} - -/***/ }), - -/***/ "./node_modules/vuex/dist/vuex.esm.js": -/*!********************************************!*\ - !*** ./node_modules/vuex/dist/vuex.esm.js ***! - \********************************************/ -/*! exports provided: Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers, default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Store", function() { return Store; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "install", function() { return install; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapState", function() { return mapState; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapMutations", function() { return mapMutations; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapGetters", function() { return mapGetters; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapActions", function() { return mapActions; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createNamespacedHelpers", function() { return createNamespacedHelpers; }); -/** - * vuex v3.0.1 - * (c) 2017 Evan You - * @license MIT - */ -var applyMixin = function (Vue) { - var version = Number(Vue.version.split('.')[0]); - - if (version >= 2) { - Vue.mixin({ beforeCreate: vuexInit }); - } else { - // override init and inject vuex init procedure - // for 1.x backwards compatibility. - var _init = Vue.prototype._init; - Vue.prototype._init = function (options) { - if ( options === void 0 ) options = {}; - - options.init = options.init - ? [vuexInit].concat(options.init) - : vuexInit; - _init.call(this, options); - }; - } - - /** - * Vuex init hook, injected into each instances init hooks list. - */ - - function vuexInit () { - var options = this.$options; - // store injection - if (options.store) { - this.$store = typeof options.store === 'function' - ? options.store() - : options.store; - } else if (options.parent && options.parent.$store) { - this.$store = options.parent.$store; - } - } -}; - -var devtoolHook = - typeof window !== 'undefined' && - window.__VUE_DEVTOOLS_GLOBAL_HOOK__; - -function devtoolPlugin (store) { - if (!devtoolHook) { return } - - store._devtoolHook = devtoolHook; - - devtoolHook.emit('vuex:init', store); - - devtoolHook.on('vuex:travel-to-state', function (targetState) { - store.replaceState(targetState); - }); - - store.subscribe(function (mutation, state) { - devtoolHook.emit('vuex:mutation', mutation, state); - }); -} - -/** - * Get the first item that pass the test - * by second argument function - * - * @param {Array} list - * @param {Function} f - * @return {*} - */ -/** - * Deep copy the given object considering circular structure. - * This function caches all nested objects and its copies. - * If it detects circular structure, use cached copy to avoid infinite loop. - * - * @param {*} obj - * @param {Array<Object>} cache - * @return {*} - */ - - -/** - * forEach for object - */ -function forEachValue (obj, fn) { - Object.keys(obj).forEach(function (key) { return fn(obj[key], key); }); -} - -function isObject (obj) { - return obj !== null && typeof obj === 'object' -} - -function isPromise (val) { - return val && typeof val.then === 'function' -} - -function assert (condition, msg) { - if (!condition) { throw new Error(("[vuex] " + msg)) } -} - -var Module = function Module (rawModule, runtime) { - this.runtime = runtime; - this._children = Object.create(null); - this._rawModule = rawModule; - var rawState = rawModule.state; - this.state = (typeof rawState === 'function' ? rawState() : rawState) || {}; -}; - -var prototypeAccessors$1 = { namespaced: { configurable: true } }; - -prototypeAccessors$1.namespaced.get = function () { - return !!this._rawModule.namespaced -}; - -Module.prototype.addChild = function addChild (key, module) { - this._children[key] = module; -}; - -Module.prototype.removeChild = function removeChild (key) { - delete this._children[key]; -}; - -Module.prototype.getChild = function getChild (key) { - return this._children[key] -}; - -Module.prototype.update = function update (rawModule) { - this._rawModule.namespaced = rawModule.namespaced; - if (rawModule.actions) { - this._rawModule.actions = rawModule.actions; - } - if (rawModule.mutations) { - this._rawModule.mutations = rawModule.mutations; - } - if (rawModule.getters) { - this._rawModule.getters = rawModule.getters; - } -}; - -Module.prototype.forEachChild = function forEachChild (fn) { - forEachValue(this._children, fn); -}; - -Module.prototype.forEachGetter = function forEachGetter (fn) { - if (this._rawModule.getters) { - forEachValue(this._rawModule.getters, fn); - } -}; - -Module.prototype.forEachAction = function forEachAction (fn) { - if (this._rawModule.actions) { - forEachValue(this._rawModule.actions, fn); - } -}; - -Module.prototype.forEachMutation = function forEachMutation (fn) { - if (this._rawModule.mutations) { - forEachValue(this._rawModule.mutations, fn); - } -}; - -Object.defineProperties( Module.prototype, prototypeAccessors$1 ); - -var ModuleCollection = function ModuleCollection (rawRootModule) { - // register root module (Vuex.Store options) - this.register([], rawRootModule, false); -}; - -ModuleCollection.prototype.get = function get (path) { - return path.reduce(function (module, key) { - return module.getChild(key) - }, this.root) -}; - -ModuleCollection.prototype.getNamespace = function getNamespace (path) { - var module = this.root; - return path.reduce(function (namespace, key) { - module = module.getChild(key); - return namespace + (module.namespaced ? key + '/' : '') - }, '') -}; - -ModuleCollection.prototype.update = function update$1 (rawRootModule) { - update([], this.root, rawRootModule); -}; - -ModuleCollection.prototype.register = function register (path, rawModule, runtime) { - var this$1 = this; - if ( runtime === void 0 ) runtime = true; - - if (true) { - assertRawModule(path, rawModule); - } - - var newModule = new Module(rawModule, runtime); - if (path.length === 0) { - this.root = newModule; - } else { - var parent = this.get(path.slice(0, -1)); - parent.addChild(path[path.length - 1], newModule); - } - - // register nested modules - if (rawModule.modules) { - forEachValue(rawModule.modules, function (rawChildModule, key) { - this$1.register(path.concat(key), rawChildModule, runtime); - }); - } -}; - -ModuleCollection.prototype.unregister = function unregister (path) { - var parent = this.get(path.slice(0, -1)); - var key = path[path.length - 1]; - if (!parent.getChild(key).runtime) { return } - - parent.removeChild(key); -}; - -function update (path, targetModule, newModule) { - if (true) { - assertRawModule(path, newModule); - } - - // update target module - targetModule.update(newModule); - - // update nested modules - if (newModule.modules) { - for (var key in newModule.modules) { - if (!targetModule.getChild(key)) { - if (true) { - console.warn( - "[vuex] trying to add a new module '" + key + "' on hot reloading, " + - 'manual reload is needed' - ); - } - return - } - update( - path.concat(key), - targetModule.getChild(key), - newModule.modules[key] - ); - } - } -} - -var functionAssert = { - assert: function (value) { return typeof value === 'function'; }, - expected: 'function' -}; - -var objectAssert = { - assert: function (value) { return typeof value === 'function' || - (typeof value === 'object' && typeof value.handler === 'function'); }, - expected: 'function or object with "handler" function' -}; - -var assertTypes = { - getters: functionAssert, - mutations: functionAssert, - actions: objectAssert -}; - -function assertRawModule (path, rawModule) { - Object.keys(assertTypes).forEach(function (key) { - if (!rawModule[key]) { return } - - var assertOptions = assertTypes[key]; - - forEachValue(rawModule[key], function (value, type) { - assert( - assertOptions.assert(value), - makeAssertionMessage(path, key, type, value, assertOptions.expected) - ); - }); - }); -} - -function makeAssertionMessage (path, key, type, value, expected) { - var buf = key + " should be " + expected + " but \"" + key + "." + type + "\""; - if (path.length > 0) { - buf += " in module \"" + (path.join('.')) + "\""; - } - buf += " is " + (JSON.stringify(value)) + "."; - return buf -} - -var Vue; // bind on install - -var Store = function Store (options) { - var this$1 = this; - if ( options === void 0 ) options = {}; - - // Auto install if it is not done yet and `window` has `Vue`. - // To allow users to avoid auto-installation in some cases, - // this code should be placed here. See #731 - if (!Vue && typeof window !== 'undefined' && window.Vue) { - install(window.Vue); - } - - if (true) { - assert(Vue, "must call Vue.use(Vuex) before creating a store instance."); - assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser."); - assert(this instanceof Store, "Store must be called with the new operator."); - } - - var plugins = options.plugins; if ( plugins === void 0 ) plugins = []; - var strict = options.strict; if ( strict === void 0 ) strict = false; - - var state = options.state; if ( state === void 0 ) state = {}; - if (typeof state === 'function') { - state = state() || {}; - } - - // store internal state - this._committing = false; - this._actions = Object.create(null); - this._actionSubscribers = []; - this._mutations = Object.create(null); - this._wrappedGetters = Object.create(null); - this._modules = new ModuleCollection(options); - this._modulesNamespaceMap = Object.create(null); - this._subscribers = []; - this._watcherVM = new Vue(); - - // bind commit and dispatch to self - var store = this; - var ref = this; - var dispatch = ref.dispatch; - var commit = ref.commit; - this.dispatch = function boundDispatch (type, payload) { - return dispatch.call(store, type, payload) - }; - this.commit = function boundCommit (type, payload, options) { - return commit.call(store, type, payload, options) - }; - - // strict mode - this.strict = strict; - - // init root module. - // this also recursively registers all sub-modules - // and collects all module getters inside this._wrappedGetters - installModule(this, state, [], this._modules.root); - - // initialize the store vm, which is responsible for the reactivity - // (also registers _wrappedGetters as computed properties) - resetStoreVM(this, state); - - // apply plugins - plugins.forEach(function (plugin) { return plugin(this$1); }); - - if (Vue.config.devtools) { - devtoolPlugin(this); - } -}; - -var prototypeAccessors = { state: { configurable: true } }; - -prototypeAccessors.state.get = function () { - return this._vm._data.$$state -}; - -prototypeAccessors.state.set = function (v) { - if (true) { - assert(false, "Use store.replaceState() to explicit replace store state."); - } -}; - -Store.prototype.commit = function commit (_type, _payload, _options) { - var this$1 = this; - - // check object-style commit - var ref = unifyObjectStyle(_type, _payload, _options); - var type = ref.type; - var payload = ref.payload; - var options = ref.options; - - var mutation = { type: type, payload: payload }; - var entry = this._mutations[type]; - if (!entry) { - if (true) { - console.error(("[vuex] unknown mutation type: " + type)); - } - return - } - this._withCommit(function () { - entry.forEach(function commitIterator (handler) { - handler(payload); - }); - }); - this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); }); - - if ( - true && - options && options.silent - ) { - console.warn( - "[vuex] mutation type: " + type + ". Silent option has been removed. " + - 'Use the filter functionality in the vue-devtools' - ); - } -}; - -Store.prototype.dispatch = function dispatch (_type, _payload) { - var this$1 = this; - - // check object-style dispatch - var ref = unifyObjectStyle(_type, _payload); - var type = ref.type; - var payload = ref.payload; - - var action = { type: type, payload: payload }; - var entry = this._actions[type]; - if (!entry) { - if (true) { - console.error(("[vuex] unknown action type: " + type)); - } - return - } - - this._actionSubscribers.forEach(function (sub) { return sub(action, this$1.state); }); - - return entry.length > 1 - ? Promise.all(entry.map(function (handler) { return handler(payload); })) - : entry[0](payload) -}; - -Store.prototype.subscribe = function subscribe (fn) { - return genericSubscribe(fn, this._subscribers) -}; - -Store.prototype.subscribeAction = function subscribeAction (fn) { - return genericSubscribe(fn, this._actionSubscribers) -}; - -Store.prototype.watch = function watch (getter, cb, options) { - var this$1 = this; - - if (true) { - assert(typeof getter === 'function', "store.watch only accepts a function."); - } - return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options) -}; - -Store.prototype.replaceState = function replaceState (state) { - var this$1 = this; - - this._withCommit(function () { - this$1._vm._data.$$state = state; - }); -}; - -Store.prototype.registerModule = function registerModule (path, rawModule, options) { - if ( options === void 0 ) options = {}; - - if (typeof path === 'string') { path = [path]; } - - if (true) { - assert(Array.isArray(path), "module path must be a string or an Array."); - assert(path.length > 0, 'cannot register the root module by using registerModule.'); - } - - this._modules.register(path, rawModule); - installModule(this, this.state, path, this._modules.get(path), options.preserveState); - // reset store to update getters... - resetStoreVM(this, this.state); -}; - -Store.prototype.unregisterModule = function unregisterModule (path) { - var this$1 = this; - - if (typeof path === 'string') { path = [path]; } - - if (true) { - assert(Array.isArray(path), "module path must be a string or an Array."); - } - - this._modules.unregister(path); - this._withCommit(function () { - var parentState = getNestedState(this$1.state, path.slice(0, -1)); - Vue.delete(parentState, path[path.length - 1]); - }); - resetStore(this); -}; - -Store.prototype.hotUpdate = function hotUpdate (newOptions) { - this._modules.update(newOptions); - resetStore(this, true); -}; - -Store.prototype._withCommit = function _withCommit (fn) { - var committing = this._committing; - this._committing = true; - fn(); - this._committing = committing; -}; - -Object.defineProperties( Store.prototype, prototypeAccessors ); - -function genericSubscribe (fn, subs) { - if (subs.indexOf(fn) < 0) { - subs.push(fn); - } - return function () { - var i = subs.indexOf(fn); - if (i > -1) { - subs.splice(i, 1); - } - } -} - -function resetStore (store, hot) { - store._actions = Object.create(null); - store._mutations = Object.create(null); - store._wrappedGetters = Object.create(null); - store._modulesNamespaceMap = Object.create(null); - var state = store.state; - // init all modules - installModule(store, state, [], store._modules.root, true); - // reset vm - resetStoreVM(store, state, hot); -} - -function resetStoreVM (store, state, hot) { - var oldVm = store._vm; - - // bind store public getters - store.getters = {}; - var wrappedGetters = store._wrappedGetters; - var computed = {}; - forEachValue(wrappedGetters, function (fn, key) { - // use computed to leverage its lazy-caching mechanism - computed[key] = function () { return fn(store); }; - Object.defineProperty(store.getters, key, { - get: function () { return store._vm[key]; }, - enumerable: true // for local getters - }); - }); - - // use a Vue instance to store the state tree - // suppress warnings just in case the user has added - // some funky global mixins - var silent = Vue.config.silent; - Vue.config.silent = true; - store._vm = new Vue({ - data: { - $$state: state - }, - computed: computed - }); - Vue.config.silent = silent; - - // enable strict mode for new vm - if (store.strict) { - enableStrictMode(store); - } - - if (oldVm) { - if (hot) { - // dispatch changes in all subscribed watchers - // to force getter re-evaluation for hot reloading. - store._withCommit(function () { - oldVm._data.$$state = null; - }); - } - Vue.nextTick(function () { return oldVm.$destroy(); }); - } -} - -function installModule (store, rootState, path, module, hot) { - var isRoot = !path.length; - var namespace = store._modules.getNamespace(path); - - // register in namespace map - if (module.namespaced) { - store._modulesNamespaceMap[namespace] = module; - } - - // set state - if (!isRoot && !hot) { - var parentState = getNestedState(rootState, path.slice(0, -1)); - var moduleName = path[path.length - 1]; - store._withCommit(function () { - Vue.set(parentState, moduleName, module.state); - }); - } - - var local = module.context = makeLocalContext(store, namespace, path); - - module.forEachMutation(function (mutation, key) { - var namespacedType = namespace + key; - registerMutation(store, namespacedType, mutation, local); - }); - - module.forEachAction(function (action, key) { - var type = action.root ? key : namespace + key; - var handler = action.handler || action; - registerAction(store, type, handler, local); - }); - - module.forEachGetter(function (getter, key) { - var namespacedType = namespace + key; - registerGetter(store, namespacedType, getter, local); - }); - - module.forEachChild(function (child, key) { - installModule(store, rootState, path.concat(key), child, hot); - }); -} - -/** - * make localized dispatch, commit, getters and state - * if there is no namespace, just use root ones - */ -function makeLocalContext (store, namespace, path) { - var noNamespace = namespace === ''; - - var local = { - dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) { - var args = unifyObjectStyle(_type, _payload, _options); - var payload = args.payload; - var options = args.options; - var type = args.type; - - if (!options || !options.root) { - type = namespace + type; - if ( true && !store._actions[type]) { - console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type)); - return - } - } - - return store.dispatch(type, payload) - }, - - commit: noNamespace ? store.commit : function (_type, _payload, _options) { - var args = unifyObjectStyle(_type, _payload, _options); - var payload = args.payload; - var options = args.options; - var type = args.type; - - if (!options || !options.root) { - type = namespace + type; - if ( true && !store._mutations[type]) { - console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type)); - return +function rebuildFunctionalSlots(slots, h) { + var children = []; + for (var slot in slots) { + if (slots.hasOwnProperty(slot)) { + children.push(h('template', { slot: slot }, slots[slot])); } - } - - store.commit(type, payload, options); - } - }; - - // getters and state object must be gotten lazily - // because they will be changed by vm update - Object.defineProperties(local, { - getters: { - get: noNamespace - ? function () { return store.getters; } - : function () { return makeLocalGetters(store, namespace); } - }, - state: { - get: function () { return getNestedState(store.state, path); } } - }); - - return local + return children; } -function makeLocalGetters (store, namespace) { - var gettersProxy = {}; +/***/ }), - var splitPos = namespace.length; - Object.keys(store.getters).forEach(function (type) { - // skip if the target getter is not match this namespace - if (type.slice(0, splitPos) !== namespace) { return } +/***/ "./src/util/theme.ts": +/*!***************************!*\ + !*** ./src/util/theme.ts ***! + \***************************/ +/*! exports provided: parse, genStyles, genVariations */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // extract local getter type - var localType = type.slice(splitPos); +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return parse; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "genStyles", function() { return genStyles; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "genVariations", function() { return genVariations; }); +/* harmony import */ var _colorUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colorUtils */ "./src/util/colorUtils.ts"); +/* harmony import */ var _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color/transformSRGB */ "./src/util/color/transformSRGB.ts"); +/* harmony import */ var _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./color/transformCIELAB */ "./src/util/color/transformCIELAB.ts"); +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - // Add a port to the getters proxy. - // Define as getter property because - // we do not want to evaluate the getters in this time. - Object.defineProperty(gettersProxy, localType, { - get: function () { return store.getters[type]; }, - enumerable: true - }); - }); +var __read = undefined && undefined.__read || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), + r, + ar = [], + e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { + ar.push(r.value); + } + } catch (error) { + e = { error: error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; +}; - return gettersProxy -} -function registerMutation (store, type, handler, local) { - var entry = store._mutations[type] || (store._mutations[type] = []); - entry.push(function wrappedMutationHandler (payload) { - handler.call(store, local.state, payload); - }); -} -function registerAction (store, type, handler, local) { - var entry = store._actions[type] || (store._actions[type] = []); - entry.push(function wrappedActionHandler (payload, cb) { - var res = handler.call(store, { - dispatch: local.dispatch, - commit: local.commit, - getters: local.getters, - state: local.state, - rootGetters: store.getters, - rootState: store.state - }, payload, cb); - if (!isPromise(res)) { - res = Promise.resolve(res); +function parse(theme, isItem) { + if (isItem === void 0) { + isItem = false; } - if (store._devtoolHook) { - return res.catch(function (err) { - store._devtoolHook.emit('vuex:error', err); - throw err - }) - } else { - return res + var colors = Object.keys(theme); + var parsedTheme = {}; + for (var i = 0; i < colors.length; ++i) { + var name = colors[i]; + var value = theme[name]; + if (isItem) { + if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) { + parsedTheme[name] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["colorToHex"])(value); + } + } else if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === 'object') { + parsedTheme[name] = parse(value, true); + } else { + parsedTheme[name] = genVariations(name, Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["colorToInt"])(value)); + } } - }); + return parsedTheme; } - -function registerGetter (store, type, rawGetter, local) { - if (store._wrappedGetters[type]) { - if (true) { - console.error(("[vuex] duplicate getter key: " + type)); +/** + * Generate the CSS for a base color (.primary) + */ +var genBaseColor = function genBaseColor(name, value) { + return "\n." + name + " {\n background-color: " + value + " !important;\n border-color: " + value + " !important;\n}\n." + name + "--text {\n color: " + value + " !important;\n caret-color: " + value + " !important;\n}"; +}; +/** + * Generate the CSS for a variant color (.primary.darken-2) + */ +var genVariantColor = function genVariantColor(name, variant, value) { + var _a = __read(variant.split(/(\d)/, 2), 2), + type = _a[0], + n = _a[1]; + return "\n." + name + "." + type + "-" + n + " {\n background-color: " + value + " !important;\n border-color: " + value + " !important;\n}\n." + name + "--text.text--" + type + "-" + n + " {\n color: " + value + " !important;\n caret-color: " + value + " !important;\n}"; +}; +var genColorVariableName = function genColorVariableName(name, variant) { + if (variant === void 0) { + variant = 'base'; } - return - } - store._wrappedGetters[type] = function wrappedGetter (store) { - return rawGetter( - local.state, // local state - local.getters, // local getters - store.state, // root state - store.getters // root getters - ) - }; -} - -function enableStrictMode (store) { - store._vm.$watch(function () { return this._data.$$state }, function () { - if (true) { - assert(store._committing, "Do not mutate vuex store state outside mutation handlers."); + return "--v-" + name + "-" + variant; +}; +var genColorVariable = function genColorVariable(name, variant) { + if (variant === void 0) { + variant = 'base'; } - }, { deep: true, sync: true }); + return "var(" + genColorVariableName(name, variant) + ")"; +}; +function genStyles(theme, cssVar) { + if (cssVar === void 0) { + cssVar = false; + } + var colors = Object.keys(theme); + if (!colors.length) return ''; + var variablesCss = ''; + var css = ''; + var aColor = cssVar ? genColorVariable('primary') : theme.primary.base; + css += "a { color: " + aColor + "; }"; + for (var i = 0; i < colors.length; ++i) { + var name = colors[i]; + var value = theme[name]; + if ((typeof value === "undefined" ? "undefined" : _typeof(value)) !== 'object') continue; + css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base); + cssVar && (variablesCss += " " + genColorVariableName(name) + ": " + value.base + ";\n"); + var variants = Object.keys(value); + for (var i_1 = 0; i_1 < variants.length; ++i_1) { + var variant = variants[i_1]; + var variantValue = value[variant]; + if (variant === 'base') continue; + css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue); + cssVar && (variablesCss += " " + genColorVariableName(name, variant) + ": " + variantValue + ";\n"); + } + } + if (cssVar) { + variablesCss = ":root {\n" + variablesCss + "}\n\n"; + } + return variablesCss + css; } - -function getNestedState (state, path) { - return path.length - ? path.reduce(function (state, key) { return state[key]; }, state) - : state +function genVariations(name, value) { + var values = { + base: Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["intToHex"])(value) + }; + for (var i = 5; i > 0; --i) { + values["lighten" + i] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["intToHex"])(lighten(value, i)); + } + for (var i = 1; i <= 4; ++i) { + values["darken" + i] = Object(_colorUtils__WEBPACK_IMPORTED_MODULE_0__["intToHex"])(darken(value, i)); + } + return values; } - -function unifyObjectStyle (type, payload, options) { - if (isObject(type) && type.type) { - options = payload; - payload = type; - type = type.type; - } - - if (true) { - assert(typeof type === 'string', ("Expects string as the type, but found " + (typeof type) + ".")); - } - - return { type: type, payload: payload, options: options } +function lighten(value, amount) { + var lab = _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["fromXYZ"](_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["toXYZ"](value)); + lab[0] = lab[0] + amount * 10; + return _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["fromXYZ"](_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["toXYZ"](lab)); } - -function install (_Vue) { - if (Vue && _Vue === Vue) { - if (true) { - console.error( - '[vuex] already installed. Vue.use(Vuex) should be called only once.' - ); - } - return - } - Vue = _Vue; - applyMixin(Vue); +function darken(value, amount) { + var lab = _color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["fromXYZ"](_color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["toXYZ"](value)); + lab[0] = lab[0] - amount * 10; + return _color_transformSRGB__WEBPACK_IMPORTED_MODULE_1__["fromXYZ"](_color_transformCIELAB__WEBPACK_IMPORTED_MODULE_2__["toXYZ"](lab)); } -var mapState = normalizeNamespace(function (namespace, states) { - var res = {}; - normalizeMap(states).forEach(function (ref) { - var key = ref.key; - var val = ref.val; +/***/ }), - res[key] = function mappedState () { - var state = this.$store.state; - var getters = this.$store.getters; - if (namespace) { - var module = getModuleByNamespace(this.$store, 'mapState', namespace); - if (!module) { - return - } - state = module.context.state; - getters = module.context.getters; - } - return typeof val === 'function' - ? val.call(this, state, getters) - : state[val] - }; - // mark vuex getter for devtools - res[key].vuex = true; - }); - return res -}); +/***/ "vue": +/*!******************************************************************************!*\ + !*** external {"commonjs":"vue","commonjs2":"vue","amd":"vue","root":"Vue"} ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { -var mapMutations = normalizeNamespace(function (namespace, mutations) { - var res = {}; - normalizeMap(mutations).forEach(function (ref) { - var key = ref.key; - var val = ref.val; +module.exports = __WEBPACK_EXTERNAL_MODULE_vue__; - res[key] = function mappedMutation () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; +/***/ }) - var commit = this.$store.commit; - if (namespace) { - var module = getModuleByNamespace(this.$store, 'mapMutations', namespace); - if (!module) { - return - } - commit = module.context.commit; - } - return typeof val === 'function' - ? val.apply(this, [commit].concat(args)) - : commit.apply(this.$store, [val].concat(args)) - }; - }); - return res +/******/ })["default"]; }); +//# sourceMappingURL=vuetify.js.map -var mapGetters = normalizeNamespace(function (namespace, getters) { - var res = {}; - normalizeMap(getters).forEach(function (ref) { - var key = ref.key; - var val = ref.val; +/***/ }), - val = namespace + val; - res[key] = function mappedGetter () { - if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) { - return - } - if ( true && !(val in this.$store.getters)) { - console.error(("[vuex] unknown getter: " + val)); - return - } - return this.$store.getters[val] - }; - // mark vuex getter for devtools - res[key].vuex = true; - }); - return res -}); +/***/ "./node_modules/vuetify/dist/vuetify.min.css": +/*!***************************************************!*\ + !*** ./node_modules/vuetify/dist/vuetify.min.css ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { -var mapActions = normalizeNamespace(function (namespace, actions) { - var res = {}; - normalizeMap(actions).forEach(function (ref) { - var key = ref.key; - var val = ref.val; - res[key] = function mappedAction () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; +var content = __webpack_require__(/*! !../../css-loader??ref--5-1!../../postcss-loader/src??ref--5-2!./vuetify.min.css */ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/vuetify/dist/vuetify.min.css"); - var dispatch = this.$store.dispatch; - if (namespace) { - var module = getModuleByNamespace(this.$store, 'mapActions', namespace); - if (!module) { - return - } - dispatch = module.context.dispatch; - } - return typeof val === 'function' - ? val.apply(this, [dispatch].concat(args)) - : dispatch.apply(this.$store, [val].concat(args)) - }; - }); - return res -}); +if(typeof content === 'string') content = [[module.i, content, '']]; -var createNamespacedHelpers = function (namespace) { return ({ - mapState: mapState.bind(null, namespace), - mapGetters: mapGetters.bind(null, namespace), - mapMutations: mapMutations.bind(null, namespace), - mapActions: mapActions.bind(null, namespace) -}); }; +var transform; +var insertInto; -function normalizeMap (map) { - return Array.isArray(map) - ? map.map(function (key) { return ({ key: key, val: key }); }) - : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); }) -} -function normalizeNamespace (fn) { - return function (namespace, map) { - if (typeof namespace !== 'string') { - map = namespace; - namespace = ''; - } else if (namespace.charAt(namespace.length - 1) !== '/') { - namespace += '/'; - } - return fn(namespace, map) - } -} -function getModuleByNamespace (store, helper, namespace) { - var module = store._modulesNamespaceMap[namespace]; - if ( true && !module) { - console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace)); - } - return module -} +var options = {"hmr":true} -var index_esm = { - Store: Store, - install: install, - version: '3.0.1', - mapState: mapState, - mapMutations: mapMutations, - mapGetters: mapGetters, - mapActions: mapActions, - createNamespacedHelpers: createNamespacedHelpers -}; +options.transform = transform +options.insertInto = undefined; +var update = __webpack_require__(/*! ../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options); -/* harmony default export */ __webpack_exports__["default"] = (index_esm); +if(content.locals) module.exports = content.locals; +if(false) {} /***/ }), @@ -98187,14 +99469,16 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var bootstrap_select__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(bootstrap_select__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var bootstrap_select_dist_css_bootstrap_select_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! bootstrap-select/dist/css/bootstrap-select.css */ "./node_modules/bootstrap-select/dist/css/bootstrap-select.css"); /* harmony import */ var bootstrap_select_dist_css_bootstrap_select_css__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(bootstrap_select_dist_css_bootstrap_select_css__WEBPACK_IMPORTED_MODULE_10__); -/* harmony import */ var material_design_icons_iconfont_dist_material_design_icons_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! material-design-icons-iconfont/dist/material-design-icons.css */ "./node_modules/material-design-icons-iconfont/dist/material-design-icons.css"); -/* harmony import */ var material_design_icons_iconfont_dist_material_design_icons_css__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(material_design_icons_iconfont_dist_material_design_icons_css__WEBPACK_IMPORTED_MODULE_11__); -/* harmony import */ var vuetify_dist_vuetify_min_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vuetify/dist/vuetify.min.css */ "./node_modules/vuetify/dist/vuetify.min.css"); -/* harmony import */ var vuetify_dist_vuetify_min_css__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(vuetify_dist_vuetify_min_css__WEBPACK_IMPORTED_MODULE_12__); -/* harmony import */ var _assets_Font_Icons_css_fontello_css__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./assets/Font-Icons/css/fontello.css */ "./resources/js/assets/Font-Icons/css/fontello.css"); -/* harmony import */ var _assets_Font_Icons_css_fontello_css__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_assets_Font_Icons_css_fontello_css__WEBPACK_IMPORTED_MODULE_13__); -/* harmony import */ var _scss_style_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./scss/style.scss */ "./resources/js/scss/style.scss"); -/* harmony import */ var _scss_style_scss__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_scss_style_scss__WEBPACK_IMPORTED_MODULE_14__); +/* harmony import */ var vuetify_dist_vuetify_min_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vuetify/dist/vuetify.min.css */ "./node_modules/vuetify/dist/vuetify.min.css"); +/* harmony import */ var vuetify_dist_vuetify_min_css__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(vuetify_dist_vuetify_min_css__WEBPACK_IMPORTED_MODULE_11__); +/* harmony import */ var _assets_Font_Icons_css_fontello_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./assets/Font-Icons/css/fontello.css */ "./resources/js/assets/Font-Icons/css/fontello.css"); +/* harmony import */ var _assets_Font_Icons_css_fontello_css__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_assets_Font_Icons_css_fontello_css__WEBPACK_IMPORTED_MODULE_12__); +/* harmony import */ var _scss_style_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./scss/style.scss */ "./resources/js/scss/style.scss"); +/* harmony import */ var _scss_style_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_scss_style_scss__WEBPACK_IMPORTED_MODULE_13__); +/* harmony import */ var _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/Dividers/PartTitle.vue */ "./resources/js/components/Dividers/PartTitle.vue"); +/* harmony import */ var _components_Dividers_PageTitle_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/Dividers/PageTitle.vue */ "./resources/js/components/Dividers/PageTitle.vue"); +/* harmony import */ var _components_Inputs_Checkbox_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/Inputs/Checkbox.vue */ "./resources/js/components/Inputs/Checkbox.vue"); +/* harmony import */ var _components_Inputs_ButtonShodowed_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/Inputs/ButtonShodowed.vue */ "./resources/js/components/Inputs/ButtonShodowed.vue"); @@ -98205,13 +99489,23 @@ __webpack_require__.r(__webpack_exports__); - - // import 'font-awesome/css/font-awesome.min.css' + // import 'material-design-icons-iconfont/dist/material-design-icons.css' +// import '@mdi/font/css/materialdesignicons.css' +// import 'font-awesome/css/font-awesome.min.css' // Ensure you are using css-loader + // components + + + + +vue__WEBPACK_IMPORTED_MODULE_0___default.a.component('PartTitle', _components_Dividers_PartTitle_vue__WEBPACK_IMPORTED_MODULE_14__["default"]); +vue__WEBPACK_IMPORTED_MODULE_0___default.a.component('PageTitle', _components_Dividers_PageTitle_vue__WEBPACK_IMPORTED_MODULE_15__["default"]); +vue__WEBPACK_IMPORTED_MODULE_0___default.a.component('Checkbox', _components_Inputs_Checkbox_vue__WEBPACK_IMPORTED_MODULE_16__["default"]); +vue__WEBPACK_IMPORTED_MODULE_0___default.a.component('ButtonShodowed', _components_Inputs_ButtonShodowed_vue__WEBPACK_IMPORTED_MODULE_17__["default"]); /** * First we will load all of this project's JavaScript dependencies which * includes Vue and other libraries. It is a great starting point when @@ -98236,7 +99530,8 @@ window.Vue = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common. */ vue__WEBPACK_IMPORTED_MODULE_0___default.a.use(vuetify__WEBPACK_IMPORTED_MODULE_5___default.a, { - iconfont: 'fa' || false + iconfont: 'fa', + rtl: true }); // Vue.config.productionTip = false; vue__WEBPACK_IMPORTED_MODULE_0___default.a.use(vue_scroll_reveal__WEBPACK_IMPORTED_MODULE_4___default.a, { @@ -98890,6 +100185,56 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./resources/js/components/Charts/DoughnutChart.vue": +/*!**********************************************************!*\ + !*** ./resources/js/components/Charts/DoughnutChart.vue ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _DoughnutChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DoughnutChart.vue?vue&type=script&lang=js& */ "./resources/js/components/Charts/DoughnutChart.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); +var render, staticRenderFns + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__["default"])( + _DoughnutChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"], + render, + staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/Charts/DoughnutChart.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/Charts/DoughnutChart.vue?vue&type=script&lang=js&": +/*!***********************************************************************************!*\ + !*** ./resources/js/components/Charts/DoughnutChart.vue?vue&type=script&lang=js& ***! + \***********************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DoughnutChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./DoughnutChart.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Charts/DoughnutChart.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DoughnutChart_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + /***/ "./resources/js/components/Charts/LineChart.vue": /*!******************************************************!*\ !*** ./resources/js/components/Charts/LineChart.vue ***! @@ -99145,6 +100490,75 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./resources/js/components/Inputs/Checkbox.vue": +/*!*****************************************************!*\ + !*** ./resources/js/components/Inputs/Checkbox.vue ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _Checkbox_vue_vue_type_template_id_fb3cd5a4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Checkbox.vue?vue&type=template&id=fb3cd5a4& */ "./resources/js/components/Inputs/Checkbox.vue?vue&type=template&id=fb3cd5a4&"); +/* harmony import */ var _Checkbox_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Checkbox.vue?vue&type=script&lang=js& */ "./resources/js/components/Inputs/Checkbox.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _Checkbox_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _Checkbox_vue_vue_type_template_id_fb3cd5a4___WEBPACK_IMPORTED_MODULE_0__["render"], + _Checkbox_vue_vue_type_template_id_fb3cd5a4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/Inputs/Checkbox.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/Inputs/Checkbox.vue?vue&type=script&lang=js&": +/*!******************************************************************************!*\ + !*** ./resources/js/components/Inputs/Checkbox.vue?vue&type=script&lang=js& ***! + \******************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Checkbox_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Checkbox.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/Checkbox.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Checkbox_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/components/Inputs/Checkbox.vue?vue&type=template&id=fb3cd5a4&": +/*!************************************************************************************!*\ + !*** ./resources/js/components/Inputs/Checkbox.vue?vue&type=template&id=fb3cd5a4& ***! + \************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Checkbox_vue_vue_type_template_id_fb3cd5a4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./Checkbox.vue?vue&type=template&id=fb3cd5a4& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Inputs/Checkbox.vue?vue&type=template&id=fb3cd5a4&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Checkbox_vue_vue_type_template_id_fb3cd5a4___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Checkbox_vue_vue_type_template_id_fb3cd5a4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + /***/ }), /***/ "./resources/js/components/Inputs/SelectPicker.vue": @@ -99330,7 +100744,7 @@ __webpack_require__.r(__webpack_exports__); "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _QuickLink_vue_vue_type_template_id_43ff272f_lang_pug___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QuickLink.vue?vue&type=template&id=43ff272f&lang=pug& */ "./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&lang=pug&"); +/* harmony import */ var _QuickLink_vue_vue_type_template_id_43ff272f___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QuickLink.vue?vue&type=template&id=43ff272f& */ "./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&"); /* harmony import */ var _QuickLink_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QuickLink.vue?vue&type=script&lang=js& */ "./resources/js/components/Misc/QuickLink.vue?vue&type=script&lang=js&"); /* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); @@ -99342,8 +100756,8 @@ __webpack_require__.r(__webpack_exports__); var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( _QuickLink_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], - _QuickLink_vue_vue_type_template_id_43ff272f_lang_pug___WEBPACK_IMPORTED_MODULE_0__["render"], - _QuickLink_vue_vue_type_template_id_43ff272f_lang_pug___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + _QuickLink_vue_vue_type_template_id_43ff272f___WEBPACK_IMPORTED_MODULE_0__["render"], + _QuickLink_vue_vue_type_template_id_43ff272f___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], false, null, null, @@ -99372,19 +100786,19 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&lang=pug&": -/*!********************************************************************************************!*\ - !*** ./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&lang=pug& ***! - \********************************************************************************************/ +/***/ "./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&": +/*!***********************************************************************************!*\ + !*** ./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f& ***! + \***********************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_QuickLink_vue_vue_type_template_id_43ff272f_lang_pug___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./QuickLink.vue?vue&type=template&id=43ff272f&lang=pug& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&lang=pug&"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_QuickLink_vue_vue_type_template_id_43ff272f_lang_pug___WEBPACK_IMPORTED_MODULE_0__["render"]; }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_QuickLink_vue_vue_type_template_id_43ff272f___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./QuickLink.vue?vue&type=template&id=43ff272f& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Misc/QuickLink.vue?vue&type=template&id=43ff272f&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_QuickLink_vue_vue_type_template_id_43ff272f___WEBPACK_IMPORTED_MODULE_0__["render"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_QuickLink_vue_vue_type_template_id_43ff272f_lang_pug___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_QuickLink_vue_vue_type_template_id_43ff272f___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); @@ -99526,6 +100940,282 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./resources/js/components/Modals/SendEmailModal.vue": +/*!***********************************************************!*\ + !*** ./resources/js/components/Modals/SendEmailModal.vue ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _SendEmailModal_vue_vue_type_template_id_479b69a7___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SendEmailModal.vue?vue&type=template&id=479b69a7& */ "./resources/js/components/Modals/SendEmailModal.vue?vue&type=template&id=479b69a7&"); +/* harmony import */ var _SendEmailModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SendEmailModal.vue?vue&type=script&lang=js& */ "./resources/js/components/Modals/SendEmailModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _SendEmailModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _SendEmailModal_vue_vue_type_template_id_479b69a7___WEBPACK_IMPORTED_MODULE_0__["render"], + _SendEmailModal_vue_vue_type_template_id_479b69a7___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/Modals/SendEmailModal.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/Modals/SendEmailModal.vue?vue&type=script&lang=js&": +/*!************************************************************************************!*\ + !*** ./resources/js/components/Modals/SendEmailModal.vue?vue&type=script&lang=js& ***! + \************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SendEmailModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./SendEmailModal.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendEmailModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SendEmailModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/components/Modals/SendEmailModal.vue?vue&type=template&id=479b69a7&": +/*!******************************************************************************************!*\ + !*** ./resources/js/components/Modals/SendEmailModal.vue?vue&type=template&id=479b69a7& ***! + \******************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SendEmailModal_vue_vue_type_template_id_479b69a7___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./SendEmailModal.vue?vue&type=template&id=479b69a7& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendEmailModal.vue?vue&type=template&id=479b69a7&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SendEmailModal_vue_vue_type_template_id_479b69a7___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SendEmailModal_vue_vue_type_template_id_479b69a7___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + +/***/ }), + +/***/ "./resources/js/components/Modals/SendSMSModal.vue": +/*!*********************************************************!*\ + !*** ./resources/js/components/Modals/SendSMSModal.vue ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _SendSMSModal_vue_vue_type_template_id_147e500a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SendSMSModal.vue?vue&type=template&id=147e500a& */ "./resources/js/components/Modals/SendSMSModal.vue?vue&type=template&id=147e500a&"); +/* harmony import */ var _SendSMSModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SendSMSModal.vue?vue&type=script&lang=js& */ "./resources/js/components/Modals/SendSMSModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _SendSMSModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _SendSMSModal_vue_vue_type_template_id_147e500a___WEBPACK_IMPORTED_MODULE_0__["render"], + _SendSMSModal_vue_vue_type_template_id_147e500a___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/Modals/SendSMSModal.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/Modals/SendSMSModal.vue?vue&type=script&lang=js&": +/*!**********************************************************************************!*\ + !*** ./resources/js/components/Modals/SendSMSModal.vue?vue&type=script&lang=js& ***! + \**********************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SendSMSModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./SendSMSModal.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendSMSModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SendSMSModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/components/Modals/SendSMSModal.vue?vue&type=template&id=147e500a&": +/*!****************************************************************************************!*\ + !*** ./resources/js/components/Modals/SendSMSModal.vue?vue&type=template&id=147e500a& ***! + \****************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SendSMSModal_vue_vue_type_template_id_147e500a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./SendSMSModal.vue?vue&type=template&id=147e500a& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/SendSMSModal.vue?vue&type=template&id=147e500a&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SendSMSModal_vue_vue_type_template_id_147e500a___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SendSMSModal_vue_vue_type_template_id_147e500a___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + +/***/ }), + +/***/ "./resources/js/components/Modals/UserDetailsModal.vue": +/*!*************************************************************!*\ + !*** ./resources/js/components/Modals/UserDetailsModal.vue ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _UserDetailsModal_vue_vue_type_template_id_6da876f8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserDetailsModal.vue?vue&type=template&id=6da876f8& */ "./resources/js/components/Modals/UserDetailsModal.vue?vue&type=template&id=6da876f8&"); +/* harmony import */ var _UserDetailsModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserDetailsModal.vue?vue&type=script&lang=js& */ "./resources/js/components/Modals/UserDetailsModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _UserDetailsModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _UserDetailsModal_vue_vue_type_template_id_6da876f8___WEBPACK_IMPORTED_MODULE_0__["render"], + _UserDetailsModal_vue_vue_type_template_id_6da876f8___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/Modals/UserDetailsModal.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/Modals/UserDetailsModal.vue?vue&type=script&lang=js&": +/*!**************************************************************************************!*\ + !*** ./resources/js/components/Modals/UserDetailsModal.vue?vue&type=script&lang=js& ***! + \**************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserDetailsModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserDetailsModal.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserDetailsModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserDetailsModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/components/Modals/UserDetailsModal.vue?vue&type=template&id=6da876f8&": +/*!********************************************************************************************!*\ + !*** ./resources/js/components/Modals/UserDetailsModal.vue?vue&type=template&id=6da876f8& ***! + \********************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserDetailsModal_vue_vue_type_template_id_6da876f8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserDetailsModal.vue?vue&type=template&id=6da876f8& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserDetailsModal.vue?vue&type=template&id=6da876f8&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserDetailsModal_vue_vue_type_template_id_6da876f8___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserDetailsModal_vue_vue_type_template_id_6da876f8___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + +/***/ }), + +/***/ "./resources/js/components/Modals/UserRolesModal.vue": +/*!***********************************************************!*\ + !*** ./resources/js/components/Modals/UserRolesModal.vue ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _UserRolesModal_vue_vue_type_template_id_3a4306a9___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UserRolesModal.vue?vue&type=template&id=3a4306a9& */ "./resources/js/components/Modals/UserRolesModal.vue?vue&type=template&id=3a4306a9&"); +/* harmony import */ var _UserRolesModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserRolesModal.vue?vue&type=script&lang=js& */ "./resources/js/components/Modals/UserRolesModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _UserRolesModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _UserRolesModal_vue_vue_type_template_id_3a4306a9___WEBPACK_IMPORTED_MODULE_0__["render"], + _UserRolesModal_vue_vue_type_template_id_3a4306a9___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/components/Modals/UserRolesModal.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/components/Modals/UserRolesModal.vue?vue&type=script&lang=js&": +/*!************************************************************************************!*\ + !*** ./resources/js/components/Modals/UserRolesModal.vue?vue&type=script&lang=js& ***! + \************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserRolesModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserRolesModal.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserRolesModal.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UserRolesModal_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/components/Modals/UserRolesModal.vue?vue&type=template&id=3a4306a9&": +/*!******************************************************************************************!*\ + !*** ./resources/js/components/Modals/UserRolesModal.vue?vue&type=template&id=3a4306a9& ***! + \******************************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserRolesModal_vue_vue_type_template_id_3a4306a9___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./UserRolesModal.vue?vue&type=template&id=3a4306a9& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Modals/UserRolesModal.vue?vue&type=template&id=3a4306a9&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserRolesModal_vue_vue_type_template_id_3a4306a9___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_UserRolesModal_vue_vue_type_template_id_3a4306a9___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + /***/ }), /***/ "./resources/js/components/Title.vue": @@ -99629,14 +101319,16 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-router */ "./node_modules/vue-router/dist/vue-router.esm.js"); /* harmony import */ var _views_Home_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./views/Home.vue */ "./resources/js/views/Home.vue"); /* harmony import */ var _views_Summery_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./views/Summery.vue */ "./resources/js/views/Summery.vue"); -/* harmony import */ var _views_WebsiteManagment_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./views/WebsiteManagment.vue */ "./resources/js/views/WebsiteManagment.vue"); -/* harmony import */ var _views_PMs_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./views/PMs.vue */ "./resources/js/views/PMs.vue"); -/* harmony import */ var _views_UserInfo_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./views/UserInfo.vue */ "./resources/js/views/UserInfo.vue"); -/* harmony import */ var _views_CreateBusiness_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./views/CreateBusiness.vue */ "./resources/js/views/CreateBusiness.vue"); -/* harmony import */ var _views_MyBusiness_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./views/MyBusiness.vue */ "./resources/js/views/MyBusiness.vue"); -/* harmony import */ var _views_UserOrders_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./views/UserOrders.vue */ "./resources/js/views/UserOrders.vue"); -/* harmony import */ var _views_Comments_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./views/Comments.vue */ "./resources/js/views/Comments.vue"); -/* harmony import */ var _views_AccountBalance_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./views/AccountBalance.vue */ "./resources/js/views/AccountBalance.vue"); +/* harmony import */ var _views_Website_Management_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./views/Website/Management.vue */ "./resources/js/views/Website/Management.vue"); +/* harmony import */ var _views_Order_Management_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./views/Order/Management.vue */ "./resources/js/views/Order/Management.vue"); +/* harmony import */ var _views_PMs_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./views/PMs.vue */ "./resources/js/views/PMs.vue"); +/* harmony import */ var _views_UserInfo_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./views/UserInfo.vue */ "./resources/js/views/UserInfo.vue"); +/* harmony import */ var _views_CreateBusiness_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./views/CreateBusiness.vue */ "./resources/js/views/CreateBusiness.vue"); +/* harmony import */ var _views_MyBusiness_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./views/MyBusiness.vue */ "./resources/js/views/MyBusiness.vue"); +/* harmony import */ var _views_UserOrders_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./views/UserOrders.vue */ "./resources/js/views/UserOrders.vue"); +/* harmony import */ var _views_Comments_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./views/Comments.vue */ "./resources/js/views/Comments.vue"); +/* harmony import */ var _views_AccountBalance_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./views/AccountBalance.vue */ "./resources/js/views/AccountBalance.vue"); + @@ -99660,44 +101352,48 @@ var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({ redirect: '/' }, { path: '/', - name: 'home', - component: _views_Home_vue__WEBPACK_IMPORTED_MODULE_2__["default"] + name: 'Summery', + component: _views_Summery_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, { path: '/Summery', name: 'Summery', component: _views_Summery_vue__WEBPACK_IMPORTED_MODULE_3__["default"] }, { - path: '/WebsiteManagment', - name: 'WebsiteManagment', - component: _views_WebsiteManagment_vue__WEBPACK_IMPORTED_MODULE_4__["default"] + path: 'WebsiteManagement', + name: 'WebsiteManagement', + component: _views_Website_Management_vue__WEBPACK_IMPORTED_MODULE_4__["default"] + }, { + path: 'OrderManagement', + name: 'OrderManagement', + component: _views_Order_Management_vue__WEBPACK_IMPORTED_MODULE_5__["default"] }, { path: '/pms', name: 'pms', - component: _views_PMs_vue__WEBPACK_IMPORTED_MODULE_5__["default"] + component: _views_PMs_vue__WEBPACK_IMPORTED_MODULE_6__["default"] }, { path: '/user_info', name: 'user_info', - component: _views_UserInfo_vue__WEBPACK_IMPORTED_MODULE_6__["default"] + component: _views_UserInfo_vue__WEBPACK_IMPORTED_MODULE_7__["default"] }, { path: '/create_business', name: 'create_business', - component: _views_CreateBusiness_vue__WEBPACK_IMPORTED_MODULE_7__["default"] + component: _views_CreateBusiness_vue__WEBPACK_IMPORTED_MODULE_8__["default"] }, { path: '/MyBusiness', name: 'MyBusiness', - component: _views_MyBusiness_vue__WEBPACK_IMPORTED_MODULE_8__["default"] + component: _views_MyBusiness_vue__WEBPACK_IMPORTED_MODULE_9__["default"] }, { path: '/user_orders', name: 'user_orders', - component: _views_UserOrders_vue__WEBPACK_IMPORTED_MODULE_9__["default"] + component: _views_UserOrders_vue__WEBPACK_IMPORTED_MODULE_10__["default"] }, { path: '/comments', name: 'comments', - component: _views_Comments_vue__WEBPACK_IMPORTED_MODULE_10__["default"] + component: _views_Comments_vue__WEBPACK_IMPORTED_MODULE_11__["default"] }, { path: '/account_balance', name: 'account_balance', - component: _views_AccountBalance_vue__WEBPACK_IMPORTED_MODULE_11__["default"] + component: _views_AccountBalance_vue__WEBPACK_IMPORTED_MODULE_12__["default"] }] }); router.beforeResolve(function (to, from, next) { @@ -99754,14 +101450,17 @@ if(false) {} __webpack_require__.r(__webpack_exports__); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.common.js"); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); +/* harmony import */ var Vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Vuex */ "./node_modules/Vuex/dist/vuex.esm.js"); -vue__WEBPACK_IMPORTED_MODULE_0___default.a.use(vuex__WEBPACK_IMPORTED_MODULE_1__["default"]); -/* harmony default export */ __webpack_exports__["default"] = (new vuex__WEBPACK_IMPORTED_MODULE_1__["default"].Store({ - state: {}, - mutations: {}, - actions: {} +vue__WEBPACK_IMPORTED_MODULE_0___default.a.use(Vuex__WEBPACK_IMPORTED_MODULE_1__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (new Vuex__WEBPACK_IMPORTED_MODULE_1__["default"].Store({ + state: { + UserDetail: false, + UserRoles: false, + SendEmail: false, + SendSMS: false + } })); /***/ }), @@ -100181,6 +101880,75 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./resources/js/views/Order/Management.vue": +/*!*************************************************!*\ + !*** ./resources/js/views/Order/Management.vue ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _Management_vue_vue_type_template_id_2970ace3___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Management.vue?vue&type=template&id=2970ace3& */ "./resources/js/views/Order/Management.vue?vue&type=template&id=2970ace3&"); +/* harmony import */ var _Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Management.vue?vue&type=script&lang=js& */ "./resources/js/views/Order/Management.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _Management_vue_vue_type_template_id_2970ace3___WEBPACK_IMPORTED_MODULE_0__["render"], + _Management_vue_vue_type_template_id_2970ace3___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/views/Order/Management.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./resources/js/views/Order/Management.vue?vue&type=script&lang=js&": +/*!**************************************************************************!*\ + !*** ./resources/js/views/Order/Management.vue?vue&type=script&lang=js& ***! + \**************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Management.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Order/Management.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./resources/js/views/Order/Management.vue?vue&type=template&id=2970ace3&": +/*!********************************************************************************!*\ + !*** ./resources/js/views/Order/Management.vue?vue&type=template&id=2970ace3& ***! + \********************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_template_id_2970ace3___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./Management.vue?vue&type=template&id=2970ace3& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Order/Management.vue?vue&type=template&id=2970ace3&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_template_id_2970ace3___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_template_id_2970ace3___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + /***/ }), /***/ "./resources/js/views/PMs.vue": @@ -100495,18 +102263,18 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./resources/js/views/WebsiteManagment.vue": -/*!*************************************************!*\ - !*** ./resources/js/views/WebsiteManagment.vue ***! - \*************************************************/ +/***/ "./resources/js/views/Website/Management.vue": +/*!***************************************************!*\ + !*** ./resources/js/views/Website/Management.vue ***! + \***************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _WebsiteManagment_vue_vue_type_template_id_43f7e9a2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WebsiteManagment.vue?vue&type=template&id=43f7e9a2& */ "./resources/js/views/WebsiteManagment.vue?vue&type=template&id=43f7e9a2&"); -/* harmony import */ var _WebsiteManagment_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WebsiteManagment.vue?vue&type=script&lang=js& */ "./resources/js/views/WebsiteManagment.vue?vue&type=script&lang=js&"); -/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); +/* harmony import */ var _Management_vue_vue_type_template_id_17032b94___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Management.vue?vue&type=template&id=17032b94& */ "./resources/js/views/Website/Management.vue?vue&type=template&id=17032b94&"); +/* harmony import */ var _Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Management.vue?vue&type=script&lang=js& */ "./resources/js/views/Website/Management.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); @@ -100515,9 +102283,9 @@ __webpack_require__.r(__webpack_exports__); /* normalize component */ var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( - _WebsiteManagment_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], - _WebsiteManagment_vue_vue_type_template_id_43f7e9a2___WEBPACK_IMPORTED_MODULE_0__["render"], - _WebsiteManagment_vue_vue_type_template_id_43f7e9a2___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + _Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _Management_vue_vue_type_template_id_17032b94___WEBPACK_IMPORTED_MODULE_0__["render"], + _Management_vue_vue_type_template_id_17032b94___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], false, null, null, @@ -100527,38 +102295,38 @@ var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_ /* hot reload */ if (false) { var api; } -component.options.__file = "resources/js/views/WebsiteManagment.vue" +component.options.__file = "resources/js/views/Website/Management.vue" /* harmony default export */ __webpack_exports__["default"] = (component.exports); /***/ }), -/***/ "./resources/js/views/WebsiteManagment.vue?vue&type=script&lang=js&": -/*!**************************************************************************!*\ - !*** ./resources/js/views/WebsiteManagment.vue?vue&type=script&lang=js& ***! - \**************************************************************************/ +/***/ "./resources/js/views/Website/Management.vue?vue&type=script&lang=js&": +/*!****************************************************************************!*\ + !*** ./resources/js/views/Website/Management.vue?vue&type=script&lang=js& ***! + \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_WebsiteManagment_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib??ref--4-0!../../../node_modules/vue-loader/lib??vue-loader-options!./WebsiteManagment.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/WebsiteManagment.vue?vue&type=script&lang=js&"); -/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_WebsiteManagment_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib??ref--4-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./Management.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Website/Management.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_ref_4_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); /***/ }), -/***/ "./resources/js/views/WebsiteManagment.vue?vue&type=template&id=43f7e9a2&": -/*!********************************************************************************!*\ - !*** ./resources/js/views/WebsiteManagment.vue?vue&type=template&id=43f7e9a2& ***! - \********************************************************************************/ +/***/ "./resources/js/views/Website/Management.vue?vue&type=template&id=17032b94&": +/*!**********************************************************************************!*\ + !*** ./resources/js/views/Website/Management.vue?vue&type=template&id=17032b94& ***! + \**********************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_WebsiteManagment_vue_vue_type_template_id_43f7e9a2___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./WebsiteManagment.vue?vue&type=template&id=43f7e9a2& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/WebsiteManagment.vue?vue&type=template&id=43f7e9a2&"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_WebsiteManagment_vue_vue_type_template_id_43f7e9a2___WEBPACK_IMPORTED_MODULE_0__["render"]; }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_template_id_17032b94___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./Management.vue?vue&type=template&id=17032b94& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/views/Website/Management.vue?vue&type=template&id=17032b94&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_template_id_17032b94___WEBPACK_IMPORTED_MODULE_0__["render"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_WebsiteManagment_vue_vue_type_template_id_43f7e9a2___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Management_vue_vue_type_template_id_17032b94___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); diff --git a/resources/js/app.js b/resources/js/app.js index 5f8f65f..56bd439 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -10,13 +10,25 @@ import 'bootstrap-v4-rtl' import 'bootstrap-v4-rtl/scss/bootstrap-rtl.scss' import 'bootstrap-select' import 'bootstrap-select/dist/css/bootstrap-select.css' -import 'material-design-icons-iconfont/dist/material-design-icons.css' +// import 'material-design-icons-iconfont/dist/material-design-icons.css' +// import '@mdi/font/css/materialdesignicons.css' // import 'font-awesome/css/font-awesome.min.css' import 'vuetify/dist/vuetify.min.css' // Ensure you are using css-loader import './assets/Font-Icons/css/fontello.css' import "./scss/style.scss"; +// components +import PartTitle from "./components/Dividers/PartTitle.vue"; +import PageTitle from "./components/Dividers/PageTitle.vue"; +import Checkbox from "./components/Inputs/Checkbox.vue"; +import ButtonShodowed from "./components/Inputs/ButtonShodowed.vue"; + +Vue.component('PartTitle', PartTitle) +Vue.component('PageTitle', PageTitle) +Vue.component('Checkbox', Checkbox) +Vue.component('ButtonShodowed', ButtonShodowed) + /** * First we will load all of this project's JavaScript dependencies which * includes Vue and other libraries. It is a great starting point when @@ -45,7 +57,8 @@ window.Vue = require('vue'); Vue.use(Vuetify, { - iconfont: 'fa' || 'mdi' + iconfont: 'fa', + rtl: true, }); // Vue.config.productionTip = false; diff --git a/resources/js/components/Body/Header/HeaderBG.vue b/resources/js/components/Body/Header/HeaderBG.vue index b2cd72c..5c8379f 100644 --- a/resources/js/components/Body/Header/HeaderBG.vue +++ b/resources/js/components/Body/Header/HeaderBG.vue @@ -10,5 +10,6 @@ .header { height: 7em; background: url(../../../assets/bg.jpg) repeat-x; + margin-bottom: 20px; } </style> diff --git a/resources/js/components/Body/Header/Nav.vue b/resources/js/components/Body/Header/Nav.vue index 07a0d05..a9eb02c 100644 --- a/resources/js/components/Body/Header/Nav.vue +++ b/resources/js/components/Body/Header/Nav.vue @@ -3,11 +3,12 @@ <ul class="WM-Nav d-flex WM-Float-R"> <li> <NavIcon Icon="WMi-Real-Estate" ThemeColor="Black" Route="Summery"></NavIcon> </li> <!-- <li> <NavItem TitleFa=" صفحه ی اصلی " TitleEn=" Home " ThemeColor="Black"></NavItem> </li> --> - <li> <NavItem TitleFa=" مجموعه ی من " TitleEn=" My Business " ThemeColor="Cyan" Route="MyBusiness"></NavItem> </li> + <li> <NavItem TitleFa=" مجموعه ی من " TitleEn=" My Business " ThemeColor="Black" Route="MyBusiness"></NavItem> </li> <li> <NavItem TitleFa=" محصولات و خدمات " TitleEn=" Products & Services " ThemeColor="Red"></NavItem> </li> + <li> <NavItem TitleFa=" سفارشات " TitleEn=" Orders " ThemeColor="Orange" Route="OrderManagement"></NavItem> </li> <li> <NavItem TitleFa=" نمونه کار ها " TitleEn=" Portfolios " ThemeColor="Purple"></NavItem> </li> <li> <NavItem TitleFa=" اخبار " TitleEn=" Blog " ThemeColor="Orange"></NavItem> </li> - <li> <NavItem TitleFa=" مدیریت سایت " TitleEn=" Website Management " ThemeColor="Green" Route="WebsiteManagment"></NavItem> </li> + <li> <NavItem TitleFa=" مدیریت سایت " TitleEn=" Website Management " ThemeColor="Green" Route="WebsiteManagement"></NavItem> </li> <li> <NavIcon Icon="WMi-search" ThemeColor="Black"></NavIcon> </li> <li> <NavIcon Icon="WMi-message-reply-text" ThemeColor="Cyan" Quantity="12"></NavIcon> </li> <li> <NavIcon Icon="WMi-bell-alt" ThemeColor="Red" Quantity="4"></NavIcon> </li> diff --git a/resources/js/components/Body/Header/NavItem.vue b/resources/js/components/Body/Header/NavItem.vue index 9069062..7f2b7f7 100644 --- a/resources/js/components/Body/Header/NavItem.vue +++ b/resources/js/components/Body/Header/NavItem.vue @@ -1,5 +1,5 @@ <template> - <router-link :to="Route" class="WM-Link WM-Align-C WM-PageNav" :class="HoverClass"> + <router-link :to="{ name: Route }" class="WM-Link WM-Align-C WM-PageNav" :class="HoverClass"> <div class="WM-Font-18"> {{ TitleFa }} </div> <div class="WM-Font-14"> {{ TitleEn }} </div> </router-link> diff --git a/resources/js/components/Charts/DoughnutChart.vue b/resources/js/components/Charts/DoughnutChart.vue new file mode 100644 index 0000000..03f11ed --- /dev/null +++ b/resources/js/components/Charts/DoughnutChart.vue @@ -0,0 +1,35 @@ +<script> +import { Doughnut } from "vue-chartjs"; + +export default { + extends: Doughnut, + mounted() { + this.renderChart({ + labels: ["محصولات", "نمونه کارها", "اخبار", "سفارشات", "اعضا"], + datasets: [{ + labels: [ + 'Red', + 'Yellow', + 'Blue' + ], + data: [16,12,24,8,40], + backgroundColor: [ + 'rgba(238, 53, 82, 0.2)', + 'rgba(255, 107, 87, 0.2)', + 'rgba(172, 55, 115, 0.2)', + 'rgba(50, 197, 210, 0.2)', + 'rgba(0, 0, 0, 0.2)', + ], + borderColor: [ + '#ee3552', + '#FF6B57', + '#ac3773', + '#32c5d2', + '#000', + ], + borderWidth: 1, + }] + }); + } +}; +</script> diff --git a/resources/js/components/Dividers/PageTitle.vue b/resources/js/components/Dividers/PageTitle.vue index 21b6b0a..7cffde0 100644 --- a/resources/js/components/Dividers/PageTitle.vue +++ b/resources/js/components/Dividers/PageTitle.vue @@ -14,7 +14,7 @@ export default { props: { TitleFa: { default: "عنوان بخش" }, TitleEn: { default: "Part Title" }, - ThemeColor: { default: "Red" }, + Color: { default: "Red" }, TitleFaClass: { default: "WM-Color-White" } }, data() { @@ -22,9 +22,6 @@ export default { Color, } }, - created : function ( ) { - this.Color = 'WM-BG-' + this.ThemeColor; - } }; </script> diff --git a/resources/js/components/Dividers/PartTitle.vue b/resources/js/components/Dividers/PartTitle.vue index 7b7925b..68cb436 100644 --- a/resources/js/components/Dividers/PartTitle.vue +++ b/resources/js/components/Dividers/PartTitle.vue @@ -2,18 +2,12 @@ <div class="SectionTitle WM-Width-100"> <h4 class="TitleFa WM-Align-R" v-text="TitleFa"></h4> <div class="TitleEn WM-Flex"> - <span :class="Color" v-text="TitleEn"></span> + <span :class="[Color,TextColor]" v-text="TitleEn"></span> <div class="Line"> <div class="inner" :class="Color"></div> </div> </div> </div> -<!-- .SectionTitle - h4.TitleFa(v-text="TitleFa") - div.TitleEn.d-flex - span(v-text="TitleEn" :class="Color") - .Line - .inner(:class="Color") --> </template> <script> @@ -21,22 +15,11 @@ export default { props: { TitleFa: { default: "عنوان بخش" }, TitleEn: { default: "Part Title" }, - ThemeColor: { default: "Red" } + Color: { default: "black" }, + TextColor: { default: "white--text" } }, data: function () { - return { - Color: 'WM-BG-' + this.ThemeColor, - } + return {} }, - // - // data() { - // return { - // Color, - // } - // }, - // created : function ( ) { - // this.Color = 'WM-BG-' + this.ThemeColor; - // } - }; </script> diff --git a/resources/js/components/Inputs/Checkbox.vue b/resources/js/components/Inputs/Checkbox.vue new file mode 100644 index 0000000..5ece309 --- /dev/null +++ b/resources/js/components/Inputs/Checkbox.vue @@ -0,0 +1,26 @@ +<template> + <div class="WM-Checkbox c-toggle-hide RTL WM-Align-R"> + <input type="checkbox" :id="ItemID" class="c-check"> + <label :for="ItemID"> + <span class="inc"></span> + <span class="check"></span> + <span class="box"></span> {{ ItemText }} + </label> + </div> +</template> + +<script> +export default { + props: { + ItemID: { default: "Checkbox" }, + ItemText: { default: " مقدار پیش فرض " }, + Color: { default: "Red" }, + }, + data: function () { + return { + IconClass: 'WMi-' + this.Icon, + } + }, +}; + +</script> diff --git a/resources/js/components/Misc/QuickLink.vue b/resources/js/components/Misc/QuickLink.vue index bb275cf..01b33c1 100644 --- a/resources/js/components/Misc/QuickLink.vue +++ b/resources/js/components/Misc/QuickLink.vue @@ -1,4 +1,4 @@ -<template lang="pug"> +<template> <a class="WM-Block WM-Border WM-Align-C WM-Border-LightGray WM-QuickLink" :class="HoverClass"> <div class="WM-Font-36" v-if="Counter>0"> {{ Counter }} </div> <div class="WM-Font-24"> {{ TitleFa }} </div> @@ -20,16 +20,5 @@ export default { h4Class: 'WM-BG-' + this.ThemeColor, } }, - - // data() { - // return { - // Color,HoverClass - // } - // }, - // - // created : function ( ) { - // this.Color = 'WM-BG-' + this.ThemeColor; - // this.HoverClass = 'WM-Hover-' + this.ThemeColor; - // } }; </script> diff --git a/resources/js/components/Misc/TabItem.vue b/resources/js/components/Misc/TabItem.vue index 16f98f0..99f7b16 100644 --- a/resources/js/components/Misc/TabItem.vue +++ b/resources/js/components/Misc/TabItem.vue @@ -1,8 +1,12 @@ <template> <li class="nav-item"> - <a class="nav-link" :class="[aClass, (Status == 'Active' ? 'active' : '')]" data-toggle="tab" :href="TabHref"> - <div class="WM-Font-18"> {{ TitleFa }} </div> {{ TitleEn }} + <a class="nav-link WM-Flex" :class="[aClass, (Status == 'Active' ? 'active' : '')]" data-toggle="tab" :href="TabHref"> + <div class="WM-Notification" v-if="Quantity>0"> {{ Quantity }} </div> + <div> + <div class="WM-Font-18"> {{ TitleFa }} </div> {{ TitleEn }} + </div> </a> + </li> </template> @@ -14,6 +18,7 @@ export default { Color: { default: "Black" }, TabContent: { default: '' }, Status: { default: '' }, + Quantity: { default: 0 }, }, data: function () { return { diff --git a/resources/js/components/Modals/SendEmailModal.vue b/resources/js/components/Modals/SendEmailModal.vue new file mode 100644 index 0000000..0ab76d7 --- /dev/null +++ b/resources/js/components/Modals/SendEmailModal.vue @@ -0,0 +1,40 @@ +<template> + <v-dialog v-model="$store.state.SendEmail" width="60%" transition="slide-x-transition"> + <v-card class="RTL"> + <v-card-title class=" grey lighten-3" primary-title> + <PartTitle class="WM-Margin-T-20" TitleFa=" ارسال ایمیل " TitleEn=" Sending an Email " Color="pink darken-4"></PartTitle> + </v-card-title> + + <v-card-text> + <v-layout row wrap class="WM-Padding-RL-20"> + <v-flex md8> + <v-text-field label=" لطفا عنوان پیام را بنویسید " hint="حداکثر 50 کاراکتر " color="pink darken-4" width="60%" prepend-icon="fas fa-info"></v-text-field> + </v-flex> + <v-flex md12> + <v-textarea name="input-7-1" label="لطفا پیام خود را بنویسید" value="" hint="حداکثر 2500 کاراکتر " color="pink darken-4" prepend-icon="fas fa-envelope"></v-textarea> + </v-flex> + </v-layout> + + </v-card-text> + + <v-divider></v-divider> + + <v-card-actions> + <v-spacer></v-spacer> + <v-btn color="pink darken-4" depressed dark @click="$store.state.SendEmail = false"> + <v-icon dark right>fas fa-envelope</v-icon> ارسال ایمیل + </v-btn> + </v-card-actions> + </v-card> + </v-dialog> + +</template> + +<script> + +export default { + props: { + Color: { default: 'grey darken-4' }, + }, +}; +</script> diff --git a/resources/js/components/Modals/SendSMSModal.vue b/resources/js/components/Modals/SendSMSModal.vue new file mode 100644 index 0000000..6474a25 --- /dev/null +++ b/resources/js/components/Modals/SendSMSModal.vue @@ -0,0 +1,35 @@ +<template> + <v-dialog v-model="$store.state.SendSMS" width="60%" transition="slide-x-transition"> + <v-card class="RTL"> + <v-card-title class="grey lighten-3" primary-title> + <PartTitle class="WM-Margin-T-20" TitleFa=" ارسال پیام کوتاه " TitleEn=" Sending a Text Message " Color="orange darken-3"></PartTitle> + </v-card-title> + + <v-card-text> + <v-layout row wrap class="WM-Padding-RL-20"> + <v-flex md12> + <v-textarea name="input-7-1" label="لطفا پیام خود را بنویسید" value="" hint=" هر پیام 53 کاراکتر " color="orange darken-3" append-icon="fas fa-comment-alt"></v-textarea> </div> + </v-flex> + </v-layout> + </v-card-text> + + <v-divider></v-divider> + + <v-card-actions> + <v-spacer></v-spacer> + <v-btn color="orange darken-3" depressed dark @click="$store.state.SendSMS = false"> + <v-icon dark right>fa fa-angle-left</v-icon> ارسال پیام + </v-btn> + </v-card-actions> + </v-card> + </v-dialog> + +</template> + +<script> +export default { + props: { + Color: { default: 'grey darken-4' }, + }, +}; +</script> diff --git a/resources/js/components/Modals/UserDetailsModal.vue b/resources/js/components/Modals/UserDetailsModal.vue new file mode 100644 index 0000000..f73f92d --- /dev/null +++ b/resources/js/components/Modals/UserDetailsModal.vue @@ -0,0 +1,47 @@ +<template> + <v-dialog v-model="$store.state.UserDetail" width="90%" transition="slide-x-transition"> + <v-card class="RTL"> + <v-card-title class=" grey lighten-3" primary-title> + <PartTitle class="WM-Margin-T-20" TitleFa=" اطلاعات کاربر " TitleEn=" Member's Info " Color="cyan"></PartTitle> + </v-card-title> + + <v-card-text> + <div class="row"> + <div class="col-md-3 WM-Align-R"> + <div class="WM-Font-14 WM-Color-Gray"><i class="WMi-user"></i> نام و نام خانوادگی </div> + <div class="WM-Font-20"> علیرضا حسنی </div> + </div> + <div class="col-md-3 WM-Align-R"> + <div class="WM-Font-14 WM-Color-Gray"><i class="WMi-mail-alt"></i> آدرس آیمیل </div> + <div class="WM-Font-20"> Alireza-Hassani@outlook.com </div> + </div> + <div class="col-md-3 WM-Align-R"> + <div class="WM-Font-14 WM-Color-Gray"><i class="WMi-phone"></i> شماره ی همراه </div> + <div class="WM-Font-20"> 09127004945 </div> + </div> + + </div> + </v-card-text> + + <v-divider></v-divider> + + <v-card-actions> + <v-spacer></v-spacer> + <v-btn color="cyan" depressed dark @click="$store.state.UserDetail = false"> + <v-icon dark right>fas fa-check</v-icon> بسیار خب، ممنونم + </v-btn> + </v-card-actions> + </v-card> + </v-dialog> +</template> + +<script> +import PartTitle from "../Dividers/PartTitle.vue"; +import { mapGetters } from 'Vuex'; + +export default { + components: { + PartTitle, + } +}; +</script> diff --git a/resources/js/components/Modals/UserRolesModal.vue b/resources/js/components/Modals/UserRolesModal.vue new file mode 100644 index 0000000..25e6150 --- /dev/null +++ b/resources/js/components/Modals/UserRolesModal.vue @@ -0,0 +1,101 @@ +<template> + <v-dialog v-model="$store.state.UserRoles" width="60%" transition="slide-x-transition"> + <v-card class="RTL"> + <v-card-title class=" grey lighten-3" primary-title> + <PartTitle class="WM-Margin-T-20" TitleFa=" دسترسی های این کاربر " TitleEn=" Member's Roles "></PartTitle> + </v-card-title> + + <v-card-text> + <table class="table table-striped WM-Margin-T-20 WM-Align-R RTL"> + <thead> + <tr> + <th style="width:25%"></th> + <th style="width:25%" class="WM-Color-Cyan"><i class="WMi-plus"></i> قابلیت ثبت </th> + <th style="width:25%" class="WM-Color-Orange"><i class="WMi-edit"></i> قابلیت ویرایش </th> + <th style="width:25%" class="WM-Color-Red"><i class="WMi-trash"></i> قابلیت حذف </th> + </tr> + </thead> + <tbody> + <tr v-for="(Permission, index) in Permissions"> + <td class="WM-Align-C"> + <i class="WM-Font-36 WM-Float-R" :class="[Permission.Icon]"></i> + <!-- <div style="margin-top:-15px;"> {{ Permission.Name }} </div> --> + <div class="WM-Float-R WM-Margin-R-10"> + <h4 class="WM-Font-16"> {{ Permission.Name }} </h4> + <h4 class="WM-Font-14"> {{ index }} </h4> + </div> + </td> + <td> + <Checkbox ItemText=" امکان افزودن آیتم " :ItemID="index+'Add'"></Checkbox> + </td> + <td class="WM-Align-L"> + <Checkbox ItemText=" امکان ویرایش آیتم های متعلق به خود " :ItemID="index+'EditSelfOwned'"></Checkbox> + <Checkbox ItemText=" امکان ویرایش همه ی آیتم ها " :ItemID="index+'EditAll'"></Checkbox> + </td> + <td> + <Checkbox ItemText=" امکان ویرایش آیتم های متعلق به خود " :ItemID="index+'DeleteSelfOwned'"></Checkbox> + <Checkbox ItemText=" امکان ویرایش همه ی آیتم ها " :ItemID="index+'DeleteAll'"></Checkbox> + </td> + </tr> + <tr> + <td class="WM-Align-C"> + <i class="WM-Font-36 WM-Float-R WMi-shop"></i> + <div class="WM-Float-R WM-Margin-R-10"> + <h4 class="WM-Font-16"> سفارشات </h4> + <h4 class="WM-Font-14"> Orders </h4> + </div> + </td> + <td></td> + <td class="WM-Align-L"> + <Checkbox ItemText=" مدیریت سفارشات " ItemID="OrdersManagement"></Checkbox> + </td> + <td></td> + </tr> + + <tr> + <td class="WM-Align-C"> + <i class="WM-Font-36 WM-Float-R WMi-globe"></i> + <div class="WM-Float-R WM-Margin-R-10"> + <h4 class="WM-Font-16"> وبسایت </h4> + <h4 class="WM-Font-14"> Website </h4> + </div> + </td> + <td></td> + <td class="WM-Align-L"> + <Checkbox ItemText=" ویرایش وبسایت " ItemID="WebsiteEdit"></Checkbox> + </td> + <td></td> + </tr> + </tbody> + </table> + </v-card-text> + + <v-divider></v-divider> + + <v-card-actions> + <v-spacer></v-spacer> + <v-btn color="black" depressed dark @click="$store.state.UserRoles = false"> + <v-icon dark right>fas fa-check</v-icon> ذخیره ی دسترسی ها + </v-btn> + </v-card-actions> + </v-card> + </v-dialog> +</template> + +<script> +export default { + props: { + Color: { default: 'grey darken-4' }, + }, + data: function () { + return { + Permissions: { + 'BusinessItem': { Name: ' کالاها و خدمات ', Icon: 'WMi-dropbox', Color: 'WM-Color-Red' }, + 'News': { Name: ' اخبار ', Icon: 'WMi-rss', Color: 'WM-Color-Orange' }, + 'Portfolio': { Name: ' نمونه کار ها ', Icon: 'WMi-picture', Color: 'WM-Color-Purple' }, + } + + } + }, +}; +</script> diff --git a/resources/js/router.js b/resources/js/router.js index 202a528..690969e 100644 --- a/resources/js/router.js +++ b/resources/js/router.js @@ -2,7 +2,8 @@ import Vue from 'vue' import Router from 'vue-router' import Home from './views/Home.vue' import Summery from './views/Summery.vue' -import WebsiteManagment from './views/WebsiteManagment.vue' +import WebsiteManagement from './views/Website/Management.vue' +import OrderManagement from './views/Order/Management.vue' import PMs from './views/PMs.vue' import UserInfo from './views/UserInfo.vue' import CreateBusiness from './views/CreateBusiness.vue' @@ -25,8 +26,8 @@ const router = new Router({ }, { path: '/', - name: 'home', - component: Home + name: 'Summery', + component: Summery }, { path: '/Summery', @@ -34,9 +35,14 @@ const router = new Router({ component: Summery }, { - path: '/WebsiteManagment', - name: 'WebsiteManagment', - component: WebsiteManagment + path: 'WebsiteManagement', + name: 'WebsiteManagement', + component: WebsiteManagement + }, + { + path: 'OrderManagement', + name: 'OrderManagement', + component: OrderManagement }, { path: '/pms', diff --git a/resources/js/scss/Inputs.scss b/resources/js/scss/Inputs.scss index 868c00a..d656444 100644 --- a/resources/js/scss/Inputs.scss +++ b/resources/js/scss/Inputs.scss @@ -134,6 +134,260 @@ } + +.WM-Checkbox { + position: relative; + /* handling click events */ + /* when checkbox is checked */ +} + +.WM-Checkbox.WM-Checkbox-inline { + display: inline-block; +} + +.form-inline .WM-Checkbox.WM-Checkbox-inline { + margin-left: 20px; + top: 3px; +} + +.WM-Checkbox input[type=checkbox] { + visibility: hidden; + position: absolute; +} + +.WM-Checkbox label { + cursor: pointer; + padding-right: 30px; +} + +.WM-Checkbox label > span { + display: block; + position: absolute; + right: 0; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; +} + +.WM-Checkbox label > span.inc { + background: #fff; + right: -10px; + top: -10px; + height: 40px; + width: 40px; + opacity: 0; + border-radius: 50% !important; + -moz-border-radius: 50% !important; + -webkit-border-radius: 50% !important; +} + +.WM-Checkbox label > .box { + top: 1px; + border: 2px solid #d0d7de; + height: 20px; + width: 20px; + z-index: 5; + -webkit-transition-delay: 0.2s; + -moz-transition-delay: 0.2s; + transition-delay: 0.2s; +} + +.ie .WM-Checkbox label > .box { + top: 2px; +} + +.WM-Checkbox label > .check { + top: 2px; + left: 6px; + width: 20px; + height: 10px; + border: 2px solid #ee3552; + border-top: none; + border-right: none; + opacity: 0; + z-index: 5; + -webkit-transform: rotate(-180deg); + -moz-transform: rotate(-180deg); + transform: rotate(-180deg); + -webkit-transition-delay: 0.3s; + -moz-transition-delay: 0.3s; + transition-delay: 0.3s; +} + +.WM-Checkbox label > span.inc { + -webkit-animation: growCircle 0.3s ease; + -moz-animation: growCircle 0.3s ease; + animation: growCircle 0.3s ease; +} + +.WM-Checkbox input[type=checkbox]:checked ~ label > .box { + opacity: 0; + -webkit-transform: scale(0) rotate(180deg); + -moz-transform: scale(0) rotate(180deg); + transform: scale(0) rotate(180deg); +} + +.WM-Checkbox input[type=checkbox]:checked ~ label > .check { + opacity: 1; + -webkit-transform: scale(1) rotate(-45deg); + -moz-transform: scale(1) rotate(-45deg); + transform: scale(1) rotate(-45deg); +} + +.WM-Checkbox input[type=checkbox]:disabled ~ label, +.WM-Checkbox input[type=checkbox][disabled] ~ label { + cursor: not-allowed; + opacity: 0.7; + filter: alpha(opacity=70); +} + +.WM-Checkbox input[type=checkbox]:disabled ~ label > .box, +.WM-Checkbox input[type=checkbox][disabled] ~ label > .box { + cursor: not-allowed; + opacity: 0.7; + filter: alpha(opacity=70); +} + +.WM-Checkbox input[type=checkbox]:disabled:checked ~ label > .check, +.WM-Checkbox input[type=checkbox][disabled]:checked ~ label > .check { + cursor: not-allowed; + opacity: 0.7; + filter: alpha(opacity=70); +} + +.WM-Checkbox.has-error label { + color: #e7505a; +} + +.WM-Checkbox.has-error label > .box { + border-color: #e7505a; +} + +.WM-Checkbox.has-error label > .check { + border-color: #e7505a; +} + +.WM-Checkbox.has-info label { + color: #4eabe6; +} + +.WM-Checkbox.has-info label > .box { + border-color: #4eabe6; +} + +.WM-Checkbox.has-info label > .check { + border-color: #4eabe6; +} + +.WM-Checkbox.has-success label { + color: #5dc09c; +} + +.WM-Checkbox.has-success label > .box { + border-color: #5dc09c; +} + +.WM-Checkbox.has-success label > .check { + border-color: #5dc09c; +} + +.WM-Checkbox.has-warning label { + color: #c8d046; +} + +.WM-Checkbox.has-warning label > .box { + border-color: #c8d046; +} + +.WM-Checkbox.has-warning label > .check { + border-color: #c8d046; +} + +.c-form-checkboxes.has-error > label { + color: #e7505a; +} + +.c-form-checkboxes.has-info > label { + color: #4eabe6; +} + +.c-form-checkboxes.has-success > label { + color: #5dc09c; +} + +.c-form-checkboxes.has-warning > label { + color: #c8d046; +} + +.WM-Checkbox-list { + margin: 10px 0; +} + +.form-horizontal .WM-Checkbox-list { + margin-top: 0px; +} + +.WM-Checkbox-list .WM-Checkbox { + display: block; + margin-bottom: 10px; +} + +.WM-Checkbox-inline { + margin: 10px 0; +} + +.form-horizontal .WM-Checkbox-inline { + margin-top: 8px; +} + +.WM-Checkbox-inline .WM-Checkbox { + display: inline-block; + margin-left: 20px; +} + +.WM-Checkbox-inline .WM-Checkbox:last-child { + margin-left: 0; +} + + +/* bubble animation */ + +@-webkit-keyframes growCircle { + 0%, + 100% { + -webkit-transform: scale(0); + opacity: 1; + } + 70% { + background: #eee; + -webkit-transform: scale(1.25); + } +} + +@-moz-keyframes growCircle { + 0%, + 100% { + -moz-transform: scale(0); + opacity: 1; + } + 70% { + background: #eee; + -moz-transform: scale(1.25); + } +} + +@keyframes growCircle { + 0%, + 100% { + transform: scale(0); + opacity: 1; + } + 70% { + background: #eee; + transform: scale(1.25); + } +} + /* -------------------------------------------------------- Buttons :: Begin -------------------------------------------------------- */ diff --git a/resources/js/scss/Modify.scss b/resources/js/scss/Modify.scss index 0c55784..a715a84 100644 --- a/resources/js/scss/Modify.scss +++ b/resources/js/scss/Modify.scss @@ -1,3 +1,7 @@ +#app { + padding: 0em 0; +} + /* -------------------------------------------------------- Navigation :: Bootstrap Tabs -------------------------------------------------------- */ @@ -15,11 +19,19 @@ .nav-tabs .nav-link { color: #000; } +.nav-tabs .nav-link .WM-Notification { + background-color: #000; + margin: 12px 10px; + transition: 0.2s; +} @each $Color, $Value in $Colors { .nav-tabs .nav-link.WM-#{$Color}.active, .nav-tabs .nav-link.WM-#{$Color}:hover, .nav-tabs .nav-link.WM-#{$Color}:focus { border-bottom: 1px solid $Value; color: $Value; } + .nav-tabs .nav-link.WM-#{$Color}.active .WM-Notification, .nav-tabs .nav-link.WM-#{$Color}:hover .WM-Notification, .nav-tabs .nav-link.WM-#{$Color}:focus .WM-Notification { + background-color: $Value; + } } @@ -29,3 +41,11 @@ .v-card__title--primary { padding-top: 10px; } + +.theme--light.v-text-field>.v-input__control>.v-input__slot:before { + border-color: rgba(0,0,0,.22); +} + +.theme--light.v-icon { + font-size: 16px; +} diff --git a/resources/js/scss/SizeAndPositioning.scss b/resources/js/scss/SizeAndPositioning.scss index 3d7eade..2fb7fde 100644 --- a/resources/js/scss/SizeAndPositioning.scss +++ b/resources/js/scss/SizeAndPositioning.scss @@ -93,6 +93,10 @@ .WM-Padding-10 { padding: 10px; } +.WM-Padding-RL-20 { + padding-right: 20px; + padding-left: 20px; +} /* -------------------------------------------------------- Fonts :: Begin diff --git a/resources/js/scss/style.scss b/resources/js/scss/style.scss index d31e077..96222b1 100644 --- a/resources/js/scss/style.scss +++ b/resources/js/scss/style.scss @@ -95,3 +95,4 @@ a:hover { @import 'Inputs.scss'; @import 'SizeAndPositioning.scss'; @import 'Colors.scss'; +@import 'Modify.scss'; diff --git a/resources/js/store.js b/resources/js/store.js index 63ae17f..3b3cb86 100644 --- a/resources/js/store.js +++ b/resources/js/store.js @@ -1,16 +1,13 @@ import Vue from 'vue' -import Vuex from 'vuex' +import Vuex from 'Vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { - - }, - mutations: { - - }, - actions: { - + UserDetail: false, + UserRoles: false, + SendEmail: false, + SendSMS: false } }) diff --git a/resources/js/views/Order/Management.vue b/resources/js/views/Order/Management.vue new file mode 100644 index 0000000..bb04a80 --- /dev/null +++ b/resources/js/views/Order/Management.vue @@ -0,0 +1,85 @@ +<template> + <div class="container_fluid"> + <PageTitle TitleFa=" مدیریت سفارشات " TitleEn=" Orders Management " Color="orange darken-3" TitleFaClass="WM-Color-Black"></PageTitle> + <v-alert :value="true" color="grey lighten-2" dismissible outline> + <PartTitle class="WM-Margin-T-20" TitleFa=" خلاصه ای از آمار " TitleEn=" Statistics Summery " ThemeColor="Orange"></PartTitle> + <v-layout row wrap class="WM-Margin-T-20"> + <v-flex xs12 sm6 md4> <DoughnutChart :height="280"></DoughnutChart> </v-flex> + </v-layout> + </v-alert> + + <ul class="nav nav-tabs WM-Margin-T-20" id="WMTabs"> + <template v-for="(Tab, index) in Tabs"> + <component :is="Tab.Type" :TitleFa="Tab.NameFa" :TitleEn="Tab.NameEn" :Status="Tab.Status" :Quantity="Tab.Quantity" :SubItems="Tab.SubItems" :TabContent="index" Color="Orange"></component> + </template> + </ul> + + + <div class="tab-content"> + <div class="tab-pane container-fluid active" id="OngoingOrders"> + <PartTitle class="WM-Margin-T-20" TitleFa=" سفارشات در حال انجام " TitleEn=" Ongoing Orders " ThemeColor="Orange"></PartTitle> + <v-layout row wrap class="WM-Margin-T-20"> + <v-flex xs12 sm4 md3> + <v-menu :close-on-content-click="false" v-model="DateFilterBefore" :nudge-right="40" lazy transition="slide-y-transition" offset-y full-width min-width="290px"> + <v-text-field slot="activator" v-model="date" label=" سفارشات قبل از تاریخ " prepend-icon="fas fa-calendar-alt" color="orange darken-3" readonly></v-text-field> + <v-date-picker v-model="date" @input="DateFilterBefore = false" color="orange darken-3" locale="fa-ir"></v-date-picker> + </v-menu> + </v-flex> + <v-flex xs12 sm4 md3> + <v-menu :close-on-content-click="false" v-model="DateFilterAfter" :nudge-right="40" lazy transition="slide-y-transition" offset-y full-width min-width="290px"> + <v-text-field slot="activator" v-model="date" label=" سفارشات بعد از تاریخ " prepend-icon="fas fa-calendar-alt" color="orange darken-3" readonly></v-text-field> + <v-date-picker v-model="date" @input="DateFilterAfter = false" color="orange darken-3" locale="fa-ir"></v-date-picker> + </v-menu> + </v-flex> + + </v-layout> + </div> + <div class="tab-pane container fade" id="CompletedOrders"> </div> + </div> + + </div> + +</template> + + + +<script> +import QuickLink from "../../components/Misc/QuickLink.vue"; +import TabItem from "../../components/Misc/TabItem.vue"; +import TabDropdownItem from "../../components/Misc/TabDropdownItem.vue"; +import DoughnutChart from '../../components/Charts/DoughnutChart.vue'; + +export default { + components: { + QuickLink, + TabItem, + TabDropdownItem, + DoughnutChart + }, + data: function () { + return { + date: new Date().toISOString().substr(0, 10), + DateFilterAfter: false, + DateFilterBefore: false, + Tabs: { + OngoingOrders: { + Type: 'TabItem', + NameFa: ' سفارشات در حال انجام ', + NameEn: ' Ongoing Orders ', + Status: 'Active', + Quantity: 5 + }, + CompletedOrders: { + Type: 'TabItem', + NameFa: ' سفارشات انجام شده ', + NameEn: ' Completed Orders ', + Quantity: 42 + }, + }, + + } + }, +}; + + +</script> diff --git a/resources/js/views/Summery.vue b/resources/js/views/Summery.vue index f35ae50..5418c59 100644 --- a/resources/js/views/Summery.vue +++ b/resources/js/views/Summery.vue @@ -1,6 +1,6 @@ <template> <div class="wrapper" > - <div v-scroll-reveal="{ delay: 0, duration: 1000 }"><PartTitle TitleFa=" دسترسی سریع " TitleEn=" Quick Links " ThemeColor="LightGray"></PartTitle></div> + <div v-scroll-reveal="{ delay: 0, duration: 1000 }"><PartTitle TitleFa=" دسترسی سریع " TitleEn=" Quick Links " Color="grey lighten-2" TextColor="black--text"></PartTitle></div> <div class="row row-eq-height mt-4 mb-4" v-scroll-reveal="{ delay: 300, duration: 1000 }"> <div class="col-sm-2"> <QuickLink Counter="65" TitleFa=" محصولات و خدمات " TitleEn=" My Products Services " ThemeColor="Red"></QuickLink> @@ -13,7 +13,7 @@ </div> </div> <div class="WM-Margin-T-55" v-scroll-reveal="{ delay: 600, duration: 1000 }"> - <PartTitle TitleFa=" خلاصه ای از آمار " TitleEn=" Summery of Statistics " ThemeColor="Black"></PartTitle> + <PartTitle TitleFa=" خلاصه ای از آمار " TitleEn=" Summery of Statistics " Color="grey lighten-2" TextColor="black--text"></PartTitle> </div> <div class="row" v-scroll-reveal="{ delay: 900, duration: 1000 }"> @@ -24,16 +24,12 @@ </template> <script> -import PartTitle from "../components/Dividers/PartTitle.vue"; import QuickLink from "../components/Misc/QuickLink.vue"; import BarChart from '../components/Charts/BarChart.vue'; import LineChart from '../components/Charts/LineChart.vue'; export default { - - components: { - PartTitle, QuickLink, BarChart, LineChart diff --git a/resources/js/views/Website/Management.vue b/resources/js/views/Website/Management.vue new file mode 100644 index 0000000..104a7d0 --- /dev/null +++ b/resources/js/views/Website/Management.vue @@ -0,0 +1,143 @@ +<template> + <div class="container_fluid"> + <PageTitle TitleFa=" مدیریت وبسایت " TitleEn=" Website Management " Color="green darken-3" TitleFaClass="WM-Color-Black"></PageTitle> + <!-- Nav tabs --> + <ul class="nav nav-tabs WM-Margin-T-20" id="WMTabs"> + <template v-for="(Tab, index) in Tabs"> + <component :is="Tab.Type" :TitleFa="Tab.NameFa" :TitleEn="Tab.NameEn" :Status="Tab.Status" :SubItems="Tab.SubItems" :TabContent="index" Color="Green"></component> + </template> + </ul> + + <!-- Tab panes --> + <div class="tab-content"> + <div class="tab-pane container-fluid active" id="MembersClub"> + <PartTitle class="WM-Margin-T-20" TitleFa=" باشگاه مشتریان " TitleEn=" Members Club " Color="green darken-3"></PartTitle> + <div class="row WM-Margin-T-20"> + <v-flex xs12 sm4 md3> + <v-text-field label=" نام کاربر " color="green darken-3" prepend-icon="fas fa-user"></v-text-field> + </v-flex> + <v-flex xs12 sm4 md3> + <v-menu :close-on-content-click="false" v-model="DateFilterBefore" :nudge-right="40" lazy transition="slide-y-transition" offset-y full-width min-width="290px"> + <v-text-field slot="activator" v-model="date" label=" تاریخ عضویت قبل از تاریخ " prepend-icon="fas fa-calendar-alt" color="green darken-3" readonly></v-text-field> + <v-date-picker v-model="date" @input="DateFilterBefore = false" color="green darken-3" locale="fa-ir"></v-date-picker> + </v-menu> + </v-flex> + <v-flex xs12 sm4 md3> + <v-menu :close-on-content-click="false" v-model="DateFilterAfter" :nudge-right="40" lazy transition="slide-y-transition" offset-y full-width min-width="290px"> + <v-text-field slot="activator" v-model="date" label=" تاریخ عضویت بعد از تاریخ " prepend-icon="fas fa-calendar-alt" color="green darken-3" readonly></v-text-field> + <v-date-picker v-model="date" @input="DateFilterAfter = false" color="green darken-3" locale="fa-ir"></v-date-picker> + </v-menu> + </v-flex> + <v-flex xs12 sm4 md3> + <ButtonShodowed BtnClass="WM-Btn-Green" Icon="filter" Text=" فیلتر "></ButtonShodowed> + </v-flex> + </div> + <table class="table table-striped WM-Margin-T-20 WM-Align-R RTL"> + <thead> + <tr> + <th style="width:5%">#</th> + <th style="width:20%"> نام و نام خانوادگی </th> + <th style="width:20%"> شماره تماس / ایمیل </th> + <th style="width:55%" class="WM-Align-C"> ابزارها </th> + </tr> + </thead> + <tbody> + <tr v-for="(User, index) in Users"> + <td> {{ index }} </td> + <td> {{ User.Name }} </td> + <td class="WM-Align-L"> + <div v-if="User.Email"> {{ User.Email }} </div> + <div v-if="User.CellNumber"> {{ User.CellNumber }} </div> + </td> + <td class="WM-Align-C"> + <ButtonShodowed @click.native="$store.state.UserDetail = true" BtnClass="WM-Btn-Cyan WM-Btn-SM" Icon="info"></ButtonShodowed> + <ButtonShodowed @click.native="$store.state.UserRoles = true" BtnClass="WM-Btn-Black WM-Btn-SM" Icon="sliders"></ButtonShodowed> + <ButtonShodowed @click.native="$store.state.SendEmail = true" BtnClass="WM-Btn-Purple WM-Btn-SM" Icon="mail"></ButtonShodowed> + <ButtonShodowed @click.native="$store.state.SendSMS = true" BtnClass="WM-Btn-Orange WM-Btn-SM" Icon="message-text-outline"></ButtonShodowed> + <ButtonShodowed BtnClass="WM-Btn-Red WM-Btn-SM" Icon="trash"></ButtonShodowed> + </td> + </tr> + </tbody> + </table> + </div> + <div class="tab-pane container fade" id="SpecialForms">...</div> + <div class="tab-pane container fade" id="Reservation">...</div> + </div> + + <template> + <div class="text-xs-center "> + <UserDetailsModal></UserDetailsModal> + <UserRolesModal></UserRolesModal> + <SendEmailModal></SendEmailModal> + <SendSMSModal></SendSMSModal> + </div> + </template> + + + + </div> + + +</template> + + + +<script> +import TabItem from "../../components/Misc/TabItem.vue"; +import TabDropdownItem from "../../components/Misc/TabDropdownItem.vue"; + +import UserDetailsModal from "../../components/Modals/UserDetailsModal.vue"; +import UserRolesModal from "../../components/Modals/UserRolesModal.vue"; +import SendEmailModal from "../../components/Modals/SendEmailModal.vue"; +import SendSMSModal from "../../components/Modals/SendSMSModal.vue"; + + +export default { + components: { + TabItem, + TabDropdownItem, + UserDetailsModal, + UserRolesModal, + SendEmailModal, + SendSMSModal + }, + data: function () { + return { + date: new Date().toISOString().substr(0, 10), + DateFilterAfter: false, + DateFilterBefore: false, + Tabs: { + MembersClub: { + Type: 'TabItem', + NameFa: ' باشگاه مشتریان ', + NameEn: 'Members Club', + Status: 'Active', + }, + SpecialForms: { + Type: 'TabDropdownItem', + NameFa: ' فرم های خاص من ', + NameEn: 'My Special Forms', + SubItems: { + Item1: { NameFa: ' فرم تماس با ما ', NameEn: 'Contact Us' }, + Item2: { NameFa: ' فرم پیش ثبت نام من ', NameEn: 'My Pre SignUp Form' } + } + }, + Reservation: { + Type: 'TabItem', + NameFa: ' رزرو وقت ', + NameEn: 'Reservation', + }, + }, + + + Users: { + 1: { Name: ' علیرضا حسنی ', Email: 'Alireza-Hassani@outlook.com', CellNumber: '09127004945' }, + 4: { Name: ' فرید ساروی ', CellNumber: '09127476990' }, + 27:{ Name: ' سعید خاکبازان ', CellNumber: '09336541236' }, + }, + } + } +}; + + +</script> diff --git a/resources/js/views/WebsiteManagment.vue b/resources/js/views/WebsiteManagment.vue deleted file mode 100644 index b5de3c3..0000000 --- a/resources/js/views/WebsiteManagment.vue +++ /dev/null @@ -1,183 +0,0 @@ -<template> - <div class="container_fluid"> - <PageTitle TitleFa=" مدیریت وبسایت " TitleEn=" Website Management " ThemeColor="Green" TitleFaClass="WM-Color-Black"></PageTitle> - <!-- Nav tabs --> - <ul class="nav nav-tabs WM-Margin-T-20" id="WMTabs"> - <template v-for="(Tab, index) in Tabs"> - <component :is="Tab.Type" :TitleFa="Tab.NameFa" :TitleEn="Tab.NameEn" :Status="Tab.Status" :SubItems="Tab.SubItems" :TabContent="index" Color="Green"></component> - </template> - </ul> - - <!-- Tab panes --> - <div class="tab-content"> - <div class="tab-pane container-fluid active" id="MembersClub"> - <PartTitle class="WM-Margin-T-20" TitleFa=" باشگاه مشتریان " TitleEn=" Members Club " ThemeColor="Green"></PartTitle> - <table class="table table-striped WM-Margin-T-20 WM-Align-R RTL"> - <thead> - <tr> - <th style="width:5%">#</th> - <th style="width:20%"> نام و نام خانوادگی </th> - <th style="width:20%"> شماره تماس / ایمیل </th> - <th style="width:55%" class="WM-Align-C"> ابزارها </th> - </tr> - </thead> - <tbody> - <tr v-for="(User, index) in Users"> - <td> {{ index }} </td> - <td> {{ User.Name }} </td> - <td class="WM-Align-L"> - <div v-if="User.Email"> {{ User.Email }} </div> - <div v-if="User.CellNumber"> {{ User.CellNumber }} </div> - </td> - <td class="WM-Align-C"> - <ButtonShodowed @click.native="UserDetails = true" BtnClass="WM-Btn-Cyan WM-Btn-SM" Icon="info"></ButtonShodowed> - <ButtonShodowed @click.native="UserRoles = true" BtnClass="WM-Btn-Black WM-Btn-SM" Icon="sliders"></ButtonShodowed> - <ButtonShodowed BtnClass="WM-Btn-Purple WM-Btn-SM" Icon="mail"></ButtonShodowed> - <ButtonShodowed BtnClass="WM-Btn-Orange WM-Btn-SM" Icon="message-text-outline"></ButtonShodowed> - <ButtonShodowed BtnClass="WM-Btn-Red WM-Btn-SM" Icon="trash"></ButtonShodowed> - </td> - </tr> - </tbody> - </table> - </div> - <div class="tab-pane container fade" id="SpecialForms">...</div> - <div class="tab-pane container fade" id="Reservation">...</div> - </div> - - <template> - <div class="text-xs-center"> - <v-dialog v-model="UserDetails" width="90%" transition="slide-x-transition"> - <v-card> - <v-card-title class=" grey lighten-3" primary-title> - <PartTitle class="WM-Margin-T-20" TitleFa=" اطلاعات کاربر " TitleEn=" Member's Info " ThemeColor="Cyan"></PartTitle> - </v-card-title> - - <v-card-text> - <div class="row"> - <div class="col-md-3 WM-Align-R"> - <div class="WM-Font-14 WM-Color-Gray"><i class="WMi-user"></i> نام و نام خانوادگی </div> - <div class="WM-Font-20"> علیرضا حسنی </div> - </div> - <div class="col-md-3 WM-Align-R"> - <div class="WM-Font-14 WM-Color-Gray"><i class="WMi-mail-alt"></i> آدرس آیمیل </div> - <div class="WM-Font-20"> Alireza-Hassani@outlook.com </div> - </div> - <div class="col-md-3 WM-Align-R"> - <div class="WM-Font-14 WM-Color-Gray"><i class="WMi-phone"></i> شماره ی همراه </div> - <div class="WM-Font-20"> 09127004945 </div> - </div> - - </div> - </v-card-text> - - <v-divider></v-divider> - - <v-card-actions> - <v-spacer></v-spacer> - <v-btn color="cyan" depressed dark @click="UserDetails = false"> - <v-icon dark right>check</v-icon> بسیار خب، ممنونم - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> - </div> - </template> - - <template> - <div class="text-xs-center"> - <v-dialog v-model="UserRoles" width="60%" transition="slide-x-transition"> - <v-card> - <v-card-title class=" grey lighten-3" primary-title> - <PartTitle class="WM-Margin-T-20" TitleFa=" دسترسی های این کاربر " TitleEn=" Member's Roles " ThemeColor="Black"></PartTitle> - </v-card-title> - - <v-card-text> - <div class="row"> - <div class="col-md-1"> - <i class="WMi-rss WM-Font-36"></i> - <div style="margin-top:-15px;"> اخبار </div> - </div> - </div> - </v-card-text> - - <v-divider></v-divider> - - <v-card-actions> - <v-spacer></v-spacer> - <v-btn color="black" depressed dark @click="UserRoles = false"> - <v-icon dark right>check</v-icon> ذخیره ی دسترسی ها - </v-btn> - </v-card-actions> - </v-card> - </v-dialog> - </div> - </template> - - - - </div> - - -</template> - - - -<script> -import PartTitle from "../components/Dividers/PartTitle.vue"; -import PageTitle from "../components/Dividers/PageTitle.vue"; -import QuickLink from "../components/Misc/QuickLink.vue"; -import TabItem from "../components/Misc/TabItem.vue"; -import TabDropdownItem from "../components/Misc/TabDropdownItem.vue"; -import ButtonShodowed from "../components/Inputs/ButtonShodowed.vue"; - -export default { - components: { - PartTitle, - PageTitle, - QuickLink, - TabItem, - TabDropdownItem, - ButtonShodowed - }, - data: function () { - return { - UserDetails: false, - UserRoles: false, - Tabs: { - MembersClub: { - Type: 'TabItem', - NameFa: ' باشگاه مشتریان ', - NameEn: 'Members Club', - Status: 'Active', - }, - SpecialForms: { - Type: 'TabDropdownItem', - NameFa: ' فرم های خاص من ', - NameEn: 'My Special Forms', - SubItems: { - Item1: { NameFa: ' فرم تماس با ما ', NameEn: 'Contact Us' }, - Item2: { NameFa: ' فرم پیش ثبت نام من ', NameEn: 'My Pre SignUp Form' } - } - }, - Reservation: { - Type: 'TabItem', - NameFa: ' رزرو وقت ', - NameEn: 'Reservation', - }, - }, - - - Users: { - 1: { Name: ' علیرضا حسنی ', Email: 'Alireza-Hassani@outlook.com', CellNumber: '09127004945' }, - 4: { Name: ' فرید ساروی ', CellNumber: '09127476990' }, - 27:{ Name: ' سعید خاکبازان ', CellNumber: '09336541236' }, - }, - - UserDetails: { Name: ' علیرضا حسنی ', Email: 'Alireza-Hassani@outlook.com', CellNumber: '09127004945' } - - } - }, -}; - - -</script> diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 3bdf5bf..f1d6a96 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -3,8 +3,9 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> + <link href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" rel="stylesheet"> - <title>Laravel</title> + <title>WillaMall</title> <!-- Styles --> diff --git a/routes/web.php b/routes/web.php index 810aa34..9cea6dc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,6 +11,6 @@ | */ -Route::get('/', function () { +Route::get('/{any?}', function () { return view('welcome'); });

jI=1TOGGerf2`*;7MHd67w#gv5nY zlv0`Y@6}OJ^^$$(ox}%q@${eZhPu`}W)kN&z0)AO&YE$ZOwMRSigjk#$A9Yg&Hb@z$Aw8|J%Id@BAJidQ1EW^ zyC#qPGptucYW)Wt$8nxk#w!PoqG$)qT`6gyGfj#B6Qyxj%@Ug+jrCMsxz475Z-^2r zWLEL>$22jJ_GL2ubX0rw&@G7KWF6W2o<{Mq7#dQ{6=M@75G$%g?uGOWi71ttnL6f; zgrcZUn$@Cd|Ly6VT7EpcoFXPfthhh^ygHX6YHp9Bsg0yccsk8F(f?0-Bx`)1uvsJ} z(XlFxlCA-31xJs)QYTm!NK*2y^dd`Tss&oCwG^Q1YA04LaMO3kWeLyh7z%TSZW^Ce z+xXP0y@_<-$qQ=YH_!jXgjl^iVF8?)71?rVc{xbqsEsk#_PQAWZ>>K9D)}? zZ32>B552Os#183C?r}*w5MwLXC7Ivd*kH>Ku%f*P^&@hvSL_Pc%laMJJg7E|7lfaZ33w8XG4;7xb}8K-b1g*WUB z`dxm1G;^wu8$2+(Fd^LDCj&tdP6S2BcTo(_R`#W{xg$xx-{W$*yl%J0srgXqcBteT zL-9ht+Y=hq@TH*38y*`FFaWz;q2!RuH9DlF6JgEe@;l*raJT=vK*cnF$Qg`BQhr|| zKafvo5wGS8`Oty{&zk4s0|B2in(>FVSRxg734bV<3xr3L!#aE`!EEc$`k3J9Dc);ta+j&cH2BeBCYZo#C)Qne>N;y^s%f&?I}= z_T^_CNe}CxszU9_&g|lzxx4ow(yqYw`d(f}n>gjYacHzhd!gx(_W%yheTaQYZAQ%V zsq+z(OKv3imU=+6%YHwD8iHQ-J`i4S;+OHrn7`{fJQBSkYL5u`{ZJqfqB)bV)&swv zM>Q+dwAzJJMrHNIsqKuQ8OL@!?R`Alf!f*jD7QV1hEGb_PwjgPmj&q|?SY~PmqZqq zwD&0A36ULrZ&p0iu%BH!f$KrrUnsWu8@5A?kWxl{QT&BqE@p|H+Q34<65xUFbZYk? z;0W&cA}TbKzkrD(7GSlY*9Vv3Vtl%Bx65_6+by5PoW}zn%jc+<3;1`;u!i5cq=M{{=jwrgq>($45NQ+no6Ee8lDA8vw~zyB1;$TJlU9 zhJF2@<7U(eyc;KzWgPC*s5cKBDTNZxY&2ApZAe*x5}QZ*qf2I#0UGNta0wPZU7925 z5^br5s+ZNva#w13ii?1{c86m5iwhvan@?rhKV)W!;dIECHtIDX_W{W-M&p~&wAo)3 zZ~jB)5We`7Tp7PVwp1}@J-0lSLWgc%4;vnyVY}?!4&*F(go^)(!+KDJ9_Fw*t}dwx zjo{TN9XcWw&2~z2HJr*;@w-mH)%9?&>Zz0;oWAnpxE?#TY{ZJ`TIP8E=ezMfj7{?e zC*Lq#3FPbg<;(xEgsV=S!8DHN>sF)>X-2`b3mPC>nwazyLN{*&jqY1pUxPStJy`Ux zSXs+@!u22S1&N{ys~0W%7_vqQcRXyD7LE{j34<5Sv{+dApljKB4=uHWAcp=4n2-1m zahLp;dXmmI6|yHBS7ir=4f$+bzKpdYU0UNO%=ja-FG%nB>|ToYbr_kW?|khA0S!^t z*ES^#0HgC`hXg*sm9++}$gAeVq!VS2oW%a%?$~MBK~3ns-Z=mU&shH&iqhf(GKJv| z1!DPPcimligYk2p*sFq~Wd(wH8qt0`-Fa(U)y=g%YAD)#jGW8Mp2v-Wy)j(mji4gd zg;taWieii@{WDhEd#+;*UgF*!t#50!>U7%f>di_kr`*rxeO)HSI?D7kU+3(W$B9Q&TBt%IkDOK*t&72@QB6A~HP<8P+EXP7(IH zbM8sa;}yQie-Ts14deLKovx*@%LTC%!s)=wv54pP+lABbc^gD~;dW}LfA=wge~)pU zK(o{dRWGw3C<;BjwfUeJbtOiHWA3&4pZTX}u8HkypKkw7tFf^K_YV^B+t<|j)%BB{ zL|y2e`}ulYNr&@SUos_LqJ))xX*e5a2E_I4(2r*GVhqx|UyB6AxJL`eM)r?$_4>va zz^C6zr+ofkEbR41qyC^MIrKE zK)6VAVlk9s2S1Xp+4d*TES|Z9`D9}ZC&7zASJU?PrTV2NNGE~^>8FW(uE{PE?9i&t zYSqW;5VZ}wM1r>w%4I`EX zU);nSk!_#EGyJ_(q_P8G=BeP=qz6(sUUV!}7EU&0zd-E7*CTSPiSJ&(b9>v6bK%{Z zNWa+HI5~6bq5~M&YaS{ifWG4eGp_~R(?Olm7si?34ZVCw2?752ISOdvcMl$Xl?g1I zl#XBEH=Ac|NpX#X1D*{v7f$B!O;*ywj2vQ0>1f za{sAn)$Ad|z5=k(J> zNDbBEX~d~+){TKX?;J4d96;5Eh=QRgec68G2*Ms}Q4r-%NhlTbq-Y@ef9GlV7lB@M8@udC`C#AnQAukXz80 zq3#SP#m3=8h)O0YO}$bi|2kRdQ{F(9(>4cii_t%`WZ?QJtY2K6?~>go#5 zHvjc*?cn;-1W4%mJj!U^h%q5Qi)bJ}Y5^BboMiMl0utn{GUj1t>|?s-Cxs%qy(Z;2 zmDqs91sxS;R=RrBO-8Q$QzD9Jm8Hq{k3D(>n26qy6?d+@6;x-7gEVsDXWQ)HSYA3I zLZJa@RuTQSY*zAg3#K7Z;W*ikV0tFD6u;=6Jugchy#DIl zXzfh;QNCi*FzZC@!ATNemS855abB}?3wsi^ol_{j@c;KZOpxtNpPf}J4%-ussLos| z8Q9ES*!-K@J=w#O&)M!_)`W%PWV;J*hhL=yZVOH8?6Ejud&gERb_FLXL4^# zwy9W6Z`n3hd1(0Buv{A4wK1)71J-%`E3clU=n@ zx1p_fj@DU$^Tn`Rk9$+>Z91fk{3}DnDVY_kfMnEhkbNA3gq5U zFvKNLKd}MQgN5#zTY2uFPagVq>S}=j_ay7%KxXOHo|U!FubbyC58wW@DvN?#XC+yL z_3DjbS2YH$^)j=bdiPli+5eKQ^o)jyNclt_^*g3R`NE{tPK`klgq0=7MYChczEG$D zDWx3@+HZ|08d)+@-znN)ptX}yMlbJV+MX0I`|wXxCfc!brbuP&5lG;=4Z+qqtN67V zljp453f9cKmCgDQs#O6>iF|hEU? zJlGN5*aScAsZr8%9`QbiqNt%a+X4>cKD+LkfjSTNyV~c#5w62ylnzC|6!q{jW3Z`6 zV>HQHr1)m>9JR9Ws!+`CnHJS)pi;3O>y5q66l|5KNtjWaogB#izPCDz<4>|xSji<3zxzLC36`p3PuRNOWSz|4W`m26;T_R zi*+1SVD2pimt>KL5v*?=S_tQWfP!mCT$Vlr1XX(g1CF4l^sEc58;&xFTlu+=evJ^XIh&Du-5P(0Twx~!WJd57 zAV`ssJse)O2a|wFn0A5lwTV-i(ZSKX@yMK-Bq-$_@a+ceBchmhC(@aOCtoxOnXtoZ z>Da#~-ho}9tdp#RAEo157m8M~TD)}{p{rSC>J1buAoYwf8JO4&FlE0S_$K^+H z@0|A}K2tJ6R}Vq-)60s5hVSsYsRdWoZlsRro%|e>1(Q6PJ$@Vl8Z`fVu&c}ZxS0$C zCp8S-^em|dvPz6V2$q}LSRKA5crB`%UvjgPSFQy{Vd?7K`xbF$6eRKB!5-1%{4yF9 z{1wgRXe?qtnl;2`bG0sS779Q`mCAWta>`~E2E>*e*FA1(=;k@r#pTP)*I+330=XD? z#r2UY_g2-o5oWdYv_g5-<{B^PA6LMj&JJ8KxziGv+f`7UG}Oa~igF z5Wd0@V;kqefY>G~6F(!HT-D|CnY}&?a>?rW3rvoms2ivOw|>L#bZ*pm(Q%EDGWa=G z*Vk}vlehgT&hRko^MlY^SP>K4mc3}{A%Vpij@$}z=P?mD_vROC2*pLrXc{l*Dn~O~ z8V{l0c0u#sdHB9HU*Mr9>vQ???9WbmtJ=^xZ6ZJ9t>@?Jv*owrs0UjPuAN@G%V&h% zbMfp$e(z*q*lV1Vf0kc+)9|E*@4czngqlU1Bi|b^{<&BOjLbhBfvkZJcY8s&8$k4% zoN?00;mtd1X~dVn6={L`sOEq8sl7qnyjSxLRpQm*s$Ux#i`}DXDVGrIh6#G`-S^%8 zh|fDYGVCqxg#6OIvC^>Dhp)yfLq6?ZuQ%m_Yv1BGE!b7r7t4}&d#!0a*3>7ajSbdC zY({BYL_CE&43LJ_Yf;15(5cFYalrq99gagUrSySf>vKEox;rhdv=VmiE8Cy!zF+73 zLuEyJOu)dUKAu=8F+dYU4w?rCbJz~ofm^~E(r+ew%Z?DNzeO2f8LlOCqptX-l^Y?u zR@z6f$2Ni1`i^FoTSNP-k@xKw`JJ86@Y9zb>4l<;x2BA~btKpTouZKKA%zdUyFhT+ zb(%BRp>84A1`ouJ$$yN&F>R7eV6#3}7eVgG9wsA{IpmOcfLT>*fql_|XG*OcZGX=DNH#L6;O)cR z(Q*^gIz3FVv|=!F%x04}!%g314ba}8n@Awz3Z%$nL*zTw*>;6vC?4`ZgNOK_bCkh7 z4xoa^NsMEeY7=v5gqy;wzDUZMm(85PNJ?{vT|md4$IY0c*>A2_<`I+j2L<_88s&t{h618;CnO*qGr z$@br0NQlyi3!a&B2BCoM|K^#xCF=Kn)HgGC)q9`D#t_F{!oNRf>Xn9@rvQ0 zx;OG^fo{Qu4)PKX%}0(>7wh*w5cfZZ<0*2W0#h5>kvQY3E6Oo)ZbII=SH=~&Ji z(Wx=%5pOP*M$TO};fzPTUWAbPydHf}_jrAw0hiYsi8~Y7Ep_6aQ!md1^YKV{AT^Lp zW$_%2#Ph*OC|D>2HP4|_rw(~Ez7L5Y@0*B*1A#D-JTPi<7&i>Zg)10#2P2W7I~;V0 zco?G&zgiKpdLE8Mz12o8;i^_$iQEOl8;wLY%~f_e>yNlxkJO!btAS`-Qch+5IHNTX zt;$3e;BWyQYcb)43eVI86?0m*@z54<1mSUDQM8<^7cQ(iTdmenL{Y9g8%KSiM<312 z&gLF{G_-Z`L+SK~E~1M{awISP1!+PvnYcbVi@(XNtKK%f1llw-*jb zOnborznXMa?;JNFD;(@O;t5saKr!2g1{i!MJK>?JX$g3<@ zOve?+C|8u`+qoid6=O4FA`p!Ro(v8|$C;wCCmdfdFwLqE4J-!-gpeo?VKW`$)|;k` zc*H?u29SNm7Msh3_a`cItG z2~T!F&*k)J#uG{-;iTco$lnJtp7-KyGM7urKON(}BK{ZDOF_K=4N`ujAFE}TZfOz@^*|6iJ~Bj#)S(>Tp3nJD|?4}l}rheTWgBK&xurP7OJ z$a$PTi#Vmkva4Jyj=QU)qobwAPlUdlPJcOc;_-i&zPnhwFqJA5U%z-%{K7*n*F(P` z5P-uovwP1RGz&+WL4rUsjzK&}aC$Nmtp@F)Htv#R&>(?xXBlHu-Q&e#`8L}~W4do> z*r#hhUAnj|#69OqKm8BsVktFsp;)|o!#4J>j#hNN(*A4Lu}6w)9_=lOhY^j^k%eBm zzZs34UxL56{o~D5Q>WeA;SAkTos1R??A^@xV#Z&C>m?v{p}&t!Kcu9`uF{@e!UBb) ziiQ{paBF*tGCVRzUR`a!fK;NPc-%}>{;OvG0d!1WTWPG3G4OFMp1HiRU?wn{X^hR0 z2d2R0p*NUvzK1qwa5)sm^mw7y!zKev%+-?Gi;LJ6ak)vq?|ugI2+MCiF@ zR-U6uj*qJhzA{r0Y8Cq(c#hAZ@>i`il%Fqn$z&U$;h?$l$cY#>s~ zF1j8+n?7LAfpAHW=1AZhF z`7~q}Aqa3FJav04a`LvRsm#8ELR->?6WP>&K7gN8HZhD3oQF)Ag!%yWaRmFkEL##! zW#IR^_N14TSKn%&2_fbCKSRF6FQ7VO1d>`BGQRAZlBgj2f$~{pfyN~dO#!2P12nUe z7)_y-8VWHZ`gVTdOUR^ZMdAi3bQq##47Ps`ul0L#M_e&}{%}qdH#Xq1X^d&{$e$aZ z-D+-be|2#CzucQU8VbiF|MYOK{khGrfda|XyD+(6w_x8_)(u>6I2hB%;G`rB7C5tJ zMG0?cph&}F!5CL0pjB!K5G5{}BU}U>kT@n6gex1&W};31{?K=g!8@MH{ZyzqP#GBf z>D)gzLt=3<{X0e*Rx9CXK9Ao*p=^3Ee<1$K`F*bM0Mab3KYOw8D&v`4`+H42jr;v_ z6LYZbD^-sif-I9W7woF-wdMTV-=1H#dlf`|b2fDs^K9tjZ`6qn3iKMlJ$oa-%71-e?N8IY?S6BMOMf*X=Gfq3>Sp z4lRj>ZGwBP10wo3iJoW(F0{22Lcal!)=>S{iF1JVyb0dslX>2j+{7HwN{zKXfinmP ztaptNSBDC+d|JeZsmac9$N3Y!HovUvijFidPoR@k1!0RyiBCWbt2h+{IoP>y%)fOc-;^y!In z+JVkHPsOv8uhsHPo=WH4^Ms?dbVuyu$jFKK9ZQFA=ev`!JC>#ohYn;i2SSIZ&3ECY zganWBmpOM0k}qfPNN75`mq4?Iya8T_$UQahfAho>&p+|Rhn~6To@efXMIKh#CO>%o z2?HP8^UT{j^Zh&cl|F*I(LV`!4pTv}DZ@<7d3R!r*sc~%-4~@!DEB< zI-b<)DUSJw?E+r-zt}F|g`ZT@f`m%mLA}NW?Tp#i1$iDVFzTDS8NHRXZ6Vs9FN@=l zH+FxBipG0IV zg&*Uoj%~Xmz8D%-8bUIJL4eMZrQlCkBq$%u!Gm4t8ny#Sz6=tDRV*H#K_>Iy@Z9ar zFS^2i?RoM)oT<`vkWYmIV$BLbR&_boeOgG@L?M(;$8n6+jmuDgAs&)WU}HCF#h&>F z+cC98D<~Q!Eu5AB1`lSQ(f>^ID4Y?{`w+c{=k^wjkoad%%SWKNy}TsCAyaxo*Hf!z z{Xnc^3+otzy;Iht7p2;0dOo3zR@gb_2sStlNtK|C<`)>O`#{DBYNch}?X8raoD|hb z*SMY%+0QBgc;UUSi}$-OJ>YuXL$1%AC}~3iWrW)Q`ph#kVsKzh*V`?tVuPW}|C?)) zw{D>}=_XbNl!U?Q+$e#5z`)Zna3>wkkQmb2p}yerlAek<(=le{@NC2 zXKndR4V@K+XC{Pe=>np1Bj|JE0f8No0A&aV>RF_c?Tuv0`LqW` z-q*#&lezuLjg92~+{ugWFEmKv-7{PD4%vC9j<`Wg>7#6y)N|uMOCR`W1 zXfoHz&~(8y0e)l-@RxC}WE?8T9y=Y@QRr&(=^6qlIuYO?UBwP4q=+xP?$%pgcME=Q zecdhXZx5tWV8owLFV7dgQV?G2kGH(;)>WYwc)|D0SAh#GdN4X?$=>G&vJ>p5!VbpI zIRy9w-IQ`hH*=U;lGI9SupE*|dFHbk*@zg$mc;DnaKVR&P1^BV!S4n%-YMeS z8_2l>?JGf%`;|3FAG)z-K33p^L08Q>I+0{!>+7*BJb7qD2A+n0)fE18sm(qavjG7*l3qev@>XZ-t%_2Pd2?5z1_ z=JN+~k>ZFDBgIH=LD+sd06%MKpMPx3zpqp;?(={6!~T86dZB>p@F!k~_tD$|r}IEA zS}d3_Dtj<(t`3I4@u&fQdM)M4S1w<^a@n|CzltN;4?-Y!kSb)nyC|zE9$6PqN=)o3m3yfG1FYKjU07a5eO&Y|2C-ZpknJ@rJ)(uX z6_X#H6y47Mg zdE+%@)Z(aiDE>dpJBl^O%&$Lh=S!V8`3iN+rtAnf1{o3ZD$WatQDE+nf=wl0NoEIn zRNRj&MgfDxmMfVZ8%m9O-zCds!@r7hu;Lz%Tc6T3E$5zn$J9Fv6m3c2_(ojOyNrgy zfoL>NxKf7h^9{MmxCW^2!ol7@9{f5|IU43?cIm-ho3Nvci<(D9}f!cYQnGmSo6C^&-tA>S4cY-z?VJ0 z=*m^Aj~~e&dH34?if1v9Ka#&o!it~@6V{MJRof+Q4?F6xPcQ-rS_woM=wJUYK>x}6 z3IV^nG*a{={DaY#HIJ<~YR{W-wMa5_jV_Q5QjE~)LO5;5@2w>*1 z3OLuT;?VV-FghgS|JoT@TcWjuk*eiUF>tYJ6s?^-&QM&TXlf4 z{{+f0-yu-+i={b#$(@LOFFxe<-5*Q1OVJ09&i}>tO1_z?soMf`fwAhK%eXY=3A;Rg zXgQIPCni4ZNu(oAPcjvK#FI!xov61KDOX*i;X{?r#)sWgu6S%L=^l=K?&!@(%u7xG z+SIK9+%Fi5`SZ#DtbZ;Y&kh={U|_&`-un^M$BH7+-W@IYeIC5S(oIc}l=T^2Jsq50lR28wpc8NZ`0v88SeQ?41iJK|pv$rFuk){XDpXfi zsy3bBAH^j|7ZFPDWeT4)=t!0ev<5kzlnEIMXrzy;sL8DgN`N!#C#%Z^dPKj*cDtYu~qr3rYVNOOgnL%zS^9nCCU{-d>ZBdZ+7zZql>J-Ks6`^xY_9Z*N_?+xz zw%AfHHS<#w|J3VB$o7Kop$xw{r~t_B9OKe^&NwEZAGknXyQRR$>YCJL#B(DC+Cdho zLR1S&w+mxr$L|};02)&@lUjYQvc7eJy&Uj!L8*tGJwv+_brbj-%cvPtV-=K9<@ttR z44B7f5b^n7Z6Q2R7J(0B0?mt4MzH!xOX+JG@IzM%0X(=M&_Mdygx?lLd4&ZHVPc_r7sMeZiDYMNW zyfMzjgNMKa&N;}B8XhJSVBQ2u#_@Mp7~$$>I{-fFDVPuHP;EV$-#s<~8zv%OppOYh zwTklZE3MQ@Dv%0Xq0CuMC8wbHsy%*1p5;N->xrohdN`ritJQ5pR>3J#cFsw}fF{ zfy;nwbrtLixFCfrdJ5sdFLbOw5g!M>fbL^X)s!jfg1-X-2Fm@_K6>%Dym4>T>;2f% z(dol^L~MFI)AzmO>5qBwVch#$7o*ep`=&h}pN5(ZYQ4T9o&=Rc+`-XNan(?>2&$^) zt!Q+eh_jF6SAXz+mrp}ooj~yYKRCPkK5=<9zuNx#`-1^*IHvhr?_Yl3>RFNb2+^6m1?+C%&O0excN;3YkO;Q=9T77gLL=Yf%0t^lXe@wvlqye+rB*7O?H z!sLC2_W#r+Pc<5TZ1u{}nK#~a;5gy)@Cm+k6+6q$^$5h+j|fP)sO+dfJ52>`54f`G z@%-~^tBB@HRadTYy$s{p>gqKR<2s5YiRixMp?xnpSiXfsDd|SupSmY~KxW6;1ooY* z6%+H&jEcAnMLixha%rKA!FWP%8C$FC?dP8tb-m~V4gBPCeHA@IFsxYLH&kr5@LFHJ zcCC?2dh6AwCJ7#whB0`uzK|@W_Z;-Mn|lxRkF86%KlY5tYogK` zTf=X=rij3;qtM9o(l|xSnyjzJ$x7zNOt?kvr=EUbUri0woX*-%D&;Q-=ctxyG}k)s z)!%xh@%A+_F$2d5*x}G{RMc6aP`$0nKLAX*f27<=4`&%UImpf11uZd~inexUQRUgZDltZp1i4ToY87urGT`0jAPGY~}mwCT==!f$<=I+U8#t4lq!lYrKI z`|g>cdL`DLHDMucA45##&I#7=xBm0%nVwvrM|BDQj#<8P$L}6>RqrIZQjh9O`rdQ( z59@uWisj?kqI#QqAl1nHXPmk?v7kVJW6_E}UWs9faAAPe<%I_)3OOzR4y{O@FQQ&J zGH`Cwd7-}V>_GmFZokl;ZobhK5W__f-_mSTUzdfHrrAH|aO>jO;7qE1!6_Dv;1mkn ziW8b^VrokGKbx$N&!3B)oNjB6qyLV)dS?1C$;`4TUBPZ)SKTUjG4iKOSm)AU^NZN4 z*8!P-wE!-|CaHkd(U~*&d>_bX#v69P+kae_uy1-F$fD<9zZp#5nz$?f0UP{J{ok2? z;T!^d!a4qaWU-{6`5Q8#x#4(~;{nI(F&FCMI6An4!IrG3Nw6qY{*X$joFP78tOqhK zAOS#-hr|SDu5~@lI&>?toe@r|&V3TNOfrWiLn!rvmd&C*sj`jxVJ{ej$pE6VXW4@v zvF~~LXBdVviE1QSGp|#>Co=HYs!txE?AoNR&kND5UD?xHg7+JYy$O22frs4ghYpPG zYyTnsjxWlgJ;{i=5~_0-n%r1beTq(MxG~VB&WSI|vx_y3ZTUEr8CNml#1=#j9|#my z+!}1o{O>J+K<6O)R4heRIF#Yy_YF_1TA8a?}o`E*O5C2T_u}Y;_*6&K=t8nde7O zDKeF4GSJI0NF#F)Cb@aaT&?s`=XfU=U2Fvd>r7)^4+QlFGTPcdDvlOM^Cd9?{3mk> zIMp`-p~g6hbM=CFYafatE?XyfTp5@uF|87uUeoI zOaWW3X``-D@tQ;J?;Z*?5FCk0Aq`~FHpE72bMqSBQ$eXWR$uIUzhkh9@P100sHHpi z`z~$;alEmDsqA?_xsM^sseBn#?+{iWIN}j(gYY8!nD4Z*^$yK%sedRvKsXLWW{+et zM`j{VE<|RJ;@xaiJckdDrZY!pqYDUE#94;UcVe<|c*1k&kZ0oXr9IyLnC(H~5b5$3 z15r6Dzl=U^*xxNkc*>$hn5>yhHzP%ZMrZKL$P#H9DCF0K@bmf3NWa;<(!MHE*IN4a z_GS~P?C>zo-8N2l#*oJ58LrLyOVJgtw)tY9_7>uc8N5k3t2@8;cSY(-vk8+@&sf0o zTJKmLoJ!w@HI_9uvDrc6lNbv-5Uv$Y?MIzi{dgOgZ5S;zHH!U?7ykyCXCH$f{t{^I zsMtRbftcBFDi-|zq3kQb+c>&*v&@n?aTuDUO{zAWa#Ln*QwCXD+lociN`{n~nVFfH z+mxA^nVC7g?-`I~C;6WLruFWeGqba^1BYh>A{3)_I2R!&5T{@!wrJ6kMI3}`v@&@P zOumz`Cz6g(C#xEfIs6a33%>=Sk!Xg%6|8XxXv(Fw0xbr=R?wt0j#kGtHVo4j~eMTxD9Zl48zYB zte~1>O+U z9$C}|_|;_4bWAXCQli-tW*fr7NXL6f3!~xHF}4Z1m!Zbtj}CUn`-W{_#YN? zHTnT=ojVZmK8Q!azh-S*FE{YXqtOLDBHILiCv?~U(_4l9gw6L$zW%co3i%rSCBL1) zZ_92)wJn^NybfN{gfSS;MgS4a#&k&4u!T>+@2Aa0sCP3M$52E?O~#B>PFjAnI&ATy zEo0l}9U!A8b}fu0H#yi)UT#hRZF! zUioYKl%cK3WMXJ*3f4+tV|WbjrakI3_7*xH3>@o%3<8r8(umU^6WB4a>(#q98%knr ztnnSD(w^1jPqaB#wohEX3wqXq1x#lEou~Rt)JJ>c(V z@tjYdH1ZPAN@4T(TA2!tgYSi9oQ&X8u|ok~VjRRmD|_a|ahU6vY*^kir;(tK4)!3DWrbA0lU!mKKN+v(0hA_+Zky0;cIduVL8m*4E*}8sGaPR@1o9PA0`-xB+ zy1Kn)?ir6ajWf+wZSjQ|+@|?WucBNFN*_pf(xB-des+ND6J&$HvTBOQ_oN4#$Jth^ z20K>s{ALA3P=M?AJf@Y-M6QQ@WE3oG?40P$5cG!qktkGy#JM48`MH@?xF>a5Ok z4=@wU4Iequ96xgS#9M00;Q8va7!F#8a?j)>`Yk2ql_ynV_OcbK0U9GlVhN2Adr#SR z+7qTW&sx4|xS`li!*FM+>zH25Xk1|g!W7*`An-#wZp>(En%XpbGHp;5`)nVa+O+(v z=Hd7;J#pTGRSm4icOg(pIrpHNc&!E zo^9l^s^TU1vx|1P=9+p_a`9B!@pz!5xx`y3eq5Ys0cnYcloIolgP&u7-Zo<9o*Gb7ry^6^bLQBww6h8G8ge>nq%(NPi!cl}v?=UY6UIRj zhNlheYBuB)`u$}npyOZ`kjw?{L9U51k1cf_dAO!FcQv1Wl5_KNBNx9$8;F%D^y|4? z*E@~hP8SE~EW+<4%*Vl6tpAj%qUi_?l;6Z$d|lau+bqaAj1TAk&w-LPb8gEFoE}Xh z2B{N+!%VQqCx9ZTlyjTLS(Y0gliM@iWQ|{;W$e7EV`h$t&qMrmeLRTQ4OiTu-dA%r zfxNj#uGOnwQ`uxhD}ME1%;dP{+Q=L`rLJzuJbhbevZ^w&)gD!6+sY<$8tUQ`hkN5E zOFB0Xv|%|hm$3gBd=QKU&4vC44#}@P=7Q%=mUF9-dvcphW!|tx(wv!&-8gIjAdcn` zy|W0q_00ZX9YJ!+V1)Sf_r(YDUZ-K^auL~w*Bi3=5QGa%1V2U#$=XO31mf3Zgn&$D z(H~k%=gwi>lYtZ;F&X6{#x^0S3OM|c2U$iIps#tft8(D_tUc>n<5hL6^CsHK_L7ga z-sCpb|DA2|kzf2izr*!8tWk->x)oO%v2hs7XK3T(m78H|U1rW{Vv50HCcmE6{8!3V z_;w5QdmKgz1J{VieVD+oKY)Ix8D10w@LCf{KZU~<;N+PI^qD!?x@ppgTSrWaANcHE z^{dqHHF9$Nv-qUMipHj!8Y`}~qTSkRuefPrYpJzS*}QSioW?Qu;Tl}WH2%_9C^UXG za?+%cJB-?EuTj+hSZl9i9g`eKG-oA9P854V(}aHc9qbOa4Hh5LGPz28NM?u30qKhC z3d+@bOWhogeCLWcCq7i4WT_w-h;3G_7l`)YN5OW$p;**EJG>vmoT9KCOsCjcqg2u) z)KN;DlboyP&s)HvwW(>+rod_HP&(H|fvL(qN`vQis{UoG5V#;A2S>|N+gMKjY;Mg1kj0RMN zViRW08A?CPH?%3P!Y#R@rcG3^C2ZPuqh{~CGiGGHs=v6)#!6h%V5INeHL=BLGaZf| z6>m`WhvGYJj!hZr>VQd#fAr z80|{HKZPtRBCTT1G>bGvC5#kloyowwJV|653cLyYHX`l9`qwVf9%kN2m<5XN05fIC zr6R3@e?2GC8u0Ikv_52tVv4je1hTP6o4{`<((aJ?N>QY}A(NEHwn&!4QYM)lyM7pD zI`U&TNfq+ZwqZvln=CCgZ>h-nVJXTK@?)p3G;OK*8-@9>gg2$fw)KsTx;ti+%k5*^ zONHFn4GZ~ln9UZ(7E6T%VXC}RXSrNlZRM5Q1%9PeAva`;A;}@-A>okHkPK2;`1#fc z6anfOk_WWOkkpU@QqhoYf$zWxHd&M_{eL|7e}BV#)((0%y>TqGnw22m{okM82+!wP z9sHZpsH1I2AFk1mZnS*{zO;-vFcyC$yd#IyhU{I`16ll60H(6M0bvZso$ zeXorF+6R?iiSUs3bt}S5~Ge z)0G*@Ol6ibTbTpP%__>O%4*P&*1*~$20Rab=5>|zl=YPjlns@Ql#P{5lueb*l+Beb zlr5F5l&zI*lx>ymlB~r>tMd?<0lwPGzS%?77eU<%`{gneC`W&PjtQ?{osvM>q zt{kBpsT`#otsJ8qs~o2subiNqsGOvntem2piY+*&D`zNYDrYHYE9WTZD(5NZD;Fpi zDi*>y+!28hiFNO~FR5 z71e~glDaZ}$8fqjL!GJ4QfI4k)Vb;^>Zgwtm>YD0W>e}i&bscqGbv<=`bpv%n zbtC+^;U?;)>SpTZ>K5vj>Q?I3>Ne`O>UQe(>JI9Bbw_n4b!T-Kbysyab$4|Sbx(CK zHL13#DK)KzYP;H@cB&b5f!d{J)ts7F3u;l_TP>-PT2?D+x7wrjs(tE0bsu$Kbw71~ z^#Jui^&s_N^$_(?^)U5t^$7Jy^(ggd^%(V7^*Hr-^#t`q^(6IV^%V6~^)&T#^$hh) z^(^&l^&ItF^*r@_^#b)m^&<6R^%C_`^)mHx^$PV$^(ysh^&0hB^*Z%>^#=7u^(OUZ z^%nJ3^)~f(^$zt;^)B^p^&a(J^*;4}^#OH}`k?xd`mp+l`l$Mt`ndXp`lR}l`n39t z`mFk#`n>vr`l9-h`m*|p`l|Yx`nvjt`lkAp`nLLx`mXw(`o8*s`l0%f`my?n`lwxhO_wzIa2wyU)tzGNTI<<_pK2wx71Yc7S%Ec93?kc8GSUc9?d!c7%4Mc9eFsc8qqc zcAR#+c7k@Ic9M3oc8YeYcA9p&c7}GQc9wRwc8+$gcAj>=c7b-Gc9C|mc8PYWcA0j$ zc7=AOc9nLuc8zwecAa*;c7t}Kc9V9qc8hkacAIv)c87MSc9(Xyc8_+icAs{?_JFoX zdr*5wdsur!dsKT&dt7@$ds2H!ds=%&dscf+dtQ4%dr^Byds%x$dsTZ)dtG}&dsBN$ zds}-)dsll;dtduN`%wEx`&j!#`&9c(`&|1%`%?Q#`&#=(`&Ro-`(FD&`%(Kz`&s)% z`&Ii*`(67(`&0W%`&;`*`&V16{ihGXPX?=Gxz-Kc)GgiC9o^ME-PZ#>rpNUcjL_eK>wDZKOU*AFYqk$Lizs@%jXPIenr&NuR7Qudkp_(WmMw>Ir=% zePw-`K3$)o&(vq>v-LUpT8RbNeCU0*|AQ(sG8Tc4+|qpz#4r?0PXpl_&eq;ITm zqHn5irf;rqp>L^grEjfoqi?Hkr*E(CpwHKL)OXT%)_2i&)pyf(*Z0u()c4YpdYhio z(|V}4>m7Qhp3xWRU3yl}>3O}N7xlgMk{;=0y`p#PJ$kR+r!Um^(f8H&!w;_>pdY9o zq#vvwq93XsrXQ{!p&zLqr5~*yqaUjurysAMpr5Fpq@S#xqMxdtrk}2#p`WRrrJt>z zqo1pvr=PE1pkJt8q+hIGqF<_CreCgKpz9q~EOHqTj0D zrr)mLq2H7|)qm4}*Z!)m}Sg1<`{F0Rg6`Q)r{4RHHz5#>OVbrZ6&ZZfs#}X>4U|ZERy~Yiwt1Z|q>qH+D33 zGIln0F?Ka}Gj=!jF!nU|GLlA{kuuUoXtWz0MyHW678qSd*2o!oqhJ(`y^WF)8D*nl zbQ?WJuhC~LH1;v}HTE<1Hx4ikG!8NjHV!ckH4eiGTt^s38b=vN8^;*O8pj#O8z&ei z8YdYi8>bkj8mAej8)q128fO`28|N738s{138y6TC8W$NC8fjK_^9j36k9G9^VYi7-Aah%zDH%HkwUlv)O`Q zVIO9;n#0Wz=16mtIocd!jy1=bgF2en&w*O+U7iS9dliCJ#&3?19L-jBXeVO6LV8@Gjnru z3v)|zD|2ge8*^K8J9B$;2Xnr;qq&p0v$>18tGS!GySazCr@5DzG~3LSnKnbS-Rv+s z&5XIg>@u@v&di$yvuN&Zmdwa3n-#O$>@j=IK69bDkGZe8pSizz01Vj&nFpJPn1`B& znTMN4m`9pNnMa$)n8%vOna7(am?xSinJ1g4n5UYjnWvj)m}i=2nP;2lnCF`3ndh4q zm=~HCnHQUvn3tNDnU|Yam{*!tnOB?FnAe)unb(^)m^Yd?nKzran75j@nYWvFn0K0Y znRlD_nD?6ZnfIFyn2XE@&4lv&Ckrw%`eO^&9BU_&2P+a z&F{?b%^%Dk&7aJl&0ox4&EL%5%|FaP&A-gQ&40{)&Bf+_)(}gvR7_)Pgtd~jvNg?`Zq0x#YL+$Inq$qiRQGSYglVqYgubs^Q?8O zb*=TR^{ox84Xur=jjc_rO|8wW&8;o0Ev>Drt*vdWZLRIB?X4ZG`PPosPS(!WF4nHr zZr1MB9@d`LURKg-vr<;t3axgl!|Jp$)&i@`%33)qZxyVfwYOEWBCBjwtZu8v>b3f; zh1NdSzSe%${?-B3f!0CR!PX(xq1Iv6;noq>k=9Yx(bh56vDR_c@zx2}iPlNh$<`^> zsn%)M>DC$6nbuj>+15GMxz>5s`PK#2h1NyZ#nvU(rPgKE<<=F}mDW|()z&rEwbpgk z_0|p6jn+-p&DJf}t=4VU?baREoz`8}-PS$Uz1Dr!{ni84BI`lxA?so55$jRwG3#;b z3F}GgDeGzL8S7c=IqP}r1?xrYCF^DD73)>&HS2Zj4eL$oE$eOT9qV1|J?nkz1M5TU zBkN=96YEp!GwXBf3+qekE9-0P8|z!^JL`Mv2kS@cC+lbIMf}zJ&HCN?!}`}I>g9%>J>TkYZY z2z#VG${uZxvB%ou?D6&ldpUceJ;|PIFK@44PqC-kE7}QrC3|Iinmyf~Vb8Q@*|Y6A z_FQ`vdsTZidv$vadrf;Sdu@B3y^g)Ey`H_ky@9=bizQDfFzR14V zzQn%NzRbSdzQVrJzRJGZzQ(@RzRtehzQMlHzRAAXzQw-PzRkYfzQexLzRSMbzQ?}T zzR$kje!yO2KWIN>KWsl@KWaZ_KW;x^KWRT@KW#r_KWjf{KX1Qazi7W?zihu^ziPi` zziz)_ziGc^ziq!`ziYo|zi)qFe`tSXe{6qZe`PGuxTt%ym|AR&`c$R(IBL)^yf#)^_GO>p1H=>pAN? z8#o&}8#x<0n>d>~n>m|1TR2-fTRB@h+c?`g+d11iJ2>;59i5$=ot<5rU7g*W-JLz0 zJ)OOrq|@f4oU{`13P*PM4E)a!%eUI7Me~r{qLV*{L|)PLI>;^f?QieVl!r z{ha-s1Dpe$gPeo$+lz-fhdGBkM>t11M>$73$2iA2$2rG4CpafMCpjlOr#PqL2bE8E z&T!6j&T`In&T-Cl&U4OpE^sb%E^;n*E^#h(E^{t-u5hk&u5zw+u5qq)u5+$;Zg6gN zZgOsRZgFmPZgXyT?r`pO?sD#S?s4vQ?sM*U9&i>p4>}Jy4?B-Ik2;Szk2_B|PdZOI zPdm>z&pOXJ&pR(TFFG$dFFUU|uR5g@}@8g8f51o&kkDX7P zPo2-4&z&!vFP*QPubpq4Z=LU)@0}l$>Z?>$@Ac8@e008@rpho4T91o4Z@MTe@4hTf5u1+q&Di z+q*ls^W7cYo!p(>UEE#W-Q3;XJ={Irz1*bR=BC`V8@laohui69+y!ozn{{(;-YvLA zcW<}kMsC@yxZQ4#+w1nZ3*CL(eck=s{oMoH1Koq%gWW^iL*2vN!`&m?Bi*CiqupcN zW8LH2CligF?Q{B_t)7>-NGu^Y?v)yytbKUdY^W6*F3*C#{i``4yOWn)d z%iSy7E8VNytKDndYu)SI>)jjN8{M1So84R7Tix5-+ub|dJKek7yWM--d)@oo``riJ zMec*{L+-=wBkrT_WA5Yb6Yi7lQ|{C5Gw!qQbMEu*3+{{VOYY0=EAFfAYwqjr8}6I# zTkhNLJMO#gd+z)02kwXNNAAb&C+?^2XYS|j7w(ttSMJyDH}1FYckcJ@5AKidPwvm| zFYd4IZ|?8zAMT&-U+&-TKkmQoV)s99h^Kg}r+K<(c&2B0w&!@R=Xt&tcrh>T)p_+^ zgV*RaVINwHH`E*EwR*$75#C5|lsDQNna-g4eVZ<06JTi#p2o8lp!*GqUS zc`JLBfPo9)f<=6b7mt9q+>t9xsBYkF&WYkTv&b-Z=G^}O}H4ZID#jl7M$ zO}tIL&AiRMExawgt-P(hZM<#0?Y!;19lZJ8j^0k*&fYHGuHJ6m?%p2Wp59(w(rfcl zUfK)2cCW+h^fKN8uglANIWO-OyrQ?aSMnmS>{YyOugB~4`n-kSKHk3Ge%}7x0p5Y$ zLEgdMA>N_hVcy~15#EvBQQpzsG2XG>ao+LX3Eqj`N#4ocDc-5xY2NAH8Qz)RS>D;+ zIo`S6dEWWn1>S|;Mc&2UCElgpW!~l972cKJRo>O!HQu$}b>8*f4c?93P2SDkE#9r( zZQkwP9p0VZUEbZ^J>I?Eect`v1KuLN+WA791Q|~kHbMFi9 zOYbZ1YwsKHTkkvXd+!JDNAD-^XYUv9SMN9Pckd7HPwy}9Z|@)PUvIJZpFhM`eAU-{ z-8X#Gw|pCsZ?5n8z90B8KknE0^>C3j`b~bb-{KGThxx7kaDRk9(jVoI_Q&{R{c-+y ze}cc9KhdA$PxhDhSHLmRQ~eeFgujx%vOmqA?$7XN`m_Am{v3a@G-{{}u-|XMw-|FAy-|pYx-|64w-|gSy-|OG!-|s)*FY+JsAMzje zAMqdcAM+pgpYWgbpYosfpYfmdpYxyhU+`b_U-Dn}U-4h{U-Mu0-|*k`-}2w~-|^q| z-}B%1Kkz^FKk`5JKk+~HKl4BLzwp2Gzw*EKzwy8Izw^KMfAD|wfAW9!fAN3yfAfF$ z|M36x|MLI#|MCCz7yJJOLjnbX%vzuaMqmb3UDWgXM!2f+@k&V8tL2tQ4#qObez5 zGlH4HtYCI9Czukxk3^ocj4mJrk4K@ol z54H%l47Lik4z>xl4Ymum4|WLV2RjBk1v>}31iJ>i1-l1(1bYU11<9Z-NCoL24BCT^ zpfkt>3xcj78{~p~PzZ{_-a#pdf^tv^x`UpeH|Pr%2Kxm22Kxp32L}WP1_uQP2ZscQ z28RWQ2S)@)21f-)2gd}*2FC@*2PXt41}6n42d4z52B!t52WJFl24@9l2j>Lm2ImFm z2Nwhv1{Vbv2bTnw2A2hw2Ui4F23G}F2iFAG2G?QZ{SCp5!A-%%;LG5v;OpR< z;9DFE@O|(@@MG{(@N@7>@N4i}@O$t_@MrK>@OSV}@Ncj<_%Ajjro_~k7Sm%!%#2wv zJLbgPm>2V7K`a)F$LeDBv4&VU3Q#>Xba zmWxe{O^Qv9EgxGUHYGMSwqh(1TPe13Y+7u3Y({KmY*uV`Y)))$Y?aumvDIR$$JU6g z8Cxs1c5Gg39VcJO!6lhWOsl4*S5q^pshQQ(tZHg@H8rQ2np;h+QcbODC9}oOWFjf< zZQ`C1_q4c&;@&Rq9pc_8?iq1kAnsk_o)!0;xaY;aAnrwR-&@>E;vR{6S==k)-YxDu z;@&Ined4|_=!WaGP)bC5SCXaBPo`2~6eWs+eerUkkS%A52~nn6 zQ7)6OM0N7XT!ji{!(oFFvH{IYWE8WNsQPB{an;W#w6|CD#3xYK(1$1J!Ri;3!d#&{ ztb$RPETuZDMWb@EWE4tmnR0)Lo=iE_X(rPPDp5I}%#;#vo2N5n_`t)G3%D%_pLQW{ zBU#KQ^B5A5NT5*`2l|X8oa{M|T@#{D36qc=;qWXx;_?)=8c(%Va=4?j^ zJ{AE73aN6kqmY*nA4EKesgL5gwuR+PDw#Etx#Yq^-siVOx|Hb-on)>JF#!1#rHa{1 zdnPQI06Pnqtod}QkV!X*dm#)Zd8(~YE*El%Y}j6I7=S5d zIyxmPRmf(O#VDlbTwW?&=*idhCllq)Osb38huSF*gOyDu_&AMTI$BQmF@v)^!(JLt znO|EgMx?luT5HhqDbcvFw}_#tX*hkU$fM+dhBL&H4Ihk_uMiFI&t7`NS$<6mMRyEF z%UV6&9jyPwAh9%W>Cl?o+CCO-;U#N6LDo8UiRT72c0k27tsPKt4PI6p;}w@NF7!q5 zevq}r=5VDb%2kT|J7{)dssOBM?8v1d<%>oQ%pBDG{`zX#*k4}_Qr71rqbLKSmoKZy zvYRZIlc~;JmETH_MP8B4*QjUM3^g<`x$Ko;YT3$aX}CpZgp7(h+pDdGh6499qasMBSbC>w@F)K!LGFw>Sr zwV5uuoB(S3Rw1QT2eT>)LH0!H%y zDA5hpi)HUHY@rzD>#Hf5=QE5bXcLf2mbzjxA;g#}n5#sYR9zJmL&IK6&oMEqIwh*b zXlUbAh)ZW~TcJdq4o-`2U`fuR(IN(c7Z*xsFasc_WFXR%lhwkRe3VItp2#PPEYo@P z4L*Q9hXztHStp~^5{Sxu*-$nEWF0MJ&yciBVwBZZ=)o9tXb{IxtT&OW5M6K}sf6t* z5UzMN#k;AYA129wh-h6uic?h|2*?|GlIN$_0yAoXnYF;IT3~i9FsBxnOU;p06YVzI zN`*oW*Gkl>L86O60L(%{B#{Nn!X^;?nnzw_rm)h(w4O?Kg+5&p*<@c>3ey}A^TS22 z&Iw~@rENtR+Vk-&<|clCo@0IudjC`@(LS3xNf4_yMo`!cBF+2pB0eDd_?mc!n1 z|2xZtbh6Ju;cOz8Oo!B7q(bm2k0&!x6sGCvELc@41kp?LLJ?%*GM>z(*d#y^kwRzn zqS-YN(XX0(KPC}M8uRA`8LL=@geziA1h^3910MHmT(3DR=#^%fd3zv#Vov0(~Bp!&Wk&pw+(UpkiR767* zl}V}M@5Sq)a+Vs0J_k!Ec4E!eS5pb0bj15H5C$@-SU;S`Y^v)AGpvT1d@S6qhW>m4 zY20d1k_dY#TJP-{v;|YY6S^D(l};$Q4sm>FEu~bQOod6BC;3ohL5PX-tWF46g^p4( z=W@8FP%#r4Y%Sm+sM$pDVk|`@g{_(9fuIokM=cdA$E9UZt{5&f2k)Soi5!RN{$d=K zD#f5;0xc^aIyhU@UV|5^J^z3){pAPXWqrez%;(J+yQ~cPBnAZE6P6goqL0gAoU)0Y zFj*|*8v%DiFN7Xe0S{;D*kBwnhNeN~7@4degsc?lU81_4d=;Py0-3{}#1Qjxm7iURefhBe4d=+vTZttVNqAGkKAV0rxnHtR-aw=?Jr)uACssl&sa~ zd0Y=h>!~0IWC>~okiw`VAYsyI=6M2=PvC3t1eEJ!kt{LPh)SB8RRNAVfL=;zX0W2t z03_$77XTD97hT1m_I8O8^%NmumK%94OUrywH|N?e=`o-LrDUJSl5Hg@JyB3iL%581 zp%5m!Y(2~90JVm|06j37AHD=80s9^+9AjBok_f2e(1GBfV);UuKh?sDRYA!V>KGbK z1PWef7=;mUZ&W5x+F_Y6B1IOZAP|}<5XBI5kKGc`0y_$N3U)?dAbv^V7n?RnV~mTt zoXTh_!%JB99r{J!X@WNofR-r3MzUIlL9)y+`J`kjGNalMF}zK(ATcUgsG*81707;y z4!|hzhGBP#K*`e8ckNw)4vXm~Gtkle87_KAG&+c*X`xl$Pk=0eKF-lV@Ou6?(iBguo11K!&!Obd}H7)gnp5 z*HbWEIdp;1E(~KV1<^2#%wiZYuvjReH5t$tD#oqcF49p%{5PU!L^9D)j0}K1sJGIF zuf#=mpu+&N`UNZnO95@ghVu4c1@6mABZHktcVO^_;v7!K&|bkYt2;zRy~X| z{E3z-mWFdF=uTMg`(){1)zbN}f)!mYk7kIs6$^!8Qx%GmRhAsDA~8uiDxn$XVP34Xa;9Lx`ygs>x$B*(;90j$tWE(0wt z;2?}&#H8y7K-3ieBtAFH@+Vo6ay(X+f3U;S;~YzrgVDXlK`@nR<~SIW@jZMU0L$M`!#@V{Qd@-CWIJ7; zpmCF}$Kgqut1OizOAx&=>SRg&u~;zW5-Nh{R=COV4h}FQh1s6PB=4gehR0;w6rDp% z6^1(QX^jg|lFdc|cN7X}C3iN$-NzmgQ-}kM2#E})fe^X!1cKP1tXa;hW|=2-N><&_ z!C29SvY7&u6%)%0#3RCXBp@!?>+OXC<`XWo_NkjGDea*E%H;aRNAd(Z8`CJ6#h9SE z0tX9mE-a%=3Dg9v3j3}TDa_ok)HDD`&gD#dU;O|iDRvD5Figor`&n(|G(wwL8eaKi zNj}ZxbIeU@9LvV2;r0B*vJ}VBI|gFNMk?RR%dofNn^;wyA*^Sm#PmV%j6v|sLGY|W z@a#eGoR)$0OPNG|fp{$=_JfK_X=PB+A|%zcEK2TZ2+Ok8L1U%w9g2XmNzTPEUeZ@6bqVVXQ@!>=o~2v)FS0fm2ZeDZBYtjt~#Zn3YZp0$v2RW zGD1{F>8h-i$P!s7Ej#Vd9#|lJ}TQj^4(C#SFo~@Kaho^Iu4xgvU znG4>`fpP^ToEJ$K5Y54`VPtfWWN38c5piL1;#?_waNr;(KqTvHU zD5SYuB@aho7!4hig-Jxcl5QG=@4&<@)=MPmnuxCmOU+AQh&}lN%feM8z@%ddurHHs zCf`_FpUf&kR*4!#4aLqr7>k*iu+5V=_%r&`a7R_~Fc_fsW#6!&0-p@!dwM|rLkt+E zpG_BPs=+=i-cbP!fe|MQksSeUo`8!85NWJQ%Q@Q!<4&3fae>Gr7{N7xgWMonLl78P zWJC5#L(S=Oi6k-wEQ<9fslkmkpfqJ$gahD8l~aHJu~u`5+lUrotI(xViC zR4Q~qnc#q6sXBQ=QCn69rr>ofekDFAM8RU#@KT@M2^$i;M3LT!>E+RdIW|gppQQzt zMQ#yaT!@N9lIvvxlsA)2qo?9k3^N*+j7|{EEUuM>3mtZ)Pcb?xxn$mBS4dfSw4SGF zZHo11aDjwf!KV>+<%%>k)Vls8r^r4>@UCd81tg^qCAfe%jF%A7BKI`+bV5FF9gxBK zGbI01B^tfV9I|kCH4Mmx&Y4R#4nVa76-J`r;>DfmQvHBJ#Oj9*z?31-CZbM|An{e= z(QdFRtfLq&EX6RBOaFD5JbIaIpd#?e%fQ@1oD}*~V@+DlBnKW^R7XA$mMX&fgQk&K z1Z@qZ7*QsruoPricp=COz{pwv_kKR?(-&k)Nqa%mo=KX%86HjQdq8F23KL& zZ0f3joYGx|bjHXcATJxRtLzjFhA5R2KgM^;A#?gDpo3@ zqADECqz8F!XE~Rh-B<+|B)gNG-}_Zuv9lQO2l~qJwlxic6C??k2z~=At>-uNG_eKJ zY+ZqY@dq!aG6~p0paMjABr3P(a06HE#0_5K2*v3}q*8~>+HPfG#Rp)rJ34?sZf}TF zTJ#zfi4B1BjRQdbh?UL2{9ft{#2u@@&=pl7u87J!nivjKfgs4W)mKyU{W>I;E}Jg& zcAq6gbLwgV%4Nl14b8J+lwgDh#VWlzsWeViuc@!5Klp zsHSHtxn2{RHs=R!yLkUw6IkaQ_ zNt!+lwIH7djWsCA#A}O*nb=ZOtY)n^3{6o>NWrmQO175`MiU9yV5oI9HLX+&Qt3mcamOu ze1alchGbYMxn!ZtLF`YKEre6D&%_-Z2pmz%x2G)pCCbU7M|aVMW*#281(8l|_Ibnk zoN*XHYrejkl0C%pXmYk7FT;Ww&@9L^km|5pvXhS z#qyc8c+p;mR$wU9$dxj0aY+) z*;VlD!Bxx|Pz8gQT?Nk`T*cf0RWNATRq*V=Rje|g3I;8^3Z6ZBmC2r`Hd3N{D|>3pG!lo3&2GP3rOk{aHNbB834&LS~1z9p}$T1rQi?aH=2J9{YhEa6DShM zWJwISg@GdF%*I9g#88_78WX>L!^>aiXsbh0eWm#jAy~@SODAY za5+dXb!4(bJf34=iQ)mw*bW3>$UOGFX^|&o1W{RcAyZU~8MBz7Pt}T<4!sD2FcNtS zf5dkk+(S4K!Z4_&s4(Hd_7Lhoc%CA>QOqn{nAEY!sjrSMgzN7(LU8um$TE3a=DQ5X z8r;H@2q^>ygoICl2I$)up_v7hNg_cNq(m(Q15GtgsB{ENs~mAZn=aHmk0p3hM%JX4 zpbuy>o*39>pW%e?!>h!~Hj5ah5K{qcob3NdAg&yHq;w=0l%+RYfcg-FiF*-oqj`gw zqaAkTok@O_Sdp%Xoa8~@z5v-9{9=uhtG*ThtxM~V9jbscpij{1H&x7d%(#+m$e}>0zYd(hp3h)Kg|YUiU@=NhHkVtJ(&bqrd*6Ts)Qcmuqz2{ zcrV5ffdkCUf|tTQfXdijHl`e*x(Kn55#Em~NGmrfAfb@gOK62p7ujqRK~I>~4pt>p zG|VMWq)6XttVzoU@H8vQUer_z$P#f_crjOC4Zv4p9^w^%Bdrug7XH{GC{>`Q*`-Q8 zK|XIiLLWI18j!{83hS#WS*5{xF~+VGwG1OfA!qWC+&G`b3Dy+M`KCc|g2<~!$R5U= zOQ?ptA(BF=2uH?l(5!d)pc@fYlEw;1M6mLP4GfzNVfe)+Lde&p zWa9u7SZ6MoZ5n{Xl&OH<@@FxpU?_ls(*LYP@n>!9gsMPB=|huvLdHs(5i>En{6@1P zCX&o{7KJj0=snLt-{3Q(cCWpz6U=jvf>HwZ6K+B=P0Z&U3 z1UKrew6|x&I&mix8U=l%;}RicBLjzE=aN1hg^jR~3e(XDNM_wAlSMDkexG=Mk|Hv? z>S|!DE$FE=2vM;XWpWPwFd85;7NyWzxIiK|*417?8&_;Dtc* zyED+Gji?L0#2CB6^o?jmEGHwPT}rsZD(bK+e+$%0^o~brChml@qkOUm(fylu`#XipR+UA51lJ2TM5s;LAvlI2|P0)&vA ziuWfmo>6BEBp<=dh#n}xjoo7cMEsymjKHId;PwtnlO@1rDKy6C31N>zI9)P_JZxA) zhXyRVP7Ysu0F;=4ClPxmh7%3w2NE;zQuu2Nu;&&-R0nE=>d>4*(ZGdfKV1_uW+BF` zf`co|v`-yQ+aBUqe7BYxRUkuyVTDmV>VYM%U-}LhjBjQ8lXPtS0AXaiKa7Y1U-YOi zpK|HKr=`u3_*e}_>KOhKl{}{p&;kHv!=da-#`j7t&sJ#yMx?MbY)O0@!dXgTPIj^jJ>>h5R$*S=2`w)lNBq|cR|qs z`9_FVCe2@0PGsQO#b1c6YnOIa{9k@2+-cgP%UEhQkWb$Q$Z z#a3Q@O`7d7#OYb^l(jK6v!OpJJHzIvN)feEF~rr1ev2_gL>Mv(o0ydlFJk;AlsEN~I)|q%lKq9izt0F2zJkNu|P>LsH zlTa6I&wW0>;lu^7pO^ruqsEFza?>Jm1@(~?;Y$##ibrvUAu|i{veegD2A>8KA^A!c ztP{9yi7?BUC0TR~yFs3&owH_{ktvIAn4q4xlY|hHX|9;XB?v!TPZ;80*ER&BS1iR?F)pDxu;;{oB=t`AAHpNh5!G#RvO&=$xp#VgZ=9WXlY0(PGdw<%U1>r3JjK_mM-(*yBNr@DE>F|unt&w{pF+-s zEHA`)Q;g-L!Sb0e*A`%(!x9vj!Jh>IOw$K&JeeAJE!a>AHH5zkx@=aU5n%=L&I@C< zb)nI@uwZnD`CLKm?lQZ(Xo@a6E}21W zxVxCw5m3@)@~DzHza=Odh=OwJ1q|01)L?XKF%TFK3vDh>UPus7_JIt+;Rm}$rWP=F(6hzB&m|_^CZ|_=wZ*GQh&i>75Pj^cRzR|94OGeJ`>M@?7z9P4QC7r3MjNXw5;$1i zWGT{r`~uT*8Z@b&M<^471-2)32FKX;=(M3bi;GIV3ug z=_xYF0|>4}L3w5mk)KYtM}+!8bMM7ch|`6c^LQ**;~E?ShQj$jCybTeBVg zG9r;-_y{|U-%?bU!Pc%-fXN)g32z)!gj`7b|G?&$Dks@Vj7JZlU!W~Q7(?hTq#K+y zM>ZZgrgRt=TFJLZk-rb?C2EmKDQj}IyAHDnZHEZ}7t*)-5oKsf81yFI0KqK;yT*}F zB>vEvPGU%zn-QlG(4i0Hw{2lb8r=lNz{$zZk9;6G2B#Q+&mbV40$C%N^|9SBN3IAF z-j40>Y!^A+PkUa`4gCGIX|@W;PQkwIJp7v|$b!TwwC^PjX#k=X+aX4yZ_&;x+_BlP z*vBkKa?cY*h@CuGROuPhES{Jp?sLR_6`dkw8pIA4`ee~Z zV$+LMpu%n$zKQr_M04X^kYPZEx@-p1rvit*#IZKmhA!g*p}0pBEe8pQnMo1H*3k*g z3;}2$^8GOqh-^v~5Rg$Wn2>i-0gwA&CK6B*7~UnP2ZSa{u-3<1^(PFg@iAAC)PL~! zU_2o+M`buqkR(H(iPhKCu5lTUiGCXTzn zjw!PZmLSk9g!~n;i));o@E~|AC*eFsFz!8myyXs0%d^tpeJEEa64h+ps2Z?2vMKa@Jl)S^#u_k53rS~ zEuBP+4J0%~5Mhnskd9midz`?JJ!S@jbrf1`AS^Zz(m>x~*J1V>(14CmFITW>4LlOZ zA9U48GA8@6diI{6bB#1wVWJxQMj>=9gK?lW7_cSLEEc$VP-*xbFg{I#u#kfg4ulDX zn8hR%O@l-w?7gO|?1N?w5pN)tBk00tM#JdIDk)};2SMT{{qJm9%Ti7^povTCiA73J zUb312`LZ6`ZjT-5WRt-TTTJVYFkX$lN2oWbR1Cgim{sLU)X8qac9kW_&x2iI4qcc# zPX^E@^N93dT!EQydNzS0+H3*`R6iSB4Tn(!t9FLh|Ml+9g0)aJ= zpQEuRExQEXW2m06C2}7s7#`Jkg+xRZ%9>kbGpWgNsoSjaG>g(CpBOg=+sp*WF* zGDy-Oxd|i_qXEk`n{Gm0L{z5?K7?^9K?1RV0vng%?KN0nMnef? zl=ge{vw}K_l0EGS?U$qkW^H651nl_`xD0IY&!llWCqfDm&~^$7apDvX(SwD*qoXf| zhG8wpVFg>uwe=s7Bo88xC;Om%IGnV4gaZ%0H0ZDf9P$904)=4Pl@ zoA5)@rBj^=Vc@{IsqAM}4NRA|J{>xHpAIfutcP^XqgiDi#u=vHa2l|{J;{@r2SD-} zgkXfdaA%QwEFo2g>KV2qamTp2fbDK9%07T!kX$5Kaxm6GSzwJ@fKzd+A^S|f;vh*f z1d3xUne0Nakh9QM05&8}(9oz02gAYgi_Rv!qD(s=i-P}3NtYsf*mQ$e6=pDu0r-v> zW@sFA$cO~lSriBeh@|k(dR}aV$6EuEz&q*v^hS@1`|MjiPy|^^oTdBEb7`vGP%R5t z?cBxzItGQ3dDv4pNSsj^(Kxv)j!vkR)0m0dFf%5*u&b2m2?(p9LnzFSBzEvYVPH45 z;ocM5wun_rMWPGJjNCs2K2Jl5fEuh|)`}#Klz^Vopew9GewnXmvmXZ5-3{mT_c2F2RLdu(J0r_4Yqh4gpA&-dm zLa|xKm@`Hz%QZa-mpq4M@G{pMZEL;pW9YnP;)rqVOm{RFJ#HRHlXbUg) z^w**=8ld;XYEg88AddQCT2JfJGT7<~xBw*Bwhahwr9!?=CS*S$S_`sY2{&-|EP||f z6qC&60ZC$VvhW}l!2r1!!92{gTa6?_tO%A7f>DSBml1|S1|3kM52Lvb9*Y~w&Y!wnmVBR~353$rd6 zJ+LstVW!AO>ZEU4Mz6rgL)#s48h+B+CZ`|`4qTbotQV3jDqUN`mBa%{9Lxc0X2eo(a=^v&g5X!5ufjFY55URi>v-LgLuA=`+mPk@ z5mbXXfp{QNRuS+j7*oN%ya5nB+`0rtK1l{AI8nJADiqQNZ1p5>Cv3s&*f)4@=3o(VnV!PRvvd=j9FH;I3l>_z&TngTs@_f+*i-dD%|`r5SL?H`{aglUJhzczxfs_ z4%4h7$(H$Ud9ro7Y$qdD*hnTgd zT4$jY?In`A3MCR@0jWYvD1?Ggn;bN`MiCQwrpOe6nq)~j&QHw+ID8bERtNVR<1j)J z2Z+gF=D^sKZr~VF#w5y?k{%u5#6&*1N^ss145w095N6cr)1-t>Jtj9Rqv>=CMam+M ziub$B@(mUemJRrJ79{IrGiBw?cp5R)g0D#|V!>$JGuRTb2@8+I(gn_eJ2z(`icKat zsi62Uesa1@h?0m$;~6#OXwxb}*Ki zn>;Z>h}c7@6}R3)$S*9&K=>y{`THvP6ym#0@5^M;s&Tx zyhd4|Wd%=LcNmFZa-b8P#4kTE$;yX1OyMZduah_$jM>uVun7t-O`D8d4aO0@YT{(E zT8{OFpq^DEHrVrG+%(E68;GH*#7`cGGOQxO7X+$O|32=gKgkKKd=0!fHcQlIT8z^K(C+z-sdLF<9fo+Z%S zu8GrvnX{r=ntYC6r1Es#DxLz!FoOAfvMqyy_pq*D8fFU^gc>dn?ApgdgGNV5*rQXO z6z#<_X!|}wEGUCo%W$Z!RK}r+;N#dsp{G*iZjUd}bOF*P4jrZC%hFPytzE!ENx}iJ zSo1I?;1oWV5)NVkK$sARPEw=;W)`;>Li~v6)IK^Ykj3lZd`9d)uG&pfop9VpBT6b? zb0{4m(fV^16l-$2N>I_{Gqhy-%awc5upscW-h`V0hI1U!#{xKDD#*j&+cM}#H9;Jj z2Ar%WkRHTKS_R|=wm~!yf0!@3uuca1nl=b#Xn6(6} zmB%wAA!7DnCPq~R{2&-fY%QRL#*Bh&-*KFLH}J?YMF}J##(X&BHDRT>ONaco+@r=1 zC*Wk8HevIv)g6U?n^(!nV(j6B$rT;iluT!{6tRPsW_g_7suZ}P#^xz_fP<-tBjI2o zid9oEhv7Upwuv(lrLl9f7Yhb*W(EdO+GYTL#)6+|8zM_c;u{C0rV}?162?Xa782T( zfUl!@iY+g21c4=B8w!afslp6w3n_;6bRjbkCKEq~IbORJArV#v!j-N;Fhc0TXKCC6#PP~d3QIU_ zl{?g>!4{{%*0>?15GZWU!b+*rSv?+IcvMIF|J8M--EA957oIbgweOpkEayG*-RC5> zlg#`aN~9%45~+xyWBJ#=&#kK407&J752Ah){3v1VlyTz8IO1%37NJYG)q@nd&_Q0pf#@%TAj17BJT8%;wDw8e2F)-H3 ztj)eg*s~lj3i@a5sk_6zz=jerHn<-ZrH-2$GbaJMxn3z4`6xTHFA;3QW--UMuEUt& zGUT_}K?sm_IIgrwqHSBZmI&Q>pG!XkcK{#ILD`S|#a5Ks=ZO0{$xr-d`hf9>J%-ra z(OI9yn*}NugCW{$9=*)I_DL$Rv~N_6kdN_kmtRD6GdC(LH+M%b?$^Ey$9)v zS%+)iWU#CF6?b)2G?aM>FD)Ew37P~e16M3BKkI3wKN#UbMhqmCq=&s85gubh!{27=PyX@;RG$RcVxoNrhY?U3w{3arVvPLf&h2*~dkgoM2`x*U^*0c5L%P6$ z1Lgwy1&#-HoXr3>ohMUy+KJVMK;Z8BxlD<(7 zZxd5tINvd}k}9SoDVEV~WxdT=qbZeD%4~hIugNdCyhda(M1-ErhGY}Ic1P**@^6Tg z$A0+uq*$8z%1+ZC#n;HK`ehX{qd`ry=PFZ7S^y>03lQn}O>F^*U4WW``08GdrXT>X zR<`=}g-TSvy+Hfpm$xhXZGGg_c|wg;Eve%wy2AqDd!?FCxLng{Wa>##!$w&Om1(jT znD4asLdP}HSCL!2#-jO^A6mY&-a^27fhC}BR0!#zc-7m@Jz2{>d1JuPVucLL0Z4^` zc*=yvfaRv=#H*`^1-NDek+tt$fZ>_?@5Q9^soyO|X_lF@B|IJWz+b{@bNxsMTaB)a7q-jxNr5OWQQt;uT1H>- zqod@Jf*!G7uy1Y21QG6Gm+GmH&?boxbHXM7v@(V=mN4o6#2MjMy(pJwft#zU4hQ0c zsWz?;`~iAexsYgE=vB2T-&d84iT5u1-bq;t^=AC!(ebb51H65|8(`Ljsf3#Kc-%Gp zbO3X|AX;Mm3wd^rqcq22m7bNPDDBl&!I%i;-b6A$SS1XK6 z+dPQ{aawHpIrn4v-;3kkruxuTie`{JyoMS12Dqc~O~m=UnvUkj^{q-pM|tC6{rYy5 zl$+Tq@5fc%kN?E`X_fcWKk3c@M9+@ZQ`IMy2n>;Cxu;DjpceF^ zcT&@jw07_bgh#+dfHjELv<^px=}_q(E%wStAie(LdHr#8fsS z7b`{S2h2pJ2Yinxyd7BsFnP|HoQJ(OaSze?CvGDr(U6BF)PFpJeM=lxPKTBUOP`iuBiC zK-4IJnnwKi67kbZ#Lq7ge|w4e`%A<>ULyYYCF1{j#5WcWa~8DwKQg^hn$@dO{Ozm6BuW7-jgo559eAN`I$luZqng=5zZEz+qzIxr{8 zHMrMCN;;O#k7+6d;=GDc{f9qyfT11&9aq5>pj^xw+`VbZ`f~HMtB_`5cA`|)S-*oQ zl9jOnJXubi)1FJ9O`QTbPMJ#_Xig=7)uZ1e6l1(#>ZBeTJ5I_ilD7BC6qaj8Apq9{ z%tOOp_WFj6?|$RY#dyRiJEYjU7`_CI7OMMo+*<9IWW-h(`BN;4NwnwqD|!N96x^qh zfq>p@$=P6aK7@53&_MH^!Y?trJ;JjU;)hPj1i=yX8iUK|E-@%&Li#X%2EPV}%aH*g z+edJ|LJ6t#;9kj_-Iut2PlCqHRM3R^egs>XEq^^bL~Xf!(rbGv9q{qV7HLFi#2f_q z_{pS$xfzP{!;C0o>P_NWWODFmV>0!+`V;|Ls-vE?2aS^Uz<>XBvxjq;Z?L|Uh_WJQ ziLmi-MfdlTBI(RBZ7N`s!-St>N=4yhCM&QCNsCC~5V$lij~sl|W~Q+%-<1acBI#Tu4aKHpqrlHP9*-Uuu8o`B5^xzLYXa_76W@quW;9_M)fS-yiojH`l@O z80f%Q3S|k$+Ohbx6`&>J>eHgJynPUg;N0&g4l&|B+>ui&ucQW-lgzc(Qrc+mPXDsS<#&=<=#uOga zt@>}paz`C0eySd+h>`abbwkOm4ZFHgHG{HCaV$Fism{YwKsXT~z^(C#v#iZ0t49d8 zk0V=A)gxB@5>=2n=f~A1r-ua}Oie1#r--0n(j&ypjF`7D`EG^cdwPwxbL5! z?SaO&!FP=2Iwphxq*J8ICL^>LkA+g7(sPm!O-A`<Y>V&3n6{hP-MRY{Y^-o9>Y%bc?|| zQ)3PXy$^Dl_Ydn%RFb~j=&|PScYS^0hg~-Vtb2qMQ?b}q%`{@ms^y=!BTD_;ZWo9d zN<3I8ePLzISjBE@5Yop-f`+aA3p0w!I8pG<~J8^ReE+bi} z3CZ7epJi;mR~=4A$jV{sv5P4p(}%C*|Gn9+!*`RJPZA|b%tiJOA)d#@h4&3ythnU9 zNu2ZHW@i4U(c-bYAN;^qv%RuNE6zq)8HOTJuhhn46Qc|q`^N0?-72Y=w{Q+2Pw?qs zx6I&W1xOxsw#u4U=N%JIbxxY$Ys>m^8IcJsvzvUIPN0Zn23il;kkHzbxOzY z&jF*LVDYf~aoGJd?0z10e;amxA9nv3cK?f%O==j9eyoJVH1|4wq{nPaaudq;$Pd?T z@3-)gxc{zNwCoX09M9zEve>AmGQcJXVG2QGcgP@x4Z?S|61|#SU2XI4gFt#`TJFI-Y@?@|9r@&N{^;KdJtT~su%__%!gga zyi^K}+|3?BLd-5o_+^FI>9S>|Nt0&kwBjx|82*{v2@ z&7GzG$EE(KrT*uo{%=eD-^oUx=9&^4-SE#PKAEpeyE*lns^w#QNvY|7Ht3n>oG_RS zd#21e6`rTcrN5gK=@-~z*b~WDB>WqMhiv$30&IkmSPzA6GqhK2@{A+U@6Zij?np^b z5z)qERA3)i)u!+pYF9zJjZh2c*lQ^`DM`M+u;9Z9yIZaWXM>)v2x#!^0i0QKM5ZIs z9d9mXy8*YrKCNK1O~m{OIuY9)OEGvH3++fq8S}Tx1fTLK4ggV2c5|}6TcMbDWBz=P zPWikUZ-F1|?5~T-cVdfPYrZ|MfB&GYlC|%Mb!T3wQwC^@Z>{tBQ+;-FPYA64Fp_>; z?WihQ?aLlLG6st-8O8ijp1J6W+Lh;wRP3Thp@C}u*&7?-l0^?_{A!0wx7txHtJ<^P z*szcm{jVNf_yxYV1p3eW3FBz-FM2#*d+on_ZP4c1d7_>{jr}e<`^4Sd7+8kKL$&zc z8>&?2Ig;xG$oZx*q>F{DkDj$C=lu^a(EN%Te<<5a{5_iag}@c|pj5?kz>hBxJ)#+( zFeoK^Gd?wnd5K+AKr1E==35i@d~_GL6Ej&!+^SSBIKr-=xlrQR_!W$d37KsuI;Z`P z&(pH`WQ4<*jTPl>Ez41yBuQ+=2!1aeSg7VYt5>Z|DsH!S_x$CFC_80x5FzIV7#EnH z4l^!64jd(DV2hS0&$rA@0P4Hig7#ZO6rBMUt#lrR6{jyj@?}XA1RfCMcb|#9z^&k$ zQP$?`=MhQx>tJr7Ew=A-pz1V{t24U2_lMk({CrM^htdxB0?qu*^_;KQ5ZkeDUTn=8`36mLsJ81BTX?5e~s;ammL(#o1-Fl-74Vn!%~{#si#9yfZjZ@BH7#6TTSp6l8u zg@JmRWbUm?Rq0UtP-ktvc)aVRTZzFWsu2r!M~M_z zaLB`CyXF6;?~JD{JLl(@^W4n(<4gH&KG@+_)Wh4AdTgO-Zz3n0c~4WU4sQtfUExL> z@8`DT5!UfVkzdGv`LW$m=qa^1>`t}F245&5vz_mbSbS6X`1Tvs%s5B_ciPoOYdr~V=5hv@4BVIh5 z$AVPY5dvC4P9?USNb*ZU#iohIC>RNQP~ugO3`|8(rf#+?b>D?v=f}Bj{=H@_>{@i6rY(O zGcOU$N!bf=)&rx|gSHV0nFw}ePFV>2#driJ7bMyM5xpD}MaW&F`WKys(W`q#JlH#` zuBdi`S%QSi{3_#h+ttf*R5Lv==oOM1xKL`CanHzT@p#S#J@a7J?}5vk+VJD`*))Xt z{-P`^6^2}vZQ;7JN?lGi7UZiCeQ}iDb5>NJt~>;OdWt6`%%HktB7O&?iku5s@sk(g8a_7yjO;X)LYFG@+&U{(tsj;q5UO7+?2|50|0S^meM= zPi&T~!SVqF7Jx!0iKG_JtnM70>SG#^3#ks}f_Xmdnv1iED-8`nIWTSH?2ngHN2*~=Bkll2r#WiIxwoP z>8`nIWS9+1tC2V{`cKGRbJfT&GMH8)9Vl4Wbk|%pGE5St)yT#0n(msbMuq{yv>N$! zIMQ8n)yOb+m{ueI9*%U^Ts1O`Bc|0z@ZI}Q$X#>Q$U$ky8tLkg^@QAA8X1Nc(`w}R z;WgcDToqEJm^@-a&xc)e9dw!Uh)lBwLX4d`AAR$^@BGfo8qRrlsGpzkrXvrnaUH!c z7QgMtL&>;zVCdKF9T;j?o!UFtnL$D+ZFqPA)XJjwMGUE_9|)JCDD~)KF1@gNq_HWd zHWXay2p;N4Zm#1Syw#!K7J<4D=+Hi_gwE(bDF-f;NexD?j0EA3J~tFwfb*Q_DIE#l z51!1gllS>k5W+i;PRSNBVIhC$P*Ey9xCDnx5AGzF+*saq9(W5HHTuWikq!s54jwNb zTs*vACHY1MSXTt?cbt7M7_|h9gc)x@$9{N$=Cg7Sg39ba3+`c=WbU&(v?N8nL67cd zDVn=eoiXH}mKq#T`{p3mm>5q?bBAvDNJl6w>uvi~mae`%Mxnr?Odjv1@(S^UO!wU& zi|p$0`Fz;*HTD|$649Ap^c;*9@r*{?byoR>P}^Mt#M_&@!#1LTYP;ir4?H|~7rVuo zeb%_u^98zdRMn-94Iup%TixC1d^CR3&V)XDwdhoaMkf^KwmXq}zTWx-HxcLo3h2f1 zm{kQZu%)`5D@4Xi3|EVcwg?~iap?N#4zFqbz7%zd=S%O(s{In#If0@3)#(2Eff<)N z3W>{J7XhA!!jt+#sJGG{E7)x`RymO__Kh4o6clM~d)K4yGEK$$GEcRB=|0wPzTn!L z?B{=eN^dK!Ua@!;ctA8VdC+fG4+JLM3-pNHI_@GZeD1XyBE}D!f%#e+1~_J9cYi_G z2ZMJ@iEI&Zf#Zuf`#>+xsB&ClBo|)J=Gnl2mJKrH$Ve1kEM|_g+%J}X=uYcnEbFy> zTL+Dn3*4bgoBvY#fu1mpM&X;rzJFX~GKUr)5qPRyaQ|bDFTi`P(w52`ikx zFLRo(!uiKCrwJ>Z|6S%ZVTJR5%bX^d^USZLs@A6v_0x+~kHLzA9sHWu8*E9{@-Y&* zrvl!q5AHN}nWcHrRl^DJ!zjC*^|eV}zU&PpNn&Z}-op$98~YW1sRq>&Akr}0x@kX% zde5^D)JT$(mUMu75?lowd4(m53a2Aq1;bB-Pkg|4F(nCA_=53+wuq*ik{fnM4u@MF zMDaX|Xid&b23&e&Bvv5ADaaEi{{V|TC@Fero35!^xGz15uTuztJ+EW&_9*5p?7$G| z>co`;&?lL@U1iV0O;~8$pKMGfI_|FVqONW z+$Q5(=C%kf8Dg@BnvNguZGI zs-m7oZV@YzZoJC6JaVI@(w>0+(~DGJ=t$m~<{_3g^lpV>-qVawNG zUm|+MVGCQTV(MMSVrn!;jlo{99ULh4BevlA?R+aeCbHv)Gela$QET}k2Ln*}Prs}K z#(R1D2#8k1{XZyCz=1@Oi{wC}==dy_j#Rm&xi(Z}w;pbDTx*K4+~X`4FwN7Q69z(* zl3A7@80=)c3KtO?9$}@3GR7~D(+P}6uW|f#?maUknNw4sbh{4Nf)AD5c<~4tSNm8p zlTl&Jg-D|4=K3KU*NY1wXOb+yIzzQ50wRQ)lc)N#v@|1_Tu2tw;!N2~+M zn@vvtq3zD5-zUHvL=SYdv5#a>>T9rt!OJKJ^_-}1h~WOhEQ#+|NxqfjzDF;D j56_Y^7b{^;k!PpI9wYxD{Y0>>f4{l9m`wiluYdhN0BE5r literal 0 HcmV?d00001 diff --git a/public/fonts/vendor/@mdi/materialdesignicons-webfont.svg b/public/fonts/vendor/@mdi/materialdesignicons-webfont.svg new file mode 100644 index 0000000..4fc7cdd --- /dev/null +++ b/public/fonts/vendor/@mdi/materialdesignicons-webfont.svg @@ -0,0 +1,10188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/vendor/@mdi/materialdesignicons-webfont.ttf b/public/fonts/vendor/@mdi/materialdesignicons-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..75cde78f1ad24a1c44b36ab07adfcf0d722b0b20 GIT binary patch literal 497948 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�K6 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