From 8abbc6a2a0c6b2d213ed08efa14aa996d1f839ee Mon Sep 17 00:00:00 2001 From: Alan Languirand Date: Mon, 10 Nov 2014 13:10:06 -0500 Subject: [PATCH] New fonts, cleaned up file structure, query form tweaks --- gulpfile.js | 2 +- src/index.html | 2 + src/partials/advanced-query.html | 15 +- src/partials/overview.html | 10 +- src/partials/start.html | 2 +- .../img/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes .../img/ui-bg_glass_75_ffffff_1x400.png | Bin 107 -> 0 bytes .../macgyver/img/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes .../macgyver/img/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes .../macgyver/img/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes .../macgyver/img/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes .../macgyver/img/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes .../macgyver/img/ui-icons_f6cf3b_256x240.png | Bin 8884 -> 0 bytes src/scripts/vendor/macgyver/macgyver.css | 7 - src/scripts/vendor/macgyver/macgyver.js | 3568 ----------------- src/scripts/vendor/macgyver/macgyver.min.js | 2 - src/styles/macgyver.css | 721 ++++ src/styles/overview.less | 52 +- src/styles/source-sans.less | 38 + src/styles/styles.css | 132 +- src/styles/styles.less | 32 +- src/styles/test.css | 34 +- src/styles/test.less | 24 +- src/test.html | 46 +- 24 files changed, 964 insertions(+), 3723 deletions(-) delete mode 100644 src/scripts/vendor/macgyver/img/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-bg_glass_75_ffffff_1x400.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-icons_222222_256x240.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-icons_2e83ff_256x240.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-icons_454545_256x240.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-icons_888888_256x240.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-icons_cd0a0a_256x240.png delete mode 100644 src/scripts/vendor/macgyver/img/ui-icons_f6cf3b_256x240.png delete mode 100644 src/scripts/vendor/macgyver/macgyver.css delete mode 100644 src/scripts/vendor/macgyver/macgyver.js delete mode 100644 src/scripts/vendor/macgyver/macgyver.min.js create mode 100644 src/styles/macgyver.css create mode 100644 src/styles/source-sans.less diff --git a/gulpfile.js b/gulpfile.js index 66841a7..82f93a8 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -81,8 +81,8 @@ gulp.task('css', function() { './src/styles/pure.css' ,'./src/styles/grids-responsive.css' ,'./src/styles/prism.css' - ,'./src/styles/animate.css' ,'./src/styles/styles.css' + ,'./src/styles/macgyver.css' ,'./src/scripts/vendor/macgyver/*.css' ]) /*.pipe(sourcemaps.init())*/ diff --git a/src/index.html b/src/index.html index 01ccd82..aa5b950 100644 --- a/src/index.html +++ b/src/index.html @@ -6,6 +6,8 @@ + + diff --git a/src/partials/advanced-query.html b/src/partials/advanced-query.html index 498cc30..2b7550a 100644 --- a/src/partials/advanced-query.html +++ b/src/partials/advanced-query.html @@ -12,7 +12,7 @@ Device Query Form
- +
@@ -22,7 +22,9 @@
- + -
+
-
+
diff --git a/src/partials/overview.html b/src/partials/overview.html index 9e7bc7f..6adcd16 100644 --- a/src/partials/overview.html +++ b/src/partials/overview.html @@ -136,7 +136,15 @@

:{{property}}
-
{{ value }}
+
+ +
diff --git a/src/partials/start.html b/src/partials/start.html index 936adb4..c52705c 100644 --- a/src/partials/start.html +++ b/src/partials/start.html @@ -2,7 +2,7 @@
-

Zetta Browser

+

Zetta Browser

