From cd8ecb97ed6804894bfcb4a1eed58ff9b92e8d1b Mon Sep 17 00:00:00 2001 From: Dan Hromada Date: Wed, 7 May 2014 13:56:35 +0200 Subject: [PATCH] First version --- css/pure/0.4.2/base-min.css | 11 ++++ css/pure/0.4.2/buttons-min.css | 7 +++ css/pure/0.4.2/forms-nr-min.css | 7 +++ css/pure/0.4.2/grids-nr-min.css | 7 +++ css/style.css | 32 +++++++++++ img/icon.png | Bin 0 -> 1122 bytes img/icon_128.png | Bin 0 -> 1709 bytes lib/behave.js | 1 + lib/popup.js | 96 ++++++++++++++++++++++++++++++++ lib/script.js | 54 ++++++++++++++++++ manifest.json | 27 +++++++++ popup.html | 48 ++++++++++++++++ 12 files changed, 290 insertions(+) create mode 100644 css/pure/0.4.2/base-min.css create mode 100644 css/pure/0.4.2/buttons-min.css create mode 100644 css/pure/0.4.2/forms-nr-min.css create mode 100644 css/pure/0.4.2/grids-nr-min.css create mode 100644 css/style.css create mode 100644 img/icon.png create mode 100644 img/icon_128.png create mode 100644 lib/behave.js create mode 100644 lib/popup.js create mode 100644 lib/script.js create mode 100644 manifest.json create mode 100644 popup.html diff --git a/css/pure/0.4.2/base-min.css b/css/pure/0.4.2/base-min.css new file mode 100644 index 0000000..f2c4f6b --- /dev/null +++ b/css/pure/0.4.2/base-min.css @@ -0,0 +1,11 @@ +/*! +Pure v0.4.2 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yui/pure/blob/master/LICENSE.md +*/ +/*! +normalize.css v1.1.3 | MIT License | git.io/normalize +Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.css v1.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:1em 40px}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}[hidden]{display:none!important} \ No newline at end of file diff --git a/css/pure/0.4.2/buttons-min.css b/css/pure/0.4.2/buttons-min.css new file mode 100644 index 0000000..a472fab --- /dev/null +++ b/css/pure/0.4.2/buttons-min.css @@ -0,0 +1,7 @@ +/*! +Pure v0.4.2 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yui/pure/blob/master/LICENSE.md +*/ +.pure-button{display:inline-block;*display:inline;zoom:1;line-height:normal;white-space:nowrap;vertical-align:baseline;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button{font-family:inherit;font-size:100%;*font-size:90%;*overflow:visible;padding:.5em 1em;color:#444;color:rgba(0,0,0,.8);*color:#444;border:1px solid #999;border:0 rgba(0,0,0,0);background-color:#E6E6E6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:hover,.pure-button:focus{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000', GradientType=0);background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:-webkit-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:-moz-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1));background-image:-o-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset}.pure-button[disabled],.pure-button-disabled,.pure-button-disabled:hover,.pure-button-disabled:focus,.pure-button-disabled:active{border:0;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:alpha(opacity=40);-khtml-opacity:.4;-moz-opacity:.4;opacity:.4;cursor:not-allowed;box-shadow:none}.pure-button-hidden{display:none}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff} \ No newline at end of file diff --git a/css/pure/0.4.2/forms-nr-min.css b/css/pure/0.4.2/forms-nr-min.css new file mode 100644 index 0000000..0228793 --- /dev/null +++ b/css/pure/0.4.2/forms-nr-min.css @@ -0,0 +1,7 @@ +/*! +Pure v0.4.2 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yui/pure/blob/master/LICENSE.md +*/ +.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=text]:focus,.pure-form input[type=password]:focus,.pure-form input[type=email]:focus,.pure-form input[type=url]:focus,.pure-form input[type=date]:focus,.pure-form input[type=month]:focus,.pure-form input[type=time]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=week]:focus,.pure-form input[type=number]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=color]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;outline:thin dotted \9;border-color:#129FEA}.pure-form input:not([type]):focus{outline:0;outline:thin dotted \9;border-color:#129FEA}.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus,.pure-form input[type=checkbox]:focus{outline:thin dotted #333;outline:1px auto #129FEA}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=text][disabled],.pure-form input[type=password][disabled],.pure-form input[type=email][disabled],.pure-form input[type=url][disabled],.pure-form input[type=date][disabled],.pure-form input[type=month][disabled],.pure-form input[type=time][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=week][disabled],.pure-form input[type=number][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=color][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form textarea:focus:invalid,.pure-form select:focus:invalid{color:#b94a48;border-color:#ee5f5b}.pure-form input:focus:invalid:focus,.pure-form textarea:focus:invalid:focus,.pure-form select:focus:invalid:focus{border-color:#e9322d}.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus,.pure-form input[type=checkbox]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=text],.pure-form-stacked input[type=password],.pure-form-stacked input[type=email],.pure-form-stacked input[type=url],.pure-form-stacked input[type=date],.pure-form-stacked input[type=month],.pure-form-stacked input[type=time],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=week],.pure-form-stacked input[type=number],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=color],.pure-form-stacked select,.pure-form-stacked label,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned textarea,.pure-form-aligned select,.pure-form-aligned .pure-help-inline,.pure-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 10em}.pure-form input.pure-input-rounded,.pure-form .pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input{display:block;padding:10px;margin:0;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus{z-index:2}.pure-form .pure-group input:first-child{top:1px;border-radius:4px 4px 0 0}.pure-form .pure-group input:last-child{top:-2px;border-radius:0 0 4px 4px}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form .pure-help-inline,.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em} \ No newline at end of file diff --git a/css/pure/0.4.2/grids-nr-min.css b/css/pure/0.4.2/grids-nr-min.css new file mode 100644 index 0000000..948d03e --- /dev/null +++ b/css/pure/0.4.2/grids-nr-min.css @@ -0,0 +1,7 @@ +/*! +Pure v0.4.2 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yui/pure/blob/master/LICENSE.md +*/ +.pure-g{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-flex;-webkit-flex-flow:row wrap;display:-ms-flexbox;-ms-flex-flow:row wrap}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class *="pure-u"]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-2,.pure-u-1-3,.pure-u-2-3,.pure-u-1-4,.pure-u-3-4,.pure-u-1-5,.pure-u-2-5,.pure-u-3-5,.pure-u-4-5,.pure-u-5-5,.pure-u-1-6,.pure-u-5-6,.pure-u-1-8,.pure-u-3-8,.pure-u-5-8,.pure-u-7-8,.pure-u-1-12,.pure-u-5-12,.pure-u-7-12,.pure-u-11-12,.pure-u-1-24,.pure-u-2-24,.pure-u-3-24,.pure-u-4-24,.pure-u-5-24,.pure-u-6-24,.pure-u-7-24,.pure-u-8-24,.pure-u-9-24,.pure-u-10-24,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%;*width:4.1357%}.pure-u-1-12,.pure-u-2-24{width:8.3333%;*width:8.3023%}.pure-u-1-8,.pure-u-3-24{width:12.5%;*width:12.469%}.pure-u-1-6,.pure-u-4-24{width:16.6667%;*width:16.6357%}.pure-u-1-5{width:20%;*width:19.969%}.pure-u-5-24{width:20.8333%;*width:20.8023%}.pure-u-1-4,.pure-u-6-24{width:25%;*width:24.969%}.pure-u-7-24{width:29.1667%;*width:29.1357%}.pure-u-1-3,.pure-u-8-24{width:33.3333%;*width:33.3023%}.pure-u-3-8,.pure-u-9-24{width:37.5%;*width:37.469%}.pure-u-2-5{width:40%;*width:39.969%}.pure-u-5-12,.pure-u-10-24{width:41.6667%;*width:41.6357%}.pure-u-11-24{width:45.8333%;*width:45.8023%}.pure-u-1-2,.pure-u-12-24{width:50%;*width:49.969%}.pure-u-13-24{width:54.1667%;*width:54.1357%}.pure-u-7-12,.pure-u-14-24{width:58.3333%;*width:58.3023%}.pure-u-3-5{width:60%;*width:59.969%}.pure-u-5-8,.pure-u-15-24{width:62.5%;*width:62.469%}.pure-u-2-3,.pure-u-16-24{width:66.6667%;*width:66.6357%}.pure-u-17-24{width:70.8333%;*width:70.8023%}.pure-u-3-4,.pure-u-18-24{width:75%;*width:74.969%}.pure-u-19-24{width:79.1667%;*width:79.1357%}.pure-u-4-5{width:80%;*width:79.969%}.pure-u-5-6,.pure-u-20-24{width:83.3333%;*width:83.3023%}.pure-u-7-8,.pure-u-21-24{width:87.5%;*width:87.469%}.pure-u-11-12,.pure-u-22-24{width:91.6667%;*width:91.6357%}.pure-u-23-24{width:95.8333%;*width:95.8023%}.pure-u-1,.pure-u-1-1,.pure-u-5-5,.pure-u-24-24{width:100%} \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..518b620 --- /dev/null +++ b/css/style.css @@ -0,0 +1,32 @@ + +.cutomjs { + min-width: 500px; + min-height: 500px; + padding: 25px; +} + +textarea { + width: 100%; + height: 400px; + font-size: 12px; + color: #454545; +} + +label { + line-height: 37px; + font-size: 80%; +} + +input[type="checkbox"] { + position: relative; + top: 2px; +} + +em { + font-style: italic; + color: #0f14f3; +} + +.text-right { + text-align: right; +} \ No newline at end of file diff --git a/img/icon.png b/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..14d66eb2d5a5abc2bbcd2d0651175d15f9ba2956 GIT binary patch literal 1122 zcmaJ=Pe>F|9G=z=B56fl%!9+2P|)t|?4MBwSJ9c(78{k_h4xV7IP-KToq6NTvt5lc zq(f3vLIwp95(QlplOm`v$jS~;P;^K{Z{6}xT4ri*ba(a8_L!OX@B6;r_ulU}gDp)B z`FZ>E2!hBD9TCE~-)FzMIrtmA@_G$-MJO0U5!j9rk_m`f1-1b)q)8nh3?!wu`z@#< zh#X3d#!yT=%E?f3NjAon)C|lfh^m^TA<3Npk!_$u)dSSR(@Ba{l>l|jFS2Wh2+KnI9$@n-w%X!MlRHJY-Q)%bILVYS0o&~5lLIy|E ziA2Jc@VcPcK{J(=m9~b*C~;#w1NOE*;EarLY=e~r8d}u0u*+-c?8YK z$m&+=n(&3uNy(rYm)ky48YqhYhiX~|ZJ{vO^7~I=E81%SIt(n>W6C&j?WJ}ogX2vg zA!tS+>`LEaOB^C-#i2p+5tcl7Ow|>bunukDMUe~X7Ls%sgoFTv6H*-EuS< z++Fzn>d^As{3`8Ttl<|YU;KIhVfAF&&*sQd$$=jW3v2xY%VXm!(EN30eyy=!irmHDzR=%zc75hb69d6L&EukD zt)y$>^20G_e#Nx=p<{OH_#;&OB+kUATg6k*|8lXqM4P-Z*fX3HDL6QN>D}Ye$mf&y zFTN=Y6%XGnn=Dnnj#S^+`Kh}h*RixR@#;)L$1T{NJ2yAiaDE5zZE&w+Xy%z8J0U{B KCSkO$b>J^Gu7qm< literal 0 HcmV?d00001 diff --git a/img/icon_128.png b/img/icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..dd94d6fb2190524c81012fe4703968a4cdda0620 GIT binary patch literal 1709 zcmaJ=c~BE)98D0Fq9{kL1+lXxRHQ<(Nk||o0YVZaLMU=b5Ly$G1tKIHlMMtqj)1^O zJ<*P>I)rG2T1P=!5Cl<1QA7~r5`hi_I${y3IDr}vOg9MFKT3CY_dDjj_dCA#<%flC zwXt@x#^G=_{2*>PHfEYXt0mZfe4t--lf-5WNh?=kY#h$VPpcG5l3^5xhZAKA7U6ZxEdn5uvIx<1 z0Vq&%;3Qd4h6;|z2#u6vBuki5f}bzoqlGX5IgE+{tvp4chO{igtS*Gj&D&%GFbhGG zS%eQs2?b#Q2T{QQoka7HfD{VAV2~)DbOwXs4p2b~l?-Ap!-L`p(HRic3z&NdSTvP1 z0Se~^&c(u3EJ6~BDj_mCEiH|dMk67rL^6fRWSTXoR1XZ{p-xwzVy%ZlO`KQY!fJ_1 zrbK0k0x&Cz;}H$YB4C+*C_%1VkX5MX+JrTXtQ9NC6cT7IX&xvL{6ADKUqGwTaQI`s z|0%4FOjp9>a9E9KR1)mq5{TwdN{FL^#VDeRM39vEE`}u`D56e6lmI7!0c?tvDWpi6 z+HDpu5I}r|8Wk%fFrUjJU-aS zWb?uP>!9biF!z|J3%11;3&w{PnA=sDt?OOx0N9lP!$Kl?CX;FPr-nD3vYJ-gMXGZwG0XnNGYDW}PFc$cH`(wdAs(JO*x7}^ys(iYMZWe?6V{H$KvA9Cx19u9A#CR z&UiezD!{+#ioPLOY7y0H|H8k)v1c--xuUwpawz1@X5&O5%?4`LOu5zzh z2ETMl%q-rHw=O%RKD(-AlydM!ZZA=Cz%s13z(2vOvSTEaPGsK?Za9vQsn|B zPE4HhTT-$y#4fn0%tl|BeZk&=ania)rw5}R#{MbXt?690t^!DQxsnVz>>ij=)OR*d zKfmh9;2CBDtGbQvoP6Bke%8OHDe1w>jcxMWgJ%qfD{ZHC5IgvTsje4}uQpW(^AduE z-{W53loEP;tWAvg_3v?8xEI;@ftXE3s104=qthJm9D-VEH6kxJ`!3P&)3I_%ztFcN z)g|?O{xZ$k)axZyR(WHq+KR97RW^544sVF++L7-Z@X{8&$gU&DjS$ufPq*hb+}+SN zU{}D+%l2ZN-+S8I(SK+7&<|&~P7l-8C^|IjX zmYx@rgl=cw=E@pW+9B#ZTB{xWT6c7GXTWEAuEBc4}Hh1N1tZ-8(YV|tizRh;)V!SQ*a+|mG1_CL9qss{i7 literal 0 HcmV?d00001 diff --git a/lib/behave.js b/lib/behave.js new file mode 100644 index 0000000..91060e1 --- /dev/null +++ b/lib/behave.js @@ -0,0 +1 @@ +(function(e){"use strict";var t=t||function(){var e={};return{add:function(t,n){if(typeof t=="object"){var r;for(r=0;r>>0;if(typeof e!="function"){throw new TypeError}var r=[],i=arguments[1];for(var s=0;s-1){t=n=f}else{t=-a.moveStart("character",-f);t+=i.slice(0,t).split(s).length-1;if(a.compareEndPoints("EndToEnd",l)>-1){n=f}else{n=-a.moveEnd("character",-f);n+=i.slice(0,n).split(s).length-1}}}}return t==n?false:{start:t,end:n}}},editor:{getLines:function(e){return e.split("\n").length},get:function(){return r.textarea.value.replace(/\r/g,"")},set:function(e){r.textarea.value=e}},fenceRange:function(){if(typeof r.fence=="string"){var e=u.editor.get(),t=u.cursor.get(),n=0,i=e.indexOf(r.fence),s=0;while(i>=0){s++;if(tt&&s%2===0){return true}return false}else{return true}},isEven:function(e,t){return t%2},levelsDeep:function(){var e=u.cursor.get(),t=u.editor.get();var n=t.substring(0,e),r=0,i,s;for(i=0;i=0?l:0},deepExtend:function(e,t){for(var n in t){if(t[n]&&t[n].constructor&&t[n].constructor===Object){e[n]=e[n]||{};u.deepExtend(e[n],t[n])}else{e[n]=t[n]}}return e},addEvent:function(t,n,r){if(t.addEventListener){t.addEventListener(n,r,false)}else if(t.attachEvent){t.attachEvent("on"+n,r)}},removeEvent:function(t,n,r){if(t.addEventListener){t.removeEventListener(n,r,false)}else if(t.attachEvent){t.detachEvent("on"+n,r)}},preventDefaultEvent:function(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}}},a={tabKey:function(e){if(!u.fenceRange()){return}if(e.keyCode==9){u.preventDefaultEvent(e);var t=true;u._callHook("tab:before");var n=u.cursor.selection(),r=u.cursor.get(),s=u.editor.get();if(n){var o=n.start;while(o--){if(s.charAt(o)=="\n"){n.start=o+1;break}}var a=s.substring(n.start,n.end),f=a.split("\n"),l;if(e.shiftKey){for(l=0;lIt seems that this page cannot be modified with custom js...

TIP: Try refresh page'); + }; + + var getConfig = function() { + return { + enable: $('input[name="enable"]').is(':checked'), + include: $('select[name="include"]').val() + }; + }; + + var defaultContent = "/**\r\n Type Your custom JS code ... \r\n tip: you can include and use jQuery \r\n note: do not use // for comments \r\n**/\r\n\r\n"; + + /** + * Show current domain + */ + chrome.tabs.sendRequest(tab.id, {method: "getHost", reload: false}, function(response) { + console.log(response); + try { + $('input[name="domain"]', cjs).val(response.host); + } + catch(e) { + errorHandler(); + } + }); + + /** + * Fill by local script + */ + chrome.tabs.sendRequest(tab.id, {method: "getCustomJS", reload: false}, function(response) { + var src; + if( response.customjs ) { + src = response.customjs.src ? decodeURI(response.customjs.src) : defaultContent; + + if( response.customjs.config ) { + var config = response.customjs.config; + if( config.enable ) { + $('input[name="enable"]').attr('checked', 'checked'); + } + if( config.include ) { + $('select[name="include"]', cjs).val(response.customjs.config.include); + } + } + } + + tsc.val(src || defaultContent); + }); + + /** + * Enable on textarea change + */ + tsc.on('change keyup paste', function() { + $('input[name="enable"]', cjs).attr('checked', 'checked'); + }) + + /** + * Save local script + */ + $('input[name="save"]', cjs).on('click', function() { + var src = encodeURI(tsc.val()), + customjs = { + src: src, + config: getConfig() + }; + chrome.tabs.sendRequest(tab.id, {method: "setCustomJS", customjs: customjs, reload: true}); + window.close(); + }) + + /** + * Remove local script + */ + $('input[name="reset"]', cjs).on('click', function() { + tsc.val(decodeURI(defaultContent)); + chrome.tabs.sendRequest(tab.id, {method: "removeCustomJS", reload: true}); + window.close(); + }) + + /** + * Set textarea as behave + */ + var editor = new Behave({ + textarea: tsc[0], + tabSize: 3 + }); +}); diff --git a/lib/script.js b/lib/script.js new file mode 100644 index 0000000..0feea57 --- /dev/null +++ b/lib/script.js @@ -0,0 +1,54 @@ +var customjs = localStorage['customjs']; +if( customjs ) { + try { + customjs = JSON.parse(customjs); + } + catch(e) { // Old version + customjs = { + src: customjs, + config: { + enable: true, + include: '' + } + }; + localStorage['customjs'] = JSON.stringify(customjs); + } + + if( customjs.config.enable ) { + if( customjs.config.include ) { + var jquery = document.createElement('script'); + jquery.src = 'https://ajax.googleapis.com/ajax/libs' + customjs.config.include; + document.head.appendChild(jquery); + } + if( customjs.src ) { + var cusomscript = document.createElement('script'); + cusomscript.src = 'data:text/javascript,' + decodeURI(customjs.src); + setTimeout(function() { + document.body.appendChild(cusomscript); + }, 250); + } + } +} + + +chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { + switch(request.method) { + case 'getHost': + sendResponse({host: location.host}); + break; + case 'setCustomJS': + localStorage['customjs'] = JSON.stringify(request.customjs); + case 'getCustomJS': + var customjs = JSON.parse(localStorage['customjs'] || '{}'); + sendResponse({customjs: customjs}); + break; + case 'removeCustomJS': + delete localStorage['customjs']; + break; + default: + sendResponse({src: '', config: {}}); + } + if( request.reload ) { + window.location.reload(); + } +}); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..126e93f --- /dev/null +++ b/manifest.json @@ -0,0 +1,27 @@ +{ + "manifest_version": 2, + + "name": "Custom JavaScript for websites ", + "description": "Run custom JavaScript on any website.", + "version": "1.1.3", + + "permissions": [ + "http://*/", + "https://*/", + "tabs" + ], + + "icons": { "128": "img/icon_128.png" }, + + "content_security_policy": "script-src 'self' https://*.googleapis.com; object-src 'self'", + + "content_scripts": [{ + "matches": [""], + "js": ["lib/script.js"] + }], + + "browser_action": { + "default_icon": "img/icon.png", + "default_popup": "popup.html" + } +} \ No newline at end of file diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..2412f7f --- /dev/null +++ b/popup.html @@ -0,0 +1,48 @@ + + + + + Custom JavaScript + + + + + + + + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ + +
+
+ +
+
+
+ + + + +