{{errMsg}}
diff --git a/src/scripts/vendor/macgyver/img/ui-bg_flat_0_aaaaaa_40x100.png b/src/scripts/vendor/macgyver/img/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 diff --git a/src/scripts/vendor/macgyver/img/ui-bg_glass_75_ffffff_1x400.png b/src/scripts/vendor/macgyver/img/ui-bg_glass_75_ffffff_1x400.png deleted file mode 100644 index e65ca1297c7b0fca6d0d10c4c5475b8c20cf0e62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 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 diff --git a/src/scripts/vendor/macgyver/img/ui-icons_2e83ff_256x240.png b/src/scripts/vendor/macgyver/img/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 09d1cdc856c292c4ab6dd818c7543ac0828bd616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/src/scripts/vendor/macgyver/img/ui-icons_454545_256x240.png b/src/scripts/vendor/macgyver/img/ui-icons_454545_256x240.png deleted file mode 100644 index 59bd45b907c4fd965697774ce8c5fc6b2fd9c105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 oBo%DI*Kv;w;*%(i9W@f3_WCF#rGn diff --git a/src/scripts/vendor/macgyver/img/ui-icons_cd0a0a_256x240.png b/src/scripts/vendor/macgyver/img/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 2ab019b73ec11a485fa09378f3a0e155194f6a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 zcmd^?`8O2)_s3@pGmLE*`#M>&Z`mr_kcwz5Nh&gy7G+@45H9p05OJ)J0CH2owMSaGIN$+5!N; z<11j56?ANg=9hMl-IBGX-T8hf$N$b*H?$f4Xt&I`oABt1nR=k%#z{{*a!Axm|t}hCz zJg0Ln7;M4Zjx{$mwhMW+kWN;|j>qTx_-zNX!GzqEZRa}QF8_0yk6+=w}$QD^&hM4%OkT=uh$q9;5u~NL-I+NQyaVc|3l+iWI5~|(hA-G z08i8AMr@{uY_cWTxo^y|Qyb33mlZLvc7H2Zm~>mB7&=-1X^@|D z&0*~i?GBE&NM(Pv&Vt^zWu_bD3e|R?wTL{cSFwD^Ij9v%g=aLY@1U2Bxn#Te*{>%D zOOW-O-bfnJ7T8jd<*>8`Z2DsFQi~S$%^npJwXam5>>p zMd}QEjM)@~##n$LXpz1Hkl|2UGXi-JFFePXBWL+-5f%!S>L#KL3>Vl0w#d^21Jn<~_7q zWx^Xg1(>PsPGO&cu{S;(pRQ;=Vw2J<9NdQVWx<+g-`ia=Q@puS)75M+?u>DTa95e9 zt#1T?#a)uWC>Mia!K6>g|InPW{&Kp9$tC_3*;R_Xsz6^Eu|xW1$6j#0?XLs7^l+%O zlxddE)h^|=K(2UqS*0ECuDe0ic|H_^t*VOoTCKx0Qmn_^LyJ|b8l$Jvl3{2=3x8&7 z$1ik&YG>w#@x@y~$r`fhlUDo;yXecc6$`30m`3K8s{k8G&3RVp8n#|l6h(Xw`Axw9 z%6Y^J6k0P@4YAuSd%q7=eg)&u8EMoEmq$CWj1GY|rGQWw3ida!FHk&wCqrQh_0Bcw z!ZBS3CbxgZ+}~wzgGIQ#QId%T_TE~_qdUqxjqS#8#jPxdwO@(@-5_nSP&uT?aGYYD z6km36K9=gjUjImwO=5Hl#u85VF?r0HbW)#h^SR|s_L47Tl$&Z&Rz*ksl!t*(2O2;D z+8`6$qpLn}LchhCmv*X}moGMX5?F@juGeHQAddAn}0~r zS_0|d3*0v%Y)8+8K{ zGyoYPb|W9Grm9M4E?vb^@16ePbI4omZv+(NoZ##fLUmKlB(G_jEbtDCM*27t$v`JovAZa+%*Q5dDXF*Ftt*n!O>#ohCM4lZ)h5rdKV-3A za}2AO6@!`W>ROk5FN*>2Zza^Z%}8KT%*jBGH|rml2X1LR{wZhWx8V4>|5i}; zMnLIHn3!^)`87GYh}&Y`KMwyLbA#^pch}Z!`@P_qH&N^LS9SxpEy8mc!wFusq&Z@` zeO}<6PC@VNaII|=n(^cNUiLseig*$;NjG7;IwvfYCBN>kzv@v-V2eBQZ@oIs^)NLqMR935k|1}U;5<{s(Ebdj4r`?QtrrAPfQooq zmPs_(YTy|??+nitNIFDoR7~qLPPFFCf^_~8OUt{#!|9o*3Q{!@9ZAI$7O~piD!;WX8#v&RxNH27i59$`1{o zEYU_zE{bKEI%f3BbE0Fc;f2!4LjUlC`wgh4@R{1?O78r5t$hWKiLV{#QWWq{QZiPx zm3?x$;&DDRVt0SByRiFczw$-e)GSvpCRbzk^=E zz=(+LjEc{Ps_2(OYg=G(93!oS=IeJ|WA8STv+LgI*Oj1c-QC06N~mvJ&KKx{arGp5 zswvJ6{%BvBYo>#2$%O$~TITuh?Rr^jCpAUXh)}m74`O|aOU>w2KI`k<#efwa5=-l4Xx!o>Z9Evg`RLN5W7SQp3$@D3_hY4EV!0( ztMm6>zBcgY{RvHZ{9Ey&&)jr2B4s0qDPBUh1ITaAp&>rj3ng*B=VGXz* zs@eR<;J(XkpD6Q1U3}#FR)wlafiFMU(-=&e9(eQ`isrS-9aNwJ)7frS8RiXM4*SbC zL|4*c?h^jfYvSOpn%Z$W?C|TuZ;uy2pFWHXuGW`ZkGV&kPJsKqJJQ!NswAE!!cb2k zumi=AE$YIkm})cVlg>nn&PBjBRI*@mfhhRMsa5U8k#A!ztfiw)d7I_UyAif8$5sJ9a7WUv5!o%fL z(J7-8EQzv1YIc)BNeWkLK~m%y4vqe&q@|_ZR5;eC3-9rkf*T{_19jtuWKhdW4Bn|~ zZ-YyFLN!k)0AKg{dO)|v3K?=oy+dzb4%T1F4}JsByncB1Z(`2p@O0!E!JQelouN^* z%Q^YfQUh66D$Zx-RDZvLctsr9`_+1p#tz&4SMd@i_-8()tyg3OyhU~?Gt#-a{NKFN z0VGf+AH%@o6;-_*?$$T4QX-f_>Ny-5CV8Ccq+@>gNSeovbFr0@b}RiTcJbLx>ws&r zsvY!rR{4al#MpVKut~?&kTmF>_v3UaC!gvuxgg%5-{l{20}~&F6CUarF9N=u)BG71 zoQDlAwT+T=mfo&$Xy%4-kmW;4wuh6{{ABClybHV6L>t&k4?9_Ny8A_^?)ff#dEjhL z2RbC~cFVbz^fJ`$I0%prYc0g-9(7X3eUp}^#Mzv)Z1EsGW;qr3cY$+e2HU5d_O9L% zpbljP*1!A0PqpzNo3W&y(hD87qgweq5YQWYEkxrOuSain2-q@Z*P`x*ht-9)Fr5Ho zSTKduvc9h6`S^#$i)LgjDi3_PQ+RbaGP!!di^Y;4kB0lGo$y{if)rJIaXTbpRgO#B z1El6|18;s}$0FRjgK-7~ZwmI`_1{a`32+Y>&O_iTpm%vz6hNkjGR(#*! zpfJ2>OAQbTFba9S3j9BlRHXaG{)Zt(J<3ppA?}j+7F#{bV{M7zU)5e@~R&J_xf$+GKK~ z3{R;Y9fZGe^ifEqKL;!VMXv26=R~^TG(#*2!JKCWoo&c^$utAs#Gfq-?t!c&9TH5- zj&i5L4NWbdNs*djvsY}bC&ddUbh=iyc0;3-@Y#d^s8|Ql{ax(yenFcG#i|K%lRxy| zFys4w!@EPXp2AsbMUGc*eP|7uliAq-O6~(+MR>V(EZTd&9G+MY&gF2lZ=I8j*o`OC z`AxrmOGMeD=H_9Cq47clT|h34>-EI=%;E!my;o&wU(aKV&PymBzrV9q2uA62XS@JrjKYANZAU>;8mag#BU?Nv`+ZVhlAPV`HF_gKY_O zhbV2L`8qvR&f=@M5vH~geD+L&*L2s<)|5)clA0yt9TM{X)iWtx@wJO_!{vR#|AD6t z*OAg2&P_i8jjW5y0DdtOGcqvrCHD*1Uq_q1ZQmngPnf!2fHizH%sSX>#$2Rh!>1ur z+s(*-)abDuePc6~XNG8m@|KMXHVM#G4?~+V z1z!An!D0GD-7WqXE8ddUXLkI%u01$fTEhhyAjazWZkGyEFgyUS@KV?30|y`R%>eUTdB6(B`@sGb2AE007Ka&5dsW z0EqGy*rBJTZ1KfiBa|2FaKo!mddee#-sb`3Ged~Eb2tE;D$%DNaKNAmPvy>btDRL7_@blc74dH$aDMF@N4EAk_1sjn3~ zH)}JELEj9nN%e0^4qxUv?un{E+_?C%5Jk&fPBWukDAs@0tV|dy)9Ux%UQCQ0H|tu6 zCu~1?vRD@G7Zo-3M99_E6+-V-qWuC##YR0TcxI zm&Z4;8MntqWXn7I3Wl_rqger-qhPOr^)`^FRh!B|<`CtJL3N$EUoWHkk-@z=a2LO> zyi?zrjXcCQvhn?SU!jxi&}0?+2p%Zn;ssbO=_ISAPf9v1SW}UBdn%t>5vqz6&PE`S z$0NJKINld@OX z142c?`fT8IKPnDt16nvForw=f;Z^u|t@A;U2OuL#koLcVrqRo~`pUy`iku-6bFfLp z>(tj801YpyS4qT5-{nAR>HN`+iweT}1$%>oqBeU-NX4JYY52^Q%$6mC^d6X#B$aO_ zUH&vqx{iqfq+;pIs#6nS-G}gm&>Er}R|TLfM&B--*Jlm=2xg?w6;1rBiAODTC%ZuLh|AM!iHOqdrNIgoM_)@>aRa2u!bpUFb(zWs}_pe zN8LPBlEO4JG)%VY+e2pP>A!vDw6-sg6{rv-u66inTy|@W=PAhDp64aH%_%sZUe(B$ z$N3j<#x*5UPt>ys-u-Cg$~xU#xoGn!c+S1EL}~usaa0HGUSe@Pdtb|*Lvf=tbK4q6 zxDZssgNO)wy_SDW@7Gnt8MqM#+@?}oxt$!25U--iy=&DKbD;Qn{DkBmy6t{wcoHTO zwx%(4;>-(wHm>QOYw%LnXl+=}RL;?*8H;bhJ?oaq(xg?e1HUn6I^~}rMu(r>1{ZV- z8saYr0|rcNnRNR9-vtdw1kJBZxum-D8d~cLtqBEi8$+vL8Z% zLk#W+b(yFJ<`Kufc4?FE3q4rtr0qxe7h&H5q@og%{XbQ2uvie2Y7YQH0$tH>HWR^gTEQA z5*n`Ma<0uz)=HrwgOb>VkE`;5vHj8XY zk4B|ea#gjlCrf&Z#IX_hOGKhMeJ?8?n4a-Y{x7?GHb7%@B_hS@80TJ z8M~^9c^0@5Bk1fC!JaH<`1@GX%p>XUS>G#D@oF0Uai{Hy$cf-H9AA&MY%^YCK2F#j zX(Zn)%PRLl`}fz+i-h@Iuu*AWD2Pytek@Mrdh%m@zi+6938>bkid3P^SI#k!h>6`{ z!_~U|@o~ISesefz@McF#CNBSlfPlc`rjZzy+ZNjL&hJNGO%k?1Y#&lxMn7KcpfuLt zFa2GBJ_SNSaijGAk%&RKD0msJG9w%(WGZucwlLXCBDF*!WbpbQn?iXL)ho=i(0JgE z9NHK$!C*i5%li)~ZA{Pc^9DWGGdTMWt!i>@ZF9UAr^UuqpFj5_+TBzp^|Ez~ZgqV7LJaiT$lIX+^d_r3!Pm<0%U7g%3uq zJ@}~4!!C8HA|=Sz1<5GWxtxpWm%>@-5>Hld-Lkuky9mS^xp>SZIz5XYCVuzgh~ZU` zuaQjw5W?`rf~wY=qJ>MSw7uwEnX&z`DX){u{S5>!i&PCS$TdQkM9?Vb_dEu0g@em< zw8zRl*qwK3P*cZr<8Kv988SiLJjg|18_A`{gnY0W4BXUAN$!TD68xkSAeWasgH!zY3CTe+v}X#uNDKX3Gd>mLf* z9j&DX$R0UqmTWFPMRfQN+VIA!u}te!MS)gyUd@$oi15okg5-lfLy!T5xBSPJd99@| z$y{H{0?gY)iO8Uj@9Mvroh6rb(@>X%^dN= z!EdVfY*TXBc>JoE7Osi^toy3vY}ZTQu!mngk$YS1Lbam<==Q>yjfBF>Gq6i~a+@vw zIyagIemC}r`$Ba`-$??`zQl?|ZXexN+j@48D0C}XJ%M>R&UQ8fJjG4T2g;U4e(`1P zv~Sgc^Qyup?0mAQ!(PkLX|SXZ4zb#0-?) zju6Uh(OnmR++DNI`9Unh^17v|o1?^25by=0Zpq_34C6uBJ;+}9PLO_nqJT8YH5}^so#_YWzmFWc_B_4m6r- zO}MG&s_b_0Rt^e#wrcf^k}tM0H3uNbg+QN|=1szRPrKtm2m&^Ju=^&r`{nq}4Nk*K z;?bMT_7ms4Zx%xYvxfmc(qnf}my6~pm z#J&gNr%w(Z5l%uT-nctmL6hkMBG(Hgp8RM6`C_dNRDt^kI@Hd)ut7atK_j<3BR?N% z!$J?!+zVX8%()o3s9Oo6gF^&iE)!?HbcdgM<9Zee$Z7ZvE)pIrpOx1FySEb1U^ne) zb!b+efkwlqQ1$^$oj<@OF{JX3+Ca@-yc?TyY_w=S4G$^hfc;22wfZjrc#3qeqnwDn z;LyDRR91a$?#{qWRsyDHo@SW_JroFZNd5}%EI4CoV0WV0Vd}$o%IHEi2J}t3#@;X+ z?yE1D@ROHgf9$`+OHR(7T3ej3@c8!1o%@m~3}3U#PV_?%S+Vc%0CbZVr3;At%KfqF zk(R;EhHiSysz5cTne;tISi+TKGEz_eH2BxIsZh)u307Xi!}%!SgX)>0Q37qQe^Gic zLhf6K*~ z9!dAv(kr({`hb)0t>ao}JVQ=&Q#a^#)sZT964le&h1dU%E9ZD#F$EN)^p@%Am5g6H z{5Aa`ns>LDFSgb^lUKX4Dri;bcuDOg$e>{_-h^6=-b=AE2B0?hhjEMkAB>waZJ*b? zsg9$_7s99#>-YDNJu1HNoUA6zMrzHLFLjph?dLS)kt#D5K!V-=oJCg4nPW!%ScA)_ zO|Q|?P1X4tC8QL3L1TR2*ZDt(*WLuhUMlOS-6__0JH2Jq_QiM3$k)!(Dw6vXi}N@I ze_)(bF6@}BmYd*D!Jt;oyXi z=%gcBR=&h0X%;GN$Y2>#rI$Jj+G4^;7S*U-ulqUlnR)FY1&!)>eKDU7_R)mm_~CW* zTdF`q4y08l%kotUH{-(c6rMpy*(jw2bwDY4*P4Fwid#*1?t<&`cRjitwW+_?0RpWY zcNDz)C!^!dIZJK#k)|{JV_2&Zhngn&2I7$N7jI{_$T{2TxF8NksLBG3FNicxY;chL zPOOHrL=^Xca(w|~A4&3-to*x#DS|x^#4@RzAbrwy=NkFjHc}?MK>Ej3EX+>aZ?jjZ zK)?toENG3VU)a~7U2c_frGRT@8$3b>uqP&mRxo=1RQ3)#W!_av;Dd`i&oSJ0Z#|Fy zo`Aa_KyXXXK{J5qxQfVx=Jp6MA!1rt?EwI;)U!U1#Z;ttf& zS<=MWa{}~Hd(xnc0=j2r;eu4P-(g&LeO`dS8xTPiQaDGdBTL&^ zHE>KxupYxWAW&ahE??DVwDf7%;@;@Z)Ug)r1vc+)w&i!vZIk$LZV5}LBA5CBr_1_Py)hRCnd7%tQvnuK*$PG1inrt2h@+$lbP`m5ibCDqi2tv~l!* zw0&7i-k5cH2fTaw|h9yqwyQCFt1)6ke)Ja_7Ifb5p z2tS1a-0OnPa11e8I&i0haU9$aub^*#T&h*cHUXL_hC@~1JG-#~96q`AO zbi%?eT>&TGFo_EcNEQ=@on-~XUfzMtiAqXivM7xm<=ICm;cMxtPQ;6MWIMtIzj#t7 zn2|lGmKoviG6!^Z)sNWEFvU7k`AA~k0?V^FiN~_S0vWBP$HD2(^7n*3vaR&@is*f9 zF-7RqVb_|DEU#@pql1T@le|1$9VT)Iq!C791x~~fO{{xEN>X|X+qG!siJMqGX}53p zEr+#BYd}5D!W(NC3{!vpCTc~wUjCO) z$M%m}82)b?;meOX8pvwaubX!ceIEN1DMmeD@1Yb09xGe+Rn$b>~%`~ZC{eBQT5q1qd~jo<+tn>95KBWb3V^2tN50k4$mx9Ei-V#3%Sj{ ztPMYWUe6j{Y2RvhPJW=d?wq0_^kBcfc7@w3Az^Y(!Qn5rE*WM*#AM(KFl`@X z;Wdv>Q<({$ye@s7loyvB$h4eP4iAW(MajmQgS-^VRTZ5&ccQl!^y-*NJJ+GJfy*~hGN_J@ zIIc|ZnB@6K_Xo}9`&Jq_atGi4=gFtCDS}U2JDR z&4;jH3HB%g$P-v<_~Y>*#&VcmFWP;j5|d8;J#yVrAlWmuLiw-owFngn5oBXQk_Yxl z+rkNl&RVx(pkQlEHfVkxuz7BOB(k6Ah#GRpZ0U2=b@B&{35OhTy4VpIor}fx^nD@s zgAxP%vIKMfOR@={mXb-dCff|^LpE2?{pq3B%WOe)P0rcyI#LGc*||{3)!yP0MGam$ zU@kuD);Il{K9ED25=p@@6PJ?yq@6#R|^9 z#k8ymkaITdD=i|~LT-m-ytA>OIGr^|{(M3`v_C#QxYjr5x_HsIpV^rx@{@7@K`TDr zDCs51#JS0AkOP3tw5QLW9#b#aK&@#n>_$)F^w`~b0&?`t@91**o=%HFF1Xpw`ZLS+ zkMn-AZAHr!)yyTnJDz(n^Asm5vIeQB6=l3r(P$DxKWLUUTNh?hGkIp-G1YXn->9*M z{=)8qfDMW?(x9AfrF{}|&Qc?#xY09=={;X==3CljCXo*v)Jxz;R6g}6q2l0ks89d{ z+VQcS&rv~S_B}mURMZk02MG0`4{Uo%1^fS)Y`~=j~4)2ysyfRJu zk<1|5gFC%>w!diNO#T|xBi5a=%UkfH4D%r;S+Ui=(ZKCP8U&IT`s1&S_CJOx7b_e> z|BnUY^N%kAZ|-yDeoJ;+GRyoT8z5fNXF|kr0=o8y!w;4BFVK6b&KJ??-4DI9J8k0J zy#z~9nfVSROoYyFnK;9wdR|c*th_%yPm%6Hik;euKu@C-4yJT**!3)9CGl5b&g#q< zE-{W$h^l}f5YjFcG*{PC_lKaU0eUaZn=U?z-Qp1LvUqt?&5vLac|1vpO(XmNa4RLbl9d`+q02t0LZzcdF%Xd$ zO9Pju*bOCa&EiMAm^wzXqUCW1r;zd{Xx$}hR2;tR1cyEZv%|aMJz|b9SPg{8;cDrTPJR_(05cZDAD*HDO}!(kJu$|C_(EJurgfCYeZXt z{PIPpL}f;Lf~BL^oru$IRU9u%wWYX8lwJR^r2mK2m&UCq5Wdthm@vT)=$_7w5Ej!m zp#>j4r_raX%v_y?N^-6gv-6pWniQ3Yv_VuE(jS_86i zjV*(J*yHjj#{VvBicLiX0^@SB6iaee!ro$a;^zrT$w#dBbyspgrNm1NG=>uVdScEW*i#1vZ^ zn*3~Ja5&2w+hA7?G0YbM-CO=X{!qxo86$p5)&SIYe~-N%<5-BKb)4kS!A;8Xv_G63 z{!t9Qtu+_$*WEyCIrgK`*=1j8+G|ZHe8cA%v;$&DGFZcdeRQ3FL#?+>v_;JEmE_T1 z=5%jNg`odSDcsP}wbpoIqy5rm6R2bEUC5){3ywj$@kf8De&D9@pdG_L?l7?&k(gnR zQ7pD0pLNvZ`j8qdWykL;m_iRZSd-hnl-@SEd9Adcv4;WGWleC8I`y@RbuJt9MqMbZbBsj$^XbaAs9buv9@WKK4qP*Ra>26zyGI;EHCzHduUKkK|TLHe%h(y zA!NqZw=9@OQltpnj#4#|F1IUJy8F&9AR&6eUt@t_@Qy*omw!f)Il+u|C75OhZgdu7 zJ1gR0Lu_o)`z$#;{OrD(dLlg#Gy!AvyJ+l55k|8+Oh|lj)|KH=9 zAN^lXf;-RlhspK%b1&Huu=<|TB7F0{u`2M6c6cLqR6;&7G;cqzXZ!-$zbl)G+dR77 zVF_N`V*={Ig3-Y}XQfyC;>b*~rXxfDILxW=(5sqFBxk$R+M_h|>%iTnD%^bR3wJ?i z@ABqxlANU)#<5&PEpGNOLAAX|a`3G}8>#(@*Gf1-?@A7rCHm2Slm=(aPZ)A7n?j<;4jKe;2hoX&KbNX%nC13n>;_@I|=&WJ;e z9h7XMeG+vL%n`_KM4p#EdEfViaNGboYw8?Q!L!WWH~{HU)%#hHzC9Mh?n z(Q#il>B`MMl-5y<88>91NQof$CP4Koo%MUNR)B;kkIt#Rg*LpLb zSaz(4Oh8d|Ohb&iueaYo-~Sto84(Eb(-Q*#DzSg=1wbogk=o|;uxC|Eu#rP#;Mw`k z&S8rZmoql^Czr&*D2%koJ3(pn#=g|;hold{JwkrJJAow%^uNmr!`%gkxLf;H)xNpH z9rtE$KZPoVLXs#R`Tqso{*{d0hcpvEmHW$9rdJreZqE0BqJ#drvzT`W#il?6kF=>G zY9opZ?<%;rcN94CwH+JFhw{OpG(9qjUh|{Ak-Z?vTE+kd2JHQitgZJKiy#RheDFoI zDq?X;lD3j$OKY4<&nb=n$>(>$NS`sKj+z8ND3sKjz~qxA`#|= Y`xtn(*dR-}!vwf$a^1Mm&@<(K0cnc1rT_o{ diff --git a/src/scripts/vendor/macgyver/macgyver.css b/src/scripts/vendor/macgyver/macgyver.css deleted file mode 100644 index 39ed1d2..0000000 --- a/src/scripts/vendor/macgyver/macgyver.css +++ /dev/null @@ -1,7 +0,0 @@ -.mac-date-time.ng-invalid-date,.mac-date-time.ng-invalid-time{background:#ffe2e2;border:solid 1px #dea9a9}.close,.close-modal{width:18px;height:18px;-webkit-border-radius:9px;border-radius:9px;display:block;background:#bdc0c7;position:relative;opacity:1;-ms-filter:none;filter:none;}.close:after,.close-modal:after{content:'';display:block;width:2px;height:10px;background:#fff;position:absolute;top:4px;left:8px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.close:before,.close-modal:before{content:'';display:block;width:2px;height:10px;background:#fff;position:absolute;top:4px;left:8px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.close:hover,.close-modal:hover{background:#828590}.hide{display:none}.affix{position:fixed;}.affix-bottom{position:absolute} -.mac-menu{position:absolute;top:0;left:0;min-width:200px;background:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,0.2);box-shadow:0 3px 6px rgba(0,0,0,0.2);border:1px solid #d1d3d8;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:325px;overflow-y:auto;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);visibility:hidden;-webkit-transition:opacity 0.1s ease-out, visibility 0.1s ease-out;-moz-transition:opacity 0.1s ease-out, visibility 0.1s ease-out;-o-transition:opacity 0.1s ease-out, visibility 0.1s ease-out;-ms-transition:opacity 0.1s ease-out, visibility 0.1s ease-out;transition:opacity 0.1s ease-out, visibility 0.1s ease-out;}.mac-menu.visible{visibility:visible;opacity:1;-ms-filter:none;filter:none}.mac-menu ul{list-style:none;margin:0;padding-left:0;}.mac-menu ul .mac-menu-item{display:block;padding:5px 10px;-webkit-transition:background 0.1s ease-out;-moz-transition:background 0.1s ease-out;-o-transition:background 0.1s ease-out;-ms-transition:background 0.1s ease-out;transition:background 0.1s ease-out;color:#000;cursor:pointer;}.mac-menu ul .mac-menu-item.active{background:#e0e8fb;-webkit-transition:0;-moz-transition:0;-o-transition:0;-ms-transition:0;transition:0;text-decoration:none} -.mac-modal-overlay{background-color:rgba(245,246,250,0.75);position:fixed;top:0;left:0;right:0;bottom:0;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);overflow-y:auto;z-index:3;}.mac-modal-overlay.visible,.mac-modal-overlay.visible-add-active{opacity:1;-ms-filter:none;filter:none;}.mac-modal-overlay.visible .mac-modal,.mac-modal-overlay.visible-add-active .mac-modal{top:50%}.mac-modal-overlay.visible-add,.mac-modal-overlay.visible-remove{-webkit-transition:0.2s ease-out all;-moz-transition:0.2s ease-out all;-o-transition:0.2s ease-out all;-ms-transition:0.2s ease-out all;transition:0.2s ease-out all}.mac-modal-overlay.visible-remove-active{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.mac-modal-overlay .mac-modal{position:absolute;top:0;left:50%;width:500px;margin-left:-251px;background:#fff;border:1px solid #d1d3d8;-webkit-box-shadow:0 4px 10px rgba(0,0,0,0.15);box-shadow:0 4px 10px rgba(0,0,0,0.15);-webkit-transition:all 0.2s ease-out;-moz-transition:all 0.2s ease-out;-o-transition:all 0.2s ease-out;-ms-transition:all 0.2s ease-out;transition:all 0.2s ease-out;-webkit-border-radius:3px;border-radius:3px;-webkit-transform:rotateX(0) rotateY(0);-moz-transform:rotateX(0) rotateY(0);-o-transform:rotateX(0) rotateY(0);-ms-transform:rotateX(0) rotateY(0);transform:rotateX(0) rotateY(0);}.mac-modal-overlay .mac-modal:after{content:"";display:block;position:absolute;bottom:-20px;height:20px;width:1px}.mac-modal-overlay .mac-modal .mac-close-modal{position:absolute;top:-5px;right:-5px;width:18px;height:18px;-webkit-border-radius:9px;border-radius:9px;display:block;background:#bdc0c7;cursor:pointer;}.mac-modal-overlay .mac-modal .mac-close-modal:before,.mac-modal-overlay .mac-modal .mac-close-modal:after{content:'';display:block;width:2px;height:10px;background:#fff;position:absolute;top:4px;left:8px}.mac-modal-overlay .mac-modal .mac-close-modal:before{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.mac-modal-overlay .mac-modal .mac-close-modal:after{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.mac-modal-overlay .mac-modal .mac-modal-content{padding:20px} -.mac-popover{position:absolute;top:0;left:0;background:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,0.2);box-shadow:0 3px 6px rgba(0,0,0,0.2);border:1px solid #d1d3d8;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);transform:scale3d(0,0,0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transform-origin:left top;-moz-transform-origin:left top;-o-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top;visibility:hidden;-webkit-border-radius:3px;border-radius:3px;z-index:2;}.mac-popover.fixed{position:fixed}.mac-popover.visible{opacity:1;-ms-filter:none;filter:none;visibility:visible;-webkit-transform:scale3d(1,1,1);-moz-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:-webkit-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;-moz-transition:-moz-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;-o-transition:-o-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;-ms-transition:-ms-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;transition:transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out}.mac-popover.ng-leave{-webkit-transition:-webkit-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;-moz-transition:-moz-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;-o-transition:-o-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;-ms-transition:-ms-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;transition:transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out;}.mac-popover.ng-leave.ng-leave-active{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transform:scale3d(0,0,0);-moz-transform:scale3d(0,0,0);-o-transform:scale3d(0,0,0);-ms-transform:scale3d(0,0,0);transform:scale3d(0,0,0);visibility:hidden}.mac-popover .tip{display:block;width:0;height:0;border-bottom:9px solid #d1d3d8;border-left:9px solid rgba(255,255,255,0);border-right:9px solid rgba(255,255,255,0);position:absolute;top:-9px;left:15px;}.mac-popover .tip:after{content:'';display:block;width:0;height:0;border-bottom:8px solid #fff;border-left:8px solid rgba(255,255,255,0);border-right:8px solid rgba(255,255,255,0);position:absolute;top:1px;left:-8px}.mac-popover.above{-webkit-transform-origin:left bottom;-moz-transform-origin:left bottom;-o-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;}.mac-popover.above .tip{top:auto;bottom:-9px;border-top:9px solid #d1d3d8;border-bottom:0;}.mac-popover.above .tip:after{top:auto;bottom:1px;border-top:8px solid #fff;border-bottom:0}.mac-popover.above.right{-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-o-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;}.mac-popover.above.right .tip{left:auto;right:15px}.mac-popover.below.right{-webkit-transform-origin:right top;-moz-transform-origin:right top;-o-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top;}.mac-popover.below.right .tip{left:auto;right:15px}.mac-popover.middle .tip{top:50%;margin-top:-9px;border-top:9px solid rgba(255,255,255,0);border-bottom:9px solid rgba(255,255,255,0);}.mac-popover.middle .tip:after{border-top:8px solid rgba(255,255,255,0);border-bottom:8px solid rgba(255,255,255,0);top:-8px}.mac-popover.middle.right{-webkit-transform-origin:left center;-moz-transform-origin:left center;-o-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center;}.mac-popover.middle.right .tip{border-left:0;border-right:9px solid #d1d3d8;left:-9px;}.mac-popover.middle.right .tip:after{border-left:0;border-right:8px solid #fff;left:1px}.mac-popover.middle.left{-webkit-transform-origin:right center;-moz-transform-origin:right center;-o-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center;}.mac-popover.middle.left .tip{border-right:0;border-left:9px solid #d1d3d8;right:-9px;left:auto;}.mac-popover.middle.left .tip:after{border-right:0;border-left:8px solid #fff;right:1px;left:auto}.mac-popover .popover-header{background:#eaecf1;display:none;}.mac-popover .popover-header .title{font-size:13px;font-weight:bold;line-height:33px;padding-left:10px;padding-top:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;margin-right:40px}.mac-popover .popover-header .close{float:right;margin:7px 10px 0 0;display:none}.mac-popover .popover-content{max-height:415px;overflow-y:auto;overflow-x:hidden;position:relative}.mac-popover .popover-footer{display:none}.mac-popover.footer{padding-bottom:42px;}.mac-popover.footer .popover-footer{display:block;position:absolute;bottom:0;left:0;right:0;padding:10px;-webkit-box-shadow:0 -1px 5px rgba(0,0,0,0.15);box-shadow:0 -1px 5px rgba(0,0,0,0.15)}.mac-popover.header .popover-header{display:block}.mac-popover.header.below .tip:after{border-bottom:8px solid #eaecf1}.mac-popover.header.middle.left .tip:after{border-left:8px solid #eaecf1}.mac-popover.header.middle.right .tip:after{border-right:8px solid #eaecf1} -.mac-spinner,.mac-cspinner{display:inline-block;position:relative;}.mac-spinner.block,.mac-cspinner.block{display:block;margin:0 auto}@-moz-keyframes fade{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:.02;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=2)";filter:alpha(opacity=2)}}@-webkit-keyframes fade{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:.02;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=2)";filter:alpha(opacity=2)}}@-o-keyframes fade{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:.02;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=2)";filter:alpha(opacity=2)}}@keyframes fade{0%{opacity:1;-ms-filter:none;filter:none}100%{opacity:.02;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=2)";filter:alpha(opacity=2)}} -.mac-tag-autocomplete{position:relative;display:inline-block;border:1px solid #aaa;background:#fff;margin:0;padding:0;}.mac-tag-autocomplete .mac-tag-list{margin:0;padding-left:0;}.mac-tag-autocomplete .mac-tag-list .mac-tag{padding:3px 20px 3px 5px;margin:3px;position:relative;display:inline-block;list-style:none;font-size:13px;line-height:13px;-webkit-border-radius:3px;border-radius:3px;}.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-label{background:-webkit-linear-gradient(top, #eaf0ff, #dee8ff);background:-moz-linear-gradient(top, #eaf0ff, #dee8ff);background:-o-linear-gradient(top, #eaf0ff, #dee8ff);background:-ms-linear-gradient(top, #eaf0ff, #dee8ff);background:linear-gradient(to bottom, #eaf0ff, #dee8ff);border:1px solid #bfc9e1;text-shadow:none;color:#000;font-weight:normal;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,0.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,0.05)}.mac-tag-autocomplete .mac-tag-list .mac-tag .mac-tag-close{position:absolute;right:6px;color:#9da6b7;cursor:pointer}.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag{white-space:nowrap;padding:0;}.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag .text-input{color:#666;background:transparent;padding:5px;margin:0;border:none !important;-webkit-box-shadow:none;box-shadow:none}.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag.fullwidth{width:100%;}.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag.fullwidth .text-input{width:90%} -.mac-tooltip{background:rgba(47,48,53,0.75);text-align:center;color:#fff;padding:5px 7px;position:absolute;top:100px;left:100px;font-size:12px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);visibility:hidden;-webkit-transition:opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out;-moz-transition:opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out;-o-transition:opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out;-ms-transition:opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out;transition:opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out;margin-top:5px;-webkit-border-radius:3px;border-radius:3px;z-index:7;}.mac-tooltip.visible{visibility:visible;opacity:1;-ms-filter:none;filter:none;margin-top:0}.mac-tooltip:after{content:'';display:block;width:0;height:0;position:absolute}.mac-tooltip.top:after{border-top:6px solid rgba(47,48,53,0.75);border-left:6px solid transparent;border-right:6px solid transparent;bottom:-6px;left:50%;margin-left:-6px}.mac-tooltip.bottom:after{border-bottom:6px solid rgba(47,48,53,0.75);border-left:6px solid transparent;border-right:6px solid transparent;top:-6px;left:50%;margin-left:-6px}.mac-tooltip.left:after{border-left:6px solid rgba(47,48,53,0.75);border-top:6px solid transparent;border-bottom:6px solid transparent;right:-6px;top:50%;margin-top:-6px}.mac-tooltip.right:after{border-right:6px solid rgba(47,48,53,0.75);border-top:6px solid transparent;border-bottom:6px solid transparent;left:-6px;top:50%;margin-top:-6px} \ No newline at end of file diff --git a/src/scripts/vendor/macgyver/macgyver.js b/src/scripts/vendor/macgyver/macgyver.js deleted file mode 100644 index 7057fc2..0000000 --- a/src/scripts/vendor/macgyver/macgyver.js +++ /dev/null @@ -1,3568 +0,0 @@ -/** - * MacGyver v0.4.0 - * @link http://angular-macgyver.github.io/MacGyver - * @license MIT - */ -(function(window, angular, undefined) { -var augmentWidthOrHeight, core_pnum, cssExpand, extendjQuery, getStyles, getWidthOrHeight, getWindow, isScope, isWindow, jqLiteExtend, modules, rnumnonpx; - -modules = ["Mac.Util"]; - -try { - angular.module("ngAnimate"); - modules.push("ngAnimate"); -} catch (_error) {} - -angular.module("Mac", modules); - - -/* -@chalk overview -@name angular.element - -@description -Angular comes with jqLite, a tiny, API-compatible subset of jQuery. However, its -functionality is very limited and MacGyver extends jqLite to make sure MacGyver -components work properly. - -Real jQuery will continue to take precedence over jqLite and all functions MacGyver extends. - -MacGyver adds the following methods: -- [height()](http://api.jquery.com/height/) - Does not support set -- [width()](http://api.jquery.com/width/) - Does not support set -- [outerHeight()](http://api.jquery.com/outerHeight/) - Does not support set -- [outerWidth()](http://api.jquery.com/outerWidth/) - Does not support set -- [offset()](http://api.jquery.com/offset/) -- [scrollTop()](http://api.jquery.com/scrollTop/) - */ - -cssExpand = ["Top", "Right", "Bottom", "Left"]; - -core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source; - -rnumnonpx = new RegExp("^(" + core_pnum + ")(?!px)[a-z%]+$", "i"); - -getStyles = function(element) { - return window.getComputedStyle(element, null); -}; - -isWindow = function(obj) { - return obj && obj.document && obj.location && obj.alert && obj.setInterval; -}; - -isScope = function(obj) { - return obj && (obj.$evalAsync != null) && (obj.$watch != null); -}; - -getWindow = function(element) { - if (isWindow(element)) { - return element; - } else { - return element.nodeType === 9 && element.defaultView; - } -}; - -augmentWidthOrHeight = function(element, name, extra, isBorderBox, styles) { - var i, start, val, _i; - if (extra === (isBorderBox ? "border" : "content")) { - return 0; - } - val = 0; - start = name === "Width" ? 1 : 0; - for (i = _i = start; _i <= 3; i = _i += 2) { - if (extra === "margin") { - val += parseFloat(styles["" + extra + cssExpand[i]]); - } - if (isBorderBox) { - if (extra === "content") { - val -= parseFloat(styles["padding" + cssExpand[i]]); - } - if (extra !== "margin") { - val -= parseFloat(styles["border" + cssExpand[i]]); - } - } else { - val += parseFloat(styles["padding" + cssExpand[i]]); - if (extra !== "padding") { - val += parseFloat(styles["border" + cssExpand + "Width"]); - } - } - } - return val; -}; - -getWidthOrHeight = function(type, prefix, element) { - return function(margin) { - var defaultExtra, doc, extra, isBorderBox, name, styles, value, valueIsBorderBox; - defaultExtra = (function() { - switch (prefix) { - case "inner": - return "padding"; - case "outer": - return ""; - default: - return "content"; - } - })(); - extra = defaultExtra || (margin === true ? "margin" : "border"); - if (isWindow(element)) { - return element.document.documentElement["client" + type]; - } - if (element.nodeType === 9) { - doc = element.documentElement; - return Math.max(element.body["scroll" + type], doc["scroll" + type], element.body["offset" + type], doc["offset" + type], doc["client" + type]); - } - valueIsBorderBox = true; - styles = getStyles(element); - name = type.toLowerCase(); - value = type === "Height" ? element.offsetHeight : element.offsetWidth; - isBorderBox = element.style.boxSizing === "border-box"; - if (value <= 0 || value === null) { - value = styles[name]; - if (value < 0 || value === null) { - value = element.style[name]; - } - if (rnumnonpx.test(value)) { - return value; - } - valueIsBorderBox = isBorderBox; - value = parseFloat(value) || 0; - } - return value + augmentWidthOrHeight(element, type, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles); - }; -}; - -jqLiteExtend = { - height: function(element) { - return getWidthOrHeight("Height", "", element)(); - }, - width: function(element) { - return getWidthOrHeight("Width", "", element)(); - }, - outerHeight: function(element, margin) { - return getWidthOrHeight("Height", "outer", element)(margin); - }, - outerWidth: function(element, margin) { - return getWidthOrHeight("Width", "outer", element)(margin); - }, - offset: function(element) { - var box, doc, docElem, win; - box = { - top: 0, - left: 0 - }; - doc = element && element.ownerDocument; - if (!doc) { - return; - } - docElem = doc.documentElement; - if (element.getBoundingClientRect != null) { - box = element.getBoundingClientRect(); - } - win = getWindow(doc); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - }, - scrollTop: function(element, value) { - var win; - win = getWindow(element); - if (value == null) { - if (win) { - return win["pageYOffset"]; - } else { - return element["scrollTop"]; - } - } - if (win) { - return win.scrollTo(window.pageYOffset, value); - } else { - return element["scrollTop"] = value; - } - }, - scrollLeft: function(element, value) { - var win; - win = getWindow(element); - if (value == null) { - if (win) { - return win["pageXOffset"]; - } else { - return element["scrollLeft"]; - } - } - if (win) { - return win.scrollTo(window.pageXOffset, value); - } else { - return element["scrollLeft"] = value; - } - } -}; - -extendjQuery = function() { - var jqLite; - if ((window.jQuery != null) && (angular.element.prototype.offset != null)) { - return; - } - jqLite = angular.element; - return angular.forEach(jqLiteExtend, function(fn, name) { - return jqLite.prototype[name] = function(arg1, arg2) { - if (this.length) { - return fn(this[0], arg1, arg2); - } - }; - }); -}; - -extendjQuery(); - - -/* -@chalk overview -@name mac-affix - -@description -Fix the component at a certain position - -@param {Expr} mac-affix-disabled To unpin element (default false) -@param {Expr} mac-affix-top Top offset (default 0) -@param {Expr} mac-affix-bottom Bottom offset (default 0) -@param {Event} refresh-mac-affix To update the position of affixed element - */ -angular.module("Mac").directive("macAffix", [ - "$document", "$window", function($document, $window) { - return { - link: function($scope, element, attrs) { - var defaults, disabled, getPinnedOffset, lastAffix, offset, pinnedOffset, scrollEvent, setOffset, unpin, windowEl; - defaults = { - top: 0, - bottom: 0, - disabled: false, - classes: "affix affix-top affix-bottom" - }; - offset = { - top: defaults.top, - bottom: defaults.bottom - }; - disabled = defaults.disabled; - lastAffix = null; - unpin = null; - pinnedOffset = null; - windowEl = angular.element($window); - - /* - @name setOffset - @description - Update top or bottom offset. This function will make sure the value is - an integer and use default value - @param {String} key Offset key - @param {String|Integer} value Update value - @param {Bool} useDefault - */ - setOffset = function(key, value, useDefault) { - if (useDefault == null) { - useDefault = false; - } - if (useDefault && (value == null)) { - value = defaults[key]; - } - if ((value != null) && !isNaN(+value)) { - return offset[key] = +value; - } - }; - if (attrs.macAffixTop != null) { - setOffset("top", $scope.$eval(attrs.macAffixTop), true); - $scope.$watch(attrs.macAffixTop, function(value) { - return setOffset("top", value); - }); - } - if (attrs.macAffixBottom != null) { - setOffset("bottom", $scope.$eval(attrs.macAffixBottom), true); - $scope.$watch(attrs.macAffixBottom, function(value) { - return setOffset("bottom", value); - }); - } - getPinnedOffset = function() { - var scrollHeight; - if (pinnedOffset != null) { - return pinnedOffset; - } - element.removeClass(defaults.classes).addClass("affix"); - scrollHeight = $document.height(); - pinnedOffset = scrollHeight - element.outerHeight() - offset.bottom; - return pinnedOffset; - }; - scrollEvent = function() { - var affix, curOffset, elementHeight, position, scrollHeight, scrollTop; - if (element[0].offsetHeight <= 0 && element[0].offsetWidth <= 0) { - return; - } - position = element.offset(); - scrollTop = windowEl.scrollTop(); - scrollHeight = $document.height(); - elementHeight = element.outerHeight(); - affix = (unpin != null) && scrollTop <= unpin ? false : (offset.bottom != null) && scrollTop > scrollHeight - elementHeight - offset.bottom ? "bottom" : (offset.top != null) && scrollTop <= offset.top ? "top" : false; - if (affix === lastAffix) { - return; - } - if (unpin) { - element.css("top", ""); - } - lastAffix = affix; - unpin = affix === "bottom" ? getPinnedOffset() : null; - element.removeClass(defaults.classes).addClass("affix" + (affix ? "-" + affix : "")); - if (affix === "bottom") { - curOffset = element.offset(); - element.css("top", unpin - curOffset.top); - } - return true; - }; - if (attrs.macAffixDisabled != null) { - disabled = $scope.$eval(attrs.macAffixDisabled) || defaults.disabled; - $scope.$watch(attrs.macAffixDisabled, function(value) { - var action; - if ((value == null) || value === disabled) { - return; - } - disabled = value; - action = value ? "unbind" : "bind"; - windowEl[action]("scroll", scrollEvent); - if (disabled) { - lastAffix = null; - unpin = null; - return element.css("top", "").removeClass(defaults.classes); - } else { - return scrollEvent(); - } - }); - } - if (!disabled) { - windowEl.bind("scroll", scrollEvent); - } - $scope.$on("refresh-mac-affix", function() { - var position; - return position = element.offset(); - }); - return $scope.$on("$destroy", function() { - return windowEl.unbind("scroll", scrollEvent); - }); - } - }; - } -]); - - -/* -@chalk overview -@name Autocomplete - -@description -A directive for providing suggestions while typing into the field - -Autocomplete allows for custom html templating in the dropdown and some properties are exposed on the local scope on each template instance, including: - -| Variable | Type | Details | -|-----------|---------|-----------------------------------------------------------------------------| -| `$index` | Number | iterator offset of the repeated element (0..length-1) | -| `$first` | Boolean | true if the repeated element is first in the iterator. | -| `$middle` | Boolean | true if the repeated element is between the first and last in the iterator. | -| `$last` | Boolean | true if the repeated element is last in the iterator. | -| `$even` | Boolean | true if the iterator position `$index` is even (otherwise false). | -| `$odd` | Boolean | true if the iterator position `$index` is odd (otherwise false). | -| `item` | Object | item object with `value` and `label` if label-key is set | - -To use custom templating - -``` - - {{item.label}} - -``` - -Template default to `{{item.label}}` if not defined - -@dependencies -- mac-menu - -@param {String} ng-model Assignable angular expression to data-bind to (required) -@param {String} mac-placeholder Placeholder text -@param {String} mac-autocomplete-url Url to fetch autocomplete dropdown list data. URL may include GET params e.g. "/users?nocache=1" -@param {Expression} mac-autocomplete-source Data to use. -Source support multiple types: -- Array: An array can be used for local data and there are two supported formats: - - An array of strings: ["Item1", "Item2"] - - An array of objects with mac-autocomplete-label key: [{name:"Item1"}, {name:"Item2"}] -- String: Using a string as the source is the same as passing the variable into mac-autocomplete-url -- Function: A callback when querying for data. The callback receive two arguments: - - {String} Value currently in the text input - - {Function} A response callback which expects a single argument, data to user. The data will be - populated on the menu and the menu will adjust accordingly -@param {Boolean} mac-autocomplete-disabled Boolean value if autocomplete should be disabled -@param {Function} mac-autocomplete-on-select Function called when user select on an item -- `selected` - {Object} The item selected -@param {Function} mac-autocomplete-on-success function called on success ajax request -- `data` - {Object} Data returned from the request -- `status` - {Number} The status code of the response -- `header` - {Object} Header of the response -@param {Function} mac-autocomplete-on-error Function called on ajax request error -- `data` - {Object} Data returned from the request -- `status` - {Number} The status code of the response -- `header` - {Object} Header of the response -@param {String} mac-autocomplete-label The label to display to the users (default "name") -@param {String} mac-autocomplete-query The query parameter on GET command (default "q") -@param {Integer} mac-autocomplete-delay Delay on fetching autocomplete data after keyup (default 800) - -@param {Expr} mac-menu-class Classes for mac-menu used by mac-autocomplete. For more info, check [ngClass](http://docs.angularjs.org/api/ng/directive/ngClass) - */ -angular.module("Mac").directive("macAutocomplete", [ - "$animate", "$compile", "$filter", "$http", "$parse", "$rootScope", "$timeout", "keys", function($animate, $compile, $filter, $http, $parse, $rootScope, $timeout, keys) { - return { - restrict: "EA", - template: "", - transclude: true, - replace: true, - require: "ngModel", - link: function($scope, element, attrs, ctrl, transclude) { - var $menuScope, appendMenu, autocompleteUrl, blurHandler, currentAutocomplete, delay, disabled, getData, inside, isMenuAppended, labelGetter, labelKey, menuEl, onError, onSelect, onSuccess, positionMenu, preventParser, queryData, queryKey, reset, source, timeoutId, updateItem; - labelKey = attrs.macAutocompleteLabel || "name"; - labelGetter = $parse(labelKey); - queryKey = attrs.macAutocompleteQuery || "q"; - delay = +(attrs.macAutocompleteDelay || 800); - inside = attrs.macAutocompleteInside != null; - autocompleteUrl = $parse(attrs.macAutocompleteUrl); - onSelect = $parse(attrs.macAutocompleteOnSelect); - onSuccess = $parse(attrs.macAutocompleteOnSuccess); - onError = $parse(attrs.macAutocompleteOnError); - source = $parse(attrs.macAutocompleteSource); - disabled = $parse(attrs.macAutocompleteDisabled); - currentAutocomplete = []; - timeoutId = null; - isMenuAppended = false; - preventParser = false; - $menuScope = $scope.$new(); - $menuScope.items = []; - $menuScope.index = 0; - $menuScope.select = function(index) { - var label, selected; - selected = currentAutocomplete[index]; - onSelect($scope, { - selected: selected - }); - label = $menuScope.items[index].label || ""; - preventParser = true; - if (attrs.ngModel != null) { - ctrl.$setViewValue(label); - ctrl.$render(); - } - return reset(); - }; - menuEl = angular.element(document.createElement("mac-menu")); - menuEl.attr({ - "ng-class": attrs.macMenuClass || null, - "mac-menu-items": "items", - "mac-menu-select": "select(index)", - "mac-menu-index": "index" - }); - transclude($menuScope, function(clone) { - return menuEl.append(clone); - }); - $compile(menuEl)($menuScope); - ctrl.$parsers.push(function(value) { - if (value && !disabled($scope) && !preventParser) { - if (timeoutId != null) { - $timeout.cancel(timeoutId); - } - if (delay > 0) { - timeoutId = $timeout(function() { - return queryData(value); - }, delay); - } else { - queryData(value); - } - } else { - reset(); - } - preventParser = false; - return value; - }); - - /* - @name blurHandler - @description - Create a blur handler function to make sure directive is unbinding - the correct handler - */ - blurHandler = function() { - return $scope.$apply(function() { - return reset(); - }); - }; - - /* - @function - @name appendMenu - @description - Adding menu to DOM - @param {Function} callback Callback after enter animation completes - */ - appendMenu = function(callback) { - if (!isMenuAppended) { - element.bind("blur", blurHandler); - menuEl.on('mousedown', function(event) { - return event.preventDefault(); - }); - } - isMenuAppended = true; - if (inside) { - return $animate.enter(menuEl, void 0, element, callback); - } else { - return $animate.enter(menuEl, angular.element(document.body), void 0, callback); - } - }; - - /* - @function - @name reset - @description - Resetting autocomplete - */ - reset = function() { - $animate.leave(menuEl, function() { - $menuScope.index = 0; - $menuScope.items.length = 0; - menuEl[0].style.top = ""; - menuEl[0].style.left = ""; - isMenuAppended = false; - return element.unbind("blur", blurHandler); - }); - }; - - /* - @function - @name positionMenu - @description - Calculate the style include position and width for menu - */ - positionMenu = function() { - var offset, parentElement, parentStyles; - parentElement = inside ? element[0] : document.body; - parentStyles = window.getComputedStyle(parentElement); - offset = element.offset(); - offset.left -= parseInt(parentStyles.marginLeft); - offset.top += element.outerHeight() - parseInt(parentStyles.marginTop); - offset.minWidth = element.outerWidth(); - return angular.forEach(offset, function(value, key) { - if (!isNaN(+value) && angular.isNumber(+value)) { - value = "" + value + "px"; - } - return menuEl[0].style[key] = value; - }); - }; - - /* - @function - @name updateItem - @description - Update list of items getting passed to menu - @param {Array} data Array of data - */ - updateItem = function(data) { - if ((data != null ? data.length : void 0) > 0) { - currentAutocomplete = data; - $menuScope.items = data.map(function(item) { - if (angular.isObject(item)) { - if (item.value == null) { - item.value = labelGetter(item) || ""; - } - if (item.label == null) { - item.label = labelGetter(item) || ""; - } - return item; - } else { - return { - label: item, - value: item - }; - } - }); - return appendMenu(positionMenu); - } else { - return reset(); - } - }; - - /* - @function - @name getData - @description - GET request to fetch data from server, update menu items and position - menu - @param {String} url URL to fetch data from - */ - getData = function(url, query) { - var options; - options = { - method: "GET", - url: url, - params: {} - }; - options.params[queryKey] = query; - return $http(options).success(function(data, status, headers, config) { - var dataList; - dataList = onSuccess($scope, { - data: data, - status: status, - headers: headers - }); - if (dataList == null) { - dataList = data.data; - } - return updateItem(dataList); - }).error(function(data, status, headers, config) { - return onError($scope, { - data: data, - status: status, - headers: headers - }); - }); - }; - - /* - @function - @name queryData - @description - Used for querying data - @param {String} query Search query - */ - queryData = function(query) { - var sourceData, url; - url = autocompleteUrl($scope); - if (url) { - return getData(url, query); - } else { - sourceData = source($scope); - if (angular.isArray(sourceData)) { - return updateItem($filter("filter")(sourceData, query)); - } else if (angular.isString(sourceData)) { - return getData(sourceData, query); - } else if (angular.isFunction(sourceData)) { - return sourceData(query, updateItem); - } - } - }; - element.bind("keydown", function(event) { - if ($menuScope.items.length === 0) { - return true; - } - switch (event.which) { - case keys.DOWN: - $scope.$apply(function() { - $menuScope.index = ($menuScope.index + 1) % $menuScope.items.length; - return event.preventDefault(); - }); - break; - case keys.UP: - $scope.$apply(function() { - $menuScope.index = ($menuScope.index ? $menuScope.index : $menuScope.items.length) - 1; - return event.preventDefault(); - }); - break; - case keys.ENTER: - $scope.$apply(function() { - $menuScope.select($menuScope.index); - return event.preventDefault(); - }); - break; - case keys.ESCAPE: - $scope.$apply(function() { - reset(); - return event.preventDefault(); - }); - } - return true; - }); - $scope.$on("$destroy", function() { - $menuScope.$destroy(); - return reset(); - }); - - /* - @event - @name reset-mac-autocomplete - @description - Event to reset autocomplete - */ - return $scope.$on("reset-mac-autocomplete", function() { - return reset(); - }); - } - }; - } -]); - - -/* -@chalk overview -@name Canvas Spinner - -@description -A directive for generating a canvas spinner -This spinner requires much less CPU/GPU resources than CSS spinner - -@param {Integer} mac-cspinner-width Width of each bar (default 2) -@param {Integer} mac-cspinner-height Height of each bar (default 5) -@param {Integer} mac-cpsinner-border Border radius (default 1) -@param {Integer} mac-cspinner-size Dimension of the whole spinner excluding padding (default 20) -@param {Integer} mac-cspinner-radius Center radius (default 4) -@param {Integer} mac-cspinner-bars Number of bars (default 10) -@param {Integer} mac-cspinner-padding Padding around the spinner (default 3) -@param {Integer} mac-cspinner-speed ms delay between each animation -@param {String} mac-cspinner-color Color of each bar -@param {Expr} mac-cspinner-spin Start or stop spinner - */ -angular.module("Mac").directive("macCspinner", [ - "$timeout", "util", function($timeout, util) { - return { - restrict: "E", - replace: "true", - template: "

", - compile: function(element, attrs) { - var canvas, canvasRadius, ctx, defaults, height, i, left, maxCanvasRadius, maxRadius, opacity, opts, prop, radius, ratio, rgb, rotation, showCtx, size, templateCanvas, top, width, _i, _j, _len, _ref, _ref1; - if (!window.HTMLCanvasElement) { - return console.log("Browser does not support canvas"); - } - defaults = { - width: 2, - height: 5, - border: 1, - radius: 4, - bars: 10, - padding: 3, - speed: 100, - color: "#2f3035", - size: 20 - }; - opts = util.extendAttributes("macCspinner", defaults, attrs); - if (attrs.macCspinnerSize != null) { - size = !isNaN(+attrs.macCspinnerSize) && +attrs.macCspinnerSize; - if (size) { - ratio = size / defaults.size; - _ref = ["width", "height", "border", "radius"]; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - prop = _ref[_i]; - opts[prop] = defaults[prop] * ratio; - } - } - } - width = opts.width; - height = opts.height; - radius = opts.border; - maxRadius = opts.radius + height; - maxCanvasRadius = Math.max(width, maxRadius); - canvasRadius = Math.ceil(Math.max(maxCanvasRadius, util.pyth(maxRadius, width / 2))); - canvasRadius += opts.padding; - templateCanvas = angular.element(""); - ctx = templateCanvas[0].getContext("2d"); - rotation = util.radian(360 / opts.bars); - ctx.translate(canvasRadius, canvasRadius); - top = -maxRadius; - left = -width / 2; - rgb = util.hex2rgb(opts.color); - for (i = _j = 0, _ref1 = opts.bars - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 0 <= _ref1 ? ++_j : --_j) { - opacity = 1 - (0.8 / opts.bars) * i; - ctx.fillStyle = "rgba(" + rgb.r + ", " + rgb.g + ", " + rgb.b + ", " + opacity + ")"; - ctx.beginPath(); - ctx.moveTo(left + radius, top); - ctx.arc(left + width - radius, top + radius, radius, util.radian(-90), util.radian(0), false); - ctx.arc(left + width - radius, top + height - radius, radius, util.radian(0), util.radian(90), false); - ctx.arc(left + radius, top + height - radius, radius, util.radian(90), util.radian(180), false); - ctx.arc(left + radius, top + radius, radius, util.radian(-180), util.radian(-90), false); - ctx.closePath(); - ctx.fill(); - ctx.rotate(rotation); - } - canvas = angular.element(""); - canvas.attr({ - width: canvasRadius * 2, - height: canvasRadius * 2 - }); - showCtx = canvas[0].getContext("2d"); - showCtx.translate(canvasRadius, canvasRadius); - element.append(canvas); - return function($scope, element, attrs) { - var intervalID, spinning, start, stop; - intervalID = null; - spinning = false; - stop = function() { - spinning = false; - if (intervalID != null) { - return $timeout.cancel(intervalID); - } - }; - start = function() { - var drawFn, rotate; - if (spinning) { - return; - } - spinning = true; - rotate = util.radian(360 / opts.bars); - return (drawFn = function(startCycle) { - if (startCycle == null) { - startCycle = false; - } - showCtx.clearRect(-canvasRadius, -canvasRadius, canvasRadius * 2, canvasRadius * 2); - showCtx.rotate(rotate); - showCtx.drawImage(templateCanvas[0], -canvasRadius, -canvasRadius); - if (spinning) { - if (!startCycle && element[0].offsetHeight <= 0 && element[0].offsetWidth <= 0) { - return stop(); - } - return intervalID = $timeout(drawFn, opts.speed, false); - } - })(true); - }; - if (attrs.macCspinnerSpin != null) { - $scope.$watch(attrs.macCspinnerSpin, function(value) { - if (value && !spinning) { - return start(); - } else { - return stop(); - } - }); - } else { - start(); - } - if (attrs.ngShow) { - $scope.$watch(attrs.ngShow, function(value) { - if (value) { - return start(); - } else { - return stop(); - } - }); - } else if (attrs.ngHide) { - $scope.$watch(attrs.ngHide, function(value) { - if (value) { - return stop(); - } else { - return start(); - } - }); - } - return $scope.$on("$destroy", function() { - return stop(); - }); - }; - } - }; - } -]); - - -/* -@chalk overview -@name Keydown events - -@description -A directive for handling certain keys on keydown event -Currently MacGyver supports enter, escape, space, left, up, right and down - -@param {Expression} mac-keydown-enter Expression to evaluate on hitting enter -@param {Expression} mac-keydown-escape Expression to evaluate on hitting escape -@param {Expression} mac-keydown-space Expression to evaluate on hitting space -@param {Expression} mac-keydown-left Expression to evaluate on hitting left -@param {Expression} mac-keydown-up Expression to evaluate on hitting up -@param {Expression} mac-keydown-right Expression to evaluate on hitting right -@param {Expression} mac-keydown-down Expression to evaluate on hitting down - */ -var key, _fn, _i, _len, _ref; - -_ref = ["Enter", "Escape", "Space", "Left", "Up", "Right", "Down"]; -_fn = function(key) { - return angular.module("Mac").directive("macKeydown" + key, [ - "$parse", "keys", function($parse, keys) { - return { - restrict: "A", - link: function(scope, element, attributes) { - var expression; - expression = $parse(attributes["macKeydown" + key]); - return element.bind("keydown", function($event) { - if ($event.which === keys["" + (key.toUpperCase())]) { - $event.preventDefault(); - return scope.$apply(function() { - return expression(scope, { - $event: $event - }); - }); - } - }); - } - }; - } - ]); -}; -for (_i = 0, _len = _ref.length; _i < _len; _i++) { - key = _ref[_i]; - _fn(key); -} - - -/* -@chalk overview -@name Pause Typing - -@description -macPauseTyping directive allow user to specify custom behavior after user stops typing for more than (delay) milliseconds - -@param {Expression} mac-pause-typing Expression to evaluate after delay -@param {Expression} mac-pause-typing-delay Delay value to evaluate expression (default 800) - */ -angular.module("Mac").directive("macPauseTyping", [ - "$parse", "$timeout", function($parse, $timeout) { - return { - restrict: "A", - link: function(scope, element, attributes) { - var delay, expression, keyupTimer; - expression = $parse(attributes["macPauseTyping"]); - delay = scope.$eval(attributes["macPauseTypingDelay"]) || 800; - keyupTimer = null; - return element.bind("keyup", function($event) { - if (keyupTimer != null) { - $timeout.cancel(keyupTimer); - } - return keyupTimer = $timeout(function() { - return expression(scope, { - $event: $event - }); - }, delay); - }); - } - }; - } -]); - - -/* -@chalk overview -@name Windows Resize - -@description -Binding custom behavior on window resize event - -@param {Expression} mac-window-resize Expression to evaluate on window resize - */ -angular.module("Mac").directive("macWindowResize", [ - "$parse", "$window", function($parse, $window) { - return { - restrict: "A", - link: function($scope, element, attrs) { - var handler; - handler = function($event) { - var callbackFn; - callbackFn = $parse(attrs.macWindowResize); - $scope.$apply(function() { - return callbackFn($scope, { - $event: $event - }); - }); - return true; - }; - angular.element($window).bind("resize", handler); - return $scope.$on("destroy", function() { - return angular.element($window).unbind("resize", handler); - }); - } - }; - } -]); - - -/* -@chalk overview -@name mac-focus-on-event - -@description -Scroll window to the element and focus on the element - -@param {String} mac-focus-on-event Event to focus on element -@param {Boolean} mac-focus-on-event-scroll Scroll to element location or not - */ -angular.module("Mac").directive("macFocusOnEvent", [ - "$timeout", function($timeout) { - return function(scope, element, attributes) { - return scope.$on(attributes.macFocusOnEvent, function() { - return $timeout(function() { - var x, y; - element.focus(); - if (attributes.macFocusOnEventScroll) { - x = window.scrollX; - y = window.scrollY; - return window.scrollTo(x, y); - } - }, 0, false); - }); - }; - } -]); - -angular.module("Mac").factory("keys", function() { - return { - CANCEL: 3, - HELP: 6, - BACKSPACE: 8, - TAB: 9, - CLEAR: 12, - ENTER: 13, - RETURN: 13, - SHIFT: 16, - CONTROL: 17, - ALT: 18, - PAUSE: 19, - CAPS_LOCK: 20, - ESCAPE: 27, - SPACE: 32, - PAGE_UP: 33, - PAGE_DOWN: 34, - END: 35, - HOME: 36, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - PRINT_SCREEN: 44, - INSERT: 45, - DELETE: 46, - ZERO: 48, - ONE: 49, - TWO: 50, - THREE: 51, - FOUR: 52, - FIVE: 53, - SIX: 54, - SEVEN: 55, - EIGHT: 56, - NINE: 57, - SEMICOLON: 59, - EQUALS: 61, - COMMAND: 91, - A: 65, - B: 66, - C: 67, - D: 68, - E: 69, - F: 70, - G: 71, - H: 72, - I: 73, - J: 74, - K: 75, - L: 76, - M: 77, - N: 78, - O: 79, - P: 80, - Q: 81, - R: 82, - S: 83, - T: 84, - U: 85, - V: 86, - W: 87, - X: 88, - Y: 89, - Z: 90, - CONTEXT_MENU: 93, - NUMPAD0: 96, - NUMPAD1: 97, - NUMPAD2: 98, - NUMPAD3: 99, - NUMPAD4: 100, - NUMPAD5: 101, - NUMPAD6: 102, - NUMPAD7: 103, - NUMPAD8: 104, - NUMPAD9: 105, - MULTIPLY: 106, - ADD: 107, - SEPARATOR: 108, - SUBTRACT: 109, - DECIMAL: 110, - DIVIDE: 111, - F1: 112, - F2: 113, - F3: 114, - F4: 115, - F5: 116, - F6: 117, - F7: 118, - F8: 119, - F9: 120, - F10: 121, - F11: 122, - F12: 123, - F13: 124, - F14: 125, - F15: 126, - F16: 127, - F17: 128, - F18: 129, - F19: 130, - F20: 131, - F21: 132, - F22: 133, - F23: 134, - F24: 135, - NUM_LOCK: 144, - SCROLL_LOCK: 145, - COMMA: 188, - PERIOD: 190, - SLASH: 191, - BACK_QUOTE: 192, - OPEN_BRACKET: 219, - BACK_SLASH: 220, - CLOSE_BRACKET: 221, - QUOTE: 222, - META: 224 - }; -}); - - -/* -@chalk overview -@name Menu - -@description -A directive for creating a menu with multiple items - -Menu allows for custom html templating for each item. - -Since macMenu is using ngRepeat, some ngRepeat properties along with `item` are exposed on the local scope of each template instance, including: - -| Variable | Type | Details | -|-----------|---------|-----------------------------------------------------------------------------| -| `$index` | Number | iterator offset of the repeated element (0..length-1) | -| `$first` | Boolean | true if the repeated element is first in the iterator. | -| `$middle` | Boolean | true if the repeated element is between the first and last in the iterator. | -| `$last` | Boolean | true if the repeated element is last in the iterator. | -| `$even` | Boolean | true if the iterator position `$index` is even (otherwise false). | -| `$odd` | Boolean | true if the iterator position `$index` is odd (otherwise false). | -| `item` | Object | item object | - -To use custom templating -``` - - {{item.label}} - -``` - -Template default to `{{item.label}}` if not defined - -@param {Expression} mac-menu-items List of items to display in the menu - Each item should have a `label` key as display text -@param {Function} mac-menu-select Callback on select -- `index` - {Integer} Item index -@param {Object} mac-menu-style Styles apply to the menu -@param {Expression} mac-menu-index Index of selected item - */ -angular.module("Mac").directive("macMenu", [ - function() { - return { - restrict: "EA", - replace: true, - template: "
", - transclude: true, - controller: angular.noop, - scope: { - items: "=macMenuItems", - style: "=macMenuStyle", - select: "&macMenuSelect", - pIndex: "=macMenuIndex" - }, - link: function($scope, element, attrs, ctrls) { - $scope.selectItem = function(index) { - return $scope.select({ - index: index - }); - }; - $scope.setIndex = function(index) { - $scope.index = index; - if (attrs.macMenuIndex != null) { - return $scope.pIndex = parseInt(index); - } - }; - if (attrs.macMenuIndex != null) { - $scope.$watch("pIndex", function(value) { - return $scope.index = parseInt(value); - }); - } - return $scope.$watch("items.length", function(value) { - if (!!value) { - return attrs.$addClass("visible"); - } else { - return attrs.$removeClass("visible"); - } - }); - } - }; - } -]).directive("macMenuTransclude", [ - "$compile", function($compile) { - return { - link: function($scope, element, attrs, ctrls, transclude) { - return transclude($scope, function(clone) { - element.empty(); - if (clone.length === 0) { - clone = $compile("{{item.label}}")($scope); - } - return element.append(clone); - }); - } - }; - } -]); - - -/* -@chalk overview -@name mac-modal (element) -@description -Element directive to define the modal dialog. Modal content is transcluded into a -modal template - -@param {Boolean} mac-modal-keyboard Allow closing modal with keyboard (default false) -@param {Boolean} mac-modal-overlay-close Allow closing modal when clicking on overlay (default false) -@param {Boolean} mac-modal-resize Allow modal to resize on window resize event (default true) -@param {Integer} mac-modal-topOffset Top offset when the modal is larger than window height (default 20) -@param {Expr} mac-modal-open Callback when the modal is opened -@param {Expr} mac-modal-before-show Callback before showing the modal -@param {Expr} mac-modal-after-show Callback when modal is visible with CSS transitions completed -@param {Expr} mac-modal-before-hide Callback before hiding the modal -@param {Expr} mac-modal-after-hide Callback when modal is hidden from the user with CSS transitions completed -@param {Boolean} mac-modal-position Calculate size and position with JS (default true) - */ -angular.module("Mac").directive("macModal", [ - "$parse", "modal", "modalViews", "util", function($parse, modal, modalViews, util) { - return { - restrict: "E", - template: modal.modalTemplate, - replace: true, - transclude: true, - link: function($scope, element, attrs, controller, transclude) { - var callback, key, opts, regId, registerModal, _i, _len, _ref; - transclude($scope, function(clone) { - return angular.element(element[0].getElementsByClassName("mac-modal-content-wrapper")).replaceWith(clone); - }); - opts = util.extendAttributes("macModal", modalViews.defaults, attrs); - regId = null; - if (opts.overlayClose) { - element.on("click", function($event) { - if (angular.element($event.target).hasClass("mac-modal-overlay")) { - return $scope.$apply(function() { - return modal.hide(); - }); - } - }); - } - _ref = ["beforeShow", "afterShow", "beforeHide", "afterHide", "open"]; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - callback = _ref[_i]; - key = "macModal" + (util.capitalize(callback)); - opts[callback] = $parse(attrs[key]) || angular.noop; - } - registerModal = function(id) { - if ((id != null) && id) { - regId = id; - return modal.register(id, element, opts); - } - }; - if (attrs.id) { - registerModal(attrs.id); - } else { - attrs.$observe("macModal", function(id) { - return registerModal(id); - }); - } - return $scope.$on("$destroy", function() { - if (regId) { - return modal.unregister(regId); - } - }); - } - }; - } -]).directive("macModal", [ - "$parse", "modal", function($parse, modal) { - return { - restrict: "A", - link: function($scope, element, attrs) { - if (!attrs.macModal) { - return; - } - element.bind("click", function() { - return $scope.$apply(function() { - var data; - data = $parse(attrs.macModalData)($scope) || {}; - return modal.show(attrs.macModal, { - data: data, - scope: $scope - }); - }); - }); - } - }; - } -]).directive("macModalClose", [ - "modal", function(modal) { - return { - restrict: "A", - link: function($scope, element, attrs) { - return element.bind("click", function() { - return $scope.$apply(function() { - return modal.hide(); - }); - }); - } - }; - } -]); - - -/* -@chalk overview -@name Placeholder - -@description -Dynamically fill out the placeholder text of input - -@param {String} mac-placeholder Variable that contains the placeholder text - */ -angular.module("Mac").directive("macPlaceholder", function() { - return { - restrict: "A", - link: function($scope, element, attrs) { - return $scope.$watch(attrs.macPlaceholder, function(value) { - return attrs.$set("placeholder", value); - }); - } - }; -}); - - -/* -@chalk -@name mac-popover (attribute) -@description -Mac popover trigger directive. Without using mac-popover-child-popover, the last -popover will be closed automatically - -@param {String} mac-popover ID of the popover to show -@param {Boolean} mac-popover-fixed Determine if the popover is fixed -@param {Boolean} mac-popover-child-popover If the popover is child of another popover (default false) -@param {Integer} mac-popover-offset-x Extra x offset (default 0) -@param {Integer} mac-popover-offset-y Extra y offset (default 0) -@param {String} mac-popover-trigger Trigger option, click | hover | focus (default click) -- click: Popover only opens when user click on trigger -- hover: Popover shows when user hover on trigger -- focus: Popover shows when focus on input element -@param {String} mac-popover-exclude CSV of popover id that can't be shown at the same time - */ -var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - -angular.module("Mac").directive("macPopover", [ - "$timeout", "popover", "util", "popoverViews", function($timeout, popover, util, popoverViews) { - return { - restrict: "A", - link: function(scope, element, attrs) { - var clearDelays, closeDelayId, delayId, exclude, excludeList, hide, options, show; - options = util.extendAttributes("macPopover", popoverViews.defaults, attrs); - exclude = attrs.macPopoverExclude || ""; - excludeList = exclude ? exclude.split(",") : []; - delayId = null; - closeDelayId = null; - clearDelays = function() { - if (delayId != null) { - $timeout.cancel(delayId); - } - if (closeDelayId != null) { - return $timeout.cancel(closeDelayId); - } - }; - show = function(id, delay) { - if (delay == null) { - delay = 0; - } - clearDelays(); - delayId = $timeout(function() { - var last, _ref; - last = popover.last(); - if ((last != null) && (!excludeList.length || (_ref = last.id, __indexOf.call(excludeList, _ref) >= 0) || last.id === id)) { - popover.hide(); - if (element[0] === last.element[0]) { - return true; - } - } - options.scope = scope; - return popover.show(id, element, options); - }, delay); - return true; - }; - hide = function(element, delay) { - if (delay == null) { - delay = 0; - } - clearDelays(); - return closeDelayId = $timeout(function() { - return popover.hide(element); - }, delay); - }; - return attrs.$observe("macPopover", function(id) { - var hideEvent, showEvent; - if (!id) { - return; - } - if (options.trigger === "click") { - return element.bind("click", function() { - return show(id, 0); - }); - } else { - showEvent = options.trigger === "focus" ? "focusin" : "mouseenter"; - hideEvent = options.trigger === "focus" ? "focusout" : "mouseleave"; - element.bind(showEvent, function() { - return show(id, 400); - }); - return element.bind(hideEvent, function() { - return hide(element, 500); - }); - } - }); - } - }; - } -]).directive("macPopover", [ - "popover", "popoverViews", "util", function(popover, popoverViews, util) { - return { - restrict: "E", - compile: function(element, attrs) { - var opts; - if (!attrs.id) { - throw Error("macPopover: Missing id"); - } - opts = util.extendAttributes("macPopover", popoverViews.popoverDefaults, attrs); - angular.extend(opts, { - template: element.html() - }); - return function($scope, element, attrs) { - return attrs.$observe("id", function(value) { - popover.register(value, opts); - return element.replaceWith(document.createComment("macPopover: " + attrs.id)); - }); - }; - } - }; - } -]).directive("macPopoverFillContent", [ - "$compile", function($compile) { - return { - restrict: "A", - link: function($scope, element, attrs) { - element.html($scope.macPopoverTemplate); - return $compile(element.contents())($scope); - } - }; - } -]); - - -/* -@chalk overview -@name mac-scroll-spy - -@description -Element to spy scroll event on - -@param {Integer} mac-scroll-spy-offset Top offset when calculating scroll position - */ -angular.module("Mac").directive("macScrollSpy", [ - "$window", "scrollSpy", "scrollSpyDefaults", "util", function($window, scrollSpy, defaults, util) { - return { - link: function($scope, element, attrs) { - var options, spyElement; - options = util.extendAttributes("macScrollSpy", defaults, attrs); - spyElement = element[0].tagName === "BODY" ? angular.element($window) : element; - return spyElement.bind("scroll", function($event) { - var anchors, i, maxScroll, scrollHeight, scrollTop, _i, _ref; - scrollTop = spyElement.scrollTop() + options.offset; - scrollHeight = this.scrollHeight || element[0].scrollHeight; - maxScroll = scrollHeight - spyElement.height(); - if (!scrollSpy.registered.length) { - return true; - } - if (scrollTop >= maxScroll) { - return scrollSpy.setActive(scrollSpy.last()); - } - for (i = _i = 0, _ref = scrollSpy.registered.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { - anchors = scrollSpy.registered; - if (scrollSpy.active.id !== anchors[i].id && scrollTop >= anchors[i].top && (!anchors[i + 1] || scrollTop <= anchors[i + 1].top)) { - $scope.$apply(function() { - return scrollSpy.setActive(anchors[i]); - }); - return true; - } - } - }); - } - }; - } -]).directive("macScrollSpyAnchor", [ - "scrollSpy", function(scrollSpy) { - return { - link: function($scope, element, attrs) { - var id, observeKey, registered, registering; - id = attrs.id || attrs.macScrollSpyAnchor; - registered = false; - if (!id) { - throw new Error("Missing scroll spy anchor id"); - } - registering = function() { - scrollSpy.register(id, element); - if (!registered) { - $scope.$on("$destroy", function() { - return scrollSpy.unregister(id); - }); - } - return registered = true; - }; - $scope.$on("refresh-scroll-spy", registering); - if (/{{(.*)}}/.test(id)) { - observeKey = attrs.id ? "id" : "macScrollSpyAnchor"; - return attrs.$observe(observeKey, function(value) { - if ((value != null) && value) { - id = value; - return registering(); - } - }); - } else { - return registering(); - } - } - }; - } -]).directive("macScrollSpyTarget", [ - "scrollSpy", function(scrollSpy) { - return { - link: function($scope, element, attrs) { - var highlightClass, register, registered, target; - target = attrs.macScrollSpyTarget; - highlightClass = attrs.macScrollSpyTargetClass || "active"; - registered = false; - if (!target) { - throw new Error("Missing scroll spy target name"); - } - register = function(id) { - var callback; - if (!id) { - return; - } - callback = function(active) { - var action; - action = id === active.id ? "addClass" : "removeClass"; - return element[action](highlightClass); - }; - if (scrollSpy.active != null) { - callback(scrollSpy.active); - } - if (!registered) { - scrollSpy.addListener(callback); - return $scope.$on("$destroy", function() { - return scrollSpy.removeListener(callback); - }); - } - }; - if (/{{(.*)}}/.test(target)) { - return attrs.$observe("macScrollSpyTarget", function(value) { - return register(value); - }); - } else { - return register(target); - } - } - }; - } -]); - - -/* -@chalk overview -@name Spinner - -@description -A directive for generating spinner - -@param {Integer} mac-spinner-size The size of the spinner (default 16) -@param {Integer} mac-spinner-z-index The z-index (default inherit) -@param {String} mac-spinner-color Color of all the bars (default #2f3035) - */ -angular.module("Mac").directive("macSpinner", [ - "util", function(util) { - return { - restrict: "E", - replace: true, - template: "
", - compile: function(element, attrs) { - var animateCss, bar, degree, delay, i, prefixes, styl, transformCss, vendor, _i; - prefixes = ["webkit", "Moz", "ms", "O"]; - vendor = function(el, name) { - var prefix, _i, _len; - name = util.capitalize(name); - for (_i = 0, _len = prefixes.length; _i < _len; _i++) { - prefix = prefixes[_i]; - if (el.style[prefix + name] != null) { - return prefix + name; - } - } - return name; - }; - animateCss = vendor(element[0], "animation"); - transformCss = vendor(element[0], "transform"); - for (i = _i = 0; _i <= 9; i = ++_i) { - delay = i * 0.1 - 1 + (!i); - degree = i * 36; - styl = {}; - bar = angular.element("
"); - styl[animateCss] = "fade 1s linear infinite " + delay + "s"; - styl[transformCss] = "rotate(" + degree + "deg) translate(0, 130%)"; - bar.css(styl); - element.append(bar); - } - return function($scope, element, attrs) { - var bars, defaults, setSpinnerSize; - defaults = { - size: 16, - zIndex: "inherit", - color: "#2f3035" - }; - bars = angular.element(element[0].getElementsByClassName("bar")); - setSpinnerSize = function(size) { - bars.css({ - height: size * 0.32 + "px", - left: size * 0.445 + "px", - top: size * 0.37 + "px", - width: size * 0.13 + "px", - borderRadius: size * 0.32 * 2 + "px", - position: "absolute" - }); - if (!isNaN(+size) && angular.isNumber(+size)) { - size = "" + size + "px"; - } - return element.css({ - height: size, - width: size - }); - }; - if (attrs.macSpinnerSize != null) { - attrs.$observe("macSpinnerSize", function(value) { - if ((value != null) && value) { - return setSpinnerSize(value); - } - }); - } else { - setSpinnerSize(defaults.size); - } - attrs.$observe("macSpinnerZIndex", function(value) { - if ((value != null) && value) { - return element.css("z-index", value); - } - }); - if (attrs.macSpinnerColor != null) { - return attrs.$observe("macSpinnerColor", function(value) { - if ((value != null) && value) { - return bars.css("background", value); - } - }); - } else { - return bars.css("background", defaults.color); - } - }; - } - }; - } -]); - - -/* -@chalk overview -@name Tag Autocomplete - -@description -A directive for generating tag input with autocomplete support on text input. -Tag autocomplete has priority 800 - -@dependencies -- mac-autocomplete -- mac-menu - -@param {String} mac-tag-autocomplete-url Url to fetch autocomplete dropdown list data. -mac-tag-autocomplete-url and mac-tag-autocomplete-source cannot be used together. Url -will always take priority over mac-tag-autocomplete-source. -@param {String} mac-tag-autocomplete-source Data to use. -Source support multiple types: -- Array: An array can be used for local data and there are two supported formats: - - An array of strings: ["Item1", "Item2"] - - An array of objects with mac-autocomplete-label key: [{name:"Item1"}, {name:"Item2"}] -- String: Using a string as the source is the same as passing the variable into mac-autocomplete-url -- Function: A callback when querying for data. The callback receive two arguments: - - {String} Value currently in the text input - - {Function} A response callback which expects a single argument, data to user. The data will be - populated on the menu and the menu will adjust accordingly -@param {String} mac-tag-autocomplete-value The value to be sent back upon selection (default "id") -@param {String} mac-tag-autocomplete-label The label to display to the users (default "name") -@param {Expr} mac-tag-autocomplete-model Model for autocomplete -@param {Array} mac-tag-autocomplete-selected The list of elements selected by the user (required) -@param {String} mac-tag-autocomplete-query The query parameter on GET command (defualt "q") -@param {Integer} mac-tag-autocomplete-delay Time delayed on fetching autocomplete data after keyup (default 800) -@param {String} mac-tag-autocomplete-placeholder Placeholder text of the text input (default "") -@param {Boolean} mac-tag-autocomplete-disabled If autocomplete is enabled or disabled (default false) -@param {Expr} mac-tag-autocomplete-on-enter When autocomplete is disabled, this function is called on enter, Should return either string, object or boolean. If false, item is not added -- `item` - {String} User input -@param {String} mac-tag-autocomplete-events A CSV list of events to attach functions to -@param {Expr} mac-tag-autocomplete-on- Function to be called when specified event is fired -- `event` - {Object} jQuery event -- `value` - {String} Value in the input text - -@param {Event} mac-tag-autocomplete-clear-input $broadcast message; clears text input when received - */ -var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - -angular.module("Mac").directive("macTagAutocomplete", [ - "$parse", "$timeout", "keys", "util", function($parse, $timeout, keys, util) { - return { - restrict: "E", - template: "
  • ×
    {{getTagLabel(tag)}}
", - replace: true, - priority: 800, - scope: { - url: "=macTagAutocompleteUrl", - placeholder: "=macTagAutocompletePlaceholder", - selected: "=macTagAutocompleteSelected", - source: "=macTagAutocompleteSource", - disabled: "=macTagAutocompleteDisabled", - model: "=macTagAutocompleteModel", - onEnter: "&macTagAutocompleteOnEnter", - onKeydown: "&macTagAutocompleteOnKeydown" - }, - compile: function(element, attrs) { - var attrsObject, delay, labelGetter, labelKey, queryKey, textInput, useSource, valueGetter, valueKey; - valueKey = attrs.macTagAutocompleteValue; - if (valueKey == null) { - valueKey = "id"; - } - valueGetter = $parse(valueKey); - labelKey = attrs.macTagAutocompleteLabel; - if (labelKey == null) { - labelKey = "name"; - } - labelGetter = $parse(labelKey); - queryKey = attrs.macTagAutocompleteQuery || "q"; - delay = +attrs.macTagAutocompleteDelay || 800; - useSource = false; - textInput = angular.element(element[0].getElementsByClassName("mac-autocomplete")); - attrsObject = { - "mac-autocomplete-label": labelKey, - "mac-autocomplete-query": queryKey, - "mac-autocomplete-delay": delay - }; - if (attrs.macTagAutocompleteUrl != null) { - attrsObject["mac-autocomplete-url"] = "url"; - } else if (useSource = attrs.macTagAutocompleteSource != null) { - attrsObject["mac-autocomplete-source"] = "autocompleteSource"; - } - textInput.attr(attrsObject); - return function($scope, element, attrs) { - var updateAutocompleteSource, watchFn; - $scope.textInput = ""; - $scope.autocompleteSource = angular.isArray($scope.source) ? [] : $scope.source; - if (attrs.macTagAutocompleteModel != null) { - $scope.$watch("textInput", function(value) { - return $scope.model = value; - }); - $scope.$watch("model", function(value) { - return $scope.textInput = value; - }); - } - $scope.focusTextInput = function() { - var textInputDOM; - textInputDOM = element[0].getElementsByClassName("mac-autocomplete"); - return textInputDOM[0].focus(); - }; - $scope.getTagLabel = function(tag) { - if (labelKey) { - return labelGetter(tag); - } else { - return tag; - } - }; - $timeout(function() { - var capitalized, eventFn, events, name, _i, _len, _ref, _results; - if ((events = attrs.macTagAutocompleteEvents)) { - textInput = angular.element(element[0].getElementsByClassName("text-input")); - _ref = events.split(","); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - name = util.trim(name); - capitalized = util.capitalize(name); - eventFn = attrs["macTagAutocompleteOn" + capitalized]; - if (!(eventFn && name !== "keydown")) { - continue; - } - _results.push((function(name, eventFn) { - return textInput.bind(name, function($event) { - var expression; - expression = $parse(eventFn); - return $scope.$apply(function() { - return expression($scope.$parent, { - $event: $event, - item: $scope.textInput - }); - }); - }); - })(name, eventFn)); - } - return _results; - } - }, 0, false); - updateAutocompleteSource = function() { - var difference, item, selectedValues, sourceValues, _ref; - $scope.autocompletePlaceholder = ((_ref = $scope.selected) != null ? _ref.length : void 0) ? "" : $scope.placeholder; - if (!(useSource && angular.isArray($scope.source))) { - $scope.autocompleteSource = $scope.source; - return; - } - sourceValues = (function() { - var _i, _len, _ref1, _results; - _ref1 = $scope.source || []; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - item = _ref1[_i]; - _results.push(valueGetter(item)); - } - return _results; - })(); - selectedValues = (function() { - var _i, _len, _ref1, _results; - _ref1 = $scope.selected || []; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - item = _ref1[_i]; - _results.push(valueGetter(item)); - } - return _results; - })(); - difference = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = sourceValues.length; _i < _len; _i++) { - item = sourceValues[_i]; - if (__indexOf.call(selectedValues, item) < 0) { - _results.push(item); - } - } - return _results; - })(); - return $scope.autocompleteSource = (function() { - var _i, _len, _ref1, _ref2, _results; - _ref1 = $scope.source || []; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - item = _ref1[_i]; - if (_ref2 = valueGetter(item), __indexOf.call(difference, _ref2) >= 0) { - _results.push(item); - } - } - return _results; - })(); - }; - if (useSource) { - watchFn = angular.isArray($scope.source) ? "$watchCollection" : "$watch"; - $scope[watchFn]("source", updateAutocompleteSource); - } - $scope.$watchCollection("selected", updateAutocompleteSource); - $scope.onKeyDown = function($event) { - var stroke, _base; - stroke = $event.which || $event.keyCode; - switch (stroke) { - case keys.BACKSPACE: - if (!$scope.textInput) { - if (typeof (_base = $scope.selected).pop === "function") { - _base.pop(); - } - } - break; - case keys.ENTER: - if ($scope.textInput.length > 0 && $scope.disabled) { - $scope.onSelect($scope.textInput); - } - } - if (attrs.macTagAutocompleteOnKeydown != null) { - if (typeof $scope.onKeydown === "function") { - $scope.onKeydown({ - $event: $event, - value: $scope.textInput - }); - } - } - return true; - }; - $scope.onSuccess = function(data) { - var existingValues, item; - existingValues = (function() { - var _i, _len, _ref, _results; - _ref = $scope.selected || []; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - item = _ref[_i]; - _results.push(valueGetter(item)); - } - return _results; - })(); - return (function() { - var _i, _len, _ref, _ref1, _results; - _ref = data.data; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - item = _ref[_i]; - if (_ref1 = valueGetter(item) || item, __indexOf.call(existingValues, _ref1) < 0) { - _results.push(item); - } - } - return _results; - })(); - }; - $scope.onSelect = function(item) { - if (attrs.macTagAutocompleteOnEnter != null) { - item = $scope.onEnter({ - item: item - }); - } - if (item) { - $scope.selected.push(item); - } - return $timeout(function() { - return $scope.textInput = ""; - }, 0); - }; - return $scope.$on("mac-tag-autocomplete-clear-input", function() { - return $scope.textInput = ""; - }); - }; - } - }; - } -]); - - -/* -@chalk overview -@name Time -@description -A directive for creating a time input field. Time input can use any `ng-` attributes support by text input type. - -@param {String} ng-model Assignable angular expression to data-bind to -Clearing model by setting it to null or '' will set model back to default value -@param {String} name Property name of the form under which the control is published -@param {String} required Adds `required` validation error key if the value is not entered. -@param {String} ng-required Adds `required` attribute and `required` validation constraint to - the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of - `required` when you want to data-bind to the `required` attribute. -@param {String} ng-pattern Sets `pattern` validation error key if the value does not match the - RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for - patterns defined as scope expressions. -@param {String} ng-change Angular expression to be executed when input changes due to user interaction with the input element. -@param {String} ng-disabled Enable or disable time input - -@param {String} mac-time-default If model is undefined, use this as the starting value (default 12:00 PM) - */ -angular.module("Mac").directive("macTime", [ - "$filter", "$timeout", "keys", "util", function($filter, $timeout, keys, util) { - var defaults; - defaults = { - "default": "12:00 AM" - }; - return { - restrict: "E", - require: "ngModel", - replace: true, - template: "", - link: function($scope, element, attrs, ngModelCtrl) { - var getSelection, incrementHour, incrementMinute, initializeTime, opts, selectHours, selectMeridian, selectMinutes, selectNextSection, selectPreviousSection, selectRange, setMeridian, time, timeValidator, toggleMeridian, updateInput, updateTime; - opts = util.extendAttributes("macTime", defaults, attrs); - time = null; - if (!attrs.placeholder) { - attrs.$set("placeholder", "--:--"); - } - timeValidator = function(value) { - if (!value || util.timeRegex.exec(value)) { - ngModelCtrl.$setValidity("time", true); - return value; - } else { - ngModelCtrl.$setValidity("time", false); - return void 0; - } - }; - ngModelCtrl.$formatters.push(timeValidator); - ngModelCtrl.$parsers.push(timeValidator); - (initializeTime = function() { - var currentDate; - currentDate = new Date().toDateString(); - time = new Date(currentDate + " " + opts["default"]); - if (isNaN(time.getTime())) { - return time = new Date(currentDate + " " + defaults["default"]); - } - })(); - getSelection = function() { - var start; - start = element[0].selectionStart; - switch (false) { - case !((0 <= start && start < 3)): - return "hour"; - case !((3 <= start && start < 6)): - return "minute"; - case !((6 <= start && start < 9)): - return "meridian"; - } - }; - selectRange = function(start, end) { - return $timeout(function() { - return element[0].setSelectionRange(start, end); - }, 0, false); - }; - selectHours = function() { - return selectRange(0, 2); - }; - selectMinutes = function() { - return selectRange(3, 5); - }; - selectMeridian = function() { - return selectRange(6, 8); - }; - selectNextSection = function() { - switch (getSelection()) { - case "hour": - return selectMinutes(); - case "minute": - case "meridian": - return selectMeridian(); - } - }; - selectPreviousSection = function() { - switch (getSelection()) { - case "hour": - case "minute": - return selectHours(); - case "meridian": - return selectMinutes(); - } - }; - setMeridian = function(meridian) { - var hours; - hours = time.getHours(); - if (hours >= 12 && meridian === "AM") { - hours -= 12; - } - if (hours < 12 && meridian === "PM") { - hours += 12; - } - return time.setHours(hours); - }; - toggleMeridian = function() { - var hours; - hours = time.getHours(); - return time.setHours((hours + 12) % 24); - }; - incrementHour = function(change) { - return time.setHours(time.getHours() + change); - }; - incrementMinute = function(change) { - return time.setMinutes(time.getMinutes() + change); - }; - updateInput = function() { - var displayTime; - displayTime = $filter("date")(time.getTime(), "hh:mm a"); - if (displayTime !== ngModelCtrl.$viewValue) { - ngModelCtrl.$setViewValue(displayTime); - return ngModelCtrl.$render(); - } - }; - updateTime = function() { - var hours, meridian, minutes, timeMatch; - if (timeMatch = util.timeRegex.exec(ngModelCtrl.$modelValue)) { - hours = +timeMatch[1]; - minutes = +timeMatch[2]; - meridian = timeMatch[3]; - if (meridian === "PM" && hours !== 12) { - hours += 12; - } - if (meridian === "AM" && hours === 12) { - hours = 0; - } - return time.setHours(hours, minutes); - } - }; - element.on('blur', function(event) { - return $scope.$apply(function() { - return updateInput(); - }); - }); - element.on('click', function(event) { - return $scope.$apply(function() { - updateTime(); - updateInput(); - switch (getSelection()) { - case "hour": - return selectHours(); - case "minute": - return selectMinutes(); - case "meridian": - return selectMeridian(); - } - }); - }); - element.on('keydown', function(event) { - var key; - key = event.which; - if (key !== keys.UP && key !== keys.DOWN && key !== keys.LEFT && key !== keys.RIGHT && key !== keys.A && key !== keys.P) { - return true; - } - event.preventDefault(); - return $scope.$apply(function() { - var change, meridianSelected; - switch (key) { - case keys.UP: - case keys.DOWN: - change = key === keys.UP ? 1 : -1; - switch (getSelection()) { - case "hour": - incrementHour(change); - selectHours(); - break; - case "minute": - incrementMinute(change); - selectMinutes(); - break; - case "meridian": - toggleMeridian(); - selectMeridian(); - } - return updateInput(); - case keys.LEFT: - case keys.RIGHT: - switch (key) { - case keys.LEFT: - selectPreviousSection(); - break; - case keys.RIGHT: - selectNextSection(); - } - return updateInput(); - case keys.A: - case keys.P: - meridianSelected = getSelection() === "meridian"; - switch (false) { - case !(meridianSelected && key === keys.A): - setMeridian("AM"); - break; - case !(meridianSelected && key === keys.P): - setMeridian("PM"); - } - updateInput(); - return selectMeridian(); - } - }); - }); - return element.on('keyup', function(event) { - var key; - key = event.which; - if (!((keys.NUMPAD0 <= key && key <= keys.NUMPAD9) || (keys.ZERO <= key && key <= keys.NINE))) { - event.preventDefault(); - } - return $scope.$apply(function() { - return updateTime(); - }); - }); - } - }; - } -]); - - -/* -@chalk overview -@name Tooltip - -@description -Tooltip directive - -@param {String} mac-tooltip Text to show in tooltip -@param {String} mac-tooltip-direction Direction of tooltip (default 'top') -@param {String} mac-tooltip-trigger How tooltip is triggered (default 'hover') -@param {Boolean} mac-tooltip-inside Should the tooltip be appended inside element (default false) -@param {Expr} mac-tooltip-disabled Disable and enable tooltip - */ - -/* -NOTE: This directive does not use $animate to append and remove DOM element or - add and remove classes in order to optimize showing tooltips by eliminating - the need for firing a $digest cycle. - */ -angular.module("Mac").directive("macTooltip", [ - "$timeout", "util", function($timeout, util) { - return { - restrict: "A", - link: function(scope, element, attrs) { - var defaults, disabled, enabled, opts, removeTip, showTip, text, toggle, tooltip; - tooltip = null; - text = ""; - enabled = false; - disabled = false; - defaults = { - direction: "top", - trigger: "hover", - inside: false - }; - opts = util.extendAttributes("macTooltip", defaults, attrs); - showTip = function() { - var elementSize, offset, tip, tooltipSize; - if (disabled || !text) { - return true; - } - tip = opts.inside ? element : angular.element(document.body); - removeTip(0); - tooltip = angular.element("
" + text + "
"); - tip.append(tooltip); - offset = opts.inside ? { - top: 0, - left: 0 - } : element.offset(); - elementSize = { - width: element.outerWidth(), - height: element.outerHeight() - }; - tooltipSize = { - width: tooltip.outerWidth(), - height: tooltip.outerHeight() - }; - switch (opts.direction) { - case "bottom": - case "top": - offset.left += elementSize.width / 2.0 - tooltipSize.width / 2.0; - break; - case "left": - case "right": - offset.top += elementSize.height / 2.0 - tooltipSize.height / 2.0; - } - switch (opts.direction) { - case "bottom": - offset.top += elementSize.height; - break; - case "top": - offset.top -= tooltipSize.height; - break; - case "left": - offset.left -= tooltipSize.width; - break; - case "right": - offset.left += elementSize.width; - } - offset.top = Math.max(0, offset.top); - offset.left = Math.max(0, offset.left); - angular.forEach(offset, function(value, key) { - if (!isNaN(+value) && angular.isNumber(+value)) { - value = "" + value + "px"; - } - return tooltip.css(key, value); - }); - tooltip.addClass("visible"); - return true; - }; - removeTip = function(delay) { - if (delay == null) { - delay = 100; - } - if (tooltip != null) { - tooltip.removeClass("visible"); - $timeout(function() { - if (tooltip != null) { - tooltip.remove(); - } - return tooltip = null; - }, delay, false); - } - return true; - }; - toggle = function() { - if (tooltip != null) { - return removeTip(); - } else { - return showTip(); - } - }; - attrs.$observe("macTooltip", function(value) { - var _ref; - if (value != null) { - text = value; - if (!enabled) { - if ((_ref = opts.trigger) !== "hover" && _ref !== "click") { - throw "Invalid trigger"; - } - switch (opts.trigger) { - case "click": - element.bind("click", toggle); - break; - case "hover": - element.bind("mouseenter", showTip); - element.bind("mouseleave click", function() { - return removeTip(); - }); - } - return enabled = true; - } - } - }); - if (attrs.macTooltipDisabled != null) { - scope.$watch(attrs.macTooltipDisabled, function(value) { - return disabled = value; - }); - } - return scope.$on("$destroy", function() { - if (tooltip != null) { - return removeTip(0); - } - }); - } - }; - } -]); - -angular.module("Mac").filter("boolean", function() { - return function(boolean, trueString, falseString) { - if (trueString == null) { - trueString = "true"; - } - if (falseString == null) { - falseString = "false"; - } - if (boolean) { - return trueString; - } else { - return falseString; - } - }; -}); - -angular.module("Mac").filter("true", function() { - return function(boolean, trueString) { - if (trueString == null) { - trueString = "true"; - } - if (boolean) { - return trueString; - } else { - return ""; - } - }; -}); - -angular.module("Mac").filter("false", function() { - return function(boolean, falseString) { - if (falseString == null) { - falseString = "false"; - } - if (boolean) { - return ""; - } else { - return falseString; - } - }; -}); - - -/* -@chalk overview -@name List -@description -List filter. Use for converting arrays into a string - -@param {Array} list Array of items -@param {String} separator String to separate each element of the array (default ,) -@returns {String} Formatted string - */ -angular.module("Mac").filter("list", [ - function() { - return function(list, separator) { - if (separator == null) { - separator = ", "; - } - return list.join(separator); - }; - } -]); - - -/* -@chalk overview -@name Pluralize -@description -Pluralizes the given string. It's a simple proxy to the pluralize function on util. - -@param {String} string Noun to pluralize -@param {Integer} count The numer of objects -@param {Boolean} includeCount To include the number in formatted string -@returns {String} Formatted plural - */ -angular.module("Mac").filter("pluralize", [ - "util", function(util) { - return function(string, count, includeCount) { - if (includeCount == null) { - includeCount = true; - } - return util.pluralize(string, count, includeCount); - }; - } -]); - - -/* -@chalk overview -@name Timestamp filter - -@description -Takes in a unix timestamp and turns it into a human-readable relative time string, like "5 -minutes ago" or "just now". - -@param {Unix timestamp} time The time to format -@returns {String} Formatted string - */ -angular.module("Mac").filter("timestamp", [ - "util", function(util) { - var _createTimestamp; - _createTimestamp = function(count, noun) { - noun = util.pluralize(noun, count); - return "" + count + " " + noun + " ago"; - }; - return function(time) { - var currentTime, days, hours, minutes, months, secondsAgo, weeks, years; - time = +time; - currentTime = Math.round(Date.now() / 1000); - secondsAgo = currentTime - time; - if (secondsAgo < 45) { - return "just now"; - } else if (secondsAgo < 120) { - return "about a minute ago"; - } else { - years = Math.floor(secondsAgo / (365 * 24 * 60 * 60)); - if (years > 0) { - return _createTimestamp(years, "year"); - } - months = Math.floor(secondsAgo / (31 * 24 * 60 * 60)); - if (months > 0) { - return _createTimestamp(months, "month"); - } - weeks = Math.floor(secondsAgo / (7 * 24 * 60 * 60)); - if (weeks > 0) { - return _createTimestamp(weeks, "week"); - } - days = Math.floor(secondsAgo / (24 * 60 * 60)); - if (days > 0) { - return _createTimestamp(days, "day"); - } - hours = Math.floor(secondsAgo / (60 * 60)); - if (hours > 0) { - return _createTimestamp(hours, "hour"); - } - minutes = Math.floor(secondsAgo / 60); - if (minutes > 0) { - return _createTimestamp(minutes, "min"); - } - return "" + secondsAgo + " seconds ago"; - } - }; - } -]); - - -/* -@chalk overview -@name Underscore string - -@description -Proxy filter for calling underscore string function - -@param {String} string String to filter -@param {String} fn Underscore function to call -@param {Parameters} params Extra parameters to pass to Underscore string -@returns {String} Formatted string - */ -var __slice = [].slice; - -angular.module("Mac").filter("underscoreString", function() { - return function() { - var fn, params, string; - string = arguments[0], fn = arguments[1], params = 3 <= arguments.length ? __slice.call(arguments, 2) : []; - params.unshift(string); - return _.string[fn].apply(this, params); - }; -}); - - -/* -@chalk overview -@name Modal Service - -@description -There are multiple components used by modal. -- A modal service is used to keep state of modal opened in the applications. -- A modal element directive to define the modal dialog box -- A modal attribute directive as a modal trigger - -@param {Function} show Show a modal based on the modal id -- {String} id The id of the modal to open -- {Object} triggerOptions Additional options to open modal - -@param {Function} resize Update the position and also the size of the modal -- {Modal Object} modalObject The modal to reposition and resize (default opened modal) - -@param {Function} hide Hide currently opened modal -- {Function} callback Callback after modal has been hidden - -@param {Function} bindingEvents Binding escape key or resize event -- {String} action Either to bind or unbind events (default "bind") - -@param {Function} register Registering modal with the service -- {String} id ID of the modal -- {DOM element} element The modal element -- {Object} options Additional options for the modal - -@param {Function} unregister Remove modal from modal service -- {String} id ID of the modal to unregister - -@param {Function} clearWaiting Remove certain modal id from waiting list -- {String} id ID of the modal - */ -angular.module("Mac").service("modal", [ - "$rootScope", "$animate", "$templateCache", "$compile", "$http", "$controller", "modalViews", "keys", function($rootScope, $animate, $templateCache, $compile, $http, $controller, modalViews, keys) { - return { - registered: modalViews.registered, - waiting: null, - opened: null, - modalTemplate: "
\n
\n \n
\n
\n
", - show: function(id, triggerOptions) { - var modalObject, options, path, renderModal, showModal, showOptions, template; - if (triggerOptions == null) { - triggerOptions = {}; - } - if ((this.registered[id] != null) && (this.opened != null)) { - return this.hide(); - } else if (this.registered[id] != null) { - modalObject = this.registered[id]; - options = modalObject.options; - showOptions = {}; - angular.extend(showOptions, options, triggerOptions); - showModal = (function(_this) { - return function(element) { - showOptions.beforeShow(element.scope()); - return $animate.removeClass(element, "hide", function() { - return $animate.addClass(element, "visible", function() { - _this.opened = { - id: id, - element: element, - options: showOptions - }; - _this.resize(_this.opened); - _this.bindingEvents(); - showOptions.open(element.scope()); - showOptions.afterShow(element.scope()); - $rootScope.$broadcast("modalWasShown", id); - return _this.clearWaiting(); - }); - }); - }; - })(this); - if (showOptions.moduleMethod != null) { - renderModal = (function(_this) { - return function(template) { - var element, viewScope, wrapper; - if (isScope(showOptions.scope)) { - viewScope = showOptions.scope; - } else { - viewScope = $rootScope.$new(true); - if (angular.isObject(showOptions.scope)) { - angular.extend(viewScope, showOptions.scope); - } - } - angular.extend(showOptions.attributes, { - id: id - }); - element = angular.element(_this.modalTemplate).attr(showOptions.attributes); - wrapper = angular.element(element[0].getElementsByClassName("mac-modal-content-wrapper")); - wrapper.html(template); - if (showOptions.overlayClose) { - element.bind("click", function($event) { - if (angular.element($event.target).hasClass("mac-modal-overlay")) { - return viewScope.$apply(function() { - return _this.hide(); - }); - } - }); - } - if (showOptions.controller) { - $controller(showOptions.controller, { - $scope: viewScope, - $element: element, - macModalOptions: showOptions - }); - } - $animate.enter(element, angular.element(document.body)); - $compile(element)(viewScope); - return showModal(element); - }; - })(this); - if ((path = showOptions.templateUrl)) { - template = $templateCache.get(path); - if (template) { - return renderModal(template); - } else { - return $http.get(path).then(function(resp) { - $templateCache.put(path, resp.data); - return renderModal(resp.data); - }, function() { - throw Error("Failed to load template: " + path); - }); - } - } else if ((template = showOptions.template)) { - return renderModal(template); - } - } else if (modalObject.element != null) { - return showModal(modalObject.element); - } - } else { - return this.waiting = { - id: id, - options: triggerOptions - }; - } - }, - resize: function(modalObject) { - var css, element, height, modal, options, width; - if (modalObject == null) { - modalObject = this.opened; - } - if (modalObject == null) { - return; - } - element = modalObject.element; - options = modalObject.options; - if (!options.position) { - return; - } - modal = angular.element(element[0].getElementsByClassName("mac-modal")).attr("style", ""); - height = modal.outerHeight(); - width = modal.outerWidth(); - css = angular.element(window).height() > height ? { - marginTop: -height / 2 - } : { - top: options.topOffset - }; - css.marginLeft = -width / 2; - return angular.forEach(css, function(value, key) { - if (!isNaN(+value) && angular.isNumber(+value)) { - value = "" + value + "px"; - } - return modal.css(key, value); - }); - }, - hide: function(callback) { - var element, id, options, _ref; - if (this.opened == null) { - return; - } - _ref = this.opened, id = _ref.id, options = _ref.options, element = _ref.element; - options.beforeHide(element.scope()); - return $animate.removeClass(element, "visible", (function(_this) { - return function() { - _this.bindingEvents("unbind"); - _this.opened = null; - if (options.moduleMethod) { - if (!isScope(options.scope)) { - element.scope().$destroy(); - } - $animate.leave(element); - } else { - $animate.addClass(element, "hide"); - } - options.afterHide(element.scope()); - $rootScope.$broadcast("modalWasHidden", id); - return callback && callback(); - }; - })(this)); - }, - bindingEvents: function(action) { - var escapeKeyHandler, options, resizeHandler; - if (action == null) { - action = "bind"; - } - if (!((action === "bind" || action === "unbind") && (this.opened != null))) { - return; - } - escapeKeyHandler = (function(_this) { - return function(event) { - if (event.which === keys.ESCAPE) { - return _this.hide(); - } - }; - })(this); - resizeHandler = (function(_this) { - return function(event) { - return _this.resize(); - }; - })(this); - options = this.opened.options; - if (options.keyboard) { - angular.element(document)[action]("keydown", escapeKeyHandler); - } - if (options.resize) { - return angular.element(window)[action]("resize", resizeHandler); - } - }, - register: function(id, element, options) { - var modalOpts; - if (this.registered[id] != null) { - throw new Error("Modal " + id + " already registered"); - } - modalOpts = {}; - angular.extend(modalOpts, modalViews.defaults, options); - this.registered[id] = { - id: id, - element: element, - options: modalOpts - }; - if ((this.waiting != null) && this.waiting.id === id) { - return this.show(id, this.waiting.options); - } - }, - unregister: function(id) { - var _ref; - if (this.registered[id] == null) { - throw new Error("Modal " + id + " is not registered"); - } - if (((_ref = this.opened) != null ? _ref.id : void 0) === id) { - this.hide(); - } - this.clearWaiting(id); - return delete this.registered[id]; - }, - clearWaiting: function(id) { - var _ref; - if ((id != null) && ((_ref = this.waiting) != null ? _ref.id : void 0) !== id) { - return; - } - return this.waiting = null; - } - }; - } -]).provider("modalViews", function() { - this.registered = {}; - this.defaults = { - keyboard: false, - overlayClose: false, - resize: true, - position: true, - open: angular.noop, - topOffset: 20, - attributes: {}, - beforeShow: angular.noop, - afterShow: angular.noop, - beforeHide: angular.noop, - afterHide: angular.noop - }; - this.$get = function() { - return this; - }; - return this; -}).config([ - "modalViewsProvider", function(modalViews) { - return angular.module("Mac").modal = function(id, modalOptions) { - var options; - if (modalViews.registered[id] == null) { - options = {}; - angular.extend(options, modalViews.defaults, modalOptions, { - moduleMethod: true - }); - return modalViews.registered[id] = { - id: id, - options: options - }; - } - }; - } -]); - - -/* -@chalk overview -@name Popover Service - -@description -A popover service to keep state of opened popover. Allowing user to hide certain -or all popovers - -@param {Array} popoverList The popover that's currently being shown - -@param {Array} registered Object storing all the registered popover DOM elements - -@param {Function} last Get data of the last popover -- Returns {Object} The last opened popover - -@param {Function} register Register a popover with an id and an element -- {String} id Popover id -- {DOM Element} element Popover element -- Returns {Bool} If the id already existed - -@param {Function} unregister Remove id and element from registered list of popover -- {String} id Popover id -- Returns {Bool} If the id exist - -@param {Function} add Add a new popover to opened list -- {String} id Popover id -- {DOM Element} popover Popover DOM element -- {DOM Element} element Trigger DOM element -- {Object} options Additional options -- Returns {Object} The new popover object - -@param {Function} pop Get and remove the last popover from list -- Returns {Object} Last element from popoverList - -@param {Function} show Show and position a registered popover -- {String} id Popover id -- {DOM Element} element Element that trigger the popover -- {Object} options Additional options for popover - -@param {Function} getById Get opened popover object by id -- {String} id Popover id -- Returns {Object} Opened popover object - -@param {Function} resize Update size and position of an opened popover -- {Object|String} popoverObj Support multiple type input: - - Object: One of the popover objects in popoverList - - String: Popover ID - -@param {Function} hide Hide a certain popover. If no selector is provided, the -last opened popover is hidden -- {DOM Element|String} selector Support multiple type input: - - DOM Element: Popover trigger element - - String: Popover ID -- {Function} callback Callback after popover is hidden - -@param {Function} hideAll Hide all popovers - */ -angular.module("Mac").provider("popoverViews", function() { - this.registered = {}; - this.defaults = { - fixed: false, - childPopover: false, - offsetY: 0, - offsetX: 0, - trigger: "click" - }; - this.popoverDefaults = { - footer: false, - header: false, - title: "", - direction: "above left" - }; - - /* - @name template - @description - Popover template - */ - this.template = "
\n
\n
\n
{{macPopoverTitle}}
\n
\n
\n
"; - this.$get = function() { - return this; - }; - return this; -}).service("popover", [ - "$animate", "$compile", "$controller", "$http", "$rootScope", "$templateCache", "$timeout", "popoverViews", function($animate, $compile, $controller, $http, $rootScope, $templateCache, $timeout, popoverViews) { - var service; - service = { - popoverList: [], - registered: popoverViews.registered, - last: function() { - return this.popoverList[this.popoverList.length - 1]; - }, - register: function(id, options) { - var exist; - if (!(exist = this.registered[id] != null)) { - this.registered[id] = options; - } - return !exist; - }, - unregister: function(id) { - var exist; - if (exist = this.registered[id] != null) { - delete this.registered[id]; - } - return exist; - }, - add: function(id, popover, element, options) { - var newObject; - newObject = { - id: id, - popover: popover, - element: element, - options: options - }; - this.popoverList.push(newObject); - return newObject; - }, - pop: function() { - return this.popoverList.pop(); - }, - show: function(id, element, options) { - var addPopover, popoverOptions; - if (options == null) { - options = {}; - } - popoverOptions = this.registered[id]; - if (!popoverOptions) { - return false; - } - addPopover = function() { - var path, showPopover, template; - showPopover = function(template) { - var popover, popoverObj, viewScope; - if (isScope(options.scope)) { - viewScope = options.scope.$new(); - } else { - viewScope = $rootScope.$new(true); - if (angular.isObject(options.scope)) { - angular.extend(viewScope, options.scope); - } - } - if (popoverOptions.refreshOn) { - viewScope.$on(popoverOptions.refreshOn, function() { - return service.resize(id); - }); - } - if (popoverOptions.controller) { - $controller(popoverOptions.controller, { - $scope: viewScope - }); - } - angular.extend(viewScope, { - macPopoverClasses: { - footer: popoverOptions.footer || false, - header: popoverOptions.header || !!popoverOptions.title || false, - fixed: popoverOptions.fixed || false - }, - macPopoverTitle: popoverOptions.title || "", - macPopoverTemplate: template - }); - popover = $compile(popoverViews.template)(viewScope); - popover.attr({ - id: id, - direction: popoverOptions.direction || "below left" - }); - popoverObj = service.add(id, popover, element, options); - $animate.addClass(element, "active"); - $rootScope.$broadcast("popoverWasShown", id); - return $animate.enter(popover, angular.element(document.body), null, function() { - return service.resize(popoverObj); - }); - }; - if ((template = popoverOptions.template)) { - return showPopover(template); - } else if ((path = popoverOptions.templateUrl)) { - template = $templateCache.get(path); - if (template) { - return showPopover(template); - } else { - return $http.get(path).then(function(resp) { - $templateCache.put(path, resp.data); - return showPopover(resp.data); - }, function() { - throw new Error('Failed to load template: #{path}'); - }); - } - } - }; - if (service.popoverList.length && !!!options.childPopover) { - service.hide(addPopover); - } else { - addPopover(); - } - return true; - }, - getById: function(id, element) { - var item, sameTrigger, _i, _len, _ref; - _ref = this.popoverList; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - item = _ref[_i]; - sameTrigger = (element == null) || item.element === element; - if (item.id === id && sameTrigger) { - return item; - } - } - }, - resize: function(popoverObj) { - var $window, action, current, currentPopover, diff, left, leftScroll, offset, options, position, relative, relativeElement, setOverflowPosition, top, topScroll, updateOffset; - if (angular.isString(popoverObj)) { - popoverObj = service.getById(popoverObj); - } - if (popoverObj == null) { - return; - } - currentPopover = popoverObj.popover; - relativeElement = popoverObj.element; - options = popoverObj.options; - $window = angular.element(window); - offset = relativeElement.offset(); - if (options.fixed) { - offset.top = relativeElement.position().top; - } - relative = { - height: relativeElement.outerHeight(), - width: relativeElement.outerWidth() - }; - current = { - height: currentPopover.outerHeight(), - width: currentPopover.outerWidth() - }; - top = 0; - left = 0; - position = (currentPopover.attr("direction") || "top left").trim(); - setOverflowPosition = function(offset) { - var tip, tipOffset; - if (offset == null) { - offset = 0; - } - tip = angular.element(currentPopover[0].getElementsByClassName("tip")); - top -= offset; - tipOffset = +tip.css("margin-top").replace("px", ""); - return tip.css("margin-top", tipOffset + offset); - }; - updateOffset = function() { - switch (position) { - case "above left": - top = -(current.height + 10); - return left = -25 + relative.width / 2; - case "above right": - top = -(current.height + 10); - return left = 25 + relative.width / 2 - current.width; - case "below left": - top = relative.height + 10; - return left = -25 + relative.width / 2; - case "below right": - top = relative.height + 10; - return left = 25 + relative.width / 2 - current.width; - case "middle right": - top = relative.height / 2 - current.height / 2; - return left = relative.width + 10; - case "middle left": - top = relative.height / 2 - current.height / 2; - return left = -(current.width + 10); - } - }; - updateOffset(); - topScroll = options.fixed ? 0 : $window.scrollTop(); - leftScroll = options.fixed ? 0 : $window.scrollLeft(); - action = {}; - if (position.indexOf("middle") === -1) { - if (offset.top + top - topScroll < 0) { - action = { - remove: "above", - add: "below" - }; - } else if (offset.top + top + current.height - topScroll > $window.height()) { - action = { - remove: "below", - add: "above" - }; - } - } else { - if ((diff = offset.top + top - topScroll) < 0) { - setOverflowPosition(diff); - } else if ((diff = offset.top + top + currentPopover.outerHeight() - topScroll - $window.height()) > 0) { - setOverflowPosition(diff); - } - } - if (action.remove && action.add) { - position = position.replace(action.remove, action.add); - } - action = {}; - if (offset.left + left - leftScroll < 0) { - action = { - remove: "right", - add: "left" - }; - } else if (offset.left + left + currentPopover.outerWidth() - leftScroll > $window.width()) { - action = { - remove: "left", - add: "right" - }; - } - if (action.remove && action.add) { - position = position.replace(action.remove, action.add); - } - updateOffset(); - offset.top += top; - offset.left += left; - if (options.offsetX != null) { - offset.left += options.offsetX; - } - if (options.offsetY != null) { - offset.top += options.offsetY; - } - angular.forEach(offset, function(value, key) { - if (!isNaN(+value)) { - value = "" + value + "px"; - } - return currentPopover.css(key, value); - }); - return currentPopover.addClass("visible " + position); - }, - hide: function(selector, callback) { - var comparator, i, index, popoverObj, removeScope, _i, _ref; - if (!this.popoverList.length) { - return typeof callback === "function" ? callback() : void 0; - } - if (angular.isFunction(selector)) { - callback = selector; - selector = null; - } - if (selector != null) { - comparator = angular.isString(selector) ? function(item) { - return item.id === selector; - } : angular.isElement(selector) ? function(item) { - return item.element === selector; - } : void 0; - index = -1; - for (i = _i = _ref = this.popoverList.length - 1; _i >= 0; i = _i += -1) { - if (!(comparator(this.popoverList[i]))) { - continue; - } - popoverObj = this.popoverList[i]; - index = i; - break; - } - if (index > -1) { - this.popoverList.splice(index, 1); - } - } else { - popoverObj = this.pop(); - } - if (popoverObj == null) { - return; - } - $rootScope.$broadcast("popoverBeforeHide", popoverObj.id); - removeScope = popoverObj.popover.scope(); - return $animate.leave(popoverObj.popover, function() { - $animate.removeClass(popoverObj.element, "active"); - $rootScope.$broadcast("popoverWasHidden", popoverObj.id); - removeScope.$destroy(); - return typeof callback === "function" ? callback() : void 0; - }); - }, - hideAll: function() { - while (this.popoverList.length) { - this.hide(); - } - } - }; - return service; - } -]).config([ - "popoverViewsProvider", function(popoverViews) { - return angular.module("Mac").popover = function(name, options) { - var opts; - if (popoverViews.registered[name] == null) { - opts = {}; - angular.extend(opts, popoverViews.popoverDefaults, options, { - id: name - }); - return popoverViews.registered[name] = opts; - } - }; - } -]); - - -/* -@chalk overview -@name Scroll Spy Service - -@description -There are multiple components used by scrollspy -- Scrollspy service is used to keep track of all and active anchors -- Multiple directives including: -- mac-scroll-spy - Element to spy scroll event -- mac-scroll-spy-anchor - Section in element spying on -- mac-scroll-spy-target - Element to highlight, most likely a nav item - -Scrollspy defaults: -offset - 0 - -@param {Function} register Register an anchor with the service -- {String} id ID of the anchor -- {DOM Element} element Element to spy on - -@param {Function} unregister Remove anchor from service -- {String} id ID of the anchor - -@param {Function} setActive Set active anchor and fire all listeners -- {Object} anchor Anchor object - -@param {Function} addListener Add listener when active is set -- {Function} fn Callback function - -@param {Function} removeListener Remove listener -- {Function} fn Callback function - */ -angular.module("Mac").service("scrollSpy", [ - function() { - return { - registered: [], - active: {}, - listeners: [], - register: function(id, element) { - var anchor, i, registered, top, _i, _len, _ref; - registered = false; - top = element.offset().top; - _ref = this.registered; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - anchor = _ref[i]; - if (!(anchor.id === id)) { - continue; - } - this.registered[i] = { - id: id, - element: element, - top: top - }; - registered = true; - break; - } - if (!registered) { - this.registered.push({ - id: id, - element: element, - top: top - }); - } - return this.registered.sort(function(a, b) { - if (a.top > b.top) { - return 1; - } else if (a.top < b.top) { - return -1; - } - return 0; - }); - }, - unregister: function(id) { - var anchor, i, _i, _len, _ref, _ref1, _results; - _ref = this.registered; - _results = []; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - anchor = _ref[i]; - if (!(anchor.id === id)) { - continue; - } - [].splice.apply(this.registered, [i, i - i + 1].concat(_ref1 = [])), _ref1; - break; - } - return _results; - }, - last: function() { - return this.registered[this.registered.length - 1]; - }, - setActive: function(anchor) { - var listener, _i, _len, _ref, _results; - this.active = anchor; - _ref = this.listeners; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - listener = _ref[_i]; - _results.push(listener(anchor)); - } - return _results; - }, - addListener: function(fn) { - return this.listeners.push(fn); - }, - removeListener: function(fn) { - var index, _ref; - index = this.listeners.indexOf(fn); - if (index !== -1) { - return ([].splice.apply(this.listeners, [index, index - index + 1].concat(_ref = [])), _ref); - } - } - }; - } -]).constant("scrollSpyDefaults", { - offset: 0 -}); - -var __hasProp = {}.hasOwnProperty; - -angular.module("Mac.Util", []).factory("util", [ - "$filter", function($filter) { - return { - _inflectionConstants: { - uncountables: ["sheep", "fish", "moose", "series", "species", "money", "rice", "information", "info", "equipment", "min"], - irregulars: { - child: "children", - man: "men", - woman: "women", - person: "people", - ox: "oxen", - goose: "geese" - }, - pluralizers: [[/(quiz)$/i, "$1zes"], [/([m|l])ouse$/i, "$1ice"], [/(matr|vert|ind)(ix|ex)$/i, "$1ices"], [/(x|ch|ss|sh)$/i, "$1es"], [/([^aeiouy]|qu)y$/i, "$1ies"], [/(?:([^f])fe|([lr])f)$/i, "$1$2ves"], [/sis$/i, "ses"], [/([ti])um$/i, "$1a"], [/(buffal|tomat)o$/i, "$1oes"], [/(bu)s$/i, "$1ses"], [/(alias|status)$/i, "$1es"], [/(octop|vir)us$/i, "$1i"], [/(ax|test)is$/i, "$1es"], [/x$/i, "xes"], [/s$/i, "s"], [/$/, "s"]] - }, - - /* - @name pluralize - @description - Pluralize string based on the count - - @param {String} string String to pluralize (default "") - @param {Integer} count Object counts - @param {Boolean} includeCount Include the number or not (default false) - - @returns {String} Pluralized string based on the count - */ - pluralize: function(string, count, includeCount) { - var irregulars, isUppercase, lowercaseWord, pluralizedString, pluralizedWord, pluralizer, pluralizers, uncountables, word, _i, _len, _ref; - if (string == null) { - string = ""; - } - if (includeCount == null) { - includeCount = false; - } - if (!angular.isString(string) || this.trim(string).length === 0) { - return string; - } - if (includeCount && isNaN(+count)) { - return ""; - } - if (count == null) { - count = 2; - } - _ref = this._inflectionConstants, pluralizers = _ref.pluralizers, uncountables = _ref.uncountables, irregulars = _ref.irregulars; - word = string.split(/\s/).pop(); - isUppercase = word.toUpperCase() === word; - lowercaseWord = word.toLowerCase(); - pluralizedWord = count === 1 || uncountables.indexOf(lowercaseWord) >= 0 ? word : null; - if (pluralizedWord == null) { - if (irregulars[lowercaseWord] != null) { - pluralizedWord = irregulars[lowercaseWord]; - } - } - if (pluralizedWord == null) { - for (_i = 0, _len = pluralizers.length; _i < _len; _i++) { - pluralizer = pluralizers[_i]; - if (!(pluralizer[0].test(lowercaseWord))) { - continue; - } - pluralizedWord = word.replace(pluralizer[0], pluralizer[1]); - break; - } - } - pluralizedWord || (pluralizedWord = word); - if (isUppercase) { - pluralizedWord = pluralizedWord.toUpperCase(); - } - pluralizedString = string.slice(0, -word.length) + pluralizedWord; - if (includeCount) { - return "" + ($filter("number")(count)) + " " + pluralizedString; - } else { - return pluralizedString; - } - }, - trim: function(string) { - var str; - str = String(string) || ""; - if (String.prototype.trim != null) { - return str.trim(); - } else { - return str.replace(/^\s+|\s+$/gm, ""); - } - }, - capitalize: function(string) { - var str; - str = String(string) || ""; - return str.charAt(0).toUpperCase() + str.substring(1); - }, - uncapitalize: function(string) { - var str; - str = String(string) || ""; - return str.charAt(0).toLowerCase() + str.substring(1); - }, - toCamelCase: function(string) { - if (string == null) { - string = ""; - } - return this.trim(string).replace(/[-_\s]+(.)?/g, function(match, c) { - return c.toUpperCase(); - }); - }, - toSnakeCase: function(string) { - if (string == null) { - string = ""; - } - return this.trim(string).replace(/([a-z\d])([A-Z]+)/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase(); - }, - convertKeysToCamelCase: function(object) { - var key, result, value; - result = {}; - for (key in object) { - if (!__hasProp.call(object, key)) continue; - value = object[key]; - key = this.toCamelCase(key); - if (typeof value === "object" && (value != null ? value.constructor : void 0) !== Array) { - value = this.convertKeysToCamelCase(value); - } - result[key] = value; - } - return result; - }, - convertKeysToSnakeCase: function(object) { - var key, result, value; - result = {}; - for (key in object) { - if (!__hasProp.call(object, key)) continue; - value = object[key]; - key = this.toSnakeCase(key); - if (typeof value === "object" && (value != null ? value.constructor : void 0) !== Array) { - value = this.convertKeysToSnakeCase(value); - } - result[key] = value; - } - return result; - }, - pyth: function(a, b) { - return Math.sqrt(a * a + b * b); - }, - degrees: function(radian) { - return (radian * 180) / Math.PI; - }, - radian: function(degrees) { - return (degrees * Math.PI) / 180; - }, - hex2rgb: function(hex) { - var color, rgb, value; - if (hex.indexOf('#') === 0) { - hex = hex.substring(1); - } - hex = hex.toLowerCase(); - rgb = {}; - if (hex.length === 3) { - rgb.r = hex.charAt(0) + hex.charAt(0); - rgb.g = hex.charAt(1) + hex.charAt(1); - rgb.b = hex.charAt(2) + hex.charAt(2); - } else { - rgb.r = hex.substring(0, 2); - rgb.g = hex.substring(2, 4); - rgb.b = hex.substring(4); - } - for (color in rgb) { - value = rgb[color]; - rgb[color] = parseInt(value, 16); - } - return rgb; - }, - timeRegex: /^(0?[1-9]|1[0-2]):([0-5][0-9])[\s]([AP]M)$/, - _urlRegex: /(?:(http[s]?):\/\/)?(?:(www|[\d\w\-]+)\.)?([\d\w\-]+)\.([A-Za-z]{2,6})(:[\d]*)?([:\/?#\[\]@!$&'()*+,;=\w\d-._~%\\]*)?/i, - _emailRegex: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/, - validateUrl: function(url) { - var match; - match = this._urlRegex.exec(url); - if (match != null) { - match = { - url: match[0], - protocol: match[1] || "http", - subdomain: match[2], - name: match[3], - domain: match[4], - port: match[5], - path: match[6] || "/" - }; - match["url"] = match.url; - } - return match; - }, - validateEmail: function(email) { - return this._emailRegex.test(email); - }, - getQueryString: function(url, name) { - var regex, regexS, results; - if (name == null) { - name = ""; - } - name = name.replace(/[[]/, "\[").replace(/[]]/, "\]"); - regexS = "[\?&]" + name + "=([^&#]*)"; - regex = new RegExp(regexS); - results = regex.exec(url); - if (results != null) { - return results[1]; - } else { - return ""; - } - }, - parseUrlPath: function(fullPath) { - var path, pathComponents, queries, queryString, queryStrings, urlComponents, values, verb, _i, _len, _ref; - urlComponents = fullPath.split("?"); - pathComponents = urlComponents[0].split("/"); - path = pathComponents.slice(0, pathComponents.length - 1).join("/"); - verb = pathComponents[pathComponents.length - 1]; - queries = {}; - if (urlComponents.length > 1) { - queryStrings = urlComponents[urlComponents.length - 1]; - _ref = queryStrings.split("&"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - queryString = _ref[_i]; - values = queryString.split("="); - queries[values[0]] = values[1] != null ? values[1] : ""; - } - } - return { - fullPath: fullPath, - path: path, - pathComponents: pathComponents, - verb: verb, - queries: queries - }; - }, - extendAttributes: function(prefix, defaults, attributes) { - var altKey, key, macKey, output, value, _ref, _ref1; - if (prefix == null) { - prefix = ""; - } - output = {}; - for (key in defaults) { - if (!__hasProp.call(defaults, key)) continue; - value = defaults[key]; - altKey = prefix ? this.capitalize(key) : key; - macKey = "" + prefix + altKey; - output[key] = attributes[macKey] != null ? attributes[macKey] || true : value; - if ((_ref = output[key]) === "true" || _ref === "false") { - output[key] = output[key] === "true"; - } else if (((_ref1 = output[key]) != null ? _ref1.length : void 0) > 0 && !isNaN(+output[key])) { - output[key] = +output[key]; - } - } - return output; - } - }; - } -]); - -})(window, window.angular); \ No newline at end of file diff --git a/src/scripts/vendor/macgyver/macgyver.min.js b/src/scripts/vendor/macgyver/macgyver.min.js deleted file mode 100644 index cc45f51..0000000 --- a/src/scripts/vendor/macgyver/macgyver.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;m=["Mac.Util"];try{b.module("ngAnimate"),m.push("ngAnimate")}catch(o){}b.module("Mac",m),e=["Top","Right","Bottom","Left"],d=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,n=new RegExp("^("+d+")(?!px)[a-z%]+$","i"),g=function(b){return a.getComputedStyle(b,null)},k=function(a){return a&&a.document&&a.location&&a.alert&&a.setInterval},j=function(a){return a&&null!=a.$evalAsync&&null!=a.$watch},i=function(a){return k(a)?a:9===a.nodeType&&a.defaultView},c=function(a,b,c,d,f){var g,h,i,j;if(c===(d?"border":"content"))return 0;for(i=0,h="Width"===b?1:0,g=j=h;3>=j;g=j+=2)"margin"===c&&(i+=parseFloat(f[""+c+e[g]])),d?("content"===c&&(i-=parseFloat(f["padding"+e[g]])),"margin"!==c&&(i-=parseFloat(f["border"+e[g]]))):(i+=parseFloat(f["padding"+e[g]]),"padding"!==c&&(i+=parseFloat(f["border"+e+"Width"])));return i},h=function(a,b,d){return function(e){var f,h,i,j,l,m,o,p;if(f=function(){switch(b){case"inner":return"padding";case"outer":return"";default:return"content"}}(),i=f||(e===!0?"margin":"border"),k(d))return d.document.documentElement["client"+a];if(9===d.nodeType)return h=d.documentElement,Math.max(d.body["scroll"+a],h["scroll"+a],d.body["offset"+a],h["offset"+a],h["client"+a]);if(p=!0,m=g(d),l=a.toLowerCase(),o="Height"===a?d.offsetHeight:d.offsetWidth,j="border-box"===d.style.boxSizing,0>=o||null===o){if(o=m[l],(0>o||null===o)&&(o=d.style[l]),n.test(o))return o;p=j,o=parseFloat(o)||0}return o+c(d,a,i||(j?"border":"content"),p,m)}},l={height:function(a){return h("Height","",a)()},width:function(a){return h("Width","",a)()},outerHeight:function(a,b){return h("Height","outer",a)(b)},outerWidth:function(a,b){return h("Width","outer",a)(b)},offset:function(a){var b,c,d,e;return b={top:0,left:0},(c=a&&a.ownerDocument)?(d=c.documentElement,null!=a.getBoundingClientRect&&(b=a.getBoundingClientRect()),e=i(c),{top:b.top+e.pageYOffset-d.clientTop,left:b.left+e.pageXOffset-d.clientLeft}):void 0},scrollTop:function(b,c){var d;return d=i(b),null==c?d?d.pageYOffset:b.scrollTop:d?d.scrollTo(a.pageYOffset,c):b.scrollTop=c},scrollLeft:function(b,c){var d;return d=i(b),null==c?d?d.pageXOffset:b.scrollLeft:d?d.scrollTo(a.pageXOffset,c):b.scrollLeft=c}},f=function(){var c;if(null==a.jQuery||null==b.element.prototype.offset)return c=b.element,b.forEach(l,function(a,b){return c.prototype[b]=function(b,c){return this.length?a(this[0],b,c):void 0}})},f(),b.module("Mac").directive("macAffix",["$document","$window",function(a,c){return{link:function(d,e,f){var g,h,i,j,k,l,m,n,o,p;return g={top:0,bottom:0,disabled:!1,classes:"affix affix-top affix-bottom"},k={top:g.top,bottom:g.bottom},h=g.disabled,j=null,o=null,l=null,p=b.element(c),n=function(a,b,c){return null==c&&(c=!1),c&&null==b&&(b=g[a]),null==b||isNaN(+b)?void 0:k[a]=+b},null!=f.macAffixTop&&(n("top",d.$eval(f.macAffixTop),!0),d.$watch(f.macAffixTop,function(a){return n("top",a)})),null!=f.macAffixBottom&&(n("bottom",d.$eval(f.macAffixBottom),!0),d.$watch(f.macAffixBottom,function(a){return n("bottom",a)})),i=function(){var b;return null!=l?l:(e.removeClass(g.classes).addClass("affix"),b=a.height(),l=b-e.outerHeight()-k.bottom)},m=function(){var b,c,d,f,h,l;if(!(e[0].offsetHeight<=0&&e[0].offsetWidth<=0)&&(f=e.offset(),l=p.scrollTop(),h=a.height(),d=e.outerHeight(),b=null!=o&&o>=l?!1:null!=k.bottom&&l>h-d-k.bottom?"bottom":null!=k.top&&l<=k.top?"top":!1,b!==j))return o&&e.css("top",""),j=b,o="bottom"===b?i():null,e.removeClass(g.classes).addClass("affix"+(b?"-"+b:"")),"bottom"===b&&(c=e.offset(),e.css("top",o-c.top)),!0},null!=f.macAffixDisabled&&(h=d.$eval(f.macAffixDisabled)||g.disabled,d.$watch(f.macAffixDisabled,function(a){var b;if(null!=a&&a!==h)return h=a,b=a?"unbind":"bind",p[b]("scroll",m),h?(j=null,o=null,e.css("top","").removeClass(g.classes)):m()})),h||p.bind("scroll",m),d.$on("refresh-mac-affix",function(){var a;return a=e.offset()}),d.$on("$destroy",function(){return p.unbind("scroll",m)})}}}]),b.module("Mac").directive("macAutocomplete",["$animate","$compile","$filter","$http","$parse","$rootScope","$timeout","keys",function(c,d,e,f,g,h,i,j){return{restrict:"EA",template:'',transclude:!0,replace:!0,require:"ngModel",link:function(h,k,l,m,n){var o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L;return z=l.macAutocompleteLabel||"name",y=g(z),H=l.macAutocompleteQuery||"q",t=+(l.macAutocompleteDelay||800),w=null!=l.macAutocompleteInside,q=g(l.macAutocompleteUrl),C=g(l.macAutocompleteOnSelect),D=g(l.macAutocompleteOnSuccess),B=g(l.macAutocompleteOnError),J=g(l.macAutocompleteSource),u=g(l.macAutocompleteDisabled),s=[],K=null,x=!1,F=!1,o=h.$new(),o.items=[],o.index=0,o.select=function(a){var b,c;return c=s[a],C(h,{selected:c}),b=o.items[a].label||"",F=!0,null!=l.ngModel&&(m.$setViewValue(b),m.$render()),I()},A=b.element(document.createElement("mac-menu")),A.attr({"ng-class":l.macMenuClass||null,"mac-menu-items":"items","mac-menu-select":"select(index)","mac-menu-index":"index"}),n(o,function(a){return A.append(a)}),d(A)(o),m.$parsers.push(function(a){return!a||u(h)||F?I():(null!=K&&i.cancel(K),t>0?K=i(function(){return G(a)},t):G(a)),F=!1,a}),r=function(){return h.$apply(function(){return I()})},p=function(a){return x||(k.bind("blur",r),A.on("mousedown",function(a){return a.preventDefault()})),x=!0,w?c.enter(A,void 0,k,a):c.enter(A,b.element(document.body),void 0,a)},I=function(){c.leave(A,function(){return o.index=0,o.items.length=0,A[0].style.top="",A[0].style.left="",x=!1,k.unbind("blur",r)})},E=function(){var c,d,e;return d=w?k[0]:document.body,e=a.getComputedStyle(d),c=k.offset(),c.left-=parseInt(e.marginLeft),c.top+=k.outerHeight()-parseInt(e.marginTop),c.minWidth=k.outerWidth(),b.forEach(c,function(a,c){return!isNaN(+a)&&b.isNumber(+a)&&(a=""+a+"px"),A[0].style[c]=a})},L=function(a){return(null!=a?a.length:void 0)>0?(s=a,o.items=a.map(function(a){return b.isObject(a)?(null==a.value&&(a.value=y(a)||""),null==a.label&&(a.label=y(a)||""),a):{label:a,value:a}}),p(E)):I()},v=function(a,b){var c;return c={method:"GET",url:a,params:{}},c.params[H]=b,f(c).success(function(a,b,c){var d;return d=D(h,{data:a,status:b,headers:c}),null==d&&(d=a.data),L(d)}).error(function(a,b,c){return B(h,{data:a,status:b,headers:c})})},G=function(a){var c,d;return d=q(h),d?v(d,a):(c=J(h),b.isArray(c)?L(e("filter")(c,a)):b.isString(c)?v(c,a):b.isFunction(c)?c(a,L):void 0)},k.bind("keydown",function(a){if(0===o.items.length)return!0;switch(a.which){case j.DOWN:h.$apply(function(){return o.index=(o.index+1)%o.items.length,a.preventDefault()});break;case j.UP:h.$apply(function(){return o.index=(o.index?o.index:o.items.length)-1,a.preventDefault()});break;case j.ENTER:h.$apply(function(){return o.select(o.index),a.preventDefault()});break;case j.ESCAPE:h.$apply(function(){return I(),a.preventDefault()})}return!0}),h.$on("$destroy",function(){return o.$destroy(),I()}),h.$on("reset-mac-autocomplete",function(){return I()})}}}]),b.module("Mac").directive("macCspinner",["$timeout","util",function(c,d){return{restrict:"E",replace:"true",template:'
',compile:function(e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F;if(!a.HTMLCanvasElement)return console.log("Browser does not support canvas");if(j={width:2,height:5,border:1,radius:4,bars:10,padding:3,speed:100,color:"#2f3035",size:20},q=d.extendAttributes("macCspinner",j,f),null!=f.macCspinnerSize&&(x=!isNaN(+f.macCspinnerSize)&&+f.macCspinnerSize))for(t=x/j.size,E=["width","height","border","radius"],B=0,D=E.length;D>B;B++)r=E[B],q[r]=j[r]*t;for(A=q.width,k=q.height,s=q.border,o=q.radius+k,n=Math.max(A,o),h=Math.ceil(Math.max(n,d.pyth(o,A/2))),h+=q.padding,y=b.element(""),i=y[0].getContext("2d"),v=d.radian(360/q.bars),i.translate(h,h),z=-o,m=-A/2,u=d.hex2rgb(q.color),l=C=0,F=q.bars-1;F>=0?F>=C:C>=F;l=F>=0?++C:--C)p=1-.8/q.bars*l,i.fillStyle="rgba("+u.r+", "+u.g+", "+u.b+", "+p+")",i.beginPath(),i.moveTo(m+s,z),i.arc(m+A-s,z+s,s,d.radian(-90),d.radian(0),!1),i.arc(m+A-s,z+k-s,s,d.radian(0),d.radian(90),!1),i.arc(m+s,z+k-s,s,d.radian(90),d.radian(180),!1),i.arc(m+s,z+s,s,d.radian(-180),d.radian(-90),!1),i.closePath(),i.fill(),i.rotate(v);return g=b.element(""),g.attr({width:2*h,height:2*h}),w=g[0].getContext("2d"),w.translate(h,h),e.append(g),function(a,b,e){var f,g,i,j;return f=null,g=!1,j=function(){return g=!1,null!=f?c.cancel(f):void 0},i=function(){var a,e;if(!g)return g=!0,e=d.radian(360/q.bars),(a=function(d){return null==d&&(d=!1),w.clearRect(-h,-h,2*h,2*h),w.rotate(e),w.drawImage(y[0],-h,-h),g?!d&&b[0].offsetHeight<=0&&b[0].offsetWidth<=0?j():f=c(a,q.speed,!1):void 0})(!0)},null!=e.macCspinnerSpin?a.$watch(e.macCspinnerSpin,function(a){return a&&!g?i():j()}):i(),e.ngShow?a.$watch(e.ngShow,function(a){return a?i():j()}):e.ngHide&&a.$watch(e.ngHide,function(a){return a?j():i()}),a.$on("$destroy",function(){return j()})}}}}]);var p,q,r,s,t;for(t=["Enter","Escape","Space","Left","Up","Right","Down"],q=function(a){return b.module("Mac").directive("macKeydown"+a,["$parse","keys",function(b,c){return{restrict:"A",link:function(d,e,f){var g;return g=b(f["macKeydown"+a]),e.bind("keydown",function(b){return b.which===c[""+a.toUpperCase()]?(b.preventDefault(),d.$apply(function(){return g(d,{$event:b})})):void 0})}}}])},r=0,s=t.length;s>r;r++)p=t[r],q(p);b.module("Mac").directive("macPauseTyping",["$parse","$timeout",function(a,b){return{restrict:"A",link:function(c,d,e){var f,g,h;return g=a(e.macPauseTyping),f=c.$eval(e.macPauseTypingDelay)||800,h=null,d.bind("keyup",function(a){return null!=h&&b.cancel(h),h=b(function(){return g(c,{$event:a})},f)})}}}]),b.module("Mac").directive("macWindowResize",["$parse","$window",function(a,c){return{restrict:"A",link:function(d,e,f){var g;return g=function(b){var c;return c=a(f.macWindowResize),d.$apply(function(){return c(d,{$event:b})}),!0},b.element(c).bind("resize",g),d.$on("destroy",function(){return b.element(c).unbind("resize",g)})}}}]),b.module("Mac").directive("macFocusOnEvent",["$timeout",function(b){return function(c,d,e){return c.$on(e.macFocusOnEvent,function(){return b(function(){var b,c;return d.focus(),e.macFocusOnEventScroll?(b=a.scrollX,c=a.scrollY,a.scrollTo(b,c)):void 0},0,!1)})}}]),b.module("Mac").factory("keys",function(){return{CANCEL:3,HELP:6,BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,RETURN:13,SHIFT:16,CONTROL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,SEMICOLON:59,EQUALS:61,COMMAND:91,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUMPAD0:96,NUMPAD1:97,NUMPAD2:98,NUMPAD3:99,NUMPAD4:100,NUMPAD5:101,NUMPAD6:102,NUMPAD7:103,NUMPAD8:104,NUMPAD9:105,MULTIPLY:106,ADD:107,SEPARATOR:108,SUBTRACT:109,DECIMAL:110,DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,F16:127,F17:128,F18:129,F19:130,F20:131,F21:132,F22:133,F23:134,F24:135,NUM_LOCK:144,SCROLL_LOCK:145,COMMA:188,PERIOD:190,SLASH:191,BACK_QUOTE:192,OPEN_BRACKET:219,BACK_SLASH:220,CLOSE_BRACKET:221,QUOTE:222,META:224}}),b.module("Mac").directive("macMenu",[function(){return{restrict:"EA",replace:!0,template:'
',transclude:!0,controller:b.noop,scope:{items:"=macMenuItems",style:"=macMenuStyle",select:"&macMenuSelect",pIndex:"=macMenuIndex"},link:function(a,b,c){return a.selectItem=function(b){return a.select({index:b})},a.setIndex=function(b){return a.index=b,null!=c.macMenuIndex?a.pIndex=parseInt(b):void 0},null!=c.macMenuIndex&&a.$watch("pIndex",function(b){return a.index=parseInt(b)}),a.$watch("items.length",function(a){return a?c.$addClass("visible"):c.$removeClass("visible")})}}}]).directive("macMenuTransclude",["$compile",function(a){return{link:function(b,c,d,e,f){return f(b,function(d){return c.empty(),0===d.length&&(d=a("{{item.label}}")(b)),c.append(d)})}}}]),b.module("Mac").directive("macModal",["$parse","modal","modalViews","util",function(a,c,d,e){return{restrict:"E",template:c.modalTemplate,replace:!0,transclude:!0,link:function(f,g,h,i,j){var k,l,m,n,o,p,q,r;for(j(f,function(a){return b.element(g[0].getElementsByClassName("mac-modal-content-wrapper")).replaceWith(a)}),m=e.extendAttributes("macModal",d.defaults,h),n=null,m.overlayClose&&g.on("click",function(a){return b.element(a.target).hasClass("mac-modal-overlay")?f.$apply(function(){return c.hide()}):void 0}),r=["beforeShow","afterShow","beforeHide","afterHide","open"],p=0,q=r.length;q>p;p++)k=r[p],l="macModal"+e.capitalize(k),m[k]=a(h[l])||b.noop;return o=function(a){return null!=a&&a?(n=a,c.register(a,g,m)):void 0},h.id?o(h.id):h.$observe("macModal",function(a){return o(a)}),f.$on("$destroy",function(){return n?c.unregister(n):void 0})}}}]).directive("macModal",["$parse","modal",function(a,b){return{restrict:"A",link:function(c,d,e){e.macModal&&d.bind("click",function(){return c.$apply(function(){var d;return d=a(e.macModalData)(c)||{},b.show(e.macModal,{data:d,scope:c})})})}}}]).directive("macModalClose",["modal",function(a){return{restrict:"A",link:function(b,c){return c.bind("click",function(){return b.$apply(function(){return a.hide()})})}}}]),b.module("Mac").directive("macPlaceholder",function(){return{restrict:"A",link:function(a,b,c){return a.$watch(c.macPlaceholder,function(a){return c.$set("placeholder",a)})}}});var u=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b.module("Mac").directive("macPopover",["$timeout","popover","util","popoverViews",function(a,b,c,d){return{restrict:"A",link:function(e,f,g){var h,i,j,k,l,m,n,o;return n=c.extendAttributes("macPopover",d.defaults,g),k=g.macPopoverExclude||"",l=k?k.split(","):[],j=null,i=null,h=function(){return null!=j&&a.cancel(j),null!=i?a.cancel(i):void 0},o=function(c,d){return null==d&&(d=0),h(),j=a(function(){var a,d;return a=b.last(),null!=a&&(!l.length||(d=a.id,u.call(l,d)>=0)||a.id===c)&&(b.hide(),f[0]===a.element[0])?!0:(n.scope=e,b.show(c,f,n))},d),!0},m=function(c,d){return null==d&&(d=0),h(),i=a(function(){return b.hide(c)},d)},g.$observe("macPopover",function(a){var b,c;if(a)return"click"===n.trigger?f.bind("click",function(){return o(a,0)}):(c="focus"===n.trigger?"focusin":"mouseenter",b="focus"===n.trigger?"focusout":"mouseleave",f.bind(c,function(){return o(a,400)}),f.bind(b,function(){return m(f,500)}))})}}}]).directive("macPopover",["popover","popoverViews","util",function(a,c,d){return{restrict:"E",compile:function(e,f){var g;if(!f.id)throw Error("macPopover: Missing id");return g=d.extendAttributes("macPopover",c.popoverDefaults,f),b.extend(g,{template:e.html()}),function(b,c,d){return d.$observe("id",function(b){return a.register(b,g),c.replaceWith(document.createComment("macPopover: "+d.id))})}}}}]).directive("macPopoverFillContent",["$compile",function(a){return{restrict:"A",link:function(b,c){return c.html(b.macPopoverTemplate),a(c.contents())(b)}}}]),b.module("Mac").directive("macScrollSpy",["$window","scrollSpy","scrollSpyDefaults","util",function(a,c,d,e){return{link:function(f,g,h){var i,j;return i=e.extendAttributes("macScrollSpy",d,h),j="BODY"===g[0].tagName?b.element(a):g,j.bind("scroll",function(){var a,b,d,e,h,k,l;if(h=j.scrollTop()+i.offset,e=this.scrollHeight||g[0].scrollHeight,d=e-j.height(),!c.registered.length)return!0;if(h>=d)return c.setActive(c.last());for(b=k=0,l=c.registered.length-1;l>=0?l>=k:k>=l;b=l>=0?++k:--k)if(a=c.registered,c.active.id!==a[b].id&&h>=a[b].top&&(!a[b+1]||h<=a[b+1].top))return f.$apply(function(){return c.setActive(a[b])}),!0})}}}]).directive("macScrollSpyAnchor",["scrollSpy",function(a){return{link:function(b,c,d){var e,f,g,h;if(e=d.id||d.macScrollSpyAnchor,g=!1,!e)throw new Error("Missing scroll spy anchor id");return h=function(){return a.register(e,c),g||b.$on("$destroy",function(){return a.unregister(e)}),g=!0},b.$on("refresh-scroll-spy",h),/{{(.*)}}/.test(e)?(f=d.id?"id":"macScrollSpyAnchor",d.$observe(f,function(a){return null!=a&&a?(e=a,h()):void 0})):h()}}}]).directive("macScrollSpyTarget",["scrollSpy",function(a){return{link:function(b,c,d){var e,f,g,h;if(h=d.macScrollSpyTarget,e=d.macScrollSpyTargetClass||"active",g=!1,!h)throw new Error("Missing scroll spy target name");return f=function(d){var f;if(d)return f=function(a){var b;return b=d===a.id?"addClass":"removeClass",c[b](e)},null!=a.active&&f(a.active),g?void 0:(a.addListener(f),b.$on("$destroy",function(){return a.removeListener(f)}))},/{{(.*)}}/.test(h)?d.$observe("macScrollSpyTarget",function(a){return f(a)}):f(h)}}}]),b.module("Mac").directive("macSpinner",["util",function(a){return{restrict:"E",replace:!0,template:'
',compile:function(c){var d,e,f,g,h,i,j,k,l,m;for(i=["webkit","Moz","ms","O"],l=function(b,c){var d,e,f;for(c=a.capitalize(c),e=0,f=i.length;f>e;e++)if(d=i[e],null!=b.style[d+c])return d+c;return c},d=l(c[0],"animation"),k=l(c[0],"transform"),h=m=0;9>=m;h=++m)g=.1*h-1+!h,f=36*h,j={},e=b.element('
'),j[d]="fade 1s linear infinite "+g+"s",j[k]="rotate("+f+"deg) translate(0, 130%)",e.css(j),c.append(e);return function(a,c,d){var e,f,g;return f={size:16,zIndex:"inherit",color:"#2f3035"},e=b.element(c[0].getElementsByClassName("bar")),g=function(a){return e.css({height:.32*a+"px",left:.445*a+"px",top:.37*a+"px",width:.13*a+"px",borderRadius:.32*a*2+"px",position:"absolute"}),!isNaN(+a)&&b.isNumber(+a)&&(a=""+a+"px"),c.css({height:a,width:a})},null!=d.macSpinnerSize?d.$observe("macSpinnerSize",function(a){return null!=a&&a?g(a):void 0}):g(f.size),d.$observe("macSpinnerZIndex",function(a){return null!=a&&a?c.css("z-index",a):void 0}),null!=d.macSpinnerColor?d.$observe("macSpinnerColor",function(a){return null!=a&&a?e.css("background",a):void 0}):e.css("background",f.color)}}}}]);var u=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b.module("Mac").directive("macTagAutocomplete",["$parse","$timeout","keys","util",function(a,c,d,e){return{restrict:"E",template:'
  • ×
    {{getTagLabel(tag)}}
',replace:!0,priority:800,scope:{url:"=macTagAutocompleteUrl",placeholder:"=macTagAutocompletePlaceholder",selected:"=macTagAutocompleteSelected",source:"=macTagAutocompleteSource",disabled:"=macTagAutocompleteDisabled",model:"=macTagAutocompleteModel",onEnter:"&macTagAutocompleteOnEnter",onKeydown:"&macTagAutocompleteOnKeydown"},compile:function(f,g){var h,i,j,k,l,m,n,o,p;return p=g.macTagAutocompleteValue,null==p&&(p="id"),o=a(p),k=g.macTagAutocompleteLabel,null==k&&(k="name"),j=a(k),l=g.macTagAutocompleteQuery||"q",i=+g.macTagAutocompleteDelay||800,n=!1,m=b.element(f[0].getElementsByClassName("mac-autocomplete")),h={"mac-autocomplete-label":k,"mac-autocomplete-query":l,"mac-autocomplete-delay":i},null!=g.macTagAutocompleteUrl?h["mac-autocomplete-url"]="url":(n=null!=g.macTagAutocompleteSource)&&(h["mac-autocomplete-source"]="autocompleteSource"),m.attr(h),function(f,g,h){var i,l;return f.textInput="",f.autocompleteSource=b.isArray(f.source)?[]:f.source,null!=h.macTagAutocompleteModel&&(f.$watch("textInput",function(a){return f.model=a}),f.$watch("model",function(a){return f.textInput=a})),f.focusTextInput=function(){var a;return a=g[0].getElementsByClassName("mac-autocomplete"),a[0].focus()},f.getTagLabel=function(a){return k?j(a):a},c(function(){var c,d,i,j,k,l,n,o;if(i=h.macTagAutocompleteEvents){for(m=b.element(g[0].getElementsByClassName("text-input")),n=i.split(","),o=[],k=0,l=n.length;l>k;k++)j=n[k],j=e.trim(j),c=e.capitalize(j),d=h["macTagAutocompleteOn"+c],d&&"keydown"!==j&&o.push(function(b,c){return m.bind(b,function(b){var d;return d=a(c),f.$apply(function(){return d(f.$parent,{$event:b,item:f.textInput})})})}(j,d));return o}},0,!1),i=function(){var a,c,d,e,g;return f.autocompletePlaceholder=(null!=(g=f.selected)?g.length:void 0)?"":f.placeholder,n&&b.isArray(f.source)?(e=function(){var a,b,d,e;for(d=f.source||[],e=[],a=0,b=d.length;b>a;a++)c=d[a],e.push(o(c));return e}(),d=function(){var a,b,d,e;for(d=f.selected||[],e=[],a=0,b=d.length;b>a;a++)c=d[a],e.push(o(c));return e}(),a=function(){var a,b,f;for(f=[],a=0,b=e.length;b>a;a++)c=e[a],u.call(d,c)<0&&f.push(c);return f}(),f.autocompleteSource=function(){var b,d,e,g,h;for(e=f.source||[],h=[],b=0,d=e.length;d>b;b++)c=e[b],g=o(c),u.call(a,g)>=0&&h.push(c);return h}()):void(f.autocompleteSource=f.source)},n&&(l=b.isArray(f.source)?"$watchCollection":"$watch",f[l]("source",i)),f.$watchCollection("selected",i),f.onKeyDown=function(a){var b,c;switch(b=a.which||a.keyCode){case d.BACKSPACE:f.textInput||"function"==typeof(c=f.selected).pop&&c.pop();break;case d.ENTER:f.textInput.length>0&&f.disabled&&f.onSelect(f.textInput)}return null!=h.macTagAutocompleteOnKeydown&&"function"==typeof f.onKeydown&&f.onKeydown({$event:a,value:f.textInput}),!0},f.onSuccess=function(a){var b,c;return b=function(){var a,b,d,e;for(d=f.selected||[],e=[],a=0,b=d.length;b>a;a++)c=d[a],e.push(o(c));return e}(),function(){var d,e,f,g,h;for(f=a.data,h=[],d=0,e=f.length;e>d;d++)c=f[d],g=o(c)||c,u.call(b,g)<0&&h.push(c);return h}()},f.onSelect=function(a){return null!=h.macTagAutocompleteOnEnter&&(a=f.onEnter({item:a})),a&&f.selected.push(a),c(function(){return f.textInput=""},0)},f.$on("mac-tag-autocomplete-clear-input",function(){return f.textInput=""})}}}}]),b.module("Mac").directive("macTime",["$filter","$timeout","keys","util",function(a,b,c,d){var e;return e={"default":"12:00 AM"},{restrict:"E",require:"ngModel",replace:!0,template:'',link:function(f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;return n=d.extendAttributes("macTime",e,h),v=null,h.placeholder||h.$set("placeholder","--:--"),w=function(a){return!a||d.timeRegex.exec(a)?(i.$setValidity("time",!0),a):void i.$setValidity("time",!1)},i.$formatters.push(w),i.$parsers.push(w),(m=function(){var a;return a=(new Date).toDateString(),v=new Date(a+" "+n["default"]),isNaN(v.getTime())?v=new Date(a+" "+e["default"]):void 0})(),j=function(){var a;switch(a=g[0].selectionStart,!1){case!(a>=0&&3>a):return"hour";case!(a>=3&&6>a):return"minute";case!(a>=6&&9>a):return"meridian"}},t=function(a,c){return b(function(){return g[0].setSelectionRange(a,c)},0,!1)},o=function(){return t(0,2)},q=function(){return t(3,5)},p=function(){return t(6,8)},r=function(){switch(j()){case"hour":return q();case"minute":case"meridian":return p()}},s=function(){switch(j()){case"hour":case"minute":return o();case"meridian":return q()}},u=function(a){var b;return b=v.getHours(),b>=12&&"AM"===a&&(b-=12),12>b&&"PM"===a&&(b+=12),v.setHours(b)},x=function(){var a;return a=v.getHours(),v.setHours((a+12)%24)},k=function(a){return v.setHours(v.getHours()+a)},l=function(a){return v.setMinutes(v.getMinutes()+a)},y=function(){var b;return b=a("date")(v.getTime(),"hh:mm a"),b!==i.$viewValue?(i.$setViewValue(b),i.$render()):void 0},z=function(){var a,b,c,e;return(e=d.timeRegex.exec(i.$modelValue))?(a=+e[1],c=+e[2],b=e[3],"PM"===b&&12!==a&&(a+=12),"AM"===b&&12===a&&(a=0),v.setHours(a,c)):void 0},g.on("blur",function(){return f.$apply(function(){return y()})}),g.on("click",function(){return f.$apply(function(){switch(z(),y(),j()){case"hour":return o();case"minute":return q();case"meridian":return p()}})}),g.on("keydown",function(a){var b;return b=a.which,b!==c.UP&&b!==c.DOWN&&b!==c.LEFT&&b!==c.RIGHT&&b!==c.A&&b!==c.P?!0:(a.preventDefault(),f.$apply(function(){var a,d;switch(b){case c.UP:case c.DOWN:switch(a=b===c.UP?1:-1,j()){case"hour":k(a),o();break;case"minute":l(a),q();break;case"meridian":x(),p()}return y();case c.LEFT:case c.RIGHT:switch(b){case c.LEFT:s();break;case c.RIGHT:r()}return y();case c.A:case c.P:switch(d="meridian"===j(),!1){case!(d&&b===c.A):u("AM");break;case!(d&&b===c.P):u("PM")}return y(),p()}}))}),g.on("keyup",function(a){var b;return b=a.which,c.NUMPAD0<=b&&b<=c.NUMPAD9||c.ZERO<=b&&b<=c.NINE||a.preventDefault(),f.$apply(function(){return z()})})}}}]),b.module("Mac").directive("macTooltip",["$timeout","util",function(a,c){return{restrict:"A",link:function(d,e,f){var g,h,i,j,k,l,m,n,o;return o=null,m="",i=!1,h=!1,g={direction:"top",trigger:"hover",inside:!1},j=c.extendAttributes("macTooltip",g,f),l=function(){var a,c,d,f;if(h||!m)return!0;switch(d=j.inside?e:b.element(document.body),k(0),o=b.element('
'+m+"
"),d.append(o),c=j.inside?{top:0,left:0}:e.offset(),a={width:e.outerWidth(),height:e.outerHeight()},f={width:o.outerWidth(),height:o.outerHeight()},j.direction){case"bottom":case"top":c.left+=a.width/2-f.width/2;break;case"left":case"right":c.top+=a.height/2-f.height/2}switch(j.direction){case"bottom":c.top+=a.height;break;case"top":c.top-=f.height;break;case"left":c.left-=f.width;break;case"right":c.left+=a.width}return c.top=Math.max(0,c.top),c.left=Math.max(0,c.left),b.forEach(c,function(a,c){return!isNaN(+a)&&b.isNumber(+a)&&(a=""+a+"px"),o.css(c,a)}),o.addClass("visible"),!0},k=function(b){return null==b&&(b=100),null!=o&&(o.removeClass("visible"),a(function(){return null!=o&&o.remove(),o=null},b,!1)),!0},n=function(){return null!=o?k():l()},f.$observe("macTooltip",function(a){var b;if(null!=a&&(m=a,!i)){if("hover"!==(b=j.trigger)&&"click"!==b)throw"Invalid trigger";switch(j.trigger){case"click":e.bind("click",n);break;case"hover":e.bind("mouseenter",l),e.bind("mouseleave click",function(){return k()})}return i=!0}}),null!=f.macTooltipDisabled&&d.$watch(f.macTooltipDisabled,function(a){return h=a}),d.$on("$destroy",function(){return null!=o?k(0):void 0})}}}]),b.module("Mac").filter("boolean",function(){return function(a,b,c){return null==b&&(b="true"),null==c&&(c="false"),a?b:c}}),b.module("Mac").filter("true",function(){return function(a,b){return null==b&&(b="true"),a?b:""}}),b.module("Mac").filter("false",function(){return function(a,b){return null==b&&(b="false"),a?"":b}}),b.module("Mac").filter("list",[function(){return function(a,b){return null==b&&(b=", "),a.join(b)}}]),b.module("Mac").filter("pluralize",["util",function(a){return function(b,c,d){return null==d&&(d=!0),a.pluralize(b,c,d)}}]),b.module("Mac").filter("timestamp",["util",function(a){var b;return b=function(b,c){return c=a.pluralize(c,b),""+b+" "+c+" ago"},function(a){var c,d,e,f,g,h,i,j;return a=+a,c=Math.round(Date.now()/1e3),h=c-a,45>h?"just now":120>h?"about a minute ago":(j=Math.floor(h/31536e3),j>0?b(j,"year"):(g=Math.floor(h/2678400),g>0?b(g,"month"):(i=Math.floor(h/604800),i>0?b(i,"week"):(d=Math.floor(h/86400),d>0?b(d,"day"):(e=Math.floor(h/3600),e>0?b(e,"hour"):(f=Math.floor(h/60),f>0?b(f,"min"):""+h+" seconds ago"))))))}}]);var v=[].slice;b.module("Mac").filter("underscoreString",function(){return function(){var a,b,c;return c=arguments[0],a=arguments[1],b=3<=arguments.length?v.call(arguments,2):[],b.unshift(c),_.string[a].apply(this,b)}}),b.module("Mac").service("modal",["$rootScope","$animate","$templateCache","$compile","$http","$controller","modalViews","keys",function(c,d,e,f,g,h,i,k){return{registered:i.registered,waiting:null,opened:null,modalTemplate:'
\n
\n \n
\n
\n
',show:function(a,i){var k,l,m,n,o,p,q;if(null==i&&(i={}),null!=this.registered[a]&&null!=this.opened)return this.hide();if(null==this.registered[a])return this.waiting={id:a,options:i};if(k=this.registered[a],l=k.options,p={},b.extend(p,l,i),o=function(b){return function(e){return p.beforeShow(e.scope()),d.removeClass(e,"hide",function(){return d.addClass(e,"visible",function(){return b.opened={id:a,element:e,options:p},b.resize(b.opened),b.bindingEvents(),p.open(e.scope()),p.afterShow(e.scope()),c.$broadcast("modalWasShown",a),b.clearWaiting()})})}}(this),null!=p.moduleMethod){if(n=function(e){return function(g){var i,k,l;return j(p.scope)?k=p.scope:(k=c.$new(!0),b.isObject(p.scope)&&b.extend(k,p.scope)),b.extend(p.attributes,{id:a}),i=b.element(e.modalTemplate).attr(p.attributes),l=b.element(i[0].getElementsByClassName("mac-modal-content-wrapper")),l.html(g),p.overlayClose&&i.bind("click",function(a){return b.element(a.target).hasClass("mac-modal-overlay")?k.$apply(function(){return e.hide()}):void 0}),p.controller&&h(p.controller,{$scope:k,$element:i,macModalOptions:p}),d.enter(i,b.element(document.body)),f(i)(k),o(i)}}(this),m=p.templateUrl)return q=e.get(m),q?n(q):g.get(m).then(function(a){return e.put(m,a.data),n(a.data)},function(){throw Error("Failed to load template: "+m)});if(q=p.template)return n(q)}else if(null!=k.element)return o(k.element)},resize:function(c){var d,e,f,g,h,i;return null==c&&(c=this.opened),null!=c&&(e=c.element,h=c.options,h.position)?(g=b.element(e[0].getElementsByClassName("mac-modal")).attr("style",""),f=g.outerHeight(),i=g.outerWidth(),d=b.element(a).height()>f?{marginTop:-f/2}:{top:h.topOffset},d.marginLeft=-i/2,b.forEach(d,function(a,c){return!isNaN(+a)&&b.isNumber(+a)&&(a=""+a+"px"),g.css(c,a)})):void 0},hide:function(a){var b,e,f,g;if(null!=this.opened)return g=this.opened,e=g.id,f=g.options,b=g.element,f.beforeHide(b.scope()),d.removeClass(b,"visible",function(g){return function(){return g.bindingEvents("unbind"),g.opened=null,f.moduleMethod?(j(f.scope)||b.scope().$destroy(),d.leave(b)):d.addClass(b,"hide"),f.afterHide(b.scope()),c.$broadcast("modalWasHidden",e),a&&a()}}(this))},bindingEvents:function(c){var d,e,f;return null==c&&(c="bind"),"bind"!==c&&"unbind"!==c||null==this.opened?void 0:(d=function(a){return function(b){return b.which===k.ESCAPE?a.hide():void 0}}(this),f=function(a){return function(){return a.resize()}}(this),e=this.opened.options,e.keyboard&&b.element(document)[c]("keydown",d),e.resize?b.element(a)[c]("resize",f):void 0)},register:function(a,c,d){var e;if(null!=this.registered[a])throw new Error("Modal "+a+" already registered");return e={},b.extend(e,i.defaults,d),this.registered[a]={id:a,element:c,options:e},null!=this.waiting&&this.waiting.id===a?this.show(a,this.waiting.options):void 0},unregister:function(a){var b;if(null==this.registered[a])throw new Error("Modal "+a+" is not registered");return(null!=(b=this.opened)?b.id:void 0)===a&&this.hide(),this.clearWaiting(a),delete this.registered[a]},clearWaiting:function(a){var b;if(null==a||(null!=(b=this.waiting)?b.id:void 0)===a)return this.waiting=null}}}]).provider("modalViews",function(){return this.registered={},this.defaults={keyboard:!1,overlayClose:!1,resize:!0,position:!0,open:b.noop,topOffset:20,attributes:{},beforeShow:b.noop,afterShow:b.noop,beforeHide:b.noop,afterHide:b.noop},this.$get=function(){return this},this}).config(["modalViewsProvider",function(a){return b.module("Mac").modal=function(c,d){var e; -return null==a.registered[c]?(e={},b.extend(e,a.defaults,d,{moduleMethod:!0}),a.registered[c]={id:c,options:e}):void 0}}]),b.module("Mac").provider("popoverViews",function(){return this.registered={},this.defaults={fixed:!1,childPopover:!1,offsetY:0,offsetX:0,trigger:"click"},this.popoverDefaults={footer:!1,header:!1,title:"",direction:"above left"},this.template='
\n
\n
\n
{{macPopoverTitle}}
\n
\n
\n
',this.$get=function(){return this},this}).service("popover",["$animate","$compile","$controller","$http","$rootScope","$templateCache","$timeout","popoverViews",function(c,d,e,f,g,h,i,k){var l;return l={popoverList:[],registered:k.registered,last:function(){return this.popoverList[this.popoverList.length-1]},register:function(a,b){var c;return(c=null!=this.registered[a])||(this.registered[a]=b),!c},unregister:function(a){var b;return(b=null!=this.registered[a])&&delete this.registered[a],b},add:function(a,b,c,d){var e;return e={id:a,popover:b,element:c,options:d},this.popoverList.push(e),e},pop:function(){return this.popoverList.pop()},show:function(a,i,m){var n,o;return null==m&&(m={}),(o=this.registered[a])?(n=function(){var n,p,q;return p=function(f){var h,n,p;return j(m.scope)?p=m.scope.$new():(p=g.$new(!0),b.isObject(m.scope)&&b.extend(p,m.scope)),o.refreshOn&&p.$on(o.refreshOn,function(){return l.resize(a)}),o.controller&&e(o.controller,{$scope:p}),b.extend(p,{macPopoverClasses:{footer:o.footer||!1,header:o.header||!!o.title||!1,fixed:o.fixed||!1},macPopoverTitle:o.title||"",macPopoverTemplate:f}),h=d(k.template)(p),h.attr({id:a,direction:o.direction||"below left"}),n=l.add(a,h,i,m),c.addClass(i,"active"),g.$broadcast("popoverWasShown",a),c.enter(h,b.element(document.body),null,function(){return l.resize(n)})},(q=o.template)?p(q):(n=o.templateUrl)?(q=h.get(n),q?p(q):f.get(n).then(function(a){return h.put(n,a.data),p(a.data)},function(){throw new Error("Failed to load template: #{path}")})):void 0},l.popoverList.length&&!m.childPopover?l.hide(n):n(),!0):!1},getById:function(a,b){var c,d,e,f,g;for(g=this.popoverList,e=0,f=g.length;f>e;e++)if(c=g[e],d=null==b||c.element===b,c.id===a&&d)return c},resize:function(c){var d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t;return b.isString(c)&&(c=l.getById(c)),null!=c?(g=c.popover,p=c.element,m=c.options,d=b.element(a),k=p.offset(),m.fixed&&(k.top=p.position().top),o={height:p.outerHeight(),width:p.outerWidth()},f={height:g.outerHeight(),width:g.outerWidth()},r=0,i=0,n=(g.attr("direction")||"top left").trim(),q=function(a){var c,d;return null==a&&(a=0),c=b.element(g[0].getElementsByClassName("tip")),r-=a,d=+c.css("margin-top").replace("px",""),c.css("margin-top",d+a)},t=function(){switch(n){case"above left":return r=-(f.height+10),i=-25+o.width/2;case"above right":return r=-(f.height+10),i=25+o.width/2-f.width;case"below left":return r=o.height+10,i=-25+o.width/2;case"below right":return r=o.height+10,i=25+o.width/2-f.width;case"middle right":return r=o.height/2-f.height/2,i=o.width+10;case"middle left":return r=o.height/2-f.height/2,i=-(f.width+10)}},t(),s=m.fixed?0:d.scrollTop(),j=m.fixed?0:d.scrollLeft(),e={},-1===n.indexOf("middle")?k.top+r-s<0?e={remove:"above",add:"below"}:k.top+r+f.height-s>d.height()&&(e={remove:"below",add:"above"}):(h=k.top+r-s)<0?q(h):(h=k.top+r+g.outerHeight()-s-d.height())>0&&q(h),e.remove&&e.add&&(n=n.replace(e.remove,e.add)),e={},k.left+i-j<0?e={remove:"right",add:"left"}:k.left+i+g.outerWidth()-j>d.width()&&(e={remove:"left",add:"right"}),e.remove&&e.add&&(n=n.replace(e.remove,e.add)),t(),k.top+=r,k.left+=i,null!=m.offsetX&&(k.left+=m.offsetX),null!=m.offsetY&&(k.top+=m.offsetY),b.forEach(k,function(a,b){return isNaN(+a)||(a=""+a+"px"),g.css(b,a)}),g.addClass("visible "+n)):void 0},hide:function(a,d){var e,f,h,i,j,k,l;if(!this.popoverList.length)return"function"==typeof d?d():void 0;if(b.isFunction(a)&&(d=a,a=null),null!=a){for(e=b.isString(a)?function(b){return b.id===a}:b.isElement(a)?function(b){return b.element===a}:void 0,h=-1,f=k=l=this.popoverList.length-1;k>=0;f=k+=-1)if(e(this.popoverList[f])){i=this.popoverList[f],h=f;break}h>-1&&this.popoverList.splice(h,1)}else i=this.pop();return null!=i?(g.$broadcast("popoverBeforeHide",i.id),j=i.popover.scope(),c.leave(i.popover,function(){return c.removeClass(i.element,"active"),g.$broadcast("popoverWasHidden",i.id),j.$destroy(),"function"==typeof d?d():void 0})):void 0},hideAll:function(){for(;this.popoverList.length;)this.hide()}}}]).config(["popoverViewsProvider",function(a){return b.module("Mac").popover=function(c,d){var e;return null==a.registered[c]?(e={},b.extend(e,a.popoverDefaults,d,{id:c}),a.registered[c]=e):void 0}}]),b.module("Mac").service("scrollSpy",[function(){return{registered:[],active:{},listeners:[],register:function(a,b){var c,d,e,f,g,h,i;for(e=!1,f=b.offset().top,i=this.registered,d=g=0,h=i.length;h>g;d=++g)if(c=i[d],c.id===a){this.registered[d]={id:a,element:b,top:f},e=!0;break}return e||this.registered.push({id:a,element:b,top:f}),this.registered.sort(function(a,b){return a.top>b.top?1:a.topd;c=++d)if(b=f[c],b.id===a){[].splice.apply(this.registered,[c,c-c+1].concat(g=[])),g;break}return h},last:function(){return this.registered[this.registered.length-1]},setActive:function(a){var b,c,d,e,f;for(this.active=a,e=this.listeners,f=[],c=0,d=e.length;d>c;c++)b=e[c],f.push(b(a));return f},addListener:function(a){return this.listeners.push(a)},removeListener:function(a){var b,c;return b=this.listeners.indexOf(a),-1!==b?([].splice.apply(this.listeners,[b,b-b+1].concat(c=[])),c):void 0}}}]).constant("scrollSpyDefaults",{offset:0});var w={}.hasOwnProperty;b.module("Mac.Util",[]).factory("util",["$filter",function(a){return{_inflectionConstants:{uncountables:["sheep","fish","moose","series","species","money","rice","information","info","equipment","min"],irregulars:{child:"children",man:"men",woman:"women",person:"people",ox:"oxen",goose:"geese"},pluralizers:[[/(quiz)$/i,"$1zes"],[/([m|l])ouse$/i,"$1ice"],[/(matr|vert|ind)(ix|ex)$/i,"$1ices"],[/(x|ch|ss|sh)$/i,"$1es"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/(?:([^f])fe|([lr])f)$/i,"$1$2ves"],[/sis$/i,"ses"],[/([ti])um$/i,"$1a"],[/(buffal|tomat)o$/i,"$1oes"],[/(bu)s$/i,"$1ses"],[/(alias|status)$/i,"$1es"],[/(octop|vir)us$/i,"$1i"],[/(ax|test)is$/i,"$1es"],[/x$/i,"xes"],[/s$/i,"s"],[/$/,"s"]]},pluralize:function(c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q;if(null==c&&(c=""),null==e&&(e=!1),!b.isString(c)||0===this.trim(c).length)return c;if(e&&isNaN(+d))return"";if(null==d&&(d=2),q=this._inflectionConstants,l=q.pluralizers,m=q.uncountables,f=q.irregulars,n=c.split(/\s/).pop(),g=n.toUpperCase()===n,h=n.toLowerCase(),j=1===d||m.indexOf(h)>=0?n:null,null==j&&null!=f[h]&&(j=f[h]),null==j)for(o=0,p=l.length;p>o;o++)if(k=l[o],k[0].test(h)){j=n.replace(k[0],k[1]);break}return j||(j=n),g&&(j=j.toUpperCase()),i=c.slice(0,-n.length)+j,e?""+a("number")(d)+" "+i:i},trim:function(a){var b;return b=String(a)||"",null!=String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/gm,"")},capitalize:function(a){var b;return b=String(a)||"",b.charAt(0).toUpperCase()+b.substring(1)},uncapitalize:function(a){var b;return b=String(a)||"",b.charAt(0).toLowerCase()+b.substring(1)},toCamelCase:function(a){return null==a&&(a=""),this.trim(a).replace(/[-_\s]+(.)?/g,function(a,b){return b.toUpperCase()})},toSnakeCase:function(a){return null==a&&(a=""),this.trim(a).replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()},convertKeysToCamelCase:function(a){var b,c,d;c={};for(b in a)w.call(a,b)&&(d=a[b],b=this.toCamelCase(b),"object"==typeof d&&(null!=d?d.constructor:void 0)!==Array&&(d=this.convertKeysToCamelCase(d)),c[b]=d);return c},convertKeysToSnakeCase:function(a){var b,c,d;c={};for(b in a)w.call(a,b)&&(d=a[b],b=this.toSnakeCase(b),"object"==typeof d&&(null!=d?d.constructor:void 0)!==Array&&(d=this.convertKeysToSnakeCase(d)),c[b]=d);return c},pyth:function(a,b){return Math.sqrt(a*a+b*b)},degrees:function(a){return 180*a/Math.PI},radian:function(a){return a*Math.PI/180},hex2rgb:function(a){var b,c,d;0===a.indexOf("#")&&(a=a.substring(1)),a=a.toLowerCase(),c={},3===a.length?(c.r=a.charAt(0)+a.charAt(0),c.g=a.charAt(1)+a.charAt(1),c.b=a.charAt(2)+a.charAt(2)):(c.r=a.substring(0,2),c.g=a.substring(2,4),c.b=a.substring(4));for(b in c)d=c[b],c[b]=parseInt(d,16);return c},timeRegex:/^(0?[1-9]|1[0-2]):([0-5][0-9])[\s]([AP]M)$/,_urlRegex:/(?:(http[s]?):\/\/)?(?:(www|[\d\w\-]+)\.)?([\d\w\-]+)\.([A-Za-z]{2,6})(:[\d]*)?([:\/?#\[\]@!$&'()*+,;=\w\d-._~%\\]*)?/i,_emailRegex:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,validateUrl:function(a){var b;return b=this._urlRegex.exec(a),null!=b&&(b={url:b[0],protocol:b[1]||"http",subdomain:b[2],name:b[3],domain:b[4],port:b[5],path:b[6]||"/"},b.url=b.url),b},validateEmail:function(a){return this._emailRegex.test(a)},getQueryString:function(a,b){var c,d,e;return null==b&&(b=""),b=b.replace(/[[]/,"[").replace(/[]]/,"]"),d="[?&]"+b+"=([^&#]*)",c=new RegExp(d),e=c.exec(a),null!=e?e[1]:""},parseUrlPath:function(a){var b,c,d,e,f,g,h,i,j,k,l;if(g=a.split("?"),c=g[0].split("/"),b=c.slice(0,c.length-1).join("/"),i=c[c.length-1],d={},g.length>1)for(f=g[g.length-1],l=f.split("&"),j=0,k=l.length;k>j;j++)e=l[j],h=e.split("="),d[h[0]]=null!=h[1]?h[1]:"";return{fullPath:a,path:b,pathComponents:c,verb:i,queries:d}},extendAttributes:function(a,b,c){var d,e,f,g,h,i,j;null==a&&(a=""),g={};for(e in b)w.call(b,e)&&(h=b[e],d=a?this.capitalize(e):e,f=""+a+d,g[e]=null!=c[f]?c[f]||!0:h,"true"===(i=g[e])||"false"===i?g[e]="true"===g[e]:(null!=(j=g[e])?j.length:void 0)>0&&!isNaN(+g[e])&&(g[e]=+g[e]));return g}}}])}(window,window.angular); \ No newline at end of file diff --git a/src/styles/macgyver.css b/src/styles/macgyver.css new file mode 100644 index 0000000..2aca701 --- /dev/null +++ b/src/styles/macgyver.css @@ -0,0 +1,721 @@ +.mac-date-time.ng-invalid-date,.mac-date-time.ng-invalid-time { + background: #ffe2e2; + border: solid 1px #dea9a9; +} + +.close,.close-modal { + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + border-radius: 9px; + display: block; + background: #bdc0c7; + position: relative; + opacity: 1; + -ms-filter: none; + filter: none; +} + +.close:after,.close-modal:after { + content: ''; + display: block; + width: 2px; + height: 10px; + background: #fff; + position: absolute; + top: 4px; + left: 8px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.close:before,.close-modal:before { + content: ''; + display: block; + width: 2px; + height: 10px; + background: #fff; + position: absolute; + top: 4px; + left: 8px; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.close:hover,.close-modal:hover { + background: #828590; +} + +.hide { + display: none; +} + +.affix { + position: fixed; +} + +.affix-bottom { + position: absolute; +} + +.mac-menu { + position: absolute; + top: 0; + left: 0; + min-width: 200px; + background: #fff; + -webkit-box-shadow: 0 3px 6px rgba(0,0,0,0.2); + box-shadow: 0 3px 6px rgba(0,0,0,0.2); + border: 1px solid #d1d3d8; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-height: 325px; + overflow-y: auto; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + visibility: hidden; + -webkit-transition: opacity 0.1s ease-out, visibility 0.1s ease-out; + -moz-transition: opacity 0.1s ease-out, visibility 0.1s ease-out; + -o-transition: opacity 0.1s ease-out, visibility 0.1s ease-out; + -ms-transition: opacity 0.1s ease-out, visibility 0.1s ease-out; + transition: opacity 0.1s ease-out, visibility 0.1s ease-out; +} + +.mac-menu.visible { + visibility: visible; + opacity: 1; + -ms-filter: none; + filter: none; +} + +.mac-menu ul { + list-style: none; + margin: 0; + padding-left: 0; +} + +.mac-menu ul .mac-menu-item { + display: block; + padding: 5px 10px; + -webkit-transition: background 0.1s ease-out; + -moz-transition: background 0.1s ease-out; + -o-transition: background 0.1s ease-out; + -ms-transition: background 0.1s ease-out; + transition: background 0.1s ease-out; + color: #000; + cursor: pointer; +} + +.mac-menu ul .mac-menu-item.active { + background: #e0e8fb; + -webkit-transition: 0; + -moz-transition: 0; + -o-transition: 0; + -ms-transition: 0; + transition: 0; + text-decoration: none; +} + +.mac-modal-overlay { + background-color: rgba(245,246,250,0.75); + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + overflow-y: auto; + z-index: 3; +} + +.mac-modal-overlay.visible,.mac-modal-overlay.visible-add-active { + opacity: 1; + -ms-filter: none; + filter: none; +} + +.mac-modal-overlay.visible .mac-modal,.mac-modal-overlay.visible-add-active .mac-modal { + top: 50%; +} + +.mac-modal-overlay.visible-add,.mac-modal-overlay.visible-remove { + -webkit-transition: 0.2s ease-out all; + -moz-transition: 0.2s ease-out all; + -o-transition: 0.2s ease-out all; + -ms-transition: 0.2s ease-out all; + transition: 0.2s ease-out all; +} + +.mac-modal-overlay.visible-remove-active { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); +} + +.mac-modal-overlay .mac-modal { + position: absolute; + top: 0; + left: 50%; + width: 500px; + margin-left: -251px; + background: #fff; + border: 1px solid #d1d3d8; + -webkit-box-shadow: 0 4px 10px rgba(0,0,0,0.15); + box-shadow: 0 4px 10px rgba(0,0,0,0.15); + -webkit-transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + -ms-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-transform: rotateX(0) rotateY(0); + -moz-transform: rotateX(0) rotateY(0); + -o-transform: rotateX(0) rotateY(0); + -ms-transform: rotateX(0) rotateY(0); + transform: rotateX(0) rotateY(0); +} + +.mac-modal-overlay .mac-modal:after { + content: ""; + display: block; + position: absolute; + bottom: -20px; + height: 20px; + width: 1px; +} + +.mac-modal-overlay .mac-modal .mac-close-modal { + position: absolute; + top: -5px; + right: -5px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + border-radius: 9px; + display: block; + background: #bdc0c7; + cursor: pointer; +} + +.mac-modal-overlay .mac-modal .mac-close-modal:before,.mac-modal-overlay .mac-modal .mac-close-modal:after { + content: ''; + display: block; + width: 2px; + height: 10px; + background: #fff; + position: absolute; + top: 4px; + left: 8px; +} + +.mac-modal-overlay .mac-modal .mac-close-modal:before { + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.mac-modal-overlay .mac-modal .mac-close-modal:after { + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.mac-modal-overlay .mac-modal .mac-modal-content { + padding: 20px; +} + +.mac-popover { + position: absolute; + top: 0; + left: 0; + background: #fff; + -webkit-box-shadow: 0 3px 6px rgba(0,0,0,0.2); + box-shadow: 0 3px 6px rgba(0,0,0,0.2); + border: 1px solid #d1d3d8; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transform: scale3d(0,0,0); + -moz-transform: scale3d(0,0,0); + -o-transform: scale3d(0,0,0); + -ms-transform: scale3d(0,0,0); + transform: scale3d(0,0,0); + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transform-origin: left top; + -moz-transform-origin: left top; + -o-transform-origin: left top; + -ms-transform-origin: left top; + transform-origin: left top; + visibility: hidden; + -webkit-border-radius: 3px; + border-radius: 3px; + z-index: 2; +} + +.mac-popover.fixed { + position: fixed; +} + +.mac-popover.visible { + opacity: 1; + -ms-filter: none; + filter: none; + visibility: visible; + -webkit-transform: scale3d(1,1,1); + -moz-transform: scale3d(1,1,1); + -o-transform: scale3d(1,1,1); + -ms-transform: scale3d(1,1,1); + transform: scale3d(1,1,1); + -webkit-transition: -webkit-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + -moz-transition: -moz-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + -o-transition: -o-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + -ms-transition: -ms-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + transition: transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; +} + +.mac-popover.ng-leave { + -webkit-transition: -webkit-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + -moz-transition: -moz-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + -o-transition: -o-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + -ms-transition: -ms-transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; + transition: transform 0.1s ease-out, opacity 0.1s ease-in, visibility 0.1s ease-out; +} + +.mac-popover.ng-leave.ng-leave-active { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transform: scale3d(0,0,0); + -moz-transform: scale3d(0,0,0); + -o-transform: scale3d(0,0,0); + -ms-transform: scale3d(0,0,0); + transform: scale3d(0,0,0); + visibility: hidden; +} + +.mac-popover .tip { + display: block; + width: 0; + height: 0; + border-bottom: 9px solid #d1d3d8; + border-left: 9px solid rgba(255,255,255,0); + border-right: 9px solid rgba(255,255,255,0); + position: absolute; + top: -9px; + left: 15px; +} + +.mac-popover .tip:after { + content: ''; + display: block; + width: 0; + height: 0; + border-bottom: 8px solid #fff; + border-left: 8px solid rgba(255,255,255,0); + border-right: 8px solid rgba(255,255,255,0); + position: absolute; + top: 1px; + left: -8px; +} + +.mac-popover.above { + -webkit-transform-origin: left bottom; + -moz-transform-origin: left bottom; + -o-transform-origin: left bottom; + -ms-transform-origin: left bottom; + transform-origin: left bottom; +} + +.mac-popover.above .tip { + top: auto; + bottom: -9px; + border-top: 9px solid #d1d3d8; + border-bottom: 0; +} + +.mac-popover.above .tip:after { + top: auto; + bottom: 1px; + border-top: 8px solid #fff; + border-bottom: 0; +} + +.mac-popover.above.right { + -webkit-transform-origin: right bottom; + -moz-transform-origin: right bottom; + -o-transform-origin: right bottom; + -ms-transform-origin: right bottom; + transform-origin: right bottom; +} + +.mac-popover.above.right .tip { + left: auto; + right: 15px; +} + +.mac-popover.below.right { + -webkit-transform-origin: right top; + -moz-transform-origin: right top; + -o-transform-origin: right top; + -ms-transform-origin: right top; + transform-origin: right top; +} + +.mac-popover.below.right .tip { + left: auto; + right: 15px; +} + +.mac-popover.middle .tip { + top: 50%; + margin-top: -9px; + border-top: 9px solid rgba(255,255,255,0); + border-bottom: 9px solid rgba(255,255,255,0); +} + +.mac-popover.middle .tip:after { + border-top: 8px solid rgba(255,255,255,0); + border-bottom: 8px solid rgba(255,255,255,0); + top: -8px; +} + +.mac-popover.middle.right { + -webkit-transform-origin: left center; + -moz-transform-origin: left center; + -o-transform-origin: left center; + -ms-transform-origin: left center; + transform-origin: left center; +} + +.mac-popover.middle.right .tip { + border-left: 0; + border-right: 9px solid #d1d3d8; + left: -9px; +} + +.mac-popover.middle.right .tip:after { + border-left: 0; + border-right: 8px solid #fff; + left: 1px; +} + +.mac-popover.middle.left { + -webkit-transform-origin: right center; + -moz-transform-origin: right center; + -o-transform-origin: right center; + -ms-transform-origin: right center; + transform-origin: right center; +} + +.mac-popover.middle.left .tip { + border-right: 0; + border-left: 9px solid #d1d3d8; + right: -9px; + left: auto; +} + +.mac-popover.middle.left .tip:after { + border-right: 0; + border-left: 8px solid #fff; + right: 1px; + left: auto; +} + +.mac-popover .popover-header { + background: #eaecf1; + display: none; +} + +.mac-popover .popover-header .title { + font-size: 13px; + font-weight: bold; + line-height: 33px; + padding-left: 10px; + padding-top: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + margin-right: 40px; +} + +.mac-popover .popover-header .close { + float: right; + margin: 7px 10px 0 0; + display: none; +} + +.mac-popover .popover-content { + max-height: 415px; + overflow-y: auto; + overflow-x: hidden; + position: relative; +} + +.mac-popover .popover-footer { + display: none; +} + +.mac-popover.footer { + padding-bottom: 42px; +} + +.mac-popover.footer .popover-footer { + display: block; + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px; + -webkit-box-shadow: 0 -1px 5px rgba(0,0,0,0.15); + box-shadow: 0 -1px 5px rgba(0,0,0,0.15); +} + +.mac-popover.header .popover-header { + display: block; +} + +.mac-popover.header.below .tip:after { + border-bottom: 8px solid #eaecf1; +} + +.mac-popover.header.middle.left .tip:after { + border-left: 8px solid #eaecf1; +} + +.mac-popover.header.middle.right .tip:after { + border-right: 8px solid #eaecf1; +} + +.mac-spinner,.mac-cspinner { + display: inline-block; + position: relative; +} + +.mac-spinner.block,.mac-cspinner.block { + display: block; + margin: 0 auto; +} + +@-moz-keyframes fade { + 0% { + opacity: 1; + -ms-filter: none; + filter: none; + } + + 100% { + opacity: .02; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=2)"; + filter: alpha(opacity=2); + } +} + +@-webkit-keyframes fade { + 0% { + opacity: 1; + -ms-filter: none; + filter: none; + } + + 100% { + opacity: .02; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=2)"; + filter: alpha(opacity=2); + } +} + +@-o-keyframes fade { + 0% { + opacity: 1; + -ms-filter: none; + filter: none; + } + + 100% { + opacity: .02; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=2)"; + filter: alpha(opacity=2); + } +} + +@keyframes fade { + 0% { + opacity: 1; + -ms-filter: none; + filter: none; + } + + 100% { + opacity: .02; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=2)"; + filter: alpha(opacity=2); + } +} + +.mac-tag-autocomplete { + position: relative; + display: inline-block; + border: 1px solid #aaa; + background: #fff; + margin: 0; + padding: 0; +} + +.mac-tag-autocomplete .mac-tag-list { + margin: 0; + padding-left: 0; +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag { + padding: 3px 20px 3px 5px; + margin: 3px; + position: relative; + display: inline-block; + list-style: none; + font-size: 13px; + line-height: 13px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-label { + background: -webkit-linear-gradient(top, #eaf0ff, #dee8ff); + background: -moz-linear-gradient(top, #eaf0ff, #dee8ff); + background: -o-linear-gradient(top, #eaf0ff, #dee8ff); + background: -ms-linear-gradient(top, #eaf0ff, #dee8ff); + background: linear-gradient(to bottom, #eaf0ff, #dee8ff); + border: 1px solid #bfc9e1; + text-shadow: none; + color: #000; + font-weight: normal; + -webkit-box-shadow: 0 0 2px #fff inset,0 1px 0 rgba(0,0,0,0.05); + box-shadow: 0 0 2px #fff inset,0 1px 0 rgba(0,0,0,0.05); +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag .mac-tag-close { + position: absolute; + right: 6px; + color: #9da6b7; + cursor: pointer; +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag { + white-space: nowrap; + padding: 0; +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag .text-input { + color: #666; + background: transparent; + padding: 5px; + margin: 0; + border: none !important; + -webkit-box-shadow: none; + box-shadow: none; +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag.fullwidth { + width: 100%; +} + +.mac-tag-autocomplete .mac-tag-list .mac-tag.mac-input-tag.fullwidth .text-input { + width: 90%; +} + +.mac-tooltip { + background: rgba(47,48,53,0.75); + text-align: center; + color: #fff; + padding: 5px 7px; + position: absolute; + top: 100px; + left: 100px; + font-size: 12px; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + visibility: hidden; + -webkit-transition: opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out; + -moz-transition: opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out; + -o-transition: opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out; + -ms-transition: opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out; + transition: opacity 0.1s ease-out, visibility 0.1s ease-out, margin 0.1s ease-out; + margin-top: 5px; + -webkit-border-radius: 3px; + border-radius: 3px; + z-index: 7; +} + +.mac-tooltip.visible { + visibility: visible; + opacity: 1; + -ms-filter: none; + filter: none; + margin-top: 0; +} + +.mac-tooltip:after { + content: ''; + display: block; + width: 0; + height: 0; + position: absolute; +} + +.mac-tooltip.top:after { + border-top: 6px solid rgba(47,48,53,0.75); + border-left: 6px solid transparent; + border-right: 6px solid transparent; + bottom: -6px; + left: 50%; + margin-left: -6px; +} + +.mac-tooltip.bottom:after { + border-bottom: 6px solid rgba(47,48,53,0.75); + border-left: 6px solid transparent; + border-right: 6px solid transparent; + top: -6px; + left: 50%; + margin-left: -6px; +} + +.mac-tooltip.left:after { + border-left: 6px solid rgba(47,48,53,0.75); + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + right: -6px; + top: 50%; + margin-top: -6px; +} + +.mac-tooltip.right:after { + border-right: 6px solid rgba(47,48,53,0.75); + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + left: -6px; + top: 50%; + margin-top: -6px; +} \ No newline at end of file diff --git a/src/styles/overview.less b/src/styles/overview.less index b6f8f91..a45a0d9 100644 --- a/src/styles/overview.less +++ b/src/styles/overview.less @@ -145,11 +145,19 @@ h1 { &.properties { border-top: none; - .name, .value { + border-bottom: 1px solid transparent; + .name, .val { font-size: .8rem; - color: @gray_50; padding: .25rem 0; } + .val input { + padding: 0; margin: 0; + border: none; + color: inherit; + } + color: @gray_40; + &:hover {color: @gray_60;} + } .spacer { @@ -273,11 +281,18 @@ select { .pure-button { border-radius: 0 !important; padding: .3rem .5rem; - box-shadow: 0px .1rem 0 @apigee-grey; - color: @apigee-grey; - &:hover {color: #000;} + border-bottom: 2px solid @gray_20; + color: @gray_70; + margin: 0 .5rem 0 0; .body-font(); + transition: all .2s ease; + .shadow(1); + + &:hover:not([disabled]) { + background-color: @yellow; + .shadow(4); + } } @@ -369,7 +384,8 @@ select { } button.icon { - color: @yellow; + color: mix(@yellow, @dark, 90%); + &:hover {color: @yellow;} border: none; background-color: transparent; @@ -383,14 +399,14 @@ select { .query { margin-top: 1rem; - + .search_icon, .dropdown{ text-align: center; padding-top: .5rem; } .query_set { - border-top: 1px solid @light-gray-bg; + border-top: 1px solid @gray_20; padding: 1rem 0; .reveal(); } @@ -400,16 +416,18 @@ select { margin-left: 1rem; } .search_icon { - background-image: linear-gradient(90deg, @light-gray-bg 2px, transparent 2px); + border-left: 1px solid @gray_20; } .input {padding: 0rem 0 .5rem 0;} .search_icon, .input, .dropdown{ - border-top: 2px solid @light-gray-bg; - border-bottom: 2px solid @light-gray-bg; + border-top: 1px solid @gray_20; + border-bottom: 1px solid @gray_20; height: 2.5rem; - box-shadow: 0 .1rem 0 #59595b; + //box-shadow: 0 .1rem 0 #59595b; .border-box(); + } + .dropdown{ border-right: 1px solid @gray_20; } .input { overflow: hidden; input{ @@ -418,14 +436,7 @@ select { box-shadow: none; } } - .submit { - background-image: linear-gradient(@light-gray-bg 2px, transparent 2px), - linear-gradient(to top, #59595b 2px, @light-gray-bg 2px, @light-gray-bg 4px,transparent 4px); - height: (2.5 * 16) + 2px; - - background-size: 20px 100%; - background-repeat: no-repeat; - } + .clear {padding: .5rem;} @@ -464,6 +475,7 @@ select { padding: .25rem; } +&:hover input {background-color: #fff;} } diff --git a/src/styles/source-sans.less b/src/styles/source-sans.less new file mode 100644 index 0000000..a5e9873 --- /dev/null +++ b/src/styles/source-sans.less @@ -0,0 +1,38 @@ +//100, 300, 400(normal), 700(bold) + +@font-face { + font-family: 'source-sans-pro'; + src: url('../fonts/source-sans-pro/EOT/SourceSansPro-ExtraLight.eot?') format('embedded-opentype'), + url('../fonts/source-sans-pro/TTF/SourceSansPro-ExtraLight.ttf') format('woff'), + url('../fonts/source-sans-pro/EOT/OTF/SourceSansPro-ExtraLight.ttf') format('truetype'); + font-weight: 100; + font-style: normal; +} + +@font-face { + font-family: 'source-sans-pro'; + src: url('../fonts/source-sans-pro/EOT/SourceSansPro-Light.eot?') format('embedded-opentype'), + url('../fonts/source-sans-pro/TTF/SourceSansPro-Light.ttf') format('woff'), + url('../fonts/source-sans-pro/EOT/OTF/SourceSansPro-Light.ttf') format('truetype'); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: 'source-sans-pro'; + src: url('../fonts/source-sans-pro/EOT/SourceSansPro-Regular.eot?') format('embedded-opentype'), + url('../fonts/source-sans-pro/TTF/SourceSansPro-Regular.ttf') format('woff'), + url('../fonts/source-sans-pro/EOT/OTF/SourceSansPro-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'source-sans-pro'; + src: url('../fonts/source-sans-pro/EOT/SourceSansPro-Bold.eot?') format('embedded-opentype'), + url('../fonts/source-sans-pro/TTF/SourceSansPro-Bold.ttf') format('woff'), + url('../fonts/source-sans-pro/EOT/OTF/SourceSansPro-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + diff --git a/src/styles/styles.css b/src/styles/styles.css index 1f9afca..c6ed554 100644 --- a/src/styles/styles.css +++ b/src/styles/styles.css @@ -15,24 +15,6 @@ font-weight: 700; font-style: normal; } -@font-face { - font-family: "jaf-facitweb"; - src: url(data:font/opentype;base64,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); - font-style: normal; - font-weight: 300; -} -@font-face { - font-family: "jaf-facitweb"; - src: url(data:font/opentype;base64,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); - font-style: normal; - font-weight: 400; -} -@font-face { - font-family: "jaf-facitweb"; - src: url(data:font/opentype;base64,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); - font-style: normal; - font-weight: 700; -} @font-face { font-family: 'SSPika'; src: url('../fonts/ss-pika.eot?') format('embedded-opentype'), url('../fonts/ss-pika.woff') format('woff'), url('../fonts/ss-pika.ttf') format('truetype'); @@ -187,7 +169,7 @@ } body { background-color: #ededed; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; } .wf-loading h1, .wf-loading h2, @@ -221,7 +203,7 @@ select, textarea, .pure-g [class*="pure-u"] { /* Set your content font stack here: */ - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; } html h1, button h1, @@ -267,7 +249,7 @@ input code, select code, textarea code, .pure-g [class*="pure-u"] code { - font-family: "fira-mono", courier, monospace; + font-family: "Source Code Pro", courier, monospace; } html .icon, button .icon, @@ -316,7 +298,7 @@ body { margin: 0; } code { - font-family: "fira-mono", courier, monospace; + font-family: "Source Code Pro", courier, monospace; } .page { /* baseline grid */ @@ -358,11 +340,6 @@ h5 strong, h6 strong { color: #ff4300; } -h1 { - font: normal 2em/3rem; - margin: 1rem 0; - line-height: 2rem; -} h2 { font: normal 1.75em/2rem; margin: .7rem 0; @@ -397,6 +374,14 @@ section.main { margin: 0 auto !important; } } +h1 { + font: normal 2em/3rem; + margin: 1rem 0; + line-height: 2rem; +} +h1.front_door { + padding-bottom: 1rem; +} h1 .back { display: inline-block; position: relative; @@ -434,6 +419,9 @@ h1 .back:hover { width: 5rem; } } +.mac-tooltip { + line-height: 1rem; +} /* .pure-button { @@ -596,7 +584,7 @@ nav ul li { height: 1.5rem; line-height: 1.5rem; font-size: 1rem; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; height: 2.5rem; color: #ededed; } @@ -636,7 +624,7 @@ nav .zetta-logo { .install input { width: 100%; font-size: 1.2rem; - font-family: "fira-mono", courier, monospace; + font-family: "Source Code Pro", courier, monospace; border: none; background-color: transparent; } @@ -656,7 +644,7 @@ nav .zetta-logo { overflow: hidden; } #cta p { - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; font-size: .8em; height: 2rem; margin: 1rem 0 0 0; @@ -892,7 +880,10 @@ header nav, } } .page_content a { - color: #b27b31; + color: #e29636; +} +.page_content a:hover { + color: #faa438; } .page_content header { margin-top: 2.5rem; @@ -900,6 +891,7 @@ header nav, padding: 0 0 1rem 0; padding-left: 1rem; padding-right: 1rem; + transition: box-shadow 0.2s ease; box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.13), 0px 0px 2px rgba(0, 0, 0, 0.13); } .page_content header h1 { @@ -920,6 +912,9 @@ header nav, margin: 0 auto !important; } } +.page_content header:hover { + box-shadow: 0px 5px 8px rgba(0, 0, 0, 0.1), 0px 0px 5px rgba(0, 0, 0, 0.1); +} #wampum { background-color: #fff; border-bottom: #59595b; @@ -974,20 +969,20 @@ footer a { line-height: 1rem; margin: 0; padding: 2rem 0 1rem 0; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif !important; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif !important; } .device-meta h2 span { - font-weight: 100; + font-weight: 200; } .device-group h2 { font-size: 1rem; line-height: 1rem; margin: 0; padding: 2rem 0 1rem 0; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif !important; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif !important; } .device-group h2 span { - font-weight: 100; + font-weight: 200; } .device-group .device_count { font-size: .8rem; @@ -1005,7 +1000,7 @@ footer a { } } .device-group h2 .active_query { - font-family: "fira-mono", courier, monospace; + font-family: "Source Code Pro", courier, monospace; background-color: white; padding: .25rem .5rem; margin-left: .5rem; @@ -1127,7 +1122,7 @@ h1 .back:hover { .devices .row .name, .devices .row .value { padding: 1rem 0; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; @@ -1150,13 +1145,23 @@ h1 .back:hover { } .devices .row.properties { border-top: none; + border-bottom: 1px solid transparent; + color: rgba(0, 0, 0, 0.4); } .devices .row.properties .name, -.devices .row.properties .value { +.devices .row.properties .val { font-size: .8rem; - color: rgba(0, 0, 0, 0.5); padding: .25rem 0; } +.devices .row.properties .val input { + padding: 0; + margin: 0; + border: none; + color: inherit; +} +.devices .row.properties:hover { + color: rgba(0, 0, 0, 0.6); +} @media screen and (min-width: 48.1em) { .devices .row .spacer { display: none; @@ -1250,7 +1255,7 @@ h1 .back:hover { } } input { - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; padding: .4rem; } input[type="color"] { @@ -1287,13 +1292,16 @@ select { .pure-button { border-radius: 0 !important; padding: .3rem .5rem; - box-shadow: 0px 0.1rem 0 #59595b; - color: #59595b; + border-bottom: 2px solid rgba(0, 0, 0, 0.2); + color: rgba(0, 0, 0, 0.7); margin: 0 .5rem 0 0; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; + transition: all .2s ease; + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.14), 0px 0px 1px rgba(0, 0, 0, 0.14); } -.pure-button:hover { - color: #000; +.pure-button:hover:not([disabled]) { + background-color: #faa438; + box-shadow: 0px 5px 8px rgba(0, 0, 0, 0.1), 0px 0px 5px rgba(0, 0, 0, 0.1); } .device-meta { width: 100%; @@ -1319,11 +1327,11 @@ select { line-height: 1rem; margin: 0; padding: 2rem 0 1rem 0; - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif !important; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif !important; text-transform: uppercase; } .device-meta h2.name span { - font-weight: 100; + font-weight: 200; } .device-meta .content { background-color: #fff; @@ -1413,10 +1421,13 @@ select { padding-top: .75rem; } button.icon { - color: #faa438; + color: #e29636; border: none; background-color: transparent; } +button.icon:hover { + color: #faa438; +} button.icon:disabled { color: #ededed; } @@ -1432,7 +1443,7 @@ button.icon:disabled:hover { padding-top: .5rem; } .query .query_set { - border-top: 1px solid #ededed; + border-top: 1px solid rgba(0, 0, 0, 0.2); padding: 1rem 0; } .query .query_set.ng-enter { @@ -1449,7 +1460,7 @@ button.icon:disabled:hover { margin-left: 1rem; } .query .search_icon { - background-image: linear-gradient(90deg, #ededed 2px, transparent 2px); + border-left: 1px solid rgba(0, 0, 0, 0.2); } .query .input { padding: 0rem 0 .5rem 0; @@ -1457,14 +1468,16 @@ button.icon:disabled:hover { .query .search_icon, .query .input, .query .dropdown { - border-top: 2px solid #ededed; - border-bottom: 2px solid #ededed; + border-top: 1px solid rgba(0, 0, 0, 0.2); + border-bottom: 1px solid rgba(0, 0, 0, 0.2); height: 2.5rem; - box-shadow: 0 .1rem 0 #59595b; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } +.query .dropdown { + border-right: 1px solid rgba(0, 0, 0, 0.2); +} .query .input { overflow: hidden; } @@ -1473,12 +1486,6 @@ button.icon:disabled:hover { border: none; box-shadow: none; } -.query .submit { - background-image: linear-gradient(#ededed 2px, transparent 2px), linear-gradient(to top, #59595b 2px, #ededed 2px, #ededed 4px, transparent 4px); - height: 42px; - background-size: 20px 100%; - background-repeat: no-repeat; -} .query .clear { padding: .5rem; } @@ -1517,9 +1524,12 @@ button.icon:disabled:hover { } .server_endpoint input { font-size: .8rem; - font-family: "fira-mono", courier, monospace; + font-family: "Source Code Pro", courier, monospace; padding: .25rem; } +.server_endpoint:hover input { + background-color: #fff; +} /* Device Show */ .focus { background-color: #fff; @@ -1624,7 +1634,7 @@ button.icon:disabled:hover { color: rgba(0, 0, 0, 0.4); } .state_log ul li strong { - font-family: "fira-mono", courier, monospace !important; + font-family: "Source Code Pro", courier, monospace !important; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; diff --git a/src/styles/styles.less b/src/styles/styles.less index 0f8f14d..2f93212 100644 --- a/src/styles/styles.less +++ b/src/styles/styles.less @@ -5,7 +5,7 @@ ***/ @import 'fira.less'; -@import 'facit.less'; +//@import 'facit.less'; @import 'ss-pika.less'; @import 'apigee-colors.less'; @import 'breakpoints.less'; @@ -33,7 +33,7 @@ body { html, button, input, select, textarea, .pure-g [class *= "pure-u"] { /* Set your content font stack here: */ - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; h1, h2, h3, h4, h5, h6 { .heading-fonts(); } @@ -93,10 +93,7 @@ h1, h2, h3, h4, h5, h6 { } } -h1 { - font: normal 2em/3rem; margin: 1rem 0; - line-height: 2rem; -} + h2 { font: normal 1.75em/2rem; margin: .7rem 0; } h3 { font: normal 1.4em/2rem; margin: .4rem 0; } h4 { font: normal 1.2em/2rem; margin: .5rem 0; } @@ -108,6 +105,13 @@ section.main{ } h1 { + font: normal 2em/3rem; margin: 1rem 0; + line-height: 2rem; + + &.front_door { + padding-bottom: 1rem; + } + .back { display : inline-block; position: relative; @@ -146,6 +150,9 @@ h1 { } } + +.mac-tooltip {line-height: 1rem;} + /* .pure-button { @@ -556,7 +563,10 @@ header nav, #wampum { .page_content { - a {color: mix(@yellow, @dark, 70%);} + a { + color: mix(@yellow, @dark, 90%); + &:hover {color: @yellow;} + } header { margin-top: 2.5rem; @@ -569,7 +579,9 @@ header nav, #wampum { .centered(); } + transition: box-shadow .2s ease; .shadow(2); + &:hover {.shadow(4);} } } @@ -779,10 +791,10 @@ table.number_control { } .mono(){ - font-family: "fira-mono",courier, monospace; + font-family: "Source Code Pro",courier, monospace; } .body-font(){ - font-family: "jaf-facitweb", Helvetica, Arial, sans-serif; + font-family: "Source Sans Pro", Helvetica, Arial, sans-serif; } .menu() { margin: 0; padding: 0; @@ -819,7 +831,7 @@ table.number_control { .serverHeading(){ font-size: 1rem; line-height: 1rem; margin: 0; padding: 2rem 0 1rem 0; .body-font() !important; - span {font-weight: 100;} + span {font-weight: 200;} } .border-top(@color, @width: 2px){ diff --git a/src/styles/test.css b/src/styles/test.css index 4ce78e7..9b6b7ac 100644 --- a/src/styles/test.css +++ b/src/styles/test.css @@ -38,16 +38,44 @@ body { .unit { padding: 1rem; margin: 1rem; - width: 3rem; - height: 3rem; + width: 2rem; + height: 5rem; display: inline-block; background-color: white; + text-align: center; border-top: 1px solid rgba(0, 0, 0, 0.1); border-bottom: 1px solid rgba(0, 0, 0, 0.4); border-radius: 3px; box-shadow: none; transition: box-shadow 0.2s ease; } +.unit:nth-child(1) { + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.24), 0px 0px 1px rgba(0, 0, 0, 0.23); +} +.unit:nth-child(2) { + box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.23), 0px 0px 2px rgba(0, 0, 0, 0.21); +} +.unit:nth-child(3) { + box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.22), 0px 0px 3px rgba(0, 0, 0, 0.19); +} +.unit:nth-child(4) { + box-shadow: 0px 5px 8px rgba(0, 0, 0, 0.2), 0px 0px 5px rgba(0, 0, 0, 0.15); +} +.unit:nth-child(5) { + box-shadow: 0px 6px 10px rgba(0, 0, 0, 0.19), 0px 0px 6px rgba(0, 0, 0, 0.13); +} +.unit:nth-child(6) { + box-shadow: 0px 7px 12px rgba(0, 0, 0, 0.18), 0px 0px 7px rgba(0, 0, 0, 0.11); +} +.unit:nth-child(7) { + box-shadow: 0px 11px 18px rgba(0, 0, 0, 0.14), 0px 0px 11px rgba(0, 0, 0, 0.05); +} +.unit:nth-child(8) { + box-shadow: 0px 10px 16px rgba(0, 0, 0, 0.15), 0px 0px 10px rgba(0, 0, 0, 0.05); +} +.unit:nth-child(9) { + box-shadow: 0px 11px 18px rgba(0, 0, 0, 0.14), 0px 0px 11px rgba(0, 0, 0, 0.05); +} .unit:hover { - box-shadow: 0px 13px 20px rgba(0, 0, 0, 0.12), 0px 0px 13px rgba(0, 0, 0, 0.12); + box-shadow: 0px 13px 20px rgba(0, 0, 0, 0.12), 0px 0px 13px rgba(0, 0, 0, 0.05); } diff --git a/src/styles/test.less b/src/styles/test.less index d71b8b2..3241d98 100644 --- a/src/styles/test.less +++ b/src/styles/test.less @@ -12,26 +12,21 @@ body { @h1: unit(@height, px); @h: round(pow(@h1,1.1)); box-shadow: 0px @h @h1 * 2 fade(black, max(unit(25 - unit(@h), %), 5%)), - 0px 0px @h fade(black, max(unit(25 - unit(@h), %), 5%)); + 0px 0px @h fade(black, max(unit(25 - unit(@h*2), %), 5%)); } /* Create a Parametric mixin and add a guard operation */ -.loop(@index) when(@index > 0) { - .shadow_@{index} { - .shadow(@index); - } - .loop(@index - 1); -} .unit { padding: 1rem; margin: 1rem; - width: 3rem; - height: 3rem; + width: 2rem; + height: 5rem; display: inline-block; background-color: white; + text-align: center; border-top: 1px solid @gray_10; border-bottom: 1px solid @gray_40; @@ -39,6 +34,17 @@ body { box-shadow: none; transition: box-shadow .2s ease; + + &:nth-child(1) { .shadow(1); } + &:nth-child(2) { .shadow(2); } + &:nth-child(3) { .shadow(3); } + &:nth-child(4) { .shadow(4); } + &:nth-child(5) { .shadow(5); } + &:nth-child(6) { .shadow(6); } + &:nth-child(7) { .shadow(9); } + &:nth-child(8) { .shadow(8); } + &:nth-child(9) { .shadow(9); } + &:hover {.shadow(10);} } diff --git a/src/test.html b/src/test.html index c214875..af79549 100644 --- a/src/test.html +++ b/src/test.html @@ -9,41 +9,15 @@ -
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
-
Content
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+ \ No newline at end of file